728x90
NFT 스마트 컨트랙트를 만들어 판매가 시작되면, 구매자들의 이더리움이 내 스마트 컨트랙트에 저장됩니다.
이 돈은 아직 내 지갑에 들어온 돈이 아니기에, 출금 신청을 해야만 합니다.
따라서 Solidity 코드 안에 출금 기능을 넣어봅시다.
아래 코드처럼 함수를 만들어주면 됩니다.
contract MyContract is ERC721URIStorage, Ownable {
function withdraw() external payable onlyOwner() {
payable(owner()).transfer(address(this).balance);
}
}
예시에선 두 개의 클래스를 상속받고 있는데요, 이 중 필요한 클래스는 Ownable입니다.
컨트랙트 주인의 계좌에 송금하는 코드이므로 계좌 주인만 사용 가능하도록 onlyOwner()를 설정해 주었고요,
payable(owner())에서 owner()는 컨트랙트 주인 계좌 주소를 의미하고, payable()을 통해 이더리움 송금이 가능하도록 만들어줍니다.
address(this)는 스마트 컨트랙트의 주소를 의미합니다.
따라서 owner에게 이 스마트 컨트랙트의 balance를 모두 송금하라, 라는 의미의 코드가 됩니다.
728x90
'프로그래밍 > Solidity' 카테고리의 다른 글
Hardhat으로 Rinkeby 테스트넷에 스마트 컨트랙트 업로드하기 (0) | 2022.01.14 |
---|---|
Hashlips_art_engine 사용해 NFT metadata 만들기 (6) | 2022.01.05 |
Hardhat에서 컨트랙트로 이더리움 송금하기 (0) | 2021.12.23 |
Hardhat에서 테스트용 월렛 정보 받아오기 (0) | 2021.12.23 |
VSCode에서 Hardhat 사용 시 초기 세팅 (0) | 2021.11.21 |
댓글