白皮书解读:区块链应用的需求分析
支持百万级的客户
用户免费使用
低延时(高带宽)
串行性能(超级节点)
并行性能(对超做进行行细分)
白皮书解读:共识算法
DPOS:持有代币的所有人可以通过持续的投票来选择生产者。任何参与到块生产的节点都机会生产。
EOS.IO软件每0.5秒生成一个块。给定时间槽内,只有一个块生产者来生产区块。每一轮生产126个块,每个块生产者可以生产6个块,一共21个块生产者。
正常条件下,DPOS区块链不会有分叉。同一时间内只有一个块生产者生产区块。因为这些生产者节点是合作生产块,而不是竞争生产块。即使有分叉,共识算法也会让节点选择最长的分支。
不应该有块生产者同时在两个分叉上生产块。如果有,会被投票出局。
BFT被加到DPOS中来让所有生产者去签署所有区块,这样没有一个生产者可以同时签署两个区块。一旦有15个生产者签署了一个块,那么这个块就不可逆。使用这个模型,理论上达到不可逆的共识只需要一秒钟。
白皮书解读:账号和智能合约
EOIS.io软件允许使用12个字符来引用账号。
在去中心化的环境中,应用开发者需要支付新用户注册的成本。对于已经在其他应用中注册用户的账号则不需要再付费了。
将账户分为“用户”与“智能合约”,其实这二者在EOS里没有区别。用户本身就是智能合约,智能合约也是其他智能合约“用户”
问题:是否存在DDOS攻击?
白皮书解读:基于权限管理角色
权限分级组
白皮书解读:具有强制Delay的actions
操作的时限行性,一些操作可以设定在一定时间后可以生效。主要为了安全考虑。
一些重要的操作会被通知到用户本人,如果非他本人认证过的操作,可以取消此操作。
限制时间取决于这个操作的重要性。
白皮书解读:上下文无关的action
上下文无关的action:是指一个action的计算活动仅仅依赖于交易数据,而不依赖于区块的状态。
例如:签名验证
支持上下文无关的action很容易并行化。
白皮书解读:治理
治理是指社区的人:
1、对一些无法被软件算法来定义的并且需要协作的集体活动达到的共识过程。
2、执行达到的共识。
3、通过宪法修改来改变治理规则。
这个治理过程会直接影响块生产者的行为表现,如缺席治理过程,有争议的治理方法等都会影响块生产者的未来利益。
EOS区块链社区必须认识到所有权力来自token的所有者,而块的生产者只是代表。块生产者的权力是有限的。并且在冻结账号,升级缺席应用,建议应分叉等活动中被审计。
白皮书解读:Tohen模型和资源使用
区块链本身是资源紧张的系统,必须要防止资源滥用。在EOS.IO中,一共三种资源:
1、带宽和硬盘;2、CPU;3、内存。
带宽资源和计算资源有两种使用方式:即使使用和长期使用。区块链上使用一个日志记录了所有Action,所有的全节点可以下载这个日志。通过这个日志可以对占用的资源进行资源计费。
冻结账号和改变账号中的合约代码
冻结账号
有时一个合约以不可预期的形式运行,或者一个应用和账号发现了漏洞以不合理的方式来消耗资源。块的生产者可以有权选择哪些交易可以包含在块里,这样可以冻结账号。冻结账号需要15/21的赞成票。 改变账号代码
如果所有其他的都失败了,一个无法终止的应用以不可预测的方式执行。EOS.IO软件可以让块的生产者来替换账号的代码,而不是硬分叉整个区块链。类似于冻结账户号的过程,这个代码替换需要15/21的投票表决。 分离认证和应用
为了最大化的并行执行,最小化计算成本。EOS.IO把验证逻辑分为三个不部分:
1、验证一个action是内部一致的
2、验证所有的条件合法
3、修改应用的状态 验证内部一致性是只读操作,不需要访问区块链状态。验证预置条件,比如需要的余额,是只读的。仅仅修改应用状态需要写权限,并且需要串行处理。这意味着它可以最大化的并行执行。 宪法和宪法升级
EOS.IO软件定义了如下过程来修订源代码和它的宪法。
1、块的生产者建议宪法的一个修订,获得15/21的赞同。
2、块的生产者在30天的争议期内维持15/21的新宪法。
3、所有用户要求指出新宪法是否可以接受,这样未来此用户的交易才能被继续处理。
4、块生产者维持15/21的对新代码的支持,30天。
5、对代码的改变在7天后生效,给所有非生产的节点一周的时间进行合约升级。
6、所有没有同步到新代码的节点会自动关闭。 默认根据EOS.IO软件的配置,更新区块链的过程要花2-3个月。而升级非关键bug,不需要改变宪法的,则需要1-2个月。
紧急改变:块生产者也许会加速整个过程,如果一个软件更新来fix一个重要的bug和安全漏洞。
EOS Dapp架构 Dapp的开发方式
1、利用先有的开发工具进行开发,如HTML/CSS/JavaScript/C++/Python/C#
2、前端通过eosjs库或调用cleos调用智能合约
3、等待EOS节点完成执行智能合约
4、接收返回结果,再在前端页面上呈现 EOS智能合约使用c/c++为主要编程语言;
EOS采用WebAssembly JIT虚拟机;
由于WebAssembly的支持,因此也有机会支持Go语言开发;
支持STL开发库。 总结一下EOS到底做了哪些改进
性能:DPOS和并行化。
安全:延时操作,冻结账号,权限管理等。
治理:提出治理规则。
易用性:用户免费,可识别的字符串的账号。
|