美文网首页区块链区块链研习社
区块链研习日志:IBM Fabric 智能合约初探

区块链研习日志:IBM Fabric 智能合约初探

作者: 智可及 | 来源:发表于2017-05-31 23:39 被阅读135次

作为承上启下的重要一环,智能合约在区块链技术中是一个不可替代的存在。而且就比特币的设计来看,智能合约是中本聪提出的最有前瞻性的概念,因为如果设计一种数字货币(或账本),共识算法是用来保证全网账本一致,密码学是用来保证交易安全,但是智能合约却并非必要的选项。

区块链技术分布图

那智能合约的真正作用是什么?为什么说是智能合约让区块链技术真正成为所有金融巨头看好,有潜力达到互联网级别的技术?

这就要谈到智能合约智能在哪。简单来说,智能合约就是一套可编程的协议,无需人为介入即可自动运行。

举个例子,如果你一个不是很熟的朋友资金周转不灵想你借一大笔钱,你肯定是拒绝的,即使他没什么不良记录,即使他愿意将同等价值的房子做抵押,即使他在欠条上写明了归还时间,为什么?

因为你不能保证合同一定会被执行,如果他没有履行合同,即使你最后能追回他的抵押物,你也要通过打官司的手段,花费无数人力物力,但是最好的结果也只是追回损失而已。

但是区块链的世界不同,如果你两人把抵押物,还款细则均写成智能合约,那过期未还款的结果只能是智能合约执行程序,抵押物或其他抵押条件直接转到你的名下。

发现了么?智能合约极大程度的降低了交易双方的信任成本,程序代码替代了法院,而且比法院做的更公平更彻底。

润米咨询的创始人刘润说过,金融的本质是“风险买卖”,任何一种“新金融”想要成功,都应该基于更高效的“风险买卖”。就这一层面来看,智能合约的出现确实让区块链技术走向了一个新的高度。不仅如此,区块链的另一特性,信息公开,和智能合约结合以后,会衍生出更多应用场景,使区块链技术取代现有的政府、银行做背书促成交易的模式,而进入轻量的一对一的“执行”金融时代。

但就目前来看,智能合约系统的完成度还远远不够,能够实现的功能也有限。但是早一步对智能合约有所了解可以帮助我们抢夺未来世界的先机。

这周我学习到一个平台的使用方法(学自区块链研习社的课程),可以让不会编程的人也可以管中窥豹,一探智能合约的部署程序,下面就简单介绍一下整个流程。

首先声明一下,这个平台是SuperVessel基于IBM的区块链开发平台Hyperledger Fabric制作的简易的区块链开发体验工具,注册以后可以免费使用,感兴趣的朋友可以一起试试看。

首先register然后log in,然后点击 MY DASHBOARD

首先点击Chains来新建一条链

然后输入链的信息,从上到下依次是名字,共识算法(包括默认的noops(NoOperations)不做任何共识,和经典的拜占庭将军共识算法pdft),节点数(这个链里面有几个账号可以接收和发出信息),成本,简述。我们选择pbft还有6个节点,然后继续

点击chain1进入区块链视图

从上到下依次是总览节点、节点日志、区块视图(暂时就孤零零一个创始区块)及程序接口,暂时不用管它们,右下方有三个功能键分别是Deploy部署(或者叫添加)一个合约,Invoke调用一个已有功能,Query查询数据。我们先来部署一个新合约

点击Deploy得到这样的图,从上到下依次是,智能合约(内置两种智能合约:1、map1.0是输入一个问题获得一个答案,比如可以实现著名的“hello,world”。2、chaincode_example02可以实现转账功能)合约的名字

合约功能init(即是初始化)

语句(可以且只可以输入两个账户,按照账户,金额,账户,金额的顺序赋值)

我们按图输入,然后滑到区块视图

因为我们给账户赋值,我们得到一个新的区块1,点击它可以看到他的信息。接下来我们执行转账操作,点击invoke

类似的,执行transfer功能,["转出账户","转入账户","金额"], 点击invoke

我们得到区块2

也可以查询信息,然后我们需要检查一下是不是到账了,点击query功能键

先查一下higer 有没有转出5000给我

余额5000,确实转出了,那我有么有收到呢

恩,5500我也收到了,看来整个合约没有大问题。经过了若干类似的操作以后,你就会发现你的区块真的成为一条链了

总结一下

1、智能合约即是一段达到条件自动执行的编码,与比特币的金融功能结合后会极大的降低金融交易成本。

2、智能合约与信息公开的特性结合后,会革命性地改变几乎所有行业。

3、亲手试一试创造一个智能合约是理解区块链技术入门的最好方式之一。

相关文章

网友评论

    本文标题:区块链研习日志:IBM Fabric 智能合约初探

    本文链接:https://www.haomeiwen.com/subject/bppjfxtx.html