Author Archives: nitrohsu

EOS的账户授权和多重签名

EOS在它的技术白皮书中介绍了账户、授权、以及多重签名的技术概念,我们也可以从EOS的代码中一窥其中的奥秘,它与BTC、ETH的区块链实现有什么区别或者有更为先进的地方,那就需要先从概念入手细细体会。

钱包

钱包是一个存储账户Key、权限Key的客户端。它支持一个或者多个账户,通过高复杂度的密码来加锁、解锁钱包。EOS的代码中自带了一个轻量级的钱包-keosd。keosd通过调用cleos接口来与区块链建立连接。

在这一点上与BTC、ETH基本一致,由于BTC、ETH并没有多权限、授权的概念,这是EOS钱包中的一大特点,这对于后期的账户找回也会有略许的差别。

账户:

一个账户以人类可读的名字存储在区块链中,它按照权限配置从属于一个个人或者组织。在转账或者推送一笔交易到区块链的时候账户是必须要有的。

BTC简单说账户就是Address,它没有人类可读标记,就是一串Base58编码之后的字符,区分大小写;ETH的账户也是Address的概念,是一串公钥加工后的十六进制串,不区分大小写,但ENS的出现弥补了人类识读的短板,现有的很多钱包也支持ENS对Address的解析;EOS的原生支持,也算是在吸取前人之鉴对账户这一概念的增强。

授权、权限

授权方来决定是否将某个权限来授予某个行为。

每个账户都有两个固定命名的权限。

owner

如其所名,owner拥有整个账户的所有权。只有极少的交易需要这个授权,主要集中在对账户所有权变更的时候。强烈建议!!!将这项权限保存在离线存储中,不与任何人分享。owner权限可以用于恢复可能已被泄漏的其他权限。

active:

它主要用于转账、对块生产者投票、处理其他高级别的账户操作。

除了这两个固定命名的权限外,一个账户可以拥有一些自定义的权限来扩展账户的功能。自定义权限具有非常高的灵活性而且已经被地址化,权限如何被使用被约定,这完全取决于开发者社区如何使用它。

被授予权限的一方会被分配到一个、多个公钥或者一个账户名。

权限与签名

单签名(默认账户配置)

一个账户刚被创建时,有owner、active两个权限,它们都被地址化为一个key字符串,每个key的权重为1,每个权限的开启阈值为1。这项默认的配置就需要一个签名就可以授权来做某些行为。因为每个key的权重>=开启阈值。

@bob 账户授权

Permission Account Weight Threshold
owner 1
EOS5Ez…25Dch 1
active 1
EOS61c…TgmcX 1

上图的@bob账户中,@bob对onwer权限的权重为1,阈值为1,符合权限授予的最小要求就可以发起一笔交易。这笔交易就只需要@bob用它自己的owner key进行签名就可以了,签名之后将交易发给cleos来处理。

多重签名以及自定义权限

下图的例子虚构了一个账户@multisig,它对其他的两个账户@bob、@stacy授予了owner、active权限,同时它对@bob、@stacy、一个公开账户授予了publish权限也赋予了不同的权重。

@multisig 账户授权

Permission Account Weight Threshold
owner 2
@bob 1
@stacy 1
active 1
@bob 1
@stacy 1
publish 2
@bob 2
@stacy 2
EOS7Hnv4i…Sqt 1

在这个例子中,onwer权限的开启阈值为2,在这一权限级别的任何改变都需要权重大于等于2才可以,但@bob、@stacy各自的权重都为1,这就是需要两者共同签名才能获取完整的授权。

当需要active授权来发起一笔交易是,开启阈值被设置为1,@bob、@stacy的权重都为1,它们就可以独立签名完成授权。

还有一个自定义权限叫做publish。假设这个权限是用来发表博文到@multisig账户的博客Dapp的。这项权限的开启阈值为2,@bob、@stacy的权重都为2,一个公开账户的权重为1,根据上文的权重、阈值关系,@bob、@stacy都可以独立签名发表一篇博文,但那个公开账户则需要额外的签名来获取到publish权限,无论它是从@bob还是@stacy。

