小白老老实实精读以太坊白皮书之旅之思

我在想我还是老老实实,根据白皮书来写这个关于以太坊的认识,尽管对于不懂技术的小白来说看起来很困难,如果想建立上层建筑,还是老老实实从底层开始学习。

投资这件事,是一生都要学习和不断更新升级认知的,是一个高度知识变现的技术活,想要成为一个合格的投资者还是应该理性投资,价值投资,抓住区块链这一波技术新浪潮,最好别天天只看K线,看一些碎片化的消息,新闻或者群里的各种咨询,还是应该沉下心来系统性地学习输入,再输出以检验、巩固、升级,往复以提高自己的区块链生存,生长、进化、升维能力。

小白老老实实精读以太坊白皮书之旅之思_第1张图片
以太坊白皮书框架

1 以太坊是什么?

以太坊不仅是一个数据库,它还允许你在区块链的可信环境中运营程序。在这个操作系统上,基于Android、iOS操作系统的程序员同样可以到以太坊平台上开发各种应用,在这个系统上可以发行货币,定制金融衍生品,可以开发去中心化平台等。

2 为什么需要以太坊这个新平台?

由于比特币编程操作教程有限,脚本也复杂,比特币不是图灵完备,基于比特币开发程序就变得很困难,人们尝试过在比特币网络上建立更高级的协议,比如彩色币和元币,但是实验证明,努力在比特币协议之上建立更高级协议,正如在 TCP 之上建立 HTTP,是值得赞赏的,也确实是走向更高级的去中心化应用的正确道路。然而,在比特币协议之上创建彩色币和元币的尝试更象是在 SMTP 上创建 HTTP;SMTP 协议是用来传输电子邮件消息的,而不是用来作为一般互联网通信的基础协议的,(在 SMTP 上创建 HTTP)将不得不使用许多低效的以及结构丑陋的方法使其能够工作。与之类似,虽然比特币在简单交易和价值储存方面是一个出色的协议,但它绝非是被设计用来(而且前述证据表明它不可能被用来)作为通用金融端到端协议的底层协议。

以太坊解决了可扩容问题,以太坊合约将被允许在持久内存中存储数据,这样的内存加上图灵完备的脚本语言将使在单个合约中编码一个完整的货币成为可能。以太坊旨在成为一个提供超强脚本系统的优秀底层协议,在其上可以创建任意高级的合约,货币及其它去中心化应用。如果现存的彩色币和元币项目迁移至以太坊平台,它们将从以太坊的简化支付确认,与金融衍生品和去中心化交易所的适应性,以及能够同时在一个网络中存在的能力中获益。使用以太坊,那些想出可能极大改变加密货币应用现状的点子的人将不再需要去启动他们自己的块链,他们可以简单地用以太坊脚本编码实现他们的想法,简而言之,以太坊是创新的基础平台。

3 以太坊的设计哲学

3.1 简洁原则

一个普通的程序员也能够完美地去实现完整的开发说明。这将最终有助于降低任何特殊个人或精英团体可能对协议的影响并且推进以太坊作为对所有人开放的协议的应用前景。添加复杂性的优化将不会被接受,除非它们提供了非常根本性的益处。

3.2 没有特性就是最大的特点.

没有“特性”是以太坊设计哲学中的一个根本性部分。取而代之的是,以太坊提供了一个内部的图灵完备的脚本语言以供用户来构建任何可以精确定义的智能合约或交易类型。想发明你自己的金融衍生品?用以太坊,你可以。想创造你自己的货币?把它做成一个以太坊合约就好。想建立一个全规模的守护程序(Daemon)或天网(Skynet)?你可能需要几千个联锁合约并且确定慷慨地喂养它们,一切皆有可能

3.3 模块化原则

以太坊的不同部分应被设计为尽可能模块化的和可分的。开发过程中,应该能够容易地让在协议某处做一个小改动的同时应用层却可以不加改动地继续正常运行。类似“短剑”(Dagger), “帕特里夏树”(Patricia trees) and“递归长度前缀编码“(RLP, recursive length prefix encoding,)等创新应该以独立的库的形式实施并且应该特性完整,以便于让其它的协议同样使用,即便以太坊不需要其中的某些特性。以太坊开发应该最大程度地做好这些事情以助益于整个加密货币生态系统,而不仅是自身。

