FW:Vitalik - 25分钟认识以太坊(下)

Vitalik: 25分钟认识以太坊(下)

hongji|23. Nov, 2017|            607 次阅读

编者按:以下为Vitalik Buterin在Ethereum Devcon3上的演讲《Ethereum in 25 minutes, vision 2017》的下半部分。以下中文皆直接从视频中听写并译出,如有错失,请不吝赐教。

附:干货 | Vitalik: 25分钟认识以太坊(上)

交易

以太坊上的交易有7个部分:

交易nonce,基本上就是一种反交易重播措施,如果你正在发送交易,让我们假设如果我发送了10个以太币给Bob,它(nonce)防止Bob提取这一交易并在区块链上包含它100次,那样的话我就发送1000个了以太币给Bob。每一个交易都最多只能被包含一次。

Gas价格,就是你为你的交易所占用每一单位的gas付出的以太币数量,这就是给予矿工的交易费用。

Startgas,交易可以使用的gas最大数量限制,也就是该交易可以消耗的计算资源的最大数量。

To,就是目标。

价值(Value),交易发送的以太币数量。

数据,就是说,如果你的交易有一个合约目标,那么该合约就可以读取数据。所以,接着就是一种做比如明确函数争议这样的事情的方式。

V,R,S,就是一个ECDSA签名,这是为解密者设计的。V在这儿因为你需要额外的一个部分以从签名中还原公钥。所以,我们做的是公钥恢复,而非任何种类的验证,我们说那是比特币做事情的方式。

Log

Log是一种只可添加、而不可被合约所读取的库的形式。关于Log的重点是,让我们假设,现在有一个事件在合约运行过程中发生了,我们希望让人们搜索这些事件以及侦测这些已经发生的事件变得非常容易。所以一个Log可以长达4个“topic”(32

bytes),并且,这里有一个布隆过滤器(Bloom

Fliter)所以你可以非常容易地搜寻topic。同时这也允许你存储任意数量的数据。这些Log被放进了一棵默克尔树,它允许非常高效的通往Log的轻客户端通道。如果你有一个轻客户端,你可以通过Log来搜索,你可以拿topic当作关键词,这也允许你非常容易地搜索到合约已经创建的一种特定类型的事件。这对于分散化应用(Dapp)编程来说是非常有用的。

以太坊虚拟机

以太坊虚拟机(Ethereum Virtual Machine,EVM)。一开始,你有一个堆栈,数字可以被加入(push)栈以及从栈中输出(pop)。你拥有内存,内存就是一个虚拟机可以进入的临时数据组。所以内存只能在我短暂地处于运行环境中的时候才能存在,一旦运行结束,内存也就停止存在了。(stortage),就像合约数据库一样,是永久的存储空间。环境变量,以太坊虚拟机上的合约可以获得像是区块数量或是时间戳这样的东西。而且你还有Log次级调用(sub-calling)所以合约有能力通过发送我们说的“内部交易”来调用其他合约。

大多数时候,你并不准备直接写作EVM代码,因为要直接写EVM代码是非常琐碎的。相反,你将用高级语言写作,然后编译成EVM代码。这里有一些这样的高级语言,你可以用Viper,Solidity,LLL,还有Bamboo。再一次地你可能注意到,Serpent不再被放在这个列表中了,如果你还在用Serpent,我建议你转换到Viper。

ABI

这就是函数调用得到被编译或说其代码被写到交易数据中的方式。所以如果你正在调用一个合约,那么实际上发生的事情就是它做了一个函数调用,以及,额,抱歉,如果你调用了一个函数,那么实际上发生的事情就是它创建了一个交易,并且该交易包含了在这一公式中被指定的数据。所以一开始有4byte是函数ID,然后32byte是一个要求,再来32byte是另一个要求。如果你试图请求一个合约中的一个函数,那么你的客户端将创建这个交易,广播这一交易到网路上,然后合约代码就可以读取交易数据,然后它将交易数据的初始4个byte解析为被调用的函数,而其它byte就是其他声明。所以,基本上这就是如何简单调用函数的。

默克尔树(Merkle tree)

(PPT上放着Ralph Merkle的照片)让我们都向Ralph Merkle(译者注:Merkle树的发明人。)鞠躬、祈祷!

Ralph Merkle,他的Merkle树是唯一真正让轻客户端成为可能的东西,所以,这在技术上是非常重要的突破,它值得人们赋予崇高的敬意。

重点是,默克尔树允许一个交易被包含在一个区块中的证据成为可高效验证的,或者说,普遍性地允许任何特定的数据片段被包含在在一个非常大的数据块中的证据成为可高效验证的。所以,如果你拥有一大块的数据,你可以从你的数据中创建这个叫做“Merkle树”的数据结构,有了这棵默克尔树之后,你可以为任何在这棵树上的数据片段创建叫做“默克尔分支”的东西,也就是组成了默克尔树的这种哈希值。

加上所有这些中间层,通过把哈希值相互匹配,你就可以判断这段数据是不是真的在这棵树上,对吧?

所以,为了建立起这棵树,你可以拿来你的数据,把两个片段的数据放在一起哈希;为每两片数据做完哈希之后,再把得到的(两个)哈希值放在一起哈希;如是反复,最终将只剩下一个哈希值在顶端。要证明其中存在任何特定的数据,你只要得到这些哈希值的分支,然后让它们相互匹配。如果是否存在一个错误的话,(也就是说)如果你想证明一段数据并不在那里的话,那么至少其中一个哈希值将是无法匹配的。

