{"id":13462558,"url":"https://github.com/itheima1/hyperledger","last_synced_at":"2025-03-25T01:32:19.203Z","repository":{"id":40744677,"uuid":"128023646","full_name":"itheima1/hyperledger","owner":"itheima1","description":"区块链3.0 -\u003e 超级账本hyperledger fabirc教程 v1.1","archived":false,"fork":false,"pushed_at":"2019-11-05T07:37:07.000Z","size":12,"stargazers_count":130,"open_issues_count":3,"forks_count":59,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-10-29T11:11:42.821Z","etag":null,"topics":["blockchain","fabirc","hyperledger"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itheima1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-04T07:22:07.000Z","updated_at":"2024-10-29T04:25:18.000Z","dependencies_parsed_at":"2022-07-12T18:03:11.855Z","dependency_job_id":null,"html_url":"https://github.com/itheima1/hyperledger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itheima1%2Fhyperledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itheima1%2Fhyperledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itheima1%2Fhyperledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itheima1%2Fhyperledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itheima1","download_url":"https://codeload.github.com/itheima1/hyperledger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245382197,"owners_count":20606169,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","fabirc","hyperledger"],"created_at":"2024-07-31T12:00:51.853Z","updated_at":"2025-03-25T01:32:18.958Z","avatar_url":"https://github.com/itheima1.png","language":null,"funding_links":[],"categories":["Others","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"视频教程\nhttps://pan.baidu.com/s/1mFMPIXTSR1-wuRaLm7y6hw\n\n# 手把手教你hyperledger fabirc v1.1 \n\n\u003e 网上大多数hyperledger fabric的教程都是基于0.6或者1.0等比较老的版本, 主要采用go语言开发chaincode, 采用java-sdk去调用链码.\n\n\u003e从fabirc1.1开始,官方推荐使用nodejs去开发链码,node-sdk调用代码. \n传智播客物联网+区块链学院带您使用nodejs开发hyperledger.\n\n\n## 0.环境搭建准备工作\n建议使用ubuntu服务器,这里我直接使用了阿里云的乞丐版服务器,配置如下:\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/421F84B5F00E4D1AADD0DDA109FEDA9D/136)\n\n\n操作系统为Ubuntu 14.04(64位)为保证后续步骤一致,请使用跟我相同的版本.\n\n\n\n## 1. 远超登录终端准备\n用putty或者xshell远超连接进去\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/F34684F24A1541C49EDAEE8E98D5D5A9/147)\n\n\n\n## 2. 安装git\n``` shell\napt-get update\napt-get install git\n```\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/B81421F12EF749859012A426ED493736/159)\n\n\n## 3. 安装docker-ce\n请不要直接apt安装旧版本的docker\n\n[阿里云安装docker教程](https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.5d4e1991URD8Ia)\n\n```shell\n# step 1: 安装必要的一些系统工具\nsudo apt-get update\nsudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common\n# step 2: 安装GPG证书\ncurl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -\n# Step 3: 写入软件源信息\nsudo add-apt-repository \"deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable\"\n# Step 4: 更新并安装 Docker-CE\nsudo apt-get -y update\nsudo apt-get -y install docker-ce\n```\n\n安装完毕后效果如下: \n查看版本\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/8B8AA89DF747458CBAA67B3A0925CF19/195)\n\n\n## 4. 设置阿里云docker加速服务\n\n从docker官方的镜像服务器里面下载image非常慢, 使用阿里云的好处是可以拥有阿里的镜像加速服务, 速度可以达到百兆级别.\n如果不配置也没有问题~ 多等一段时间就行了.\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/9418AB5F29C24A3195155A9994471D2A/179)\n\n\nubuntu14.04系统采用不支持systemctl\n``` shell\n#重启docker服务\nservice docker restart\n```\n\n\n## 5. 安装hyperledger的工具和docker镜像\n\n点击官方[参考文档](http://hyperledger-fabric.readthedocs.io/en/release-1.1/samples.html#binaries)\n\n* 注意: 按照官方文档执行, 需要全局翻墙才行\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/BB783CDD52B842A4A1BDAE19923FBA5E/225)\n\n* 安装完检查目录结构和docker镜像:\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/AC3A8997B51C4C65AF9E1D4CF7F3FCD1/232)\n\n\n## 6. 下载官方的示例代码 fabric sample\n\n``` shell\ngit clone https://github.com/hyperledger/fabric-samples.git\n```\n\n\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/DA434F1251A342F99E1BACC24C208524/240)\n\n\n\n## 7. 切换到first-network目录\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/0F0DA979549046F488AF91EDAC4D4CB5/247)\n\n\n\n## 8. 启动fabric ledger的第一个网络\n运行如下命令:\n```shell\n#1. 配置环境变量, fabirc的二进制工具\nexport PATH=/root/bin:$PATH\n#2. 生成hyperledger fabric的各种区块链配置\n./byfn.sh -m generate\n#3. 安装docker-compose\ncurl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose\nchmod +x /usr/local/bin/docker-compose\n参考文档  https://github.com/docker/compose/releases\n#4. 启动first-network\n./byfn.sh -m up\n```\n\n\n## 9. 修复阿里云服务器网络错误的问题\n(腾讯云不存在这个问题,自己装ubuntu也不存在这个问题)\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/A34332D869CC472C97B03FEFACCECD66/272)\n\n\u003e/etc/resolv.conf \n注释掉 options timeout:2 attempts:3 rotate single-request-reopen\n重新执行\n```shell\n./byfn.sh -m down\n./byfn.sh -m up\n```\n\n就能够正常启动了.\n\n\n\n## 10. 验证网络搭建\n接下来你能看到,peer节点启动,通道建立, 加入通道, 设置锚节点,实例化链码,调用链码等一系列的操作.如果你看到下面的图,恭喜你!\n你的网络搭建好了.\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/BDA5E5DA03D14EF499B1D5896B673B19/283)\n\n\u003e看到上面的截图,说明你的开发环境已经准备好, 接下来我们就可以搭建自己的组织结构,编写nodejs的链码了.\n\n\n\n## 11. 停止网络请使用命令\n\n``` shell\n./byfn.sh -m down\n```\n\n\n\n## 12. 切换到basic-network目录\n\n来到fabirc-sample目录的basic-network文件夹\n\n\n\n## 13. 修改 basic-network的docker-compose.yml\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/14483191ED1C41A7991A62E954BE79BD/298)\n\u003e 说明: 启用开发者模式,这样加快调试部署,减少资源开销\n\u003e 开启7052端口, 开发模式下不使用tls会减少出错的概率,生产环境需要启用tls\n\n\n\n## 14. 修改 脚本 `start.sh`\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/106A58A051F846CEACDE25E84C92C1B2/313)\n增加cli节点, cli是方面我们执行控制指令的终端. 我们会使用他与各个peer节点进行交互.  后面这些手动的命令,会通过nodejs的api来调用\n\n\n\n## 15. 启动脚本 'start.h'\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/EAD0F21FA9394D5CB8E6394758C2BB26/326)\n\n\u003e  可以看到启动了ca节点,peer节点,order节点,cli节点和couchdb,创建了channel,peer加入了channel\n\n\n## 16. 查看状态\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/FAF8C3A10DF14B47B8AF757A6FBE8989/337)\n\n```shell\ndocker ps\n#可以看到当前运行的docker容器, peer,order,couchdb,ca,cli节点\ndocker exec -it bash \n#进入cli容器\npeer channel list\n#查看当前peer加入的channel\n```\n\n\n\n## 17. chaincode编写需要使用nodejs\n\n请安装\u003e8.0版本的nodejs\n\n官网连接 [点我直达](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions)\n```shell\ncurl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -\nsudo apt-get install -y nodejs\n```\n\n\n\n## 18.编写nodejs的chaincode\n```shell\n#1.创建mycc文件夹\nmkdir mycc\n#2. 初始化package.json文件\nnpm init \n#3. 修改package.json文件\nnpm install --save fabric-shim --registry=https://registry.npm.taobao.org\n```\n成功后 目录结构如下:\n终于package.json文件\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/91A4EDDF81814883A9EE7572AB93DC6E/374)\n\n\n\n\n## 19. 编写nodejs链码\n```javascript\nconst shim = require('fabric-shim');\nconst Chaincode = class{\n    //链码初始化操作\n    async Init(stub){\n        var ret = stub.getFunctionAndParameters();\n        var args  = ret.params;\n        var a = args[0];\n        var aValue = args[1];\n        var b = args[2];\n        var bValue = args[3];\n        await  stub.putState(a,Buffer.from(aValue));\n        await  stub.putState(b,Buffer.from(bValue));\n        return shim.success(Buffer.from('heima chaincodinit successs'));\n    }\n    \n    async Invoke(stub){\n        let ret = stub.getFunctionAndParameters();\n        let fcn = this[ret.fcn];\n        return fcn(stub,ret.params);\n    }\n    //查询操作\n    async query(stub,args){\n        let a = args[0];\n        let balance = await stub.getState(a);\n        return shim.success(balance);\n    }\n\n};\nshim.start(new Chaincode());\n```\n\n\n## 20. 把chaincode注册给peer\n他们之间通过grcp协议通信\n```shell\nCORE_CHAINCODE_ID_NAME=\"mycc:v0\"  npm start -- --peer.address grpc://192.168.0.1:7052\n```\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/94BCB93C2A2C4187865814C0844C15AD/390)\n\n\n\n## 21. 在peer上install安装链码\n这是peer上chaincode的生命周期\n\n```shell\nCORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode install -l node -n mycc -v v0 -p /opt/gopath/src/github.com/mycc/\n\n```\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/5BB063BA7E4449F2BCE3752F44F2FA86/406)\n\n\n\n## 22. 在peer上实例化链码\n\n```shell\nCORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode instantiate -l node -n mycc -v v0 -C mychannel -c '{\"args\":[\"init\",\"zzh\",\"100\",\"czbk\",\"100\"]}' -o 192.168.0.1:7050\n```\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/41BD7FC27F664B6D972E7C6BF048042F/413)\n\n\n## 23. 测试链码调用\n\n\n```shell\nCORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode invoke -n mycc -C mychannel -c '{\"args\":[\"query\",\"zzh\"]}' -o 192.168.0.1:7050\n```\n\n![image](https://note.youdao.com/yws/public/resource/95c087db9c2f4249616a4058c521ca13/xmlnote/6E1AB1E615674B20AF6025CB40526D15/422)\n\n可以查看到zzh账户上有100块钱.\n\n\n\n## 24. 同理大家可以实现转账的操作.\n\n试着自己实现一下transfer方法吧\n\n## 25. 停止网络使用\n``` shell\n./stop.sh ./teardown.sh\n```\n\n\n\n\n## 26. 查看环境是否清理干净\n``` shell\ndocker ps\n```\n\n\u003e 无内容就说明环境清理干净\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitheima1%2Fhyperledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitheima1%2Fhyperledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitheima1%2Fhyperledger/lists"}