第9章 支持多种语言的智能合约

智能合约(smart contract)最早是1996年尼克·萨博(Nick Szabo)在他的文章“Smart Contracts:Building Blocks for Digital Markets”中提出来的:

A smart contract is a set of promises,specified in digital form,including protocols within which the parties perform on these promises.

维基百科对智能合约做了扩展:

A smart contract is a computer protocol intended to facilitate,verify,or enforce the negotiation or performance of a contract.Smart contracts were first proposed by Nick Szabo in 1996.

Proponents of smart contracts claim that many kinds of contractual clauses may be made partially or fully self-executing,self-enforcing,or both.The aim with smart contracts is to provide security that is superior to traditional contract law and to reduce other transaction costs associated with contracting.

概括起来,智能合约有如下几个特性。

1)智能合约必须是一种合约。合约是平等的当事人之间执行约定内容的协议。参与方对合约的内容要达成一致,并且遵守合约执行的结果。相比于传统合约,不同的地方在于:智能合约是“数字形式”的,需要转换成计算机可读和可执行的代码。

2)智能合约是部分或者完全自我执行(self-executing)和自我强制(self- enforcing)的:自我执行是指合约能立即自动生效。自我强制是指合约的参与方能够根据最优的结果自行决定是否参与或者终止和关联方的关系,继续参 与得不偿失才会终止合约。整个决策过程是不需要可信的第三方干预的,这是一种有用的特性,因为第三方参与仲裁会有一些额外的开销。这是一种防欺诈的协议, 参与方会计算违约的得失,做出理性的选择,客观上避免了任何一个参与方欺骗对方。

3)智能合约需要安全的运行环境:智能合约的运行由相关方执行或者调用执行完成约定的业务逻辑,运行环境是安全可靠的,执行的结果能在各方达成一致。

4)只有智能合约才能修改账本数据:账本数据是各个节点各自独立维护的分布式数据,智能合约执行的结果达成一致后才能修改账本数据,这里的修改是指追加数据,数据本身是不可篡改的。

本章介绍Hyperledger Fabric 1.0的智能合约,即链码(Chaincode)。链码是独立可运行的应用程序,运行在基于Docker的安全容器中,在启动的时候和背书节点建立gRPC连接,在运行过程中通过接口和背书节点通信。链码 是线下开发好再部署到链上的,部署的时候需要一定的权限,成功部署就代表了链码的业务逻辑是关联方已经达成一致的。达成一致的过程其实是在线下完成的,线 上的共识过程只是权限检查和业务逻辑的执行,并没有线上审核的流程。也就是说,如果链码并没有真正地做线下的确认,只要有部署的权限,也是可以直接上线 的。目前智能合约部署的权限管理完全是基于成员管理的机制,这种权限管理的粒度是很粗的,不能做到完全像RBAC一样精确到某个资源。成员管理的内容参考 前面相关的章节。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1058

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