在以太坊上,我们使用它以证明一些特定的交易是包含在区块中的,但也存在一些叫做“状态树(State

Tree)”的东西。状态树就是整个以太坊状态的一棵默克尔树。所以,每一个账户、每一个合约,余额,Nonce,合约代码,合约库,以太坊上的所有数据的全部状态都被哈希在这棵树的结构中,而这棵树的根哈希值将成为区块头,这就是所谓的“状态根”。所以,从任何一个区块到下一个区块,总是会有一部分状态被修改,然后默克尔树就会改变。但我们有一种特定类型的树叫做“默克尔帕特里夏树(Merkle

Patricia

tree)”,意味着当状态发生改变的时候,默克尔树上必须做出的更新的数量实际上是非常小的。它是像对数那样变化的。有了这个,一个轻客户端就可以要求网络,“给我一个特定账户的默克尔分支”;而一些全节点可以用这一分支来回复;轻客户端自己就可以从头到尾检查该分支的哈希值。如果所有的哈希值都相互匹配,那么,太棒了!然后轻客户端就可以接受并且证实显示账户余额的特定数据、或者一些库的钥匙,是确实在默克尔树上的。

所以,在以太坊中,默克尔树是用在交易、状态和收据上的。帕特里夏树则允许高效的插入和删除操作。区块头则包含了这三种树。

拜占庭版本(Byzantium)中的更新

拜占庭是我们做的一个硬分叉,从10月16号开始运行,它引入了一系列新的很棒的隐私保护措施。拜占庭中有三种主要的、可能也是最让人感兴趣的特性。理论上来说,当然还有其他特性,但这三种让人感兴趣的东西是因为拜占庭中的新特性才成为可能的,对吧?这里包括我们叫做“预编译(pre-compile)”的东西,可以充分利用虚拟合约。虚拟合约的功能是做椭圆曲线编辑(eliptic

curve edition)、椭圆曲线标量乘法(eliptic curve multiplication)、椭圆曲线配对(eliptic

curve pairing)还有大数计算。这也允许你在以太坊上写合约来做一些事情,比如:验证环签名(Ring

Signature),验证ZK-SNARKs,验证RSA签名(RSA

signature),所以,这也可以被用来提升以太坊跟使用公钥、授权证书以及其他东西的现有系统的兼容性。接下来你还将听到这些东西。

除了这些,还有一系列很重要的特性,比如说:静态调用操作码(STATICCALL

opcode),它允许你写作没有同等程度可变性的安全合约,以及在一些情况下重新进入(出现)问题(的地方),它同样允许你更容易去做纯粹功能性的变成。你拥有一个回返数据备份、恢复原状操作码(REVERT

opcode),帮助你节约Gas,以及让EVM在某些情况下更高效的操作码,还有一系列更小的提升。但我会说,拜占庭硬分叉的主题是把这类强大的密码学加进去,以使强大的隐私保护应用成为可能。还有非常有有意思的的东西正在被建构到上面,比如说,你知道的,

建立在声誉系统上的ZK-SNARK(我昨天才听到这个东西)。这些都在非常快速地往前推进。

未来的方向

Casper,你们可以看Changwu的演讲,就在下一场。Vlad也准备展示他自己的Casper版本,称为“Casper CBC”。

分片(Sharding),可以看今天结束的时候我的演讲。虽然,我会说它不仅仅是关于分片的,它的主题在实际上比分片要广泛得多。它同样也是EVM更新的尾巴,一个小很多的协议升级。

现在,比起以太坊区块链核心技术的未来方向,可以被建设在以太坊上的第二层(second

layer,数据链路层)架构、中间工具和系统有一个大得多的关于未来方向的列表。这包括可扩展性方案,比如Plasma;也包括可以被建设在环签名上的所有东西,你已经知道了,椭圆曲线乘法、匹配,ZK-SNARK;还包括多种其他多种隐私保护协议。还有状态通道(State

Channel)系统。所有这些都是很棒的,也是非常重要的改进,我希望我们将听到更多关于它们的消息。

那么,谢谢你们。再一次,希望你能享受这次大会。

视频链接:https://www.youtube.com/watch?v=Yo9o5nDTAAQ&feature=youtu.be

作者:Vitalik Buterin

翻译&校对:阿剑 & Elisa

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • 简介 不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊。最近在新...
    Lilymoana阅读 3,883评论 1 22
  • 大概今年7月份左右,老板说你负责新的记账项目,我当时还惊讶了一下。在负责记账项目之前,我一直是做Android部门...
    少爷1103阅读 246评论 0 0
  • 上文中我们提到:刘仁恭的背叛令李克用元气大伤,而此时朱温则趁机巩固住了自己的根据地,两人的实力发生了天翻地覆的对比...
    丧心病狂刘老湿阅读 6,740评论 16 54
  • 说到比喻,不得不提我求学时代所用的那些老掉牙的意象,什么热锅里的蚂蚁抓耳挠腮啦,什么山的灵动水的沉稳啦,现在都还记...
    心眸阅读 415评论 8 2