以太坊黄皮书连载(六)

天露   |     |   953 次阅读

翻译作者:Jorden Gao 邮箱:gaotl33@126.com / tianlu.jorden.gao@gmail.com
微信账号:wa713714
本文作者:Dr. Gavin Wood,以太坊&Ethcore的创始者 邮箱:GAVIN@ETHCORE.IO

公式解释说明:由于网页不默认word公式的格式,以下为公式的解释说明:
1.B_20中为下角标;
2. f
^* ((x_0,x_1,…))≡( f_ (x_0),f_ ^ (x_1),…) 中^为上角标;
3. R_u∈P ∩〖 R〗b∈B_256 中〖 〗忽略不计;
4. D(H)≡ {(D_0^ if H_i^( )=0
{ max⁡〖(D_0^ ,P(H)
(H_d^ )^ +x*ε1+ϵ) if H_i^( )<〗 N_H^( )
{max⁡(D_0^ ,P(H)_(H_d^ )^ +x*ε2+ϵ) otherwise)

中3 { 是一个大个{
若有公式疑问,建议下载原文对应公式看;再次抱歉!(等全文翻译完成,可去百度文库下载全文word形式,此word形式无公式问题)

区块定稿(“Block Finalisation”)
区块定稿的步骤包含了以下四个步骤:
确认ommers的有效性(如果挖矿,确定);
确认交易的有效性(如果挖矿,确定);
应用奖励;
证实状态和随机数(如果挖矿,计算有效性)。
Ommer Validation(“有效性”)。Ommer头文件的有效性表示去证明每一个ommer头文件都是一个有效的文件而且满足第N代Ommer和当前区块N≤6的关系。Ommer头文件的最大值是2.公式表达为:
(143) |(|B_U^ | )| ≤ 2⋀(U∈B_U^ )▒〖V(U)∩k(U,P(B_H^ )H^ ,6)〗
其中k表示是亲戚关系的(“is-kin”)性质:
(144) k(U,H,n) ≡ {█(false if n=0@s(U,H) ∨k(U,P(H)_H^ ,n-1) otherwise)┤
其中s表示是兄妹的(“is-sibling”)性质:
(145) s(U,H)≡(P(H)≡P(U)∩H≠U∩U∉B(H)
U^ )
其中B(H)是响应头文件H的区块。
交易的有效性(“Transaction Validation”)。给定使用过的燃料(“gasUsed”)必须诚实地回应到交易列表:B
(H_g^ )^ ,在区块中使用的全部燃料,必须等于最后交易所积累下来被使用过燃料总和:
(146) B_(H_g^ )^ = 〖l(R)〗u^
奖励应用(“Reward Application”)。对一个区块来说,奖励的应用包含当前区块收益账号余额中上升的账号列表和一个随机总和的ommer。我们通过R_b^ 上升当前区块的收益账号;对于每一个ommer,我们是采取区块额外的1/32奖励去上升一个区块收益的账号,而且ommer的受益者是根据区块当前的数值去决定奖励。我们定义函数Ω去表达:
(147) Ω(B,σ) ≡ σ
^':σ_ ^'= σ except
(148) σ_ ^' 〖[B_(H_g^ )^ ]〗b^ = σ ^ 〖[B_(H_g^ )^ ]〗b^ +(1+(|(|B_U^ | )| )/32)R_b^
(149)∀
(〖U∈B〗U^ )^ :
σ
^' 〖[U_c^ ]〗b^ = σ ^ 〖[U_c^ ]〗b^ +(1+(1 )/8(U_i^ -B(H_i^ )^ ))R_b^
如果这里有在ommers和区块之间的受益者账号冲突问题(比如:两个相同的ommer受益者账号或者一个ommer受益者账号作为当前的区块),剩下的都被积累地应用。
我们定义区块奖励为5以太币:
(150) Let R_b^ = 5×〖10〗^18
状态&随机数的有效性(“State & Nonce Validation”)。我们现在可能定义这个函数,Γ,去绘制一个区块B到它本身初始化状态:
(151) Γ(B) ≡ {█(σ0^ if P(B_H^ )=∅@σi^∶TRIE(L_S^ (σ_i^ ) )= 〖P(BH^ )〗(H_r^ )^ otherwise)┤
其中,TRIE(L_S^ (σi^ ) )表示状态σ_i^ 的梅克尔帕特里夏树(“trie”)根节点的哈希值;它被认为某些工具将存储这个状态的数据库,它是繁琐和有效的因为这个梅克尔帕特里夏树是一个永不会改变的数据结构。
最后定义Φ,区块交易函数,是一个绘制不完整区块B到一个完整区块B
^'的过程:
(152) Φ(B) 〖≡ B〗_ ^' ∶ 〖 B〗_ ^' = 〖 B〗_ ^* except:
(153) 〖 B〗n^' = n ∶ x≤ (〖 2〗 ^256)/(〖 H〗d^ )
(154) 〖 B〗
(m )^' = m with (x,m)= PoW(〖 B〗(≠n)^*,n,d)
(155) 〖 B〗
^* ≡ B except ∶ 〖 B〗r^* = r(Π(Γ(B),B))
具体的解释在附件J,d成为一个数据集。
去详细介绍当前工作的前期,Π是一个状态交易函数,被以区块定稿函数Ω和交易升级函数Υ去定义。
在之前的定义中,〖 R[n]〗
σ^ ,〖 R[n]〗l^ 和〖 R[n]〗_u^ 是在每一个交易后的第n个响应的状态,日记和积累所使用的燃料(〖 R[n]〗_b^ ,是在数组中的第四个元素,它已经被用日记去定义)。之前这些只是作为从应用中响应交易的最后状态到先前交易的最后状态而被简单地定义(或者说,在第一个像这样的交易情况下的区块初始化状态)。
(156) 〖 R[n]〗
σ^ = {█(Γ(B) if n<0@Υ(〖 R[n-1]〗σ^ ,〖 B〗T^ [n] ) otherwise)┤
在〖 B〗_R^ 〖[n]〗_u^ 的情况下,我们采取一个类似用每一个作为升级响应总和的交易使用的燃料和前一个项目的方法去定义这个项目(或者说,是第0个,如果它是第1个的话),给出一个运转的总和:
(157) 〖 R[n]〗
u^ = {█(0 if n<0@〖 Υ〗
^g (〖 R[n-1]〗σ^ ,〖 B〗T^ [n] ) @ +〖 R[n-1]〗_u^ otherwise )┤
对于〖 R[n]〗
l^ ,我们使用〖 Υ〗
^l函数方便的定义这个交易执行函数。
(158) 〖 R[n]〗l^ = 〖 Υ〗 ^l (〖 R[n-1]〗σ^ ,〖 B〗T^ [n] )
最后,我们定义Π作为一个新的状态去给定区块奖励函数Ω去应用到最终交易的最后状态,〖 〖l(B〗
R^ )〗
σ^ :
(159) Π(σ,B) ≡ Ω(B,〖l(R)〗σ^ )
因此这个完整的区块交易机制,less PoW,工作机制证明(“proof-of-work”)函数被定义。
工作机制证明挖矿(“Mining Proof-of-Work”)。工作机制证明(PoW)作为一个密码地保密随机数存在,提供不可被怀疑而且被早已悬挂标记过的一些数值n去决定的一个特别的计算力总和。它是被使用去执行区块的安全性,通过给定的意义和信用去改变难度(“difficulty”)(还有其他元素,扩展名(“extension”),总的难度和)。然而,因为挖出一个新的区块会附带一些奖励,工作机制证明不仅是一个未来区块链继续存在的标准安全信心的方法函数,而且也是一个健康的分配机制。
对于以上的原因,这里有两个重要的工作机制证明目标:首先,它应该是尽可能的被更多的人去接受的。特别而且罕见的硬件的条件,或者说奖励,应该被减到最小。理想说, 这些导致这个分配模型尽可能的开源,和形成一个简单的挖矿动作与大致在全世界各个角落下是一样的比例的电子以太币交换。
第二,它应该不能去尽可能的制造出超线性的利益,而且它没有特别高地初始化障碍。像如此的机制允许一个资金充足的敌人去获得令人讨厌的网络挖矿总权利(算力)和给他们一个超线性的奖励(在他们这种情况下会导致曲线形的分配)而且减少网络的安全性。
比特币的世界中一个灾难是ASICs。这些是被具体解释为电脑硬件仅仅是为了处理一个简单的任务而存在。在比特币的案例中,这个任务就是SHA256哈希函数。当ASICs为了工作机制证明函数而存在,它们的目标都是被替代损失。因为这样,一个可抵抗ASIC的工作机制证明函数(比如:难度或者经济的无效率去执行特别的电脑硬件)已经作为著名的神奇般的解决方法去识别。
二个防ASIC漏洞的方法:第一就是去让它变成有序列的硬件记忆(“memory-hard”),比如:设计一个函数 —— 随机数的决定需要大量的记忆和带宽以至于这些记忆不能被并行同时地去发现多个随机数。第二个方向就是去制造去执行同样目的不同计算类型;同样的来说,特别硬件的意思对于同样目的任务集合来说就是通常的硬件,和桌面上的附件都非常类似特别的硬件对于任务来说。在以太坊1.0时代,我们已经选择了第一个方法。
更公式化的说,这个工作机制证明函数来自PoW:
(160) m = 〖 H〗
(m )^ ∩ n≤ (〖 2〗_ ^256)/(〖 H〗d^ ) with (m,n)= PoW(H(≠n)^ ,〖 H〗n^ ,d)
其中H
(≠n)^ 是一个新的区块头文件,但是它没有随机数和混合哈希元素;〖 H〗n^ 是区块头文件的随机数;d是一个需要计算呼和哈希值的大数据集合和〖 H〗(d )^ 是一个新区块的难度值(例如:这个区块难度见小结10)。PoW一个工作机制证明函数,它是用成为混合哈希值的第一个项目赋值到一个数组和取决于H和d密码地成为冒充的随机数的第二个项目。这以下的算法被称为Ethash和被在下文描述。
Ethash。Ethash是以太坊1.0计划中的PoW算法。它是Dagger-Hashimoto的最后版本,被Buterin
[2013b]和Dryja[2014] 介绍。虽然它不再大概地被称为Dagger-Hashimoto因为很多算法的最初特性已经被大量地修改这升级在上个月的研究中。算法的通常路径采取以下方法:
这里出现了一个种子(“seed”),它能被每一个区块计算而找到通过扫描区块头文件。在种子中,一个能计算假冒的随机缓冲,〖 J〗_cacheinit^ 字节在初始化尺寸中。轻节点客户(“light clients”)存储这个缓冲。在缓冲中,我们能产生一个数据集合,〖 J〗_datasetinit^ 字节在初始化尺寸中,伴随着在数据集合中每个从缓冲中仅仅是一个小数字的项目的特性。全节点客户和矿工保存着数据集合。数据集合随着时间线性增长。
挖矿包含着抓取数据集合的随机碎片,再将它们哈希在一起。证明能通过使用缓冲去再次产生你所需要的数据集合的某个碎片在低端记忆中被完成,所以你仅仅需要存储的是缓冲。较大的数据集合是被升级一次到〖 J〗_epoch^ 区块中,所以大多数矿工的努力都是阅读这些数据集合,而不是尝试改变它。这些被提及到的参数和算法都在附件J中被详细地解释。
执行合约(“Implementing Contracts”)
这里有几种设计合约的形式,并且允许使用特别有用的行为;我将简单地讨论它们中的二个是数据喂养(“data feeds”)和随机数字(“random numbers”)。
数据喂养(“Data Feeds”)。一个数据喂养合约是提供简单的服务:它允许外部的信息可能进入以太坊内。这个信息的精确度和及时性不被保证,而且它是第二个合约作者的任务 —— 这个合约被用作数据喂养 —— 去决定单个数据喂养是否能被替代的可信度。
通常的模式包含了在以太坊中的单个合约,当给定一个信息调用,关于一个外部现象有规律的信息的回应。一个例子可能是纽约城市的本地温度。这个可能作为返回在存储器中一些总所周知的点的合约被执行。当然在存储器的中这些点必须是正确的温度,而且这个模式的第二个部分将作为外部的服务器去运行一个以太坊节点,和立即地在新的区块中被发现,产生一个新的有效的交易,发送到合约,同时更新存储器中上述的值。合约的代码将仅仅同意在包含上述的服务器上的更新。
随机数字(“Random Numbers”)。显然,在决定论的系统中提供的随机数字是一个不可能实现的任务。然而,我们能在交易的同时使用一些普通不可知的数据去估计这个假冒的随机数字。这样的数据可能包含区块的哈希值,区块的时间戳,和区块受益人的地址。加强它的难度为了不让恶意的矿工去控制这些值,其中使用区块哈希(“BLOCKHASH”)操作为了去使用之前的256个区块哈希值去冒充一个随机数字。对于这样一系列的数字,一个微不足道的方法就是去添加一些不变的总额和切分结果。
未来的方向(“Future Directions”)
在以后,状态数据库将不被强行维持所有之前的状态trie(梅克尔帕特里夏树)结构。它应该保持每一个节点的年龄和最后抛弃岂不是当前的节点也不是检查点的节点;检查点,或者一系列允许特别区块状态trie被旋转数据库的节点,可以被使用去替代一个需要的算力总和的最大限度值,它是为了重新获得整个区块链中的任意一个状态。
区块链巩固(“consolidation”)被使用为了减少每个客户需要下载的全节点和挖矿节点的区块总数。及时在给定节点上的一个trie结构的压缩档案(也许是第10000个中一个)可能被保持下来通过伙伴(“peer”)网络,且有效地重置这个创世块。这将减少去下载单个档案加上有难度的最大限度区块的总和。
最后,区块链压缩也许被引导:在一些不变的区块总和中没有发送或接受交易的状态trie节点可能被抛弃,同时减少以太币的遗漏和状态数据库的增长。
可扩展性(“Scalability”)。可扩展性剩下一个永恒不变的忧虑。随着一个广义的状态交易函数,它变成困难的一部分而且平行交易的去应用分而治之的策略。仍未解决的是,这个系统的动态范围值保留了必要固定的和作为一个普通交易值上升,其中较少价值的将被忽略,成为经济性不重要的去保存在主要的记账本中。然而,一些策略存在可能潜在地被发掘而去提供一个更为重要地可扩展性的协议。
一些来自于等级体系的结构,通过巩固在主链中最小较轻最大的链去实现或者通过最小交易集合中增长的联盟和附着(通过proof-of-work)去建立一个主区块,从而可能允许交易联盟的平行化和区块建立。平行机制也可能来自一个优先的平行区块链集合,同时巩固每一个区块和复制或者无效交易的抛弃。
最后,证明算力,如果创造出逐渐足够有效和有效率的,可能提供一个路径去允许这个工作机制证明去成为最后状态的 证明。
总结
我已经介绍,讨论和形式上定义了以太坊的协议。通过这个协议,读者可能在以太坊网络上执行了一个节点和加入其它人在一个去中心化安全社会开放的系统中。合约可能被实名化为了计算性地具体说明和自动化地强力执行互动的规则。
致谢(“Acknowledgements”)
重要的维护,有用的矫正和建议是被很多来自以太坊DEV组织和以太坊社区的工作人员提供,其中包括Christoph Jentzsch, Gustav Simonsson, Aeron Buchanan, Pawel Bylica, Jutta Steiner, Nick Savers, Viktor Tron, Marko Simovic and Vitalik Buterin。

参考
Jacob Aron. BitCoin software nds new life. New Scientist, 213(2847):20, 2012.
Adam Back. Hashcash - Amortizable Publicly Auditable Cost-Functions. 2002. URL{http://www.hashcash.org/papers/amortizable.pdf}.
Roman Boutellier and Mareike Heinzen. Pirates, Pioneers,Innovators and Imitators. In Growth Through Innovation, pages 85{96. Springer, 2014.
Vitalik Buterin. Ethereum: A Next-Generation SmartContract and Decentralized Application Platform.2013a. URL {http://ethereum.org/ethereum.html}.
Vitalik Buterin. Dagger: A Memory-Hard to Compute,Memory-Easy to Verify Scrypt Alternative. 2013b. URL{http://vitalik.ca/ethereum/dagger.html}.
Thaddeus Dryja. Hashimoto: I/O bound proof of work.2014. URL {https://mirrorx.com/files/hashimoto.pdf}.
Cynthia Dwork and Moni Naor. Pricing via processing orcombatting junk mail. In In 12th Annual International Cryptology Conference, pages 139{147, 1992.
Phong Vo Glenn Fowler, Landon Curt Noll. FowlerNollVo hash function. 1991. URL {https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function #cite_note-2}.
Nils Gura, Arun Patel, Arvinderpal Wander, Hans Eberle,and Sheueling Chang Shantz. Comparing elliptic curve cryptography and RSA on 8-bit CPUs. In Cryptographic Hardware and Embedded Systems-CHES 2004,pages 119{132. Springer, 2004.
Sergio Demian Lerner. Strict Memory Hard Hashing Functions.2014. URL {http://www.hashcash.org/papers/
memohash.pdf}.
Mark Miller. The Future of Law. In paper delivered at the Extro 3 Conference (August 9), 1997.
Satoshi Nakamoto. Bitcoin: A peer-to-peer electronic cash system. Consulted, 1:2012, 2008.
Meni Rosenfeld. Overview of Colored Coins. 2012. URL {https://bitcoil.co.il/BitcoinX.pdf}.
Yonatan Sompolinsky and Aviv Zohar. Accelerating Bitcoin's Transaction Processing. Fast Money Grows on Trees, Not Chains, 2013. URL {CryptologyePrintArchive,Report2013/881}. http://eprint.iacr.org/.
Simon Sprankel. Technical Basis of Digital Currencies,2013.
Nick Szabo. Formalizing and securing relationships on public networks. First Monday, 2(9), 1997.
Vivek Vishnumurthy, Sangeeth Chandrakumar, and Emin Gn Sirer. Karma: A secure economic framework for peer-to-peer resource sharing, 2003.
J. R. Willett. MasterCoin Complete Speci
cation. 2013. URL {https://github.com/mastercoin-MSC/spec}.

 
0 人喜欢