3.4 无歧视原则

协议不应主动地试图限制或阻碍特定的类目或用法,协议中的所有监管机制都应被设计为直接监管危害,不应试图反对特定的不受欢迎的应用。你甚至可以在以太坊之上运行一个无限循环脚本,只要你愿意为其支付按计算步骤计算的交易费用。

自我思考:可见以太坊设计团队格局之大,包容性之强,是要做成一个适合所有需要区块链技术的所有开发者都能简单,模块化不受歧视的开发任何想要开发的运行程序,只要支付按照计算步骤计算的交易费用即可,可见这就是为什么目前为止以太坊成为了目前为止跑上应用最多的底层公有链。

4 经济激励分析

4.1 修改实施幽灵协议

比特币的出块时间是10分钟,一般确认是6个区块,那么要确认一笔特特笔交易大概需要一个小时之久,那么在这个层面就很难应用于频繁的商业领域,以太坊的出块时间大概在5到15秒,一个小时内比特币出块6个,以太坊出块240到720个,比特币都有在同一高度块,那么以太坊在同一告诉出块的概率就会更高,比特币通常是会保留最长链上的块,以太坊概率太大,出与对系统安全行动考虑,以免发生矿工混乱,也避免继续出块形成另外一条长链而分叉,节约旷工的算力,以太坊放规定给叔块也就是父块的brother,还有侄块,分别都给予87.5%和12.5%的奖励。

4.2 以太坊客服端P2P协议

以太坊客户端 P2P 协议是一个相当标准的加密货币协议,并且能够容易地为其它加密货币使用;仅有的改动是引入了上述的“幽灵“协议。以太坊客户端基本上是被动的;如果没有被触发,它自己做的仅有工作是调用网络守护进程维护连接及定期发送消息索要以当前区块为父区块的区块。然而,该客户端同时会更强大;与只存储与块链相关的有限数据的 bitcoin 不同,以太坊客户端将同时扮演一个功能完整的区块浏览器的后台的角色

4.3 货币与发行

以太坊网络包含其内建的货币——以太币,在网络内包含一种货币的原因是双重的。首先,以太币被奖励给矿工以促进网络安全。其次,用它来支付交易费用是一种反欺诈机制。类似 Hashcash 的以交易为单位的工作量证明和放任自由是收取交易费的替代方案,前者浪费资源并且对于低档计算机和智能手机是一种不公平的折磨,后者将会导致网络立刻被无限循环的“逻辑炸弹”合约淹没。以太币有一个理论上的最大量 - 2128 单位 (比照比特币的 250.9 单位),虽然在可预见的将来不会有超过 2100 被发行。为方便和避免将来的争论(参见现在关于 mBTC/uBTC/聪的争论),这里提前为一些数额设定单位:

 1: 微

 103: (未定)

 106: (未定)

 109: (未定)

 1012: 萨博

 1015:芬尼

 1018: 以太

这将是“元”和“分”或者“比特币”和“聪”的概念的扩展版,旨在成为将来的证据;看起来只有萨博,芬尼和以太会在可预见的

将来被使用。“以太”将成为系统的主单位,很像元或比特币。为 103, 106 和 109 命名的权力保留,未来将经过我们预批准后作为高级的辅助奖励授予投资者。

以太代币是如何被发行或创造的?以太币与比特币之间最大的不同是,比特币的产量每4年减半,而以太币每年的产量则是固定的。(可能持续到serenity阶段)

小白老老实实精读以太坊白皮书之旅之思_第2张图片

正如比特币选择一种长期来看通胀率趋近于零的发行方式,我们也放弃线性增长的发行方式比特币那里看到的财富过度集中的风险,并且给予了生活在现在和将来的个人公平的获取财富的机会,同时能够激励人们获取和持有以太币,因为从长远来看通胀率依然是趋近于零的此外,很多对于以太坊的兴趣是中期的。我们预测如果以太坊成功则它在 1-10 年的时间段内会经历巨大的增长,而在这期间它的供应量是非常有限的

