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

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

TransactionHash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

波场基金会将开启OKEX平台TRX无上限刚性1:1兑付:波场基金会刚刚发布公告称,波场基金会与孙宇晨将开启OKEX平台TRX的刚性1:1兑付提现,自公告后立刻生效。OKEX平台的用户可以通过内部转账的形式,将TRX转入公告指定账户,并联系官方手机号,在12至24小时内,官方会将TRX打入用户的指定TRX主网账号。[2020/10/21]

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

TokenBetter主流币行情数据:BTC24小时涨1.01%:TokenBetter官方行情数据,截至6月16日9:35,BTC24小时涨1.01%,现报9395USDT;ETH24小时涨1.62%,报229.96USDT;EOS24小时涨1.46%,报2.5285USDT;BCH24小时涨1.75%,报235.57USDT;BSV24小时涨0.63%,报172.7USDT;LTC24小时涨0.83%,报43.56USDT;XRP24小时涨4.29%,报0.19171USDT;ETC24小时涨2.09%,报6.233USDT。

本周二,美股三大指数收涨。DJIA24小时涨0.62%,报25763.16点;NDX24小时涨1.43%,报9726.02点;SPX24小时涨0.83%,报3066.59点。[2020/6/16]

声音 | OKEx CEO:OKEx一直同时支持分摊和ADL两种风控模式:OKEx CEO Jay Hao转发九妹的微博并表示,如果平台的保证金充足,是不会触发分摊或者ADL的,比如OKEx保证金很充足,已经很久没有出现过分摊啦。OKEx一直同时支持分摊和ADL两种风控模式,不同币种需要的风控模型不一样,主流币种都采用分摊模型,未来部分小币会采用ADL模型。此前,币安何一与OKEx九妹在微信群就自动减仓和分摊进行了讨论。[2020/2/20]

TetherToken合约调用分析

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

公告 | OKEx关于永续合约系统升级停机20分钟的公告:OKEx发布公告称,为提升永续合约系统性能,我们将在2019年1月24日18:30(HKT)进行系统升级。升级时间预计20分钟左右,期间将暂停撮合,下单、追加保证金、永续合约账户转入转出等相关功能无法使用。[2019/1/24]

调用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-3:609ms