[블록체인] Transaction Structure

youngseo·2022년 12월 16일
0

블록체인

목록 보기
4/4

Transaction Structure

이더리움에서는 트랜잭션 구조가 총 2가지가 존재합니다.
1. 일반적으로 송금을 할 때 사용하는 트랜잭션 구조
2. 컨트랙트 간에 호출을 할 때 사용하는 메세지 구조

Transaction Structure란?

  • Tranasction은 EOA가 EOA에게 Eth를 전송하거나 EOA가 CA를 호출할 때 사용되는 구조이다. 이 데이터는 블록체인상에 기록된다.
type TxData interface {
	txType() byte
  copy() TxData

  chainID() *big.Int
  accessList() AccesList
  data() []byte
  gas() uint64 //예상치의 가스값
  gasPrice() *big.Int //1gas마다 얼마의수수료가 발생하는지(일반적 10gwei)
  gasTipCap() *big.Int 
  gasFeeCap() *big.Int
  value() *big.Int // 실제 송금하려는 양
  nonce() unit64 //송금하는 사람의 transaction은 몇번 날리고 있는지
  to() *common.Address

  rawSignatureValues() (v, r, s *big.Int)
  setSignatureValues(chainID, v, r, s *big.Int)
}
  • EOA-EOA간 거래

    Untitled

    • Block : 몇 번째 블록에 이 트랜지션이 포함되었는지에 대한 정보를 포함하고 있음체크.
    • value에 보내는 Eth양이 들어가고 Input Data에는 빈 값이 들어감.
    • Transaction Fee의 경우 gasPrice와 gasLimit을 곱한 값이다.
    • Txn Type
      • 0의 경우 기존의 EIP-1559을 적용받지 않는 타입.
      • 1의 경우 EIP-1559의 적용을 받기 때문에 gasPrice, gasTipCap, gasFeeCap이 추가적으로 제공되어야 합니다.
    • nonce 이 거래가 몇 번째의 거래인지를 알 수 있습니다.
    • position 익스플로러 사이트가 정제해보여주는 것으로 해당 블록에서 transition이 몇번째에 해당하고 있는지를 표시
    • Input Data
      • EOA-EOA 간의 거래의 경우 대체로 비어있습니다
      • 특정한 거래 정보를 사용할 수도 있습니다.
  • EOA-EOA간 거래

    Untitled

    • Block : 몇 번째 블록에 이 트랜지션이 포함되었는지에 대한 정보를 포함하고 있음체크.
    • value에 보내는 Eth양이 들어가고 Input Data에는 빈 값이 들어감.
    • Transaction Fee의 경우 gasPrice와 gasLimit을 곱한 값이다.
    • Txn Type
      • 0의 경우 기존의 EIP-1559을 적용받지 않는 타입.
      • 1의 경우 EIP-1559의 적용을 받기 때문에 gasPrice, gasTipCap, gasFeeCap이 추가적으로 제공되어야 합니다.
    • nonce 이 거래가 몇 번째의 거래인지를 알 수 있습니다.
    • position 익스플로러 사이트가 정제해보여주는 것으로 해당 블록에서 transition이 몇번째에 해당하고 있는지를 표시
    • Input Data
      • EOA-EOA 간의 거래의 경우 대체로 비어있습니다
      • 특정한 거래 정보를 사용할 수도 있습니다.
  • EOA-CA Transaction

    Untitled

    • Value에 보내는 값이 없는 경우 0이 들어가고, Data에 호출하는 함수명과 파라미터 값이 들어간다.
    • From :EOA의 주소
    • Interacted With : CA의 주소로 contract로 시작.
    • Value
      • 일반적으로 0으로 보냅니다.
      • EOA가 Contract한테 value를 보내는 것이 아니라 함수를 호출합니다
    • Txn Type : 2인 경우 EIP-1559를 포함하고 있기 때문에 gasPrice, gasTipCap, gasFeeCap이 추가적으로 제공되어야 합니다.
    • Input Data 함수명과 거기에 들어가는 파라미터를 적어줍니다.

Message 구조

  • message는 CA가 CA를 호출할 때 발생하는 네트워크 구조.
  • EVM상에서만 존재하는 가상 객체
  • 블록체인 상 기록이 남지 않음

CA-CA Transaction

  • CA-CA간의 호출 정보는 Internal Transaction이라고 부르며, 코드 상에서 Delegatecall, StaticCall, call함수를 통해 발생한다.
  • (CA-EOA ETH 전송, selfdestruct 포함)

Untitled

Receipt 구조

  • EVM에서 Transaction을 실행하고 결과값이 저장되는 곳.
  • 실제로 사용된 Gas와 컨트랙트 호출 시에 발생하는 Log등이 저장되는 구조.
  • 이 데이터는 블록체인 상 기록된다.

Meta Transaction

  • 이더리움에서 제공하는 공식적인 타입은 아님
  • 스마트 컨트랙트를 이용해 다른 사용자의 거래를 대신 수행해주는 방식
  • ERC20 토큰 전송시 사용자가 ERC20 CA 호출을 위해 지불해야 하는 ETH수수료를 대행업체가 대신 납부할 수 있다.
  • ex) Toss

EIP-2770 Code

  • smart Contract 코드 상에서 사용자의 서명 검증하는 부분.
  • Transaction서명 부분에서 진행했던 검증 방안과 동일한 방법으로 EVM상에서 진행된다.
  • 호출한 사용자의 거래가 검증이 완료되면, CA-CA거래인 call을 통해서 대행 Contract가 토큰 전송을 대신 호출하게 된다.

0개의 댓글