본문 바로가기
AI & Data/Blockchain

[Blockchain] 블록체인 인보크 (Invoke Method)

by Henry Cho 2023. 12. 26.
728x90

블록체인 인보크 (Invoke Method)

포스트 난이도: HOO_Senior


# Invoke Method

블록체인(Blockchain)에서 인보크(Invoke)는 체인코드 기능(Chaincode funciton)을 부르는 데 사용된다. 인보크는 유니티와 같은 다른 프로그래밍에서도 활용되는 메서드(Method)이지만 블록체인에서는 시간 지연 기능을 제공하기보다는 create, read, update and delete (CRUD)를 가지고 있으며(Encapsulated) 클라이언트(Client application) 트랜잭션(Transactions)이 발생할 때 인보크가 사용된다. 인보크 단어의 뜻을 찾아보면 "작동하다" 또는 "호출"의 의미를 가지고 있는데 블록체인의 인보크는 체인코드를 작동하기 위한 하나의 메서드라고 생각하면 된다. 그래서 한국 블록체인 관련 글에서 Invoke를 호출로 번역하여 나타내기도 한다.

 

블록체인에서 인보크를 통해서 체인코드와 클라이언트 애플리케이션을 연결해줄 수 있다. 체인코드 (Chaincode)는 의 데이터 스키마(Data Schemes)를 정의하고, 초기화하고, 애플리케이션에 의해 트리거 될 때 업데이트를 수행하고, 쿼리에 응답하는데 이때 인보크가 사용되기 때문이다. 이때 원장(Ledger)이 수정된다면 수정 사항이 기록이 되고 기록될 거래에 응답을 받고 나서 클라이언트는 다음 사항을 진행할 수 있게 된다. 인보크에는 채널 식별자, 인보크 할 체인코드 함수 및 인수 배열이 포함된다.


# Example Code of Invoke

package org.example;

import org.hyperledger.fabric.contract.ContractInterface;
import org.hyperledger.fabric.contract.annotation.Contract;
import org.hyperledger.fabric.contract.annotation.Transaction;
import org.hyperledger.fabric.shim.ChaincodeStub;

@Contract()
public class SimpleStorage implements ContractInterface {

    @Transaction()
    public void set(ChaincodeStub stub, String value) {
        stub.putStringState("HOO", value);
    }

    @Transaction()
    public String get(ChaincodeStub stub) {
        return stub.getStringState("HOO");
    }
}

위의 예제코드는 자바(Java) 기반의 하이퍼레져(Hyperledger)에서 인보크(Invoke)를 알아보기 위해 부분적으로 작성된 예제코드이다. 예제코드에 대한 간략한 설명은 아래를 참고하면 된다.

 

  • Contract Annotation: "@Contract"은 클래스(Class)를 하이퍼레저 패브릭(Hyperledger Fabric) 계약으로 지정한다. 
  • Set Method : "@Transaction"은 ChaincodeStub 개체와 문자열 값을 가져가며 "putStringState"를 사용하여 값을 원장에 기록한다.
  • Get Method: "@Transaction"은 "getStringState"를 사용하여 원장에 저장된 값을 반환한다.

여기서 Set과 Get methods들이 체인코드에서 인보크 메소드에 해당한다. 여기서 Set은  블록체인 원장에 데이터를 쓰는 데 사용되며 "ChaincodeStub" 개체와 String 값을 매개 변수로 사용한다. "ChaincodeStub"은 원장과 상호 작용할 수 있는 API를 제공하며, 그 값은 저장하고자 하는 데이터에 해당된다. "ChaincodeStub"의 "putStringState" 기능은 특정 키(여기서는 "HOO")로 원장(Ledger)에 값을 기록하는 데 사용된다.

 

Get은  블록체인 원장에서 데이터를 읽는 데 사용되며 "ChaincodeStub" 개체를 매개 변수로 사용한다. 메서드는 ChaincodeStub의 getStringState 기능을 사용하여 "HOO" 키 아래에 저장된 데이터를 원장에서 검색하게 된다.

 

해당 예제코드는 글쓴이가 사용하는 하이퍼레져의 일부 코드이며 체인 코드를 배포하고 상호 작용하려면 하이퍼레저 패브릭 네트워크를 설정하고 SDK나 CLI 도구를 사용해야 한다.


 

728x90

댓글