Solidity )remix 스마트 컨트랙트 예약 예제
2021. 7. 14. 16:32ㆍ블록체인/Solidity
Solidity 예제로 호텔 예약을 스마트 컨트랙트(예제)로 구현해보았다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.6.0;
contract HotelBook {
enum Status { Vacant,Occupied }
Status currentStatus;
address payable public owner;
//payable 키워드 계약 계정에 이더를 사용 (입금,송금,송신 등) 할 수 있게 해준다.
event Occupy(address _occupant, uint _value);
constructor() public {
owner = msg.sender; //본인 지갑
currentStatus = Status.Vacant;
}
modifier onlyWhileVacant{
require(currentStatus == Status.Vacant, "Book available");
// require함수 : 요구되는 조건이 만족되지 않을 경우 에러를 발생시켜 나머지 부분이
// 실행되지 않도록하는 게이트 조건기능
// require함수 마지막에 _; (placehoder) 꼭 입력해야함
_;
}
modifier cost(uint _amount){
require(msg.value >= _amount, "Not enough Ether");
_;
}
receive() external payable onlyWhileVacant cost(2 ether) { // 2 ether 지불
// external은 metamask 등 다른 툴과 연동해서 사용가능하게 해준다.
currentStatus = Status.Occupied;
owner.transfer(msg.value); //내 지갑의 ether를 book함수에 ether의 수량만큼 전송
emit Occupy(msg.sender, msg.value);
}
}
이제 owner로 설정된 지갑에 ether가 들어오게 된다.
owner로 지불할 account 변경해주고, value에서 ether 수량과 단위 설정 후 Transact
debug 창을 보면 바꾼 account에서 from, owner 계정이 to로 알맞게 들어온
거래내역 를 볼 수 있다.
'블록체인 > Solidity' 카테고리의 다른 글
이더리움 토큰 발행 3) 토큰 Local에서 발행하기 / metamask (0) | 2021.07.16 |
---|---|
이더리움 토큰 발행 2) local 테스트넷 배포하기 (2) | 2021.07.15 |
Solidity)remix 짝수 판별 / 반복문 (0) | 2021.07.14 |
Solidity ) mapping - 조건문 (0) | 2021.07.14 |
이더리움 토큰 발행 1) Solidity 개발 환경 (Ethereum/meta mask, truffle,ganache 설치 ) (0) | 2021.07.13 |