买币
行情
现货
合约BTC
理财
活动中心
福利中心
更多
0 费狂欢节
ERC-777: 什么是 ERC-777?ERC-777 是一种 Ethereum 代币标准,适用于同质化加密资产。它在基础代币模型上增加了转账钩子、操作员权限、交易数据以及更安全的合约接收方检查。与 ERC-20 一样,它代表可互换的单位,同一种代币中的每个单位都具有相同的价值和属性。官方ERC-777 规范是一项已定稿的 Ethereum 征求意见提案(ERC)标准,旨在改进同质化代币与钱包和智能合约之间的交互ERC-777: 什么是 ERC-777?ERC-777 是一种 Ethereum 代币标准,适用于同质化加密资产。它在基础代币模型上增加了转账钩子、操作员权限、交易数据以及更安全的合约接收方检查。与 ERC-20 一样,它代表可互换的单位,同一种代币中的每个单位都具有相同的价值和属性。官方ERC-777 规范是一项已定稿的 Ethereum 征求意见提案(ERC)标准,旨在改进同质化代币与钱包和智能合约之间的交互

ERC-777

2026/10/13 15:31
#Advanced
Humanity
H$0.05578-1.32%
SynFutures
F$0.003141-0.91%
PX
PX$0.0129+0.78%
以太坊
ETH$2,517.03+0.43%
Data Network
DATA$0.2038-1.97%

什么是 ERC-777?

ERC-777 是一种 Ethereum 代币标准,适用于同质化加密资产。它在基础代币模型上增加了转账钩子、操作员权限、交易数据以及更安全的合约接收方检查。

与 ERC-20 一样,它代表可互换的单位,同一种代币中的每个单位都具有相同的价值和属性。

官方ERC-777 规范是一项已定稿的 Ethereum 征求意见提案(ERC)标准,旨在改进同质化代币与钱包和智能合约之间的交互方式。

其主要功能包括

send
函数、发送方和接收方钩子、授权操作员、内置销毁函数,以及可附加到代币转移操作中的可选数据。

ERC-777 的设计目标是与 ERC-20 向后兼容,使一个代币合约能够同时支持两种接口。

不过,与 ERC-20 相比,ERC-777 的采用范围有限,因为其回调行为和对 ERC-1820 的依赖使集成更加复杂,还可能引入严重的重入风险。

ERC-777 仍是活跃标准吗?

ERC-777 仍被列为 Ethereum 改进提案官方仓库中的 Final 标准。

Final 状态意味着该规范已完成 EIP 标准化流程,但并不保证其得到广泛采用、持续获得库支持,或适用于所有新代币。

一个主要智能合约库在 4.9 版本中弃用了 ERC-777 实现,并在 5.0 版本中移除了该实现。

当前的OpenZeppelin Contracts 更新日志记录了实现支持的结束,但相关标准接口仍然可用。

这一库的决定并未取消 ERC-777,也没有改变其 Final 状态。

但这意味着开发者不应期待在该库的当前版本中找到受维护的 ERC-777 代币实现。

现有 ERC-777 合约可以继续按照已部署的代码运行,但新的集成应仔细评估其回调行为、依赖项、审计情况和生态支持。

为什么创建 ERC-777?

ERC-777 旨在解决基础 ERC-20 转账中存在的一些易用性和安全性限制。

ERC-20 向合约转账时,不要求接收方合约确认或处理代币。

如果合约没有用于找回或记账代币的函数,代币可能因此被困在合约中。

ERC-20 应用也常采用两步流程:用户先授权支出方,然后由支出方调用

transferFrom
。

ERC-777 引入了

send
,可在转账时附带数据,并在同一笔交易中通知兼容的接收方。

它还引入了操作员这一明确授权模型,适用于代表持有者转移代币的账户或合约。

该标准旨在让同质化代币的行为更接近原生 ETH 转账,同时让发送方和接收方能够以程序化方式控制代币转移。

ERC-777 如何运作

ERC-777 合约会存储代币余额和总供应量,同时提供用于发送、销毁和委托代币控制权的标准化函数。

