2017-12-14 9 views
1

go 언어 체인 코드 자체에서 함수 중 하나를 호출하려고합니다. 이렇게하는 이유는 흐름을 기반으로 일부 논리에 대해 별도의 트랜잭션 블록을 만들고 싶기 때문입니다. 우리는 'transferFund'라는 이름의 기능과 그 안에서 우리는 두 사람의 균형을 읽고있는 경우 예를 들어자체에서 하위 트랜잭션을 기록하기 위해 chaincode 함수를 호출하는 방법

, (그것은 'readBalance'라는 이름의 함수가 될 수 있습니다). 1 'transferFund'및 2 'readBalance'에 대한 channelName이 경우 비어있을 수있는

답변

0

당신의 chaincode 내의 다른 chaincode를 호출하면

stub.InvokeChaincode(chaincodeName, queryArgs, channelName) 

을 사용할 수 있습니다 : 우리는 3 개 블록을 생성 할 동일한 채널에서 chaincode를 호출하려고합니다.

소스 : 그러나 https://github.com/hyperledger/fabric/blob/release/examples/chaincode/go/chaincode_example05/chaincode_example05.go#L90

, 나는 다른 코드의 호출이 검증되어야하기 때문에 호출이 새 트랜잭션을 추가하지 않습니다 그리고 당신은 원장베이스에 데이터를 변경하기 위해 호출의 결과를 사용할 수 있다고 생각 그 위에. 따라서 모든 것이 1 건의 거래로 끝납니다.

또한 블록거래을 구분해야합니다.

블록

는 암호화 채널에 선행하는 블록 (들)에 연결된 트랜잭션 세트 지시했다.

거래

호출하거나 주문, 확인을 위해 제출, 커밋되는 결과를 인스턴스화합니다. 호출은 원장에서 데이터를 읽고 쓰는 요청입니다. Instantiate는 채널의 체인 코드를 시작하고 초기화하라는 요청입니다. 응용 프로그램 클라이언트는 피어 투 피어의 응답을 호출하거나 인스턴스화하고 결과와 보증을 주문, 유효성 검사 및 커밋을 위해 제출 된 트랜잭션으로 패키지합니다.

http://hyperledger-fabric.readthedocs.io/en/release/glossary.html