以太币比比特币更复杂。概要地说,以太币的数量以这种形式存在:

Pre-mine(矿前) + Block rewards(区块奖励) + Uncle rewards(叔块奖励) + Uncle referencing rewards(叔块引用奖励)

矿前

2014年7月/8月间,为众筹大约发行了7200万以太币。这些币有的时候被称之为“矿前”。众筹阶段之后,以太币每年的产量被限制在7200万以太币的25%(每年以太币的矿产量,不高于1800万,除了一次性为crowdsale而发行的7200万以太币)

区块奖励

目前,每产生一个新区块就会产生5个新以太币。计算一下,如果每14秒挖出一个区块,一年有3150万秒(365x24x60x60),这意味着每年有225万个区块被挖出来。225万个区块,每个区块5个以太币,也就是每年会产出1130万个以太币。这个数字与低于1800万以太币产量的数字,吻合。

叔块奖励

事实上,数量可能会比上述数字稍多一些。有些区块被挖得稍晚一些,因此不能称为主区块链的组成部分。比特币称这类区块为“孤块”,并且完全舍弃它们。但是,以太币称它们为“ uncles”,并且在之后的区块中,可以引用它们。如果uncles在之后的区块链中作为叔块被引用,每个叔块会为挖矿者产出大约4.375个以太币(5个以太币奖励的8分之7).这被称之为叔块奖励。目前每天有大约500个叔块被创建,为以太币的日产量链,额外加入2000个以太币(以这种速度,每年产量为70万以太币)

叔块引用奖励


还有更多:矿工每引用一个叔块,就得到了大约0.15个以太币(最多引用两个叔块)


这种定义有效区块,奖励矿工的模式称为“幽灵协议”(Greedy Heaviest-Observed Sub-Tree )(GHOST是贪婪最被观察子树的字首)。


以太币产量未来的变化

以太坊出块机制从工作量证明(PoW)(包括幽灵发行规则)转换为股权证明(PoS)后,以太币的发行会有什么变化尚未有定论。股权证明机制将使用一个称为Casper的协议在Casper协议下,以太币的发行率将大大低于幽灵协议下的发行率。

挖矿奖励


那么,矿工挖矿时会得到什么?


在比特币中,矿工将得到:


• 12.5个新比特币(目前实际情况请参考“a gentle introduction to bitcoin mining”)


加上


• 打包在区块中的交易所产生的交易费


在以太坊中,矿工将得到:


• 新的区块奖励的5个以太币(或者4.375个新的叔块奖励以太币),


加上


• 引用2个最近叔块的一丢丢奖励(1/32的区块奖励,也就是,每个叔块 1/32x5=0.15625个新以太币)


加上


• 在区块中运行合约的Gas


目前,每个区块平均的gas限量是1500000,区块网络中每个gas的平均价格是0.000000022个以太币,也就是说,一个矿工可能从一个“满的”区块中得到的gas奖励是0.033个以太币。注意合约中的gas是用现存的以太币支付的,而非新创造的以太币。


