20-美链

简介

首次公开发行

Screenshot 2025-02-06 at 4.57.01 PM

首次代币发行

Screenshot 2025-02-06 at 4.57.25 PM

发行代币

eth 的代币发行实际上没有一个这样代币的一个链,只不过是以 智能合约的形式运行在 EVM 中。

发行这个代币的智能合约对应 eth 中状态树的一个节点;

这个节点有自己的账户余额,也就是这个智能合约一共有多少个 eth;

这个合约中每一个账户有多少代币,作为存储树中的变量,存储在智能合约的账户中;

代币的 转帐 产生 销毁 都是 通过合约中的函数来实现的;

而不需要想 eth 、btc 一样通过 minering 来维护一个基础链;

代币和 eth 的兑换规则可以由发行人自己定义在 合约中;

美链的事故案例

DPOS(Delegated Proof of Stake,委托权益证明)

有的 币 在还没有上线之前也只是 eth 中的一个代币,上线之后就 拥有了自己的基础链 来和 eth链竞争。(叛徒哈哈)

Screenshot 2025-02-06 at 5.19.14 PM

Screenshot 2025-02-06 at 5.12.26 PM

batch Transfer 函数如下

Screenshot 2025-02-06 at 5.20.09 PM

问题所在

Screenshot 2025-02-06 at 5.23.45 PM

红框中乘法可能溢出 导致酸楚的amount 总的转出数变成一个很小的数字,sub扣除就扣了一个很小的数,但是add 给每一个收款人却转的还是哪个 比较大的 原始 _value 数值。导致了 整个代币越转越多。

Screenshot 2025-02-06 at 5.27.56 PM

Screenshot 2025-02-06 at 5.30.07 PM

可以看到 add 、sub 都是调用了 safemath 中的库函数,但是出问题的地方 直接用的 * 乘法。