겉바속촉

[Hyperledger] chain code와 privacy 본문

IT일기(하반기)/Hyperledger-fabric

[Hyperledger] chain code와 privacy

겉바속촉 2020. 8. 13. 11:39
728x90
반응형

현재 겉바속촉이 가지고 있는 chain code는 두가지 입니다

root@59c27e8a8591:/var/hyperledger/production/chaincodes# ls
jes.1.0  jes_cc_node.1.0

 

 

원장(ledger)은 채널 당 1개씩 있기 때문에

chain code가 아무리 여러개여도 제가 작업하는 곳인 mychannel에서만 계속 추가가 될 것입니다

마지막에 한 번 더 짚어볼거에요

 

 

우선

겉바속촉이 작업하는 곳의 cli 는 application이라고 봐주시면됩니다!

 

 

 

 

이제 cli 컨테이너로 들어가서 peer0에 설치된 체인 코드가 mychannel에 연결되도록 다음과 같이 명령한다

peer chaincode instantiate -C mychannel -n jes_cc_node -l node -v 1.0 -c '{"Args":["init","a","100","b","200"]}' 

 

chaincode에 쿼리를 다음과 같이 날리면 위에서 100이라고 주었기 때문에 100이라고 출력이 됩니다

query는 invoke와 다르게 그냥 get 메서드로 보시면 됩니다

 peer chaincode query -C mychannel -n jes_cc_node -c '{"Args":["query","a"]}'

 

 

chaincode에 invoke하기 (송금)

peer chaincode invoke -C mychannel -n jes_cc_node -c '{"Args":["invoke","a","b","10"]}'

 

 

그러면 다음과 같이 successful이라고 출력이 됩니다

그럼 잘 송금이 되었다는 뜻이에요

2020-08-13 01:37:16.577 UTC [chaincodeCmd] InitCmdFactory -> INFO 001 Retrieved channel (mychannel) orderer endpoint: orderer.example.com:7050
2020-08-13 01:37:16.598 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 002 Chaincode invoke successful. result: status:200 

 

 

아까 100이었던 a가 이제 뭐가나오는지 봐야겠네요:)

peer chaincode query -C mychannel -n jes_cc_node -c '{"Args":["query","a"]}'

 

90이라고 나오는 것을 확인할 수 있습니다

root@ad9711d6727d:/opt/gopath/src/github.com/chaincode_example02/node#  peer chaincode query -C mychannel -n jes_cc_node -c '{"Args":["query","a"]}'
90

 

 

application에서는 채널1에 접속을 하게 될 거에요

그럼 그때 chain code 이름을 적고 그 cc의 어떤 메서드를 호출하겠다~ 라고 하는 거죠

 

이제 원장을 가지고 있는 peer에서 RW Set을 application에게 되돌려주고

application은 oderer에게 받은 것을 보냅니다

 

그러면 orderer는 다른 채널2가 아닌 작업중인 채널1로 보내게 되고 

그 채널1에서만 block이 생기면서 chain으로 연결이 되는 것입니다

 


 

application 이 이번에는 채널2에 접속할거에요

그럼 그때는 채널 1의 peer가 아니라 채널2의 peer에게 어떤 메서드를 호출하겠다~ 라고 하는 거죠

 

아까와 마찬가지로

이제 원장을 가지고 있는 peer에서 RW Set을 application에게 되돌려주고

application은 oderer에게 받은 것을 보냅니다

 

그러면 orderer는 채널1로는 절대로 보내지 않고 채널2로 보내서

그 채널2에서만 block이 생기면서 chain으로 연결이 되도록 합니다

 

 

여기서 주의할 점은 orderer는 ch1에서 일어난 일을 ch2에 절대로!!!!!!!! 보내지 않습니다

마찬가지로 ch2에서 일어난 일을 ch1에 절대로!!!!!!!!!!!! 보내지 않겠쥬

 

이게 바로 프라이버시 라는 것입니다!^^!

 

 

이렇게 해서 여태 해준 작업은

mychannel에 go와 Node로 각각 1개씩 총 2개의 체인 코드가 생겼습니다

하지만 원장은 채널당 하나인 것을 기억해주셔야합니다:)

 

728x90
반응형