原文作者:Daniel Larimer
译者:Chuan@AuroraEOS
昨天,BM在EOS电报群中,针对大家比较关心的CPU问题发表了自己的看法,如下:
1.仅抵押少量EOS就能够实现免费转账不是EOS资源模式设计的初衷,租赁CPU是最好的选择。
2.CPU问题的最佳状态:使得用户通过花费少量的钱就可以租赁到足够多的EOS资源使用。
3.目前CPU主要存在两大问题:缺乏有效的租赁市场;dApp项目方无法为用户抵押CPU。
前者会在REX推出后会得到修正;后者则会在下一次升级中得到解决。
在Medium上面BM也发表了一篇文章,以下是Daniel Larimer原文(译文):
EOS区块链用户面临的主要挑战之一是CPU资源的稀缺。
有两种方法可以解决这一稀缺问题:通过更高的效率来增加CPU容量或减少CPU需求。Block One正在努力增加容量,但是应用程序开发人员需要编写更有效的合约来减少需求。
最近,我看了一个只有一条的单笔交易,这条指令产生了28个子指令。这些子指令包括10次传输(恨给发送者/接收者的相关通知),3个分发指令,以及4个内联合约之间的通信。
这个应用的设计在他们的代币合约中使用大量的复制和粘贴代码,并结合了许多涉及EOS和他们自己的DICE代币之间的最小单位的微支付。这种模块化设计具有一些安全优势(将代币在智能合约的管理下的时间降到最低),但它是以使用大量CPU为代价的。
每个指令都必须设置并清除自己自己的执行环境,验证自己的权限,并执行其他的冗余计算。所有这一切都显示这个操作花了5.37毫秒的CPU时间(每个内联操作平均0.2毫秒)。
通过以下更改可以实现相同的效果:
1.将单独的合约(betdicetoken和betdicegroup以及betdicelucky)合并为一个单一合约。
2.一旦合并后,所有内联合约间的通信都可以被消除。DICE代币可以被发行并存入各个账户持有人的余额,而不用再创建任何内联操作。
3.允许用户与betdicegroup保持一个存款余额。这样,用户可以存入一次,多次下注,取出一次。这将消除多次与eosio.token合约通信的需要。用户帐户余额可以在betdice合约内部被快速、有效地更新,而不必对每笔微支付都对发件人/收件人发送通知。
通过在应用层进行一些小小的优化,我猜测玩这个骰子游戏所需的CPU可能被减少80%以上。用户在耗尽CPU时间之前可以多玩5把。
在对EOSIO接下来的更新中,我们将让应用程序开发人员在每笔交易(事务)的基础上为CPU付费。这意味着用户不再需要任何CPU资源来玩游戏,开发人员可以通过其他方式从CPU使用中获利。
在这种情形下,有效的合约开发将使应用程序开发人员的开发成本降低80%以上。今天的应用程序将这些成本转嫁给了用户,他们要么得抵押代币,要么用借贷的方式。
现在是时候应用程序开发人员开始仔细考虑他们的设计效率,否则他们将被更有效和更降低成本的其它方法所超越。
英特尔,苹果和微软只能通过改进硬件和操作系统来提升应用程序的性能。最大的性能改善掌握在应用程序开发人员手中。这同样适用于区块链应用程序。
本文原文链接:
https://medium.com/@bytemaster/developing-efficient-contracts-8a8e62011c6d
联系引力区:
官网: http://eosgravity.com/
Telegram: https://t.me/eosgravity;
Twitter: https://mobile.twitter.com/EOSGravity
Reddit:www.reddit.com/user/EOSGravity
Medium: https://medium.com/@eosgravity
Steemit: https://steemit.com/@eosgravity
Youtube: https://www.youtube.com/
channel/UCGBLMgv51yB80yMKN266Gcg
加入社群
更多有价值的悄悄话,欢迎进入知识星球。
引力区创始人Ocean廖洋阳私人微信
设为星标
及时接收引力区资讯