主页 > 最新imtoken官网下载地址 > 以太坊黄皮书连载(一)

以太坊黄皮书连载(一)

最新imtoken官网下载地址 2023-06-23 05:08:47

译者:Jorden Gao Email:gaotl33@126.com / tianlu.jorden.gao@gmail.com

本文作者:以太坊 & Ethcore 创始人 Gavin Wood 博士邮箱:GAVIN@ETHCORE.IO

摘要:以下是一个实现加密保护交易的区块链示例,它已经通过与比特币一样多的项目展示了它的实用性。 每个单独的项目都可以看作是一个基于去中心化但独立于计算机资源的简单应用程序。 我们称这种范式为共享状态和可交易的独立机构。

以太坊只是采用一种通用的方法来完成这种范式。 未来,以太坊会提供大量的资源,每一种资源都是完全不同的状态和运行代码,但它们之间可以通过一个通信框架进行通信。 我们讨论了它的设计、实施挑战、它提供的机会以及我们想象的未来障碍。

1 简介

随着世界上大多数城市普遍互联网连接的发展,全球信息共享的成本越来越低。 像比特币这样的技术级运动已经出现,同时通过默认的计算能力、公式机制和自愿的社会契约与世界共享并完全免费使用。 这个系统可以说是密码安全的一个非常特殊的例子以太坊账号,因为它是一个基于交易的状态机。 作为一种进一步发展的货币,Namecoin是一个非常简单的货币,但它的系统实现了这种技术从最初的“货币应用”到其他应用。

以太坊是一个试图构建通用技术的项目; 这些技术可能都建立在基于事务的状态机的概念之上。 而以太坊将要为终端开发者提供一个紧凑而全面的端到端系统,其目的是开发目前尚未开发的计算机软件实例:计算机通信的可信机制框架。

驱动因素。 以太坊有很多目标,其中最重要的是简化彼此不信任的个人之间的交易。 这些不信任可能是由于地理分离(远距离)、接口困难或不兼容、无能、不情愿、廉价、不确定、不便或现有法律体系的腐败。 因此,我们想用丰富而清晰的语言来解释一个转盘变化系统,并构建一个可以自动执行论证并给我们理想期望的系统,最后给出一个研究这个系统的计划。

在研究这个系统的过程中,发现有几个属性在现实世界中很难找到。 最难找到的是正义和廉洁,因为它来自廉洁的算法程序员。 第二个是透明度,或者能够清楚地看到状态或决定如何传输到交易日志和规则或代码的能力。 基于人性的系统几乎不可能完美发生以太坊账号,因为自然语言的必要模糊性、信息的不断遗漏和不变的想法使得透明度难以实现。

总的来说,我希望发明一个系统,让用户可以放心他们的交易是安全的,无论是与其他个人、系统还是组织。 并且用户可以完全安心地处理这些可能的结果并实现这些结果。

sitecsdn.net 以太坊和以太币的关系_以太坊为什么叫以太坊_以太坊账号

早年事迹。 2013 年 9 月下旬,Buterin 首次提出了此类工作的系统机制。 虽然已经开发了很多方法,但主要的区块链功能是在交易模式下具有图灵完备的语言和有效的不受限制和不可变的存储容量。

早在 1992 年,Dwork 和 Naor 就提出了一种通过网络传输价值信号和密码学来证明计算机工作量的方法(“工作量证明”)。 在这里,这些价值信号被用作垃圾邮件拦截机制,而不是任何一种货币。 但经过多次证明,这个底层底层数据通道可以承载强大的金融信号,同时允许接收方做出独立于信任的物理断言。 2002年下半年发明了类似血管(静脉)的系统。

Vish-numurthy 等人在 2003 年使用了第一个计算机工作量证明范例,用于确保货币安全的强大金融信号。在这种情况下,它的令牌用于将 p2p(点对点)交易文件保存在检查,同时确保“消费者”可以向供应商的账户进行小额支付(支付)。这种工作量证明安全模型通过电子签名技术、账本技术得到增强,确保历史记录不会被破坏,恶意行为不会欺骗五年后(2008 年),中本聪推出了另一种通用的安全工作量证明价值代币,比特币成为该项目的产物,它是全球第一个被广泛接受的去中心化交易账本。

由于比特币的成功,数字货币项目如雨后春笋般涌现; 通过更改其协议创建了数千种其他货币。 2013 年,Sprankel 讨论了更知名的代币,如莱特币和素数币。 以及其他项目正在探索本协议有价值的核心内容机制并加以完善; 例如,2012 年,Aron 讨论了域名币(Namecoin)项目,并计划制定一个去中心化的域名争议解决系统。

