ERC-20 토큰 표준이 있기 전에는 공통된 인터페이스가 없기때문에 서로 다른 어플리케이션간 토큰 전송이 불가능했습니다. ERC-20 표준이 생기고 나서야 상호간 전송이 가능해졌고 한 지갑에 토큰들을 모아서 저장할 수 있게되었습니다.
0.4.17 이하 버전의 문법을 사용함false 반환 케이스를 처리해야 한다. 호출자는 false 가 반환되지 않을거라 생각하면 절대 안된다!"MyToken"function name() public view returns(string)
function symbol() public view returns(string)
토큰이 사용하는 소수점 수 반환
예) 8은 토큰 양을 100000000(10 ** 8)로 나누어 사용자 표현을 얻는다는 걸 의미
Optional - 이 메소드는 사용성 증가를 위해 사용할 수 있다. 하지만 인터페이스들과 다른 컨트랙트들은 이 값이 존재한다 예상하면 안된다.
function decimals() public view returns(uint8)
function totalSupply() public view returns(uint256)
_owner 주소의 토큰 잔액 반환function balanceOf(address _owner) public view returns (uint256 balance)
_value 양만큼 _to 주소로 토큰 전송Transfer 이벤트 실행해야 함throw 함수 실행해야 함Transfer 이벤트를 실행해야 함function transfer(address _to, uint256 _value) public returns (bool success)
_from 주소에서 _to 주소로 _value 만큼의 토큰을 전송
그 다음 반드시 Transfer 이벤트 실행해야 함
transferFrom 메소드는 인출 워크플로우에 사용되며 게약이 토큰을 대신 전송할 수 있도록 함
이는 예를 들어, 당신을 대신하여 토큰을 전송하는 계약이나 서브 통화(sub-currencies)로 수수료를 지불할 수 있도록 하는 데에 사용될 수 있다.
_from 주소의 계정이 어떠한 메커니즘을 통해 의도적으로 메시지를 보낸 사람에게 권한을 부여하지 않는 한 throw 함수가 실행되어야 한다.
Note: 0 값 전송은 정상 전송으로 처리하고 Transfer 이벤트를 실행해야 함
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
_value 까지 금액을 계정에서 _spender 주소로 여러번 인출시킬 수 있음_value 로 덮어씀function approve(address _spender, uint256 _value) public returns (bool success)
_onwer 로부터 _spender 가 인출할 수 있는 금액 반환function allowance(address _owner, address _spender) public view returns (uint256 remaining)
_from 주소에서 0x0 으로 설정된 Transfer 이벤트를 trigger 해야 함event Transfer(address indexed _from, address indexed _to, uint256 _value)
approve(address _spender, uint256 _value) 가 성공적으로 호출 되었을 때 만드시 trigger 되야 함event Approval(address indexed _owner, address indexed _spender, uint256 _value)
이더리움 네트워크에는 이미 수 많은 ERC-20를 준수한 토큰이 배포되어 있음
가스 절약에서 보안 개선에 이르기까지, 서로 다른 trade-off 를 가진 다양한 구현을 다양한 팀에서 작성했음
구현 예시