深入了解智能合约

CN
5 年前

关注ThunderCore


点击了解最具潜力项目


全面洞察区块链最新技术及趋势


640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


智能合约是区块链的定义性特征,在区块链语境中,智能合约不仅仅是价值和金融平台的去信任化存储。那智能合约究竟是什么呢? 


          640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


在第一次介绍中,发现智能合约是难以理解的,不过它却是对区块链的相当自然的推论。如果说区块链确实是一种范式转移技术,那是因为智能合约使我们能够以完全不同的方式看待问题。 本文旨在使用通俗易懂的语言,阐述智能合约的相关内容和发展潜力。


智能合约是什么


新的区块链范式没有智能合约的即时类似物。没有信任作为平台的基础假设,区块链就截然不同了。


 


通过去中心化和透明开放的管理方式达成共识、并使用公钥加密技术的数据库,是去信任化的,我们希望读者能够清楚这一点。该数据库能够展示帐户余额和处理交易,因此能够用于货币的发行和流通。这样的数据库还能有什么用途呢?智能合约就是答案。


 


事实证明,智能合约能够实现任何事情。智能合约由通用逻辑构建而成,能够根据输入项执行任何计算上可行的操作、修改状态、从其地址进行转账。下面我们以相反的顺序来了解这句话,以能真正理解区块链。


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1从智能合约地址进行转账:智能合约就像您的帐户一样,具有地址和余额。与帐户不同的是,智能合约没有与地址相关的私钥。为了使智能合约能够转账,必须通过代码形式下达指示命令。


 


状态:此外,智能合约还有其他状态变量,这些变量可以通过智能合约逻辑进行修改。状态变量与余额相差无几。 只能通过众所周知的规则来修改它们。不过规则是由用户设定,而不是内置在区块链协议中。


 


输入项:智能合约可以访问以下输入项:


● 当前状态


● 区块链状态(如区块编号和时间戳)


● 交易发送者


● 与交易一起发送的价值


● 可选数据字段,可以指示智能合约的自定义逻辑


 


计算上可行/通用的逻辑:智能合约能够执行任何计算上可行的逻辑,不过受到其运行的区块链计算能力的约束。区块链堪比全球计算机,且与个人计算机相比,区块链对计算和存储的限制更加严格。


 


因此,我们现在知道智能合约完全由其代码控制,并且几乎可以执行任何操作。那这些代码什么时候真正开始运行,由谁来运行呢?就像转账一样,智能合约是通过交易来执行的。除了用于决定转账金额的值域外,交易还具有数据域。 在常规交易中,此数据域通常留空。 不过如果交易的接收地址是智能合约,则数据域可用于激活合约中的逻辑。


 


每个智能合约都有一组公共功能,任何人都可以调用它来执行其逻辑。这些功能可能需要资金(以与常规交易中发送资金相同的方式提供),特殊权限(如发送者必须为0x0D8A07e01Fd9b3DA4ce78109DBDFd385bE59bAE2),或任何其他任意逻辑(如日期为2029年1月3日, ASCII中的数据域为“周年快乐”)。 智能合约的执行必须且仅遵守其代码。


 


任何人都可以部署智能合约。通过将已编译的智能合约代码放入交易的数据域中,并将其发送到地址0x0,即可完成部署。区块链将这些操作理解为部署新智能合约的命令。它将创建一个具有余额和状态的新地址,并将代码绑定到该地址。现在该地址是已完成部署的智能合约的地址。


 


完成部署的智能合同无需记住部署者。智能合约合同没有所有者,而只有逻辑。因此人们常说“代码即法律”。不过智能合约通常会跟踪用户,以能进行有意义的功能限制。例如,彩票智能合约只会向付款购买彩票的用户支付大奖。锁定时间的钱包仅能将资金分配给部署和支付合同的用户指定的受益人。智能合约的状态跟踪这个用户的公共帐户地址。


 


在完成部署智能合约后,一切准备就绪,智能合约代码定义的任何事情都是公平的。这是智能合约的真正力量。它是公平的,任何人都可以部署和使用;它是透明和公正的,其使用情况无法被审查;它的状态不能在规则之外进行修改;逻辑可以定义转移和创造价值的方式。因此智能合约可以创造前所未有的新经济体。


 


