当前位置:主页 > 区块链 > 区块链技术 > 智能合约

小白快速理解智能合约

2024-07-07 21:29:10 | 来源: | 作者:树哥
当小白学习区块链的时候,有一个叫“智能合约”的词会反复出现,可什么是“智能合约”呢?这篇就为大家简单介绍一下

当小白学习区块链的时候,有一个叫“智能合约”的词会反复出现。可什么是“智能合约”呢?今天树哥尝试用自己的语言说清楚啥叫“智能合约”。

一、什么是“智能合约”?

最初的概念:“智能合约”(smart contract):是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。—-1995年尼克·萨博(Nick Szabo)(跨领域法律学者)

请注意两个关键点:

1、这是1995年提出来的,那会儿还只是互联网的早期阶段,区块链的概念远未诞生。

2、提出的人是一个跨领域法律学者,是想通过计算机解决法律问题。

可以看出,当初“智能合约”的概念是通过计算机解决法律合约执行的问题。

那么,当前大家谈的“智能合约”还是当初的这些含义吗?

当区块链世界引入了“智能合约”这个概念时,它的概念已经发生了种种变化!

1、当前谈的**“智能合约”,都在区块链范畴内讨论。

2、“智能合约”已经不局限在“合约”本身了,其它类的应用都可以称之为“智能合约”!

谈到第一点,我们现在“智能合约”因为是部署到区块链上,所以需要很具有“区块链特色”。

谈到第二点,“智能合约”可以是合约,当然也可以不是合约。当前很多描述“智能合约”的文章还把“智能合约”局限在“合约”上,是不准确的。

当前的定义是:

“智能合约”:是区块链系统上的应用,是可执行的代码。

二、区块链上的“智能合约”

我们既然谈到是区块链上的智能合约,因此区块链本身的特性也会决定智能合约的相应特性。我们用一张图,来进行比较说明,部署在中心化的传统互联网上与部署在分布式的区块链上有何不同。见下图:

互联网与区块链网络智能合约

最直接显著的区别有两点:

1、 在中心化的互联网上,智能合约(代码)只需要部署在中心节点服务器上就可以。

而区块链网络上,由于没有中心化的节点,所以智能合约必须部署在所有的节点上。

2、 在中心化互联网上,智能合约(代码)可以比较随意、限制比较少的创建、执行、升级或终止。

而在区块链网络上,由于体系是采用按时间出区块,一个区块链接一个区块的方式,决定了智能合约必须打包入区块之中,并且复制到全网的节点之中。决定了智能合约代码会有一些要求,智能合约的创建、执行、升级、终止也会复杂得多,必须符合区块链本身的技术要求。

也是由于这两点,决定了区块链上的智能合约有如下的特色:

1、代码即法律:不同于中心化节点,区块链上的智能合约一经部署便复制到全网节点,满足条件会自动执行,所有人都可以看到但无法修改,即使代码的创始人也无法终止。

2、机器信任:不同于传统信任中心或第三方(例如淘宝信任的是第三方支付宝),智能合约的履行完全靠机器代码完成,不依赖任何第三方或权威中心机构,因此变中心信任为机器信任。

3、升级困难:不同于中心化互联网发现问题修改代码非常容易,区块链网络中的智能合约一经部署,修改完善过程就比较复杂。这点也是区块链本身的特色,区块链的网络本身升级就很困难,容易导致分叉,比特币现金就是比特币网络想把区块从1M改成8M后导致硬分叉而来的。

3、 决策靠共识:不同于中心化服务器的任何决策都可以有权威中心直接负责,区块链由于是布局到全网节点上的,没有了权威中心,很多决策都是靠全网共识来达成,所以就有了社区、技术开发者、矿工、交易所等等多方利益的博弈过程。

4、 功能相对弱:不同于中心化服务器的软件功能强大,在区块链上的智能合约受限于区块大小、出块速度和区块链本身的网络带宽等多种因素,在功能上远没有中心化服务器的那么强大;当然,由于每个区块都需要全网同步,所以并发的交易速度也远不如传统中心化互联网那么强大(双十一淘宝的并发量是极其可怕的)。

5、 外部数据交互难度大:区块链本身就是要保证在网的数据不可篡改、可以溯源;就会面对如何保证上链的数据是可信数据,如果源数据不准确那上链就没有了意义。另外,数据上链的时间、花费、储存都是一些复杂的问题。所以相对来讲,区块链的智能合约和外部数据交互难度大一些,与传统互联网的方式不同。

小结:智能合约就是一段代码,需要实现的一些应用。由于部署在区块链上,区块链的多方存储、多方计算、规则透明、不可篡改等特性,恰好为智能合约提供了安全可靠的记录载体和执行环境。智能合约变得不可篡改,陌生人都可以信任机器而不再关心合约的对方是谁,当然同时也就存在了区块链固有的一些问题,例如升级困难,功能目前还没有那么强大等问题。

三、智能合约的创建和执行

一个智能合约的生命周期包含合约创建、合约部署、合约执行等过程。我们以以太坊为例,来说明区块链上的“智能合约”是如何创建和执行的。

