今年1月份,曾经风光一时的比特币走出了一波跳水行情,价格从2万美元一度跌至1.1万美元,几近腰斩。此前,一些国家的监管部门已纷纷采取措施,取缔、限制比特币等虚拟货币交易。拥有全球最大的比特币交易所的韩国最近也明确表示,正在准备一项禁止通过交易所进行加密货币交易的法案。而比特币背后的区块链技术概念,在今年年初的A股市场上一度大热后,也在市场的严密监管下归于沉寂。 所谓的区块链,是指分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,也是比特币依赖的底层技术。在比特币区块链中,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性和生成下一个区块。 用术语解释区块链概念有些拗口,这些都不明白也没关系。所谓万变不离其宗,其实只要略懂电脑网络,就能明白其中风险。区块链的运行一离不开电脑实时处理,二离不开网络传输信息。随着比特币等虚拟货币交易次数越来越多,需要传输和处理的信息总量会成指数级增长,其背后需要支撑的硬件配置就会越来越高,导致系统不堪重负。 目前,数据写入大型区块链,要等待10分钟。等所有节点都同步数据,则需要更多的时间。拿比特币举例,当前产生的交易有效性受网络传输影响,比特币交易每次的确认时间大约10分钟,6次确认的话需要1个小时。这么慢的交易速度,连比特币拥趸们都不待见,“北美比特币大会”组织者今年就在其网站上宣布,由于网络拥堵和人工处理速度缓慢,他们停止接受比特币付款购买门票。 随着交易数据量不断增长,区块链数据库将越来越庞大,直到耗尽系统资源,而这一技术风险,目前尚未有完善的解决方案;即使解决了,也会是谁的机器算力强,谁的网络带宽大,谁更占优势,这又与区块链标榜的“去中心化”背道而驰。这一道理,已经被比特币从创始之初的人人都可“挖矿”的相对公平合理设计演变成了谁的算力强谁就能占优所证明。此外,无论电脑还是网络,都有被黑客攻击或操纵风险,一些比特币交易所因为受到黑客攻击而损失惨重甚至关门大吉,就是例证。 区块链难以“小而美”是比特币们的一大硬伤,估值则是比特币们另一大风险。比特币等虚拟货币的价格完全建立在市场买卖的基础上,既没有一篮子货币可锚定,又没有政府信用做背书,也不像金、银等贵金属集价值和使用价值于一身……所以价格必然上蹿下跳,波幅惊人。曾经于2014年高调支持比特币支付的微软,今年初也悄悄取消了微软商店对比特币的支持,原因就在于比特币价格波动太大受不了。 值得警惕的是,市场有一些私募机构大佬对并不成熟的区块链技术和虚拟货币风险视若无睹,不断下重注。当然,你看好,关起门来投,闷声发大财就行了,但出来高调跟大家讲区块链好,我投了,你们快跟,就不大地道了。对投资者来说,还需理性认识比特币及区块链的风险,谨慎对待所谓的投资机会。欢迎大家关注我的记录,共同探讨学习。 |
以BNB为例谈如何求证价值 – 解答BNB何时会涨
前言看人篇数据篇BNB的价值与价格逻辑篇
前言
第一,看人篇
第二,数据篇
第三,BNB的价值与价格逻辑篇
EOS : DPoS+BFT w/ Daniel Larimer 的介绍
里面的youtube视频需要翻墙(推荐使用vypr*** , https://www.goldenfrog.com/vypr* … ?ar=4b0l2dak15ohm_1)
part1:
https://steemit.com/eos/@eosgo/e … larimer-part-1-of-2
part2:
https://steemit.com/eos/@eosgo/4izmr903
里面BM会小黑板前面细细讲解New BFT+DPoS
各个网站的链接(最新)
大咖谈比特币、ICO
经纬创始管理合伙人邵亦波:
1. 买ICO的人98%会血本无归。有少数公司的模式适合基于区域链tokenize,但是大多数不适合。即使适合的,公司业务成功了,也不代表token会有价值(这里细谈可以说很多)。当然,几千个公司里会有几个公司发的token会值很多钱。
2. ICO不会取代VC。投资早期创业公司需要专业的判断和极大的耐心。大型的、成熟公司才适合面向大众投资。证监会,SEC的存在是有原因的。98年的时候,很多不成熟的公司太早上市,买股票的人当时不是投资 – 他们根本不懂怎么看 – 而是赌博。ICO现在让一个白皮书就可以面向大众融资,比98年夸张太多了,所以泡沫也会更大。这不是融资,是卖彩票。“投资”ICO的人不在做VC,而是在买彩票。
3. 创业太艰难了。大多数创业会是失败的。如果一个VC看到100个项目投100个项目,他会血本无归。 买彩票的人有一小撮也会赚的。但疯狂过去后,因为大多数公司没有商业本质的支撑,大多数彩票归零。当然卖彩票的人是赚的。
4. 这个赌场可能会持续一段时间,因为和一般的赌场或彩票不一样,输赢短期看不出来。而且这个赌场发展越大,token价钱持续上升,会让早期进入的人有成功的幻觉,越来越觉得自己牛。时间越久,最后越悲催。当然会有一小部分人靠运气赚了大钱。也会有骗子赚了更多的钱。
5. 以上不代表我不看好区域链。我很看好,觉得区域链会重构很多行业,但会需要时间,还需要有本事,有耐心的创业者。我2013年和美国一些最早进入这个行业里的人聊得很多,很早就参与了。另外,作为新型的储值工具(store of value),一两个加密币可能会取代黄金,甚至成为各国中央银行的外汇储备的重要组成部分。如果比特币最后胜出,取代黄金,比特币还有10倍的的增值空间。如果后者发生的话那还有一百倍。
经纬中国创始管理合伙人张颖:
感觉有点像98 99年互联网的疯狂,蛮好的。过一段时间 总要有些新东西出来让大家放飞一把,测试下人性,每个人的拿捏。我坚信区块链技术中长期是有价值的,但根本不屑什么ico会颠覆所有行业,特别是投资领域的狗屁观点。
来啦,经纬坐等那些先圈钱再做事的精英们来颠覆我们。我坚信一个永不变的原则,只有专注耐心,持久运营,才会赚到大钱。你们说我是**,我等着看你们好戏。
伯克希尔-哈撒韦公司CEO巴菲特:
近期比特币和其他加密货币的狂热仍将持续。不过,他面对这波兴起的热潮倒显得有些“冷眼”,“就加密货币而言,基本我能肯定地说,它们的结局将很糟糕。”但什么时候发生,如何发生,他表示自己并不知道。
“如果我能买到对每个加密货币五年的看空期权,我很乐意这样做。”但巴菲特表示,他没买比特币期货,遑论做空它。“光是应对我所了解的东西,都已经足够麻烦了,为何我还要在一些我不知道的东西上选择多头或空头的立场?”
伯克希尔哈撒韦公司副董事长查理·芒格:
被CNBC问及比特币是否为泡沫时,芒格肯定地回答:“是的,比特币和风投皆如此。泡沫将一直持续,最终糟糕地破灭。”这位94岁高龄的著名投资者将当前的环境与2000年时的网络泡沫做了对比。“风险投资有‘太多钱’,他们感到兴奋,因为事情正朝上发展,听上去还略微新潮……但我对此没觉得激动。
芒格认为,比特币是全然疯狂(total insanity)的,“比特币和其他加密货币都是泡沫。”
高盛:
1. 高盛集团驻德国联席首席执行官表示,大型投资者对投资比特币等加密货币依然拿不准,但去年该类资产上涨以后,投资兴趣正在升温。“目前,对于机构投资者而言,这个市场很有趣,但远没有成为可以真正值得投资的资产类别,”高盛的Joerg Kukies接受彭博电视采访时表示。“今天参加我们会议的人还没有真正把加密货币视作值得投资的资产,这句话的重点在于‘还没有’。”
2. 高盛策略师Zach Pandl和Charles Himmelberg周三发布报告称,“近几十年来,美元相对较好地实现了其目标”,但“在传统的货币服务供应不足的金融体系中,比特币(以及更普遍的加密货币)可能会提供可行的替代方案。”但如果,数字货币成为被广泛使用的货币形式,投资者就不应该期待获取加密货币天文数字般的回报。
3. 高盛的工作假设是,加密货币的长期回报率应该等于(或略低于)全球实际产出的增长率–即低于5%。因此,数字货币应该被认为是低/零回报或类似对冲的资产,与黄金或某些其它金属属性相似。
4. 知情人士表示,高盛最近决定放行比特币交易,且正在设立比特币交易团队。该行上月表示,正在探索如何才能最好地为对数字货币感兴趣的客户服务。
天使投资人薛蛮子:
1. 老夫我特别想强调的是,凡是有名利的地方,就必然有灾祸,数字货币投资也是,有猛涨必然有暴跌,很多人压根儿就没有投资资格,涨了开心,跌了闹心,而且现在骗子那么多,烂项目占了大多数,得到的便宜,迟早还会还回去。牛市来的这么快和迅猛,就一定是吉利的事儿吗?别人贪婪时,我恐惧,因为连那帮搞微商的都开始吆喝着“一币一别墅”了,白皮书都不看,自己还拎不清自己,都开始看项目团队了,这个圈子太奇葩了。
2. 赔不起的钱不要投,要试水只投全球前三十名的大数字货币,这样血本无归的机会大大降低。几分钱的山寨小币千万别去碰,不懂行的项目只看几个热闹字眼忽悠眼球的千万不要踫,没有靠谱创业经历靠谱创业团队的千万不要碰,没有靠谱投资人背书的尽量不要踫。现在项目已经太多太滥了,大家不是真正用区块链技术改变行业,做行业价值的,绝大部分人都是冲着暴富的心理来的,这让我老夫十分担心!
真格基金创始人徐小平:
区块链革命已经到来。这是一场顺之者昌,逆之者亡的伟大技术革命。对传统的颠覆,将比互联网、移动互联网来得更加迅猛、彻底。
创业者应该行动起来,在立身自身业务的同时,了解区块链,理解ICO,进入区块链时代。对区块链不要有怀疑,不要有迟疑,立即动员全体员工,学习如何拥抱这场革命。
EOS白皮书学习笔记
共识算法(Delegated Proof of Stake, DPOS)vs. 比特币工作量证明算法
- DPOS 区块生产者是合作关系,在任一个时间点,只有一个生产者有权产生区块。
而比特币的工作量证明算法(PoW))区块生产者是竞争关系。最终只有一个生产者获胜,其他生产者的算力会被白白浪费。 - DPOS 平均每三秒产生一个区块,平均十分钟产生200个区块;而PoW平均十分钟产生一个区块。200:1在效率上是极大的提升。
- DPOS 交易本身可以作为股权证明:每个交易都包含前一个区块头的哈希值。我的理解是某种程度可以避免比特币的51%共识攻击。
- DPOS的创新点:
. 机制创新:一轮有21个区块生产者,前20个是自动产生,第21个是根据投票数产生的。
. 关于分叉:DPOS在正常情况下不会产生分叉。如果产生了分叉,有更多生产者支持的分支的长度会增加得更快。区块生产者不可能同时在两个分支上生产区块,一旦被发现就会被投票罢免。
账户
账户在比特币中并没有涉及到。比特币中只有比特币地址,我们必须保护好自己的私钥,否则就相当于丢了比特币。
- 对于账户这个概念,可以结合steemit理解。比如我的账户是@meganchao, 访问这个页面https://steemit.com/@meganchao, 就可以看到我的博客,钱包等信息。
- EOS提供了更细化的权限管理,比如:owner可以做任何事,active可以做除了改变owner组的任何事,所有其他权限都由active派生出来。
- 消息和消息处理程序:账户之间的交互通过发消息来完成。账户可以定义自己的消息处理程序,消息处理程序也是分组的。例如@accountname.groupa.subgroupb.MessageType。
- 知识扩展:
重放攻击(Replay Attacks):是指“一条链上的交易在另一条链上也往往是合法的”,所以重放攻击通常出现在区块链硬分叉的时候。
由于硬分叉的两条链,它们的地址和私钥生产的算法相同,交易格式也完全相同,因此导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,就可以到另一条链上去重新广播,可能也会得到确认。这就是“重放攻击”。
摘自http://qukuaiwang.com.cn/news/3884.html
Token模型和资源使用
- 使用EOS软件的区块链有三大类资源:a.带宽和日志存储(磁盘空间);b.计算和计算储备(CPU);c.状态存储(RAM)。
- 未来那些拥有EOS Token的人,可以把未使用的带宽租给其他人。带宽是我们用来获利的资源啊。
管理
- 比特币区块链中缺乏正式的管理过程,非正式的管理过程常会带来意想不到的结果。
- EOS中区块生产者具有有限的权限,来冻结账户,更新有问题的应用,建议修改底层协议。
- EOS中冻结账户和改变账户代码需要在活跃生产者中进行17/21投票表决。投票表决带来了更多的公平,管理更规范。
- EOS中法规虽然很“高大上”,但依然可以被升级和改变。
脚本和虚拟机
- 脚本语言和虚拟机的实现细节大多独立于EOS技术的设计。
- 账户间发送的消息遵循纲要(Schema)的定义,数据库状态也要遵循纲要的定义。这个纲要允许二进制和JSON表示之间的转换。
- 两个待选的虚拟机:Web Assembly (WASM)和Ethereum Virtual Machine (EVM)。
区块链间的交互
这部分读得不是很明白。我想正如白皮书中所说,EOS只是区块链宏伟蓝图的一部分。未来高效的跨链交互必然会很重要。
- 采用轻量级客户端校验(LCV)的Merkle证明来证明交易是否存在。
- EOS软件给每一个发送给每个账户的消息编号。一个用户可以使用这些序号证明所有发送给某个账户的消息已被处理,并且按顺序处理。
最后,把自己画的思维导图也分享一下。欢迎拍砖。
EOS与以太坊对比分析(上篇)
原文链接:https://steemit.com/eos/@trogdor/eos-vs-ethereum-for-dummies
简介:##
在比特币刚刚开始发展的初期,就有人意识到,比特币除了作为一种数字货币,其背后的技术存在巨大的发展潜力。在比特币发展的这几年间,已经有不少基于公开账本的区块链技术的去中心化的应用落地。这些应用包括:加密信息应用(Bitmessage),去中心化交易所(Bitshares),博彩赌博(Peerplays),云计算(Golem),以及社交媒体(Steem/Steemit)。对于区块链技术的开拓者们来说,如果从零开始实实在在构建出一个新的区块链应用是一项不小的挑战。同时,在确保整个网络及应用的安全方面,除了传统的POW和POS共识机制,更为重要的是拥有更强大的哈希算力和更多的分布式网络令牌,而这些对于很多刚刚起步的小企业和创业者来讲很困难,一个小型创业公司很难去拥有一个分布广泛算力强劲的网络去确保其应用的安全。
当然,其他一些共识机制,如DPOS(分布式共识算法),可以用相对较小数量的处理器去构建网络,但仍然存在一些困扰开发者的问题,像如何部署大规模分布的网络令牌、如何把密码术、区块链技术与具体的应用连接起来。打个比方,想象一下,如果一个电脑游戏设计者开发一个游戏,需要重头开始先造个电脑出来,同时还要造一个针对这个游戏的专用电脑操作系统,以便于游戏与电脑间的指令传输,那么这个游戏不会太好玩,因为设计者没有足够的精力花费在游戏设计本身。
智能合约平台的开发与实现其实就是为了解决上面所说的问题,而目前应用最成功的当属以太坊了。你可以把以太坊理解成为一个在其上可以开发运作各种去中心化的应用(Dapps)的去中心化平台,同时它有一个优势在于,它确保了它的用户在运行这些应用程序(Dapps)时不受任何第三方的约束。目前,以太坊的市值已趋近300亿美元,这也证明了市场对智能合约平台的需求热度。
日前,Dan Larimer(Bitshares, Graphene, 和Steem/Steemit这些项目的创始人),与eos.io团队一起,宣布了EOS项目的进展,这将是一个区块链操作系统,其上它向所有的应用程序开发者提供了数据库、账目权限设置、执行调度、认证以及网络应用通信等功能。EOS将提供给开发者合适的工具,以使得他们更加专注于他们自身应用的逻辑设计,而不用担心加密算法的实现或者与去中心化的计算机之间的通信;同时,EOS也将尽可能达到高并发,使区块链并发达到百万交易每秒的级别。
下面我们来看看以太坊和EOS这两个系统在技术、性能和设计思想等方面到底有何区别。
1. 智能合约的含义##
对于那些对加密货币和区块链技术还不太熟悉的人来说,首先最重要的是要理解到底什么是区块链。从本质上讲,区块链是一个账目公开的去中心化系统,账本记录了当前系统的所有状态(例如每个账户持有多少加密数字货币),除了公开账目,区块链还通过共识机制来规定整个区块链中的分布式计算机如何同步更新公开账本的所有状态。
智能合约可用于解决在没有第三方介入的情况下,财富和资产的交换与转移。与传统的合同类似,智能合约也定义了交易双方的权利责任和违约赔偿,但不同之处在于,在智能合约平台上会自动去执行这些条款。以太坊是目前最大也是最成功的智能合约平台,在其上成功运行了不少去中心化的应用,而EOS也将致力于解决目前以太坊上所存在的问题。
2. 设计理念##
以太坊和EOS的最大区别可能在于其网络背后的设计理念上。以太坊网络可以描述为应用不可知论者,即它被特定设计成对所有潜在应用都表现中立性的平台,就如它的在github上的设计原理文档中所述:以太坊“没有特性”,“拒绝内置”。这样的原理减少了应用程序的臃肿,但依然要求许多不同的应用程序来进行代码重用。而如果平台本身能提供更多的常用功能,那么应用程序开发人员的效率将得到提升。
而EOS则不同,它意识到许多不同的应用其实是需要部分相同类型的功能的,于是它在寻求怎样去提供这些功能给到不同的应用,如加密和区块链通信工具。基于这样的理念,EOS将广泛引入如下特性:基于角色的权限管理、用于界面开发的WEB工具包、自描述接口、自描述数据库体系、还有一个声明式许可方案。按我的理解,EOS提供这些功能对于简化用户账户生成和管理以及安全问题(类似声明权限和账户恢复)将特别有效。
3.共识机制与管理##
EOS与以太坊的另一个显著差异在于区块链的共识机制和总体的区块链管理办法。
鉴于以太坊使用工作证明POW模式(很快将转换为POW/POS混合模式),而EOS将会使用采取股份授权证明(DPOS)机制的石墨烯技术。这种选择对商业可扩展性具有显著价值。
目前实行POW的以太坊网络背后存在一个问题就是难以修复已毁坏的应用程序。比如,之前DAO遭遇了致命的bug、黑客攻击和事故。需要特别说明的是,那些拥有“代码即法律”思想的人认为对DAO的黑客攻击是一种“特性”,而不是失败,因而用户应当更加负责任、更加细心的审视代码。不管怎样,这次DAO事故都表明,对于以太坊上已毁坏的应用程序要么将导致投资者面临实质性损失,要么导致需要应对混乱的硬分叉。根据当前以太坊的POW共识机制,每次的硬分叉也能引起产生多个竞争链的风险,如同以太坊经典ETC在DAO事故之后分裂出来。但为了处理一个已毁坏的应用,一个扰乱了整个以太坊网络分裂性的硬分叉又是必须的。
相比之下,EOS包含一个冻结和处理破坏性或冻结类应用程序的机制。举例来说,假如DAO在EOS上发生了,它可以被冻结、处理或更新而不会干扰其他应用程序。此外,EOS的DPOS共识机制使得在硬分叉时没有伴生出多重竞争链的潜在可能性。Steem网络经历的18次成功的硬分叉已经证明了这一点,它同样也是运行在石墨烯上。此外,EOS将包含一个有法律约束力的“宪法”,确立共同管辖权用于解决用户争端,它还包括一个基于股权权重投票产生的自治的社区。
作者:睡后收入研习社 链接:https://www.jianshu.com/p/acaa63031558 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
比特币的技术原理
比特币以及区块链具有去中心化、不可篡改、不可伪造、可追溯的特点。这些特点是依赖什么技术得以实现的?
去 中 心 化
首先,来说说作为比特币和区块链最重要的特性之一去中心化,是依靠什么技术实现的呢?通过下面的对比让你更好理解:
由此可以看出中心化的交易机构,在确认交易金额时是用不超过5次的人工验证来操作的。中心化是用非对称加密技术来验证的。那什么是非对称加密技术?它是指加密和解密的时候使用不同密钥的加密算法。如果加密和解密使用相同的密钥,我们称为对称加密。对称加密不安全的地方在于,大家使用的秘钥如果相同,这个密钥就已经不安全了。
由上面就可以看出,如果A和B两个用户进行去中心化的交易,A和B可以互相告知对方公钥也就是比特币地址,但是各自的签名和验证密码都是保密的,不可以告诉对方。比特币地址在网络里可以公开,但是即使其他人都收到了也没用,只有B有匹配的私钥,当B输入匹配的签名和密码后,合法交易在公私钥匹配的情况下顺利完成。
在非对称加密机制里,公钥和私钥是成对存在的,每个矿工在拿到一笔转账交易时候都可以验证公钥和私钥到底是不是匹配的,如果他们是匹配的,这笔交易就是合法的,这样每一个人只需要保管好他自己的私钥,知道自己的比特币地址和对方的比特币地址就能够安全的将比特币进行转账,不需要一个中心化的机构来验证对方发的比特币是不是真的,非对称加密技术保证了比特币的去中心化特点。
不 可 篡 改
我们再来看看,为什么说比特币的区块链账本是无法被篡改呢?这里说的篡改是网络中为了弄虚作假而对账本进行恶意修改。这一点由比特币采用工作量证明机制和最长链机制来保障的。
比特币的 “工作量证明”,简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是效率非常低的,而通过对工作的结果进行认证来证明完成了一定工作的工作量,是一种非常高效的方式。比如现实生活中的学历证、驾驶证等等,也是通过检验你完成了一定知识的学习或者驾驶过一定时间的汽车,来证明你的技能的,也就是说通过这个结果证明你曾经做过这件事,曾经耗费过所谓的工作量。
工作量证明的特点,对于执行的一方来说,难度是适中的。对于验证方来说是非常容易被验证的。矿工们进行哈希计算,你可以理解为是一种数学的游戏。获得正确答案,就会获得记账权,其他节点经过非常简单的验证之后,就可以同意其记账,并同步账本。打上时间戳后,紧接着进行下一轮算力竞赛。
如果这时候有人想把某个区块高度上某个交易信息进行修改,他需要做什么呢?他需要从这个区块开始把之后所有的区块都重新计算一遍,把账本再同步给其他人。而在他进行计算的同时,其他矿工们已经在原来的链上继续往前进行记账了。因为在比特币的网络里,大家认为最长的链才是正确的链。这个恶意篡改的人,需要在很短的时间内赶上现有区块的高度,让自己的这条区块链成为最长的链,让其他矿工误以为这是正确的账本。
除非这个恶意篡改的人,拥有非常大的算力,至少超过50%,否则基本上没有可能进行这样的篡改。
我们算一笔账,现在全网算力是8E哈希每秒(1 E=1000P,1P=1000T),就是大概每秒进行8*10^18次计算,现在的流行的主流矿机大概每一台的算力是10T左右。如果你想拥有全网51%算力,你需要至少40万台最新的矿机,一台矿机价格按照10000元计算,光是设备这一项就需要投入40亿元人民币。况且,最新的矿机生产赶不上销量,经常处于买不到现货的状态。加上老矿机不断被淘汰,算力不断上涨。你购置设备的速度很难赶上算力上涨的速度。从投资回报率的角度来说,这项投资的成本需要至少40个亿人民币,如果他不是为了6、70个亿以上的利益,并且他有非常雄厚的经济实力和技术实力做支持,一般人也不会有这个动力进行算力攻击的。从网络大环境来看,前面我们也说过,由于去中心化的存在,整个网络非常警惕影响比特币这一情况出现。
曾经在网络上出现有一个矿池的算力接近50%,后来大家就逐渐把自己的算力连接到其他矿池上。其实,从经济学的角度来说,这种51%的攻击也是非常不科学的。我们试想下,当这个攻击的发生,比特币的区块链得到了篡改,比特币的价格将会变得一文不值。他通过这个篡改获得的利益也会受到很大的损失。总而言之,想篡改比特币账本,简直是比登天还要难,同时也无利可图。
不 可 伪 造 可 追 溯
最后我们来说说为什么说比特币不可伪造呢?也就是说不能造假币。我发给你0.1枚比特币,为什么你相信这枚比特币不是我自己伪造出来的,而是真的比特币呢?或者,你怎么相信我没有把这0.1个比特币同时转给了2个人或3个人呢?这和比特币的UTXO结构有关系。
所谓“UTXO”英文全称Unspent Transaction Outputs,中文的意思是未花费的交易输出,它是比特币交易生成及验证的一个核心概念。我用你非常熟悉的纸币来举个这个例子。假设我要给你20元钱
20元=2张*5元纸币(超市店员的找零)
+
1张*10元纸币(咖啡店员的找零)
拿到这三张钞票之后,我还没有花出去,才能给你。这就叫未花费的交易输出。超市店员的这2张5元钞票,又来自其他人,咖啡店员的1张10元钞票,也可能来自于其他人。这样这些钞票,可以顺藤摸瓜一直追溯到发行的那一刻,由印钞公司根据央行批准发行出来,并首先发给了哪家银行,最后流通到市场上的。由此验证这三张钞票都是真的。
比特币的UTXO也是这样的结构。在比特币世界里的每一笔转账,都能够追溯到上一笔交易。每一笔付款,都可以追溯到上一笔的收款。我给你的0.1个比特币,必须是别人给我的、我还没有进行花费的比特币。然后可以一直往上追溯到它诞生时矿工挖出来的那个区块。这个机制,保证了比特币不可被伪造,不可以被重复支付。重复支付,在比特币世界被叫做“双花”,就是花了2次。在比特币之前,一直没有数字资产能够解决双花问题,而中本聪用这个机制,解决了这个信任问题,使得比特币能够被广泛的应用。
核心内容总结
虽然你可能不懂技术,但是我也希望你能够了解比特币以及区块链去中心化、不可篡改、不可伪造可追溯三大特点的技术原理。
1、非对称加密和分布式存储确保了比特币的“去中心化”;
2、工作量证明、共识机制和最长链机制,保证了比特币“不可篡改”;
3、UTXO结构可以追溯每一枚比特币的前世今生,造就了比特币“不可伪造可追溯”的特性。
EOS技术白皮书
EOS.IO技术白皮书
作者:block.one
2017年6月26号
本中文白皮书翻译自EOS白皮书英文版,如果有表述不一致的地方,以英文版本为准。
摘要
EOS.IO软件引入了一种新的块链架构,旨在实现分布式应用的性能扩展。这是通过创建一个可以构建应用程序的类似操作系统的架构来实现的。该软件架构提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度。该技术的最终形式是一个块链体系架构,该区块链每秒可以支持数百万个交易,同时普通用户无需支付使用费用。
1. 背景
Blockchain技术源于2008年推出的比特币,自那时以来,企业家和开发人员一直在努力推广该技术,以便在单个块链平台上支持更广泛的应用。
虽然一些通用区块链平台还在努力实现第一个能正常运行的区块链应用,针对特定场景的区块链应用诸如BitShares去中心化交易所(2014)和Steem社交媒体平台(2016)已经成为日活跃用户上万的成功应用。 这两个应用成功的把性能提高到每秒数千个交易,延迟降低到1.5秒,降低交易费用,并实现了与中央服务器方案相似的用户体验。
由于现有的块链平台使用费用高昂,性能有限,阻碍了区块链应用的广泛传播。
2. 区块链应用的要求
成为一个成功的区块链应用平台块,应该需要满足以下要求:
支持百万级别用户
如Ebay,Uber,AirBnB和Facebook这样的应用,需要能够处理数千万日活跃用户的区块链技术。 在某些情况下,应用程序可能无法正常工作,除非达到了大量用户,因此可以处理大量用户数量的平台至关重要。
免费使用
有时候应用开发人员需要灵活的为用户提供免费服务; 用户不必为了使用平台而付出费用。可以免费使用的块链平台自然可能会得到更多的关注。有了足够的用户规模,开发者和企业可以创建对应的盈利模式。
轻松升级和Bug恢复
基于块链的应用程序在进行功能迭代的时候自然需要能支持软件升级。所有软件都有可能受到bug的影响。一个区块链底层平台在遭遇bug的时候,需要能够从bug中修复错误。
低延迟
及时的反馈是良好用户体验的基础。延迟时间如果超过了几秒钟,会大大影响用户体验,严重降低程序的竞争力。
串行性能
有些应用程序由于命令执行必须是顺序的,从而无法用并行算法进行实现。诸如交易所之类的应用经常需要处理大量的串行操作,因此一个成功的区块链架构需要具有强大的串行性能。
并行性能
大规模应用程序需要在多个CPU和计算机之间划分工作负载。
3. 共识算法(DPOS)
EOS.IO软件架构中采用目前为止唯一能够复合上述性能要求的区块链共识算(DPOS)。根据这种算法,全网持有代币的人可以通过投票系统来选择区块生产者,一旦当选任何人都可以参与区块的生产。
EOS.IO里预计每3秒生产一个区块。任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该块。
EOS.IO架构中区块产生是以21个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出。所选择的生产者会根据从块时间导出的伪随机数进行混合。以便保证出块者之间的连接尽量平衡。
如果出块者错过了一个块,并且在最近24小时内没有产生任何块,则这个出块者将被删除。这确保了网络的顺利运行。
在正常情况下,DPOS块链不会经历任何叉,因为块生产者合作生产区块而不是竞争。如果有区块分叉,共识将自动切换到最长的链条。具有更多生产者的区块链长度将比具有较少生产者的区块链增长速度更快。此外,没有块生产者应该同时在两个区块链分叉上生产块。如果一个块生产者发现这么做了,就可能被投票出局。
交易确认
由DPOS共识算法维护的区块链一般出块者都是100%在线的。这就是说一个交易平均1.5秒后,会被写入区块链中,同时被所有出块节点知晓这笔交易。这就意味着只需要1.5秒,一笔交易可以认定为99.9%被区块链接收了。
有一些非常情况下例如,软件bug,Internet拥塞或恶意出块者出现,区块链可能出现分叉。为了确保一个交易是不可逆转的,可以等待15个区块确认。根据EOS.IO软件的配置,在正常情况下15个区块确认平均需要45秒。
在分叉产生的9秒钟内,出块节点就可能发现这个分叉可能并警告用户。一个节点观察网络的时候如果发现连续2次的丢块事件,这意味着改节点由95%可能性在区块链的分叉分支上。有出现3个连续的丢块以后,该节点有99%的可能性在一条分叉出来的区块链上。可以生成一个预测模型,它将利用节点丢失的信息,最近的参与率以及其他因素来快速地警告用户出现什么问题。
对这种警告的反应完全取决于业务交易的性质,但最简单的反应是等待15/21确认,直到警告停止。
交易证明(TaPoS)
EOS.IO软件要求每个交易都包括最近的区块头的哈西。 这个哈希有两个目的:
1.防止分叉区块链上出现大量交易记录;
2.使得系统能感知到用户是否在分叉出来的区块链上
随着时间的推移,所有用户最终直接确认块链,这使得难以伪造假冒链,因为假冒将无法从合法链路迁移交易。
4. 帐户
EOS.IO软件允许使用唯一的长度为2到32个字符的可读的名称来实现对帐户的引用。该名称由帐户的创建者自行选择。所有帐户必须在创建时必须充入最小的帐户余额以支付存储帐户数据的费用。帐户名称还支持命名空间,因此帐户@domain的所有者是唯一可以创建帐户@user.domain的用户。
在去中心化的情况下,应用程序开发人员将支付创建帐户名义上的成本以注册新用户。通常企业已经以广告和免费服务等形式为获取每个客户花费了大量资金。相比之下,创建新的区块链帐户所需的资金成本是微不足道的。并且幸运的是,没有必要为已经由另一个应用程序注册的用户创建帐户。
消息和消息处理程序
每个帐户可以将结构化消息发送到其他帐户,并且可以定义消息被接受后的处理脚本。EOS.IO软件为每个帐户提供其自己独有的数据库,只能由自己的消息处理程序访问。消息处理脚本还可以向其他帐户发送消息。消息和自动的消息处理程序的组合正是EOS.IO定义智能合约的方式。
基于角色的权限管理
权限管理主要涉及明确特定的消息是否被正确授权。权限管理的最简单形式是检查事务是否具有所需的签名,但这隐含着所需的签名是已知的。通常权力是与可以分类的个人或个人群组绑定在一起的。EOS.IO软件提供了一个声明式权限管理系统,可以让帐户细粒度和高级别地控制谁在何时能够做什么。
至关重要的是,身份认证和权限管理被标准化实现,并与应用程序的业务逻辑分离。这使得开发某种工具以通用方式管理权限成为可能,并为性能优化提供了巨大的空间。
每个帐户都可以通过其他帐户和私钥的任何加权组合来控制。这种机制创建了一个能够真实反映权限在现实中的组织情况的层次化权限结构,并使得多用户对资金的控制比以往任何时候都更容易。多用户控制是提升安全性的最重要因素,如果能正确地使用,可以极大地消除黑客盗窃的风险。
EOS.IO软件允许帐户可以定义与其他帐户密钥的“and”和“or”的组合,并且把这个组合以将特定类型的消息发送到另一个帐户。例如,可以为用户的社交媒体帐号提供一个密钥,另一个用于交易。甚至用户可以给予其他帐户许可让其代表自己的帐户行事,而无需向其他帐户分配密钥。
命名权限级别
使用EOS.IO软件,帐户可以定义命名权限级别,每个权限级别可以从更高级别的命名权限派生。每个命名权限级别定义一个权力,这个权力可以是其他帐户的密钥和(/或)命名权限级别组成的多签名检查的阈值。例如,帐户的“朋友”权限级别可以设置为帐户能被其任何朋友帐户平等地控制。
另一个例子是Steem区块链,其具有三个硬编码命名的权限别:owner,active和posting。Posting权限只能执行诸如投票和发布等社交行为,而active权限可以做除了更改所有者的所有事情。owner权限实质是被保留了起来,它能够做所有一切。EOS.IO通过允许每个帐户持有者定义自己的权限层次结构以及动作的分组来实现类似的管理理念。
命名消息处理程序组
EOS.IO软件允许每个帐户将自己的消息处理程序以命名嵌套的方式予以组织。这些命名的消息处理程序组可以通过配置其权限级别被其他帐户引用。
最高级别的消息处理程序组是处理帐户名称的程序组,最低级别的消息处理程序组是处理该帐户正在接收的单独消息类型的程序组。这些程序组的引用格式为:@accountname.groupa.subgroupb.MessageType。
在这种模式下,可以将创建和取消订单的交易合约与存取款的交易合约分离。这种交易合约的分组对用户使用交易合约提供了较大便利。
权限映射
EOS.IO软件允许每个帐户定义任何帐户的命名消息处理程序组与其自己的命名权限级别之间的映射。例如,账户持有人可以将账户持有人的社交媒体应用程序映射到帐户持有者的“朋友”权限组。通过此映射,帐户的任何朋友都可以和帐户持有者一样,在帐户的社交媒体上发布内容。即使他们将作为帐户持有者发布,他们仍然会使用自己的密钥来签名。这意味着总是可以辨别出来哪些朋友以何种方式使用了其帐户。
权限评估
当从@alice到@bob传送“Action”类型的消息时,EOS.IO软件将首先检查@alice是否为@bob.groupa.subgroup.Action定义了权限映射。如果没有找到任何结果,那么将会检查@bob.groupa.subgroup,然后是@bob.groupa,最后是@bob的映射。如果此时仍然没有找到匹配的结果,那么假定的映射将是命名的权限组@alice.active。
一旦识别出权限映射,则启动多签名阈值校验过程。如果校验成功,所命名的权限将与关联的权限建立关联。如果失败,那么它会遍历父权限,最终遍历到其所有者的权限@alice.owner。
默认权限组
该技术还允许所有帐户都有一个可以做所有事情的“owner”权限组,和一个除了更改所有者组之外可以执行所有操作的“active”权限组。所有其他权限组均派生自“active”权限组。
权限的并行评估
权限评估是个“只读”的过程,即使在事务过程中对权限进行了修改,在运行到区块结尾时这种修改也会失效。首先,这意味着所有事务的所有密钥和权限评估可以并行执行。其次,这种机制意味着可以快速验证权限,而不需要考虑启动可能回滚的昂贵的应用程序逻辑。最后,这意味着当挂起的事务继续执行时,事务权限的评估可以继续执行,而无需重新执行。
这么设计考虑的主要原因,是因为权限验证占据交易验证的很大计算量比例。使之成为一个只读和可并行化的过程,可以显着提高性能。
当区块链消息被重放,来从消息日志中重新生成确定状态时,并不需要再次评估权限。事务被包含在一个已知的状态良好的区块中的事实使其可以跳过这个步骤。这极大地减少了重放之前的区块链数据相关的计算量。
有强制延迟的消息
时间是安全的关键组成部分。在大多数情况下,在私钥被使用前不可能知道其是否已经被盗用。基于时间的安全机制在人们使用一些特殊类型应用程序时更为关键,这些应用程序需要将密钥保存在连接到互联网的人们日常使用的计算机上。EOS.IO软件支持应用程序开发者指定某些消息在包含在区块后,实际应用之前必须等待一段比较小的时间段。在此期间,这些消息可以被取消。
当这类消息被广播时,用户可以通过电子邮件或短信收到相应通知。如果他们不授权该消息,那么他们可以登录其帐户来还原帐户数据并撤回消息。
所需的延迟取决于操作的重要程度。支付一杯咖啡可以毫不拖延地在几秒钟内确认,而买房子可能需要72小时清算周期。将整个帐户转移到新的控制者手上可能最多需要30天。具体延迟的选择取决于应用程序开发者和用户。
密钥被盗后的恢复
EOS.IO软件为用户提供了一种在密钥被盗时恢复其帐户控制的方法。
帐户所有者可以使用在过去30天内活动的任何其批准的帐户恢复合作伙伴的密钥,在其帐户恢复合作伙伴的允许后,重置其帐户上的所有者密钥。在没有帐户所有者的配合情况下,帐户恢复合作伙伴无法重置其帐户的控制权。
对于攻击帐户的黑客而言,由于其已经“控制”该帐户,因此尝试执行恢复过程没有任何收获。此外,如果他们的确进行恢复的过程,那么恢复合作伙伴可能需要身份认证和多因素认证(如电话和电子邮件)。这或者会暴露黑客的身份,或者黑客在恢复过程中毫无所得。
这个过程与简单的多重签名机制有极大的不同。通过多重签名的交易,会有一个对象会执行并参与每一个交易;而通过恢复过程,恢复过程的操作者仅参与了恢复的过程,并没有权力参与日常的交易。这极大降低了相关参与者的成本和法律责任。
5. 应用程序的确定性并行执行
区块链共识取决于确定性(可重现)行为。这意味着所有并行执行都能不能使用互斥体或其他锁的原语的情况下正常运行。没有锁,必须有一些方法来保证所有帐户只能读写自己的私有数据库。这也意味着每个帐户会顺序处理其消息,并行性确定在帐户级别。
使用EOS.IO软件,区块生成器的工作是将消息传递到独立的线程中,以便它们可以并行地评估。每个帐户的状态只取决于传递给它的消息。调度表是区块生成器的输出,并且将被确定性地执行,但是生成调度的过程不必是确定性的。这意味着区块生成器可以利用并行算法来调度事务。
并行执行还意味着当脚本生成新消息时,它不会立即发送,而是在下一个周期中发送它。无法立即发送的原因是因为接收方可能会在另一个线程中主动修改自己的状态。
通信延迟优化
延迟时间是一个帐户将消息发送到另一个帐户并收到响应所需的时间。EOS.IO软件的目标是使两个帐户能够在单个区块内来回交换消息,而不必在每个消息之间等待3秒。为了实现这一点,EOS.IO软件将每个区块分为周期(cycle)。每个周期分为线程(thread),每个线程包含事务列表。每个事务包含一组要传递的消息。该结构可以被可视化为树,其中各层依据其特性被顺序或者并行地进行处理。
区块Block
周期Cycles(顺序)
线程Threads(并行)
交易Transactions(顺序)
消息Messages(顺序)
接收方和通知的帐户Receiver and Notified Accounts(并行)
在一个周期中生成的交易可以在任何后续周期或区块中传送。区块生成器将不断把周期添加到区块中,直到最长的区块时间间隔达到,或者没有新的可传送交易生成。
可以使用区块的静态分析来验证在给定周期内是否存在两个线程包含修改同一个帐户的事务。只要这种静态分析机制一直起作用,就可以通过并行运行所有线程来处理区块。
只读消息处理
部分账户可能会处理一些只需要决定通过与否的消息,而不会改变自己内在状态。这种情形下,只需要有一个或多个进程包含这个特殊账户下的只读消息处理器,这些处理就能并行进行。
多账户原子交易
有时,我们希望确保消息被多个帐户以原子方式交付和接受。在这种情况下,两个消息被放置在一个交易中,两个帐户将被分配相同的线程和消息按顺序执行。这种情况在性能上并不理想,并且当涉及到“付费”用户的使用时,他们将会被根据交易所涉及的特殊帐户的数量来收费。
出于性能和费用的考虑,最好将涉及两个或更多帐户的原子操作最小化
部分区块链状态评估
大规模区块链技术组件应该是模块化的。每个人都不应该运行所有东西,特别是如果他们只需要使用一小部分应用程序的时候。
出于将交易状态显示给用户的目的,交易应用的开发者将维护一个完整的节点。这款交易应用不需要与其他社交媒体应用关联状态。EOS.IO系统允许任何完整的节点选择性的运行任意应用子集。传递给其他应用的消息将被安全地忽略,因为应用的状态完全来自于传递给它的消息。
这对于多帐户之间的通信有一些重要的影响。最重要的是,不能假定另一个帐户的状态在同一台机器上是可访问的。它还意味着,虽然允许一个帐户同步调用另一个帐户的“锁”是一种诱人的设计模式,但如果其他帐户不在内存中,这种设计模式将会崩溃。
因此,所有帐户间的状态通信必须通过区块链上的消息进行传递。
自主最优任务安排
EOS.IO系统不能强制阻止区块生成者向其他帐户发送的任何消息。每个区块的生成者对处理交易的计算复杂度和时间复杂度都有自己的主观度量,无论这个交易是由用户生成的还是由脚本自动生成的。
在网络层面,EOS.IO系统处理的每一笔交易都有固定的计算带宽成本,不管它是耗费01ms还是10 ms来处理它。但是,使用该系统的每个单独的区块生成者会使用它们自己的算法和度量来衡量资源使用。当一个区块生成者发现一个交易或帐户已经消耗了大量的计算能力时,他们会在生成自己的块时拒绝该交易;但是,如果其他区块生成者认为它是有效的,他们仍然会处理该交易。
一般来说,只要一个区块生成者认为一个交易是有效的,并且所消耗的资源是可控的,那么其他所有的区块生成者也会接受它,但可能要花费1分钟才能使该交易传播到这个区块生成者处。
在某些情况下,区块生成者可以创建一个区块,其中包括在可接受范围之外的交易。在这种情况下,下一个区块生成者可能会选择拒绝这个区块,而这条线路将会被第三个区块生成者终结。这与一个大区块导致网络传播延迟所引发的情况没有什么不同。社区会注意到这种异常模式,并最终清理该流氓区块生成者的选票。
这种对计算、资源成本的主观评估将使区块链不必精确地去度量运行一个任务需要多长时间。有了这个设计,就不需要精确地数指令,这将极大地增加优化的机会,而不会打破共识。
6. 令牌模型和资源使用
所有的区块链都是资源受限的,并且需要一个系统来防止滥用。在EOS.IO系统中,有三大类资源被应用程序消耗:
1.带宽和日志存储(磁盘);
2.计算和计算积压(CPU);
3.状态存储器(RAM)。
瞬时使用和长期使用的这两类组件都会消耗带宽和计算。区块链系统将维护所有消息的日志,这些日志将会被所有的完整节点下载和存储。通过日志信息,可以重构所有应用程序的状态。
可计债务是指通过对消息日志重新生成状态的计算消耗。如果可技债务增长太大,就有必要对区块链的当前状态进行拍照,并抛弃区块链的历史状态。如果计算债务增长过快,区块链将使用6个月的时间来重放1年的交易。因此,对可计债务进行精心管理是至关重要的。
区块链存储的状态指那些可从应用程序逻辑访问的信息。它包括诸如订单和帐户余额等信息。如果应用程序不读取该状态,则不应该存储它。例如,博客文章的内容和注释不被应用程序逻辑读取,因此它们不应该存储在区块链的状态中。与此同时,邮件或评论的索引、投票数和其他属性将作为区块链状态的一部分被存储起来。
区块生成者可以发布它们可用的带宽、计算资源和状态的容量。EOS.IO系统允许每个帐户在一个3天对赌合约中消耗一定比例的可用容量。例如,假设一个基于EOS.IO系统的区块链应用启动,如果一个帐户持有该区块链提供的总令牌的1%,那么这个帐户就有可利用该区块链1%的状态存储容量。
使用EOS.IO系统,带宽和计算能力将被分配到部分储备基础中,因为它们是短暂的(未使用的容量不能存储下来为将来使用)。EOS. IO系统将使用类似于Steem的算法来限制带宽使用速率。
目标和主观度量
正如前面所讨论的,可度量计算的使用对性能和优化有很大的影响;因此,所有资源的使用限制最终都是主观的,并且根据各自的算法和估计来执行。
也就是说,从客观角度来说,有些事情是微不足道的。站在客观的角度,传递的消息数量和存储在内部数据库中的数据的大小都是很便宜的。EOS.IO系统允许区块生成者能够在这些客观度量上应用相同的算法,但是也可以在主观度量上选择更严格的主观算法。
接收方支付
传统上,它是用来支付办公空间、计算电力以及运营业务所需的其他费用的业务。客户从该业务中购买特定产品,而这些产品的销售收入将用于支付业务成本。同样,没有任何网站要求访问者为维护服务器而支付小额费用。因此,分散的应用程序不应该强迫它的客户直接为使用区块链支付费用。
EOS.IO系统不要求用户直接向区块链支付,因此不限制或阻止企业确定其产品的货币化策略。
授权能力
如果一个区块链是使用EOS.IO系统开发的,而其令牌是由一个持票人持有,他可能不需要立即消耗全部或部分可用带宽,这样的持有者可以选择将未消耗的带宽给予或租给他人;使用EOS.IO 系统的区块生成者将识别这样的授权并直接分配相应的带宽。
将交易成本与令牌价值分开
EOS.IO系统的主要优点之一是,应用程序可用的带宽完全独立于任何令牌价格。如果应用程序所有者持有相应数量的令牌,那么应用程序可以在固定的状态和带宽使用中持续运行。开发人员和用户不会受到令牌市场价格波动的影响,因此不会依赖于价格。EOS.IO系统运行区块生成者能够自然地增加带宽、计算资源和每个令牌的可用性,这与令牌的价值无关。
EOS.IO系统将奖励那些生成了区块的区块生成者一定的令牌。令牌的值将影响一个区块生成者能够购买的带宽、存储和计算量;这个模型自然会利用上升的令牌价值来提高网络性能。
状态存储成本
因为带宽和计算资源可以被委托,因此应用程序状态的存储要求应用的开发者持有令牌直到该状态被删除。如果状态不被删除,那么令牌将被有效地从循环中删除。
每个用户帐户需要一定数量的存储空间;因此,每个帐户必须保持最低余额。随着网络存储容量的增加,最低余额的要求将会下降。
块奖励
每次生成一个块时,EOS.IO系统都会奖励该区块生成者一个新的令牌。所创建的令牌数量由所有区块生成者所公布的期望报酬的中位数决定。EOS.IO系统可能被配置为限制区块生成者所得奖励上限,这样,令牌供应的年总增长不超过5%。
社区福利应用
除了加入以EOS.IO系统为基础的区块生成者团队,用户还可以选择3个社区福利应用,也称为智能合约。这3个应用程序最多能按配置的比例接收到每年的令牌配额减去已支付给区块生成者的部分。这些智能合约将根据每个应用程序从令牌持有者收到的选票比例来收取令牌。经选举的应用程序或智能合约可以由新当选的应用程序或令牌持有人的智能合约所替代。
7. 治理
治理是人们在主观问题上达成共识的过程,而这些问题不可能完全被软件算法所捕获。EOS.IO系统实现了一个治理过程,有效地影响到现有的区块生产商。在被定义治理流程之外,之前的区块链依赖于临时的、非正式的、经常有争议的治理过程,从而导致不可预知的结果。
EOS.IO系统认识到,治理权力源来自于将权力代理给区块生成者的令牌持有者。区块的生成者被给予有限的和被监督的权限来冻结帐户,更新有缺陷的应用程序,并提出对底层协议的变更。
EOS.IO系统的一部分是区块生成者的选举。在对区块链进行任何更改之前,这些区块生成者必须批准它。如果区块生成者拒绝做出让令牌持有人所期望的改变,那么他们可以被投票否决。如果区块生成者未经令牌持有者允许进行更改,那么所有其他非生产的全节点验证器(交换器等)将拒绝更改。
冻结账户
有时,智能合约的行为会发生异常或不可预知,无法按照预期执行;有时应用程序或帐户可能发现一个漏洞,使其消耗不合理的资源。当此类问题不可避免地发生时,区块生成者应当有能力纠正这种情况。
所有区块链的区块生成者有权选择哪些交易被包含在区块中,从而使他们有冻结帐户的能力。EOS.IO系统通过冻结一个帐户到17 / 21活跃区块生成者的投票结论中,使这一授权成为正式结论。如果生成者滥用权力,他们可以被淘汰,账户将被解冻。
改变帐户代码
当其他一切都失败了,而“不可阻挡的应用程序”以一种不可预知的方式运行时,EOS.IO系统允许区块生成者在不需要硬分叉整个区块链的情况下替换帐户的代码。与冻结帐户的过程类似,此代码的替换需要17 / 21被选中的区块生成者的投票。
宪法
EOS操作系统可以用区块链技术在签名用户之间建立P2P服务协议或约束性合约,也就是所谓的“宪法”。宪法内容定义了仅依靠代码无法完全执行的用户间义务,同时结合相互间的公认规则,确立司法权和适用法律。每一个在网络中签名广播的交易,其签名信息中必须包含宪法的哈希值,以明确约束合约签名者。
宪法还定义了源代码协议的人类可读性intent(意图)。当出现系统错误时,intent(意图)可用来区分这个错误是bug还是系统特性,并且判断社区对此的修复措施是否正确。
升级协议和宪法
EOS操作系统使用源代码定义宪法和协议,同时也定义了宪法及协议的更新方法。对宪法或协议进行变更,需要完成以下步骤:
1.区块生产者(译注:miner/delegate/witness,因此没有译作矿工)提交一个宪法变更动议,并获得17/21以上的赞成票;
2.区块生产者将17/21以上的赞成票维持连续30天;
3.要求所有用户都使用新宪法的哈希值确认交易;
4.区块生产者采用修改源代码的方式反映宪法变更,使用git提交的哈希值将变更提交到区块链上;
5.区块生产者继续将17/21以上的赞成票维持连续30天;
6.变更的代码7天后生效,源代码修改通过后,将有1周的时间来对所有节点的进行升级;
7.所有没有升级为新代码的节点将自动关闭。
根据EOS操作系统的默认配置,更新区块链来添加新功能这一进程需要2到3个月时间,而修复那些不需要更改宪法的非关键性漏洞需要1到2个月时间。
紧急变更
面临一个损害用户利益的有害漏洞或安全漏洞时,区块生产者可以加速宪法变更过程。一般来说,加速新特性更新过程或修复无害漏洞,都是违反宪法的行为。
8. 脚本&虚拟机
EOS操作系统将首先作为一个传递账户间已认证信息的平台。脚本语言和虚拟机的实现将独立于EOS操作系统技术,任何开发语言或虚拟机,只要有适当的、性能足够的沙箱,都可以通过API与EOS集成在一起。
模式定义的消息
在账户之间发送的所有消息都是由区块链共识状态的一个模式定义的,该架构允许消息在二进制和JSON格式之间的无缝转换。
模式定义的数据库
数据库状态也使用类似的模式定义,这确保所有应用程序存储的数据都以一种格式呈现,同时具备JSON的人类可读性,以及二进制格式的高效率存储和易操作性。
将身份验证与应用程序分离
为了最大化并行运算,同时将从程序日志中重新生成应用程序状态的计算任务降至最低,EOS操作系统将验证逻辑分为三个部分:
1.确认消息在内部是一致的;
2.确认所有的前置条件都是有效的;
3.修改应用程序状态。
验证消息的内部一致性是只读的,不需要访问区块链状态,这意味着它可以最大化并行运算来执行。验证前置条件(例如需求平衡)也是只读的,因此也可以从并行运算中获益。只有对应用程序状态进行修改才需要写访问,并且需要按顺序对每个应用程序进行处理。
身份验证是验证消息是否可以应用的只读过程,应用程序实际上就是在做这项工作。实时的计算都需要执行,但交易一旦被包含在区块链中,就不再需要执行身份验证操作了。
虚拟机独立架构
这是EOS操作系统软件的目的是可以支持多种虚拟机,同时可以随着时间推移持续按需求增加新的虚拟机。出于这个原因,本文不会讨论任何特定语言或虚拟机的细节,但即便如此,目前也已经有三种虚拟机正在评估接入EOS系统。
Wren
Wren(http://wren.io)是一种小型的、快速的、基于类别的编程语言。Wren的开发人员将其描述为“就像是把小型tak文件装进lua大小的软件包,再加上一点Erlang特性,再包进一个熟悉的、现代的语法里面”。之所以选择Wren语言和虚拟机,是因为它的短小精悍、易于文档记录和理解的代码库。它还具有非常好的性能,并且可以很容易地嵌入C++应用程序中。
Web组件(WASM)
WASM是构建高性能Web应用程序的新兴Web标准,通过少量适配就可以被明确定义和沙箱化。WASM的好处在于业界广泛支持,因此可以用熟悉的语言开发开发智能合约,例如C或C++。
以太发人员已经开始适配WASM,以提供适当的沙箱并使用以太坊WASM定义(https://github.com/ewasm/design)。这种方法很容易改编后用于EOS系统软件集成。
以太虚拟机(EVM)
这个虚拟机已经被用于大多数现有的智能合约,并且可以在EOS系统区块链上使用。可以想象,在EOS操作系统区块链上,EVM合约可以在内部沙箱中运行,只需要少量适配就可以与其他EOS应用程序交互。
9. 跨链交互
EOS操作系统旨在促进区块链间的跨链交互,这是通过简化消息存在证明和消息序列证明来实现的。这些证明与围绕信息传送的应用架构设计相结合,同时可以隐藏跨链交互和验证的细节,避免向应用程序开发人员公开。
用于轻客户端验证的默克尔证明(LCV)
要更容易地与其他区块链集成,对于客户端而言最好是不需要处理全部的交易。毕竟,一个交易所关心的不过只是入账和出账操作。更进一步而言,一个更加理想的状态是,对于交易所自身所维持的链来说,如果可以将轻量级的默克尔存款证明应用其中,那么就不必完全依赖全节点矿工,全节点矿工同步时也能维持尽可能小的开销。
LCV的目标是能产生相对轻量级的交易存在证明,并且该证明能被其他人通过跟踪一个轻量级数据集进行验证。既然如此,目的就是证明一个特定的交易是被一个特定的区块包含其中,并且这个区块是被包含在已经验证的特定区块链历史中。
比特币的轻量级验证方式是,假设所有节点都有读取区块头数据完整记录的能力。而区块头数据每年增长4MB, 假设每秒产生10笔交易,一个有效的证明需要512 bytes,这对于一个出块时间为10分钟的区块链来说是可行的。但对于一个出块时间为3秒的区块链来说则远远不够。
EOS操作系统的轻量级证明只需要验证包含某个特定的不可逆交易之后的区块头数据,使用哈希链表架构(如下图),数据集可以保持在1024 bytes内,即可证明任何一个交易是否存在。这是基于验证节点保留着前一天的所有区块头数据(2 MB大小),然后证明这些交易只需要200 bytes大小的证明数据。
当生成区块时候使用合适的哈希链表时,使用这种方法只会带来很小的增量开销,这意味着没有理由不以这种方式去生成区块。
当与其他链验证证明的时候,时间、空间和带宽都有很大的优化空间。跟踪所有区块头数据(420 MB/年)可以使证明体积尽可能小。只跟踪最近的区块头可以使得在持久区块头数据保存体积以及证明体积之间获得平衡。同样的一个区块链可以“懒惰地”只记录过去数据的哈希值作为之前数据的证据,新证明只需要保留已知的sparse tree(稀疏树)结构,具体的方法会视乎于外部区块所占的默克尔证明所包含的交易比例。
在链与链之间经过一定密度的相互关联之后。他们将会变得越来越高效。一条链可能会包含另外一条链的全部历史记录,那么就不再需要互相证明。从性能的角度来说,这将极大地减少链间互相证明操作的频率。
跨链通信延迟
与其他区块链通信的时候,矿工必须等待其他区块链不可逆地确认之后才会接受其为有效的输入。使用EOS系统软件,凭借出块时间为秒的委任权益证明以及21个矿工,这大概只需要45秒的确认时间。如果某个链上的矿工不等到交易确认,就像一个交易所接受了一笔存款而后又撤销这笔操作,这会影响这条链共识的有效性。
完成证明
使用外部区块链的默克尔证明时,知道所有已处理的交易是有效的和知道有没有交易被忽略,这两者之间有巨大的不同。因为不可能证明所有最近交易是已知的,但有可能证明历史交易数据之间没有缺失。EOS操作系统通过分配一个顺序的标识编号给每一笔到达账户的信息来完成这个功能,用户可以使用这些标号来证明所有给这个账号的消息已经被处理并且是被按顺序处理的。
10. 结论
EOS操作系统是基于经过普遍证实、并通过长期实践考验的概念来设计的,代表着区块链技术的根本性进步。它是可扩展的全球性区块链社会的宏伟蓝图的一部分 ,分布式应用程序可以轻松地以此为环境开发和管理。