Blockchain/Solidity

<address>.balance(uint256) 사용 - 공부하는 도비

DOVISH WISDOM 2022. 12. 29. 16:07  
728x90
반응형

오늘은 특정 주소를 셋팅한 후, 그 주소의 잔고를 출력 또는 리턴 받아보겠습니다. 

 

Remix - Ethereum IDE 

Solidity 0.8.1 

 

(버전이 높을 수록 다 좋은 것은 아닙니다. 0.8.1버전은 아마 글 쓰는 시점 가장 최신버전이나 각자가 생각하는 가장 stable한 버전을 쓰시면 됩니다.)

 

<address>.balance (uint256)은 Wei 형태로 주소의 balance를 리턴합니다. 

1ether는 10^18 wei와 동일합니다. 

1. 코드에 특정 주소를 적어두고, 그 주소의 balance를 return 받기 

pragma solidity ^0.8.1;

contract test {
    address public myAddress = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
    uint256 balance = myAddress.balance;

    function getBalance() public view returns (uint256) {
        return balance;
    }
}

Deployed Contracts를 확인해보면, 코드에 적힌 주소의 잔고를 리턴 받은걸 확인할 수 있습니다. 

 

2. 주소 셋팅 후, 그 주소의 balance를 return 받기 (함수 2개)

contract test {
    address public myAddress;

    function setAddress(address _address) public {
        myAddress = _address;
    }
    
    function getBalance() public view returns (uint256) {
        return myAddress.balance; 
    }
}

setAddress를 하지 않았을 땐, 0으로 비어있는 값이 출력됩니다. 

이제 setAddress에 주소를 넣어주고, 다시 getBalance와 myAddress를 클릭해보겠습니다. 

값이 정상적으로 출력되는 걸 확인할 수 있습니다. 

 

아래는 리턴값을 변수에 담아주고, 그 값을 리턴 값으로 주는 코드입니다.  위 코드와 큰 차이는 없습니다.

contract test {
    address public myAddress;

    function setAddress(address _address) public {
        myAddress = _address;
    }
    
    function getBalance() public view returns (uint myBalance) {
        myBalance = myAddress.balance;
    }
}

 

 

 

3. 주소를 셋팅하며, 그 주소의 balance 출력 (함수 1개)

함수의 매개변수에 주소를 입력하면, 주소가 셋팅되면서 그 주소의 balance를 알 수 있는 함수입니다. 

contract test {
    address public myAddress;
    uint256 public balance;

    function setAddress_getBalance(address _address) public {
        myAddress = _address;
        balance = myAddress.balance;      
    }
}

주소를 셋팅하고, balance와 myAddress를 확인해보겠습니다.