解析中心化稳定币合约

作者:EatonAshton2,Beosin 安全研究员

封面:Photo by Muhammad Asyfaul on Unsplash

8 月 7 日,支付巨头 PayPal 宣布推出美元稳定币 PayPal USD(PYUSD)。该稳定币由 Paxos 发行,目前合约已部署在以太坊主网。查看其合约代码会发现,PYUSD 合约代码与 USDP(Paxos 发行的稳定币)的代码基本上一致,PYUSD 只增加了一个 increaseSupply 的外部函数。

中心化稳定币主要由法币抵押。稳定币发行方会将法币等资产抵押在银行账户,作为链上稳定币的储备金。本文主要通过 Beosin VaaS 扫描稳定币合约代码,检测其代码逻辑,发现各类中心化稳定币的不同之处。

图片

USDT

1.  潜在的手续费

USDT 设置了两个变量 basisPointsRate 与 maximumFee,用于设定用户使用 USDT 时需要向泰达公司支付的费用,最高手续费为 50USDT。目前这两个变量设定为 0,用户使用 USDT 时不需要额外向泰达公司支付手续费。

图片
合约地址:https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code

2.  黑名单

泰达公司在 USDT 代币合约中设置了黑名单功能。如果某一地址被加入黑名单,那么该地址无法调用 transfer() 或者 transferFrom() 转移 USDT。此外,泰达公司甚至可以调用 destroyBlackFunds(),将黑名单用户的 USDT 余额设置为 0,以打击黑名单用户。

图片
合约地址:https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code

USDC

USDC 没有设置手续费。与 USDT 一样,USDC 也有黑名单制度,被加入黑名单的地址无法调用 USDC 合约的任何函数,但 USDC 没有设置类似 USDT 的 destroyBlackFunds() 的函数。

图片
USDC 所有外部函数要求地址不在黑名单里

USDP/BUSD/PYUSD

1.  黑名单

USDP,BUSD 和 PYUSD 的代码基本一致。与其它中心化稳定币一样,它们也有黑名单功能,可以将某一地址添加到 frozen 名单,从而限制该地址有关 USDP/PYUSD 的转移。USDP,BUSD 和 PYUSD 设有 wipeFrozenAddress(),该函数的功能与 USDT 的 destroyBlackFunds() 功能类似,可以将 frozen 名单中的地址的相关稳定币余额重置为 0。

图片
https://etherscan.io/token/0xe17b8aDF8E46b15f3F9aB4Bb9E3b6e31Db09126E#code

2.  白名单

USDP,BUSD 和 PYUSD 设有 assetProtectionRole,类似于白名单。用 assetProtectionRole 修饰的地址可以将某一地址添加到 frozen 名单或者调用 wipeFrozenAddress()。

3.  无 gas 转账

USDP,BUSD 和 PYUSD 还提供以下两个函数:

betaDelegatedTransfer() 和 betaDelegatedTransferBatch(),从而允许用户在提供签名信息的情况下让获得批准的特定方代表用户进行稳定币转账,以实现用户端无 gas 费的交易

图片
https://etherscan.io/token/0xe17b8aDF8E46b15f3F9aB4Bb9E3b6e31Db09126E#code

总结

中心化稳定币都设有黑名单制度,以满足监管和反洗钱要求。基于 Paxos 发行的稳定币比起 USDT 与 USDC 有些许创新。PayPal 在公共区块链网络上部署稳定币会使得美元稳定币市场更进一步,数百万用户可以通过 PayPal 支付平台进入加密领域。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。