之因此开这个坑是由于我也算是币圈的投资者之一,币圈如今有不少的EOS信仰者,可是目前大部分所谓的有信仰者并不了解EOS代码,只是听别人说EOS是下一代以太坊,或者是据说ByteMaster很是牛逼,可是却鲜有真正意义上对EOS代码去作更深层次研究的。html
既然须要你们知其然,知其因此然,本着这样的精神,我这个移动开发者也去尝试的探究一下各类所谓的Token币也好,主链币也好,究竟他们到底有没有点真本事,亦或是说只是些骗人的白皮书把戏。git
鉴于我平时是个iOS开发者,主要使用的语言是Swift和Objective-C(其实OC用的也不多了,都不熟悉了),而大多数的区块链底层OS类型产品都是使用C++做为开发语言,因此这个过程对我来讲也是一个逐渐学习C++的过程。固然不免我也会犯下很多的错误,因此若是你们有发现任何的问题,或者是以为我什么地方写错了,都欢迎你们指出。github
根据EOS.IO的白皮书:算法
EOS.IO 软件引入一种新的区块链架构设计,它使得去中心化的应用能够横向和纵向的扩展。 这经过构建一个仿操做系统的方式来实现,在它之上能够构建应用程序。 该软件提供账户、身份验证、数据库、异步通讯和跨越数百个 CPU 内核或集群的应用程序调度。 由此产生的技术是一种区块链架构,它能够扩展至每秒处理百万级交易,消除用户的手续费,而且容许快速和轻松的部署去中心化的应用。数据库
同时,EOS.IO的白皮书还讲到了EOS.IO在设计之初的几个主要目标:微信
- 支持成百上千的用户
- 免费的使用
- 简单升级和 bug 修复
- 低延时
- 时序性能
- 并发性能
这其中,最吸引人的应该就是所谓的每秒处理百万级交易,由于有了这样级别的处理能力才能让区块链有了真正的大规模应用的可能性。与之相对应的有Ethereum,初期的测试网络的处理能力是25笔交易每秒,通过逐渐的优化以后,可能能够达到50-100笔交易每秒。而这50-100笔的每秒交易笔数显然是不能知足大规模应用的,在2017年时候出现的爆红一时的Cryptokitties(以太猫)就很明显的暴露了这个问题。网络
支持百万级别的每秒交易笔数也是EOS.IO相对Ethereum来讲最核心,也是最本质的革命。架构
固然,先别高兴的太早,究竟能不能实现,咱们以后再来探究。并发
EOS.IO采用委托股权证实算法,全称是delegated proof of stake,缩写就是DPOS.iphone
DPOS最先在数字货币的应用应该是BitShare(比特股),也就是ByteMaster的第一个区块链产品,最先的时候是为了出一个基于区块链的去中心化交易所和去中心的化的区块链银行,因此出现了一个称为比特股内盘的平台,有兴趣的能够去这个地址看一下什么是比特股内盘。
在这里要提到比特股内盘的缘由是,比特股是一个很好的体现ByteMaster想法的应用,也正是由于其中存在的质押模式,让EOS.IO最近受到了很大的质疑。这个咱们也在后面再谈。
先简单介绍一下DPOS,后面在考虑单独出一篇文章介绍一下各类不一样的共识算法。
DPOS顾名思义,就是讲共识机制委托给对应的人进行决定。以比特股做为例子,DPOS会让每个持有比特股的人进行投票,产生101位表明,这101位表明每一个人拥有相同的权益,而最终的来决定哪一条链是有效的真实的链,则是由这101位表明的状况来决定。
这听起来是否是有点像人大会议或者是议会制度?由多数人选出少数人,再由这部分少数人来投票出最后的决定。而这样的投票最终的目标是确保没有任何人可以篡改历史。
具体为何这样的模式能够作到这一点,能够参考Steemit上dantheman在2017年6月发表的文章《DPOS Consensus Algorithm - The Missing White Paper》。
想要看中文翻译的版本的,能够参考奚海峰在万云BaaS上发表的翻译稿,雷锋网当时进行了转载,能够在此看到当时的具体内容。
回到EOS.IO来看共识算法,基于DPOS的EOS.IO会每三秒产生一个新的区块,这个区块必须由投票产生的21位生产者轮流生产出来,这样,完成一个轮回以后,就会从新选出21位生产者。选择的过程当中,得到票数数量的前20名自动被选中,剩下的一个生产者则须要按照得票比例来选出。
可能只是这样简单的说会比较很差理解,以后能够根据具体的代码来作进一步的分析。
以上就是我我的认为EOS.IO比较重要的一些东西了,接下去,会按照代码来看看EOS.IO。
术语名称 | 同义词 | Block.one的解释 |
---|---|---|
Account(帐户) | 区块链上拥有一个或者多个密钥/帐户的原生或有自定义权限的的标识符 | |
Authority(权限) | 对现实中单个帐户或多个帐户的受权的一种抽象 | |
Block(区块) | Blk | 区块链的最小单位。每一个区块包含大于等于0笔交易和密码学性质上于以前一个区块的联系。当大多数生产者都确认一个区块中包括了无误的交易,那这个区块就被不可逆转的确认了。当一个区块被不可逆转的确认之后,它就变成了不可变区块链上的永久一部分。 |
DAC | 去中心化自治集合/去中心化自治委员会 | |
DAO | 去中心化自治组织 | |
DPoS | 委任权益证实算法 | |
Key pair | Keys | 与私有密钥对应的公开密钥 |
larimer | 1/10000个EOS | |
Master Password(主密码) | 用于解锁钱包的密码 | |
Message(消息) | Msg | 对区块链进行的操做,一条或多条消息组成一笔交易 |
Oracle(预言机) | 区块链智能合约提供可信链外数据以触发智能合约顺利执行的数据源 | |
Permission(权限) | 经过对签名验证来判断消息是否是通过受权的一种验证机制 | |
Private Key(私钥) | 用于签名交易的密钥 | |
Public Key(公钥) | pub key | 和交易一块儿传送的公开密钥 |
Smart Contract(智能合约) | 用于创建,验证或者是执行合约的电脑协议 | |
Transaction(交易) | Tx, Txn | 对区块链作的一次改变,由一个或多个消息组成,通常状况下是执行一个智能合约 |
Wallet(钱包) | 客户端创建的一段用于管理私钥和签名交易的加密文件。钱包能够是锁定或是解锁状态 | |
Witness(见证人) | block producer(区块生产者) | 用于创建,验证或者是执行合约的电脑协议 |