金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

栏目: IT技术 · 发布时间: 6年前

近日,听说以太坊上的泰达币(USDT)频繁被增发。本着学习的目的在 etherscan 上审计了泰达币的智能合约(TetherToken)源码以及 USDT 增发相关的调用事件,本文记录一下分析过程。

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

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

可以看到增发 USDT 需要 TetherToken 合约的 owner 账户调用 issue(uint) 增发函数进行,增发成功后还会抛出 Issue(amount) 增发事件。

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

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

Transaction Hash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

可以看到在上图交易详情中并没有调用 TetherToken 合约的 issue(uint) 增发函数,而是调用了 MultiSigWallet 合约的 confirmTransaction(uint) 函数完成的增发操作。

需要注意以下两点:

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

TetherToken 合约调用分析

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

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

调用 confirmTransaction(uint) 函数确认并执行交易需要满足以下条件

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

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

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

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

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

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

2、调用 confirmTransaction(uint) 确认并执行事务,需要 3 个不同的 owner 账户完成最终的确认。

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

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

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

USDT 增发分析

继续看这笔增发交易的调用事件,正好满足调用 confirmTransaction(uint) 函数所产生的事件。

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

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

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

转换成以下伪代码:

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

那么 Bitfinex: MultiSig 2 地址的 USDT 是哪来的呢?根据 transactionId 继续向前追踪一个事务即可找到真正为 Bitfinex: MultiSig 2 地址增发 USDT 的交易:

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

转换成以下伪代码:

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露

Transaction Hash:0xb467ea92b5c0095b1a96f35eb466b239c13e5b0b3f493e3e452f832d99830d6b

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

USDT 增发如下图所示:

金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露


以上所述就是小编给大家介绍的《金色荐读 | 印钞机的秘密:USDT增发最全技术细节披露》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Dive Into Python 3

Dive Into Python 3

Mark Pilgrim / Apress / 2009-11-6 / USD 44.99

Mark Pilgrim's Dive Into Python 3 is a hands-on guide to Python 3 (the latest version of the Python language) and its differences from Python 2. As in the original book, Dive Into Python, each chapter......一起来看看 《Dive Into Python 3》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具