자산 전송(기본) 스마트 계약을 패키징한 후 트랜잭션을 승인할 모든 피어에 체인코드를 설치
Org1과 Org2 모두의 보증을 요구하도록 보증 정책을 설정할 것이기 때문에 두 조직에서 운영하는 피어에 체인코드를 설치해야 함.
peer0.org1.example.com
peer0.org2.example.com
먼저 Org1 피어에 체인코드를 설치
peer
CLI를 사용하기 위해 다음의 환경 변수를 설정CORE_PEER_ADDRESS
는 Org1 피어를 가리키도록 설정 :peer0.org1.example.com.yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ export CORE_PEER_TLS_ENABLED=true export CORE_PEER_LOCALMSPID="Org1MSP" export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp export CORE_PEER_ADDRESS=localhost:7051
peer lifecycle chaincode install 명령을 실행하여 피어에 체인코드를 설치
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode install basic.tar.gz 2023-08-09 14:26:45.445 KST 0001 INFO [cli.lifecycle.chaincode] submitInstallProposal -> Installed remotely: response:<status:200 payload:"\nJbasic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578\022\tbasic_1.0" > 2023-08-09 14:26:45.445 KST 0002 INFO [cli.lifecycle.chaincode] submitInstallProposal -> Chaincode code package identifier: basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578
이제 Org2 피어에 체인코드를 설치
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ export CORE_PEER_LOCALMSPID="Org2MSP" export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp export CORE_PEER_ADDRESS=localhost:9051
다음 명령을 실행하여 체인코드를 설치
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode install basic.tar.gz 2023-08-09 14:34:37.923 KST 0001 INFO [cli.lifecycle.chaincode] submitInstallProposal -> Installed remotely: response:<status:200 payload:"\nJbasic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578\022\tbasic_1.0" > 2023-08-09 14:34:37.923 KST 0002 INFO [cli.lifecycle.chaincode] submitInstallProposal -> Chaincode code package identifier: basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578
체인코드는 체인코드가 설치될 때 피어에 의해 빌드 됨.
설치 명령은 스마트 계약 코드에 문제가 있는 경우 체인코드에서 빌드 오류를 반환
체인코드 패키지를 설치한 후 조직에 대한 체인코드 정의를 승인해야 함.
체인코드를 배포하기 전에 승인해야 하는 채널 구성원 집합은 /Channel/Application/LifecycleEndorsement
정책을 따른다.
기본적으로 이 정책에서는 대부분의 채널 구성원이 체인코드를 채널에서 사용하기 전에 승인해야 함.
조직이 피어에 체인코드를 설치한 경우 조직에서 승인한 체인코드 정의에 packageID를 포함해야 함.
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode queryinstalled Installed chaincodes on peer: Package ID: basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578, Label: basic_1.0
체인코드를 승인할 때 패키지 ID를 사용할 것이므로 계속해서 환경 변수로 저장할 거임.
peer lifecycle chaincode queryinstalled 에서 받은 패키지 ID 붙여넣기
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ export CC_PACKAGE_ID=basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578
Org2 관리자로써 peer
CLI를 동작하도록 환경 변수가 설정되어 있기 때문에, 자산 전송(기본)의 체인코드 정의를 Org2로 승인할 수 있음.
체인코드는 조직 수준에서 승인되므로 명령은 하나의 피어만 대상으로 하면 됨
peer lifecycle chaincode approveformyorg
명령을 사용하여 체인코드 정의를 승인
--package-id
플래그 : 체인코드 정의에 패키지 식별자를 포함--sequence
매개변수 : 체인코드가 정의되거나 업데이트된 횟수를 추적하는 정수 --init-required
플래그 : Fabric Chaincode Shim API를 통해 제공되는 저수준 API를 사용하는 경우, 해당 플래그로 체인코드를 초기화하기 위해 Init 함수의 실행을 요청가능--isInit
플래그를 포함해야 한다.--signature-policy
또는 --channel-config-policy
인수를 approvalformyorg
명령에 제공하여 체인코드 승인 정책을 지정했다.
보증 정책은 서로 다른 채널 구성원에 속하는 피어가 주어진 체인코드에 대해 트랜잭션을 검증해야 하는 수를 지정
우리는 여기서 정책을 설정하지 않았기 때문에 자산 이전(기본)의 정의는 트랜잭션이 제출될 때 참석한 채널 구성원의 대다수가 트랜잭션을 보증하도록 요구하는 기본 보증 정책을 사용
이 튜토리얼에서 기본 정책은 2개 중 2개가 필요하며 트랜잭션은 Org1 및 Org2의 동료가 승인해야 함.
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" 2023-08-09 14:55:23.473 KST 0001 INFO [chaincodeCmd] ClientWait -> txid [31dfb0e43cf3b57cb25d67ad2d445a438add1f34ce5804d03ac108a2dc2705ea] committed with status (VALID) at localhost:9051
관리자 역할이 있는 ID로 체인코드 정의를 승인해야 함.
CORE_PEER_MSPCONFIGPATH
변수는 관리자 ID가 포함된 MSP 폴더를 가리켜야 함.여전히 체인코드 정의를 Org1로 승인 -> Org1 관리자로 작동하도록 다음 환경 변수를 설정합
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ export CORE_PEER_LOCALMSPID="Org1MSP" export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt export CORE_PEER_ADDRESS=localhost:7051
이제 체인코드 정의를 Org1로 승인 가능
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
결과
2023-08-09 18:38:08.194 KST 0001 INFO [chaincodeCmd] ClientWait -> txid [fe9259acbf1b9bd3bfed9f3f2828698bea2b603063a110d5a8db61c742904a6a] committed with status (VALID) at localhost:7051
'대부분'의 조직이 체인코드 정의(기본 정책 포함)를 승인하고, '모든' 조직은 피어에서 체인코드를 시작하기 위해 체인코드 정의를 승인해야 함.
채널 구성원이 체인코드를 승인하기 전에, 정의를 커밋하면 조직에서 트랜잭션을 보증할 수 없음.
=> 모든 채널 구성원이 체인코드 정의를 커밋하기 전에 체인코드를 승인하는 것을 권고
충분한 수의 조직이 체인코드 정의를 승인한 후, 한 조직이 체인코드 정의를 채널에 커밋O
대다수의 채널 구성원이 정의를 승인한 경우, 커밋 트랜잭션이 성공하고 체인코드 정의에서 동의한 매개변수가 채널에서 구현됨.
피어 수명 주기 체인코드 checkcommitreadiness
명령 : 채널 구성원이 동일한 체인코드 정의를 승인했는지 확인
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name basic --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --output json
{
"Approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
peer lifecycle chaincode commit
명령을 사용하여 체인코드 정의를 채널에 커밋
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"
2023-08-09 18:58:19.503 KST 0001 INFO [chaincodeCmd] ClientWait -> txid [3d3b09d80712cdc4a1f128eb5ef800b19f28e72e015e1b6fff7240115173ac5c] committed with status (VALID) at localhost:7051 2023-08-09 18:58:19.518 KST 0002 INFO [chaincodeCmd] ClientWait -> txid [3d3b09d80712cdc4a1f128eb5ef800b19f28e72e015e1b6fff7240115173ac5c] committed with status (VALID) at localhost:9051
--peerAddresses
플래그 : Org1에서 peer0.org1.example.com, Org2에서peer0.org2.example.com. 타겟팅
commit
트랜잭션은 피어를 운영하는 조직에서 승인한 체인코드 정의를 쿼리하기 위해 채널에 가입한 피어에게 제출됨.채널 멤버의 체인코드 정의 보증은 주문 서비스에 제출되어 블록에 추가되고 채널에 배포
-> 채널의 피어는 충분한 수의 조직이 체인코드 정의를 승인했는지 확인
peer lifecycle chaincode commit
명령은 응답을 반환하기 전에 피어의 유효성 검사를 기다림.peer lifecycle chaincode querycommitted
: 체인코드 정의가 채널에 커밋되었는지 확인yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer lifecycle chaincode querycommitted --channelID mychannel --name basic --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"
<pre>Committed chaincode definition for chaincode 'basic' on channel 'mychannel':
Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: [Org1MSP: true, Org2MSP: true]
</pre>
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'
2023-08-09 20:01:11.398 KST 0001 INFO [chaincodeCmd] chaincodeInvokeOrQuery -> Chaincode invoke successful. result: status:200
yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
[{"AppraisedValue":300,"Color":"blue","ID":"asset1","Owner":"Tomoko","Size":5},{"AppraisedValue":400,"Color":"red","ID":"asset2","Owner":"Brad","Size":5},{"AppraisedValue":500,"Color":"green","ID":"asset3","Owner":"Jin Soo","Size":10},{"AppraisedValue":600,"Color":"yellow","ID":"asset4","Owner":"Max","Size":10},{"AppraisedValue":700,"Color":"black","ID":"asset5","Owner":"Adriana","Size":15},{"AppraisedValue":800,"Color":"white","ID":"asset6","Owner":"Michel","Size":15}]
docker stop logspout
docker rm logspout
./network.sh down
yujeong@yujeong-VirtualBox:~$ cd go/src yujeong@yujeong-VirtualBox:~/go/src$ ^C fabric-samples/test-network yujeong@yujeong-VirtualBox:~/go/src$ cd fabric-samples/test-network yujeong@yujeong-VirtualBox:~/go/src/fabric-samples/test-network$ ./monitordocker.sh fabric_test Starting monitoring on all containers on the network fabric_test Unable to find image 'gliderlabs/logspout:latest' locally latest: Pulling from gliderlabs/logspout 8572bc8fb8a3: Pull complete bd801371a862: Pull complete 58100c398b34: Pull complete Digest: sha256:2d81c026e11ac67f7887029dbfd7d36ee986d946066b45c1dabd966278eb5681 Status: Downloaded newer image for gliderlabs/logspout:latest a6139444d7dc3604282693a4fbd4d64f320e9bb27d02bcc5a10e66a3cc2b05d3 peer0.org1.example.com|2023-08-09 05:25:37.491 UTC 004e INFO [chaincode.externalbuilder.ccaas_builder] waitForExit -> ::Detect command=detect peer0.org1.example.com|2023-08-09 05:25:37.492 UTC 004f INFO [chaincode.externalbuilder.ccaas_builder] waitForExit -> ::Error: chaincode type not supported: golang command=detect cranky_leavitt|go: downloading github.com/hyperledger/fabric-contract-api-go v1.2.1 cranky_leavitt|go: downloading github.com/hyperledger/fabric-chaincode-go v0.0.0-20230228194215-b84622ba6a7a cranky_leavitt|go: downloading github.com/hyperledger/fabric-protos-go v0.3.0 cranky_leavitt|go: downloading github.com/golang/protobuf v1.5.2 cranky_leavitt|go: downloading google.golang.org/grpc v1.53.0 cranky_leavitt|go: downloading github.com/xeipuuv/gojsonschema v1.2.0 cranky_leavitt|go: downloading github.com/go-openapi/spec v0.20.8 cranky_leavitt|go: downloading github.com/gobuffalo/packr v1.30.1 cranky_leavitt|go: downloading google.golang.org/protobuf v1.28.1 cranky_leavitt|go: downloading github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 cranky_leavitt|go: downloading github.com/go-openapi/jsonpointer v0.19.5 cranky_leavitt|go: downloading github.com/go-openapi/jsonreference v0.20.0 cranky_leavitt|go: downloading github.com/go-openapi/swag v0.21.1 cranky_leavitt|go: downloading github.com/gobuffalo/envy v1.10.1 cranky_leavitt|go: downloading github.com/gobuffalo/packd v1.0.1 cranky_leavitt|go: downloading golang.org/x/net v0.7.0 cranky_leavitt|go: downloading google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f cranky_leavitt|go: downloading github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb cranky_leavitt|go: downloading github.com/mailru/easyjson v0.7.7 cranky_leavitt|go: downloading gopkg.in/yaml.v2 v2.4.0 cranky_leavitt|go: downloading github.com/joho/godotenv v1.4.0 cranky_leavitt|go: downloading github.com/rogpeppe/go-internal v1.8.1 cranky_leavitt|go: downloading golang.org/x/sys v0.5.0 cranky_leavitt|go: downloading github.com/josharian/intern v1.0.0 cranky_leavitt|go: downloading golang.org/x/text v0.7.0 cranky_leavitt|internal/goarch cranky_leavitt|internal/unsafeheader cranky_leavitt|internal/abi cranky_leavitt|internal/cpu cranky_leavitt|internal/bytealg cranky_leavitt|internal/coverage/rtcov cranky_leavitt|internal/goexperiment cranky_leavitt|internal/goos cranky_leavitt|runtime/internal/atomic cranky_leavitt|runtime/internal/math cranky_leavitt|runtime/internal/sys cranky_leavitt|runtime/internal/syscall cranky_leavitt|runtime cranky_leavitt|internal/reflectlite cranky_leavitt|errors cranky_leavitt|internal/race cranky_leavitt|sync/atomic cranky_leavitt|sync cranky_leavitt|io cranky_leavitt|unicode cranky_leavitt|unicode/utf8 cranky_leavitt|bytes cranky_leavitt|encoding cranky_leavitt|math/bits cranky_leavitt|math cranky_leavitt|internal/itoa cranky_leavitt|strconv cranky_leavitt|reflect cranky_leavitt|encoding/binary cranky_leavitt|encoding/base64 cranky_leavitt|sort cranky_leavitt|internal/fmtsort cranky_leavitt|internal/oserror cranky_leavitt|syscall cranky_leavitt|internal/syscall/unix cranky_leavitt|time cranky_leavitt|internal/poll cranky_leavitt|internal/safefilepath cranky_leavitt|internal/syscall/execenv cranky_leavitt|internal/testlog cranky_leavitt|path cranky_leavitt|io/fs cranky_leavitt|os cranky_leavitt|fmt cranky_leavitt|strings cranky_leavitt|unicode/utf16 cranky_leavitt|encoding/json cranky_leavitt|hash cranky_leavitt|crypto cranky_leavitt|crypto/internal/alias cranky_leavitt|crypto/subtle cranky_leavitt|crypto/cipher cranky_leavitt|crypto/internal/boring/sig cranky_leavitt|crypto/internal/boring cranky_leavitt|crypto/aes cranky_leavitt|crypto/des cranky_leavitt|crypto/internal/randutil cranky_leavitt|internal/godebug cranky_leavitt|math/rand cranky_leavitt|math/big cranky_leavitt|crypto/dsa cranky_leavitt|crypto/internal/edwards25519/field cranky_leavitt|crypto/internal/nistec/fiat cranky_leavitt|embed cranky_leavitt|crypto/internal/nistec cranky_leavitt|crypto/ecdh cranky_leavitt|crypto/elliptic cranky_leavitt|crypto/internal/bigmod cranky_leavitt|crypto/internal/boring/bbig cranky_leavitt|crypto/sha512 cranky_leavitt|encoding/asn1 cranky_leavitt|vendor/golang.org/x/crypto/cryptobyte/asn1 cranky_leavitt|vendor/golang.org/x/crypto/cryptobyte cranky_leavitt|crypto/ecdsa cranky_leavitt|crypto/internal/edwards25519 cranky_leavitt|crypto/rand cranky_leavitt|crypto/ed25519 cranky_leavitt|crypto/md5 cranky_leavitt|crypto/rsa cranky_leavitt|crypto/sha1 cranky_leavitt|crypto/sha256 cranky_leavitt|encoding/hex cranky_leavitt|crypto/x509/pkix cranky_leavitt|encoding/pem cranky_leavitt|context cranky_leavitt|vendor/golang.org/x/net/dns/dnsmessage cranky_leavitt|internal/nettrace cranky_leavitt|internal/singleflight cranky_leavitt|internal/intern cranky_leavitt|net/netip cranky_leavitt|runtime/cgo cranky_leavitt|net cranky_leavitt|net/url cranky_leavitt|path/filepath cranky_leavitt|crypto/x509 cranky_leavitt|bufio cranky_leavitt|compress/flate cranky_leavitt|hash/crc32 cranky_leavitt|compress/gzip cranky_leavitt|hash/fnv cranky_leavitt|google.golang.org/protobuf/internal/detrand cranky_leavitt|google.golang.org/protobuf/internal/errors cranky_leavitt|google.golang.org/protobuf/encoding/protowire cranky_leavitt|google.golang.org/protobuf/internal/pragma cranky_leavitt|google.golang.org/protobuf/reflect/protoreflect cranky_leavitt|google.golang.org/protobuf/internal/encoding/messageset cranky_leavitt|google.golang.org/protobuf/internal/flags cranky_leavitt|go/token cranky_leavitt|google.golang.org/protobuf/internal/strs cranky_leavitt|google.golang.org/protobuf/internal/encoding/text cranky_leavitt|google.golang.org/protobuf/internal/genid cranky_leavitt|google.golang.org/protobuf/internal/order cranky_leavitt|google.golang.org/protobuf/internal/set cranky_leavitt|google.golang.org/protobuf/reflect/protoregistry cranky_leavitt|google.golang.org/protobuf/runtime/protoiface cranky_leavitt|google.golang.org/protobuf/proto cranky_leavitt|google.golang.org/protobuf/encoding/prototext cranky_leavitt|google.golang.org/protobuf/internal/encoding/defval cranky_leavitt|google.golang.org/protobuf/internal/descfmt cranky_leavitt|google.golang.org/protobuf/internal/descopts cranky_leavitt|google.golang.org/protobuf/internal/filedesc cranky_leavitt|google.golang.org/protobuf/internal/encoding/tag cranky_leavitt|io/ioutil cranky_leavitt|google.golang.org/protobuf/internal/impl cranky_leavitt|google.golang.org/protobuf/internal/filetype cranky_leavitt|google.golang.org/protobuf/internal/version cranky_leavitt|google.golang.org/protobuf/runtime/protoimpl cranky_leavitt|google.golang.org/protobuf/types/descriptorpb cranky_leavitt|google.golang.org/protobuf/reflect/protodesc cranky_leavitt|github.com/golang/protobuf/proto cranky_leavitt|github.com/hyperledger/fabric-protos-go/msp cranky_leavitt|github.com/hyperledger/fabric-chaincode-go/pkg/attrmgr cranky_leavitt|github.com/hyperledger/fabric-chaincode-go/pkg/cid cranky_leavitt|container/list cranky_leavitt|crypto/hmac cranky_leavitt|crypto/rc4 cranky_leavitt|vendor/golang.org/x/crypto/internal/alias cranky_leavitt|vendor/golang.org/x/crypto/chacha20 cranky_leavitt|vendor/golang.org/x/crypto/internal/poly1305 cranky_leavitt|vendor/golang.org/x/sys/cpu cranky_leavitt|vendor/golang.org/x/crypto/chacha20poly1305 cranky_leavitt|vendor/golang.org/x/crypto/hkdf cranky_leavitt|crypto/tls cranky_leavitt|flag cranky_leavitt|google.golang.org/protobuf/types/known/timestamppb cranky_leavitt|github.com/golang/protobuf/ptypes/timestamp cranky_leavitt|github.com/hyperledger/fabric-protos-go/common cranky_leavitt|github.com/hyperledger/fabric-protos-go/ledger/rwset cranky_leavitt|log cranky_leavitt|golang.org/x/net/internal/timeseries cranky_leavitt|html cranky_leavitt|text/template/parse cranky_leavitt|text/template cranky_leavitt|html/template cranky_leavitt|vendor/golang.org/x/text/transform cranky_leavitt|vendor/golang.org/x/text/unicode/bidi cranky_leavitt|vendor/golang.org/x/text/secure/bidirule cranky_leavitt|vendor/golang.org/x/text/unicode/norm cranky_leavitt|vendor/golang.org/x/net/idna cranky_leavitt|net/textproto cranky_leavitt|vendor/golang.org/x/net/http/httpguts cranky_leavitt|vendor/golang.org/x/net/http/httpproxy cranky_leavitt|vendor/golang.org/x/net/http2/hpack cranky_leavitt|mime cranky_leavitt|mime/quotedprintable cranky_leavitt|mime/multipart cranky_leavitt|net/http/httptrace cranky_leavitt|net/http/internal cranky_leavitt|net/http/internal/ascii cranky_leavitt|net/http cranky_leavitt|text/tabwriter cranky_leavitt|golang.org/x/net/trace cranky_leavitt|google.golang.org/grpc/backoff cranky_leavitt|golang.org/x/sys/unix cranky_leavitt|google.golang.org/grpc/internal/grpclog cranky_leavitt|google.golang.org/grpc/grpclog cranky_leavitt|google.golang.org/grpc/connectivity cranky_leavitt|google.golang.org/grpc/attributes cranky_leavitt|google.golang.org/grpc/internal/credentials cranky_leavitt|google.golang.org/grpc/credentials cranky_leavitt|google.golang.org/grpc/internal/channelz cranky_leavitt|google.golang.org/grpc/channelz cranky_leavitt|regexp/syntax cranky_leavitt|regexp cranky_leavitt|google.golang.org/protobuf/internal/encoding/json cranky_leavitt|google.golang.org/protobuf/encoding/protojson cranky_leavitt|github.com/golang/protobuf/jsonpb cranky_leavitt|google.golang.org/grpc/internal/pretty cranky_leavitt|google.golang.org/grpc/serviceconfig cranky_leavitt|google.golang.org/grpc/resolver cranky_leavitt|google.golang.org/grpc/internal cranky_leavitt|google.golang.org/grpc/metadata cranky_leavitt|google.golang.org/grpc/balancer cranky_leavitt|google.golang.org/grpc/balancer/base cranky_leavitt|google.golang.org/grpc/internal/grpcrand cranky_leavitt|google.golang.org/grpc/balancer/roundrobin cranky_leavitt|google.golang.org/grpc/codes cranky_leavitt|google.golang.org/grpc/credentials/insecure cranky_leavitt|google.golang.org/grpc/internal/envconfig cranky_leavitt|google.golang.org/grpc/internal/grpcutil cranky_leavitt|google.golang.org/grpc/encoding cranky_leavitt|google.golang.org/grpc/encoding/proto cranky_leavitt|google.golang.org/grpc/internal/backoff cranky_leavitt|google.golang.org/grpc/internal/balancer/gracefulswitch cranky_leavitt|google.golang.org/grpc/internal/balancerload cranky_leavitt|google.golang.org/protobuf/types/known/anypb cranky_leavitt|github.com/golang/protobuf/ptypes/any cranky_leavitt|google.golang.org/protobuf/types/known/durationpb cranky_leavitt|github.com/golang/protobuf/ptypes/duration cranky_leavitt|github.com/golang/protobuf/ptypes cranky_leavitt|google.golang.org/grpc/binarylog/grpc_binarylog_v1 cranky_leavitt|google.golang.org/genproto/googleapis/rpc/status cranky_leavitt|google.golang.org/grpc/internal/status cranky_leavitt|google.golang.org/grpc/status cranky_leavitt|google.golang.org/grpc/internal/binarylog cranky_leavitt|google.golang.org/grpc/internal/buffer cranky_leavitt|google.golang.org/grpc/internal/grpcsync cranky_leavitt|google.golang.org/grpc/internal/metadata cranky_leavitt|google.golang.org/grpc/internal/serviceconfig cranky_leavitt|google.golang.org/grpc/internal/resolver cranky_leavitt|google.golang.org/grpc/balancer/grpclb/state cranky_leavitt|google.golang.org/grpc/internal/resolver/dns cranky_leavitt|google.golang.org/grpc/internal/resolver/passthrough cranky_leavitt|google.golang.org/grpc/internal/transport/networktype cranky_leavitt|google.golang.org/grpc/internal/resolver/unix cranky_leavitt|golang.org/x/text/transform cranky_leavitt|golang.org/x/text/unicode/bidi cranky_leavitt|golang.org/x/text/secure/bidirule cranky_leavitt|golang.org/x/text/unicode/norm cranky_leavitt|golang.org/x/net/idna cranky_leavitt|golang.org/x/net/http/httpguts cranky_leavitt|golang.org/x/net/http2/hpack cranky_leavitt|golang.org/x/net/http2 cranky_leavitt|google.golang.org/grpc/internal/syscall cranky_leavitt|google.golang.org/grpc/keepalive cranky_leavitt|google.golang.org/grpc/peer cranky_leavitt|google.golang.org/grpc/stats cranky_leavitt|google.golang.org/grpc/tap cranky_leavitt|net/http/httputil cranky_leavitt|google.golang.org/grpc/internal/transport cranky_leavitt|google.golang.org/grpc cranky_leavitt|google.golang.org/protobuf/types/known/emptypb cranky_leavitt|github.com/hyperledger/fabric-protos-go/peer cranky_leavitt|github.com/hyperledger/fabric-chaincode-go/shim/internal cranky_leavitt|github.com/hyperledger/fabric-protos-go/ledger/queryresult cranky_leavitt|github.com/hyperledger/fabric-chaincode-go/shim cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/contractapi/utils cranky_leavitt|internal/saferio cranky_leavitt|encoding/gob cranky_leavitt|github.com/josharian/intern cranky_leavitt|github.com/mailru/easyjson/jlexer cranky_leavitt|github.com/mailru/easyjson/buffer cranky_leavitt|github.com/mailru/easyjson/jwriter cranky_leavitt|gopkg.in/yaml.v2 cranky_leavitt|github.com/go-openapi/swag cranky_leavitt|github.com/go-openapi/jsonpointer cranky_leavitt|github.com/go-openapi/jsonreference/internal cranky_leavitt|github.com/go-openapi/jsonreference cranky_leavitt|github.com/go-openapi/spec cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/internal/types cranky_leavitt|github.com/xeipuuv/gojsonpointer cranky_leavitt|github.com/xeipuuv/gojsonreference cranky_leavitt|net/mail cranky_leavitt|github.com/xeipuuv/gojsonschema cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/internal/utils cranky_leavitt|os/exec cranky_leavitt|github.com/joho/godotenv cranky_leavitt|github.com/rogpeppe/go-internal/semver cranky_leavitt|github.com/rogpeppe/go-internal/module cranky_leavitt|github.com/rogpeppe/go-internal/modfile cranky_leavitt|github.com/gobuffalo/envy cranky_leavitt|github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx cranky_leavitt|github.com/gobuffalo/packd cranky_leavitt|github.com/gobuffalo/packr cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/metadata cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/serializer cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/internal cranky_leavitt|github.com/hyperledger/fabric-contract-api-go/contractapi cranky_leavitt|github.com/hyperledger/fabric-samples/asset-transfer-basic/chaincode-go/chaincode cranky_leavitt|github.com/hyperledger/fabric-samples/asset-transfer-basic/chaincode-go cranky_leavitt|# github.com/hyperledger/fabric-samples/asset-transfer-basic/chaincode-go cranky_leavitt|/usr/bin/ld: /tmp/go-link-1139198089/000004.o: in function `_cgo_cbcce81e6342_C2func_getaddrinfo': cranky_leavitt|/tmp/go-build/cgo-gcc-prolog:58: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking cranky_leavitt|Done! peer0.org1.example.com|2023-08-09 05:26:45.440 UTC 0050 INFO [lifecycle] InstallChaincode -> Successfully installed chaincode with package ID 'basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578' peer0.org1.example.com|2023-08-09 05:26:45.441 UTC 0051 INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 67985ms channel= txID=5f72ff16 peer0.org1.example.com|2023-08-09 05:26:45.441 UTC 0052 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:40758 grpc.code=OK grpc.call_duration=1m7.987343868s peer0.org2.example.com|2023-08-09 05:33:12.788 UTC 0049 INFO [chaincode.externalbuilder.ccaas_builder] waitForExit -> ::Detect command=detect peer0.org2.example.com|2023-08-09 05:33:12.788 UTC 004a INFO [chaincode.externalbuilder.ccaas_builder] waitForExit -> ::Error: chaincode type not supported: golang command=detect inspiring_diffie|go: downloading github.com/hyperledger/fabric-contract-api-go v1.2.1 inspiring_diffie|go: downloading github.com/hyperledger/fabric-chaincode-go v0.0.0-20230228194215-b84622ba6a7a inspiring_diffie|go: downloading github.com/hyperledger/fabric-protos-go v0.3.0 inspiring_diffie|go: downloading github.com/golang/protobuf v1.5.2 inspiring_diffie|go: downloading google.golang.org/grpc v1.53.0 inspiring_diffie|go: downloading github.com/xeipuuv/gojsonschema v1.2.0 inspiring_diffie|go: downloading github.com/go-openapi/spec v0.20.8 inspiring_diffie|go: downloading github.com/gobuffalo/packr v1.30.1 inspiring_diffie|go: downloading google.golang.org/protobuf v1.28.1 inspiring_diffie|go: downloading github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 inspiring_diffie|go: downloading github.com/go-openapi/jsonpointer v0.19.5 inspiring_diffie|go: downloading github.com/go-openapi/jsonreference v0.20.0 inspiring_diffie|go: downloading github.com/go-openapi/swag v0.21.1 inspiring_diffie|go: downloading github.com/gobuffalo/envy v1.10.1 inspiring_diffie|go: downloading github.com/gobuffalo/packd v1.0.1 inspiring_diffie|go: downloading golang.org/x/net v0.7.0 inspiring_diffie|go: downloading google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f inspiring_diffie|go: downloading github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb inspiring_diffie|go: downloading github.com/mailru/easyjson v0.7.7 inspiring_diffie|go: downloading gopkg.in/yaml.v2 v2.4.0 inspiring_diffie|go: downloading github.com/joho/godotenv v1.4.0 inspiring_diffie|go: downloading github.com/rogpeppe/go-internal v1.8.1 inspiring_diffie|go: downloading golang.org/x/sys v0.5.0 inspiring_diffie|go: downloading github.com/josharian/intern v1.0.0 inspiring_diffie|go: downloading golang.org/x/text v0.7.0 inspiring_diffie|internal/goarch inspiring_diffie|internal/unsafeheader inspiring_diffie|internal/abi inspiring_diffie|internal/cpu inspiring_diffie|internal/bytealg inspiring_diffie|internal/coverage/rtcov inspiring_diffie|internal/goexperiment inspiring_diffie|internal/goos inspiring_diffie|runtime/internal/atomic inspiring_diffie|runtime/internal/math inspiring_diffie|runtime/internal/sys inspiring_diffie|runtime/internal/syscall inspiring_diffie|runtime inspiring_diffie|internal/reflectlite inspiring_diffie|errors inspiring_diffie|internal/race inspiring_diffie|sync/atomic inspiring_diffie|sync inspiring_diffie|io inspiring_diffie|unicode inspiring_diffie|unicode/utf8 inspiring_diffie|bytes inspiring_diffie|encoding inspiring_diffie|math/bits inspiring_diffie|math inspiring_diffie|internal/itoa inspiring_diffie|strconv inspiring_diffie|reflect inspiring_diffie|encoding/binary inspiring_diffie|encoding/base64 inspiring_diffie|sort inspiring_diffie|internal/fmtsort inspiring_diffie|internal/oserror inspiring_diffie|syscall inspiring_diffie|internal/syscall/unix inspiring_diffie|time inspiring_diffie|internal/poll inspiring_diffie|internal/safefilepath inspiring_diffie|internal/syscall/execenv inspiring_diffie|internal/testlog inspiring_diffie|path inspiring_diffie|io/fs inspiring_diffie|os inspiring_diffie|fmt inspiring_diffie|strings inspiring_diffie|unicode/utf16 inspiring_diffie|encoding/json inspiring_diffie|hash inspiring_diffie|crypto inspiring_diffie|crypto/internal/alias inspiring_diffie|crypto/subtle inspiring_diffie|crypto/cipher inspiring_diffie|crypto/internal/boring/sig inspiring_diffie|crypto/internal/boring inspiring_diffie|crypto/aes inspiring_diffie|crypto/des inspiring_diffie|crypto/internal/randutil inspiring_diffie|internal/godebug inspiring_diffie|math/rand inspiring_diffie|math/big inspiring_diffie|crypto/dsa inspiring_diffie|crypto/internal/edwards25519/field inspiring_diffie|crypto/internal/nistec/fiat inspiring_diffie|embed inspiring_diffie|crypto/internal/nistec inspiring_diffie|crypto/ecdh inspiring_diffie|crypto/elliptic inspiring_diffie|crypto/internal/bigmod inspiring_diffie|crypto/internal/boring/bbig inspiring_diffie|crypto/sha512 inspiring_diffie|encoding/asn1 inspiring_diffie|vendor/golang.org/x/crypto/cryptobyte/asn1 inspiring_diffie|vendor/golang.org/x/crypto/cryptobyte inspiring_diffie|crypto/ecdsa inspiring_diffie|crypto/internal/edwards25519 inspiring_diffie|crypto/rand inspiring_diffie|crypto/ed25519 inspiring_diffie|crypto/md5 inspiring_diffie|crypto/rsa inspiring_diffie|crypto/sha1 inspiring_diffie|crypto/sha256 inspiring_diffie|encoding/hex inspiring_diffie|crypto/x509/pkix inspiring_diffie|encoding/pem inspiring_diffie|context inspiring_diffie|vendor/golang.org/x/net/dns/dnsmessage inspiring_diffie|internal/nettrace inspiring_diffie|internal/singleflight inspiring_diffie|internal/intern inspiring_diffie|net/netip inspiring_diffie|runtime/cgo inspiring_diffie|net inspiring_diffie|net/url inspiring_diffie|path/filepath inspiring_diffie|crypto/x509 inspiring_diffie|bufio inspiring_diffie|compress/flate inspiring_diffie|hash/crc32 inspiring_diffie|compress/gzip inspiring_diffie|hash/fnv inspiring_diffie|google.golang.org/protobuf/internal/detrand inspiring_diffie|google.golang.org/protobuf/internal/errors inspiring_diffie|google.golang.org/protobuf/encoding/protowire inspiring_diffie|google.golang.org/protobuf/internal/pragma inspiring_diffie|google.golang.org/protobuf/reflect/protoreflect inspiring_diffie|google.golang.org/protobuf/internal/encoding/messageset inspiring_diffie|google.golang.org/protobuf/internal/flags inspiring_diffie|go/token inspiring_diffie|google.golang.org/protobuf/internal/strs inspiring_diffie|google.golang.org/protobuf/internal/encoding/text inspiring_diffie|google.golang.org/protobuf/internal/genid inspiring_diffie|google.golang.org/protobuf/internal/order inspiring_diffie|google.golang.org/protobuf/internal/set inspiring_diffie|google.golang.org/protobuf/reflect/protoregistry inspiring_diffie|google.golang.org/protobuf/runtime/protoiface inspiring_diffie|google.golang.org/protobuf/proto inspiring_diffie|google.golang.org/protobuf/encoding/prototext inspiring_diffie|google.golang.org/protobuf/internal/encoding/defval inspiring_diffie|google.golang.org/protobuf/internal/descfmt inspiring_diffie|google.golang.org/protobuf/internal/descopts inspiring_diffie|google.golang.org/protobuf/internal/filedesc inspiring_diffie|google.golang.org/protobuf/internal/encoding/tag inspiring_diffie|io/ioutil inspiring_diffie|google.golang.org/protobuf/internal/impl inspiring_diffie|google.golang.org/protobuf/internal/filetype inspiring_diffie|google.golang.org/protobuf/internal/version inspiring_diffie|google.golang.org/protobuf/runtime/protoimpl inspiring_diffie|google.golang.org/protobuf/types/descriptorpb inspiring_diffie|google.golang.org/protobuf/reflect/protodesc inspiring_diffie|github.com/golang/protobuf/proto inspiring_diffie|github.com/hyperledger/fabric-protos-go/msp inspiring_diffie|github.com/hyperledger/fabric-chaincode-go/pkg/attrmgr inspiring_diffie|github.com/hyperledger/fabric-chaincode-go/pkg/cid inspiring_diffie|container/list inspiring_diffie|crypto/hmac inspiring_diffie|crypto/rc4 inspiring_diffie|vendor/golang.org/x/crypto/internal/alias inspiring_diffie|vendor/golang.org/x/crypto/chacha20 inspiring_diffie|vendor/golang.org/x/crypto/internal/poly1305 inspiring_diffie|vendor/golang.org/x/sys/cpu inspiring_diffie|vendor/golang.org/x/crypto/chacha20poly1305 inspiring_diffie|vendor/golang.org/x/crypto/hkdf inspiring_diffie|crypto/tls inspiring_diffie|flag inspiring_diffie|google.golang.org/protobuf/types/known/timestamppb inspiring_diffie|github.com/golang/protobuf/ptypes/timestamp inspiring_diffie|github.com/hyperledger/fabric-protos-go/common inspiring_diffie|github.com/hyperledger/fabric-protos-go/ledger/rwset inspiring_diffie|log inspiring_diffie|golang.org/x/net/internal/timeseries inspiring_diffie|html inspiring_diffie|text/template/parse inspiring_diffie|text/template inspiring_diffie|html/template inspiring_diffie|vendor/golang.org/x/text/transform inspiring_diffie|vendor/golang.org/x/text/unicode/bidi inspiring_diffie|vendor/golang.org/x/text/secure/bidirule inspiring_diffie|vendor/golang.org/x/text/unicode/norm inspiring_diffie|vendor/golang.org/x/net/idna inspiring_diffie|net/textproto inspiring_diffie|vendor/golang.org/x/net/http/httpguts inspiring_diffie|vendor/golang.org/x/net/http/httpproxy inspiring_diffie|vendor/golang.org/x/net/http2/hpack inspiring_diffie|mime inspiring_diffie|mime/quotedprintable inspiring_diffie|mime/multipart inspiring_diffie|net/http/httptrace inspiring_diffie|net/http/internal inspiring_diffie|net/http/internal/ascii inspiring_diffie|net/http inspiring_diffie|text/tabwriter inspiring_diffie|golang.org/x/net/trace inspiring_diffie|google.golang.org/grpc/backoff inspiring_diffie|golang.org/x/sys/unix inspiring_diffie|google.golang.org/grpc/internal/grpclog inspiring_diffie|google.golang.org/grpc/grpclog inspiring_diffie|google.golang.org/grpc/connectivity inspiring_diffie|google.golang.org/grpc/attributes inspiring_diffie|google.golang.org/grpc/internal/credentials inspiring_diffie|google.golang.org/grpc/credentials inspiring_diffie|google.golang.org/grpc/internal/channelz inspiring_diffie|google.golang.org/grpc/channelz inspiring_diffie|regexp/syntax inspiring_diffie|regexp inspiring_diffie|google.golang.org/protobuf/internal/encoding/json inspiring_diffie|google.golang.org/protobuf/encoding/protojson inspiring_diffie|github.com/golang/protobuf/jsonpb inspiring_diffie|google.golang.org/grpc/internal/pretty inspiring_diffie|google.golang.org/grpc/serviceconfig inspiring_diffie|google.golang.org/grpc/resolver inspiring_diffie|google.golang.org/grpc/internal inspiring_diffie|google.golang.org/grpc/metadata inspiring_diffie|google.golang.org/grpc/balancer inspiring_diffie|google.golang.org/grpc/balancer/base inspiring_diffie|google.golang.org/grpc/internal/grpcrand inspiring_diffie|google.golang.org/grpc/balancer/roundrobin inspiring_diffie|google.golang.org/grpc/codes inspiring_diffie|google.golang.org/grpc/credentials/insecure inspiring_diffie|google.golang.org/grpc/internal/envconfig inspiring_diffie|google.golang.org/grpc/internal/grpcutil inspiring_diffie|google.golang.org/grpc/encoding inspiring_diffie|google.golang.org/grpc/encoding/proto inspiring_diffie|google.golang.org/grpc/internal/backoff inspiring_diffie|google.golang.org/grpc/internal/balancer/gracefulswitch inspiring_diffie|google.golang.org/grpc/internal/balancerload inspiring_diffie|google.golang.org/protobuf/types/known/anypb inspiring_diffie|github.com/golang/protobuf/ptypes/any inspiring_diffie|google.golang.org/protobuf/types/known/durationpb inspiring_diffie|github.com/golang/protobuf/ptypes/duration inspiring_diffie|github.com/golang/protobuf/ptypes inspiring_diffie|google.golang.org/grpc/binarylog/grpc_binarylog_v1 inspiring_diffie|google.golang.org/genproto/googleapis/rpc/status inspiring_diffie|google.golang.org/grpc/internal/status inspiring_diffie|google.golang.org/grpc/status inspiring_diffie|google.golang.org/grpc/internal/binarylog inspiring_diffie|google.golang.org/grpc/internal/buffer inspiring_diffie|google.golang.org/grpc/internal/grpcsync inspiring_diffie|google.golang.org/grpc/internal/metadata inspiring_diffie|google.golang.org/grpc/internal/serviceconfig inspiring_diffie|google.golang.org/grpc/internal/resolver inspiring_diffie|google.golang.org/grpc/balancer/grpclb/state inspiring_diffie|google.golang.org/grpc/internal/resolver/dns inspiring_diffie|google.golang.org/grpc/internal/resolver/passthrough inspiring_diffie|google.golang.org/grpc/internal/transport/networktype inspiring_diffie|google.golang.org/grpc/internal/resolver/unix inspiring_diffie|golang.org/x/text/transform inspiring_diffie|golang.org/x/text/unicode/bidi inspiring_diffie|golang.org/x/text/secure/bidirule inspiring_diffie|golang.org/x/text/unicode/norm inspiring_diffie|golang.org/x/net/idna inspiring_diffie|golang.org/x/net/http/httpguts inspiring_diffie|golang.org/x/net/http2/hpack inspiring_diffie|golang.org/x/net/http2 inspiring_diffie|google.golang.org/grpc/internal/syscall inspiring_diffie|google.golang.org/grpc/keepalive inspiring_diffie|google.golang.org/grpc/peer inspiring_diffie|google.golang.org/grpc/stats inspiring_diffie|google.golang.org/grpc/tap inspiring_diffie|net/http/httputil inspiring_diffie|google.golang.org/grpc/internal/transport inspiring_diffie|google.golang.org/grpc inspiring_diffie|google.golang.org/protobuf/types/known/emptypb inspiring_diffie|github.com/hyperledger/fabric-protos-go/peer inspiring_diffie|github.com/hyperledger/fabric-chaincode-go/shim/internal inspiring_diffie|github.com/hyperledger/fabric-protos-go/ledger/queryresult inspiring_diffie|github.com/hyperledger/fabric-chaincode-go/shim inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/contractapi/utils inspiring_diffie|internal/saferio inspiring_diffie|encoding/gob inspiring_diffie|github.com/josharian/intern inspiring_diffie|github.com/mailru/easyjson/jlexer inspiring_diffie|github.com/mailru/easyjson/buffer inspiring_diffie|github.com/mailru/easyjson/jwriter inspiring_diffie|gopkg.in/yaml.v2 inspiring_diffie|github.com/go-openapi/swag inspiring_diffie|github.com/go-openapi/jsonpointer inspiring_diffie|github.com/go-openapi/jsonreference/internal inspiring_diffie|github.com/go-openapi/jsonreference inspiring_diffie|github.com/go-openapi/spec inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/internal/types inspiring_diffie|github.com/xeipuuv/gojsonpointer inspiring_diffie|github.com/xeipuuv/gojsonreference inspiring_diffie|net/mail inspiring_diffie|github.com/xeipuuv/gojsonschema inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/internal/utils inspiring_diffie|os/exec inspiring_diffie|github.com/joho/godotenv inspiring_diffie|github.com/rogpeppe/go-internal/semver inspiring_diffie|github.com/rogpeppe/go-internal/module inspiring_diffie|github.com/rogpeppe/go-internal/modfile inspiring_diffie|github.com/gobuffalo/envy inspiring_diffie|github.com/gobuffalo/packd/internal/takeon/github.com/markbates/errx inspiring_diffie|github.com/gobuffalo/packd inspiring_diffie|github.com/gobuffalo/packr inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/metadata inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/serializer inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/internal inspiring_diffie|github.com/hyperledger/fabric-contract-api-go/contractapi inspiring_diffie|github.com/hyperledger/fabric-samples/asset-transfer-basic/chaincode-go/chaincode inspiring_diffie|github.com/hyperledger/fabric-samples/asset-transfer-basic/chaincode-go inspiring_diffie|# github.com/hyperledger/fabric-samples/asset-transfer-basic/chaincode-go inspiring_diffie|/usr/bin/ld: /tmp/go-link-4085013870/000004.o: in function `_cgo_cbcce81e6342_C2func_getaddrinfo': inspiring_diffie|/tmp/go-build/cgo-gcc-prolog:58: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking inspiring_diffie|Done! peer0.org2.example.com|2023-08-09 05:34:37.921 UTC 004b INFO [lifecycle] InstallChaincode -> Successfully installed chaincode with package ID 'basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578' peer0.org2.example.com|2023-08-09 05:34:37.921 UTC 004c INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 85149ms channel= txID=7af380e4 peer0.org2.example.com|2023-08-09 05:34:37.921 UTC 004d INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:54216 grpc.code=OK grpc.call_duration=1m25.152027105s peer0.org2.example.com|2023-08-09 05:45:13.162 UTC 004e INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 1ms channel= txID=5aafb1de peer0.org2.example.com|2023-08-09 05:45:13.162 UTC 004f INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:59736 grpc.code=OK grpc.call_duration=2.456688ms peer0.org2.example.com|2023-08-09 05:55:21.386 UTC 0050 INFO [lifecycle] ApproveChaincodeDefinitionForOrg -> Successfully endorsed chaincode approval with name 'basic', package ID 'basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578', on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: ()} peer0.org2.example.com|2023-08-09 05:55:21.386 UTC 0051 INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 5ms channel=mychannel txID=31dfb0e4 peer0.org2.example.com|2023-08-09 05:55:21.390 UTC 0052 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:52842 grpc.code=OK grpc.call_duration=10.79962ms orderer.example.com|2023-08-09 05:55:23.403 UTC 003b INFO [orderer.consensus.etcdraft] propose -> Created block [3], there are 0 blocks in flight channel=mychannel node=1 orderer.example.com|2023-08-09 05:55:23.410 UTC 003c INFO [orderer.consensus.etcdraft] writeBlock -> Writing block [3] (Raft index: 5) to ledger channel=mychannel node=1 peer0.org2.example.com|2023-08-09 05:55:23.427 UTC 0053 INFO [gossip.privdata] StoreBlock -> Received block [3] from buffer channel=mychannel peer0.org1.example.com|2023-08-09 05:55:23.424 UTC 0053 INFO [gossip.privdata] StoreBlock -> Received block [3] from buffer channel=mychannel peer0.org1.example.com|2023-08-09 05:55:23.436 UTC 0054 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [3] in 5ms peer0.org2.example.com|2023-08-09 05:55:23.438 UTC 0054 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [3] in 10ms peer0.org2.example.com|2023-08-09 05:55:23.442 UTC 0055 INFO [gossip.privdata] RetrievePvtdata -> Successfully fetched (or marked to reconcile later) all 1 eligible collection private write sets for block [3] (0 from local cache, 1 from transient store, 0 from other peers) channel=mychannel peer0.org1.example.com|2023-08-09 05:55:23.463 UTC 0055 INFO [kvledger] commit -> [mychannel] Committed block [3] with 1 transaction(s) in 22ms (state_validation=0ms block_and_pvtdata_commit=13ms state_commit=4ms) commitHash=[6f1967298e705a865006906f25bab925e7dd2349d29434ee4225172a6b725fc4] peer0.org2.example.com|2023-08-09 05:55:23.470 UTC 0056 INFO [kvledger] commit -> [mychannel] Committed block [3] with 1 transaction(s) in 26ms (state_validation=0ms block_and_pvtdata_commit=13ms state_commit=3ms) commitHash=[6f1967298e705a865006906f25bab925e7dd2349d29434ee4225172a6b725fc4] orderer.example.com|2023-08-09 05:55:23.480 UTC 003d WARN [orderer.common.broadcast] Handle -> Error reading from 172.18.0.1:55914: rpc error: code = Canceled desc = context canceled orderer.example.com|2023-08-09 05:55:23.480 UTC 003e INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:55914 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=2.098570428s peer0.org2.example.com|2023-08-09 05:55:23.483 UTC 0057 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=protos.Deliver grpc.method=DeliverFiltered grpc.request_deadline=2023-08-09T05:55:51.393Z grpc.peer_address=172.18.0.1:52850 error="context finished before block retrieved: context canceled" grpc.code=Unknown grpc.call_duration=2.090130644s peer0.org1.example.com|2023-08-09 09:38:06.078 UTC 0056 INFO [lifecycle] ApproveChaincodeDefinitionForOrg -> Successfully endorsed chaincode approval with name 'basic', package ID 'basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578', on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: ()} peer0.org1.example.com|2023-08-09 09:38:06.079 UTC 0057 INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 3ms channel=mychannel txID=fe9259ac peer0.org1.example.com|2023-08-09 09:38:06.086 UTC 0058 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:48786 grpc.code=OK grpc.call_duration=10.687797ms orderer.example.com|2023-08-09 09:38:08.092 UTC 003f INFO [orderer.consensus.etcdraft] propose -> Created block [4], there are 0 blocks in flight channel=mychannel node=1 orderer.example.com|2023-08-09 09:38:08.104 UTC 0040 INFO [orderer.consensus.etcdraft] writeBlock -> Writing block [4] (Raft index: 6) to ledger channel=mychannel node=1 peer0.org2.example.com|2023-08-09 09:38:08.112 UTC 0058 INFO [gossip.privdata] StoreBlock -> Received block [4] from buffer channel=mychannel peer0.org1.example.com|2023-08-09 09:38:08.115 UTC 0059 INFO [gossip.privdata] StoreBlock -> Received block [4] from buffer channel=mychannel peer0.org2.example.com|2023-08-09 09:38:08.132 UTC 0059 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [4] in 10ms peer0.org1.example.com|2023-08-09 09:38:08.134 UTC 005a INFO [committer.txvalidator] Validate -> [mychannel] Validated block [4] in 10ms peer0.org1.example.com|2023-08-09 09:38:08.137 UTC 005b INFO [gossip.privdata] RetrievePvtdata -> Successfully fetched (or marked to reconcile later) all 1 eligible collection private write sets for block [4] (0 from local cache, 1 from transient store, 0 from other peers) channel=mychannel peer0.org1.example.com|2023-08-09 09:38:08.182 UTC 005c INFO [kvledger] commit -> [mychannel] Committed block [4] with 1 transaction(s) in 41ms (state_validation=1ms block_and_pvtdata_commit=28ms state_commit=6ms) commitHash=[52b410b175d947976576b1390edda5eceb73793907d1e95b320ac5fa70c6c082] peer0.org2.example.com|2023-08-09 09:38:08.191 UTC 005a INFO [kvledger] commit -> [mychannel] Committed block [4] with 1 transaction(s) in 52ms (state_validation=4ms block_and_pvtdata_commit=30ms state_commit=4ms) commitHash=[52b410b175d947976576b1390edda5eceb73793907d1e95b320ac5fa70c6c082] orderer.example.com|2023-08-09 09:38:08.198 UTC 0041 WARN [orderer.common.broadcast] Handle -> Error reading from 172.18.0.1:44444: rpc error: code = Canceled desc = context canceled orderer.example.com|2023-08-09 09:38:08.198 UTC 0042 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:44444 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=2.124032921s peer0.org1.example.com|2023-08-09 09:38:08.200 UTC 005d INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=protos.Deliver grpc.method=DeliverFiltered grpc.request_deadline=2023-08-09T09:38:36.096Z grpc.peer_address=172.18.0.1:48788 error="context finished before block retrieved: context canceled" grpc.code=Unknown grpc.call_duration=2.103690209s peer0.org1.example.com|2023-08-09 09:45:10.840 UTC 005e INFO [lifecycle] CheckCommitReadiness -> Successfully checked commit readiness of chaincode name 'basic' on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: (<nil>)} peer0.org1.example.com|2023-08-09 09:45:10.841 UTC 005f INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 1ms channel=mychannel txID=39dc1ef2 peer0.org1.example.com|2023-08-09 09:45:10.842 UTC 0060 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:57060 grpc.code=OK grpc.call_duration=3.45275ms peer0.org1.example.com|2023-08-09 09:58:17.408 UTC 0061 INFO [lifecycle] CheckCommitReadiness -> Successfully checked commit readiness of chaincode name 'basic' on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: (<nil>)} peer0.org1.example.com|2023-08-09 09:58:17.408 UTC 0062 INFO [lifecycle] CommitChaincodeDefinition -> Successfully endorsed commit for chaincode name 'basic' on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: (<nil>)} peer0.org1.example.com|2023-08-09 09:58:17.410 UTC 0063 INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 2ms channel=mychannel txID=3d3b09d8 peer0.org1.example.com|2023-08-09 09:58:17.410 UTC 0064 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:55862 grpc.code=OK grpc.call_duration=3.76187ms peer0.org2.example.com|2023-08-09 09:58:17.417 UTC 005b INFO [lifecycle] CheckCommitReadiness -> Successfully checked commit readiness of chaincode name 'basic' on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: (<nil>)} peer0.org2.example.com|2023-08-09 09:58:17.420 UTC 005c INFO [lifecycle] CommitChaincodeDefinition -> Successfully endorsed commit for chaincode name 'basic' on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: (<nil>)} peer0.org2.example.com|2023-08-09 09:58:17.420 UTC 005d INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 3ms channel=mychannel txID=3d3b09d8 peer0.org2.example.com|2023-08-09 09:58:17.422 UTC 005e INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:53146 grpc.code=OK grpc.call_duration=5.939229ms orderer.example.com|2023-08-09 09:58:19.426 UTC 0043 INFO [orderer.consensus.etcdraft] propose -> Created block [5], there are 0 blocks in flight channel=mychannel node=1 orderer.example.com|2023-08-09 09:58:19.432 UTC 0044 INFO [orderer.consensus.etcdraft] writeBlock -> Writing block [5] (Raft index: 7) to ledger channel=mychannel node=1 peer0.org1.example.com|2023-08-09 09:58:19.441 UTC 0065 INFO [gossip.privdata] StoreBlock -> Received block [5] from buffer channel=mychannel peer0.org2.example.com|2023-08-09 09:58:19.443 UTC 005f INFO [gossip.privdata] StoreBlock -> Received block [5] from buffer channel=mychannel peer0.org2.example.com|2023-08-09 09:58:19.447 UTC 0060 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [5] in 3ms peer0.org1.example.com|2023-08-09 09:58:19.450 UTC 0066 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [5] in 5ms peer0.org1.example.com|2023-08-09 09:58:19.452 UTC 0067 INFO [lifecycle] update -> Updating cached definition for chaincode 'basic' on channel 'mychannel' peer0.org2.example.com|2023-08-09 09:58:19.458 UTC 0061 INFO [lifecycle] update -> Updating cached definition for chaincode 'basic' on channel 'mychannel' peer0.org2.example.com|2023-08-09 09:58:19.460 UTC 0062 INFO [lifecycle] update -> Chaincode with package ID 'basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578' now available on channel mychannel for chaincode definition basic:1.0 peer0.org1.example.com|2023-08-09 09:58:19.461 UTC 0068 INFO [lifecycle] update -> Chaincode with package ID 'basic_1.0:fa7da118f496cd4a3deb4e43c77f9af4f3265b7555942c74c9810557fa5c6578' now available on channel mychannel for chaincode definition basic:1.0 peer0.org1.example.com|2023-08-09 09:58:19.478 UTC 0069 INFO [cceventmgmt] HandleStateUpdates -> Channel [mychannel]: Handling deploy or update of chaincode [basic] peer0.org2.example.com|2023-08-09 09:58:19.479 UTC 0063 INFO [cceventmgmt] HandleStateUpdates -> Channel [mychannel]: Handling deploy or update of chaincode [basic] peer0.org1.example.com|2023-08-09 09:58:19.499 UTC 006a INFO [kvledger] commit -> [mychannel] Committed block [5] with 1 transaction(s) in 48ms (state_validation=28ms block_and_pvtdata_commit=8ms state_commit=6ms) commitHash=[87a12b89927c4d246fb326f72959cc2f372da0a5ab0ce01fba8eb7af248e2a07] orderer.example.com|2023-08-09 09:58:19.525 UTC 0045 WARN [orderer.common.broadcast] Handle -> Error reading from 172.18.0.1:39486: rpc error: code = Canceled desc = context canceled orderer.example.com|2023-08-09 09:58:19.525 UTC 0046 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:39486 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=2.110307788s peer0.org2.example.com|2023-08-09 09:58:19.517 UTC 0064 INFO [kvledger] commit -> [mychannel] Committed block [5] with 1 transaction(s) in 66ms (state_validation=30ms block_and_pvtdata_commit=8ms state_commit=20ms) commitHash=[87a12b89927c4d246fb326f72959cc2f372da0a5ab0ce01fba8eb7af248e2a07] peer0.org2.example.com|2023-08-09 09:58:19.600 UTC 0065 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=protos.Deliver grpc.method=DeliverFiltered grpc.request_deadline=2023-08-09T09:58:47.427Z grpc.peer_address=172.18.0.1:53154 error="context finished before block retrieved: context canceled" grpc.code=Unknown grpc.call_duration=2.17212258s peer0.org1.example.com|2023-08-09 09:58:19.594 UTC 006b INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=protos.Deliver grpc.method=DeliverFiltered grpc.request_deadline=2023-08-09T09:58:47.426Z grpc.peer_address=172.18.0.1:55876 error="context finished before block retrieved: context canceled" grpc.code=Unknown grpc.call_duration=2.168257296s peer0.org1.example.com|2023-08-09 10:15:01.271 UTC 006c INFO [lifecycle] QueryChaincodeDefinition -> Successfully queried chaincode name 'basic' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: ()}, peer0.org1.example.com|2023-08-09 10:15:01.272 UTC 006d INFO [endorser] callChaincode -> finished chaincode: _lifecycle duration: 1ms channel=mychannel txID=78344a6d peer0.org1.example.com|2023-08-09 10:15:01.282 UTC 006e INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:41988 grpc.code=OK grpc.call_duration=11.973938ms peer0.org2.example.com|2023-08-09 11:01:11.385 UTC 0066 INFO [endorser] callChaincode -> finished chaincode: basic duration: 2ms channel=mychannel txID=b2969bcc peer0.org1.example.com|2023-08-09 11:01:11.390 UTC 006f INFO [endorser] callChaincode -> finished chaincode: basic duration: 2ms channel=mychannel txID=b2969bcc peer0.org2.example.com|2023-08-09 11:01:11.391 UTC 0067 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:59452 grpc.code=OK grpc.call_duration=9.470456ms peer0.org1.example.com|2023-08-09 11:01:11.392 UTC 0070 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:52526 grpc.code=OK grpc.call_duration=5.491763ms orderer.example.com|2023-08-09 11:01:11.402 UTC 0047 WARN [orderer.common.broadcast] Handle -> Error reading from 172.18.0.1:45160: rpc error: code = Canceled desc = context canceled orderer.example.com|2023-08-09 11:01:11.402 UTC 0048 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.18.0.1:45160 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=15.37168ms orderer.example.com|2023-08-09 11:01:13.396 UTC 0049 INFO [orderer.consensus.etcdraft] propose -> Created block [6], there are 0 blocks in flight channel=mychannel node=1 orderer.example.com|2023-08-09 11:01:13.406 UTC 004a INFO [orderer.consensus.etcdraft] writeBlock -> Writing block [6] (Raft index: 8) to ledger channel=mychannel node=1 peer0.org2.example.com|2023-08-09 11:01:13.417 UTC 0068 INFO [gossip.privdata] StoreBlock -> Received block [6] from buffer channel=mychannel peer0.org1.example.com|2023-08-09 11:01:13.418 UTC 0071 INFO [gossip.privdata] StoreBlock -> Received block [6] from buffer channel=mychannel peer0.org1.example.com|2023-08-09 11:01:13.422 UTC 0072 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [6] in 1ms peer0.org2.example.com|2023-08-09 11:01:13.426 UTC 0069 INFO [committer.txvalidator] Validate -> [mychannel] Validated block [6] in 6ms peer0.org1.example.com|2023-08-09 11:01:13.443 UTC 0073 INFO [kvledger] commit -> [mychannel] Committed block [6] with 1 transaction(s) in 15ms (state_validation=0ms block_and_pvtdata_commit=9ms state_commit=3ms) commitHash=[346f9ac883c581b799341b3b483764991c468095a66a44c25439274303f5b078] peer0.org2.example.com|2023-08-09 11:01:13.445 UTC 006a INFO [kvledger] commit -> [mychannel] Committed block [6] with 1 transaction(s) in 16ms (state_validation=0ms block_and_pvtdata_commit=9ms state_commit=3ms) commitHash=[346f9ac883c581b799341b3b483764991c468095a66a44c25439274303f5b078] peer0.org1.example.com|2023-08-09 11:04:24.101 UTC 0074 INFO [endorser] callChaincode -> finished chaincode: basic duration: 2ms channel=mychannel txID=ea174cf0 peer0.org1.example.com|2023-08-09 11:04:24.103 UTC 0075 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.18.0.1:50998 grpc.code=OK grpc.call_duration=4.446394ms curl: (18) transfer closed with outstanding read data remaining