BlockChain

📦Ethereum Structure | 패스트캠퍼스 블록체인 강의 챌린지 4일차

Tony Min 2023. 3. 4. 23:56

Ethereum Structure

Account

이더리움에서 계정은 이더리움 블록체인에 정보와 가치를 저장하는 디지털 엔티티입니다. 계정에는 두 가지 유형이 있습니다. 외부 소유 계정(EOA)과 계약 계정(CA)입니다.

EOA

EOA는 이더리움에서 가장 일반적인 계정 유형입니다. 개인이 소유하고 개인키가 통제하는 방식으로 이더(Etherium 네트워크의 네이티브 암호화폐)를 주고받는 거래에 서명하고 스마트 계약을 실행하는 데 사용됩니다. 각 EOA에는 현재 보유하고 있는 Ether의 양을 나타내는 관련 잔액이 있습니다.

CA

CA는 이더리움 블록체인에서 스마트 계약을 실행하는 데 사용되는 특별 계정입니다. 그들은 독특한 이더리움 주소를 가지고 있으며 스마트 계약 자체의 코드에 의해 통제됩니다. CA에는 연결된 개인 키가 없으며 트랜잭션 실행을 통해서만 액세스하고 수정할 수 있습니다.

State 기반

이더리움 네트워크의 상태는 블록체인 상의 모든 계정과 스마트 계약의 현재 상태를 나타냅니다. 계정 및 스마트 계약의 가치를 수정하는 트랜잭션의 실행을 통해 상태가 업데이트됩니다. 이더리움 네트워크의 현재 상태는 상태 트리라는 데이터베이스에 저장됩니다.

Patrcia Merkle Tree

상태 트리는 Patricia Merkle Tree라는 데이터 구조를 사용하여 구현됩니다. 이 데이터 구조는 이더리움 네트워크의 상태를 효율적으로 저장하고 업데이트하는 데 사용됩니다. 패트리샤 머클 트리는 키-값 쌍을 저장하도록 최적화된 머클 트리의 한 유형으로, 각 키는 문자열이고 각 값은 계정 또는 스마트 계약의 상태입니다.

 

Block

이더리움 블록은 트랜잭션 및 기타 메타데이터 목록을 포함하는 데이터 구조입니다.

Block 구조

  • Block Number : 블록 체인의 블록 번호
  • Timestamp: 블록이 생성된 시간
  • Nonce: 유효한 블록 해시를 생성하기 위해 마이닝에 사용되는 임의의 값
  • Difficulty: 블록을 마이닝하는 것이 얼마나 어려운지 나타내는 값
  • Gas Limit: 블록에서 트랜잭션을 실행하는 데 사용할 수 있는 최대 가스 양
  • Gas Used: 블록에서 트랜잭션을 실행하는 데 사용된 총 가스 양
  • Parent Hash: 블록체인에 있는 이전 블록의 해시
  • Transactions: 블록에 포함된 트랜잭션 목록

Block Header 구조

블록 헤더는 메타데이터를 포함하는 블록의 일부이며 블록 해시를 계산하는 데 사용됩니다. 블록 헤더 구조에는 다음과 같은 구성 요소가 포함됩니다.

  • Parent Hash: 블록체인에 있는 이전 블록의 해시
  • Uncle Hash: 블록에 포함된 삼촌들의 해시
  • Coinbase: 블록을 만든 광부의 주소.
  • State Root: 블록에서 트랜잭션을 실행한 후 상태 시도의 루트 해시
  • Transaction Root: 블록에 있는 트랜잭션의 Merkle 트리 루트 해시
  • Receipts Root: 블록에 있는 트랜잭션 수신 확인의 Merkle 트리의 루트 해시
  • Difficulty: 블록을 마이닝하는 것이 얼마나 어려운지 나타내는 값
  • Gas Limit: 블록에서 트랜잭션을 실행하는 데 사용할 수 있는 최대 가스 양
  • Timestamp: 블록이 생성된 시간
  • Extra Data: 블록 헤더에 포함될 수 있는 임의의 데이터

Transaction

Transaction 구조

이더리움 트랜잭션은 한 계정에서 다른 계정으로 또는 스마트 계약으로 전송되는 메시지입니다. 트랜잭션 구조에는 다음과 같은 구성 요소가 포함됩니다.

  • Nonce: 재생 공격을 방지하는 데 사용되는 고유 번호
  • Gas Price: 전송자가 트랜잭션을 실행하는 데 사용되는 각 단위의 가스에 대해 지불할 의향이 있는 Ether의 가스 가격
  • Gas Limit: 트랜잭션을 실행하는 데 사용할 수 있는 최대 가스 양
  • To: 받는 사람 계정 또는 스마트 계약의 주소
  • Value: 트랜잭션에서 전송되는 Ether의 양
  • Data: 트랜잭션에 포함할 선택적 데이터

