Aleo之家
中文资讯网

以简单的方式解释以太坊复杂的概念

目前不清退的交易所推荐:

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.domchdqmse.com/zh-hans/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!

2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183? 网页端使用邮箱注册(支持QQ邮箱),注册成功之后务必在网页端完成 手机号码绑定,大陆号码输入+086即可 ,实名认证。推荐在APP端实名认证初级+高级更方便上传。网页端也可以实名认证。

全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031 ?币安支持币种多,交易安全!注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。

TraderWagon币安带单:https://www.traderwagon.com/zh-CN/register?ref=zoh4gfu

币安带单邀请码:zoh4gfu

#1 — 气体和图灵完备性问题

以太坊是一个图灵完备的系统。这意味着在内存有限的情况下,它可以执行任何图灵机可以执行的任何算法。

然而,正如图灵所证明的,通过在计算机上模拟一个程序,我们永远无法预测它是否会终止?

所以问题是我们如何保证以太坊交易会被终止?

答案是一个叫做“气体”的概念。

以太坊虚拟机(EVM)上的每个操作都与特定的价格(gas)相关。现在,如果用户想向 EVM 发送交易,她应该支付 gas 费。当 EVM 处理此交易时,它会从每次操作(读取、写入等)提供的 gas 费用中扣除必要的 gas。现在,可能会发生两件事:

  1. EVM 成功终止了执行。剩余的gas将退还给发件人。
  2. EVM 消耗了所有的 gas,但交易不会完成。在这种情况下,交易将被终止。

如您所见,通过引入气体概念,以太坊现在具有可预测的行为。现在,我们可以通过在计算机(EVM)上模拟一个程序来保证它会终止与否?

此外,这是一种避免 DoS 攻击的安全措施。想象一下,EVM 调用不需要 gas。在这种情况下,黑客可以通过交易向网络发送垃圾邮件。结果,网络很容易拥塞,整个区块链可以在几秒钟内关闭。

ETH Gas Station网站是获取有关 Gas 最新信息的有用在线参考。

#2 — ERC 标准

ERCEthereum I mprovement Proposal的首字母缩写词。每个 ERC 都是在以太坊区块链之上定义的一组规则和标准,并定义了几件事,例如:

  • 智能合约规则和条件
  • 令牌创建规则
  • 代币买卖条件
  • 创建代币的名称和符号
  • 数据标准
  • 钱包标准
  • 和更多。

目前,以太坊区块链中定义了多个 ERC。以下是完整列表,供参考²:

  • ERC-55:混合大小写校验和地址编码。
  • ERC-137:以太坊域名服务——规范。
  • ERC-162:初始 ENS 哈希注册器。
  • ERC-165:标准接口检测。
  • ERC-181: ENS 支持以太坊地址的反向解析。
  • ERC-190:以太坊智能合约打包标准。
  • ERC-191:签名数据标准。
  • ERC-600:确定性钱包的以太坊用途分配。
  • ERC-601:确定性钱包的以太坊层次结构。
  • ERC-681:交易请求的 URL 格式。
  • ERC-721:不可替代的代币标准。
  • ERC-777:代币标准。
  • ERC-820:伪自省注册表合同。
  • ERC-1155:多令牌标准。
  • ERC-1167:最小代理合同。
  • ERC-1363:支付令牌。
  • ERC-1820:伪自省注册表合同。
  • ERC-2309: ERC-721 连续传输扩展。
  • ERC-2678:修订的以太坊智能合约打包标准(EthPM v3)。
  • ERC-2981: NFT 版税标准。
  • ERC-3156:快速贷款。

#3 — ERC-20 代币

ERC-20 是与 Token 创建相关的标准。它是一个“接口”,允许开发人员在以太坊区块链之上构建代币。

在编程中,接口是对一组对象的一般描述,而不声明对象的行为。接口定义了参数和方法的抽象定义,而不定义它们的逻辑或实现。稍后,每个对象都可以实现接口并向其添加自己的逻辑版本。