4.4 数据格式(此处省略一万字,完全看不懂

4.5 挖矿算法

以太坊是工作量证明(POW)挖矿


同比特币一样,矿工通过花费电力解开数学难题创建有效区块。以太坊的工作量证明算法称为Ethash,它与比特币的工作量证明稍微有些不同,这使得用普通硬件挖矿成为可能。以太坊的这种工作量证明算法降低了普遍用于比特币挖矿的特定硬件ASICs的效率。


关于更多挖矿的知识详见 a gentle introduction to bitcoin mining.


5 智能合约及应用

5.1 应用

5.2 子货币

现在很多代币(Token)都是基于以太坊ERC20开发的,就算是现在很火的还在众筹阶段都EOS代币在其朱旺上线之前,也还是用的ERC20发行的Token,

5.3 金融衍生品

数据输入是金融衍生品最关键的要素,它提供一种特定的资产以另外一种资产计价的价格(在以太坊里,这另一种资产就是以太币)。有很多方法可以来实现数据输入,其中一种方法已经被万事达币(Mastercoin)的开发者实践过了,那就是把数据输入放进区块链里。实现代码如下:

小白老老实实精读以太坊白皮书之旅之思_第3张图片
来自以太坊白皮书

任何其它合约都可以访问数据库 D 的指数 I,只需用 block.contract_storage(D)[I] 即可。另一种更高级地实现数据输入的办法可能是放到链下—数据输入的的提供者对所有数据签名,这就要求任何想要触发合约的人使用最新的签过名的数据,再用以太坊内置的脚本功能来验证签名。几乎任何衍生品都可以通过这个实现,包括杠杆交易、期权,甚至包括更进阶的产品,例如担保债务凭证(CDO)。(小心,这里可没有政府救援计划,所以你要当心黑天鹅事件。)

我们拿对冲合约来举个例子。大概的意思是,A 存进 4000 个以太币来创建合约,任何人都可以接受这个合约,他只要往里存进 1000个以太币。假如合约创建时,数据库 D 的指数 I 显示 1000 以太币值 25 美元,如果 B 接受这个合约,那么 30 天后,合约将发送价值25 美元的以太币给 B,再把剩下的发给 A,任何人都可以通过发送一个交易给合约让它执行。这样 B 就免除了以太币价格波动的风险,且不需依靠任何发行方。B 的唯一风险就只剩下以太币价格在 30 天内下跌 80%以上,但甚至连这个风险都是可以通过建立另一个对冲合约来规避,当然这需要 B 在线 。 而 A 拿到的好处是那隐含的 0.2%的合约费用,至于风险, A 可以通过另外持有等额的美元来对冲(或者 A 看好以太坊的未来,他想通过这个合约用 1.25 倍的杠杆看涨以太币,如果是这样的话,那 A 可能甚至愿意支付合约费给 B )。

小白老老实实精读以太坊白皮书之旅之思_第4张图片
来自以太坊白皮书

更复杂的金融合约也是可能的。包含多重条款的复杂期权合约可以通过存储状态变量来定义,就像之前那个合约一样,不过就是多了

些条款的代码,每一个条款代表一个可能的状态。例如,一个人可以在 12 月 1 日之前用 2 美元买入一个合约,这个合约让他有权在12 月 4 日选择,是在 12 月 29 日收到 1.95 美元呢,还是把这选择权推迟到 12 月 11 日,到时候再选择,到底是在 12 月 28 日收到2.20 欧元呢,还是再次把选择权推迟到 12 月 18 日,那个时候再选择,是在 12 月 30 日收到 1.20 英镑呢,还是在 12 月 29 日收到3.20 欧元并支付 1 欧元? 注意,任何形式的金融合约都需要全额担保,因为以太坊网络不控制任何国家机器,也不能帮忙追债。

5.4 身份与名誉系统

5.5 去中心化自治组织

去中心化自治机构(decentralized autonomous corporation)是指由一定数量股东组成的实体,这些投资者可以获得分红,到达一定的大多数(例如 67%)就有权修改它本身的代码。这些股东共同决定该怎么花公司的资金,是以悬赏的形式,还是工资的形式?甚至别的更新奇的方式,如用内部货币奖励贡献,这些资金还是自动分配的,等等。这实际上是复制了传统公司的法律陷阱,不同的是它是以基于密码学的区块链来强制执行的。这是去中心化组织的公司模型,(去中心化自治组织的)另一种形式可被称为“去中心化自治社区”,其成员将在决策时有相等的投票权,添加或者移出成员需要 67%的成员统一。一个成员的加入强制地需要群体共同决定。

一个 DAO 的“代码骨架”可能看上去跟下面的差不多。

有三种类型的交易:

  [0,k] 用以注册投票来修改代码

 [1,k,L,v0,v1...vn] 用以注册 k 处的代码修改,来设置内存使其从 L 处开始至 v0, v1 ... vn 处。

 [2,k] 用以最终确定代码修改。

注意,这个设计依靠地址和哈稀的随机性来保障数据的完好,在大概 2^128 次使用后合约很可能出现某种方式的恶化失效,但这问题不大,因为在可遇见的将来这个数量级是达不到的。2^255 这个数被用来存储(组织的)成员总数,而一个成员的资格以一个“1”的方式存在成员的地址里。合约的最后三行代码用来把 C 加为第一个成员,从这之后就全是 C 的任务了,包括运用基于民主投票的代码修改协议来添加其他成员,以及编写代码来发展壮大这个组织

5.6 未来应用

1)储蓄钱包。假设 Alice 希望保障她的资金安全,但是担心自己怕弄丢私钥或私钥被黑客盗走,那她可以把以太币打进与 Bob(是一家银行)的合约里,规定如下:Alice 每天可以单独取款最多 1%的资金,Alice 和 Bob 一起可以取走全部,而 Bob 单独最多只能取0.05%。通常一天 1%对于 Alice 是足够的,如果她想取更多可以找 Bob 帮忙;如果 Alice 的私钥被盗了,她可以赶紧跑去找 Bob 一起把资金转移到一个新的合约里;如果她丢了私钥,Bob 最终还是把资金(缓慢地)取出来的;如果最后发现 Bob 是恶人,那 Alice可以以 20 倍 Bob 的速度把钱转走。

