zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

区块链里所说的“智能合约”是什么?

区块智能 什么 合约
2023-09-27 14:28:00 时间
谈到区块链,必然离不开“智能合约”这个词。我们在本系列的第一篇文章中提到“智能合约”(smart contract)是由多产的跨领域法律学者 Nick Szabo 在1995年提出来的

谈到区块链,必然离不开“智能合约”这个词。我们在本系列的第一篇文章中提到“智能合约”(smart contract)是由多产的跨领域法律学者 Nick Szabo 在1995年提出来的,他的定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”那么,我们该如何理解这段话呢?

回顾一下比特币区块链系统中的转账:

Alice 转账给 Bob 100比特币,在比特币区块链系统中是这样记录的:

 区块链研习 | 区块链里所说的智能合约是什么?

本质上,这就是一个合同。这个合同里面规定了 Alice 要转给 Bob 100比特币,该合同立即生效。注意,里面有一个“解锁信息”,这个“解锁信息”本质上就是 Alice 证明自己是 Alice 的地址持有者时需要提交的一个信息。 

显然,像比特币区块链系统里面,纯UTXO模式的这种合同用处是很有限的。首先,比特币是一个独立运行的封闭系统,它的转账脚本没有提供和外界进行交互的接口。所有信息(这里主要是解锁信息)只能在脚本提交到区块链之前定死,之后就只能按照固定方式运行。这对于“合同”来说是不符合实际应用的。

在我们实际生活中,一个完整的合同制定——执行流程是按照如下方式随着时间流逝而进行的:

区块链研习 | 区块链里所说的智能合约是什么?

其中,条件的达成通常是一个外部输入的事件,这意味着,我们实际生活中的合同通常是“事件驱动”型的。这个“事件”是否发生通常不是区块链上的数据能够判断出来的,而是依靠事件发生的时间点,通过链外输入数据的方式实现。 

以电子商务为例,Alice 在某宝的某个商家购买了一台笔记本电脑,当 Alice下单成功的那一刻,实质上就生成了一个合同。这个合同包含了 Alice 需要在多长时间内付款到第三方平台(事件1)。然后卖家看到 Alice 付款后需要发货,当 Alice 收到货以后需要点击确认收货(事件2),完成整个合同(在不考虑售后的情况下)。

在这个合同的执行过程中,事件1由于是一个纯粹的金融活动,已经高度的虚拟化,能够实现自动发现事件自动触发。而事件2则是一个在现实世界中发生的活动,需要我们“点击确认收货”来把这个事件的发生同步到虚拟世界中,这个“点击确认收货”就是虚拟世界中的事件2。所以,对于某宝的购物合同而言,事件1实质上是 Alice 是否转账到平台,事件2是 Alice 是否点击确认收货。因此,在这个合同中,预留了一个和外部交互的接口——确认收货。

除了和外部的交互能力外,比特币转账合同(脚本)的另一个重要缺陷是它不是图灵完备的。这句话对于非计算机专业的人来说可能不太好理解,我们可以简单的理解为它没有循环能力和复杂的条件控制能力。

合同的循环能力在我们现实世界中是很常见的,例如我们和电信运营商签署的移动电话服务合同,通常就是一个循环合同。这种合同以自然月为单位,每个月自动循环执行。还有类似的企业间签订的长期采购合同,都是一种不断循环的合同。合同中规定的事件(或时间点)全部达成以后,自动循环回第一步,重新执行。 

而复杂的条件控制能力就更常见了——合同中的违约条款就是条件控制能力。事件达成怎样,没有达成如何执行违约条款等,这些都需要合同拥有复杂的条件控制能力。 

比特币中的交易是使用比特币区块链底层平台定义的一套脚本语言来写的,由于当初比特币区块链系统是按照一个数字货币的模型进行设计的,因此它并不需要这些复杂的能力。但是如果我们需要区块链技术在其他商业场合进行应用,很多时候就需要这些能力。比如我们利用以太坊平台来实现某个业务,那么整个流程是这样子的:

区块链研习 | 区块链里所说的智能合约是什么?

目前,关于智能合约的争议仍然是很多的。主要包含两方面:

1、合同本身是否是双方真实意思的表达

a)在现实世界中,我们撰写的合同除了受合同细节的约束外,还受到了外部法律和行业惯例的约束。而在智能合约中,外部法律和行业惯例如果不能严格的体现在合同中,那么合同就不是双方真实意思的表达了。

b)在现实世界中,我们撰写的合同通常是由律师或者法律专家来帮我们完成的。不同水平的法律专家,其完成的合同严谨程度是不一样的。同样在智能合约中,我们撰写的合同是由程序员帮我们完成的,程序员的水平决定了合同的严谨性。还有一点,程序通常都会有bug,这些bug是否会导致严重的损失,然而在bug没有被发现之前,都不得而知。

2、合同的仲裁机构是谁

a)在现实世界中,我们通常都会在合同中约定一旦发生纠纷,请哪个仲裁机构对合同进行仲裁。而在区块链中,尤其是公有链平台上的智能合约,一旦我们认为合同没有表达双方真实的意思,我们无法找到一个仲裁机构对合同进行仲裁。

b) 在联盟链中,由于各方各个节点的身份都是已知的,现实世界中的司法机构是可以介入智能合约纠纷的。但是这种介入有时候可能会影响整个联盟链系统的稳定性,这种情况下,怎样介入是一个技术问题,而这个技术问题又可能会带来新的bug。

本文作者:敖萌 本文转自雷锋网禁止二次转载,原文链接
DAPP智能合约系统开发区块链智能合约系统模式开发 DApp智能合约系统开发,区块链智能合约app开发,DApp智能合约软件开发、现成DApp智能合约模式系统、DApp智能合约开发搭建、区块链智能合约系统定制开发、DApp智能合约开发需求及费用。 区块链智能合约(Smartcontract)是一种特殊协议,旨在提供、验证及执行合约。具体来说,智能合约是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。
区块链之旅(三)智能合约与共识机制 ​ 智能合约是一套以数字形式定义的约定,包括合约参与方可以在上面执行这些约定的协议。智能合约的基本思想是,各种各样的合约条款可以嵌入到我们使用的硬件和软件中,从而使得攻击者需要很大的代价去攻击。
区块链的原理与应用? -2 接着上一篇.上一篇还没有输出,其实加入了index在实体类中. package com.sha256.sha256.bean; import com.sha256.sha256.utils.SHA256Util; import lombok.
区块链的原理与应用? -1 读完了 区块链 领导干部读本 , 以及看了一部分 区块链原理,设计与应用 , 通过对区块链的一些了解跟随网络博客完成demo 创建区块链 区块链就是一串或者是一系列区块的集合,类似于链表的概念,每个区块都指向于后面一个区块,然后顺序的连接在一起.
区块链开发公司介绍区块链的基本原理 在实现上,首先假设存在一个分布式的数据记录账本,这个账本只允许添加、不允许删除。账本底层的基本结构是一个线性的链表,这也是其名字“区块链”的来源。链表由一个个“区块”串联组成,后继区块记录前导区块的哈希(Hash)值。
一个适合区块链新手的以太坊DApp开发教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1 一个用区块链、星际文件系统(IPFS)、Node.
由于区块链不可篡改的特性,智能合约一旦部署在区块链上,其执行的逻辑就无法再更改。长期来看,这个重要的特性反而限制了智能合约的弹性和发展。 接下来要介绍如何设计及部署合约才能让合约在需要时可以更新。
追讨失窃代币的区块链性质之争:以太坊社区内部的代码分歧详解 ETC与ETH的分歧阴影,在安全事故频发的背景下,于以太坊社区内部依然挥之不去。区块链不可篡改的特性是否不可更改?或是厘清责任主体进行资金追讨?
 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力。