通过上面的这个例子我们可以看到@bob、@stacy作为一个账户的所有者利用权限的分配实现一个主编、编辑的角色,可能上面的例子并不是一个好的设计,但它充分证明了EOS权限体系的灵活性。同时我们也注意,权限可以授予给一个账户名,也可以是一个公开key,这样也增加了一些灵活性。

 

后记:

EOS的权限系统相比于BTC、ETH的有了很大的进步,也更加贴近了现实记账系统和其他软件系统的架构模型,也正是因为这样,也让EOS对于账户找回成为了可能,这套虽然不算复杂但对于普通用户还是略复杂的权限带来的是机会还是风险,这都要主网上线后去验证。

 

参考:

https://github.com/EOSIO/eos/wiki/Accounts%20%26%20Permissions#putting-it-all-together

以太坊矿工奖励之多少

以太坊通过PoW(工作量证明)的共识算法来生产一个新的区块,通过不断的调整区块nonce值来让以太坊网络上的矿工来计算不同的随机数,当计算出的随机数小于maxUint256除以header.Difficulty时就意味着挖矿成功,一个新的区块产生了。

在广播给全网新区块产生的同时,系统会发放一定量的以太币作为挖矿成功的奖励。与比特币挖矿不同的是以太坊协议不仅承认最长链上的区块(1),对于同时产生的非最长链的区块(1·)鼓励子区块(2)来将它索引起来,并将它(1·)称为子区块的叔块,索引了叔块的子区块也会获得一定的奖励,系统最多允许索引两个叔块,叔块与当前区块的高度差最大为6。

所以矿工奖励主要是三个部分:区块奖励、Gas奖励、索引叔块奖励;当然挖出叔块的矿工也会给予奖励。

1、区块奖励,在4370000块硬分叉之前奖励5个以太币,之后奖励3个以太币;

2、Gas奖励,区块内所有交易的Gas费用归矿工所有;

3、索引叔块奖励,每索引一个叔块会奖励区块奖励的1/32;

挖出叔块的奖励=(叔块高度+8-索引叔块的区块高度)*区块奖励/8


挖矿奖励:

区块高度 1-4370000 4370000-~
区块奖励 5 3
Gas奖励 \ \
索引叔块奖励 5/32 3/32
总计(1个叔块) 5+0.15625+块内Gas费 3+0.09375+块内Gas费
总计(2个叔块) 5+0.3125+块内Gas费 3+0.1875+块内Gas费

叔块奖励:

与被索引区块高度差 1-4370000 4370000-~
1 4.375 2.625
2 3.75 2.25
3 3.125 1.875
4 2.5 1.5
5 1.875 1.125
6 1.25 0.75

参考:

https://github.com/ethereum/go-ethereum/blob/master/consensus/ethash/consensus.go

https://github.com/ethereum/go-ethereum/blob/master/core/state_transition.go

话别指尖四年

2018年即将走过六分之一,农历新年的钟声也即将敲响,这是作别家乡北漂后在老家度过的第一个春节。从腊月二十六一路高速长途跋涉到家就是一阵的忙碌,从房子装修清理到走亲访友各种大事小事,从没有如此的忙碌地过年,也终于在这年末之余的夜晚,听着自选歌曲,让自己空档运转的大脑动动笔。

·车·房·

从繁忙一路红色的帝都五环路到一晃眼以为帝都经济衰退的大马路,从每辆电动车一个车位的小区到停满马路汽车的乡村小镇,这就是中国式迁徙的一个缩影,回家过年就像候鸟每年一次的长途跋涉,不管你是自驾、高铁、汽车还是腿儿着,这是农历新年大写的注脚,它代表了亲情友情的联络,代表了无数割舍的相聚,一年间隔的结点。一杯敬去年的过往,一杯迎来年的喜庆。从谁家的车换成了什么牌子,邻居们也能猜到他家是不是今年发了大财,是不是瞬间土豪金。一眼望去的攀比和面子,全都写在脸上,尴尬之余的尴尬,且算还是尴尬吧,哈哈哈。相聚之间,从车子再到房子,或许这就是中国城镇化建设十多年缩影的延续,2010年后你再也看不到农村在自家宅基地上翻盖新房子的场景,倘若有一个村子在用尽全力的盖新房子,那或许只有一种可能,那就是这个村子要拆迁了。慢慢地进城买房变成了一种标配,一种结婚的标配,一种生活质量升级的标配,从六线小城到四线地级市配合着一城的大搞大建,这场城镇化建设的脚步越来越快,催促着还没买房子的农村人蒙眼狂奔,奔向城市,奔向向往的未来。倘若有一天我们的消费升级失败了,或许这才能体会到消费动力不足的切肤之痛,我们习惯了GDP每年百分十几的增长,但现在你是否感到了动力的不足呢?

