主页 > imtoken苹果下载官网 > (中国)搜狗百科以太坊计算器(2023年更新(今日/知乎)

(中国)搜狗百科以太坊计算器(2023年更新(今日/知乎)

imtoken苹果下载官网 2023-11-23 05:10:37

好的,所以,本次演讲的目标是尽可能简洁,同时涵盖重要的部分,例如基础知识,从技术角度来看以太坊协议实际上是什么样子。 这个怎么样。

那么,我就直接切入什么是以太坊,从背景开始做基本介绍,这就是以太坊存在的原因。 当我在 2013 年底撰写最初的白皮书时,公众已经对区块链技术产生了浓厚的兴趣,尤其是那些致力于将区块链技术应用到比特币 (Bitcoin) 货币之外的人们。 目前,人们正在致力于开发以太坊应用程序、在区块链上发行资产、众筹、域名注册、Namecoin 等项目、所有权注册、投机、预测市场、物联网 (loT) 应用程序、医疗应用程序。 区块链上有很多超越“我有50个比特币,我送你20个比特币,你有20个比特币”的应用。

问题是当时存在的大多数区块链都是这样设计的。 我的意思是,这个豆豆计算器有什么意义? 它可以做到,也可以做得很好,但这是它唯一能做的事情。 诚然,如果你有一台超级棒的 TI-80 或其他东西,你也许能够以某种方式在上面编写视频游戏,但没有人真的愿意这样做。 一般来说,它最终成为一个可以用来做一件事的工具。

但是如果我们想让它做不止一件事呢? 当然,您可以为 5 种不同的目的购买 5 种不同的设备,但这会很快(回到原点)。 下一步是让人们开始创建像瑞士军刀一样的协议。 你大概可以想象一群人走进一个房间,他们头脑风暴出一个时钟,然后他们写了 25 个不同的区块链应用程序,然后他们想出了 25 种不同的交易类型。 交易类型一,创建共同基金; 交易类型2,参与众筹; 交易类型3,创建保险合同; 交易类型4,开双人房; 交易类型5,注册域名; 应用程序。 这就是我所说的“瑞士军刀”。

但是问题又来了 ethereum calculator,如果你有瑞士军刀协议,你有一个在一个房间里孵化 25 个不同项目的协议,他们创建了这个协议,他们发布了这个协议,一周后,一个来自芬兰孩子们写了第 26 个区块链应用程序,好吧,你必须改变整个协议。

那么,为什么不创建这样一个协议呢? (屏幕上是Windows Phone,屏幕下方还有一行字:特别感谢微软赞助本次发布会,全场爆笑)

为什么不创建一个基本上像智能手机一样运行的区块链协议,而不是只支持几个应用程序的区块链协议,而这就是你能用它们做的一切? 所以我们制作了一个支持编程语言的区块链协议,因此也为您提供了创建应用程序的技能。 什么是应用程序? 事实上,任何人都可以编写一些代码,将其打包、上传,然后您就拥有了一个应用程序! 如果其他人想要使用您的应用程序,他们会下载它并将其安装在他们的手机上,他们可以使用它,也可以运行它。 是的,就是这样,基本上这就是为什么手机可以打电话、浏览网页、听音乐、发短信、玩游戏的原因; 只是因为我们将成千上万的东西打包到一个设备中。 这就是通用计算的力量。 这也是我想带给区块链世界的一种精神。

概念

以太币 计算器_sitecsdn.net 以太坊和以太币的关系_小以太币和大以太币

让我们先谈谈概念,好吗? 首先,以太坊是区块链! 耶~! (观众笑)

以太经典和以太坊统一_siteshilian.com 以太坊计算机_以太坊回本计算机

添加

但是,你知道,我们添加了更多。 首先,以太坊有一种内置的通用编程语言,可以让你在其中编写许多应用程序。

在只支持汇款的区块链上,只有一种账户。 这样的帐户将是由某些用户控制并持有货币的帐户。 您将能够将这些货币从一个账户发送到另一个账户。 但是在以太坊上我们有两种类型的账户。

1. 第一类账户由用户控制,所以你有一个加密的私钥,你可以用它来代表你的地址和对消息进行电子签名以执行操作。 这些动作称为交易,可以广播到整个网络; 如果它们包含在块中,则这些操作将生效。

2. 另一种类型的账户从根本上是由运行在区块链上的一段代码控制的。 因此,您可以拥有一个由计算机程序控制的帐户,其规则可能是:如果 A 发生,则向 X 发送一些硬币; 如果 B 发生,发送一些硬币给 Y; 如果C发生,就保持现状。 如果你给这个账户发了一些币,这个账户的代码就是这样一个东西:它当时有能力把这些币转到其他地方。

从字面上看,这些是由计算机程序直接控制的电子资产。 当然,这些合约不仅仅可以用于控制电子资产。 它们可用于表示区块链应用程序中任意复杂的业务逻辑。 这还包括诸如 ENS(以太坊名称系统)之类的东西,它可用于跟踪某些区块链上的投票提案; 它还可以用于跟踪不同发行人支持的资产的不同用例。 基本上,任何人都可以通过定义合约来创建应用程序或任何规则。

DNS,以太坊的Hello World

以太币 计算器_sitecsdn.net 以太坊和以太币的关系_小以太币和大以太币

以太经典和以太坊统一_siteshilian.com 以太坊计算机_以太坊回本计算机

DNS,即以太坊的 Hello World,是您可以编写的最简单的应用程序之一,并且客观上仍然有用。 这里的关键是这是一段代码,我的意思是,您可能已经注意到代码自去年以来发生了一些变化。 基本上是因为去年你的代码是用Serpent写的,现在有了Viper,比Serpent好,以后可能会有人讲这个话题。 所以,你有两个函数代表你可以用合约做的事情。

domains: {owner: address, ip: num}[bytes32] def register(addr: bytes32):   if not self.domains[addr].owner:      self.domains[addr].owner = msg.sender def set_ip(addr: bytes32, ip: num):

小以太币和大以太币_以太币 计算器_sitecsdn.net 以太坊和以太币的关系

  if self.domains[addr].owner == msg.sender:

siteshilian.com 以太坊计算机_以太坊回本计算机_以太经典和以太坊统一

     self.domains[addr].ip = ip

(PPT上展示的代码)

首先,您对合约实际存储的内容有一个描述。 合约存储了一个关于域的映射,域的所有者就是域的所有者,域支持指向什么IP地址。 然后,有一个称为“注册”的功能,如果该域还没有所有者,则所有者由向该域发送消息的人确定。 所以无论是谁发送交易,这个功能都会被激活。 然后你有另一个“设置IP”功能,激活这个功能也很简单,它只是在你尝试为域设置IP地址时检查你是否有它,如果有,它会在你想要的任何地方设置IP地址设置.

那么,合约中存储的所有信息在哪里呢? 在简单的区块链上,您可以将记录在区块链中的状态视为账户余额的简单映射。 地址 12345 有 70 个币,地址 B7884 有 20,000 个币,以此类推。 以太坊的状态稍微丰富一些。 但它仍然是帐户内部事物的映射,但帐户内部的信息可能要复杂得多。

首先,你有账户余额,也就是账户有多少以太币。 您还有 Nonce,它是重放保护的对冲。 如果帐户是合约以太坊回本计算机,则您有合约代码。 你还有合约存储,这是一个小型数据库,以太坊上的任何合约都可以使用。 在这种情况下,从域到谁拥有该域及其 IP 地址的映射实际上将保存在合约存储库中。 区块链上的历史就是发生了什么,所以你有交易记录。 在以太坊上,你有一个叫做“收据”的概念。 目前,全节点存储状态,部分全节点存储历史,不存储历史的全节点也是可以的。

所以,这就是我们要做的。 每个账户对象包括4条数据。 我会打开它大约 5 秒钟,因为每个人都想给它拍照。 5、4、3、2、1,下一个。

状态

小以太币和大以太币_以太币 计算器_sitecsdn.net 以太坊和以太币的关系

以太经典和以太坊统一_siteshilian.com 以太坊计算机_以太坊回本计算机

(当时的PPT内容)

代码运行

每个事务指定一个 TO 地址,每个事务指定事务的目的地或目标。 如果交易对手只是一个普通账户,或者是任何意义上的真人; 并且,如果交易包括以太币,则交易意味着从一个账户转移到另一个账户。 但是,如果交易的目标包含代码,即如果交易的目标是合约,那么目标地址的代码将运行。 代码可以做很多事情。 所以一个合约也有能力将以太币发送到另一个合约。 它具有在合约中读写库的能力。 所以,如果你回过头来看这个例子(译者注:上面的域例子),对注册函数(register function)的调用就变成了一个事务,而这个事务,你知道的,会导致前面提到的域的所有者可以,并在存储库中写入信息,并且(如果需要)声明从另一个存储库读取信息。 简而言之,它可以读写库,甚至可以调用另一个合约。 这也称为内部交易:合约可以以与外部用户与合约通信完全相同的方式与其他合约通信。 每个区块链上的完整节点运行每个事务并存储所有状态。 我把它加粗了,因为它很重要。

气体

一般来说,有一种叫做“停止问题”的东西,这基本上意味着你无法从原则上真正判断一个程序是否会永远运行。 判断一个程序是否会在一系列步骤后结束以太坊回本计算机,或者永远运行下去,在数学上无法以某种方式证明。 所以,我们采用的方案是这样一种机制:我们按照交易消耗的计算步数对交易进行收费,我们衡量计算步数的单位叫做Gas。

Gas 不是货币,对吧? 天然气不是您可以转移或持有的东西。 气体只是一种计量单位。 它的意思是,这个计算,如果它消耗了 30,000 单位的气体,那么这意味着协议说它需要 30,000 单位的努力来运行这个计算。 占用库的操作也有特殊的gas费,(因为)交易占用空间。 以太坊网络产生的任何类型的成本都可以转化为某种类型的 gas 支出。 因此,每笔交易都必须指定一个gas limit,交易必须指定它可以消耗的最大gas量; 然后,当代码运行时,操作开始使用 Gas; 如果代码在 Gas 耗尽之前停止,那么一切都很好; 但如果代码运行到所有 Gas 用完的地步,那么交易将恢复到原来的状态并消失得无影无踪,但交易的发送方仍然需要支付费用。

所以以太坊的gas limit对应比特币的block size limit,设置方式也很简单——基本由矿工投票决定。 现在,gas limit 是 670 万个单位。 如果我们已经达到上限并且有必要提高它,矿工可以投票。 这很简单。

贸易

siteshilian.com 以太坊计算机_以太经典和以太坊统一_以太坊回本计算机

sitecsdn.net 以太坊和以太币的关系_小以太币和大以太币_以太币 计算器

日志

日志是一种形式的库,只能添加到合约中,而不能被合约读取。 Log 的意义在于,假设在合约执行过程中发生了一个事件,我们想让人们很容易地搜索到这些事件并检测到这些事件已经发生。 所以一个Log最多可以有4个“主题”(32字节),这里有一个布隆过滤器(Bloom Filter),可以让你非常方便的搜索主题。 同时这也允许您存储任意数量的数据。 这些日志被放入 Merkle 树中,这允许非常高效的轻客户端访问日志。 如果你有轻客户端,可以通过Log进行搜索,可以使用topic作为关键字,这样也可以方便的搜索到合约创建的特定类型的事件。 这对于去中心化应用程序 (Dapp) 编程非常有用。

以太坊虚拟机 (EVM)

一开始,您有一个堆栈,您可以从中添加 (push) 和输出 (pop) 数字。 你有内存,内存是虚拟机可以访问的临时数据集。 所以内存只在我在运行环境中短时间存在,而一旦以太计算器执行结束,内存就不存在了。 存储和合约数据库一样,是一个永久的存储空间。 环境变量,诸如区块号或时间戳之类的东西可以通过以太坊虚拟机上的合约获得。 而且你还有 Log 和 sub-calling,所以合约有能力通过发送我们所谓的“内部交易”来调用其他合约。

大多数时候,您不会直接编写 EVM 代码,因为直接编写 EVM 代码是微不足道的。 相反,您将使用编译为 EVM 代码的高级语言编写。 这里有一些这样的高级语言,你可以使用 Viper、Solidity、LLL 和 Bamboo。 此外,您可能已经注意到 Serpent 不再在此列表中,如果您仍在使用 Serpent,我建议您切换到 Viper。

阿比

这就是编译函数调用或将其代码写入交易数据的方式。 因此,如果您正在调用一个合约,实际发生的是它进行函数调用,并且,呃,抱歉,如果您正在调用一个函数,实际发生的是它正在创建一个交易,并且该交易包含指定的数据这个公式。 所以一开始4byte是函数ID,然后32byte是一个要求,然后32byte又是一个要求。 如果你尝试在合约中请求一个函数,那么你的客户端将创建交易,将交易广播到网络,然后合约代码可以读取交易数据,然后解析交易数据的前 4 个字节就是调用的功能,其他字节是其他声明。 所以,基本上这就是如何简单地调用一个函数。

视频链接:

币圈新闻,版权所有丨如未注明,均为原创丨本站受BY-NC-SA协议授权

转载请注明原文链接:(中国)搜狗百科以太坊计算器(2023年更新(今日/知乎)