ERC-20 是一个由以太坊区块链驱动的接口,使用它,开发人员可以构建他们定制的代币。换句话说,ERC-20 是一组代币属性和方法的抽象定义。稍后,在实施 ERC-20 代币时,开发人员可以实现此类属性和方法,并为他们的代币添加自己的逻辑集。

ERC-20 代币有 3 个可选参数/方法来设置:

  • 名称:您的令牌的名称。
  • 符号:您的代币的符号(或股票代码)。
  • 小数:令牌应支持的小数位数。

如果您希望创建 ERC-20 代币,您可以定义它们或直接忽略它们。

ERC-20 代币有 6 个必须设置的参数/方法:

  • totalSupply:创建新令牌的限制。
  • balanceOf:定义给定地址有多少令牌?
  • 转移:从总供应量中取出一定数量的代币,并将其提供给用户。
  • transferFrom:用于在持有代币的任意两个用户之间转移代币。
  • 批准:考虑到总供应量,验证您的合约是否可以向另一个用户提供一定数量的代币。
  • 津贴:与批准 + 检查用户是否有足够的余额以将一定数量的代币发送给另一个用户相同。

如果你想创建一个 ERC-20 代币,你必须定义它们。换句话说,你不能忽略定义这 6 件事。

将代币定义为 ERC-20 的主要优点如下:

  • 在以太坊区块链之上构建加密资产;因此利用了以太坊区块链提供的主要功能。
  • 对新代码进行最小调整,并使用现有代码和基础设施构建新代币。
  • 被交易所上市的机会更高。
  • 与现有钱包集成的机会更高。

将代币定义为 ERC-20 的主要缺点如下:

  • 对以太坊区块链的依赖。如果以太坊出现问题,代币也会受到影响。
  • 购买或出售代币的高昂汽油费——至少在 ETH 2.0 解决这个问题之前。
  • 由于智能合约不兼容或设计不佳导致代币丢失或冻结的可能性。

我还有另一个故事,我在其中更详细地解释了 ERC-20 代币。

您需要了解的有关 ERC-20 代币的所有信息

ERC 接口、实施注意事项、著名的 ERC-20 代币等。

媒体网

#4 — 外部拥有的账户 (EOA) 和合约账户

区块链中的账户通常是指用于保存数据(例如资金或合同)的占位符。账户也可用于发起交易(例如发送或接收资金)。

比特币区块链(和许多其他区块链)只有一种账户类型。用户可以在这些平台上创建一个帐户,然后他们将拥有与该帐户关联的私钥。稍后,他们可以使用他们的帐户进行交易。

不过,以太坊区块链上的账户类型有点不同。

以太坊有两种类型的账户:

外部拥有的账户 (EOA):

  • 与公共帐户地址相关联。
  • 账户持有人可以访问账户的私钥。
  • 账户持有人可以访问与账户相关的资金或合同。

合约账户:

  • 与公共帐户地址相关联。
  • 该帐户没有任何私钥。
  • 该帐户与智能合约的逻辑相关联。

如您所见,这两种类型的帐户之间的主要区别在于两点:

  1. EOA 账户有私钥,而合约账户没有。
  2. EOA 账户与资金/交易绑定,合约账户与智能合约交互。

简而言之,合约账户没有任何私钥。因此,他们无法发起交易。他们只能通过调用智能合约的逻辑来对它们做出反应。这个逻辑可以像将以太币从一个 EOS 转移到另一个一样简单。它也可能像调用其他几个外部合约账户一样复杂。

#5 — EVM 字节码

以太坊虚拟机(EVM)是以太坊区块链的核心组件,负责执行智能合约。

智能合约通常使用 Solidity 等高级编程语言开发。

这是用 Solidity 编写的此类合约的示例。

1CSAk5YmODiBXxiqrP6u1wA

一旦开发和编译了智能合约,您就可以将它们部署到以太坊区块链。为此,代码将被转换为一种称为 EVM 字节码的低级编程语言。

这是编译上述智能合约的源代码并获得它的 EVM 字节码版本的结果。

14iqkqJWJtL296qmhWBWXkQ