发送代币时,合约会通过 ERC-1820 检查发送方是否注册了发送方钩子。

如果存在发送方钩子,代币合约会在更改余额前调用该钩子。

随后,代币合约会减少发送方余额并增加接收方余额。

余额更新后,合约会检查接收方是否注册了接收方钩子,并在需要时调用该钩子。

钩子可以接受此次转移、执行额外逻辑,也可以回滚整笔交易。

由于操作具有原子性,必需钩子中的回滚通常会取消代币转移,以及该笔交易引起的所有相关状态变更。

ERC-777 核心函数

ERC-777 接口包含代币元数据、余额、最小单位、操作员、转账和销毁相关函数。

name
、
symbol
、
totalSupply
和
balanceOf
函数提供 ERC-20 代币用户熟悉的信息。

granularity
函数返回可铸造、发送或销毁的最小不可分割数量。

defaultOperators
函数返回默认对所有持有者均获授权的操作员,但每位持有者都有权撤销其权限。

isOperatorFor
函数用于检查某个地址是否可以作为特定持有者的操作员。

authorizeOperator
和
revokeOperator
函数允许持有者管理操作员权限。

send
和
operatorSend
函数用于转移代币;
burn
和
operatorBurn
函数则会永久减少供应量。

send 函数

send
函数允许持有者直接向另一个地址转移代币,并附加一个名为
data
的字节字段。

附加数据可以描述付款、应用操作、参考编号,或接收系统能够识别的其他信息。

该函数会按照 ERC-777 规则触发已注册的发送方和接收方钩子。

如果接收方是合约,而该合约尚未通过 ERC-1820 注册 ERC-777 接收方实现,则原生 ERC-777 send 必须回滚。

这一接收方检查旨在减少代币被意外转入无法处理代币的合约的情况。

但这不能证明已注册的接收方诚实、安全或在经济层面值得信赖。

operatorSend 函数

operatorSend
函数允许已授权的操作员将持有者的代币转移给接收方。

操作员必须已根据该代币的操作员规则获得持有者授权。

持有者提供的

data
和操作员提供的
operatorData
均可随转移一并传递。

操作员地址、持有者、接收方、数量和数据都会记录在标准化的

Sent
事件中。

未经授权的操作员调用必须回滚。

应将操作员权限视为敏感权限,因为它可能允许其他地址转移或销毁持有者的代币。

什么是 ERC-777 操作员?

操作员是经授权可代表持有者发送或销毁 ERC-777 代币的地址。

代币持有者始终是其自身余额的操作员。

持有者可以授权其他账户或智能合约,也可以之后撤销授权。

操作员可用于自动付款、基于合约的账户管理、计划任务、恢复系统或其他委托式代币工作流程。

与数值型 ERC-20 授权额度不同,常规操作员授权不会限制在指定的代币数量内。

这种更广泛的权限可以提升易用性,但如果操作员恶意或遭到入侵,也会造成更大的潜在损失。

钱包应清楚说明,授权操作员可能会赋予其持续控制持有者余额的权限。

默认操作员

ERC-777 代币可以设置默认操作员,使其在初始状态下获得每位持有者的授权。

默认操作员列表必须在代币合约创建时确定,且根据该标准之后不能增加或减少。

每位持有者都必须能够撤销默认操作员对其本人代币的权限。

持有者也必须能够重新授权此前已撤销的默认操作员。

默认操作员可支持系统范围的服务,无需每位持有者都进行初始授权交易。

但由于默认操作员从一开始就对所有代币持有者拥有广泛权限,因此也会带来重要的信任考量。

持有大量 ERC-777 代币前,用户应检查默认操作员列表并了解其用途。

发送方钩子

ERC-777 发送方钩子名为

tokensToSend
。

持有者可以通过 ERC-1820 注册实现该钩子的合约。

在 ERC-777 send 或 burn 操作中,代币合约必须在减少持有者余额之前调用该钩子。

该钩子会接收操作员、发送方、接收方、数量、持有者数据和操作员数据。

