Managed Blockchain에서 “체인 코드 지문 불일치: 데이터 불일치”를 어떻게 해결할 수 있습니까?

최종 업데이트 날짜: 2020년 11월 12일

Amazon Managed Blockchain에서 “체인 코드 지문 불일치: 데이터 불일치” 오류를 어떻게 해결할 수 있습니까?

간략한 설명

“체인 코드 지문 불일치: 데이터 불일치”는 클라이언트 측 오류입니다. 이 오류는 피어 노드의 체인 코드 지문 ID가 다른 피어 노드의 지문과 일치하지 않을 때 발생합니다. 일반적으로 채널에 있는 하나 이상의 피어들이 다른 체인 코드 버전이나 경로를 사용하는 경우에 발생합니다. 오류를 해결하려면 경로를 수정하거나 모든 피어 노드에서 체인 코드를 다시 설치합니다.

해결 방법

1.    채널의 각 피어 노드에서 다음 명령을 실행합니다.

docker exec cli peer chaincode list --installed

2.    출력에서 “Id”필드를 기록합니다. 이것은 체인 코드 지문입니다. 예:

Name: myjointcc, Version: v3, Path: github.com/chaincode_example02/go, Id: af4a7734dac943a9b3183d339a848eeea8220d8647cefabccfbe89b3a4d23cbc

3.    채널의 모든 피어 노드 ID를 비교합니다. 노드에 다른 지문이 있는 경우 체인 코드 경로를 확인하여 노드가 올바른 경로를 사용하고 있는지 확인합니다. 체인 코드 경로가 올바르면 다음 단계를 계속합니다.

4.    채널의 모든 피어 노드에 체인코드를 다시 설치합니다. 각 피어 노드에 대해 동일한 체인 코드 버전을 사용해야 합니다. 예:

docker exec cli peer chaincode install -n myjointcc -v v4 -p github.com/chaincode_example02/go

5.    채널의 각 피어 노드에서 체인 코드를 인스턴스화합니다. 네트워크에 여러 멤버가 있는 경우 다른 피어 노드에 설치된 동일한 체인 코드 버전을 인스턴스화해야 합니다. 다음 예제 명령에서 Member1IDMember2ID를 사용자의 멤버 ID로 바꿉니다.

docker exec cli peer chaincode upgrade -o $ORDERER -C ourchanneltest -n myjointcc -v v4 -c '{"Args":["init","a","100","b","200"]}' --cafile /opt/home/managedblockchain-tls-chain.pem --tls -P "AND ('
    Member1ID.member','Member2ID.member')"

참고: Hyperledger Fabric 1.x에는 이러한 단계를 완료한 후에도 여전히 “체인 코드 지문 불일치” 오류가 발생할 수 있는 알려진 문제가 있습니다. 자세한 내용은 Hyperledger 웹 사이트에서 지문 불일치 오류를 수신하는 동일한 체인 코드 소스를 참조하세요. 이 문제를 해결 하려면 Hyperledger Fabric Command Line Interface를 사용하여 체인 코드를 패키징합니다. 그런 다음 여러 클라이언트를 사용하여 체인 코드를 별도로 설치하는 대신 모든 노드에 동일한 패키지를 설치합니다. 자세한 내용은 AWS Track-and-Trace Blockchain Workshop의 체인코드 빌드 예제를 참조하세요.</p


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?