做上一个用例的时候,发现区块链下Web3世界的物质性蛮有意思的。没想到搞这个测试案例竟然花了好长时间,即使是开发人员,行事也不得不满足这个新加密宇宙下既定的不可篡改的各种守恒定律和转移关系。
比如三岁时候可能发生父母再生娃事件10012或者10014,事件中会真正通过角色合约铸造新的角色出来,这就面临几个问题:
一是铸造新角色是需要资金的(太乙世界的“道理”ERC20),这些资金哪里来?
二是这是在事件中铸造,是由当前域的时间线角色(太乙世界里面称呼是“噎明”)铸造的,这个新角色(你的弟弟或者妹妹)的所有权要不要交给你?怎么交给你?
三是最大的问题,就是角色的铸造费用是动态的(角色合约走的VRGDA模型),这个费用先得交给事件的内部操作人,而事件内部操作人是所在域的时间线神“噎明”,因此噎明得从自己的托管钱包中取出满足当前价格的费用用于铸造。
测试用例中最终是通过“盘古”开后门来发行了一些“道理”代币作为资金的。实际正式环境下,严密的通证流转是不可能有这个漏洞被钻空子的,开发10012事件合约的团队必须要先考虑好这个事件中铸造新角色需要的持续资金来源。
另外,10012事件本身也需要一个执行角色(女娲?),因此事件合约在部署后还得给它初始化一个内部角色。这样,时间线的噎明在操作事件铸造新角色后,就会把这个角色立即转交给事件内这个执行角色代管。之后用户(当前成长的角色拥有者/操作员)可以通过10012事件的claim接口来向内部角色索要新的弟弟妹妹。