请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $20,237,403,399 总市值 : $205,701,475,292
2018
12/13
20:45
分享
评论
  • 今日, BM 这个让人又爱又恨的男人在 Medium 上发表了一篇《开发有效的智能合约》的新文章,给解决 EOS 主网经常出现 CPU 爆了的问题提供了新思路,同时也引发了社区更大的思考和讨论。



    BM 的核心观点是:

    解决 CPU 问题有两种方法:要么增加 CPU 可用量,要么优化代码降低 CPU 使用量。目前 Block.one 主要在努力扩容,但是开发者层面上,应该致力于编写更有效的合约,减少 CPU 需求。


    为了论证自己的观点,BM 以当下流行的一款游戏 BetDice 为例,他指出:

    “我最近看到了一笔只包含了单个操作(action)的事务(transaction),在这个操作中,包含了28个子操作(child action)。这28个子操作中,包含了10笔转账的操作(以及对发送方/接收方相关的通知),3笔发行Token的操作,以及若干在4个关联合约之间的通讯。”


    很多个计算机术语,我们可以简单理解BM的意思是:你一个简单的操作却包含了28个衍生的子操作,而由于有多个合约,还要进行若干合约间的通讯,真是浪费。


    因此,BM 建议在不改变代码的情况下,这样去优化:

    1. 将三个独立的合约(betdicetoken,betdicegroup 和 betdicelucky )整合成一份合约,合并后,就可以消除所有合约间的通讯。 


    2. 可以发行 DICE token 并将其存入各自的账户持有人余额,且不会创建任何内联操作;


    3. 允许用户在 betdicegroup 中保持Token 存款余额,这样用户可以存入一次,多次下注,一次退出,这又将消除多次与 eosio.token 合约通讯的需求,用户的账户余额可以在 BetDice 内部快速有效的更新,无需通知发件人或收件人每笔小额付款。


    如果通过以上的优化,CPU 使用将减少 80% 或更多,这样用同样的资源可以多玩五倍的次数。


    对此,有人质疑其提出的优化方案中,将token存入betdicegroup这一条,这不就意味着将是一个中心化的平台吗?对此 BM 解释称所有Token 存到链上,当然不是中心化的。


    但是又有人疑问: “合约可以随时更新,发生在募集后退出的大规模诈骗案件”,BM 则指出 “未必,更新权限可以被谨慎的锁定,并且也可以由另一合约去控制。”


    随后 BM 还在文章中指出,为了倒逼开发者提高开发能力,我已经想好了新招。

    “不久后 EOS 系统将升级,实现让开发者能够基于每个事务(transaction)为 CPU 付费,这将意味着用户不再需要自行支付CPU才能玩游戏。是时候让开发者仔细思考他们的设计效率了,否则将被更有效和更具成本效益的替代品所击败。”


    这对于开发者和用户而言是双向互利的: 

    1. 开发者必须开发更高效的应用程序。因为高效将直接意味着支付的成本将直接显著降低!


    2.  大幅提升用户体验,扩大规模。过去为了玩某款游戏,需要购买大量的 EOS 或付费租别人的,但如果开发者付费,体验将更加友好。


    而越多的用户和游戏,也将吸引更多的应用开发者。


    以上就是BM今天文章主要想表达的核心。为此,小编也匿名采访了若干名区块链资深开发者,毫无疑问的是他们共同认可的是所有EOS链上合约的开发者应该提高编程能力。以早前某安全事件为例,当时由于很多链上游戏均将代码开源,甚至存在不少copy后改细节的情况,因此出现多个dApp共同遭遇因没有检验 token 名称导致被黑的情况。


    但事情到这远没有结束,被BM专项点名的BetDice团队随后也正式做出了回应:

    可能的折中方案是安全性、开源程度以及账户透明性的平衡。 betdicetoken 合约是token 是什么,以及什么最重要。我们不需要经常更新它。但平台和游戏总是需要更新的,如果游戏出错,它将影响 Token。而且我们使用的 CPU 总量非常简单,你可以检查 betdicegroup 合约看看我们使用情况,尽管内联操作会产生一定的消耗,但与整体操作比,开销很小,但是我们可以增长资金分配的透明性,用户可以看到所有的结果。


    最主要的区别是你怎么想区块链是什么,我们把区块链作为一个会计系统和沟通渠道,因为它是完全透明的,每个人都可以检查或验证、审计记录,这就是为什么有些事务看起来很蠢,但你可以真切的看到资金动向,当然我们可以在内部执行并计算所有操作内容,最后得出关键的结果,但这也意味着用户不知道这一切是如何工作的。


    我们把每个游戏、平台、token放入每个账户或合约中,并确保他们是独立工作的,如果其中一个是错的,那么他们也不会相互影响。至少在我看来,我并不认为这样做可以节约多少CPU,反而风险会相对较高。


    简单讲就是,BetDice团队公开表示不同意BM的观点,首先他们不是没有能力编辑合并的合约,但是出于对游戏的安全性和透明性的考虑,该团队认为分开能实现公开透明,所有用户都能查得到任何数据,也能玩得放心。其次他们认为内联操作确实会产生一定的CPU消耗,但是这个开销很小;最后BetDice团队还提出,合约分别独立工作可以降低风险。


    BetDice是否需要合并合约等操作还是需要市场说了算,这一讨论所引申出的区块链安全性、开源程度、效率以及透明性四者的权衡可能将成为社区在一段时间内的讨论重点,MEET.ONE团队也将持续关注这一事件。欢迎留言写下您的看法!


    Anyway, 活在当下,如果现在CPU爆了怎么办?打开cpubaole.com 


    扫码下载EOS生态钱包


主题帖 23 关注 0 粉丝 0
情感指数

链路大数据分析置信度 0.71 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表