拥挤的马路装不下人们对于年货的奔波,再累也要让这个年过的安稳,老家最忌讳的就是年关将近周遭再发生一些小意外,但意外的意外还是会出现,从北京一路到家,四天时间,五起追尾事故,虽然都没有发生人员的伤亡,但总也是一扫年味儿的欢乐,徒增一份烦恼。作为一个新手,在路上开车也是战战兢兢,对面的远光、突然的超车、忽略的小细节,开车真的是精神的高度紧张,随时的应急处理,累并享受着,虽然你享受着速度带给你的便捷,却也要谨记着安全的准绳。从一二线城市一路狂奔回来的车水马龙穿梭在平常并不拥挤的马路上,瞬间感觉就像每天早高峰的帝都三环路一样,不会让你窒息但是也足够让你踩着刹车等一分钟,然后再突如其来的冒出一辆电动车或者喝到东倒西歪的醉酒人,脑中还不断浮现出,如果这是在帝都是不是会把这种情况直接拦截下来扭送交警支队,回头想想这是老家,你也就继续前行走人了。

·人·潮·

过年的几天各式各样的老同学群从冬天的寂静岭瞬间唤起到夏天的无名骚动,各种饭局各种组队进入自动驾驶模式,一众的老司机带着远方的情谊和瞬间改口的方言来到这土生土长的地儿相聚饭馆,哈一杯啤酒敬过去,再敬还能如此幸运的遇见,从二十多岁的青葱少年到而立之年的孩子他爹他妈,交流育儿经,讨论生意的大计,为来年的商路巩固人脉,何来一场不容易的相遇,老同学,一杯酒的情谊,干了这杯,情谊全在酒里,我先干为敬,你随意。熙熙攘攘,相聚,离合,酒醒,来年我们再续上这一杯。

一年前不是过节的时候去过一次城里刚开的万达广场,门可罗雀的人,冷清至极的店铺,进去之后尴尬的服务员,这让我怀疑万达在这样的四线城市开一家店的决策是不是重大失误,虽然有写字楼可以保证长线的收益稳定,但商铺的人流量怎么保证,这样下去三年基本就有被撤退的风险,但今年的国庆和过年几天基本让我打消了这个年头,停车场的拥堵和极高的餐饮翻桌率令我对万达在这座城市的发展有了更多的敬意,如果说我们正赶上的是节假日消费高峰,那我还是宁愿相信这是一场消费升级,哈哈哈。

·情·份·

今天在家里斜对面的邻居大婶儿说实在认不出来了,胖且白了,从一个120斤的瘦猴儿到140斤的胖子,这个过程只需要一年的时间,如果说为什么?那我只能认怂了,权当消化好了肠道好了比吃健胃消食片都管用了。许久未见面的家人,见面的嘘寒问暖的第一句:哎呀,XXX认不出来了,胖了/瘦了。从脸上寻找的第一个记忆点位,从各自的感情抽屉中找到那个锚点, 试图重建一套针对你的情感模型,再续前缘的沟通就此打开。同样的事情还会发生在尴尬的一个场景—要帐,农民工的欠薪问题由来已久,解决了吗?官方解决了,因为官方解决的是法律问题,解决不了的人情关系问题,当你从哥们、亲戚、老乡那里过活儿的话,这个欠薪就是各种的蹊跷和离奇,或许真如笑话所说,这年头欠账的是老爷,要帐的是孙子,从一踏进家门的好茶好酒到关键问题的求解问题,总是曲折离奇,莫名其妙,无法理解,这就是一个现状,一个仍然依靠关系运转的农村社会体系。

许久的断舍离,许久的汇聚一堂,在起起伏伏中度过这一年的关键结点,向过去做个短暂的告别,向未来展望更好的自己,故事还在演绎,故事还在继续,百转千回,蓦然回首又是一年的默念随笔。。。

Macau