近日,听说以太坊上的泰达币(USDT)频繁被增发。本着学习的目的在 etherscan 上审计了泰达币的智能合约(TetherToken)源码以及 USDT 增发相关的调用事件,本文记录一下分析过程。
以下是 TetherToken 智能合约的 USDT 增发函数:
可以看到增发 USDT 需要 TetherToken 合约的 owner 账户调用 issue(uint) 增发函数进行,增发成功后还会抛出 Issue(amount) 增发事件。
再看下最近的增发记录截图:
Transaction Hash:0xdd108cd36fbeaab03b29ac46d465ad9824618d683268681d3206bd78302e0d71
MetaMask Swap功能现已上线Avalanche:3月19日消息,加密钱包MetaMask宣布交易功能现已上线Avalanche,用户可以在MetaMask界面直接交易而无需离开钱包。[2022/3/20 14:07:03]
可以看到在上图交易详情中并没有调用 TetherToken 合约的 issue(uint) 增发函数,而是调用了 MultiSigWallet 合约的 confirmTransaction(uint) 函数完成的增发操作。
需要注意以下两点:
TetherToken 合约调用分析
我们先看看 MultiSigWallet 合约的 confirmTransaction(uint) 函数的实现
美国参议员宣布针对外国加密货币公司的制裁法案:金色财经报道,美国参议员Elizabeth Warren周四宣布了一项新法案,该法案将针对外国加密货币公司。禁止加密货币公司与受制裁的公司开展业务。与参议员 Jack Reed、Mark Warner 和 Jon Tester等人提出的《数字资产制裁合规性增强法案》,将允许美国总统将非美国本土的加密货币公司加入制裁名单,如果它们支持逃避制裁。Warren称,这是一项法案,将授权总统制裁与受制裁的俄罗斯实体做生意的外国加密货币公司,并授权财政部长采取行动。目前该法案的文本没有立即提供。Warren在参议院银行委员会举行的关于加密货币如何被用于非法金融的听证会上宣布了该法案。(Coindesk)[2022/3/18 14:03:37]
调用 confirmTransaction(uint) 函数确认并执行交易需要满足以下条件
CryptoFIFA任命原摩根士丹利投资执行总监Wilson Hu为首席经济学家兼合伙人:据官方消息,近日,CryptoFIFA任命原摩根士丹利投资执行总监Wilson Hu为首席经济学家兼合伙人。Wilson曾在摩根士丹利、安联全球投资等国际一线投行或资管机构担任执行总监,为沪深两地多家上市公司的提供市值管理服务,多次进入A股上市公司前十大股东。Wilson是金融分析和数学建模专家,加入CryptoFIFA后将任职首席经济学家兼合伙人,负责平台通证经济模型和游戏经济模型设计等工作。
CryptoFIFA 是一款基于NFT的加密球星卡牌Gamefi平台,将传统足球游戏中的经典玩法引入加密世界,并融入NFT、Defi元素,发展出一套更加公平、友好、可持续的游戏机制。目前已获得FBG,DFG,YBB,Kernel等数十家机构的私募轮融资。6月份,体育界最盛大的赛事之一欧洲杯即将开幕,届时CryptoFIFA也赛事挖矿也将同步开启。[2021/4/23 20:52:11]
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 增发如下图所示:
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。