2)农作物保险。你可以很容易地建立金融衍生品合约,这里用的是天气的数据输入,而不是价格指数。如果一个衍生品合约支付出来的金额与爱荷华州的降雨量负相关,那么一个爱荷华州的农民如果买它,就可以在干旱的时候收到补偿;而当降雨充沛的时候,他会很开心因为他的农作物会长得很好。

3)一种以中心化方式管理的数据输入方式,它采用基于权益证明机制投票的最终结果的平均值(更可能是中位值)来代表人们对于某个数据的看法,这个数据可以是某种大宗商品的价格,或者是天气,或是其它相关数据,举个例子:假如

4)多重签名智能契约。比特币允许基于多重签名的交易合约,例如,5 把私钥里集齐 3 把就可以使用资金。以太坊可以做得更细化,例如,5 把私钥里集齐 4 把可以花全部资金,如果只有 3 把则每天最多花 10%的资金,只有 2 把就只能每天花 0.5%的资金。另外,以太坊里的多重签名是异步的,意思是说,双方可以在不同时间在区块链上注册签名,最后一个签名到位后就会自动发送交易。

5)点对点赌博。任意数量的点对点赌博协议都可以搬到以太坊的区块链上,例如 Frank Stajano 和 Richard Clayton 的 Cyberdice。最简单的赌博协议事实上是这样一个简单的合约,它用来赌下一个区块的哈稀值与猜测值之间的差额。之后,SatoshiDice 整个赌场都可以搬到区块链上去,这可以通过给每一次赌博创建一个合约来实现,也可以通过半中心化的合约来实现。

疑问:简单来说就是通过电脑的随机数来进行的赌注,电脑程序设定好的随机程序真的是一定可以通过去中心化的系统来随机生成一个结果吗?

6)顺理成章,基于区块链的大规模股票市场,预测市场也很容易实施,比如Augur。

7)利用身份和信用体系,来实现一个基于区块链的去中心化市场。

假如以后的人从出生就开始将必要数据写入区块链,从幼儿园到大学到工作表现,有何优秀表现,有什么不良记录,都被不可更改地记录,那么以后妹子们找男朋友是不是更加简单,用数据说话就行。

还听过有保姆烧了主人家的房子,东窗事发,才知道这个保姆是有前科的,如果纪律到家政联盟链系统内,那么在前聘用合同前是不是可以要求调用保姆的记录,就能大大增加正确的决策,而尽量减少造成不必要的损失。

8)去中心化的 Dropbox。先把文件加密,再建立它的 Merkle 树,然后把 Merkle 树的根和一定数量的以太币一起根植到一个合约里,最后把文件散布到在某个次级网络上去。这个合约每天都会根据区块的哈稀值来随机选出 Merkle 树的一个分支,然后拿出一些以太币给第一个为合约提供这个分支的节点,这个奖励就鼓励了节点们来长期存储数据。如果你想下载文件的任何一部分,你可以发送支付到某个提供微支付通道的合约,进而从多个节点下载文件,每个区块下载一部分。

