이더 ERC20의 잔고는 전역변수
특정 ERC20의 잔고는 상태변수
payable
토큰 전송을 하려면 payable
키워드로 상태변수를 선언한다
transfer, 즉 돈을 주고 받는 기능을 사용하려면 deposit 기능은 반드시 있어야 한다. 컨트랙트에 돈이 모여야 보낼 수 있기 때문에.
function payable -> 컨트랙트가 받을 수 있다
type payable -> 변수가 받을 수 있다
컨트랙트 간 전송하기 원한다면 코드를 통해 실행해야한다.
완벽한 투명성과 무결성을 볼 수 있다.
Remix로 작성한 컨트랙트와 이더스캔에서 보여지는 정보를 통해 관찰해보자.
https://goerli.etherscan.io/verifyContract-solc
Etherscan에서 메타마스크와 연결해서 컨트랙트를 사용할 수 있다
컨트랙트 안에 있는 함수에 대한 MethodID가 존재한다.
EVM 레벨에서 생성되는 값.
Input값은 16진수로 되어 있다.
지갑-지갑 거래는
1. 이더리움은 네이티브 코인이다 /토인이다
ERC20 스마트 컨트랙트
이더리움은 스마트컨트랙트가 아니다. 자체 코인이다.
비트코인은 스마트컨트랙트가 없다. 존재하지 않는다.
코어레벨에서 한 쪽에서 다른 쪽에서 옮겨가는 방식 (UTXO)
다른 사람이 나한테 보내줄 때, 내가 풀 수 있도록 잠궈주는 것
이런 메커니즘에서는 스마트컨트랙트가 존재하지 않는다
이더리움도 자체 코인이다. 이더리움 코어 레벨에서 움직이는 것이다. UTXO 기반이 아닌 계정 기반으로. 코어가 밑에 있고, 그 위에 EVM이 있다고 보면 된다. EVM 상에서 스마트컨트랙트를 이용한 거래가 일어나고 체인에 기록된다.
EVM 상에서 일어나는 것은 상태변수, 코어단에서 존재하는 것은 전역변수.
ERC20은 모두 스마트컨트랙트다
ERC20 -> 토큰 스마트컨트랙트
이더리움과 다르게 ERC20은 모두 스마트컨트랙트
EVM 상에서 스마트컨트랙트가 실행되지만, 그 결과는 체인에 올라간다. 코어 레벨의 send/transfer 통해서 체인에 올라간다.
메인넷에서 실수로 받는 사람 없이 돈을 보낼 때 어떻게 돼?
계정 0000000000000000 으로 보내진다. 일명 '소각장'.