Gom3rye
스마트 컨트랙트 & 체인코드 본문
스마트 컨트랙트란?
- 조직 사이에서 서로 거래하기 전에 해당 프로세스를 다루는 계약 세트를 정의하기 위한 계약서
- Hyperledger fabric에서는 chaincode가 스마트 컨트랙트의 의미로 사용되지만 일반적으로 스마트 컨트랙트는 world state에 포함된 비즈니스 객체의 life cycle을 제어하는 트랜잭션 논리를 정의하고 체인코드는 정의한 트랜잭션 논리를 패키징해서 블록체인 네트워크에 배포하는 역할을 한다. (스마트 컨트랙트 : 트랜잭션 관리 역할, 체인코드 : 컨트랙트 배포를 위해 패키지화되는 방식 관리 역할)
- 서로 다른 비즈니스 객체의 상태를 정의하고 다른 상태로의 변화를 담당하는 코드를 의미한다.
- 거래 당사자 간 모든 상호 작용을 관리하는 비즈니스 모델을 제시하기 때문에 스마트 컨트랙트를 만들 때는 상당히 고려해야 할 점이 많다. (컨트랙 봐주는 회사도 생겼을 정도,,)
- 서로 다른 조직간의 규칙을 정의하고 애플리케이션에서 스마트 컨트랙트를 호출하는 트랜잭션을 요청하여 그 결과를 원장에 기록한다.
- 스마트 컨트랙트는 주로 world state에서 put, get, 그리고 delete 동작을 정의하며 블록체인에 존재하는 트랜잭션 기록을 쿼리를 통해 얻을 수 있다.
체인코드
- 체인코드는 Chaincode 인터페이스를 구현해야 한다. Chaincode 인터페이스는 Init method와 Invoke method로 구성된다. Init method는 Instantiate나 upgrade시 호출되며 Invoke method는 Invoke 트랜잭션 요청을 받을 때 호출된다.
- 크게 사용자 체인코드와 시스템 체인코드로 구분할 수 있다.
- 사용자 체인코드 : 개발자가 다루는 체인코드
- 시스템 체인코드 : 사용자 체인코드가 실제로 동작하는 처리 흐름을 제어하는 것
- 하이퍼레저 패브릭에는 총 5개의 시스템 체인코드가 있다.
- Configuration System Chaincode(CSCC) - 피어 및 프로세스 채널 구성과 트랜잭션에 대한 채널 관련 정보를 관리
- Life Cycle System Chaincode(LSCC) - 체인코드의 수명 주기를 관리 / 체인코드는 피어에 설치되고 채널에 배포되며 업그레이드되고 사용자는 체인코드 실행에 대한 정보를 얻을 수 있다.
- Query System Chaincode(QSCC) - 블록 저장소에 저장된 블록 및 트랜잭션을 쿼리할 수 있도록 특정 기능을 사용자에게 제공
- Endorser System Chaincode(ESCC) - 트랜잭션을 실행한 후 트랜잭션 실행 결과(트랜잭션 상태, 체인코드 이벤트, R/W set 등)를 포함하는 트랜잭션 응답 메시지에 서명을 넣기 위해 호출된다.
- Validator System Chaincode(VSCC) - committing 피어에 의해 호출되어 각 트랜잭션의 서명 세트를 통해 체인코드의 보증 정책에 대한 유효성을 검사
대표적인 스마트 컨트랙트
'Blockchain' 카테고리의 다른 글
이화체인 부트캠프 1일차 (1) | 2022.10.01 |
---|---|
BPU: A Blockchain Processing Unit for Accelerated Smart Contract Execution (0) | 2022.05.22 |
Mastering Ethereum] Ch6. 트랜잭션 (0) | 2022.05.08 |
Mastering Ethereum] Ch5. 지갑 (0) | 2022.04.15 |
BBS: Micro-architecture Benchmarking Blockchain Systems through Machine Learning and Fuzzy Set (0) | 2022.03.23 |