Ethereum开发笔记1-0: 智能合约
交易(Transaction)是人类社会迈向文明的最重要的一步。以前都是靠抢的。
智能合约的产生背景
Blockchain最重要的、最基础的两个特征
1) 数据不可变(Immutable)
旧的、已经验证过的区块是不可修改的。
2) 在一个分布式网络(P2P)中运行一个共识协议(consensus protocol)
-
拜占庭(Byzantine agreement) 一致算法
-
POW
-
POS
-
RAFT
…
作为一种分布式数据库,它包含了2中独有的特征:
-
通过共识算法验证区块的过程,它不依赖于任何第三方。
-
参与共识的各方彼此不需互相依赖。
智能合约基于上面两个特征之上。
合约的提出
作者 Nick Szabo
Nick把Smart Contract定义为
一组数字形式的承诺(可执行),以及协议方为执行承诺所达成的协议。
简单理解,
智能合约是可用代码描述的、运行在区块链之上的交易过程。
智能合约最重要的特征
本质上”合约”是部署在区块链上的一段代码
或者脚本
。
1) 合约必须强制地、正确地被执行(enforced)。
因为合约运行在各个分布式的Peer之中,自然避免了对第三方的依赖和参与。
当条件满足时,合约自动执行。
2) 交易执行原子化(All or Nothing)。
合约内容的执行,要么全部成功,要么全部失败。
3) 交易历史可审计(auditable)
所以数据必须存储在链上(不依赖于Off Chain的数据)
传统合约和智能合约的对比
传统合约(tracditional) | 智能合约(smart contract) | |
---|---|---|
合约表述方式 | 自然语言 + 法律术语 | 代码(code) |
身份标识 | 署名 | 密码学数字签名 |
争端解决方式 | 法院,律师 | 分布式平台投票 |
合约的托管方式 | 第三方 | 区块链内 |