본문 바로가기
블록체인

web3로 블럭, tx, txReceipt 가져오기

by 혀닙 2022. 7. 1.

목차

  1. 블럭 가져오기
  2. transaction 가져오기
  3. transaction receipt 가져오기

 

 

 

 


 

 

 

 

1. 블럭 가져오기

1-1. 문법(syntax)

web3.eth.getBlock(1,2,3)

 

 

 

1-2. 매개변수(parameters)

  1. String|Number|BN|BigNumber - 블록 번호 또는 블록 해시. 또는 "earliest", "latest" or "pending
  2. 불리언(선택, 디폴트는 false) - 만약 true라면, 반환된 블록의 transactions의 배열은 {}, false라면 tx 해시로 반환됨
  3. 함수(선택) -  첫번째 매개변수로 error 객체, 두번째 매개변수로 result를 반환하는 콜백함수

 

 

3. 반환(return): block 객체

 {
      difficulty: '558380',	//블록 채굴의 난이도
      extraData: '0xd983010a14846765746888676f312e31382e338664617277696e',	
      //해당 블럭에 대한 추가 정보
      gasLimit: 5928685,	//해당 블럭에 허용된 최대 가스
      gasUsed: 0,	//해당 블럭 내의 모든 거래에서 사용된 가스
      hash: '0xdc874e3a698dbaec3a47f9e18965ea9b568b826a8329323fc936a39b89c4280f',	
      //블럭의 해시
      logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
      // 블럭의 로그에 대한 bloom filter. 만약 pening 상태의 블럭이라면 null값
      miner: '0x6459c8b0A359D32F247C8C58542075EaC9846ad2',	//채굴에 대한 보상이 주어질 계정
      mixHash: '0xb683b6bd5cc5332cddb0d28548de9f5a462cd8f81030ba1ebac12f7b72f7ce4a',	
      //해당 블록의 고유 식별값(해시). 만약 블럭이 pending 상태라면 null 값
      nonce: '0x6f8dad56fcd695ce',	//POW 방식으로 생성된 해시. 만약 블럭이 pending 상태라면 null 값
      number: 238,	//블록의 번호. 만약 블럭이 pending 상태라면 null 값
      parentHash: '0xfe8fb7ad3bb83dc8eda2deb68423ade54c306f07823cefff76890e039da433a0',	
      //이전 블록의 고유 식별값(해시)
      receiptsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
      sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',	
      //블록 안에 있는 엉클 데이터의 SHA3
      size: 538, //byte로 나타낸 블럭의 크기
      stateRoot: '0x780bd21649e84bafe33815c6bb0fccadcc92ea5d69e08d97a2034519390c34ef', 
      //블럭의 최종 상태 트리의 root
      timestamp: 1656641992,	//블록이 채굴된 시간
      totalDifficulty: '126124918',	//해당 블럭까지의 체인의 난이도
      transactions: [],	//Tx 객체 또는 반환된 Tx객체에 대한 32 바이트 Tx 해시의 배열      
      transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',	
      //블럭의 Tx트리의 root      
      uncles: []	//엉클 해시의 배열
    }

 

 


 

2. Transaction 가져오기

  • 주어진 Tx 해시에 알맞는 Transaction 반환
  • 메타마스크(사용자)가 서명까지 완료해서 노드에게 보내준 데이터 형태(매개변수로 입력한 tx)
  • txpool에 있는 수준의 tx

 

 

2-1. 문법(syntax)

web.eth.getTransaction()

 

 

2-2. 매개변수(parameters)

  1. string : Transaction 해시
  2. 함수(선택) -  첫번째 매개변수로 error 객체, 두번째 매개변수로 result를 반환하는 콜백함수

 

2-3. 반환(return): transaction 객체

    tx:  {
      blockHash: '0x32ab075786131cfee8311fccd4651422af9162cd9048a580cb3a6309f32cf837',	
      //해당 transaction이 들어있었던 블록의 해시값
      blockNumber: 239,	//transaction이 들어있었던 블록의 번호
      from: '0x6459c8b0A359D32F247C8C58542075EaC9846ad2',	//발신인 계정
      gas: 21000,	//발신인에 의해 공급된 가스
      gasPrice: '1000000000',	//발신인에 의해 제공된 가스비(단위: wei)      
      hash: '0x11b3193f9e25eae51607158cd61cad0c1f04849296067c92a2eb66864a790a6c',	//transaction의 해시
      input: '0x',	//tx와 함께 보내진 data
      nonce: 0,//해당 transaction 이전에 sender에 의해 만들어진 transacion의 수
      to: '0x791e62e00E65E6B152cc83e07B06d8A99aaF7a3B',	
      //수신인 계정, 만약 contract를 생성하는 transaction이라면 null
      transactionIndex: 0,	//블록 내에서 transaction 인덱스의 좌표 번호
      value: '10000000000000000000',	//전송 금액(단위: wei)
      type: 0,
      v: '0x3c78',
      r: '0xe0956096af38fa6dcfe7cd4b1e74871fcff2f1ad4ab2457caf8d44d1e77cc3f2',
      s: '0x6cfdd8715de630172a0f055b08551370d32fd69a60bd485fa050d2d23216f4da'
    }

 

 


 

 

 

3. Transaction  receipt가져오기

  • 주어진 Tx 해시에 알맞는 Transaction 반환
  • receipt은 pending 상태의 tx에서는 확인불가능하며 null을 반환함
  • 검증이 끝난 후 실제 블록에 들어간 실제 tx라고 보면 됨

 

 

 

3-1. 문법(syntax)

web.eth.getTransactionReceipt()

 

 

3-2. 매개변수(parameters)

  1. string : Transaction 해시
  2. 함수(선택) -  첫번째 매개변수로 error 객체, 두번째 매개변수로 result를 반환하는 콜백함수

 

 

3-3. 반환(return)

    tx Receipt:  {
      blockHash: '0x32ab075786131cfee8311fccd4651422af9162cd9048a580cb3a6309f32cf837',
      blockNumber: 239,
      contractAddress: null,	//tx가 contract를 생성했다면 CA, 그렇지 않을 경우 null      
      cumulativeGasUsed: 21000,	//블럭 안에서 Tx가 실행되었을 때 사용된 가스의 총량
      effectiveGasPrice: 1000000000,
      from: '0x6459c8b0a359d32f247c8c58542075eac9846ad2',
      gasUsed: 21000, //특정한 단일 거래에 사용된 가스의 양      
      logs: [],	//해당 Tx가 생성한 log 객체의 배열      
      logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
      status: true, //tx가 성공적이었다면 true, EVM이 tx를 원복시켰다면 false
      to: '0x791e62e00e65e6b152cc83e07b06d8a99aaf7a3b',
      transactionHash: '0x11b3193f9e25eae51607158cd61cad0c1f04849296067c92a2eb66864a790a6c',
      transactionIndex: 0,
      type: '0x0'
    }

 

댓글