CoinBase
블록을 생성한 댓가로 주어지는 보상으로 가장 처음 기록되는 거래
Tx Hash
Tx Hash는 rawTransaction(트랜잭션 데이터 + 서명한 값)을 keccak256으로 감은 결과를 의미한다.
따라서 rawTransaction을 블록체인에 태우지 않아도 미리 Tx Hash를 알 수 있다.
topic, log, indexed parameter 관계
스마트 컨트랙트의 이벤트를 호출하면 topic과 함께 low-level EVM 로그를 생성한다.
예를 들어 아래와 같은 스마트 컨트랙트가 있다고 가정하자.
event PersonCreated(uint indexed age, uint height);
function foobar() {
emit PersonCreated(26, 176);
}
foobar 함수를 호출하면 PersonCreated 이벤트가 호출되면서 topic, low-level EVM 로그를 생성한다.
topics
- 0x6be15e8568869b1e100750dd5079151b32637268ec08d199b318b793181b8a7d
- PersonCreated(uint256,uint256)를 Keccak-256 hash로 감은 결과
- 0x36383cc9cfbf1dc87c78c2529ae2fcd4e3fc4e575e154b357ae3a8b2739113cf
- age 26을 Keccak-256 hash로 감은 결과
첫 번째 topic은 무조건 이벤트의 시그니처이고 두 번째부터는 indexed parameter만 해당된다.
따라서 uint height는 non-indexed parameter라 topic으로 생성되지는 않고 이벤트의 data 섹션에는 포함된다.
indexed parameter가 많으면 블록체인에 올릴 때 추가적인 공간이 필요하여 gas cost가 높아진다.
하지만 값별로 이벤트를 필터하면서 조회하려면 indexed parameter가 필요하다.
이벤트 로그를 디코딩하는 법
예시: https://etherscan.io/tx/0xeabe89fa31101320abc382d59a6bcc4022f2ead40e54d14028b496491e94b79a#eventlog
web3.eth.abi.decodeLog(abi, data, topics)
web3.eth.abi.decodeLog([{
type: 'address',
name: 'from',
indexed: true
},{
type: 'address',
name: 'to',
indexed: true
},{
type: 'uint256',
name: 'value'
}],
'0000000000000000000000000000000000000000000000041b9ece2305db9c00',
['0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', '0x00000000000000000000000059a5208b32e627891c389ebafc644145224006e8', '0x0000000000000000000000004e2e464420f1392ba08282644feba1bf650e1cc6']);
위 소스코드를 실행하면 이벤트 로그에 대해 어떤 값이 전달되었고 저장되었는지 확인할 수 있다.
Function Signature
function name과 parameter를 sha-3으로 감아 만든 4byte signature이다.
Function Signature는 컨트랙트의 함수를 실행시키기 위해 사용된다.
컨트랙트의 함수를 실행시키기 위해서는 트랜잭션에 아래의 값을 넣어줘야 한다.
to: contract address
input data: function signature와 함께 parameter valuer값을 16진수로 하여 32byte길이로 입력
ABI(Application Binary Interface)
스마트 컨트랙트의 Function과 Parameter에 대한 MetaData를 정의해 컨트랙트의 객체를 만들 수 있고 컨트랙트의 함수를 호출할 수 있는 표준 방법이다.
참고
[클레이튼] smart contract 배포 과정 이해하기
개요 smart contract가 무엇인지 알아 본다. smart contract 정의 서면으로 이루어지던 계약을 code로 구현하고 특정 조건이 충족되었을 때 해당 계약이 이행되게 하는 script 입니다. 블록체인에서의 smart c
doitnow-man.tistory.com
온체인, 오프체인
온체인 데이터는 블록체인 인프라(온체인)에 저장된다.
오프체인 데이터는 전통적인 데이터베이스(오프체인)에 저장된다.