其余的项目基本上都是基于共识机制的原理建立在比特币之上,同时利用这个系统巨大的价值和巨大的计算能力。 2013 年,第一个 Mastercoin 项目由 Willett 提出,其目标是通过从属插件的数字化使用,创建一个比比特币上层协议具有更高级功能的丰富核心协议。 2012 年,Rosenfeld 提出 Colored Coins 项目,简化这些协议,但保持功能不变,同时完善交易规则,以打破比特币基础货币的可替代性,并允许使用特殊的色度钱包(“chroma-wallet”) ) 来创建和跟踪这些令牌——一种感知协议的软件。

该领域的其余工作已通过放弃一些分散的基金会来完成; 2014 年,Boutellier 和 Heinzen 讨论了 Ripple。 它探索并创建了货币兑换的“联邦”系统,同时有效地创建了一个新的金融结算系统。 这个金融系统表明,如果可以放弃去中心化的基础,就可以创造有效的回报。

1997 年,Szabo 和 Miller 已经完成了早期的智能合约(“smart contract”)。 在 1990 年代,很明显,由算法执行的协议在人类合作中发挥着重要作用。 虽然当时没有设计出具体的方法来实施这种制度,但有人认为这种制度会严重影响未来的法律。 鉴于这一预言,以太坊可被视为实现此类密码法则的系统的成就。

2. 区块链实例

以太坊作为一个整体,可以被认为是一个基于交易的状态机:我们从“创世”状态开始,然后通过写入执行交易进入最终状态。 这个最终状态就是我们在以太坊世界可以接受的权威版本。 这个状态保存了一些信息,比如账户余额、声誉、声誉和附加的真实世界数据。 总而言之,当今计算机可以描绘的任何事物都是似是而非的。 因此,交易代表了两个状态之间的有效桥梁; 这个“有效”很重要——因为无效状态变化比有效状态变化多得多。 举个例子:一个无效的状态变化可能是一个账户的余额在这里减少了,但同样的金额没有添加到任何其他账户。 但是,有效的状态转换是从交易中派生出来的。 关于公式:

以太坊账号_sitecsdn.net 以太坊和以太币的关系_以太坊为什么叫以太坊

(1) σ(t+1) ≡ γ(σt,T)

其中 γ 是以太坊的状态交换函数。 在以太坊中,γ 和 σ 比现存的任何类似系统都要强大得多; γ 允许一些组件实现唯一的计算,而 σ 则允许一些组件在事务之间存储唯一的状态。

交易以区块为单位进行校对; 区块由“链”链接,使用加密散列值(hash)作为参考方法。 一个区块就像一本日记,记录了与之前区块的一系列交易并标识了最后的状态(尽管它不能自己存储最后的状态——因为区块链总是会被添加进来)。 他们还将这些交易序列标记化,以激励节点进行挖掘。 这种激励作为状态转换的函数发生,同时为特定账户增加相应的价值。

挖矿是致力于维护任何一个潜在竞争区块中的交易链(区块链)的过程。 它以经过验证的加密安全方式实施。 工作量证明 (POW) 方案是众所周知的,将在 11.5 摘要中更详细地讨论。

形式上,我们扩展为:

(2) σ(t+1) ≡ Π(σt,B)

(3) B ≡ (…,(T0,T1,…))

(4) Π(σt,B) ≡Ω(B,γ(γ(σ,T0 ),T1)…)

其中Ω是块完成状态转换函数(这个函数是奖励一个独特的群体); B是区块,在某些组件中包含了一系列的交易; Π 是块级(“block-level”)状态转换函数。

sitecsdn.net 以太坊和以太币的关系_以太坊账号_以太坊为什么叫以太坊

以上是区块链范式的基础。 这种模式不仅构成了以太坊的基础设施,也构成了迄今为止所有基于共识的去中心化交易系统。

价值。 为了激励网络的计算能力,需要一种方法来定义交易价值。 为了解决这个问题,以太坊设计了一种固有的货币,以太币(“Ether”),ETH被称为符号,有时用古D(“Ð​​”)来描述。 以太的最小面额是比特(“Wei”),因为比特可以算在货币中的所有整数值中。 一个以太币被定义为 10^18 位。 以下是以太的其他面额:

乘数名称

10^0 魏

10^12 萨博

10^15 芬尼

10^18 以太币