说明:力量越大,责任越大。 代码是可验证的,并不意味着它可以执行应有的功能。例如,智能合同代码或存有漏洞,造成全部资金损失。请仅使用与您委托给合约的金额成比例的、由您信任的机构审核过的合约。


智能合约关键概念和原语


一、基本概念


交易-调用或部署智能合约的入口点是交易。 交易的接收地址是智能合约的地址。其数据域决定如何使用合同。 最后,交易的价值被存入智能合约并根据其逻辑进行分配。


 


原始代币-由于智能合约允许定义自己的代币(请参阅下面的ERC20),因此原始代币是指区块链的基础货币。 该货币可以与智能合约进行交易,并用作智能合约的输入项。 原始代币非常特殊,因为它是唯一可用于支付交易费用的代币,并且可以作为运行网络的奖励分发给共识节点。可以使用内置变量(如“ msg.value”或“ account.balance”)在代码中对其进行访问。 仅当授权的交易按比例减少一个帐户的余额时,才能增加另一个帐户的余额。 因此,原始代币供应稳定,是可替代的、可转让的,并可用作真实货币。


 


汽油(Gas)-Gas衡量交易所需的带宽、计算和存储空间。对于智能合约的调用,每个操作和存储字节都是被计量。 因此每笔交易将消耗一定数量的Gas,交易者必须为此付费。 交易有两个与Gas有关的参数:


 


1、Gas限制限制了允许处理交易的最大Gas量,避免耗尽所有资金来处理无限循环的交易。


2、Gas价格是交易者将为消耗的每单位Gas支付多少原始代币。 矿工在创建新区块时会优先处理Gas价格较高的交易。


 


初学时,Gas是有点难以让人理解。Gas本质上是交易费用。由于区块链的去中心化特性,因此用户需要计算Gas费用。值得庆幸的是,大多数钱包使用统计信息和预设,很大程度上自动化该计算过程。


 


DApp-去中心化应用程序或DApp,是具备可交互的界面和工具的智能合约,通常是使用web3 API接口构建的网页版前端,还可能是将数据处理为可读形式、甚至提交交易来协调用户操作的后台服务。


 


ERC20-最常见的智能合约是ERC20代币,ERC20代币是2017年ICO繁荣的标志。ERC20代币由智能合约构建。 具体来说,它是可替代(意思是相同)代币的标准接口。区块链的原始代币在区块链上具备独特功能,请勿将这两者混淆。ERC20是大多数区块链社区使用的标准,除了这一点外,ERC20没有其他特别之处。ERC20代币是在DApp中写入有价对象的简便方法。许多DApp部署他们自己的ERC20合约,作为在DApp上支付服务费用的多功能代币,并通过激励措施来创建加密经济安全性。由于接口是标准化的,因此ERC20能够自动插入去中心化交易所和钱包等各种应用程序中。


 


ERC721-另一个通用的智能合约ERC721,该合约常用于游戏和其他代币化资产中。ERC721是不可替代(意思是各不相同)代币的标准接口。 例如,Cryptokitties是一款流行的基于ERC721合约的区块链游戏——每个kitty由一款代币表示,并且是唯一的!


 


DEX-去中心化交易所或DEX是用于交易ERC20代币的智能合约。 由于它是一个智能合约,因此它是完全自动且去信任化的。现有数量众多的DEX,每个DEX又是不同的。有些DEX匹配买卖订单,有些使用算法做市商,有些提供链下服务,来降低交易来源、提高可扩展性。


 


多签名钱包-通常资金需要由多个实体控制,并且只有得到足够数量的签署者同意才完成支付。多签名钱包存储多个签名者的地址和签名阈值。每个提现请求都进入待处理状态,并且仅在收到其他足够数量的签署者批准交易时才执行。另一个用例是帐户恢复。有一个主要的签名人可以自行授权从钱包中支付资金,有几个恢复签名人只能集体支付资金;仅当主签名者丢失其私钥时才需要恢复签名者进行相关操作。


 


DAO-去中心化自治组织(DAO)是一个理事机构,其选民通常是DAO某些基础ERC20多功能代币的持有者。 DAO的功能区别大:简单的DAO可能会支持多数票通过的提议来支付资金(类似多签名钱包)。 高级的DAO框架具有可插入的章程模块,可以根据多数选民共识从已部署的DAO中添加或删除这些模块,从而能够与时俱进。


 


