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

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

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

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

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

BitMEX创始人Arthur Hayes:更多银行倒闭或致美联储重启印钞机:3月12日消息,BitMEX创始人Arthur Hayes针对美联储正考虑设立基金,以在更多银行倒闭时为存款提供担保一事发表评论称:离印钞机启动越来越近。还记得2008年他们首先尝试了问题资产救助计划吗?市场持续下跌,金融机构不断破产。然后他们最终打开了印钞机。我猜想这次可能会遵循类似的轨迹。让我们看看火箭筒有多大。

此前彭博社报道,美国联邦存款保险公司(FDIC)和美联储正在考虑设立一只基金,使监管机构能够为硅谷银行倒闭后陷入困境的银行提供更多存款担保。据知情人士透露,监管机构在与银行业高管的谈话中讨论了这种新的特殊工具。他们希望建立这样一个工具能够安抚储户,并有助于遏制恐慌情绪。[2023/3/12 12:58:15]

TransactionHash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

Compound创始人:币圈人士对央行疯狂印钞愤怒,但发现了算法稳定币:Compound创始人Robert Leshner今日在推特上表示,加密行业的每个人都对中央银行疯狂印钞感到非常愤怒,然后他们发现了算法稳定币。[2020/12/30 16:06:15]

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

需要注意以下两点:

Tether在波场链上新增印钞1亿USDT:Tokenview区块浏览器数据显示,Tether于今日18:05在波场链上新增印钞1亿USDT。区块高度为:20707511。Bitfinex首席技术官PaoloArdoino对此表示,波场网络补充了1亿USDT的库存。这是一笔已授权但未发行的交易,这意味着该金额将用作下一次发行请求的库存。经查询发现,截至目前,Tether在波场网络上的TRC20USDT总发行量约27.83亿枚。[2020/6/17]

TetherToken合约调用分析

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

BB:机构需求上涨和全球印钞正推动比特币:金色财经报道,Block.One首席执行官BB(Brendan Blumer)发推文称:“自从减半以来,仅灰度比特币信托(GBTC)就购买了18900枚BTC,比同一时间开采的BTC多出50%以上。机构需求的上涨和全球印钞正以一种我从未见过的方式推动比特币发展。”[2020/5/29]

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

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

俄罗斯外贸银行分析师:比特币泡沫的“罪魁祸首”是全球央行疯狂印钞:俄罗斯外贸银行(VTB Capital)全球宏观策略分析师Neil MacKinnon对美国财经媒体CNBC表示,在一些资产中存在典型的泡沫信号,而造成这些泡沫的罪魁祸首就是近些年来全球央行“疯狂”印钞:一些资产类别中已经出现泡沫,比如说数字货币。超宽松货币政策造成了市场上的过度投机和过度杠杆,从而滋生了泡沫。这些泡沫可能造成的后果就是,我们会更频繁的看到市场闪崩、暴跌,最坏的情况是市场出现一次彻底的崩塌。比特币、莱特币、艺术品……泡沫随处可见,这正是市场分析人士和金融部门官员们最最担忧的局面。对于全球央行来讲,如果说过去10年的难题是应对金融危机、如何实行各种形式的货币宽松政策,那么未来几年最大的难题就是如何治疗前些年大量印钞留下的后遗症。[2017/12/20]

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

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-9:528ms