ERC-1155: 什么是 ERC-1155?ERC-1155 是一种 Ethereum 代币标准,允许一个智能合约管理多种不同类型的代币。一个 ERC-1155 合约可以包含同质化代币、非同质化代币、半同质化代币,或这些资产的组合。官方 ERC-1155 规范规定了余额、转账、批量操作、授权、接收方回调、事件、元数据和接口检测的通用规则。ERC-1155 通常被称为多代币标准。每种代币类型都由代币 ID 标识,并可ERC-1155: 什么是 ERC-1155?ERC-1155 是一种 Ethereum 代币标准,允许一个智能合约管理多种不同类型的代币。一个 ERC-1155 合约可以包含同质化代币、非同质化代币、半同质化代币,或这些资产的组合。官方 ERC-1155 规范规定了余额、转账、批量操作、授权、接收方回调、事件、元数据和接口检测的通用规则。ERC-1155 通常被称为多代币标准。每种代币类型都由代币 ID 标识,并可
什么是 ERC-1155?
ERC-1155 是一种 Ethereum 代币标准,允许一个智能合约管理多种不同类型的代币。一个 ERC-1155 合约可以包含同质化代币、非同质化代币、半同质化代币,或这些资产的组合。官方 ERC-1155 规范规定了余额、转账、批量操作、授权、接收方回调、事件、元数据和接口检测的通用规则。
ERC-1155 通常被称为多代币标准。每种代币类型都由代币 ID 标识,并可拥有独立的供应量、元数据、用途、稀缺性和经济特征。这种设计减少了大型加密应用为每种资产分别部署智能合约的需要。ERC-1155 尤其适用于区块链游戏、数字收藏品、会员资格、活动门票、奖励系统、代币化库存,以及管理多种相关资产的应用。遵循该标准有助于提高互操作性,但不能保证代币真实、有价值、稀缺或安全。为什么创建 ERC-1155?
早期 Ethereum 代币标准通常侧重于一种同质化资产,或一个由独特资产组成的系列。因此,包含数百种货币、游戏道具、门票和收藏品的项目可能需要许多独立合约。每增加一个合约,都会带来部署成本、重复代码、管理工作和集成复杂性。ERC-1155 允许这些代币类型共用一个合约和一套通用转账系统。它还支持批量操作,可通过一次调用查询或转移多个代币 ID。批量处理可以减少重复交易开销,并简化涉及多种资产的交互。该标准面向大型代币系统设计,但并不局限于区块链游戏。ERC-1155 的工作原理
ERC-1155 合约会针对每个账户地址和代币 ID 的组合分别记录余额。例如,一个钱包可以持有 500 个 ID 为 1 的代币、3 个 ID 为 2 的代币,以及 1 个 ID 为 3 的代币。ID 为 1 的代币可以代表同质化货币,ID 为 2 的代币可以代表限量版道具,ID 为 3 的代币则可以代表独特 NFT。这三种余额都可以存在于同一个智能合约中。转移代币时,合约会扣减发送方所选代币 ID 的余额,并增加接收方的对应余额。合约会发出标准化事件,供钱包和区块链索引器追踪变化。如果接收方是智能合约,ERC-1155 会执行接收方回调,确认该合约接受这些代币。什么是 ERC-1155 代币 ID?
代币 ID 是一个无符号整数,用于标识 ERC-1155 合约中的一种代币类型。其他合约中也可以出现相同代币 ID,但它不一定代表相同的加密资产。因此,ERC-1155 资产需要通过区块链网络、合约地址和代币 ID 共同识别。一个合约中的 ID 100 可以代表游戏资源,而另一个合约中的 ID 100 则可以代表活动门票。该标准不要求代币 ID 从 0 开始或按简单顺序递增。开发者可以根据应用设计分配 ID。用户应核实完整的合约地址和代币 ID,而不能只依赖显示名称或图片。同质化 ERC-1155 代币
如果某个 ID 存在多个可互换单位,它就可以作为同质化资产。例如,游戏可以发行 100 万个 ID 为 10 的代币,作为游戏内货币。每位持有者都会拥有与 ID 10 对应的数量余额。同一 ID 的单位通常具有相同的合约定义属性。ERC-1155 核心接口不会为每个代币 ID 单独定义符号、decimals 数值或名称。如需展示这些信息,项目必须通过元数据或自定义函数提供。非同质化 ERC-1155 代币
如果某个代币 ID 的供应量限制为 1 个单位,它就可以作为 NFT 使用。持有该单位的地址实际上拥有该 ID 所代表的独特资产。同一合约中的另一个 ID 可以代表另一件独特物品。与 ERC-721 不同,ERC-1155 不会自动要求每个代币 ID 的供应量为 1。如果某个代币 ID 被描述为非同质化代币,合约的铸造逻辑必须确保其唯一性。在相信 ERC-1155 道具独一无二的说法前,用户应核实实际供应量控制。半同质化 ERC-1155 代币
半同质化代币在生命周期的某个阶段拥有多个可互换单位,但之后可能获得不同含义或用途。活动门票是一个常见例子:活动开始前,同一分区的多张门票可能可以互换。活动结束后,每张已使用的门票都可能成为与特定体验相关的收藏品。限量版游戏道具也可以采用半同质化模型。ERC-1155 不会正式将代币 ID 标记为同质化、非同质化或半同质化。其分类取决于供应量、元数据、转账规则和应用行为。ERC-1155 核心函数
ERC-1155 核心接口包含用于查询余额、转移代币和管理操作员权限的函数。主要函数包括
balanceOf
、balanceOfBatch
、safeTransferFrom
、safeBatchTransferFrom
、setApprovalForAll
和 isApprovedForAll
。ERC-1155 还要求支持 ERC-165 接口检测。核心接口不定义公开铸造、公开销毁、版税、总供应量、代币 decimals 或单个代币授权。合约可以通过可选扩展或自定义逻辑添加这些功能。balanceOf 函数
balanceOf
函数会返回一个账户持有的某个代币 ID 的数量。该函数需要账户地址和代币 ID 两个参数。这与 ERC-20 不同,因为一个 ERC-20 合约通常只代表一种代币。这也与 ERC-721 不同,因为 ERC-721 余额会统计一个地址在整个系列中拥有多少个独特 NFT。某个 ERC-1155 ID 的余额可以为 0、1 或更大的整数。该标准要求查询零地址余额时失败。balanceOfBatch 函数
balanceOfBatch
函数可通过一次调用查询多个余额。调用方需要提供账户地址数组和代币 ID 数组。每个账户都与数组相同位置上的代币 ID 配对。两个数组的长度必须相同。该函数可以查询一个账户持有的多个代币 ID,也可以查询多个账户持有的同一个代币 ID。这可以减少钱包、游戏和资产组合应用所需的独立区块链调用次数。safeTransferFrom 函数
safeTransferFrom
函数会将某个代币 ID 的指定数量从一个地址转移到另一个地址。调用方必须是代币持有者,或该持有者已授权的操作员。发送方必须拥有足够数量的所选 ID 代币。接收方不能是零地址。该函数还接受一个 bytes 字段,可包含应用专用数据。单笔转账成功后会发出
TransferSingle
事件。如果接收方是智能合约,则必须通过所要求的 ERC-1155 接受检查。safeBatchTransferFrom 函数
safeBatchTransferFrom
函数可在一笔交易中转移多个代币 ID 和数量。调用方需要提供代币 ID 数组和与之对应的转账数量数组。每个数量适用于数组相同位置上的 ID。两个数组的长度必须相同。发送方必须拥有批次中每种代币的足够数量。如果某一项必要转账失败,整笔交易通常会回滚。操作成功后会发出一个
TransferBatch
事件。批量转账的优势
需要同时转移多种相关资产时,批量转账可以降低交易成本。玩家可以在一笔交易中转移货币、材料、装备和收藏品。奖励合约可以在一次操作中向同一接收方发放多种代币。批量处理还可以简化原子交换:要么整组资产全部转移,要么交易失败。节省的 Gas 数量取决于 ID 数量、存储变更、接收方逻辑和网络状况。批次过大仍可能超过交易 Gas 限制,或带来拒绝服务风险。应用应对用户可控的批次大小设定实际限制。ERC-1155 操作员授权
ERC-1155 使用面向整个系列的操作员授权。setApprovalForAll
函数允许代币持有者授权或撤销操作员权限。获批操作员可以转移持有者在该合约中拥有的所有 ERC-1155 代币 ID。该权限也可能涵盖持有者之后从同一合约收到的代币。核心标准不允许用户只授权一个 ID 或限定数量。这种广泛授权可以提升易用性,但也带来重大安全风险。恶意操作员可能在授权有效期间转走所有受影响的代币。isApprovedForAll 函数
isApprovedForAll
函数会报告某个操作员是否有权操作持有者的 ERC-1155 余额。返回值为
true
或 false
。授权只在授予授权的合约中有效。它不会自动涵盖其他 ERC-1155 合约中的资产,也不会涵盖采用其他标准的代币。用户应定期检查操作员授权,并撤销不再需要的权限。在网站上断开钱包连接,不会移除区块链上存储的授权。细粒度授权扩展
如果持有者只想授权单个代币 ID 或有限数量,广泛的操作员模型可能并不合适。拟议的 ERC-5216 授权额度扩展规定了按代币 ID 和数量划分的细粒度授权。
该扩展不属于 ERC-1155 核心标准的一部分,不能假设每个合约都支持。钱包应明确说明交易授予的是全系列权限,还是有限权限。ERC-1155 接收方回调
通过标准安全转账接收 ERC-1155 代币的智能合约必须实现正确的接收方回调。单笔转账回调为
onERC1155Received
。批量转账回调为
onERC1155BatchReceived
。接收方可以检查操作员、原持有者、代币 ID、数量和附带数据。返回所需值即可接受代币。如果返回错误值或回滚,整笔代币转账都会回滚。这一设计可以减少代币误转至无法处理 ERC-1155 资产的智能合约的情况。接收方接口 ID 和返回值
ERC-1155 接收方接口 ID 为
0x4e2312e0
。onERC1155Received
的预期返回值为 0xf23a6e61
。onERC1155BatchReceived
的预期返回值为 0xbc197c81
。接收合约应验证触发回调的 ERC-1155 合约。如果不检查调用方就接受回调数据,恶意合约可能伪造充值记录。通过接收方检查,并不保证该合约未来能够安全提现。接收方回调与重入
ERC-1155 接收方回调会在原交易完成前执行外部合约代码。恶意接收方可能在原转账仍在进行时调用其他函数。这种行为会形成潜在的重入路径。ERC-1155 规范要求在接收方回调前完成余额变动并发出转账事件。与代币交互的应用仍需保护自身记账和授权逻辑。开发者应使用试图进行同函数和跨函数重入的恶意接收合约测试这两种回调。当前的 ERC-1155 实现文档也提醒,向合约转账可能带来重入风险。
ERC-1155 事件
核心标准定义了
TransferSingle
、TransferBatch
、ApprovalForAll
和 URI
事件。这些事件日志可供钱包、区块链浏览器和索引器追踪代币活动。ERC-1155 的设计支持通过正确发出的转账事件还原供应量和余额历史。解释任何事件时,都必须同时考虑发出事件的合约地址。恶意合约可以发出熟悉的事件名称,却不代表真实项目。TransferSingle 事件
TransferSingle
事件会记录操作员、发送方、接收方、代币 ID 和数量。普通转账的发送方和接收方地址均非零。铸造时,发送方为零地址。销毁时,接收方为零地址。标准还要求零数量转账也发出相应事件。TransferBatch 事件
TransferBatch
事件会记录一次操作转移的多个代币 ID 和数量。ID 和数量按对应位置存储。事件还会标明操作员、发送方和接收方。批量铸造时,发送方为零地址。批量销毁时,接收方为零地址。索引器必须处理事件数组中的每个元素,才能准确计算余额和供应量。ApprovalForAll 事件
ApprovalForAll
事件会记录持有者是否启用或禁用了操作员。事件包含持有者、操作员和授权状态。事件本身不会转移任何代币。它会改变操作员能否发起从持有者账户转出的后续交易。撤销授权不会撤销授权有效期间已完成的转账。ERC-165 接口检测
ERC-1155 要求进行 ERC-165 接口检测。ERC-1155 核心接口 ID 为
0xd9b67a26
。兼容合约在使用该标识符调用
supportsInterface
时应返回 true
。ERC-165 标准为合约提供了一种通用方式,用于公布其支持的接口。
接口检测有助于应用避免调用不受支持的函数。肯定结果本身并不能证明所有函数都已正确或安全地实现。ERC-1155 元数据
ERC-1155 包含可选的元数据 URI 扩展。该扩展增加了
uri
函数,用于返回代币 ID 对应的元数据位置。其接口 ID 为
0x0e89341c
。URI 通常指向 JSON 文档,其中包含名称、描述、图片、属性及其他代币信息。核心标准不要求为每个代币 ID 单独提供链上
name
、symbol
或 decimals
函数。项目可以通过元数据或自定义接口添加这些字段。{id} 元数据占位符
ERC-1155 元数据 URI 可以包含占位符
{id}
。应用会将该占位符替换为所请求代币 ID 的小写十六进制形式。格式化后的值必须包含 64 个十六进制字符,包括前导零。其中不得包含
0x
前缀。这种方法使一个基础 URI 可以指向多个代币 ID 的元数据位置。如果应用替换错误,可能会获取到错误资产的元数据。元数据存储风险
ERC-1155 元数据可以存储在 Web 服务器、内容寻址网络或链上。服务器托管的元数据可能被修改或消失。内容寻址存储可以提高完整性,但内容必须持续可用。链上元数据可降低对外部托管的依赖,但存储和更新成本可能更高。可变 URI 可能允许管理员在用户获得代币后更改名称、图片、描述和属性。用户应检查谁控制元数据,以及是否能验证任何关于永久性的保证。铸造 ERC-1155 代币
铸造会创建 ERC-1155 代币 ID 的新单位。核心标准不定义公开铸造函数,也不规定谁可以创建代币。实现可以将铸造权限限制给管理员、智能合约、治理流程或其他获授权角色。单笔铸造会发出发送方为零地址的
TransferSingle
事件。批量铸造会发出发送方为零地址的
TransferBatch
事件。向智能合约铸造代币时,通常会触发相应接收方回调。用户应检查铸造权限,而不是轻信供应量或稀缺性声明。销毁 ERC-1155 代币
根据合约规则,销毁会从流通中移除代币单位。核心标准不要求提供公开销毁函数。合约可以允许持有者、获批操作员、管理员或协议逻辑销毁代币。销毁时会发出接收方为零地址的转账事件。销毁某个 ID 的所有现有单位,并不一定能阻止该 ID 再次被铸造。结果取决于实现中的铸造和供应量控制。总供应量与枚举
ERC-1155 核心接口不包含
totalSupply
函数。如果合约正确遵循事件要求,可以根据铸造和销毁事件还原供应量。实现可以添加可选的供应量追踪扩展,以报告每个 ID 的总供应量。当前的 ERC-1155 合约库包含供应量追踪、销毁、暂停和 URI 存储扩展。
ERC-1155 也没有定义用于列出所有现存代币 ID 或持有者的核心函数。应用通常通过链下事件索引生成这些列表。ERC-1155 版税
创作者版税不属于 ERC-1155 核心标准的一部分。可选的 ERC-2981 版税标准允许合约报告版税接收方和建议金额。
版税金额根据提供的销售价格计算。ERC-2981 会传达版税信息,但不会在每次转账时自动强制支付。转账可能并非销售,这也是代币合约无法将每次资产移动都视为版税事件的原因之一。用户应确认管理员是否可以更改版税设置。ERC-1155 标准化错误
原始 ERC-1155 规范没有定义现代 Solidity 自定义错误。Final 状态的 ERC-6093 错误标准为 ERC-1155 合约定义了常见错误名称。
这些错误涵盖余额不足、发送方无效、接收方无效、缺少操作员授权、操作员无效和数组长度不匹配等情况。标准化错误有助于钱包和开发者更一致地说明交易失败原因。现有 ERC-1155 合约无须采用这些错误。ERC-1155 与 ERC-20
ERC-20 通常由每个合约代表一种同质化代币。ERC-1155 则可以在一个合约中代表多种代币类型。ERC-20 使用数字形式的支出方授权额度,而 ERC-1155 核心功能使用全系列操作员授权。ERC-1155 包含批量转账,以及向智能合约接收方转账时必须执行的接收方回调。ERC-20 核心标准不包含这些功能。如果项目只需要一种同质化加密资产,ERC-20 仍可能更简单。ERC-1155 与 ERC-721
ERC-721 专为由个人持有的非同质化代币 ID 设计。一个有效的 ERC-721 代币 ID 只有一个所有者。ERC-1155 会针对每个账户和代币 ID 的组合记录数量余额。因此,同一个 ID 可以有多个可互换单位,而同一合约中的另一个 ID 的供应量可以为 1。ERC-1155 还支持标准化批量转账,而 ERC-721 通常一次转移一个 NFT。如果每项资产都独一无二,ERC-721 可能提供更简单的模型。ERC-1155 的常见使用场景
区块链游戏可以通过一个 ERC-1155 合约管理货币、材料、武器、角色和土地。活动系统可以通过不同代币 ID 发行不同类别和数量的门票。会员项目可以创建多个访问级别或权益套餐。数字艺术家可以发行包含每件作品多个可互换副本的限量版本。金融应用可以使用代币 ID 标识到期日、索赔、头寸类别或风险组。奖励系统可以通过一次批量交易发放多种积分或成就道具。该标准本身不会验证代币是否代表具有法律约束力的权利或现实世界资产。ERC-1155 授权风险
操作员授权钓鱼是 ERC-1155 持有者面临的重大风险。恶意网站可能会要求调用
setApprovalForAll
,同时将交易描述为验证、连接账户或领取奖励。获得授权后,操作员可能转移用户在该合约中持有的所有 ERC-1155 代币。在持有者撤销权限前,该授权可能持续有效。签名之前,用户应核实网络、代币合约、操作员地址和权限类型。取消操作员授权不需要提供钱包助记词或私钥。批量操作风险
批量操作使用数组,数组位置必须保持正确对应。代币 ID 与数量不匹配时,交易必须失败。索引错误可能导致转移错误数量的资产。用户控制的数组过大可能消耗过多 Gas,或导致函数无法使用。接收合约应在接受批次前验证每个 ID 和数量。开发者应测试空数组、重复 ID、长度不匹配、大批次和不受支持的资产 ID。供应量与真实性风险
某个代币 ID 可能因为当前只有一个单位而看似独一无二。获授权账户之后仍可能铸造更多单位。另一个合约也可以复制相同的代币名称、ID、图片或元数据。合约地址和网络是 ERC-1155 代币身份的重要组成部分。用户应检查铸造角色、供应量上限、升级权限和元数据控制权。兼容 ERC-1155 并不能证明真实性、稀缺性、抵押支持或投资价值。可升级合约风险
ERC-1155 合约可能通过可升级代理运行。获授权管理员可能可以更改铸造、转账、授权、元数据、费用或其他行为。升级可以修复漏洞,也可能引入有害逻辑。升级密钥遭到泄露,可能使合约管理的所有代币 ID 面临风险。用户应检查升级权限、时间延迟、多重签名控制和紧急权限。支持正确接口并不能证明合约已经去中心化或不可变。开发者如何实现 ERC-1155
除非确实需要自定义余额逻辑,否则开发者应采用持续维护且经过审查的实现。当前的 ERC-1155 开发指南介绍了多代币余额、批量操作、接收方检查和常见扩展。
铸造和管理函数应采用清晰的访问控制。供应量限制应通过合约代码执行,而不能只写在项目文档中。实现必须发出所有必需的转账和授权事件。测试应涵盖单笔转账、批量转账、铸造、销毁、操作员权限、无效接收方、数组不匹配和恶意回调。开发者还应验证所有受支持扩展的 ERC-165 接口标识符是否正确。用户如何评估 ERC-1155 代币
第一步是验证区块链网络、合约地址和代币 ID。第二步是确认代币设计为同质化、非同质化还是半同质化。第三步是检查当前供应量、铸造权限和任何供应量上限。第四步是检查与钱包关联的有效操作员授权。第五步是确认元数据的存储方式及其是否可以更改。第六步是确认管理员、暂停、冻结、版税和升级权限。第七步是查看源代码、审计和事故记录,但不要将它们视为保证。第八步是了解代币实际提供的用途、赎回权或法律请求权。第九步是确认接收合约是否提供可靠的提现流程。第十步是先用少量资产测试不熟悉的合约,再转移有价值的资产。ERC-1155 批量转账示例
假设 Alice 持有 100 个 ID 为 1 的代币、5 个 ID 为 2 的代币,以及 1 个 ID 为 3 的代币。她想向 Bob 转入 10 个 ID 为 1 的代币、2 个 ID 为 2 的代币,以及 1 个 ID 为 3 的代币。她的钱包会调用
safeBatchTransferFrom
,并传入包含 3 个 ID 及对应数量的数组。合约会验证 Alice 的余额,并确认调用方已获授权。合约会扣减 Alice 每个 ID 的余额,并增加 Bob 对应的余额。合约会发出一个
TransferBatch
事件,记录这次转移。如果 Bob 是智能合约,代币合约会调用
onERC1155BatchReceived
。如果接收方返回正确值,交易便会完成。如果任何余额、授权、数组或接收方检查失败,整笔交易都会回滚。常见 ERC-1155 错误
一个常见错误是认为每个 ERC-1155 代币 ID 都代表 NFT。另一个错误是认为当前只有一个单位的 ID,其最大供应量永远为 1。第三个错误是在不了解授权涵盖合约中所有代币 ID 的情况下授予操作员权限。第四个错误是认为断开钱包连接就会移除链上授权。第五个错误是把元数据可用视为代币已经铸造的证明。第六个错误是认为每个合约都提供总供应量函数。第七个错误是在处理批量数组时不检查其长度和位置。第八个错误是忽视接收方回调和重入风险。第九个错误是认为报告的版税会自动强制执行。第十个错误是把接口兼容性视为真实性、稀缺性或安全性的证明。常见问题
ERC-1155 是什么意思?
ERC-1155 是 Ethereum 的多代币标准,可在一个合约中管理多种同质化、非同质化和半同质化代币。ERC-1155 是加密货币吗?
ERC-1155 是一种技术标准,而实现该标准的合约可以创建不同类型的加密资产。ERC-1155 接口 ID 是什么?
ERC-1155 核心接口 ID 为
0xd9b67a26
。ERC-1155 接收方接口 ID 是什么?
接收方接口 ID 为
0x4e2312e0
。ERC-1155 可以创建同质化代币吗?
可以。一个代币 ID 可以代表多个可互换单位,并分配给多个账户。ERC-1155 可以创建 NFT 吗?
可以。如果合约将代币 ID 的供应量限制为 1,该 ID 就可以作为 NFT 使用。什么是半同质化代币?
它是一种在某种情境下单位可以互换,但之后会获得不同含义、状态或用途的代币。一个 ERC-1155 合约可以包含多种资产吗?
可以。一个合约可以管理许多拥有不同供应量、元数据和用途的代币 ID。balanceOf 会返回什么?
它会返回账户持有的指定代币 ID 的数量。balanceOfBatch 有什么作用?
它可以通过一次调用返回多个账户和代币 ID 组合的余额。什么是 safeBatchTransferFrom?
它可以在一笔交易中转移多个代币 ID 和数量,并在接收方为智能合约时执行接收方检查。setApprovalForAll 有什么作用?
它会授权操作员管理调用方在一个 ERC-1155 合约中持有的所有代币 ID。用户可以只授权一个代币 ID 吗?
ERC-1155 核心授权函数不支持,但可选扩展可以提供范围更窄的权限。ERC-1155 授权会自动过期吗?
不会。标准操作员授权会一直有效,直到持有者撤销,或自定义逻辑改变其效果。ERC-1155 要求进行接收方检查吗?
是。转账给智能合约的标准安全转账必须遵循相应的单笔或批量接收方回调规则。接收合约可以拒绝 ERC-1155 代币吗?
可以。接收合约可以回滚或返回错误的接受值,使转账失败。ERC-1155 支持元数据吗?
支持。它包含可选的元数据 URI 扩展,接口 ID 为
0x0e89341c
。每个 ERC-1155 代币都有名称和符号吗?
没有。核心标准不要求为每个代币 ID 单独提供链上名称或符号函数。ERC-1155 定义 decimals 吗?
不定义。需要时,计量单位信息必须来自元数据或项目专用逻辑。ERC-1155 包含 totalSupply 吗?
不包含。查询总供应量需要索引事件或使用可选的供应量追踪扩展。ERC-1155 元数据可以更改吗?
可以。如果合约或外部存储系统允许更新,元数据就可能更改。ERC-1155 会强制执行版税吗?
不会。版税信息需要单独的标准,核心转账函数不会自动强制执行版税支付。ERC-1155 批量转账可以节省 Gas 吗?
可以。将多次代币转移合并到一笔交易中,可以减少重复交易开销。ERC-1155 回调会导致重入吗?
会。接收方回调会执行外部代码,并可能在原交易完成前调用其他合约函数。符合 ERC-1155 标准能让代币变安全吗?
不能。兼容合约仍可能包含不安全代码、权限过大、元数据可变、供应量控制薄弱或欺诈性声明。总结
ERC-1155 是 Ethereum 通过一个智能合约管理多种代币的标准。每个代币 ID 都可以代表同质化资产、独特 NFT、半同质化道具,或其他基于数量的加密资产。该标准定义了余额查询、单笔和批量转账、全系列操作员授权、接收方回调、事件、元数据规则和接口检测。需要同时查询或转移多种资产时,批量操作可以减少交易开销。强制接收方回调可以减少代币误转至不兼容合约的情况,但也会带来外部调用和重入风险。核心标准不定义公开铸造、销毁、总供应量、decimals、版税、永久性元数据或单个代币授权额度。这些属性取决于可选扩展和具体合约实现。用户应核实网络、合约地址、代币 ID、供应量控制、操作员授权、元数据系统和管理员权限。开发者应使用持续维护的实现、发出所有必需事件、保护接收方回调、限制批次复杂度,并测试所有授权路径。ERC-1155 提供灵活的多代币基础设施,但技术兼容性并不能保证真实性、稀缺性、金融价值或智能合约安全。您可能也喜欢
反恐融资(CTF)
反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42
框架
在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42
波动性爆发
「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
热门
目前热门备受市场关注的加密货币
最高成交量
按交易量计算交易量最大的加密货币

