Token Bound Account 是什么?给 NFT 绑一个链上钱包 图 1
Token Bound Account 是什么?给 NFT 绑一个链上钱包 · 图 1

一句话理解

ERC-6551 定义了一套系统:给链上每一个 ERC-721 NFT 确定性地分配一个智能合约账户地址。这个地址被称为 Token Bound Account(TBA,代币绑定账户)。它像一个专门属于这张 NFT 的钱包:能接收代币和 NFT、能发起交易;而谁持有这张 NFT,谁就能控制这个账户。NFT 被转给别人时,账户的控制权跟着 NFT 一起走,账户里积累的资产和历史也随行。

系统由两部分组成

按提案设计,整套系统只有两个核心组件:

  1. 单例注册表(Registry):一个无权限、无所有者、不可变的入口合约,提供两个函数——createAccount 为某个 NFT 创建绑定账户,account 仅计算(不创建)某个 NFT 的绑定账户地址。提案要求注册表部署在固定地址 0x000000006551c19487814612e58FE06813775758,任何人都能用同一套参数算出同一个地址,因此应用不需要信任某家服务商。
  2. 账户实现(Implementation):具体执行交易的合约模板。每个 TBA 以 ERC-1167 最小代理合约的形式部署,把实现地址、盐值、链 ID、代币合约地址和 Token ID 编码进字节码,再代理委托到实现逻辑。换一个实现模板,算出来的账户地址就完全不同。

控制权从哪来

TBA 自己没有任何“私钥”。它在每次执行时都去调用 NFT 合约的 ownerOf(tokenId):此刻谁拥有这张 NFT,谁就有权指挥这个账户。这带来一个直观的心智模型——NFT 是钥匙,账户是房间;把 NFT 转走,等于把整间房间连同里面所有东西一起交出去。

这既是卖点也是风险源:给 NFT 加一个账户让它能组合资产、参与应用,确实降低了复杂链上操作的门槛;但转让语义从此变了——过去卖一张 NFT 只是转移一张凭证,现在等于移交一个可能绑着授权、贷款头寸、其他资产引用的钱包。不了解账户里发生过什么就收购,相当于买了一个不知道装了什么的前任钱包。

使用前的检查清单

  • 用注册表的 account 函数(免费查询)先算出地址,在区块浏览器上看这个地址的完整历史:收入、授权、交互过的合约。
  • 确认你用的是哪个实现地址。实现合约有普通账户和带交易限制、守卫规则的变体,安全属性差别很大。
  • 提案在安全考量中专门讨论了“所有权环”(NFT 被套娃 NFT 形成循环)等边界情况;应用集成前应确认处理方式。
  • 截至本文核验时间(2026 年 7 月 21 日),该提案在 EIP 页面上的状态请以 eips.ethereum.org 实时显示为准;不同实现和工具链的成熟度也不一致,属于需要提前验证的机制而非“默认安全”的通用功能。

和 NFT 托管的关系

TBA 不是托管方案,它没有引入第三方保管人,资产仍在链上合约中、由 NFT 持有人控制。若你要对比真正的托管与私钥保护方案,可以看NFT 托管与私钥安全

常见问答

问:给 NFT 部署绑定账户要花几笔 Gas?不想要了能关掉吗?

创建账户是一笔链上交易,地址计算本身免费。TBA 没有“关闭”概念:只要 NFT 存在,按同一组参数总能重新算出并部署同一个地址,账户余额与历史不会因某个平台的下线而消失——它就是链上一个普通合约地址。

问:我卖掉了 NFT,前任买家的授权会被我继承吗?

所有权与控制权随 NFT 转移,但账户此前发出的授权(例如对某个合约的批准)是链上事实,不会因为换手而自动撤销。这正是转让前必须清理账户内授权的原因:把 TBA 当成一辆二手车来检查——里程表(账户历史)、改装记录(授权记录)、后备箱(当前持仓),每一样都可能在成交后归你负责。出售方同理,交割前清理完自己的痕迹再挂单。

风险提示

本文为协议机制科普,不构成投资建议。智能合约可能存在缺陷,账户历史可能包含风险授权;买卖带 TBA 历史的 NFT 前请自行完成链上核查。