链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

区块链的学习进入到第四天,前三天学习比特币,分别从比特币的前世、货币属性和背后的区块链技术学习。

比特币是区块链的1.0版本,而以太坊正是区块链的2.0版本。从1.0走向2.0,为什么以太坊能成为2.0版本的代表?创新在哪里?与比特币相比,以太坊标志性的创新即智能合约。因此,对于以太坊的学习,先从智能合约开始。

什么是智能合约?继续寻找其来有自,它在解决什么问题。继续从比特币和区块链说起。

『正文』

在本系列1和3两篇文章,我们已经认识到:

比特币背后的区块链技术相当于分布式账簿系统,系统拥有记账总账簿,这个账簿对所有节点(所有满足规则要求的计算机)公开,所有节点拥有读写及下载拷贝的权力(即分布式计算、存储),包括第一次交易信息在内的所有交易信息都会按时间顺序(也即时间戳)被一个不落地记录在这个账簿(区块)上,账簿信息定期更新确认(分布式存储)并形成连续账簿(区块链),账簿信息的更新确认不再经过中心。

从而实现由中心向分布式的计算与存储转变,点对点的数据传输,公开透明,无法篡改,而且可追溯,陌生人在不经过任何第三方信用背书的情况下,依赖此系统建立了彼此信任关系,使得交易成为可能。

基于上述内容,可以简化理解为:区块链技术解决了由“点对点”带来的信任问题,比特币的账簿(区块链)是把所有的关于比特币的支付信息都记录了下来。

1、智能合约

从1.0到2.0,升级来自于哪里?从上面的内容来看,升级的空间在于:

应用场景的拓宽:除了支付之外,还有哪些场景存在“点对点”的可能性?账簿的内容除了交易信息外还能记录什么?

拓展下我们的想象力,当这个账簿上记录的不是交易信息,而是一组可以运行的程序和基于这个程序运行后的账户状态时,这个账簿会是什么样子?

在想像账簿记录的是运行程序是什么样子之前,先看一个词——合约。

合约:类似于我们平时的合同,约定了合同方在一定条件下的责权利体系。一旦触发条件,合同将会被执行。就像违约合同或者竞业合同一样,当你出现违约行为时,依据合同对方可以对你索赔。这是传统的合约及执行方式。

如果这个合约不是人工执行,而是可以被程序自动执行的呢?这正是我们今天所要讨论的智能合约。

程序:是当你输入符合规则的内容时,电脑依据已设定的规则进行运算,从而得到相应的输出结果。

智能合约是一个编程程序,程序内有相应的触发条件,一旦触发,合约程序会被自动执行,并且所有执行都将记录在账簿上。同时,还可以给这个程序设置个账户,类似于人的账户,合约执行完毕后会有相应的账户状态(有点类似于账户余额概念)显示。这个程序我们称之为智能合约。

众所周知的是,任何程序都需要在一个操作系统中完成,而上述的智能合约程序也不例外。以太坊正是充当操作系统的角色,用户可以在以太坊系统中运用以太坊提供的编程语言编写这个程序。

如果仅仅只是提供一个新的系统和编码程序,那以太坊还不足以称之为区块链的2.0代表。这里,更重要的是,这些程度是在这个系统中运行执行的,所谓的运行执行也就是当智能合约触发条件发生后,合约将会自动执行,更改状态状态,这个过程将会被记录下来形成区块和区块链。区块记录是由矿工(分布式节点)完成, 矿工挖矿类似于比特币系统有以太坊币的奖励。

比特币可以说是创造了一个潜在的货币,对现有的金融体系可能是一大冲击,具有极大的意义。那智能合约又能有什么作用呢?

2、智能合约的应用

我们来看两个例子:

两个人关于明天的天气打个赌。我赌明天天晴,你赌明天下雨。我们约定输家必须给赢家100美元。我们如何打这个赌,还要确保输家会履行诺言呢?我能想出以下三种不同方法:

1、互相信任

最简单的方法是互相信任。如果我们已经是老朋友了,很容易信任对方。我知道你的家庭住址而你知道我的黑历史。然而,如果我们是陌生人的话,那就难办多了。你没理由信任我,我也没理由信任你。

2、签署法定合同

另一个可行的方法是根据我们之间的赌约制定一份法定合同。我们双方会签署一份详细规定了赌约条款的合同——包括关于输家违约的规定。该合同会让我们有向赢家支付赌金的法律义务,却不具实用性。因为如果通过法律途径强迫对方履行合同,其代价高出赌金本身。

3、寻求共同朋友的帮助

我们可以找一个双方都信任的共同朋友,各交100美元在他/她那里保管。第二天,他/她会查看天气情况,将这200美元都交给赢家。这种方式简单明了,除非出现一种情况:要是这位可信的朋友卷款而逃该怎么办呢?

现在我们有三种不同的打赌方法,不过各有都缺陷。因为我们是陌生人,无法互相信任。迫使对方履行法定合同的成本太高,此举并不可行。寻求共同朋友的帮助又会引发信任问题。

以太坊的智能合约在这种情况下就可以派上用场了。智能合约就像是寻求共同朋友的帮助,不过是被编写成了代码。通过以太坊,我们可以编写一款软件,向两方各收取价值100美元的以太币。第二天打开接入天气应用的API查看天气情况,并将总价值为200美元的以太币转给赢家。

再举一个例子:

前段时间极其火爆的ICO,也就是首次公开募币就是基于以太坊的一堆智能合约。发币者设立一个账户及智能合约程序,这段程序可以实现募资的全流程。程序将自动识别募资的进行状态,在申购者发起申请后,程序依据兑换比例等已设置好的规则将发行的新币添加在申购者的账户,将申购者支付的以太币添加到发行者的账户中。并且可以记录全部的兑换信息,当ICO结束时,智能合约程序可自动销毁。

通过智能合约程序,可以实现兑换比例计算、不同币种的兑换划转等的自动化,而这是比特币系统所无法实现的。比特币系统里只能记录关于比特币的交易信息,它无法兑换不同的币种,也无法记录不同币种之间的交易信息。

相比较于固化的比特币系统,在以太坊的系统上,所有的人都可以依据自己的需求设计不同的程序,对于程序赋予不同的规则,之后一切的操作都变得自动化,而这将带来安全与高效。

三、小结

通过上述两个例子,我们能看到,以太坊或者说智能合约的好处。

比特币实现了几乎无风险的点对点支付,而以太坊则是把这一特性扩展到几乎所有的场景里。只要在场景中,“点对点”运作方式会有风险。那么就可以通过智能合约这样的程序,来实现公平且无风险的履约。

以太坊创建了一个虚拟底层操作系统,大家可以在这个虚拟操作系统上自行设立与运行多个智能合约,而这极大了提高了这个系统的适用性和灵活性。

因此,自2017年以后,以以太坊为基础的智能合约如雨后春笋般产生,而且是走向区块链技术商业运用里程碑事件。

