ps:个人整理备忘
1.所有资产的转移,必须验证资产所有者的签名。如果没有签名,要确保所有者的资产没有减少和增加,只是兜了一圈,左口袋至有口袋。
2.资产在转移过程中不能出现小于等于0的情况。所有涉及金额的接口,要在接口处就要排除金额小于等于0的情况。
3.操作合约存储区时一定是先算需要更改的值,将需要更改的数值明确后,再进行存储区的修改,存储区的put操作要在整个运算逻辑最后处理。
4.如果一个接口涉及3个存储区的调整,要保证这3个存储的修改逻辑中间没有return,要在接口入口处就将所有可能return的情况都排除掉,然后再计算存储区应该调整的值,最后存储区统一改删。
5.如果存在跨合约调用,一定要有验证合约调用结果的逻辑。例如拍卖合约中调用了CGAS的tansfer,那一定要对调用transfer的结果(true还是false)进行不同逻辑的处理。
6.全局资产转入映射成nep5资产(cgas的mintTokens)和 利用交易id来进行资金的变更(sell合约的setmoneyin)都要记录排除已经使用的txid,以防一个txid多次套钱。