它可以检查待执行的转移,并在持有者设定的程序规则不允许转移时回滚。

智能钱包可以使用发送方钩子实施支出规则、通知或额外授权逻辑。

由于同一个已注册钩子可能会收到涉及不同 ERC-777 代币的调用,钩子合约必须验证调用是否来自预期的代币合约。

接收方钩子

ERC-777 接收方钩子名为

tokensReceived
。

接收地址可以通过 ERC-1820 注册实现该钩子的合约。

send 或 mint 操作增加接收方余额后,代币合约会调用该钩子。

该钩子可以更新内部记账、触发另一项合约操作、记录付款数据,或通过回滚拒绝接收。

这种设计让代币转账和接收方响应能够在同一笔原子交易中完成。

这也意味着接收 ERC-777 代币可能会在原始代币调用结束前执行外部代码。

任何接收 ERC-777 代币的协议,都必须在每个相关的状态变更函数中考虑这种回调行为。

什么是 ERC-1820?

ERC-777 依赖 ERC-1820 来查找发送方钩子、接收方钩子和受支持的接口。

ERC-1820 规范定义了一个通用注册表,地址可以在其中公布自己支持哪些接口,以及由哪个合约实现这些接口。

该注册表既可记录普通账户,也可记录智能合约所支持的接口。

账户可以将自身注册为实现者,也可以指定另一个合约代为处理某个接口。

调用 ERC-777 钩子之前,代币合约会查询注册表,获取相应的发送方或接收方实现。

对 ERC-1820 的依赖为 ERC-777 操作增加了一次外部合约查询。

受支持的网络必须部署预期的 ERC-1820 注册表,并具备相应集成行为,标准实现才能正常运行。

ERC-777 事件

ERC-777 定义了

Sent
、
Minted
、
Burned
、
AuthorizedOperator
和
RevokedOperator
事件。

Sent
事件会记录操作员、发送方、接收方、数量、持有者数据和操作员数据。

Minted
事件记录新代币的创建和接收地址。

Burned
事件记录代币销毁和受影响的持有者。

操作员事件允许钱包和监控服务追踪委托权限的变化。

同时支持 ERC-20 的代币,除了规范要求的 ERC-777 事件外,也可以触发 ERC-20

Transfer
事件。

如果两种事件类型描述的是同一笔转账,应用应避免将同一经济转移重复计数。

最小单位与小数位显示

最小单位是 ERC-777 合约允许铸造、发送或销毁的最小内部代币数量。

该数值在合约创建时设定,根据该标准之后不能更改。

每个余额和转移数量都必须是代币最小单位的整数倍。

大多数代币的最小单位为 1,因此每个完整的内部单位都可以转移。

ERC-777 规定,其显示面额相对于内部单位为 18 位小数。

如果 ERC-777 代币还提供可选的 ERC-20

decimals
函数,规范要求该函数返回 18。

应用应使用整数运算,并在显示时格式化数值,而不是使用浮点数计算代币余额。

ERC-777 与 ERC-20 兼容性

ERC-777 的设计允许代币在实现 ERC-777 接口的同时支持 ERC-20 函数。

ERC-20 标准定义了

transfer
、
approve
、
allowance
和
transferFrom
等常见函数。

双重兼容的代币可以与只支持 ERC-20 的旧版钱包和应用配合使用。

如果兼容的 ERC-20 转账中,相关发送方或接收方已注册钩子,ERC-777 钩子仍可能触发。

不过,两种接口对合约接收方的保护并不相同。

通过原生 ERC-777

send
向未注册的接收方合约转账时必须回滚;而通过兼容 ERC-20 的转账则可能继续执行,并将代币留在该合约中。

集成方必须确认实际调用的是哪个函数,不能假设同一种代币的每次转移都具有相同的回调和接收方行为。

ERC-777 与 ERC-20 授权额度

ERC-20 通常会向支出方提供数值型授权额度,限制支出方可以从所有者处转移的代币数量。

ERC-777 则赋予操作员对持有者余额的控制权限,直到该权限被撤销。

操作员模型提供了更明确的命名角色,并支持标准化的发送和销毁操作。

