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

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

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

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

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

Transaction Hash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71

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

需要注意以下两点:

TetherToken 合约调用分析

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

调用 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: MultiSig 2 地址的 USDT 是哪来的呢?根据 transactionId 继续向前追踪一个事务即可找到真正为 Bitfinex: MultiSig 2 地址增发 USDT 的交易:

Transaction Hash:0xb467ea92b5c0095b1a96f35eb466b239c13e5b0b3f493e3e452f832d99830d6b

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

USDT 增发如下图所示:

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

区块博客

FTT币圈委托投资 如何避免血本无归?

委托投资在币圈是很正常的现象,小白将投资委托给老手或者熟悉情况的朋友投资,但这样也会产生很多风险,一些币圈大佬也都有类似的“被坑”经历,应该如何预防、避免乃至做好最后诉讼时的准备。作者火律师是专业的互联网金融领域法律人士,曾经在检察院从事相关案件。 炒币道路多,今天从原告角度聊聊“委托投资纠纷那些事”。 拿什么聊?自然是案例,相对靠谱。

DOGE4.30晚间行情:BTC重回9000 5月份会有牛市吗?

文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当。 BTC 用大阳线一举突破关键位置后,多军势如破竹,一路高歌猛进。

USDC作为一名会计师 如果还不了解区块链就OUT了

自从2017年比特币进入主流金融视野以来,区块链、加密货币和许多其他技术一直是热门话题。但是,在兴奋和辩论之中,一些待解决的问题仍然存在于许多不同的经济领域。 当提到区块链和加密资产的主题时,会计师和CPA可能不是第一批想到的专业人士,但他们却起着重要的作用。

[0:15ms0-12:151ms