http://www.7klian.com

印钞机的奥秘:泰达币USDT增发最全技能细节披露

依次发送 Submission 事件 -> Confirmation 事件。

通过查询 transactionId 即可看到挪用参数

依次发送 Confirmation 事件 -> 执行 payload 所发生的事件(满意确认数量)-> Execution 事件。

那么 Bitfinex: MultiSig 2 地点的 USDT 是哪来的呢?按照 transactionId 继承向前追踪一个事务即可找到真正为 Bitfinex: MultiSig 2 地点增发 USDT 的生意业务:

TetherToken 跨合约挪用如下图所示:

TetherToken 合约挪用阐明

我们先看看 MultiSigWallet 合约的 confirmTransaction(uint) 函数的实现

2、挪用 confirmTransaction(uint) 确认并执行事务,需要 3 个差异的 owner 账户完成最终简直认。

需要留意以下两点:

挪用 confirmTransaction(uint) 函数确认并执行生意业务需要满意以下条件

这才是真正为 Bitfinex: MultiSig 2 地点增发 USDT 的操纵。

USDT 增发阐明

继承看这笔增发生意业务的挪用事件,正好满意挪用 confirmTransaction(uint) 函数所发生的事件。

转换成以下伪代码:

以下是 TetherToken 智能合约的 USDT 增发函数:

最终一次完整的提交 -> 确认操纵流程如下:

<img alt="" src="https://appserversrc.8btc.com/images/20200428105524WJAd.png">可以看到增发 USDT 需要 TetherToken 合约的 owner 账户挪用 issue(uint) 增发函数举办,增发乐成后还会抛出 Issue(amount) 增发事件。

再看下最近的增发记录截图:

1、挪用 submitTransaction(address,uint,bytes) 函数提交事务并传入参数:contract-address、eth-value、payload。留意:提交事务包括一次事务确认。

可以看到在上图生意业务详情中并没有挪用 TetherToken 合约的 issue(uint) 增发函数,而是挪用了 MultiSigWallet 合约的 confirmTransaction(uint) 函数完成的增发操纵。

submitTransaction(address,uint,bytes) 会挪用到合约内部的 addTransaction(address,uint,bytes) 函数,其实现如下:

Transaction Hash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

克日,传闻以太坊上的泰达币(USDT)频繁被增发。本着进修的目标在 etherscan 上审计了泰达币的智能合约(TetherToken)源码以及 USDT 增发相关的挪用事件,本文记录一下阐明进程。

总结

可以看到,USDT 的增发需要通过 MultiSigWallet 跨合约挪用才气完成。而 MultiSigWallet 智能合约存在多个 owner 用户,完成一次跨合约挪用需要至少 3 个 owner 简直认。这种增发机制在必然水平上杜绝了当某一 owner 账户丢失或被盗时 USDT 被恶意增发的安详隐患。

USDT 增发如下图所示:

转换成以下伪代码:

Transaction Hash:0xb467ea92b5c0095b1a96f35eb466b239c13e5b0b3f493e3e452f832d99830d6b

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读