脑洞大开:假如有一个家区块链的腾讯视频平台,现在就剩下三方关系了,视频上链方,提供验证存储的节点,还有就是视频的用户,就光这里是模式规则都可以有很多种,比如币乎模式,在用户C端可以注意力变现,视频上链者B端可以获取流量变现,节点端可以靠手续费赚钱,或者手续都都可以不赚,因为整个系统里流动的奖励Token 的发行方来自于这个视频分发平台的,而节点的每次服务都能产生Token奖励,而视频分发平台可以像腾讯一样由一个好的平台产品,衍生成一个生态圈,想想都让人激动啊。

5.7 合约如何工作

问题以太坊如何解决可伸缩性和扩容问题?

小丽等小王看电影等了半小时,小王来了忙道歉:不好意思,今天重庆大街堵得跟猫一样(谁说钰真同学没有幽默感来着

尽管随着节点的增加,以太坊网络的安全性也在增加,按照以太坊目前的去中心化工作机制,这样的优势也是很明显的,所有合约、应用都同时跑在所有节点之上,但是其考验的是单个节点的处理能力,随着以太坊平台上应用的增加,就会出现拥堵问题。那么考验其是否能广泛应用于商业领域的标准是每秒处理量,如何来平衡效率和公平性, 2017年6月时,比特币最快的时候每秒也只能处理7笔交易,一般情况下只有两到三笔,而PayPal和Visa每秒能处理的交易数分别为115和2000, 2017年天猫双11交易峰值每秒25.6万笔,  以太坊每秒30笔,EOS公布测试结果大约为数千笔,EOS号称可以达到百万级。

以太坊也是考虑到这个问题的,技术团队提出的解决方案是分片技术,什么叫技术,就是在原来在区块链上交易、智能合约,以前需要全网所有节点进行验证,可想而知时间会较长,而分片技术就是一部分节点处理一些交易,不需要所有节点都来处理这笔交易,这样从整个网络来看没处理量就会大大提高,甚至超过Visad 处理速度,这样就有利于运用于商业领域了。

自我思考:

1:以太坊是一个有经济激励的可编程可计算的可信的公开数据库。

2:自问:为什么V神这个技术团队要把技术分成多个阶段来进行,为什么不等技术成熟之后再发布出来?

  自答:想清楚在做的——叫科学派,可能由于工程浩大,时间长久,想着想着就不干了。  V神团队是工程派,知道要什么结果,也知道中途会遇到什么问题,就分阶段来进行,先做起来。所以将以太坊的开发分为了四个阶段:

一阶段:前沿(Frontier)

二阶段:家园(Homestead)

三阶段:大都会(Metropolis)

四阶段:宁静(Serenity)

3.现在(2017年3/22)以太坊上面已经运行有几千个应用,有些是在建工程,有些已经竣工甚至已经使用了,不过这个工程进度、质量如何,目前还没有好的"监理"来鉴别好坏,难道这个就像中国的计划经济放权给改革开放经济让市场之手来决定?

可以说以太坊是区块链2.0,是目前最成功的应用开放平台,然后由于以太坊基础公链还待完善,那么建立于其上的项目本身都有待技术成熟和市场验证,那如果还处于白皮书阶段或者在建阶段的项目,就更需要智慧和眼光。

总结:

从很多方面看,以太坊协议的设计哲学跟现阶段其它密码货币恰好相反,它们致力于增加复杂性并加入各种各样的“特性”,而以太 坊却是将特性剥离。此协议不“支持”多重签名交易、多重输入和输出、哈稀代码、锁定时间、以及另外一些就连比特币都支持的特 性,相反,它的全部复杂性都来自于一门通用的图灵完备的脚本语言,这语言可以通过合约机制来建立几乎任何可以以数学方式表述 的特性。这样,我们就拥有了一套具有独特潜能的协议。不像那些封闭而专用的协议,它们只能用来创建某组单独的应用,如数据存 储、赌博或金融,而以太坊从设计上就是开放的,我们相信它极其适合为将来数量庞大的各种金融或非金融协议充当底层协议。

你可能感兴趣的:(小白老老实实精读以太坊白皮书之旅之思)