主页 > imtoken最新版本 > 有余额的以太坊私钥 科普 | 以太坊-家园

有余额的以太坊私钥 科普 | 以太坊-家园

imtoken最新版本 2023-04-26 07:57:03

在前两个节选中,我们了解了以太坊的基本概念和以太坊的历史。 本节摘录将向您介绍以太坊的几个核心技术概念; 并且有一个例子可以帮助读者理解智能合约。

外部账户(EOA)和合约账户

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

外部账户(外部角色拥有的账户)

外部账户

合约账户

合同

以太坊区块链上的所有操作都设置为由来自外部账户的交易触发。 每当合约账户收到交易时,其代码都会根据作为交易一部分传入的参数执行。 作为验证新块的一部分,将在网络中每个节点上的以太坊虚拟机中执行。

这个执行需要是完全可预测的,它拥有的唯一上下文是区块在区块链中的位置和所有可用数据。 区块链上的一个区块相当于一个时间单位,区块链本身在时间维度上记录了链上所有区块的状态变化历史。

以太坊有用吗_有余额的以太坊私钥_以太坊钱包私钥

所有以太币余额均以 wei 记录:1 以太币等于 1e18wei(10 的 Wei 的 18 次方)。

以太坊中的“合约”不应被认为是一种“实现”或“编译”,它们更像是以太坊运行环境中的“自治代理”,会被消息或交易所“插入”执行特定代码并具有由他们自己的键/值存储存储的永久状态,由他们自己的以太币余额控制。

什么是交易?

在以太坊中,所谓“交易”是指存储消息并从区块链上的一个外部账户发送到另一个外部账户的签名数据包。

交易包括:

什么是新闻

合约可以向其他合约发送“消息”。 消息是一些虚拟的对象,它们不会被序列化,只存在于以太坊的执行环境中,可以理解为函数调用。

消息包括:

粗略地说,一条消息就像一笔交易,只不过它是由合约而不是外部用户产生的。 当合约代码执行 CALL 或 DELEGATECALL 操作码时,会生成并执行一条消息。 与交易一样,消息会导致收件人帐户执行其代码。 这样,合约就可以与其他合约建立关系,就像外部用户可以与交易建立关系一样。

有余额的以太坊私钥_以太坊有用吗_以太坊钱包私钥

什么是气体?

以太坊在称为以太坊虚拟机 (EVM) 的区块链上实施执行环境。 网络中的每个节点都运行 EVM 作为块验证协议的一部分。 他们逐一检查正在验证的区块中的所有交易,并在 EVM 中执行由这些交易触发的代码。 网络中的每个全节点都执行相同的计算并保存相同的结果。 显然,以太坊并不是在优化计算效率,它的并行计算是不必要的; 这是为了提供一种在不需要第三方、权威或垄断的情况下就系统状态达成共识的方法。 这当然不是为了优化计算,实际上是在每个节点上不必要地重复执行合约,这使得合约变得昂贵。 所以一般来说,不鼓励在链上运行可以在区块链外完成的计算。

当您运行去中心化应用程序 (dapp) 时,它使用区块链来读取和修改其状态。 但这些应用程序只将那些对达成共识最重要的业务逻辑和状态存储在区块链上。

当合约被消息或交易触发时,每条预设指令将在网络中的所有节点上执行。 这导致了一个结果:每个执行的操作都有特定的成本以 gas 衡量。

Gas 是交易发送方需要为在以太坊区块链上执行的每个操作支付的执行费用的名称。 这笔费用可以想象成一种驱动智能合约执行的加密气体,这就是气体名称的灵感来源。 Gas 以以太的形式从执行代码的矿工那里购买。 Gas 和 Ether 是故意不同的概念,因为 Gas 相当于计算单元的自然消耗,而 Ethereum 的价格通常会因市场原因而波动。 自由市场可以调和两者:gas 价格实际上是由矿工设定的,他们可以拒绝 gas 价格低于最低价格的交易。 要获得 Chi,你只需要向你的帐户添加以太币。 以太坊客户端将根据您为交易所指定的最大支出自动用您的以太币购买天然气。

为了防止蓄意攻击或滥用以太坊网络,以太坊协议规定在执行合约或交易时的每个计算步骤都需要支付费用。 每笔交易都需要包括一个 gas 限额和你想为每种 gas 支付的费用。 矿工可以决定是否包含交易并获得相应的报酬。 如果交易产生的所有计算步骤(包括原始消息和所有其他可能触发的消息)所需的gas总量小于或等于交易中指定的gas上限,则交易将被处理. 如果实际消耗的gas总量超过了交易gas的上限,所有的变化都将被还原,除了交易仍然有效,矿工仍然可以收取手续费。 交易执行期间未消耗的所有多余气体将作为以太币返回给发送方。 你不需要担心超支,因为你最多只会被收取你在交易中收取的所有gas(即你为交易指定的gas上限,译者注)。 这意味着为您的交易指定一个高于估计的天然气上限是有用且安全的。

