转载请注明原文地址 http://www.zgljl2012.com/2016/09/21/qu-yu-lian-shi-jian-di-yi-bu-qu-yu-lian-kai-fa-huan-jing-da-jian/

区域链光速发展,在许多人的期许下,已经成为了互联网下一个革新点。区块链会成就的未来价值互联网,是新时代的基石。

IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通过该平台,用户能够免费、快速创建基于Hyperledger Fabric的多节点区块链、并在自己的链上编写智能合约。

通过IBM的SuperVessel,我们能接触区块链,能自己部署和执行智能合约;通过Github上的开源项目,也就是上面提到的Hyperledger Fabric,我们能去了解区块链技术如何实现。

所以,加油咯。

使用IBM超能云免费构建自己的区域链

下面介绍一下如何通过SuperVessel来构建自己的区域链平台。

区域链服务公测地址:http://crl.ptopenlab.com:8800/bc

进入网址后,使用自己的邮箱注册即可。

然后是到主页点击中间的那个 “GIVE ME A BLOCKCHAIN”

接下来就是选择Consensus Plugin(共识插件)和Size(区块链网络节点数量)。

Consensus Plugin是Hyperledger Fabric中共识插件,有两种:

  1. pbft是 微软论文PBFT共识算法的一个实现;
    2.noops 用于开发和测试,它没有共识机制,但是会处理所有consensus message,所以如果要开发自己的consensus plugin,从它开始吧

我选择的是pdft,4个节点。提交后就进入了自己的区块链监控面板。

右侧是网络面板,展示申请到的区块链网络信息,我的是4个节点;左侧是智能合约面板,包括智能合约的管理和部署;点击右侧面板右上角的望远镜,则可以实时监控各节点的日志信息。最下方是区块链面板,展示当前区块链的整体情况,初始状态下只有一个区块。

在智能合约面板里,已经有了2个智能合约作为示例,分别为map和chaincode_example02。其中map合约可以实现键值对(key-value)的存储,chaincode_example02合约可以模拟两个人的转账和查询。

部署合约

点击chaincode_example02合约对应的Deploy(部署)按钮,并填写合约的初始化值,包括合约名初始函数初始参数

该合约初始函数为init,初始参数需按格式填写,如["a","100","b","200"]表示注册两个人a和b,分别给他们100单位和200单位。

点击Deploy按钮,该合约将部署在你的区块链中,该过程大约需要20~40秒时间。当区块链面板出现一个新区块,通常表示合约已部署完成。

部署过程中,右侧面板还会有动画。

下面,我们来看一下智能合约。

智能合约是 1990s 年代由尼克萨博提出的理念,几乎与互联网同龄。由于缺少可信的执行环境,智能合约并没有被应用到实际产业中,自比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境,以太坊首先看到了区块链和智能合约的契合,发布了白皮书《以太坊:下一代智能合约和去中心话应用平台》,并一直致力于将以太坊打造成最佳智能合约平台,所以比特币引领区块链,以太坊复活智能合约。

调用合约

部署完成后,在智能合约管理面板的My Deployment(我的部署)标签下查看已部署的合约实例。

点击Action下方的Invoke按钮调用智能合约,并填写调用的方法名和相应参数(不同合约的方法名和参数含义不同,具体与合约内容相关哦)。如对该合约,调用invoke方法名,填写参数[“a”,”b”,”50”],表示a给b转50个单位。

点击Submit完成调用,可以看到下方出现了新的区块:

智能合约

智能合约程序不只是一个可以自动执行的计算机程序:它自己就是一个系统参与者。它对接收到的信息进行回应,它可以接收和储存价值,也可以向外发送信息和价值。
这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。

通过自己实际操作,invoke操作两个用户之间的“转账”,是不是就能更理解这段话了?

查询合约

调用完成后,接下来你可以查询合约执行结果。仍然在My Deployment标签下,点击Action下方的Query按钮查询智能合约,并填写查询的方法名和相应参数。如选择query方法名,填写参数[“a”],表示查询a的当前单位。

点击Submit后可以看到上方出现了一个黑框框,输出a的当前单位为50。

好了,接下来可以继续操作该合约,观察区块链情况。

总结

相信通过以上操作,你也已经大概了解了什么是区块链,什么是智能合约,以及区块链是用来干什么的。从上面的例子中,我们可以看出:区块链是用来记录合约的动作变化的。

另外,可以看一下区块链部分,用鼠标点击一个区块,可以看到弹出来的此区块内容:

type是操作内容,invoke是执行,depoly是部署。每个动作都记录在了区块链上,而网络中(我们的四个节点),每个节点又都记录着区块链。无论我们在哪个节点上操作,我们的操作都会被记录到区块链中,从而实现了区块链的不可篡改、分布式、去中心化等性质。

感兴趣了话,或者说,更感兴趣了的话,就去Github上star一下、fork一下、clone一下Hyperledger Fabric,然后用Go或JavaScript来编写自己的智能合约,然后再把它上传到你的区块链网络中吧!

参考资料:

  1. 从零开始,5分钟创建并玩转属于自己的区块链(图文攻略)
  2. IBM HyperLedger fabric 简述
  3. Github - hyperledger fabric
  4. 智能合约