先啰嗦几句:本人区块链小白一枚,正在自学EOS应用开发(当然目前也没有培训班培训),我的这个系列文章是我的学习笔记,因此,鉴于水平有限,难免有许多错误之处,还希望各位读者海涵,若能留言勘误,更是感激不尽。同时也欢迎热爱EOS开发的朋友加我微信(微信号:361757),暗号EOS,我已经创建了一个交流群,写作本文时(2018年4月5日),群里已经有4名成员了。好了,系好安全带,我们的EOS应用开发之旅,马上开始!
EOS.IO技术白皮书链接:EOSIO/Documentation
本文将用个人理解,解读“共识算法”、“账户”两部分。
003 委托股权证明(DPOS)
提到DPOS,就需要先说说POW和POS机制,POW机制就是比特币目前所使用的算法,工作量证明机制,通过大量的(实际上无意义)的运算,来确定你获得记账权的概率。POS相对要更节能一些,谁持有更多的代币,谁就更有可能获得记账权。
不过无论是POW还是POS,都无法彻底的解决效率问题,而DPOS机制正是为了解决这一问题而产生。
DPOS机制将记账权限定在投票选出的21个节点上,由这些节点轮流出块,由于节点少,并且通常这些节点都有非常大的技术优势,所以出块速度会非常快,EOS.IO出块速度为3秒每块。节点恶意不作为或者恶意分叉,不仅无法获得成功,而且还会被投票踢出,这样几乎是杜绝了节点作恶的可能性。同时,EOS网络还有100个备用节点,如果有的节点掉线了,会有1个备用节点被启动,确保21个基本节点的完整性。
令牌的持有者,通过投票的方式,选出认可的节点,而且在刚刚发布的消息上,每一个EOS具有30个投票权,这样又大大增加了贿选的成本,从而尽量的避免贿选。
一般情况下,21个节点是100%在线的,毕竟谁也不会故意掉线或分叉,来让自己失去作为基本节点的权利。所以,一笔交易在最初的1.5秒内,就可以完成99.9%的确认,基本上可以确定是不可逆了。但假设有的节点就是无聊、吃饱了撑的要作恶,那么可以等待21个节点中的15个确认,这样无论如何,都不可能失败了。
下面以一家公司作为例子,希望能更形象的解释一下POW、POS和DPOS之间的差别。
假设现在有一家公司,所有员工拥有公司的代币X,并且这些员工之间有互相转账的需求。
POW机制:公司下发一道数学题,所有员工一起算,谁先解出来,谁就获得记账权,并拿到记账奖励(挖矿收益)。
POS机制:公司根据员工持有代币X的多少,确定获得记账权的概率,假设公司只有2名员工A和B,A持有10个代币X,B持有90个代币X,那么A获得记账权的概率是10%,B的概率是90%。
DPOS机制:公司选出了21个德高望重的老员工,作为记账委员会委员,负责记账。21位老员工轮流进行记账,3秒后将账本交给下一位记账人。假设有某一个记账人C,做了一个假账,那么当账本传递到下一位记账人D的手里时,D会继续在正确的链上记账,而不会继续在C的假账链记账。同样的,E也会继续在D的账上记账。时间一长,C的假账链就会越来越短,最终被淘汰。而且,由于C总是记错账,其他20位老员工就不满意了,就会投票将C踢出委员会,并从100位候补委员中投票选择1位补上。那么对于C来说,记假账不仅不会获得收益,还会被踢出委员会,得不偿失,所以C只能老老实实的记录真账,而不是分叉。
004 账户
1,EOS中的账户可以自定义为2-32个字符,这要比BTC里的32位字符串地址更方便记忆。
2,创建账户需要少量的资金注入,即存入少量代币。
3,账户支持命名空间,即@a.admin必须由且只能由@admin创建,这类似于域名中的二级域名只有一级域名所有者才可以创建。
4,应用场景下,应用开发者会为新用户创建买单,虽然这需要花点钱,但比起传统商业模式中获取一个用户动则需要高达几元的成本相比,简直就是微不足道的。并且,在EOS世界中,应用之间的账户是可以通用的,这有点类似于,你用微信账号可以登陆简书一样。
5,每个账户可以发送结构化的消息给其他用户。可以这样理解,@a.admin可以给@b.eos发送消息,但消息是结构化的,而不能完全自己定义。
6,账户可以自定义脚本来处理接收的消息。这样的话,很多应用的功能就能轻而易举的实现了,例如微信聊天时,当账户@a.admin收到账户@b.eos发来的消息,自定义脚本可以自动将消息现实在@a.admin的屏幕上。
7,每一个账户拥有自己的私有数据库,这个数据库只有自己的脚本可以访问。
8,同样的,自定义脚本也可以给其他用户发送消息,比如定时发送邮件的脚本,可以自动的在某个时刻向某个用户发送特定的信息。
9,EOS.IO软件为用户提供了声明式的权限管理系统,这样就可以管理某个用户在某个时间做某个事情。当然,前提是你要拥有控制权。
10,分层级的权利结构能够提供更高的安全性,极大的避免黑客攻击所造成的损失。
11,用户可以根据不同的应用场景使用不同的密钥。
12,与STEEM设定的三个等级的权限略有不同的是,在EOS.IO中,用户可以自定义权限等级。
13,消息处理群组功能允许用户将自己的消息命名和嵌套在群组中,最高权限群组是账户名。这样做的好处是可以方便的划分权限。在我使用交易所API的过程中,可以为某个API单独设置交易权限,为某个API提供交易+提现权限,这样就更加安全了。
14,权限映射允许任意一个账户都可以将指定权限映射给其他账户,这是一种非常方便的授权方式,比如你想让你的某个朋友帮忙卖出一些代币,那么可以将交易权限映射给这个朋友的账户,他就可以像你亲自操作一样,来处理你允许他处理的事情。那么,我们还能识别出,这个操作究竟是我自己做的,还是我授权的其他对象做的呢?答案是能,因为你的朋友在操作过程中,要使用他自己的密钥来加密而非你的,从而可以识别出,是谁进行的操作。
15,评估权限的过程是自下而上的,首先从低级别账户开始评估,如果找不到,就开始寻找高一级的账户,直至找到所有拥有者中的最低级别账户。
16,EOS.IO同样允许这样两个账户:owner拥有所有的权利,active拥有除了修改owner群组之外的所有活跃权限。
17,权限评估是可以被并行执行的。但这个过程是只读的,这样做主要是考虑到了权限评估是一个重要且耗费计算量的工作,让其只读,可以尽可能的提高效率。当然,已经被打包的交易,不需要被重新验证。
18,强制延时。我们可以参考目前ATM机转账强制24小时后才到账的方式来理解,主要是为了避免出现未授权交易导致的回滚操作。当然,强制延时不是固定的,这和支付的数额有关,买一杯咖啡的强制延时可能小的可以忽略,而买一套房子可能需要72小时的延时才能确认。但是,强制延时的时长,是有用户或应用开发者来自定义的。
19,找回被盗的密钥:你可以提前指定一个可信任用户,然后在密钥被盗后,使用过去30天内可用的任何密钥+可信用户的授权,来重置密钥。由于你的可信账户只能够在协助找回密钥时起作用而且必须在他人协助下,所以,他无法单独操作你的账户,这避免了很多的成本和法律问题。
本篇完。
我是王越,EOS应用开发小白一枚,渴望与你链接,我已经建立了一个交流开发技术的微信群,期待你的加入!请加我微信 361757,暗号EOS。
本系列文章目录