授权额度模型可以限定较小的数量,但用户有时会批准远超所需的额度。

如果用户授权了恶意或遭入侵的合约,两种系统都可能造成损失。

钱包应明确显示某项操作创建的是固定授权额度、无限授权额度,还是 ERC-777 操作员权限。

如果代币同时支持两种标准,撤销其中一种权限不一定会撤销另一种。

ERC-777 的重入风险

ERC-777 集成中最重要的风险来自其钩子。

在代币转账过程中,接收方钩子会执行外部合约代码。

该外部代码可能会在发送协议的原始函数执行完毕前回调该协议。

这种行为称为重入。

存在漏洞的协议可能会先计算余额、发送 ERC-777 代币,再接收回调;回调可能利用过时的内部记账再次执行操作。

即使协议调用的是 ERC-20 风格函数,也可能出现此问题,因为双重兼容的 ERC-777 代币仍可能调用已注册的钩子。

开发者绝不能仅仅因为函数名称类似普通 ERC-20 转账,就假设同质化代币转账不会触发回调。

降低重入风险

只要符合预期逻辑,协议就应在进行外部代币调用前更新自身的关键记账状态。

协议应在敏感入口函数周围使用适当的重入保护。

必须将相关函数放在一起审查,因为即使阻止了对某个函数的重入,另一个函数仍可能存在可被利用的风险。

协议应验证代币合约,不应接受回调行为未知的任意资产。

测试应涵盖恶意发送方钩子、恶意接收方钩子、嵌套代币转移、回滚回调以及跨函数重入。

开发者还应审查铸造和销毁流程,因为 ERC-777 钩子并不只适用于普通发送操作。

审计可以降低风险,但无法保证所有回调交互都安全。

接收方保护及其局限

ERC-777 接收方检查旨在减少代币永久困在无法处理代币的合约中的情况。

通过

send
接收代币的合约必须注册 ERC-777 接收方实现,否则操作会回滚。

这比基础 ERC-20 转账更严格,后者即使接收合约没有代币处理逻辑,也可能成功。

不过,注册只能证明某个实现已针对该接口完成注册。

它不能证明接收方会正确记录余额、允许提现或通过安全审计。

恶意接收方可以故意接收代币,随后执行有害逻辑。

用户仍必须核实目标合约和交易用途。

ERC-777 的优点

ERC-777 可以在合约收到同质化代币时通知该合约。

它可以在一笔交易中完成转账和接收方处理。

它允许发送方和接收方通过程序化钩子拒绝转移。

它支持附加数据,供应用解读付款或操作。

其操作员模型提供了标准化的委托控制和明确的撤销机制。

原生 ERC-777 send 可以减少代币被意外发送到未注册代币接收支持的合约中的情况。

向后兼容性使一种代币既可与 ERC-20 基础设施配合使用,也能为支持 ERC-777 的应用提供更高级的功能。

ERC-777 的局限

钩子使智能合约更难安全地推理代币转移行为。

ERC-1820 查询增加了外部依赖和集成复杂度。

操作员权限可能比用户预期的更广泛。

默认操作员会带来重要的信任和权限考量。

ERC-20 双重兼容会导致实际行为随所用转账接口而不同。

如果应用同时错误处理 ERC-777 和 ERC-20 事件,可能重复计算转账。

许多当前开发工具和应用主要聚焦 ERC-20,这降低了实现 ERC-777 的实际好处。

一个广泛使用的合约库移除了受维护的 ERC-777 实现,因此安全地构建和维护新的部署需要投入更多工作。

ERC-777 为何采用有限

ERC-777 推出时,ERC-20 已在钱包、应用、分析工具和智能合约系统中得到广泛支持。

要取代这一网络效应,ERC-777 必须提供足以抵消新增回调和注册表逻辑成本的优势。

许多协议都是围绕可预测的 ERC-20 转账和授权额度行为构建的。

ERC-777 钩子会在操作中引入意料之外的外部调用,而集成方有时以为这些操作只是简单的余额更新。

