Skip to content

hemoi/decentralized_infosafe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

BLOCKCHAIN IDEATON 2019

기술임치제도 2.0

기술임치제도란 중소기업의 기술자료를 신뢰성 있는 전문기관에 보관해 중소기업의 기술유출을 방지하는 것으로, 대기업 입장에서는 중소기업이 폐업 또는 파산하더라도 기술사용을 보장받을 수 있으며, 중소기업 입장에서는 부득이하게 기술탈취가 발생했을 때 특정시기부터 기술을 보유하고 있었다는 증거로 기술탈취시 해당 제도를 유용하게 사용할 수 있다.

기존 제도의 문제점을 해결하기 위한 탈중앙화 된 기술 임치제도 2.0을 설계 했다.

hyperledger의 privateDB를 활용, 권한이 있는 사람만이 원본데이터를 열람하고 권한이 없을 경우에는 hash값만 열람할 수 있게 함


How to test

ref. hyperledger fabric privateDB
https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data/private-data.html

하이퍼레저 패브릭 first-network 환경설정이 되었다고 가정
해당 폴더를 first-network fabric-samples/chaincode에 넣는다.

first network up을 위한 기존 network down

cd fabric-samples/first-network
./byfn.sh down

docker rm -f $(docker ps -a | awk '($2 ~ /dev-peer.*.docCC.*/) {print $1}')
docker rmi -f $(docker images | awk '($1 ~ /dev-peer.*.docCC.*/) {print $3}')

./byfn.sh up -c mychannel -s couchdb
docker exec -it cli bash
peer chaincode install -n docCC -v 1.0 -p github.com/chaincode/manageSecret/go/

export CORE_PEER_ADDRESS=peer1.org1.example.com:8051
peer chaincode install -n docCC -v 1.0 -p github.com/chaincode/manageSecret/go/

export CORE_PEER_LOCALMSPID=Org2MSP
export PEER0_ORG2_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n docCC -v 1.0 -c '{"Args":["init"]}' -P "OR('Org1MSP.member','Org2MSP.member')" --collections-config  $GOPATH/src/github.com/chaincode/manageSecret/collections_config.json


export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export CORE_PEER_LOCALMSPID=Org1MSP
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
export PEER0_ORG1_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

initSecret

export Secret=$(echo -n "{\"name\":\"Secret@1\",\"owner\":\"choi\",\"orignal\":\"this is the original Files\"}" | base64 | tr -d \\n)
peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n docCC -c '{"Args":["initSecret"]}'  --transient "{\"secret\":\"$Secret\"}"

name : 해당 정보 이름
owner : 해당 정보의 소유자
original : 원본 데이터 값

readSecret

peer chaincode query -C mychannel -n docCC -c '{"Args":["readSecret","Secret@1"]}'

readOriginal

peer chaincode query -C mychannel -n docCC -c '{"Args":["readOriginalDetails","Secret@1"]}'

권한이 있기 때문에 문제가 없다.


권한이 없을경우

Org2로 변경

export CORE_PEER_ADDRESS=peer0.org2.example.com:9051
export CORE_PEER_LOCALMSPID=Org2MSP
export PEER0_ORG2_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp
peer chaincode query -C mychannel -n docCC -c '{"Args":["readSecret","Secret@1"]}'

문제가 없는 것 확인

peer chaincode query -C mychannel -n docCC -c '{"Args":["readOriginalDetails","Secret@1"]}'

권한이 없기 때문에 Error


새로운 터미널에서

docker logs peer0.org1.example.com 2>&1 | grep -i -a -E 'private|pvt|privdata'

현재 블록 상황을 볼 수 있다.

About

2019_blockchain_ideaton

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 56.7%
  • JavaScript 43.3%