USDT:印钞机的秘密:USDT增发最全技术细节披露

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

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

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

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

南昌印钞有限公司推出数字纪念品向公众宣传区块链技术:金色财经报道,2022年全国科技活动周于2022年5月21日至28日举办,中国印钞造币集团有限公司组织对金融科技相关技术进行科普宣传,日前南昌印钞有限公司联合中钞信用卡产业发展有限公司推出数字纪念品体验活动,向公众宣传区块链技术。“数字纪念品”共六款,每天中午 12 点开始投放。[2022/5/25 3:41:18]

TransactionHash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

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

11月Tether新增印钞12次共计20.2亿USDT:据Tokenview区块浏览器数据显示,11月Tether新增印钞12次,共计20.2亿枚USDT。其中9.2亿在以太坊上增发,11亿在波场上增发。

而USDT在以太坊和波场链上的持币前5名也分别由Binance和Huobi占有,其中Binance在以太坊和波场上合计占有4.53%的比例,Huobi在以太坊和波场上合计占有8.59%的比例。[2020/11/23 21:48:12]

需要注意以下两点:

TetherToken合约调用分析

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

V神:DeFi收益耕作就像央行疯狂印钞:以太坊联合创始人Vitalik Buterin认为,DeFi收益耕作就像中央银行为拯救经济疯狂印钞一样是不可持续的,而且他对目前DeFi市场热潮持怀疑态度。Vitalik Buterin还暗示说:到目前为止,我看到产生长期费用的唯一策略是某种怪异的金融攻击,抢夺流动性并从未掉期交易中窃取网络效应,我对这种策略感到悲观。有人认为Vitalik Buterin这种说辞可能在暗示Uniswap+收益耕作工具Sushiswap。Vitalik Buterin建议最好完全摆脱收益耕作,直到它逐渐发展为一个更具可持续性的行业。(decrypto)[2020/9/1]

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

《富爸爸,穷爸爸》作者:随着美联储印钞数万亿,比特币会变得越来越有价值:《富爸爸,穷爸爸》作者罗伯特·清崎(Robert Kiyosaki)刚刚发推称,比特币会是“最快的马”吗?当美联储实行负利率时,储户是最大的输家。中产阶级囤积黄金和白银,推动价格上涨。只有有钱的人才买得起比特币,有钱的人才会意识到,随着美联储印钞数万亿美元,比特币会变得越来越有价值。[2020/8/10]

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

数据:近一周Tether共计新增印钞5.78亿USDT:Tokenview稳定币数据分析,截至今日18:00,近一周Tether共计新增印钞5.78亿 USDT,环比增长88.89%;通过Tether Treasury新发行了5.73亿 USDT,环比增长198.58%;当前Treasury地址仍有3.16亿USDT尚未发行。[2020/3/21]

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

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-1:46ms