区块链种类,区块链种类包括

  

     

  

  智能合约和区块链的结合被普遍认为是区块链世界的一次里程碑式的升级。以太坊是第一个结合区块链和智能合约技术的平台,它的诞生被认为是“区块链2.0”时代的开始。   

  

  转自:https://mp.weixin.qq.com/s/J0ctKQmbIRf3OKg3Y0Lhmg作者/来源:楚于之   

  

  前言自2009年比特币开启区块链时代以来,随着技术和生态的发展,基于区块链的分布式应用(dapp)在过去的10年间呈现井喷之势,支撑dapp的底层技术是“区块链智能合约”。   

  

  智能合约和区块链的结合被普遍认为是区块链世界的一次里程碑式的升级。以太坊是第一个结合区块链和智能合约技术的平台,它的诞生被认为是“区块链2.0”时代的开始。   

  

  什么是智能合约1996年,Nick Szabo在第《Smart Contracts: Building Blocks For Digital Markets》条中提出了智能合约的概念。   

  

  所谓“合同”是指条款、契约之类,记录发生的条件和相应的执行条款,以支持确权等操作;所谓“智能”,就是自动化和可编程性。   

  

  因此,智能合同是一种可编程的合同,也可以理解为自动执行的条款合同。在计算机中,它是一个自我执行的程序片段。比较容易保存契约,通过一定的算法运行。给定输入,得到相应的输出,极大的保证了契约的执行。   

  

  以自动售货机为类比,可以帮助我们更好地理解智能合约的核心特征。   

  

  当用户选择要购买的商品并完成支付后,就会触发发货逻辑,用户就可以得到想要的商品了。这个过程不需要人工干预,节省了销售商品的人力成本。如果你想破坏这份合同,你必须破坏自动售货机。如POS读卡器、EDI(电子数据交换)等。也可以用于这种比较。   

  

  智能合约和区块链智能合约是在上个世纪提出的,而区块链是2009年才诞生的。根据定义,智能合约与区块链没有什么关系。   

  

  那为什么这10年智能合约和区块链的关系如此紧密呢?因为区块链可以保证智能合约不可篡改,不仅合约内容不可篡改,每次通话的记录也不可篡改。   

  

  智能合约要产生价值,最基本的前提是要有一个强大的底层介质进行存储,使其无法被物理破坏。   

  

  但是智能合约的本体是一段代码,很容易被篡改,如何为其提供一个强大的存储介质成为问题。这正是区块链擅长解决的――通过比特币的实践,证明区块链可以让电子记录在分布式环境下不可更改。   

  

  与此同时,智能合约正在反哺区块链,这极大地扩展了区块链的商业场景。   

  

  与智能合约结合后,区块链不再服务于单一货币支付,可以扩展到生活的方方面面。丰富的应用场景也对区块链的能力提出了新的挑战。   

  

  区块链2.0:诞生于2009年的以太坊比特币,利用区块链等技术保证其生态,开创了区块链1.0时代。   

  

  用户可以通过脚本代码定制一些内容,比如如何解锁一个基金。这些脚本代码将与事务一起保存,因此它们不能被篡改,并且是确定性的。所以在某种程度上,这些脚本也可以被视为智能合约。但是效果不好。   

  

  首先,这些脚本代码不是图灵完全的,这限制了实现的功能;其次,开发门槛高,写复杂逻辑的体验会差,像用JVM字节码写程序。   

  

  2013年,一个年轻的V神提出以太坊,其核心是通过世界的状态来更新和验证区块链数据。以太坊和比特币最大的区别在于,它可以通过智能合约进行复杂的逻辑运算。   

  

  在以太坊中,智能契约的语言是Solidity,这是图灵完整的上层语言,大大扩展了智能契约的范围,降低了智能契约的编写难度。   

  

  正因为如此,以太坊的诞生也标志着区块链2.0时代的开始。随后,智能合约技术逐渐渗透到溯源、存管、供应链等多个业务场景。   

  

  智能合约的现状与展望从编程的角度来看,智能合约就是一段代码。与常规代码相比,智能合同有许多差异和限制,例如:   

  

  单线程代码执行将消耗资源,并且不能超过资源限制。目前很难获得链外数据,比如天气信息,比赛成绩等限制。TPS等这些特性使得对链上资源的管理成为当前智能契约生态的核心。就像以太坊里的各种ERC标准和治理方案;EOS上有各种资源模型,如CPU、RAM、Rex、Bancor协议等。   

  

  显然,就目前的生态而言,智能合约对现实世界的影响有限。   

  

  但是事物总是在发展的。目前致力于突破这些限制的研究有很多,比如Oracle (Oracle machine,但常被称为Oracle machine),它让智能合约可以在链外相互交互,从而大大提高了智能合约的使用场景,就像一台电脑连上了互联网;比如那些突破链本身性能瓶颈的尝试,比如支付通道、跨链、等离子、rollup,都是从不同角度打破了安全和性能的束缚。   

  

  毫无疑问,智能合约将发挥越来越重要的作用,而随着未来以太坊2.0的陨落。   

地,也许会开启新一个区块链时代。

  

智能合约技术以太坊采用了 Solidity 作为智能合约语言,Solidity 是一门为实现智能合约而创建的高级编程语言,能在允许以太坊程序的节点上运行。该语言吸收了 C++、JavaScript 的一些特性,例如它是静态类型语言,支持继承、库等。

  

除了 Solidity,每个平台的智能合约技术也有所不同,接下来将从公有链、联盟链作为切入,介绍其他平台所采用的技术。

  

公有链

  

首先,不妨先认识三大公链的智能合约技术。

  

  

联盟链

  

除了公链,联盟链也是重要的区块链类型。比之公链,联盟链共识的复杂度被大大缩减,因此具有更高的执行效率。

  

联盟链受企业级机构青睐,一般而言,相关机构之间会形成联盟,通过联盟链来共享数据。联盟链可覆盖供应链金融、司法存证、溯源等多种场景,未来还会与 IOT、AI 等技术结合。

  

在当今联盟链生态中,除去采用 chaincode 的 Fabric,大部分平台都采用 Solidity 作为智能合约语言,FISCO BCOS 即是如此。

  

时下,Solidity 可谓占据了智能合约的 C 位,掌握 Solidity 是学习智能合约和区块链的重要一环。后面系列也将对如何用 Solidity 编写、运行以及测试智能合约作深入介绍解析,敬请关注。

  

除了 Solidity、WebAssembly、Libra 的 Move 等一些智能合约语言也在发展中,可以保持关注。

  

智能合约运行分析下面将分享一个基础的智能合约:HelloWorld。

  

pragma solidity 0.4.22;contract HelloWorld{    uint private _num;    function store(uint256 num) public {        _num = num;       }    function get() public view returns (uint256){        return _num;    }}这段 Solidity 代码的功能是存取 _num 字段。该字段被称为“状态变量”,会由区块链持久存储。

  

用户可以将这段代码部署在以太坊或类似的区块链上,部署成功就意味着该智能合约不可再被修改,只要底层区块链不被销毁,这段合约就一直存在。任何人都可通过“合约地址”来调用该合约接口,每次调用信息都会被记录在链上。

  

在讲解这段代码如何运行之前,我们先回顾下传统 Java 程序的运行方式。

  

首先,用户编译完 Java 代码后,会以字节码的形式保存在磁盘上;然后用户会调用程序,这由 JVM 来托管执行;程序执行期间可能会通过日志来记录调用参数,也可能会和磁盘进行 IO。

  

Solidity 的执行与此类似。不同的是介质由硬盘换成了区块链,由单机变为分布式。

  

代码部署后,以字节码的形式存储在每一个节点上。当用户要求调用某个函数时,调用请求将会被囊括在交易中,并被打包到某个区块上,一旦全网对该区块形成共识,就意味着调用是合法的。

  

接下来,EVM 会来调用字节码,它负责存取底层的状态变量,好比传统编程的 IO。

  

  

光从代码来看,合约开发似乎不过如此,单个合约只需要围绕着字段进行操作,对于很多简单业务而言,不过是 CRUD 而已。

  

但其复杂性也恰恰在于此,合约在区块链环境上执行,是不可修改的。

  

所以如果出现了 bug,就必须部署新的合约,这对于合约的可维护性提出了挑战。并且,一旦业务复杂起来,容易出现安全漏洞,导致链上资产损失。同时,还要考虑完成代码编写、逻辑执行、数据存储的成本问题。

  

综上所述,写合约不难,但写好合约,却需要一定功底。

  

结 语本文介绍了智能合约的概念与历史演变。

  

智能合约是上世纪提出的技术,在区块链浪潮下焕发出了新的生机。反之,智能合约广泛的应用场景,又极大的促进了区块链发展。

  

学习智能合约,推荐选择 Solidity 语言,因为其具备一些传统语言的特征,同时,执行环境完全基于区块链,实际业务开发的体验与以往的编程体验会有所差别。

  

读者可以尝试基于 FISCO BCOS 快速搭建区块链环境,部署一个最简单的合约,熟悉部署、调用方式,再进一步走入 Solidity 的世界。

  

  

点击“了解更多”可访问文内链接

相关文章