主页 > token.im官网 > 智能合约详情

智能合约详情

token.im官网 2024-01-26 05:08:28

联客,为开发者而生,答疑解惑!

本文来自区块链技术社区,未经许可拒绝转载。

在这里插入图片描述

虽然比特币和以太坊是两个经常被一起提到的词,但实际上,比特币与以太坊有很大的不同。 它们唯一的共同点是以太坊也是一种运行在区块链之上的加密资产。

与只是一种加密货币的比特币不同,以太坊具有许多其他特征。 正是这些特性使以太坊成为去中心化的超级计算机。

在了解以太坊之前,我们必须了解区块链是如何工作的。 如果你已经了解区块链,或者已经阅读了《区块链终极指南》,可以直接进入下一节。

什么是区块链?

简单来说,区块链就是一个数据库。 它是一个不断增长的数据库,存储特定类型的数据并具有一些独特的属性:

一旦数据存储在数据库中,就永远无法修改或删除。 区块链上的每条记录都是永久性的。

这个数据库不是由一个人或组织维护的,而是由成千上万的人共同维护的,每个人都有一个数据库副本。

要理解为什么几个人可以持有一个副本并且能够与其他人同步,我们假设网络中有 10 个人,每个人面前都有一个空文件夹,并且有一个空页面。 每当网络中的任何人做某事时,例如转账,他们都必须将这件事告诉网络中的其他人。

大家将这一事件记录在纸上,直到纸被填满。 这一次,每个人都必须通过解决数学难题来封装页面。 通过解决数学问题,保证每个人手中的论文内容相同,不可修改。 谁先解决问题,谁就会获得一定数量的加密货币作为奖励。

密封后比特币带来了以太坊智能合约时代,将页面添加到文件夹,取出新页面,然后重复该过程。

随着时间的不断增长,这些包含重要记录(即交易、交易)的页面(即区块、区块)被不断地​​添加到文件夹(链)中,最终形成一个数据库(区块链)。

区块链存储什么?

区块链可以用来存储各种类型的数据,它存储的数据赋予了区块链价值。 比特币区块链存储金融交易,因此看起来像美元或英镑之类的货币。 除了美元所具有的功能外,比特币没有任何附加功能。 然而,以太坊不同。

以太坊不仅仅是一种货币,如美元、英镑或比特币。 以太坊的目标不仅仅是成为一种货币,而是成为下图中的某种东西:

以太坊实际上是一台巨型计算机! 然而,它是一台非常慢的计算机——比今天的普通计算机慢大约 100 倍,而且非常昂贵。 “以太坊电脑”与90年代的智能手机情况类似。 除了一些非常简单的事情,它几乎什么都做不了。

这听起来可能不是很吸引人,那么为什么这么多人涌向以太坊呢? 这个问题问得好。 毫不夸张地说,以太坊正在风靡全球,因为它是一台分布在世界各地的完全去中心化的计算机。 了解以太坊区块链的工作原理表明它如何承担世界计算机的角色。

以太坊如何运作?

与其他所有区块链一样,以太坊需要成千上万的人在他们的个人电脑上运行一个软件来为网络提供动力。 网络中的每个节点(计算机)都运行称为以太坊虚拟机(EVM)的东西。 将 EVM 视为一个操作系统,它可以理解和执行以以太坊上特定编程语言编写的软件。 EVM 执行的软件或应用程序称为“智能合约”。

为了在这个世界计算机上做一些事情,你需要支付一定的费用。 但是,您不是以美元或英镑等普通货币支付。 相反,相关费用是通过以太坊网络的原生加密货币以太币 (ETH) 支付的。 以太与比特币几乎相同,只是它用于支付在以太坊上执行智能合约的费用。

无论是人还是智能合约,在以太坊上都被视为用户(user)。 一个人在以太坊上能做什么,智能合约也能做什么。

智能合约看起来就像网络上的任何其他人一样。 它们既可以发送也可以接收以太币,就像任何其他货币一样。

但智能合约与人类并不完全相同。 与人类用户不同,智能合约还可以执行预先定义的计算机程序来执行各种操作,这些操作可以根据事件触发。 为了感受智能合约的力量,让我们考虑一个例子:

智能合约的力量

假设你和我打赌明天的天气。 我赌明天是晴天,你却赌明天是雨天。 双方同意,败方必须给胜方 100 美元。 那么我们如何做到这一点并确保失败者不作弊呢? 我可以想到三种不同的方式:

彼此信任

最简单的方法就是互相信任。 如果我们是老朋友,就很容易相互信任。 我知道你住在哪里,你知道我的种种尴尬。 但如果我们完全陌生,事情就会变得复杂得多。 我没有理由相信你,你也没有理由相信我。

