
适用范围:商城订单与链上交易
区块链商城交易涉及哪些技术概念,需要先区分业务订单和链上操作。以下以以太坊交易机制及ERC-1155商品凭证为例,适用于采用这些技术的商城;其他网络或代币标准的具体规则可能不同。
商城订单可以包含商品、付款和交付信息,链上交易则负责执行明确的状态变更。因此,一笔链上记录所能证明的内容,应以实际执行的合约逻辑为边界。
账户、签名与合约调用
以太坊交易通过密码学签名表达账户授权。交易信息涉及目标地址、转账金额、调用数据和账户交易序号nonce;调用智能合约时,ABI编码帮助程序识别函数与参数。执行消耗Gas,交易广播后还需被纳入区块,并经历后续确认与最终确定过程。
这些概念对应不同问题:签名说明账户授权了什么,目标地址说明操作交给谁,调用数据说明请求执行什么。商城页面上的商品名称不能替代这些底层信息,页面提示也不能单独证明链上操作已经完成。
商品凭证与ERC-1155
OpenZeppelin的ERC-1155文档介绍了多代币模型:一个合约可管理多个代币ID,各账户分别持有每个ID对应的数量,并支持批量查询和转移。商品描述可通过元数据URI提供;向合约转移时,接收方需要支持相应接收接口。
在商城语境中,合约地址、代币ID与数量共同描述链上凭证。不同商品采用独立ID,同类凭证以数量表示,是这种模型的一种应用方式;凭证对应哪些实际权益,仍取决于商城的业务定义。
元数据与接收能力的边界
商品图片、名称和属性可以存放在链外。链上持有记录与展示内容因此属于不同层次:余额记录存在,并不意味着图片内容也已存入区块链;外部元数据发生变化时,展示信息也可能变化。
接收接口解决的是合约能否按协议接收凭证的问题。接收成功不等于合约具备后续转出能力,商城托管逻辑还需要单独处理凭证如何释放。
常见问题:提交是否等于完成
获得交易哈希表示可以定位该交易,不能单凭哈希认定商城订单完成。订单状态需要结合链上执行结果,以及商城定义的交付条件判断。
批量转移可以把多个代币的转移放入同一笔交易,但不会自动完成配送或售后。链上凭证转移、商品信息展示与实际履约应分别解释,避免把某一环节成功当作整个订单完成。