EVM 字节码不是人类可读的。它们包含操作码和字节。部署合约后,其字节码将记录在区块链上,并为合约分配一个地址。在那之后,如果有人向这个合约地址发送交易,它会导致合约在 EVM 中运行字节码,并将交易作为其输入。

#6 — 以太坊客户端

要运行以太坊节点(轻型或完整),您需要安装一个名为以太坊客户端的特定软件。

在您的机器上安装客户端软件后,您可以执行以下操作:

  • 运行一个节点
  • 作为节点加入以太坊网络
  • 下载区块链数据(完整或修剪)
  • 发送交易
  • 与智能合约交互
  • 管理地址

如果你使用客户端运行节点,你可以在没有中介的情况下与合约交互、部署合约、查询区块链状态(账户、合约等)。此外,客户端软件通过同步区块链数据、运行节点和验证交易,让您成为以太坊网络的贡献者。

以太坊协议在其“黄皮书”中定义了正式规范。不同的公司根据这个通用规范开发了各种版本的以太坊客户端。以下是一些最重要的:

  • Parity,用 Rust 编写(由以太坊的前联合创始人和 Polkadot 的创始人 Gavin Wood 博士开发)
  • Geth,用 Go 编写(以太坊组织推荐的官方客户端)
  • cpp-ethereum,用 C++ 编写
  • pyethereum,用 Python 编写
  • Mantis,用 Scala 编写
  • 和谐,用 Java 编写

通常,这些客户端遵循以太坊提出的相同协议并且是可互操作的。这意味着例如运行 Parity 的完整节点可以与另一个执行 Geth 的节点交换数据。

#7 — 以太坊钱包

以太坊钱包只负责管理钱包所有者的密钥。它与保存以太币或任何其他代币无关。这些资产保存在区块链本身中。从这个意义上说,钱包是使用密钥和数字签名将用户与其资金连接起来的接口。

根据钱包生成的密钥类型,有两种类型的钱包:

非确定性钱包——也称为 JBOK(Just Bunch Of Keys)——使用不同的随机数生成独立的密钥。生成的密钥之间没有任何关系。例如,以太坊的“geth”客户端为每个私钥使用 JSON 编码的密钥库文件。该文件包含一个随机生成的私钥,由密码加密以提高安全性。不确定的钱包很难备份。

11uK7L33cwPakQhoOA9-bjQ
由 geth 生成的 JSON 编码的密钥库文件(非确定性钱包)

确定性钱包使用单个主密钥(也称为种子短语)来生成所有密钥。所有生成的密钥都是相互关联的,如果可以访问主密钥,则可以重新生成。因此,备份确定性钱包是一件容易的事。例如,分层确定性 (HD) 钱包由比特币的 BIP-32 标准定义。这些钱包包含以树形结构派生的密钥,这样父密钥可以派生一系列子密钥,每个子密钥都可以派生一系列孙密钥,依此类推。

1Ug9_8YHWXKdNV6yCj-Yg7w

以太坊钱包(浏览器、桌面、硬件等)在实现层基本遵循4个标准协议:

  • 助记码字,基于BIP-39。
  • 高清钱包,基于BIP-32。
  • 多用途高清钱包结构,基于BIP-43。
  • 基于BIP-44的多币种和多账户钱包。

#8 — 椭圆曲线乘法和 Keccak-256

与任何其他区块链一样,以太坊使用加密模型来创建和保护用户帐户。密码学是任何区块链的核心模块,具有许多技术细节和规范。然而,您在这里必须了解的最重要的事情与帐户的创建方式以及交易将如何通过网络传递有关。

  • private-key:让用户控制帐户的秘密短语(如银行帐户的秘密 PIN)。
  • 公钥:用户可以与他人共享以标识自己的公共短语(如银行帐号)。
  • 账户地址:用于通过网络进行交易的公共短语 银行转账的收款人账户详细信息)。
  • 数字签名:证明交易真实性和其中包含的数据的密码短语(如银行支付中的转账证明)。

不同的区块链使用不同的模型和算法来生成和管理密钥、地址和签名。

