https://developers.eos.io/manuals/eosio.cdt/v1.7/best-practices/index
1,资源规划
如何评估区块链应用需要多少资源?
一般来说,为方便用户使用你的区块链应用,应用所有者应该为资源付费。当然特殊情况可能需要特殊考虑。
这个问题很难直接给出正确答案,甚至没有正确答案,只能通过一些手段来预估。
大体来说:
如果你的应用增长需要更多的存储能力,就需要买更多的ram。
如果你的应用增长需要更多的操作被执行,需要抵押更多的token,以获取cpu带宽。
如果你的应用增长意味着更多的操作被存在到区块链上,那就需要更多的net带宽。
一个常用手段就是,在测试网络评估每一个操作(action)需要多少资源。当前,需要考虑到测试网络和主网的区别。
另外,通过手段监控你的应用性能是值得推荐的。
同时,写出有效的智能合约也是非常重要的,可以多问自己以下几个问题:
1)你的智能合约是否只存储必要的信息,非必要信息是否考虑存储到其他平台上,例如ipfs?
2)如果你有多个智能合约,他们之间的大多数通信是通过内联交易吗?某些智能合约是否可以被合并?
3)你能不能改变你的智能合约,让你的客户为所使用的RAM的某些部分付费?还记得最初addressbook合约是如何让添加到地址簿中的每个新帐户为存储其个人数据所需的RAM付费的吗?
4)或者相反,您是否让您的客户为访问您的契约的操作而支付了太多的RAM或CPU,以至于您禁止他们使用您的智能契约?对于区块链应用程序的增长和成功来说,承担其中的一些成本会更好吗?
2,数据设计和迁移
eosio允许开发者升级智能合约。
eosio中存储数据的重要结构是multi index table。对多索引表的修改是有些条件限制的。
升级多索引表时,根据不同的场景有不同的策略。
2.1 没有必要保存现有数据
这种情况最简单,直接移除旧表中所有数据,然后再创建新表即可
2.2 保存现有数据
也分两种情况:
1)无宕机迁移,比较慢
2)有宕机迁移,比较快
网友评论