반응형
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: 실행된 액션에 대한 응답이나 데이터 전송을 포함.
블록, 청크, 트랜잭션, 액션의 연결 고리
- 블록 생성
- 블록은 일정 간격으로 NEAR 네트워크에서 생성됩니다.
- 블록은 샤드별로 생성된 청크를 포함하며, 전체 네트워크의 상태를 기록합니다.
- 청크 생성 및 트랜잭션 처리
- 각 샤드는 자신에게 할당된 트랜잭션을 처리하여 청크를 생성합니다.
- 청크에는 해당 샤드에 포함된 트랜잭션들이 기록됩니다.
- 트랜잭션의 결과는 리시트를 통해 다른 샤드로 전달될 수도 있으며, 이는 NEAR의 비동기 샤드 간 통신을 가능하게 합니다.
- 트랜잭션 내 액션 실행
- 청크 내의 트랜잭션은 순서대로 실행되며, 각 트랜잭션 내의 액션들도 순차적으로 처리됩니다.
- 액션이 실행된 결과는 리시트에 기록되며, 이는 후속 액션이나 다른 샤드에서 실행될 작업을 위한 입력으로 사용됩니다.
- 리시트 전파 및 추가 처리
- 트랜잭션 실행 후 생성된 리시트는 다른 샤드로 전달될 수 있으며, 이는 청크와 블록에 기록됩니다.
- 리시트를 통해 스마트 계약의 비동기 작업, 데이터 전송 등을 구현할 수 있습니다.
예시: 블록, 청크, 트랜잭션, 액션의 흐름
- 사용자 A가 사용자 B에게 토큰 전송 트랜잭션을 제출
- 트랜잭션은 사용자 A가 속한 샤드의 청크에 포함됩니다.
- 해당 트랜잭션에는 Transfer 액션이 포함됩니다.
- 샤드에서 청크 생성 및 액션 실행
- 샤드가 청크를 생성하고, 트랜잭션 내의 Transfer 액션을 실행합니다.
- 이 액션의 결과로 사용자 B에게 토큰이 전송되며, 그 결과가 리시트로 기록됩니다.
- 청크가 블록에 포함
- 샤드가 생성한 청크가 블록에 포함됩니다.
- 블록이 컨펌되면 트랜잭션이 완료되며, 이로써 전체 네트워크에 기록됩니다.
- 스마트 계약 호출 트랜잭션 제출:
- 사용자 A가 스마트 계약의 stakeTokens라는 함수를 호출하는 트랜잭션을 제출합니다.
- 트랜잭션은 FunctionCall 액션을 포함합니다.
- 리시트 생성 및 스마트 계약 호출:
- FunctionCall 액션이 실행되면, 리시트가 생성되고 스마트 계약이 호출됩니다.
- 스마트 계약은 결과를 DataReceipt에 기록할 수 있으며, 추가로 다른 계정과의 상호작용이 필요한 경우 새로운 ActionReceipt가 생성되어 전달될 수 있습니다.
요약
- 블록은 여러 샤드의 청크를 포함하는 전체 기록 단위입니다.
- 청크는 각 샤드가 생성한 데이터 블록으로, 샤드 내 트랜잭션을 처리하고 저장합니다.
- 트랜잭션은 사용자가 제출하는 작업 단위이며, 여러 액션을 포함할 수 있습니다.
- 액션은 트랜잭션의 개별 작업이며, 액션의 결과로 리시트가 생성되어 비동기 작업이 가능해집니다.
반응형
LIST
'Blockchain' 카테고리의 다른 글
Hyperledger Fabric Test-Network-K8S 분석 (0) | 2022.11.09 |
---|---|
[Blockchain] 하이퍼레저 패브릭(Hyperledger Fabric) (0) | 2022.08.12 |
[Ethereum] 이더리움 알아보기 (0) | 2022.02.21 |
[Blockchain] 하이퍼레저 컴포저(Hyperledger Composer) (0) | 2021.07.06 |
[Blockchain] 하이퍼레저 패브릭(Hyperledger Fabric) 환경 구성 (0) | 2021.07.06 |