本文首发于FreeBuf,FreeBuf是国内领先的互联网安全新媒体,同时也是爱好者们交流与分享安全技术的社区,其投稿类文章均需要经过对应领域专家的审稿认可后方可通过。本文在FreeBuf投稿后,经过了其指定专业人员的审稿,最终得以发布也体现了本文的技术含量和价值,希望对业内人士有所帮助。 FreeBuf原文标题:ERC-20 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 增发如下图所示: —- 编译者/作者:北京链安 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
印钞机的秘密:USDT增发最全技术细节首次披露
2020-04-28 北京链安 来源:区块链网络
LOADING...
相关阅读:
- Messari:DeFi聚合器的受欢迎程度将继续增长2020-07-31
- 首要行动:Chainlink的飞涨代币在快速增长的DeFi中显示出幸运的“ Oracl2020-07-31
- 忽悠指数第21弹:佛萨奇——forsage(文末5000KEY红包)2020-07-31
- 币圈策略师:7.31比特币行情分析以及操作点位2020-07-31
- 最早启动、最先回调、又再次爆发领涨的以太坊能否带起第二波行情?2020-07-31