智能合约
定义
智能合约是一套以数字形式定义的约定,包括合约参与方可以在上面执行这些约定的协议。智能合约的基本思想是,各种各样的合约条款可以嵌入到我们使用的硬件和软件中,从而使得攻击者需要很大的代价去攻击。
特点:
计算机程序的if-then语句
条约达成时自动执行
数字化的合同
计算系统自动执行条款
特征:
数据透明:区块链上的数据对参与方是公开透明的,数据处理也是公开透明的。
不可篡改:区块链本身的所有数据不可篡改,区块链上的智能合约代码以及运行产生的数据输出也是不可篡改的。
永久运行:支撑区块链网络的节点往往达到数百甚至上千,部分节点的失效并不会导致智能合约的停止,其可靠性理论上接近于永久运行。
构成
参与方:参与数字资产交易的人或是组织。
资产:具备一定价值而作为交易标得地事物,可以是具体的可以是抽象的。
交易:参与方对资产进行查询,转移等操作的过程。
账本:记录资产的归属及其交易事实的数据库。
设计流程
多方用户共同参与,制定智能合约。
合约通过P2P网络扩散并存入区块链。
区块链构建的智能合约自动执行。
编程语言
基础建构模型
运行机制
应用领域
问题挑战
共识机制
简介
拜占庭将军问题
一个关于分布式系统容错问题的故事。
背景:
在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。
解决方案:
每个节点给所有的其他节点发送消息
每个节点根据接受到的所有消息来决定最终的策略
缺点
每个节点先全网节点发送大量的消息。
概念
由于点对点网络下存在较高的网络时延,各个节点所观察到的事务先后顺序不可能完全一致。因此区块链系统需要设置一种机制对在差不多时间内发生的事务的先后顺序达成一致。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为共识机制。
共识算法:节点依据共识规矩达成共识的计算算法
共识规则:每个区块链里面都有经过精心设计的规则性协议,这些协议通过共识算法来保证共识规则得以正确执行。
作用
作用相当于是生活中的法律
概览
工作量证明PoW:比特币BTC、以太坊ETH、以太坊经典ETC
权益证明PoS:ADA艾达币、Peercoin点点币
授权工作证明DPoS:EOS、Asch、Steem
拜占庭容错算BFT:实用拜占庭容错PBFT、派生BFT
RAFT算法:ETCD
PoW
特点:
解决计算困难问题所需的计算代价作为新加入块的凭证和获得奖励受益。
过程:
缺陷:
由于PoW缺乏去中心化且消耗的资源太大,于是有了另一种的共识机制PoS
PoS
特点:
以权益证明代替工作量证明,由具有最高权益的节点实现新块加入和获得激励收益。
过程:
开始竞争出块记账前,拥有权益的节点将自己的权益放入PoS机制中,同时身份变为验证者,PoS机制根据验证者下注的多少,采用随机的方式选出一个记账者进行出块记账。
缺陷:
并不是完全的随机,而是权值越大会越由概率获取,还是没有解决资源算力浪费的问题,以及存在非完全对等的问题。
DPoS
特点:
首先通过PoS选出代表,进而从代表中选出块生成者并获得收益。
过程:
DPoS共识机制的基本思路类似于“董事会决策”,即系统中每个股东节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意成为代表的前101个节点将进入“董事会”,按照既定的时间表轮流对交易进行打包结算并且签署(即生产)一个新区块。
缺陷:
BFT(拜占庭容错算法)
特点:
DBFT算法中参与记账的是超级节点,普通节点可以看到共识过程,并同步帐本信息,但不参与记账。总共n个超级节点分为一个议长和n-1和议员,议长会轮流当选。每次记账时,现有议长发起区块链提案(拟记账的区块内容),一旦有至少(2n+1)/3个记账节点(议长+议员)同意这个提案,那么就这个提案就成为最终发布的区块、并且该区块是不可逆的。
过程:
PBFT过程:
RAFT
特点:
是对PAXOS算法的一种简单实现,核心思想是如果数个数据库的初始状态一致,只要之后及逆行的操作一致,就能保证之后的数据一致。
过程:
评价标准
共识机制的对比