折腾的根源是因为笔者是零氪党, 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下载并安装

curl -sSL https://bit.ly/2ysbOFE | bash -s

或者手工下载bootstrap.sh

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手工加下映射。

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脚本内容或安装提示日志, 下载地址如下。
https://github.com/hyperledger/fabric/releases/download/v2.0.0/hyperledger-fabric-linux-amd64-2.0.0.tar.gz

https://github.com/hyperledger/fabric-ca/releases/download/v1.4.5/hyperledger-fabric-ca-linux-amd64-1.4.5.tar.gz

两个文件会下载到fabric-samples目录下, 解压会产生一个/bin目录,可以配置到/etc/profile的path(以前bootstrap脚本貌似是使用curl下载的支持续传,现在改为wget所以需要更多手工操作了)

configtxgen  configtxlator  cryptogen  discover  fabric-ca-client  fabric-ca-server  idemixgen  orderer  peer

最后一步, 下载最新的镜像。

./bootstrap.sh -s -b

验证一下安装结果, 老规矩到fabric-samples/frist-network执行

./bysh.sh down
./bysh.sh up

笔者碰到些问题, 可能是笔者原有的一些镜像, prune无用镜像,手工删除一些镜像之后才顺利执行。

 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肯定是可以用来发币的, 只是没公链天生支持那么好, 全部要自己开发而已, 有空可以研究下。