案例:我们新建一个发工资的智能合约,树哥是老板,是需要给两个员工A和B发工资。先简单构建一下发工资的逻辑,如下:

1、合约创立

从上图可以看出,在以太坊上是分为外部账户和合约账户的。树哥的外部账户存着钱,合约账户存着相应的代码。代码执行的操作就是30号的时候,先检查A和B的工作量,满足要求后给A账户和B账户转账工资。那么,合约的创立就是要给三个用户建立账户,通过要编写合约账户内的代码。

1) 创建账户

需要先了解以太坊的账户体系

2)编译,打包,数据上区块链

根据要求创建完账户、编写完代码(以太坊的官方智能合约开发语言为:solidity),开始对编写的代码进行编译。

一旦完成了智能合约打包上链的过程,就意味着:全网的验证节点都会接受到树哥和员工A与B之间的智能合约,并进行了保存。

需要注意的,在以太坊上部署和执行智能合约都是要有花费的,这样的花费是用GAS来表示的(挺像我们的汽车烧的燃气),这个GAS是可以是用以太坊来购买。设置GAS而没有直接用以太坊的原因是,以太坊价格波动太大,不能今天执行一段代码要50块明天就变成5块钱吧?所以用GAS代表以太坊上执行操作的代价相对不会波动太大。

2、合约的执行

智能合约会定期检查相关事件和触发条件,满足条件的事件会推送到待验证的队列之中。例如每月30日,会触发条件把树哥账户里的钱转给员工A和员工B的账户中。

区块链的验证节点会对这个事件进行签名验证,等大多数的验证节点对此事件达成共识后,智能合约将被成功执行,并通知用户。

需要说明的是,智能合约是存储在区块链网络的代码,但区块链本身是不执行代码的。真正执行代码的是以太坊虚拟机(EVM),准确一点来说是每一台本地的以太坊虚拟机来执行代码,再来相互验证,然后再将结果写入到区块链当中。示意图如下:

以太坊智能合约执行示意

小结:通过树哥给员工发工资的智能合约的创建、部署和执行的过程,就可以了解到:资金是保存在外部账户中,代码是保存在合约账户中;部署智能合约就是在把智能合约打包进区块中,然后分发到全网中;执行智能合约就是在触发条件达到后本地的以太坊虚拟机执行智能合约,然后再将结果保存在区块链中这样的一个过程。

四、智能合约的安全性讨论

最近出了很多起智能合约被黑客攻破而导致资产大量损失的事件,但发生的这些事件都不是因为以太坊网络系统的问题,而是属于开发者开发的智能合约存在漏洞的原因。那么,智能合约开发需要注意哪些问题呢?一般就是两个问题,一是确保智能合约的确定性,二是确定智能合约的可以关闭性。

1、确定性:就是确保智能合约在不同的计算机上执行的效果都是相同的。

在区块链网络上,是不同的计算机节点参与运行智能合约,如果执行的结果有差异那么无疑会导致不同节点达不成共识,相应的区块也会认为是非法的。那么如何保证智能合约的确定性呢?

1)不进行调用不确定性的函数,

2)不使用不确定性的数据源。

2、可以关闭性:就是确保智能合约在一定的情况下可以关闭。

如果一段有问题的智能合约在不断地运行,它会不断的消耗区块链的网络资源,也有可能会攻击者利用来攻击整个网络。是可以通过一些手段限制资源的使用来执行智能合约关闭。

1)限制最大使用的资源。在以太坊上执行智能合约或存储都是需要有消耗(gas),智能合约有gas limit (最大消耗的gas值)来限制智能合约。当智能合约消耗到规定的最大值时,会自动关闭。

2)限制执行代码行数或执行时间。当智能合约执行代码行数达到规定最大行或执行时间,则认为智能合约有可能进入死循环或出现问题,强行关闭。

3)采用虚拟机方式,隔离资源。以太坊就是采用虚拟机EVM的方式,把执行环境虚拟化,将资源进行隔离,避免由于一个智能合约问题感染整个系统,也可以通过关闭智能合约的执行虚拟机关闭智能合约。

小结:部署在区块链上的智能合约,由于其具备的区块链的复杂特性而会凸显出安全性的重要性。如果要真正理解如何提升智能合约的安全性,那需要对区块链底层逻辑和智能合约有一定了解。

总结:智能合约本质是应用,不局限于电子合约本身。在区块链上的智能合约具备着区块的规则透明、不可篡改、分布存储等特征,它的创建、部署和执行也是有一定的复杂度,在安全防护上也有了较高一些的要求。也正因为如此,区块链上的智能合约可以完成传统互联网程序没有办法完成的任务,不仅可以在金融、拍卖、借贷、遗嘱、注册、众筹、股权、投票、保险等领域发挥巨大作用,而且随着技术的不断发展,在其他方面也将展现出巨大的作用。

以上,为树哥区块链从小白到精通

作者介绍:树哥,树哥区块链创始人、《区块链从入门到精通》作者,U赞签约作者,对话区块链合伙人。立志用最通俗的语言让小白透彻了解区块链技术。公众号\头条号\新浪博客\百度百家:树哥区块链,星球:区块链从小白到精通。