以太坊为此使用了两种算法:

  • 椭圆曲线乘法:一种用于加密数据的单向函数。在一个方向(乘法)使用此功能很容易,而在相反方向(除法)则无法使用。
  • Keccak-256 散列函数:一种单向散列函数,可将任意大小的数据映射到固定大小的位串。

以下是此过程的摘要:

  1. 私钥是使用安全的伪随机数生成器(例如 CSPRNG)生成的。
  2. 公钥是使用椭圆曲线乘法从私钥中获得的。
  3. 账户地址是使用 Keccak-256 哈希函数从私钥中获取的。

椭圆曲线和 Keccak-256 算法也用于生成数字签名。

让我们看一个例子:

假设我们有以下私钥(随机生成):

私钥 = kf8f8a2f43c8376ccb0871305060d7b27b0554d2cc72bccf41b2705608452f315

使用椭圆曲线乘法,我们得到与这个私钥相关联的公钥。

公钥 = 6e145ccef1033dea239875dd00dfb4fee6e3348b84985c92f103444683bae07b83b5c38e5e…

然后我们使用 Keccak-256 来计算这个公钥的哈希值。

Keccak256(公钥)= 2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9

最后,我们保留此哈希的最后 20 个字节(最低有效字节)并在它们之前添加 0x 前缀。

以太坊地址 = 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9

#9 — 交易

首先,让我们给出以太坊交易的一般定义。

以太坊交易是由外部拥有账户 (EOA)发起的签名消息,可以触发区块链中的状态变化

在此定义中,您必须记住三件重要的事情:

  1. 任何交易在发送到区块链进行验证之前都应该由发送者签名。
  2. 智能合约无法发起交易。所有交易——包括那些触发合约的交易——都应该由外部拥有的账户发起。
  3. 以太坊是一个全局单例状态机。事务是使该状态机触发的原因。

每笔交易的基本结构包含以下几条数据:

  • 随机数:一个标量值,等于从该地址发送的交易数量,或者在具有关联代码的账户的情况下,该账户创建的合约数量。主要用于防止交易重放,对同一账户发出的交易下达指令。类似的概念存在于比特币网络中,名为未使用的交易输出(UTXO)。
  • Gas Price:发送者愿意为换取gas而支付的价格。价格以每气体单位的 Wei 计量。请记住,Gas 是以太坊的燃料,它是一种独立的虚拟货币,有自己的以太币汇率。因此,发送方需要在交易数据中指定此汇率。这个比率越高,矿工就越有可能更快地处理这个交易。
  • Gas Limit:交易发起者为完成交易愿意购买的最大 Gas 单位数。例如,将以太币从一个 EOA 转移到另一个 EOA 的固定成本为 21,000 个气体单位。对于更复杂的场景,例如智能合约执行,应该猜测这个 gas 限制(例如通过钱包)。这些猜测并不总是准确的。智能合约也可能有意想不到的行为。因此,发送者通常会指定一个超过所需气体的“气体限制”。然后,交易只向她收取她消耗的汽油费。
  • 收件人:一个 20 字节的以太坊地址。该地址可以属于 EOA 或智能合约。请注意,以太坊区块链没有任何验证此地址的机制。发件人应确保她将交易发送到有效地址。如果该地址不存在,则交易将被发送到一个无效地址,并且与之相关的任何资产都将被永远销毁。
  • 价值:当交易有支付组件时,这是一个必要的字段。它是发送者希望发送给接收者的值。如果收件人是 EOA,此值将影响她的余额。如果收件人是合约,那么合约的余额会受到影响。
  • 数据:当事务有调用组件时,这是一个必要的字段。如果接收方是 EOA,则接收方的钱包或接口将负责处理此数据负载。在合约的情况下,接收到的数据将被解析,然后在 EVM 中执行相应的方法。
  • v、r、s:原始 EOA 的椭圆曲线数字签名算法 (ECDSA) 的三个组成部分。该数据使接收者有理由相信该消息是由已知的发件人创建的(身份验证),发件人不能否认已发送该消息(不可否认性),并且该消息在传输过程中未被更改(完整性)。签名验证意味着“只有生成此公钥的私钥所有者才能在此交易中生成此签名。”

