查看原文
其他

智能合约初探:概念与演变

超图集团 2022-07-17

The following article is from FISCO BCOS开源社区 Author 储雨知


编者按:随着新一代科技革命浪潮的到来,区块链(Blockchain)作为一项关键技术,在全球互联网领域内快速升温。在中国,区块链也被看作核心技术自主创新的重要突破口,各行业相继开始寻找区块链赋能本领域的方法,以求助力解决发展痛点和难点。区块链到底是什么?如何运作?它的价值又如何体现?我们将以GISer的视角,陆续推出「区块链」科普系列文章,为大家普及相关知识,分享区块链和IPFS的相关应用,后续更新敬请关注!



 智能合约与区块链的结合,普遍被认为是区块链世界中一次里程碑式的升级。第一个结合了区块链与智能合约技术的平台--以太坊的诞生,被认为是开启了"区块链 2.0"时代。

前 言



自2009年比特币开启区块链时代以来,近10年里,随着技术与生态的发展,基于区块链的分布式应用(dapp)呈现出井喷的趋势,而支撑着dapp的底层技术就是“区块链+智能合约”。


智能合约与区块链的结合,普遍被认为是区块链世界中一次里程碑式的升级。第一个结合了区块链与智能合约技术的平台——以太坊的诞生,被认为是开启了"区块链 2.0"时代。



什么是智能合约


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


所谓“合约”,就是条文、合同一类的东西,里面记录了发生的条件与对应执行的条款,以支持确权等操作;所谓"智能",就意味着自动化、可编程。


所以,智能合约就是可编程的合同,也可以理解为一段自动执行的条文合同,在计算机中,就是一段自动执行的程序片段。它更易于合约保存,并且由确定的算法运行,给定输入,就得到对应的输出,极大保障了合约的执行力。


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


当使用者选择好要购买的货物并完成支付,出货逻辑就会被触发,用户就能得到想要的货物,而这个过程不需要人工介入,节省了售卖货物的人力成本。如果要破坏这个合约,就得物理破坏售卖机。像POS刷卡机、EDI(电子数据交换)等,也可作此种类比。



智能合约与区块链


智能合约在上世纪被提出,而区块链2009年才诞生,就定义而言,智能合约与区块链关系不大。


那为什么在这10年中,智能合约与区块链却产生了如此紧密的关联?因为区块链可以保证智能合约的不可篡改,不仅合约内容不可篡改,每次调用记录亦不可篡改。


智能合约产生价值的最基本前提是有一个强有力的底层介质用于储存,让其不可被物理破坏。


然而,智能合约的本体是一份代码,非常容易被篡改,如何为其提供强力的存储介质就成了问题。这正好是区块链擅长解决的——通过比特币的实践,证明了区块链可以在分布式环境下让电子记录不可被篡改。


与此同时,智能合约也在反哺着区块链,它极大地扩展了区块链的业务场景。


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



Fabric 智能合约



在联盟链Fabric中,智能合约也称为链码(chaincode),分为应用链码和系统链码。系统链码用来实现系统层面的功能,包括系统的配置,应用链码的部署等;应用链码用于实现用户的实际业务功能。当前链码支持的编程语言:Golang,Java,node.js。



Fabric链码的分类


链码分为用户链码和系统链码两部分。系统链码用来实现系统层面的功能,包括系统的配置,应用链码的部署等。系统链码主要分为以下几类:


  • 生命周期系统链码(LSCC) :Lifecycle System Chaincode,负责对应用链码的生命周期进行管理。

  • 配置系统链码(CSCC) :Configuration System Chaincode,负责处理 Peer 端的 Channel 配置。

  • 查询系统链码(QSCC) :Query System Chaincode,提供账本查询 API,如获取区块和交易等信息。

  • 验证系统链码(VSCC) :Validator System Chaincode,提供验证 API,如检查背书策略和读写集版本。

  • 背书系统链码(ESCC):Endorsorement System Chaincode,对提案响应进行签名,提供背书功能。


应用链码用于实现用户的实际业务功能,开发者开发链码应用程序并将其部署到区块链网络上,用户可以通过客户端或者提供的SDK调用链码。



智能合约的现状与前景


从编程角度而言,智能合约就是一段代码。相比常规代码,智能合约具有许多差别与限制,例如:


  • 单线程执行

  • 代码执行会消耗资源,不能超出资源限制

  • 目前难以获取链外数据,例如取得天气信息、比赛结果等

  • 其他限制,如TPS


这些特点使得目前智能合约生态以链上资源的治理为核心。就像以太坊上各式各样的ERC标准与治理方案;EOS上有各种资源模型,比如CPU、RAM、Rex、Bancor协议等。


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


但事物总是在发展的。目前,已有许多致力于突破这些限制的研究,典型的有Oracle(谕言机,但常被称为预言机),它允许智能合约和链外进行交互,这样就能大大提高智能合约的使用场景,彷佛一台电脑通上了网;再比如那些突破链自身性能瓶颈的尝试,例如支付通道、跨链、plasma、rollup,它们都从不同角度打破安全与性能的枷锁。


毋庸置疑,智能合约将扮演着越来越重要的角色,将来随着以太坊2.0的落地,也许会开启新一个区块链时代。


公有链


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



联盟链


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


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


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


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


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



结 语



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

 

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

 

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

 

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


注:本文转载自【FISCO BCOS开源社区】,其中“Fabric 智能合约”与“Fabric链码的分类”部分出自《FABRIC智能合约指南》一文。




2020 GIS 软件技术大会,点击上图即刻报名!


【相关阅读】

  什么区?什么块?什么链?

  比特币是什么?

 为什么密码学是区块链的核心?

 人人都说的比特币挖矿,到底是在挖什么?



欢迎转载~

三连一下,天天好心情!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存