EOA - EOA Transaction

EOA-EOA(External Owned Account to External Owned Account to External Owned Account) 트랜잭션은 두 개의 외부 소유 계정 간의 트랜잭션입니다. 보낸 사람은 개인 키로 트랜잭션에 서명한 다음 트랜잭션의 신뢰성을 확인하는 데 사용됩니다.

EOA - CA Transaction

EOA-CA(External Owned Account to Contract Account) 트랜잭션은 외부 소유 계정과 스마트 계약 간의 트랜잭션입니다. 스마트 계약은 거래에 대응하여 코드를 실행하고, 실행 결과는 블록체인에 저장됩니다.

Transaction 서명

이더리움의 모든 거래는 거래의 진정성과 무결성을 보장하기 위해 발송인의 개인 키로 서명됩니다. 서명은 보낸 사람의 개인 키를 사용하여 생성되며 트랜잭션 데이터에 포함됩니다.

Ethereum은 secp256k1기반의 타원곡선암호(ECC)를 이용하여 서명하고 검증합니다.

  • 서명 절차
    • 서명할 데이터의 hash값 e 를 구한다.
    • n보다 작은 랜덤값 k를 생성한다.
    • k*G인 좌표 (x1,y1)를 계산한다.
    • r = x1 mod n인 서명 값 r을 계산한다.( r==0 인 경우 2부터  다시 시작)
    • s = k^-1(e + rd^1/a)mod n 인 두 번째 서명 값 s를 계산한다. (s == 0 인 경우 2 부터 다시 시작)
  • 검증절차
    • 원본 메세지의 hash값 e를 구한다.
    • EC 상에서 R = (x1, y1)인 좌표를 구한다. (x1 =r if v=27 , x1 = r+n if v =28)
    • u1 = -zr^-1 mod n을 계산한다.
    • u2 = sr^-1 mod n 을 계산한다.
    • 공개 키 Qa = (xa, yb) = u1 xG + u2 xR 을 구한다.
    • 공개 키에서 Address(주소)를 구한 뒤 송금자와 비교하여 일치하는지 확인한다.

Message 구조

이더리움에서 메시지는 거래와 유사하지만 계정 간이 아닌 스마트 계약 간에 전송됩니다. 메시지 구조는 트랜잭션 구조와 동일한 구성요소를 포함하지만, 발신인 및 실행할 코드에 대한 추가 필드가 있습니다.

CA - CA Transaction

CA-CA(Contract Account to Contract Account) 트랜잭션은 두 스마트 계약 간의 트랜잭션입니다. 발송인 계약은 거래에 대응하여 코드를 실행하고, 실행 결과는 블록체인에 저장됩니다.

Receipt 구조

트랜잭션이 실행되면 영수증이 생성되어 블록체인에 저장됩니다. 영수증 구조에는 다음과 같은 구성 요소가 포함됩니다.

  • Transaction Hash: 트랜잭션의 해시입니다.
  • Status: 트랜잭션의 상태(성공 또는 실패)입니다.
  • Gas Used: 트랜잭션을 실행하는 데 사용된 가스의 양입니다.
  • Contract Address: 트랜잭션에 의해 생성된 계약의 주소입니다(해당하는 경우).

Meta Transaction

메타 트랜잭션은 사용자가 시작하고 서명하지만 릴레이가 실행하는 트랜잭션의 한 유형입니다. 중계기는 거래에 대한 가스 요금을 지불하고 그 대가로 사용자로부터 요금을 받습니다. 메타 트랜잭션은 사용자 환경을 개선하고 분산 응용프로그램 사용의 복잡성을 줄이기 위해 사용됩니다.

EIP-2770

EIP-2770은 메타 트랜잭션의 표준 인터페이스를 정의하는 제안된 이더리움 개선 제안입니다. EIP는 메타 트랜잭션이 실행되는 방식을 표준화하여 개발자가 메타 트랜잭션 기능을 보다 쉽게 구축하고 분산된 애플리케이션에 통합하는 것을 목표로 합니다.

 

https://bit.ly/3Y60J4D

 

한 번에 끝내는 블록체인 개발 A to Z Online. | 패스트캠퍼스

블록체인 Dapp 개발부터 클론코딩 실습까지 하면서 마스터해보세요!

fastcampus.co.kr

*본 게시글은 패스트캠퍼스 후기 이벤트 참여를 위해 작성되었습니다.