ERC-2612 的动机部分指出,ERC-777 增加了大量功能,可能在主流合约中造成意外行为。

开发者逐渐通过范围更窄的 ERC-20 扩展来解决单个易用性问题,而不是采用完全不同的转账流程。

因此,ERC-777 在技术上仍具有重要意义,但并非大多数新 Ethereum 项目的默认同质化代币选择。

开发者应该创建新的 ERC-777 代币吗?

开发者首先应确定拟议代币中哪项 ERC-777 功能不可或缺。

如果主要目标是签名授权,范围更窄的 ERC-20 扩展或许能够提供该功能,同时避免引入通用转账钩子。

如果确实需要接收方回调,开发者应研究专用应用合约能否以更安全、更明确的方式实现相同行为。

新的 ERC-777 实现需要仔细审查完整规范、ERC-1820 注册、钩子、操作员、事件、铸造、销毁和 ERC-20 兼容性。

未经审查编译器变更和已知安全假设,就重复使用已不再维护的旧实现并不安全。

在合约控制有价值资产之前,应进行充分的单元测试、模糊测试、不变量测试、集成测试和独立安全审查。

开发者还应确认目标钱包、托管系统、跨链桥和去中心化应用支持该代币的回调行为。

用户如何评估 ERC-777 代币

第一步是通过权威来源核实代币合约地址。

第二步是确认合约仅支持 ERC-777,还是也提供 ERC-20 函数。

第三步是检查默认操作员,并判断其拥有何种权限。

第四步是审查铸造、销毁、暂停、冻结、升级和管理员权限。

第五步是确认合约是否使用代理,以及购买后其逻辑是否可以更改。

第六步是检查审计、源代码验证、测试覆盖率和安全事件记录。

第七步是检查操作员授权,并撤销不再需要的权限。

第八步是确认接收方应用明确支持 ERC-777 及其钩子。

第九步是在转移大量代币前先测试一笔小额交易。

第十步是牢记:符合代币接口标准并不能证明其财务价值、偿付能力或投资安全性。

ERC-777 付款示例

假设用户希望使用 ERC-777 代币向链上订阅合约付款。

订阅合约通过 ERC-1820 注册一个

ERC777TokensRecipient
实现。

用户调用

send
,并传入合约地址、付款金额和编码后的订阅参考信息。

如果用户注册了发送方钩子,代币合约会在更改余额前检查并调用该钩子。

代币合约减少用户余额,并增加订阅合约余额。

随后,它会调用合约的

tokensReceived
钩子并传入付款详情。

订阅合约会核实代币地址、付款人、金额和附加参考信息,然后延长订阅期限。

如果钩子拒绝付款,整笔交易会回滚,代币余额也会恢复到先前状态。

这一流程展示了 ERC-777 的原子化付款与通知功能,也是创建该标准的初衷之一。

常见 ERC-777 错误

一个常见错误是认为 ERC-777 只是 ERC-20 的较新替代标准。

另一个错误是将代币转账视为不会触发回调的操作。

第三个错误是在未验证调用代币合约的情况下接受

tokensReceived
调用。

第四个错误是授权操作员,却没有意识到该权限可能涉及持有者的全部余额。

第五个错误是忽略代币创建时定义的默认操作员。

第六个错误是将

Sent
和
Transfer
事件作为两笔独立的经济转移处理。

第七个错误是通过 ERC-20 接口向合约发送代币,却以为 ERC-777 接收方保护会强制回滚。

第八个错误是部署旧实现,却不进行现代化测试和依赖项审查。

第九个错误是认为 EIP 的 Final 状态意味着当前仍有库支持或生态已广泛采用。

第十个错误是将符合标准视为代币合法或安全的证明。

常见问题

ERC-777 是什么意思?

ERC-777 是一项已定稿的 Ethereum 同质化代币标准,定义了钩子、操作员、数据字段、代币发送和代币销毁。

ERC-777 是同质化还是非同质化?

ERC-777 是同质化代币标准,同一种代币的各单位可以互换。

ERC-777 仍然有效吗?

