20-美链
简介
首次公开发行
首次代币发行
发行代币
eth 的代币发行实际上没有一个这样代币的一个链,只不过是以 智能合约的形式运行在 EVM 中。
发行这个代币的智能合约对应 eth 中状态树的一个节点;
这个节点有自己的账户余额,也就是这个智能合约一共有多少个 eth;
这个合约中每一个账户有多少代币,作为存储树中的变量,存储在智能合约的账户中;
代币的 转帐 产生 销毁 都是 通过合约中的函数来实现的;
而不需要想 eth 、btc 一样通过 minering 来维护一个基础链;
代币和 eth 的兑换规则可以由发行人自己定义在 合约中;
美链的事故案例
DPOS(Delegated Proof of Stake,委托权益证明)
有的 币 在还没有上线之前也只是 eth 中的一个代币,上线之后就 拥有了自己的基础链 来和 eth链竞争。(叛徒哈哈)
batch Transfer 函数如下
问题所在
红框中乘法可能溢出 导致酸楚的amount 总的转出数变成一个很小的数字,sub扣除就扣了一个很小的数,但是add 给每一个收款人却转的还是哪个 比较大的 原始 _value 数值。导致了 整个代币越转越多。
可以看到 add 、sub 都是调用了 safemath 中的库函数,但是出问题的地方 直接用的 * 乘法。