区块链技术一、超级账本简介是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。由Linux基金会的开源项目,全称是HyperledgerFabric)是区块链的商用平台。开源地址:。二、为什么用超级账本?会员众多:包括Cisco、IBM、Intel、J.P.Morgan、荷兰银行、SWIFT等。区块链技术拥抱监管和审查。良好的扩展性,可插入各种功能模块。成员管理身份管理网络隐私保密和审查智能合约JAVAGONODEJS其它在fabric中成为链码在沙箱中运行链码语言支持事件区块链技术适合企业级应用传统的业务模型很难做到跨机构的交易被一个互信的机构监督执行。每个交易方都有自己独立的账本。发生交易时各自更改,造成账本同步的成本高昂且效率低下。仅有少数的中心系统,所以商业网络比较脆弱。fabric提供了授权维护账本的机制,因此相对保证了数据的私密,公司作为上市主体,以盈利为目的,不可能所有的数据都公开。那么超级账本作为联盟链供企业使用比较合适。企业级区块链四大平台要素:1.共享账本2.共识3.隐私和保密4.智能合约。当前公链比如以太坊eos等其它三点都能满足唯独隐私没法保证,另外效率普遍不高,没有最终确定性,又是被极客们主导的,不符合商业主流趋势,从而也限制了企业性质的应用。企业级商用区块链网络比较适合使用联盟链和许可制。这样在一个限定的范围内,只有授权的节点和用户才能参与到交易和智能合约的执行中来,而任何匿名节点或非授权用户均被拒绝服务。从团体联盟的角度来看,这增加了区块链网络的安全可靠。当前,在欧美主流的区块链应用大部分是行业链或者是联盟链,也就是某一个行业的上下游,或者核心企业联合起来,一起构建的半公开化的区块链。从这个角度讲,超级账本具备成为未来最主要商用区块链技术平台的潜力,值得技术开发人员花时间和精力进行学习和研究。商用场景区块链技术金融对银行、保险、清算、股权登记交易、信用评级、公证等领域,既需要绝对的可信任,也需要隐私保密,所以特别适合区块链应用。比如可以模仿数字货币交易所做一套区块链股权登记和交易平台。产业互联网供应链提供深度回溯、查询等核心功能,实现信息公开透明,出了问题可以依此来追责。附加值较高的食品、药品和疫苗、零部件生产检测结果等都可以使用区块链。*共享模式传统行业三、超级账本特性用go语言开发更适合联盟链需要在容器里运行区块链技术应用场景:构建商品溯源、贸易融资、信用证、供应链以及企业贷款是对传统区块链模型的革新提供一个针对身份识别、可审计、隐私安全和健壮的模型可插拔的共识算法及共识模型智能合约四、Fabric安装和调用Fabric依赖docker容器,因此需要先安装和配置docker.(请参考docker的章节)下载超级账本源代码1.如果没有安装git则执行sudoaptinstallgit2.通过git安装部署调用下载Docker镜像文件区块链技术进入目录:cdfabric/scripts修改读写权限chmod+xbootstrap.sh改写.sh文件Mac:sed-i'''s/curl/#curl/g'bootstrap.sh其它:sed-i's/curl/#curl/g'bootstrap.sh执行下载:./bootstrap.sh体验部署过程下载一个简单的例子gitclone进入目录并执行cdfabric-samples/basic-networkdocker-compose-fdocker-compose.ymlup-d查看启动的容器区块链技术会输出以下内容:localhost:basic-networkclarity$dockerpsCONTAINERIDIMAGENAMESefddfbf4fc0ahyperledger/fabric-peer:x86_64-1.0.0peer0.org1.example.com606d13c1e7a2hyperledger/fabric-couchdb:x86_64-1.0.0couchdbd8c870db8634hyperledger/fabric-ca:x86_64-1.0.0ca.example.comc6f25a5e6fd6hyperledger/fabric-tools:x86_64-1.0.0clia5f6331c5bc5hyperledger/fabric-orderer:x86_创建通道,加入通道加入通道peerchanneljoin-bmychannel.block创建通道peerchannelcreate-oorderer.example.com:7050-cmychannel-f/etc/hyperledger/configtx/channel.tx切换环境到管理员用户的MSP,进入Peer节点容器peer0.org1.example.comdockerexec-it-eCORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msppeer0.org1.example.combash区块链技术退出Peer节点容器exit进入cli容器安装链码和实例化进入容器dockerexec-itcli/bin/bash安装链码peerchaincodeinstall-nmycc-vv0-pgithub.com/chaincode_example02实例化链码peerchaincodeinstantiate-oorderer.example.com:7050-Cmychannel-nmycc-vv0-c'{Args:[init,a,100,b,200]}'链码调用和查询peerchaincodequery-Cmychannel-nmycc-vv0-c'{Args:[query,a]}'模拟转账从“a”转移10到“b”:peerchaincodeinvoke-Cmychannel-nmycc-vv0-c'{Args:[invoke,a,b,10]}'在分别查询a和b的zhipeerchaincodequery-Cmychannel-nmycc-vv0-c'{Args:[query,区块链技术]}'peerchaincodequery-Cmychannel-nmycc-vv0-c'{Args:[query,b]}'Fabric初体验配置bin目录的path为了让系统能够在任何地方识别bin里的内容,需要配置path:*通过编辑器打开这个文件~/.bash_profile*添加一行exportPATH=上一步下载的路径/bin:$PATH*再执行source~/.bash_profile让配置生效最后,该脚本会将DockerHub中的HyperledgerFabricdocker映像下载到本地Docker中,并将其标记为“最新”。注意:如果出现这种错误:ERROR:fororderer.example.comCannotcreatecontainerforserviceorderer.example.com:b'Conflict.Thecontainername/orderer.example.comisalreadyinusebycontainer解决方案是:输入dockerps-a列出所有运行中的容器如果能搜索出容器,则执行dockerps-qa|xargsdockerrm然后再执行docker-compose-fdocker-compose.yamlup-d如果出现这个信息表示成功启动了fabric网络区块链技术安装示例文件和images等下载hyperledger/fabric-samples签出适当的版本标签将指定版本的HyperledgerFabric二进制文件和配置文件安装到fabric-samples存储库的根目录中下载指定版本的HyperledgerFabricdocker镜像执行curl-sSL|bash-s1.3.0命令解析:执行bootstrap.sh文件该脚本将下载并提取设置网络所需的所有特定于平台的二进制文件,并将它们放入您在上面创建的目录中。其中bin目录它包含了以下文件:cryptogen,configtxgen,configtxlator,peer,orderer,idemixgen,andfabric-ca-client部署网络区块链技术配置环境变量CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/mspCORE_PEER_ADDRESS=peer0.org1.example.com:7051CORE_PEER_LOCALMSPID=Org1MSPCORE_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创建通道和创世区块根据之前生成的通道配置文件,创建通道exportCHANNEL_NAME=superchannelpeerchannelcreate-oorderer.example.com:7050-c$CHANNEL_NAME-f./channel-artifacts/channel.tx--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加入通道peerchanneljoin-bmychannel.block更新锚点peerchannelupdate-oorderer.example.com:7050-c$CHANNEL_NAME区块链技术安装链码所有准备完成之后,开始安装链码。分别支持三种语言:Golangpeerchaincodeinstall-nmycc-v1.0-pgithub.com/chaincode/chaincode_examp