账户交互示例——对赌合约

如前所述,有两种类型的合同:

默认情况下,以太坊的执行环境是不活跃的有余额的以太坊私钥,所有账户的状态都是一样的。 然而,任何用户都可以从外部账户发送交易以启动以太坊。 如果交易被发送到另一个外部账户,交易转移了一些以太币但没有其他事情发生。 而如果交易的目标是合约账户,那么合约就会被激活,里面的代码就会运行。

以太坊钱包私钥_有余额的以太坊私钥_以太坊有用吗

这些代码可以从它控制的内部存储(由 32 字节的键和 32 字节的值组成的数据库)中读取和写入数据,可以读取接收到的消息,还可以向其他合约发送消息以触发它们顺序执行。 一旦合约执行结束,即当合约发送的消息触发所有执行时(这是一个可预测的同步序列,也就是说父调用会等待子调用完成再继续执行) 停止,执行环境将再次暂停,直到下一个事务发生。

合约账户通常有四个目的:

合约通过“调用”和“发送消息”与其他合约进行交互。 “消息”是一个对象有余额的以太坊私钥,包含一定数量的以太币、任意大小的数据字节以及发送方和接收方的地址。 当合约接收到消息时,它可以返回一些数据给消息发送者,这样发送消息就像调用函数一样。

因为合约可以扮演这些不同的角色,所以我们可以要求它们之间有更多的交互。 例如,我们可以想象这样一种情况,Alice 和 Bob 下注 100 GavCoin,赌旧金山的气温在明年的任何时候都不会超过 35ºC。 然而,爱丽丝是一个非常注重安全的人。 她的主账户使用转发合约,只有三分之二的私钥通过后,她才能发出消息。 Bob是一个对统计密码学持怀疑态度的人,所以他采用了只能通过Lamport签名(一种一次性单向签名算法,译者注)和传统ECDSA签名(即椭圆曲线签名算法,译者注)才能发送的方法注)已经联合处理过的消息的转发合约(但由于他的保守性,他使用以太坊不直接支持的基于SHA256的Lamport签名算法)。

博彩合约本身需要从其他合约获取旧金山的天气数据,在实际将 GavCoin 发送给 Alice 或 Bob(更准确地说,发送给他们的转发合约)时,也需要与 GavCoin 合约进行交互。 我可以用下图来表示账户之间的关系:

以太坊钱包私钥_有余额的以太坊私钥_以太坊有用吗

合同关系.png

当 Bob 希望结束赌注时,将执行以下步骤:

1. 交易被发送,触发消息从 Bob 的外部账户到他的转发合约。

以太坊有用吗_以太坊钱包私钥_有余额的以太坊私钥

2. Bob的转发合约将消息的哈希值和Lamport签名发送给一个合约,作为Lamport签名验证库。

3、Lamport签名验证库发现Bob需要一个基于SHA256的Lamport签名,因此需要多次调用SHA256库来验证签名。

4.一旦Lamport签名验证库返回1,即签名验证成功,就会向VAM合约发送消息。

5. 投注合约将对合约提供的温度数据进行校验,获取旧金山的温度数据。

6. 如果VAM合约发现温度数据超过35ºC,它会发送消息给GavCoin合约,将合约账户中的GavCoin转给Bob的转发合约。

请注意,所有 GavCoin 都存储在 GavCoin 合约的数据库中。 上面第6步提到的“合约账户”是指GavCoin合约内部会有一个以合约地址为key,余额为value的数据项。 . GavCoin合约收到这条消息后,会从这个地址中减去一定的金额,并在Bob的转发合约地址中添加相应的金额。 我们可以在下图中看到这些步骤:

以太坊有用吗_有余额的以太坊私钥_以太坊钱包私钥

合同关系2.png

后记

有余额的以太坊私钥_以太坊有用吗_以太坊钱包私钥

拜占庭(Byzantium)的第一阶段,即以太坊的下一个版本Metropolis,于今年10月16日上线。 社区计划通过拜占庭和后续的君士坦丁堡(Constantinople)两个阶段对以太坊的一些基础协议和算法进行重要的技术改进,我会尽快开始这个版本相关资料的翻译。

Homestead 版本文档中文版的摘录到这里就告一段落了。 除了我挑选的这些比较概念性的介绍外,Homestead文档中还有很多关于以太坊客户端、相关技术细节、工具使用的介绍。 感兴趣的读者可以访问我的Github获取完整的中文版源码资源。

以以太坊为代表的去中心化互联网基础服务(智能合约平台)是先进的、颠覆性的模式。 未来的互联网将是集中服务和分散服务的结合。 相信随着我们生活信息化程度的提高,这种几乎完全自动化、无需信任的交易(合约)模式会被越来越多的人所认识和接受。

译者:冯敬峨眉黑

本文首发于简书,EthFans经授权转载。

Ethereum-Homestead-Guide中文版节选系列:

你可能还喜欢:

1、

2、

3.以太坊连载(十一):以太坊账户管理: