区块链 · 数字资产知识 · 行业资讯
文章库关于本站

数字资产知识

区块链游戏资产怎样批量记账|ERC1155编号与数量必须配对阅读

摘要

一条批量记录包含多个资产编号,也包含与编号逐项对应的数量。读懂ERC1155时,要分清数组位置、只读余额和余额变化事件;网页载荷格式检查只是展示前的第一层,不是执行成功的证明。

数字货币nft钱包的科技主题配图

一个合约可以记录多类物品

整理区块链游戏资产时,不宜默认一个合约只对应一种道具。ERC1155允许同一合约管理多种代币类型,每个编号可以对应不同类型,也可以在同一合约中组合可替代与不可替代的配置。标准并不限于游戏,但这种多编号结构适合用来解释道具记录。

假设某个教学合约用编号七表示材料、编号十一表示门票。阅读一条记录时,既要知道它来自哪个合约,也要知道编号和数量如何对应。这里的物品名称只是虚构说明,不代表编号具有跨项目通用含义,更不表示这些物品有市场价值。

编号和数量要按位置成对处理

继续这个例子:编号数组是七、十一,数量数组是三、一,含义就是编号七对应三份、编号十一对应一份。不能独立重排其中一个数组,也不能因为数量都为整数,就把三和一相加后称为四枚同一种资产。两组数据的对应位置才是这条记录的关键。

ERC1155批量转移规则要求编号与数量数组长度一致,并按提交数组的顺序处理余额变化与事件。批量变化可以按规范通过TransferSingle或TransferBatch事件反映,并非函数名字里有Batch,就一定只产生一条TransferBatch。做记录整理时,要检查实际事件而不是靠名字推断。

区块链分布式数据库的科技主题配图

网页格式检查不能代替链上结果

若应用把已取得的记录交给JavaScript页面展示,首先要确认载荷确实是数组。MDN说明,Array.isArray能识别实际数组,而一段看起来像数组的字符串并不会通过;TypedArray也不等同于这里检测的普通Array。这项检查可以避免页面把错误格式直接当成列表处理。

通过数组类型检查后,仍要检查两组长度以及每个元素是否符合应用约定。即使这些检查都通过,也只说明输入适合继续解析,不证明余额足够、转移已执行或事件已经进入链上记录。JavaScript载荷检查和ERC1155执行约束属于不同层,不能互相冒充。

查询多项余额并不会转移资产

标准还提供balanceOfBatch,用一次只读调用取得多个持有人与编号配对的余额。它回答的是这些配对在查询状态下各有多少,并没有发起批量转移。调用记录、返回余额与转移事件应分别保存用途,避免把一次列表查询写成“已经完成批量处理”。

对资料维护者而言,一份可读记录应能追到合约、对应编号、数量及数据出处;需要更新页面时,再按实际读取结果调整显示。本文没有调用真实资产转移,也没有检验某个游戏的合约实现。批量记账格式只解决如何组织记录,不替游戏定义使用权益或保证道具价值。

← 返回全部文章

延伸阅读 · 相关栏目

区块链基础技术原理数字资产知识资料与核验