是的,官方提案仍为 Final 状态,但采用范围有限,且一个主要合约库已移除其 ERC-777 实现。

ERC-777 与 ERC-20 相同吗?

不相同。ERC-777 增加了钩子、操作员、附加数据和接收方检查,不过代币可以同时支持两种标准。

ERC-777 的主要功能是什么?

它最知名的功能是在代币转移期间通知已注册的发送方和接收方合约。

什么是 tokensReceived?

tokensReceived
是通过 send 或 mint 增加 ERC-777 余额后调用的接收方钩子。

什么是 tokensToSend?

tokensToSend
是通过 send 或 burn 减少 ERC-777 余额前调用的发送方钩子。

什么是 ERC-777 操作员?

操作员是经授权可代表持有者发送或销毁代币的地址。

ERC-777 操作员能转移用户的所有代币吗?

常规操作员权限不是数值型授权额度,因此在持有者撤销权限前,已授权操作员可能拥有广泛控制权。

什么是默认操作员?

默认操作员是在代币创建时获得每位持有者授权的地址,但每位持有者都必须能够单独撤销其权限。

ERC-777 为什么使用 ERC-1820?

ERC-1820 可让代币合约查找实现发送方钩子、接收方钩子和受支持代币接口的合约。

ERC-777 代币可以发送到智能合约吗?

可以,但如果接收方合约未注册所需的接收方钩子,原生 ERC-777 send 必须回滚。

ERC-777 代币会被困在合约中吗?

原生 send 的接收方检查可以降低这一风险,但 ERC-20 兼容转账和有缺陷的接收方逻辑仍可能导致余额无法访问。

ERC-777 有小数位吗?

该标准采用 18 位小数显示面额;可选的 ERC-20 兼容

decimals
函数必须返回 18。

什么是 ERC-777 最小单位?

最小单位是可以铸造、发送或销毁的最小内部数量。

ERC-777 为什么可能导致重入?

其钩子会在代币操作期间执行外部合约代码,允许接收方或发送方实现程序在原始调用完成前调用其他函数。

所有 ERC-777 代币都不安全吗?

不是,但每项集成都必须有意处理回调、操作员权限、ERC-1820 查询和代币特定的合约逻辑。

OpenZeppelin Contracts 为什么移除了 ERC-777 实现?

该实现采用有限,而且复杂的钩子行为难以作为通用组件安全维护。

现有 ERC-777 代币还能继续运行吗?

可以。除非合约自身的升级或管理机制对其进行更改,否则已部署合约会继续按照其代码运行。

新代币应该使用 ERC-777 吗?

这取决于钩子和操作员是否能提供足以抵消额外安全、集成和维护复杂度的必要优势。

结语

ERC-777 是一项已定稿的 Ethereum 同质化代币标准,旨在通过钩子、操作员、交易数据和合约接收方检查改善代币交互。

其

send
函数可以在一笔原子交易中转移代币,并通知兼容的接收合约。

tokensToSend
和
tokensReceived
钩子支持可编程的发送方与接收方规则。

操作员提供标准化的委托控制;默认操作员可提供系统级功能,但持有者可以撤销其权限。

ERC-1820 提供了用于查找这些钩子和接口的注册表。

ERC-777 可以与 ERC-20 兼容,但通过两种接口进行的转账,其接收方行为不一定完全相同。

能够改善可组合性的同一套回调功能,也可能造成重入风险,并使集成更难分析。

开发者必须验证调用方、保护所有相关状态变更函数、检查操作员权限、测试恶意钩子,并了解完整的转账流程。

尽管该标准仍为 Final 状态,但采用有限且已从一个主要的当前合约库中移除,因此它是新代币的专用选择,而非默认选择。

了解 ERC-777 有助于加密货币用户和开发者认识代币回调的优势,以及同质化代币转账能够执行外部代码时产生的安全风险。

您可能也喜欢

反恐融资(CTF)

反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42

框架

在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42

波动性爆发

「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
回调还是机会?
回调还是机会?回调还是机会?
一边爆仓,一边扫货——24亿ETF资金在赌什么?