看现在的工作,无论是任何价值的参考,以太币、货币的含量,还是余额、支付,都应该算是以“比特”来计算。

它的历史? 因为这是一个去中心化的系统,所有的团队都有机会在之前的一些区块上构建新的区块,所以这个复合结构一定是一棵区块链树。 为了形成共识,路径从底部(创世块)到叶子(包含最新交易的块)穿过该架构。 这就是众所周知的区块链,必须在这里达成共识。 如果最长的区块链中的节点之间在一段时间内发生争议,就会发生分叉(“fork”)。

sitecsdn.net 以太坊和以太币的关系_以太坊为什么叫以太坊_以太坊账号

这意味着过去的一个给定时间点(区块)与系统的多种状态共存:一些节点认为一个区块包含标准交易,而另一些节点认为其他区块包含标准交易。 包含完全不同或不兼容的事务。 这也是为了避免不确定性的代价,因为它会破坏整个系统中的所有信用。

为了计划达成共识,我们使用 GHOST 协议的简单版本。 该协议由 Sompolinsky 和 ​​Zohar 在 2013 年提出。我们在第 10 节中描述了它的细节。

三、协议

我使用了很多印刷约定来表示形式符号,其中一些对当前的工作非常有意义:

在这两个高度结构化的集合中,“高级”、状态值由粗体小写希腊字母表示。 它们注入全局状态(“世界状态”)并用 σ(或相应的变体)表示,机器状态(“机器状态”)用 μ 表示。

在一个高度结构化的值中,可操作的函数(“函数操作”)用大写的希腊字母表示,例如:γ,这在以太坊中也是一种状态转换函数。

对于更多的函数,通常使用大写字母,例如:C,general cost function。 这些也可能被表示为一些特殊变量的下标,例如:成本函数中的CSSTORE、SSTORE操作。 对于特殊的和可能看起来很干净的函数,我可以设计打印机的文本,例如:Keccak-256 哈希函数(根据获胜的 SHA-3 竞赛函数)用 KEC 表示(通常用于解释 Keccak)。 KEC512 也被用来表示 Keccack-512 哈希函数。

数组通常也用大写字母表示,例如:T,用于表示一笔以太坊交易。 如果相对定义,这个符号可能会变成一个下标来表示一个独立的分量,例如:Tn,表示上述交易的随机数。 这些下标的形式用于指示它们的类型; 例如:一个大写的下标表达式是一个带有下标组件的数组。

标量和固定大小的字节顺序(或同义,数组)都可以用小写字母表示,例如:n 用作数据文件中事务的随机数。 小写的希腊字母可以表示一些特殊的含义,例如:δ表示对应栈上所需项数的操作。

以太坊账号_以太坊为什么叫以太坊_sitecsdn.net 以太坊和以太币的关系

任意长度的序列通常用粗体小写字母表示,例如 O 表示为信息调用中输出数据的字节序列。 有时,粗体大写字母表示一些特别重要的值。

一般来说,我们假设标量都是正整数并且属于集合P。字节序列的集合是B,我们在附录B中写下正式的定义。如果像这样的序列集合被约束到它们唯一的长度,它可以用下标符号表示。 因此,字节大小为32的所有序列的集合被命名为B32,所有小于2^256的正整数的集合被命名为P256。 正式定义在 4.4 小结中讨论。

方括号用作索引并表示序列下的单个组件或子序列,例如:μs[0] 表示计算机堆栈中的第一个数字。 对于子序列,省略号用于指定一定的范围,包括头尾限制元素,例如:μm[0…31]表示计算机内存中的前32个数。

在全局状态的情况下,σ 是一个账户序列,一个数组本身,方括号用于表示单个账户。

在考虑现有变量时,我遵循在给定范围内定义的原则。 如果我们考虑这些不可修改的输入值将用□(“占位符”)表示,可修改和有用的值用□^'表示,中间值用□、□()&c表示。 在非常具体的情况下,我可能会使用字母数字下标来表示中间值,以提高可读性和清晰度,尤其是在它们是特定的情况下。

在考虑使用现有函数时,给定一个函数f或f,将函数之间的映射关系替换为序列之间。 它们将在第 4.4 节中正式定义。

一路上,我定义了有用的函数。 最常见的是函数l(小写的L),函数是计算给定序列的最后一个数:

(5) l(X) ≡ X[ || X ||- 1]*

原件:(也可以联系我,我可以发PDF原件给你)

本人第一次翻译文章,如有错误,请留言或邮件讨论,谢谢!