免责声明:本文只为提供市场讯息,所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任。!
Tag:智能合约  

你可能感兴趣的文章

币圈快讯

  • 伊朗:美军伤亡数字远超官方口径

    2026-07-26 02:21
    7月26日,伊朗革命卫队发言人表示,美国在违反协议后的死亡人数超过200人。美国方面公布的美军人员伤亡数字是彻头彻尾的谎言。我们对美国目标进行了攻击,击中了8个驻军中心,其中仅一个就有20个仓库被摧毁。在“胜利2”行动中,美国的死亡人数超过200人;受伤人数远高于这一数字。美国人民不应让他们那些撒谎的指挥官把他们当成傻瓜。美国政府应邀请记者前往遭袭地点,评估到底有多少人伤亡。(金十)
  • Lido:团队正在排查今日stETH收益重估计算偏差事件用户资产不存在任何风险

    2026-07-26 02:20
    7月26日,Lido于X平台发文称,开发团队正在排查由协议会计预言机上报、今日stETH收益重估产生的异常问题。本次重估显示年化收益率仅2.04%,而预期数值为2.15%。该偏差并非验证者罚没造成,用户资产不存在任何风险,问题起因是一笔处于待确认状态的32枚验证者质押ETH未被预言机纳入统计。开发人员已反复核对预言机播报当时及之后以太坊共识层上所有Lido验证者的总余额,未发现任何资产存在风险的迹象。用户无需进行任何操作。团队目前正在排查问题根本原因;修复方案上线后,下一轮收益重估会将本次少统计的资产一并计入核算。待查明根本诱因后,官方将发布完整情况通报。
  • 特朗普下令暂停空袭伊朗

    2026-07-26 01:45
    当地时间7月25日,美国总统特朗普下令美军当天不要对伊朗发动新的空袭,结束了此前连续近两周、持续13天的每日打击行动。据悉,特朗普此前每天都会批准军方提交的对伊朗打击方案,但25日收到新的作战计划后,并未批准执行,而是直接下令当天暂停空袭。目前尚不清楚这一决定只是一天的临时安排,还是意味着军事行动将进入暂停阶段。据悉,特朗普下令暂停空袭前数小时,阿曼代表团已抵达德黑兰,就重启霍尔木兹海峡通航的新安排展开谈判。两名了解谈判情况的地区消息人士称,谈判已取得进展,阿曼与伊朗有望在本周末达成协议,届时特朗普将决定是否接受这一方案。(央视新闻)
  • 特朗普周五指示美军不要在伊朗发动新的打击

    2026-07-26 01:05
    7月26日,据Axios新闻报道,两位消息人士称,特朗普于当地时间周五指示美国军方不要在伊朗发动新的打击,打破了近两周的每日连续攻击。特朗普的指令是在此前连续13天对伊朗进行打击后作出的。目前尚不清楚特朗普周五的命令是一次性的,还是意味着这种平静状态将持续下去。特朗普的决定既反映了他愿意为外交留出更多空间,也承认了在当前未恢复大规模作战行动的情况下,美军打击的效果已达到极限。如果特朗普下令恢复打击,美军可以在相对较短的时间内进行动员。消息人士称,美军仍在为可能恢复大规模作战行动制定计划,但特朗普尚未下达朝这一方向推进的命令。白宫未作出回应。(金十)
  • 俄罗斯最大银行Sberbank计划在12月1日前推出加密交易基础设施

    2026-07-26 01:03
    俄罗斯最大银行Sberbank计划在12月1日前推出加密交易基础设施和数字存管服务,以支持受监管金融体系。俄罗斯加密交易、托管和结算新规将于9月1日生效,持牌中介机构相关要求将自2027年7月起适用。俄罗斯公开加密交易将限于满足严格流动性和市值门槛的资产,境内商品和服务支付仍禁止使用加密资产。
  • 查看更多
更多

热门币种

  • 币种
    最新价格
    24H涨跌幅
  • bitcoin BTC 比特币

    BTC

    比特币

    $ 64258.12¥ 435040.32
    +0.13%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 1872.26¥ 12675.57
    +0.39%
  • tether USDT 泰达币

    USDT

    泰达币

    $ 0.999¥ 6.7634
    +0%
  • binance-coin BNB 币安币

    BNB

    币安币

    $ 568.26¥ 3847.23
    +1.03%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0009¥ 6.7762
    +0.01%
  • ripple XRP 瑞波币

    XRP

    瑞波币

    $ 1.1033¥ 7.4695
    +1.29%
  • solana SOL Solana

    SOL

    Solana

    $ 74.4668¥ 504.15
    +0.57%
  • tron TRX 波场

    TRX

    波场

    $ 0.3324¥ 2.2504
    +0.57%
  • hyperliquid HYPE Hyperliquid

    HYPE

    Hyperliquid

    $ 58.2668¥ 394.47
    -1.35%
  • dogecoin DOGE 狗狗币

    DOGE

    狗狗币

    $ 0.073293¥ 0.4962
    +5.86%