学习
实践
活动
专区
工具
TVP
写文章

智能合约与以太坊(一)

稿件由路可比特整理自《区块链生存训练》

智能合约

智能合约这个概念早在1993年就提出来了,可惜由于那时的互联网和技术水平,无法落地。合约(Contract)这个词比较好理解,可以理解为合同,利益双方签订的协议。“智能”这个词就用得太滥了,智能电视、智能手机、智能油田等等,都没有统一的定义,好像是“先进”的代名词。把“智能”两个字用在“合约”上,可以简单地理解为让合同能够自动执行。

举个例子:假设李笑来与罗振宇打赌,在2017年8月份的BTC价格一定会超过3万,如果没过3万,笑来给罗胖100BTC;如果超过3万,罗胖给笑来100BTC(据说罗胖在2016年买了100 BTC给女儿当嫁妆)。注意这只是我编的一个小故事,为了加深对智能合约的理解,最近BTC行情太火,我写这一段的时候,时间是2017年7月,1BTC价格大约为2.8万元

这件事很简单,用传统的手段,双方需要签一份书面合同,一式两份,签字后各自收好。如果只是口头协议,则需要找个第三方当见证人,因为增加了中间环节,还需要修改合同,从赌注里拿出1个BTC给公证人。到了8月31日24:00,大家聚在一起,查一下BTC的实时行情后立马见分晓,输家马上转帐,合同执行完毕。

现实世界里,这只是一个小合同,真正的合同涉及订立、履行、变更、终止等多个步骤,如果引入第三方,还有审查、监督等事务。假设云币网价格过3万,而OKcoin不到3万,又产生了新的分歧;假设一方拒不付钱呢?假设大家把钱都押在第三方,第三方跑路了呢?类似的细节非常非常多。

而把上面的例子放在区块链世界里,就好办了。把上面的合约写成一段程序代码,放在区块链里,双方进行数字签名,各把100BTC锁定在区块链上,合约开始生效。8月31日24:00,程序自动抓取行情数据,超过3万,罗胖的100BTC立刻转到笑来的比特币地址中,反之亦然。整个过程不需要第三方,那段程序可以算做第三方。

从这个例子中,可以看出,智能合约相当于把合同编写成了程序代码,签订后由于区块链的数字签名、不可篡改性等特点,谁也不能抵赖,并且自动根据双方的履行情况强制执行。

区块链的出现让1993年提出的智能合约概念落地,比特币系统内部是用程序代码来锁定、解锁BTC的,只不过功能太弱。而以太坊则是第一个可以运行智能合约的区块链平台,你设立一堆规则(表现为一组IF...THEN...的程序代码)就可以发行一种代币(Token),发行ICO的门槛变得相当低。智能合约的签订、执行都要消耗数字货币(Coin),想活在未来,是不是需要持有一些筹码?

代币(Token)

在区块链技术文档中,尤其是曾经火热的ICO中,大家经常看到token这个单词,有些地方token被翻译为“代币”,在有些钱包软件中被翻译为“令牌”,给大家造成了困惑。

中本聪发明的比特币系统中流通的数字货币是比特币(代码为BTC),而以太坊进行了更高层的抽象,实现了智能合约,可以轻松地发行一种的新的数字货币,这种数字货币就叫token,所以说翻译为“代币”应该是准确的。

ERC-20

前两天ico.info平台上给不少人出了一道“难题”,要回答出一道问题才能继续参与ICO,问题是:“目前通用的以太坊代币标准是什么?”

代币在以太坊的区块链里是一种数字资产,这些代币可以使用以太坊里的智能合约。我们可以称BTC是比特币系统里的代币,没有以太坊的时候,你想发行一种新的代币,其复杂程度超乎想象,这种事情几乎是不可能的。但以太坊在2015年11月推出了ERC-20标准,使发行代币的门槛降低了许多。

虽然ERC-20只是规定了代币该如何运行,并不包含代码,但网上可以找到免费的、现成的源代码,稍有编程经验的人抄抄改改就可以创建出一种 ERC-20标准的代币。现在的ICO乱局也就是这么来的。

ERC-20定义了六种函数,包括如何传递一个代币(由所有者或代表所有者)以及如何访问代币的数据(名称、符号、供应、余额),还提供了两种信号。这个规范给软件开发者和用户都提供了方便,只要以太坊钱包支持ether,几乎就可以支持ERC-20规范的各种代币。

常用的与代币有关的函数:

* 获得代币总供应量

* 获得账户余额

* 转让代币

* 批准花费代币

ERC-20标准仍处于草案阶段,据称将代币直接发送到某个智能合约地址会导致丢失资金。这个该死的ERC是什么意思?原来ERC是 Ethereum Request for Comments的缩写,表示以太坊社区的成员对于一些规范或建议提出修改意见,20是建议的编号,ERC-20就是这样来的。

权益证明(PoS)

首先注意这个PoS与您刷银联卡时见到的POS机是没有关系的。这里把PoW的主要作用简要重复一遍,为了验证用户的交易数据,并防止大量节点在网络上乱发无用信息,让矿工们去解决一个非常非常麻烦的计算题,大概10分钟能够算出来,哪个矿工先完成,它就可以拥有记账权,在公开大账本上写入一个新块,并拿走新块奖励和这里面的交易手续费。

PoW这种机制从2009年1月开始已经运行了8年多,经过了实践的检验,唯一被指责的一点是浪费巨大的电力。环保人士们不干了,说矿池耗费巨大的电力,就为了共同维护那100多GB的数据,因此就出现了许多替代方案。2011年Quantum Mechanic提出了PoS(Proof of Stake,权益证明)算法,2012年首次应用于Peercoin(点点币,币代码PPC,当前行情12元人民币,说明PoS也可行)。

一句话来描述PoS的特点,就是有钱人说了算,你拥有的币越多,责任越大,就有更多的机会写入新块。Stake在这里被翻译为权益,与股份share的意思相近,拥有某种币的人相当于拥有了这种币的股份,为了收益最大化,股份越多越想维护币的安全与稳定。

当前采用PoS的主要有:Peercoin、Nxt、BlackCoin、Lisk、ShadowCash、NuShares/NuBits、Qora,、NavCoin等,以太坊也准备转换成PoS(CASPER协议),但还没有实施,这也是有争议的地方。

PoW与PoS的特点对比表

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G0QTWZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券