为什么以太坊能成为区块链2.0的代表之作?相关推荐

  1. 什么是以太坊,它是区块链2.0的代表,它又什么特点?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 以太坊 是一种全球共享计算,是各种分散应用程序的基础.它有一个独立于比特币的独立区块链,但与之类似.以太坊的区块链有显着 ...

  2. 以太坊白皮书_区块链60讲第33集~什么是以太坊?

    知乎视频​www.zhihu.com 哈喽大家好,我是小K君,今天我们要讲的内容是:"什么是以太坊".  什么是以太坊 以太坊是数字货币中,除比特币之外,最有开创意义的一个项目, ...

  3. 以Windows系统搭建基于Ethereum(以太坊)的区块链开发环境(具体操作与截图)

    以Windows系统搭建基于Ethereum(以太坊)的区块链开发环境(具体操作与截图) 区块链设计开发小组     2019/04/01 借鉴博客:https://blog.csdn.net/cui ...

  4. 以太坊·电影院场景区块链应用探索

    本文节选自电子书<Netkiller Blockchain 手札> Netkiller Blockchain 手札 本文作者最近在找工作,有意向致电 13113668890 Mr. Neo ...

  5. 以太坊DAO之区块链大会

    Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念.一般翻译为去中心化的自治组织. "在区块链上,没有人知道你是一台冰箱"- ...

  6. 以太大亨 以太坊上的区块链模拟经营类游戏

    以太大亨 是一款以太坊上的区块链模拟经营类游戏,玩家通过建造店铺,管理人才等方式来打造属于自己的商业帝国.以太大亨将采用游戏内置钱包,让游戏体验更爽快,同时将支持多种数字货币,并且同时开放PC端,IO ...

  7. 以太坊是什么?为什么说它是区块链2.0的代表

    通过深入了解比特币系统我们已经知道,区块链是源自比特币的底层技术,它让我们可以无须借助任何第三方中介直接进行价值表示和价值转移,它还给数字世界带来了价值表示物--通证.区块链将使互联网从"信 ...

  8. 比特币最主流,以太坊大跌,区块链技术“万金油”红利已结束 | 区块链开发者年度报告...

    整理 | 唐小引 出品 | CSDN(ID:CSDNnews) 已经成为中国工程院院士的王坚博士在自己的著作<在线>中曾谈到了区块链对未来互联网.数据及计算的影响 -- 「如果说网页排名( ...

  9. 企业以太坊联盟:区块链挑战者

    5月初,印度IT服务和咨询巨头Wipro宣布已加入企业以太坊联盟(EEA),成为创始成员.该联盟围绕基于开放源码区块链的平台Ethereum而形成,于2月底正式推出,其中30个创始成员开发企业级区块链 ...

最新文章

  1. SQL Server中的重要观点
  2. Server 2012 RDS ‘there are no Remote Desktop License Servers available to provide a license.’
  3. 【C/C++】如何判断文件夹或者文件是否存在
  4. Ubuntu平台 Qt 5.x 安装方法
  5. mongodb内存映射原理
  6. 20145227《信息安全系统设计基础》第一周学习总结
  7. java项目设计_java项目设计
  8. visual studio 2005 sp1 安装错误解决
  9. SpringBoot YML配置文件
  10. java tcp 字节数_服务器无法接收大小超过1500字节的TCP数据包
  11. mysql5.7 至少需要1560,mysq5.7.28配置innodb_page_size错误引起的错误1071(42000)
  12. ubuntu14操作系统chrome标签和书签乱码解决
  13. php表格打印输出,PHP输出表格
  14. 解决串口数据接收,实际值FF,接收却是FFFFFFFF
  15. ebm风扇选型手册_德国EBM全系列散热风扇
  16. buck dcm占空比计算_Buck知识大总结:模态分析,电感计算,EMI分析等(转)
  17. html静态页面作业——品牌红酒销售网页模板(4页) html网页设计期末大作业_网页设计平时作业
  18. 无人机实时流怎么开_直播解决方案,如何利用无人机进行直播
  19. loj534. 「LibreOJ Round #6」花团
  20. 适合学生写的请假管理系统

热门文章

  1. MySQL中字段约束有哪些_mysql字段约束
  2. 【web】将一个jar包更改成war包
  3. 操作系统导论部分章节习题
  4. 扫描服务器端口信息工具,服务器端口扫描工具
  5. iOS Named colors do not work prior to iOS 11.0问题解决
  6. 610D - Vika and Segments(线段树+扫描线+离散化)
  7. LoadRunner监控Linux
  8. 用python操作mysql数据库(之“更新”操作)
  9. Oracle定时执行存储过程
  10. python---简单数据库