본문 바로가기
프로그래밍/Solidity

[Solidity] 컨트랙트에 입금된 이더리움 출금하기

by 쿼카퀀트 2022. 2. 20.
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

댓글