Blockchain

Near 블록 데이터 구조

구루싸 2024. 11. 7. 20:00
반응형
SMALL
 

NEAR 프로토콜에서 블록(Block), 청크(Chunk), 트랜잭션(Transaction), 액션(Action) 간의 연결은 네트워크 내에서 데이터를 처리하고 상호작용을 관리하는 데 중요한 역할을 합니다. 이들은 서로 계층적이며 특정 순서로 연결됩니다.

아래에서는 블록, 청크, 트랜잭션, 액션이 서로 어떻게 관계되고 처리되는지 설명합니다.

블록 (Block)

  • 블록은 네트워크의 특정 시간 상태를 나타내며, 하나 이상의 **청크(Chunk)**가 포함됩니다.
  • 각 블록에는 NEAR 네트워크의 여러 샤드에서 생성된 청크들이 결합되어 있습니다.
  • 블록은 NEAR 네트워크에 포함된 트랜잭션들을 최종적으로 기록하는 역할을 합니다.

청크 (Chunk)

  • 청크는 NEAR 네트워크에서 **샤드(Shard)**별로 생성되는 데이터 블록입니다.
  • 블록이 여러 청크를 포함할 수 있는 이유는 NEAR가 샤딩을 사용해 네트워크의 확장성을 확보하기 때문입니다.
  • 각 청크는 샤드에 속한 계정들이 제출한 트랜잭션들을 포함합니다.
  • 즉, 블록이 NEAR 네트워크의 전체 상태를 기록하는 단위라면, 청크는 각 샤드별로 블록 내에 포함된 트랜잭션을 처리하고 저장하는 단위입니다.

트랜잭션 (Transaction)

  • 트랜잭션은 사용자 또는 스마트 계약이 네트워크에 제출하는 작업 요청입니다.
  • 트랜잭션에는 여러 **액션(Action)**이 포함될 수 있습니다.
  • 각 트랜잭션은 특정 청크 내에서 처리되며, 블록에 최종 기록됩니다.
  • 트랜잭션의 결과로 **리시트(Receipt)**가 생성되며, 이는 액션 실행 후의 결과를 나타냅니다.
  • 각 트랜잭션은 네트워크 상에서 컨펌되어 블록에 포함됩니다.

액션 (Action)

  • 액션은 트랜잭션 내에서 수행되는 개별 작업입니다. 여러 개의 액션이 하나의 트랜잭션에 포함될 수 있습니다.
  • 대표적인 액션으로는 Transfer, FunctionCall, DeployContract 등이 있습니다.
  • 액션이 실행되면 해당 액션의 결과로 리시트가 생성되며, 리시트는 이후 다른 청크 또는 샤드에서 추가적인 작업을 수행하도록 전달될 수 있습니다.
  • 대표적인 액션의 종류:
    • Transfer: NEAR 토큰을 전송
    • FunctionCall: 스마트 계약의 특정 함수를 호출
    • DeployContract: 스마트 계약을 배포
    • Stake: 토큰을 스테이킹

리시트 (Receipt)

  • 액션이 실행되고 나면 리시트가 생성됩니다.
  • 리시트는 액션의 결과를 나타내며, NEAR의 비동기 실행 모델에서 매우 중요한 역할을 합니다.
  • 리시트는 해당 액션을 처리할 책임이 있는 계정에게 전달됩니다. 이 과정에서 작업이 처리되고 결과가 저장됩니다.
  • 각 액션의 결과가 리시트로 변환되며, 다른 스마트 계약과의 비동기 통신을 관리합니다.
  • 리시트는 두 가지 유형으로 나눌 수 있습니다:
    • ActionReceipt: 트랜잭션의 액션을 실행한 결과.
    • DataReceipt: 실행된 액션에 대한 응답이나 데이터 전송을 포함.

 

블록, 청크, 트랜잭션, 액션의 연결 고리

  1. 블록 생성
    • 블록은 일정 간격으로 NEAR 네트워크에서 생성됩니다.
    • 블록은 샤드별로 생성된 청크를 포함하며, 전체 네트워크의 상태를 기록합니다.
  2. 청크 생성 및 트랜잭션 처리
    • 각 샤드는 자신에게 할당된 트랜잭션을 처리하여 청크를 생성합니다.
    • 청크에는 해당 샤드에 포함된 트랜잭션들이 기록됩니다.
    • 트랜잭션의 결과는 리시트를 통해 다른 샤드로 전달될 수도 있으며, 이는 NEAR의 비동기 샤드 간 통신을 가능하게 합니다.
  3. 트랜잭션 내 액션 실행
    • 청크 내의 트랜잭션은 순서대로 실행되며, 각 트랜잭션 내의 액션들도 순차적으로 처리됩니다.
    • 액션이 실행된 결과는 리시트에 기록되며, 이는 후속 액션이나 다른 샤드에서 실행될 작업을 위한 입력으로 사용됩니다.
  4. 리시트 전파 및 추가 처리
    • 트랜잭션 실행 후 생성된 리시트는 다른 샤드로 전달될 수 있으며, 이는 청크와 블록에 기록됩니다.
    • 리시트를 통해 스마트 계약의 비동기 작업, 데이터 전송 등을 구현할 수 있습니다.

예시: 블록, 청크, 트랜잭션, 액션의 흐름

  1. 사용자 A가 사용자 B에게 토큰 전송 트랜잭션을 제출
    • 트랜잭션은 사용자 A가 속한 샤드의 청크에 포함됩니다.
    • 해당 트랜잭션에는 Transfer 액션이 포함됩니다.
  2. 샤드에서 청크 생성 및 액션 실행
    • 샤드가 청크를 생성하고, 트랜잭션 내의 Transfer 액션을 실행합니다.
    • 이 액션의 결과로 사용자 B에게 토큰이 전송되며, 그 결과가 리시트로 기록됩니다.
  3. 청크가 블록에 포함
    • 샤드가 생성한 청크가 블록에 포함됩니다.
    • 블록이 컨펌되면 트랜잭션이 완료되며, 이로써 전체 네트워크에 기록됩니다.

 

  1. 스마트 계약 호출 트랜잭션 제출:
    • 사용자 A가 스마트 계약의 stakeTokens라는 함수를 호출하는 트랜잭션을 제출합니다.
    • 트랜잭션은 FunctionCall 액션을 포함합니다.
  2. 리시트 생성 및 스마트 계약 호출:
    • FunctionCall 액션이 실행되면, 리시트가 생성되고 스마트 계약이 호출됩니다.
    • 스마트 계약은 결과를 DataReceipt에 기록할 수 있으며, 추가로 다른 계정과의 상호작용이 필요한 경우 새로운 ActionReceipt가 생성되어 전달될 수 있습니다.

요약

  • 블록은 여러 샤드의 청크를 포함하는 전체 기록 단위입니다.
  • 청크는 각 샤드가 생성한 데이터 블록으로, 샤드 내 트랜잭션을 처리하고 저장합니다.
  • 트랜잭션은 사용자가 제출하는 작업 단위이며, 여러 액션을 포함할 수 있습니다.
  • 액션은 트랜잭션의 개별 작업이며, 액션의 결과로 리시트가 생성되어 비동기 작업이 가능해집니다.
반응형
LIST