二、高级概念


链下-正如我们之前所了解的,智能合约的存储和处理能力受到限制。根据当前的网络使用情况,每笔交易都有一定的费用,个别费用相当昂贵。为了解决这个问题(需要权衡),某些DApp具有区块链外的其他功能。这是如何实现的呢?这取决于智能合约。基本的链下操作可能会让服务提供商汇总多个交易,然后将其提交给用户以支付交易费用。 更高级的服务可能依赖于他们自己的去信任化的链下区块链,或依赖于类似区块链的结构来馈送外部数据。 链下DApp存在广泛的信任关系。 虽然期望在线来获得服务,汇总方无法伪造交易。链下操作使信任变得更加复杂,但绝对仍然可行!


 


缓存-区块链使用了出色的被称为Patricia树的键值数据存储(我们后续会介绍Patricia树相关内容)。该存储具有某些惊人的属性,但几乎不支持结构化历史数据。许多DApp将部署一个单独的应用程序。


 


因此缓存是一种特殊的链下服务,(仅)从区块链读取数据,对其进行处理并以易于访问的形式进行存储。


 


区块浏览器-区块浏览器就像是区块链本身的前端。它允许用户访问共识数据(例如,区块矿工或验证者,奖励等)、交易数据和状态。 区块浏览器具有智能合约的通用接口,允许查看公共功能、状态变量和代码相关内容(我们会在下一节中介绍)。


 


 


三、开发者概念


状态变量-如上文所说,每个合约都有一个或多个可以由逻辑操作的状态变量。从文本数据到价值数百万美元的帐户余额,它们可以代表任何内容。


 


公共功能-这些是用户可以从交易中调用的智能合约功能。公共功能共同定义了智能合约的界面。需要注意的是,智能合约还可以调用其他智能合约的公共方法,以实现可互操作的智能合约生态系统。 例如,DEX可以与具备标准ERC20接口的任何智能合约兼容使用。每个合约都有一个特殊的后备功能,如果没有提供数据,则调用该功能。后备功能可能是公共的,也可能不是。


 


查看功能-这些是不会更改智能合约状态的功能。 终端用户可使用查看功能来查询智能合约的状态。例如,多签名钱包智能合约可能具有查看功能,该功能返回签名阈值和签名者列表。


 


EVM-EVM是以太坊虚拟机(Ethereum Virtual Machine)的缩写,是解释和执行智能合约的计算机。 EVM是使用最广泛的区块链虚拟机。需要注意的是,本文使用与EVM一致的术语。 还有其他虚拟机,它们的功能可能略有不同,并使用不同的术语。不过这些虚拟机关键概念是相同的。 虚拟意味着它是在虚拟环境中运行的,模拟计算机是在另一台计算机(或者说这种情况下是整个去中心化的计算机网络)中运行的模拟计算机。


 


可靠性-这是第一种也是使用最广泛的智能合约语言。它是与第一个智能合约平台以太坊一起设计和发布的。Solidity的语法基于Javascript,但又与Javascript大有不同。 由于其庞大的用户群和支持工具集,Solidity是一种不错的语言选择。也有其他的智能合约语言,例如基于Python的Vyper,并且只能执行某些安全性不变式。


        640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


ThunderCore (TT链)是新一代的区块链公链平台。它突破了现今区块链的困境,达成快速、高扩展性、安全,而且又与以太坊虚拟机兼容。


ThunderCore创办团队集结了美国学术界顶级的智能合约,分布式算法先行者,和硅谷的资深创业者, 并独特采用严密数学证明的PoS共识算法, 保障区块链的效率和安全。通过此算法, ThunderCore解决了以太坊高GAS费、低TPS、高交易确认时间的问题。


       640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


          zs2cNtqCCLoPDwdhiJYOt6TwQc9xiPF4Cx4OX4aB.png



免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

欧易返20%,前100送AiCoin保温杯
链接:https://www.okx.com/zh-hans/join/aicoin20
廣告
分享至:
APP下載

X

Telegram

Facebook

Reddit

複製鏈接