比特币:印钞机的秘密:USDT增发最全技术细节首次披露

近日,听说以太坊上的泰达币频繁被增发。本着学习的目的在etherscan上审计了泰达币的智能合约源码以及USDT增发相关的调用事件,本文记录一下分析过程。以下是TetherToken智能合约的USDT增发函数:可以看到增发USDT需要TetherToken合约的owner账户调用issue(uint)增发函数进行,增发成功后还会抛出Issue(amount)增发事件。再看下最近的增发记录截图:

TransactionHash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

Tagus Capital:比特币是对央行不负责任的印钞行为的一种对冲:9月25日消息,最近流行于币圈的说法是“一枚比特币就是1枚比特币”。这种观点想表达的是,比特币的价格是多少并不重要,因为供给是固定的,从理论上讲,将会在长期内起到支撑价格的作用。Genesis Trading前衍生品主管Joshua Lim表示:“随着比特币价格大幅下跌,1 BTC= 1 BTC是比特币最大化主义者半开玩笑的说法。他们认为,比特币最终将成为一种记账单位,所以不必在意价格,只要关注我们现在拥有的比特币绝对数量就可以了。”

Tagus Capital的Ilan Solot表示,“比特币不是通胀追踪工具,它并不是通货膨胀保值债券,价格也不会随着通胀上涨而上涨,比特币是对央行不负责任的印钞行为的一种对冲。”(金十)[2022/9/26 7:20:19]

1-8月稳定币共计印钞1335.3亿枚,其中净印钞809.24亿枚:据Tokenview链上数据显示-2021年1-8月稳定币共计印钞1335.3亿枚,其中净印钞809.24亿枚,销毁526.07亿枚。8月净印钞22.08亿枚,印钞量排名前3的稳定币为USDT,TUSD,PAX,分别为30亿枚,1.23亿枚,0.2亿枚。[2021/9/6 23:02:48]

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

数据:9、10两月Tether新增印钞约合44.2亿USDT:据Tokenview区块浏览器数据显示,9、10两月USDT新增印钞44.2亿枚。新销毁10亿枚,其中以太坊上印钞数量约23.2亿,波场链上约21亿。发行的USDT流入5家交易所,共计金额29.37亿,其中约有12.3亿流入了Bitfinex交易所,占比41.8%,16.9亿流入了币安交易所,占比57.5%。截止10月31日,USDT的流通量约为166.368亿枚[2020/11/2 11:26:17]

TetherToken合约调用分析

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

8月Tether新增印钞约合35.23亿USDT:据Tokenview区块浏览器数据显示,截至8月31日,Tether新增印钞约35.23亿USDT,新发行53.78亿USDT,销毁10亿USDT(TRX) 。其中以太坊上印钞数量约为22.2亿,占比63.01%,波场链上约为13亿,占比36.99%. 当前USDT的流通量约为101.53亿。在发行方面,约有5.86亿枚流入了Bitfinex交易所,占比10.8%;17.77亿枚流入币安交易所,占比33.04%。[2020/9/1]

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

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

最终一次完整的提交->确认操作流程如下:1、调用submitTransaction(address,uint,bytes)函数提交事务并传入参数:contract-address、eth-value、payload。注意:提交事务包含一次事务确认。依次发送Submission事件->Confirmation事件。2、调用confirmTransaction(uint)确认并执行事务,需要3个不同的owner账户完成最终的确认。依次发送Confirmation事件->执行payload所产生的事件->Execution事件。TetherToken跨合约调用如下图所示:

USDT增发分析

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

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

转换成以下伪代码:

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

转换成以下伪代码:

TransactionHash:0xb467ea92b5c0095b1a96f35eb466b239c13e5b0b3f493e3e452f832d99830d6b这才是真正为Bitfinex:MultiSig2地址增发USDT的操作。USDT增发如下图所示:

总结

可以看到,USDT的增发需要通过MultiSigWallet跨合约调用才能完成。而MultiSigWallet智能合约存在多个owner用户,完成一次跨合约调用需要至少3个owner的确认。这种增发机制在一定程度上杜绝了当某一owner账户丢失或被盗时USDT被恶意增发的安全隐患。

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

链链资讯

[0:0ms0-6:601ms