要在以太坊中签署交易,涉及以下步骤:

  1. 发送者创建一个包含九个字段的交易:nonce、gasPrice、gasLimit、to、value、data、chainID、0、0。
  2. 将生成交易数据结构的 RLP 编码序列化消息。
  3. 将生成上一步中序列化消息的 Keccak-256 哈希。
  4. 将计算 ECDSA 签名,并使用原始 EOA 的私钥对哈希进行签名。
  5. ECDSA 签名计算的 v、r 和 s 值将附加到交易中。
  6. 交易将被发送到网络。

此外,钱包或客户端软件可能会附加元数据信息,例如块号(一旦交易被挖掘)和交易 ID(计算的哈希)。

#10 — ETH 2.0

根据以太坊组织:

Eth2 指的是一组相互关联的升级,这将使以太坊更具可扩展性、更安全和更可持续。这些升级由来自整个以太坊生态系统的多个团队构建。

0qvi1Hhblt374U2pW

区块链为我们提供了去中心化、安全和可扩展的解决方案的所有灵活性。或者更好地说,他们试图到达那里!

对于区块链,我们希望:

  1. 您的资金是安全的(安全性)。
  2. 你不需要依赖第三方(去中心化)。
  3. 您的交易将被快速且廉价地执行(可扩展性)。

这些条件定义了区块链三难困境。因此,如果您可以开发一个同时解决所有这三个问题的区块链,您可以声称它是完美的。

ETH 2.0 和去中心化

以太坊是最去中心化的区块链之一。它在不同的地理位置拥有数千个节点和矿工。ETH 2.0 的引入将使 ETH 成为一种产生收益的资产。因此,我们可以预期网络中活动节点的数量呈指数增长。此外,以太坊 2.0 至少需要 16,384 个验证者,这使得它更加去中心化——因此也更加安全。

ETH 2.0 和安全

ETH 1.0 目前正在使用工作证明(POW)共识。ETH 2.0 将向以太坊引入股权证明(POS)。POS 将有助于保持以太坊更加安全。根据以太坊组织声明:

把它想象成一种公共物品,它将使以太坊更健康,并在此过程中为你赚取更多的 ETH。实际上,这将涉及您质押 ETH 以激活验证器软件。作为验证者,您将处理交易并在链中创建新块。质押和成为验证者比挖矿(网络当前的安全方式)更容易。从长远来看,这将有助于使以太坊更加安全。参与网络的人越多,它就会变得越去中心化和安全。

ETH 2.0 和可扩展性

ETH 2.0 还将通过引入分片机制来解决交易费用和时间问题。通过此次升级,该平台将在更短的时间内处理数千笔交易。分片是此次升级的重要组成部分。它只是意味着将大链拆分/分区为较小的链(碎片)。然后,工作量将分布在几个验证者之间。这种分布大大提高了可扩展性。可以同时处理的交易数量将会增加。结果,将避免网络拥塞,并降低交易费用。

币安带单邀请码:zoh4gfu

TraderWagon币安带单:https://www.traderwagon.com/zh-CN/register?ref=zoh4gfu

全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031 ?币安支持币种多,交易安全!注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。

目前不清退的交易所推荐:

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.domchdqmse.com/zh-hans/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!

2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183? 网页端使用邮箱注册(支持QQ邮箱),注册成功之后务必在网页端完成 手机号码绑定,大陆号码输入+086即可 ,实名认证。推荐在APP端实名认证初级+高级更方便上传。网页端也可以实名认证。

火必所有用户现在可用了,但是要重新注册账号火币https://www.huobi.com

全球最大交易所币安

国区邀请链接:https://accounts.marketwebb.academy/zh-CN/register?ref=16003031 支持86手机号码,网页直接注册。

全球最大交易所币安

国区邀请链接:https://accounts.marketwebb.academy/zh-CN/register?ref=16003031 支持86手机号码,网页直接注册。

赞(0)
未经允许不得转载:Aleo之家 » 以简单的方式解释以太坊复杂的概念