签订法律协议

另一个看似合理的解决方案是将我们的赌注正式化为具有法律约束力的协议。 我们双方都签署了一份协议,其中规定了打赌的所有细节——包括如果输了一方违反协议会发生什么。

该协议将要求我们向获胜方付款,但它没有实际用途,因为合法执行该协议的成本远高于赌注的价值。

向共同的朋友寻求帮助

我们可以找一个我们都信任的朋友,然后给这个朋友 100 美元保管。 第二天,他会查看天气情况,然后将 200 美元全额投注给获胜的赌注。 非常简单方便,除了一件事:万一这个双方信任的朋友把钱偷走了怎么办?

我们现在有三种不同的方式来实现下注,但每种方式都有其缺点:

因为我们是陌生人,我们不能相互信任。

执行一项协议的成本如此之高,以至于它没有任何实际用途。

向共同的朋友寻求帮助也会造成信任问题。

以太坊的智能合约就是为了解决这个问题而设计的。 智能合约就像一个值得信赖的共同朋友,只是用代码编写的。 我们可以在以太坊上写一个合约,我们双方都输入 100 美元,然后第二天,通过开放的天气 API 检查天气,并将所有以太币转移给获胜方。

合同一旦写好,就不能编辑或修改。 因此比特币带来了以太坊智能合约时代,您可以保证无论合同内容如何,​​都将无条件执行。

但是智能合约是如何执行的呢? 它与区块链有什么关系?

智能合约与区块链有何关系?

每当执行智能合约时,它都会被记录为区块上的交易。 简而言之,以太坊上的交易如​​下所示:

除了最后一个Data,相信大家一眼就能看出其他字段是做什么用的。 正是这个数据字段让以太坊独一无二。 数据用于记录智能合约的创建和执行,就像记录交易一样。 在以太坊区块链上,任何一个区块都可能包含以下三种类型的交易:

从一个人转移到另一个人的普通交易

这些普通交易就像比特币交易。 如果你直接给你的朋友发送以太币,那么数据字段是空的,这样的交易是正常的交易。

只有发送者没有接收者

如果交易中没有接收者,则意味着该交易使用数据字段的内容在网络中创建智能合约。 数据字段包含像网络上其他用户一样行为的代码。

将以太币转移到智能合约

无论何时,只要用户(或智能合约)想要执行智能合约,他/她/它就会创建智能合约交易并将执行指令放置在数据字段中。

与其他区块链一样,无论何时发生上述三个事件,都会向网络公布,网络中的每个人都会记录下来。 除了记录之外,每个节点还执行智能合约以将其 EVM 状态与网络的其余部分同步。

每个节点执行一个软件,从而使整个网络类似于一台巨大(但速度慢)的分布式计算机。 每一次执行,无论多么小,都将记录在区块链上并永远存在。

等一下,什么是 Gas?

如果用户想要使用和执行智能合约,他必须为智能合约的执行支付一定的费用。 这个费用是给实际花费了内存、存储、计算、电力等资源来执行合约的节点。

为了计算智能合约的费用,合约中的每条语句都有一个费用比例。 例如,如果执行的语句使用节点的内存,则该语句将有一个价格。 如果一条语句的执行使用了节点的硬盘存储,那么这些语句是另外的代价。 在这里,定义成本的单位称为 Gas。 最终,Gas 将通过汇率转换为以太 (ETH)。

每当您执行智能合约时,您都必须定义可以花费的 Gas 的最大值。 当智能合约执行完毕,或达到 gas limit 时,执行将停止。 这是为了避免智能合约出现死循环,防止一些重复执行的语句导致程序停滞。

因为一些程序员的失误,很可能会导致这样的事情发生。 所以每次重复执行,都会消耗一部分分配的Gas,这样就不会出现死循环。 由于程序员的错误,节点在执行过程中没有必要崩溃。 使用 Gas 可以解决这个问题。

这是以太坊

以太坊不仅仅是一种用于交易的加密货币,它的实际价值在于它的目的——以太坊的目的是让人们使用由数千个节点驱动的分布式世界计算机。

当然,由于每个语句都必须由网络中的每个节点执行,因此去中心化的分布式计算机会很慢而且很昂贵。 不过,这里说的慢跟谁比呢? 它是一个更快但集中控制的服务器。

为了能够享受中心化计算机带来的低成本,我们放弃了控制权。 但如果中心化服务器宕机或被黑客攻击,所有连接到它的客户端都会挂掉。 而去中心化的分布式计算机只有在每个节点都停止工作时才会挂掉。 换句话说,这使得它永远不会下降。 哪里有互联网,哪里就有以太坊。