3 ms·
Imagine that you use a currency made by a specific company, lets say it's called PaypalCoin. Part of the value of the currency is that the company manages it, p
by capableweb 4y ago
Imagine that you use a currency made by a specific company, lets say it's called PaypalCoin. Part of the value of the currency is that the company manages it, part of the risk is that a company manages it. So you'll only be able to exchange it for X as long as Paypal say you can exchange it for X. This is part of what PaypalCoin is, so if you use it, you should be aware of this.
This is basically what USDC is, and Circle is the organization that controls it. It is not a decentralized currency, it's a centralized digital currency. If Circle blacklists you and your funds, you won't be able to trade it for USD in the traditional exchanges, you'd only be able to do it P2P. This has happened already, with Tornado Cash, so it has precedent, not something I'm making up.
> USDC is issued and redeemed in accordance with Centre policies including the Centre Blacklisting Policy. Centre reserves the right to block the transfer of USDC to and from an address on chain as permitted under the Centre Blacklisting Policy.
https://www.circle.com/en/legal/usdc-terms https://www.circle.com/en/legal/usdc-terms & https://www.centre.io/hubfs/PDF/Centre_Blacklisting_Policy_20200512.pdf https://www.centre.io/hubfs/PDF/Centre_Blacklisting_Policy_2...
If Circle says you cannot exchange your USDC for USD, then that's the rule. If you don't want that possibility, you wouldn't use USDC in the first place.
- easrng 4y agoIf Circle blacklists you and your funds you can't do anything with them at all afaik.
- capableweb 4y agoThat's not true. They still live on a blockchain not controlled by them, so you can still send them around from account to account. You won't be able to get USD from them though via a CEX.
- charcircuit 4y agoThe smart contract on the blockchain allows them to blacklist addresses upon request from law enforcement.
- easrng 4y agoThe contract has a blacklist built in, see for yourself: https://etherscan.io/address/0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf#code https://etherscan.io/address/0xa2327a938febf5fec13bacfb16ae1... (and you can see the logs of them blacklisting and unblacklisting addresses here: https://etherscan.io/txs?a=0x5db0115f3b72d19cea34dd697cf412ff86dc7e1b https://etherscan.io/txs?a=0x5db0115f3b72d19cea34dd697cf412f...) It inherits from Blacklistable which allows a blacklister to blacklist accounts, and almost all functions on the contract have the notBlacklisted modifier which prevents them from being called by blacklisted accounts. /** * @title Blacklistable Token * @dev Allows accounts to be blacklisted by a "blacklister" role */ contract Blacklistable is Ownable { address public blacklister; mapping(address => bool) internal blacklisted; event Blacklisted(address indexed _account); event UnBlacklisted(address indexed _account); event BlacklisterChanged(address indexed newBlacklister); /** * @dev Throws if called by any account other than the blacklister */ modifier onlyBlacklister() { require( msg.sender == blacklister, "Blacklistable: caller is not the blacklister" ); _; } /** * @dev Throws if argument account is blacklisted * @param _account The address to check */ modifier notBlacklisted(address _account) { require( !blacklisted[_account], "Blacklistable: account is blacklisted" ); _; } /** * @dev Checks if account is blacklisted * @param _account The address to check */ function isBlacklisted(address _account) external view returns (bool) { return blacklisted[_account]; } /** * @dev Adds account to blacklist * @param _account The address to blacklist */ function blacklist(address _account) external onlyBlacklister { blacklisted[_account] = true; emit Blacklisted(_account); } /** * @dev Removes account from blacklist * @param _account The address to remove from the blacklist */ function unBlacklist(address _account) external onlyBlacklister { blacklisted[_account] = false; emit UnBlacklisted(_account); } function updateBlacklister(address _newBlacklister) external onlyOwner { require( _newBlacklister != address(0), "Blacklistable: new blacklister is the zero address" ); blacklister = _newBlacklister; emit BlacklisterChanged(blacklister); } }