折腾的根源是因为笔者是零氪党, github release的域名要么被墙,要么对应的亚马逊s3下载服务器龟速。
1.安装环境的变化
笔者的go版本还是按照要求升级了下, 务必设置docker使用国内的镜像源,不然就慢了。
- curl, wget, git以前版本能用, 文档建议用最新版本
- docker >= 17.06.2-ce
- docker compose >= 1.14.0
- go >= 1.13.x
2.折腾的bootstrap.sh下载
使用curl下载并安装
代码语言:javascript复制curl -sSL https://bit.ly/2ysbOFE | bash -s
或者手工下载bootstrap.sh
代码语言:javascript复制wget https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh
chmod u x bootstrap.sh
很遗憾,raw.githubusercontent.com浏览器也打不开,应该是DNS污染了,使用站长工具DNS Ping或ipaddress.com可以获取真实IP, 到/etc/hosts手工加下映射。
代码语言:javascript复制199.232.28.133 raw.githubusercontent.com
执行./bootstrap.sh, github的fabric-samples还顺利,代码都下来了, 下载fabric和ca二进制命令行压缩包时开始10几K,后面就是多少字节,转向的下载地址是github-production-release-asset-2e65be.s3.amazonaws.com, 既然没被墙下载为撒那么慢,开始折腾了。
用站长工具ping返回的国内,港台,美加日等ip在/etc/hosts映射, 依然龟速。
使用迅雷下载,速度好一些,但是最后还是10多K.
使用百度网盘离线下载,解析出错, 可能不支持复杂的URL重定向下载。
有听说一款IDM的下载工具, Internet Download Manager, 说是下载神器, 连百度网盘也可有办法加速, 到吾爱破解下了一个尝鲜, 用windows defender扫描无毒, 惊喜啊,最后能稳定在100多K, 总算能下了,看下bootstrap.sh脚本内容或安装提示日志, 下载地址如下。
两个文件会下载到fabric-samples目录下, 解压会产生一个/bin目录,可以配置到/etc/profile的path(以前bootstrap脚本貌似是使用curl下载的支持续传,现在改为wget所以需要更多手工操作了)
代码语言:javascript复制configtxgen configtxlator cryptogen discover fabric-ca-client fabric-ca-server idemixgen orderer peer
最后一步, 下载最新的镜像。
代码语言:javascript复制./bootstrap.sh -s -b
验证一下安装结果, 老规矩到fabric-samples/frist-network执行
代码语言:javascript复制./bysh.sh down
./bysh.sh up
笔者碰到些问题, 可能是笔者原有的一些镜像, prune无用镜像,手工删除一些镜像之后才顺利执行。
代码语言:javascript复制 failed to calculate dependencies: incomplete package: github.com/hyperledger/fabric-chaincode-go/shim
Fabric 2.0 shim包貌似不再包括在镜像中了, 需要手动自己打包或配置进去。
3.智能合约的API和客户端SDK变化
- 智能合约不再称是shim api了, 称为contract api, 但语法看了下samples下例子,应该和以前差不多.
- java的客户端SDK有个新名字, Gateway SDK for Java, 有阵子没看了, 看了下sample感觉封装顺手些了, 以前要配组织, 连channel, peer用起来蛮麻烦的。
之前Fabric 2.0好像有fabric token的例子, 在正式版貌似没看到了。Fabric肯定是可以用来发币的, 只是没公链天生支持那么好, 全部要自己开发而已, 有空可以研究下。