使用以太坊智能合約發行代幣時可以加入黑名單功能,在黑名單地址上的代幣無法使用。

原文標題:《如何拉黑加密數字貨幣——從穩定幣(USDC 和 USDT)黑名單地址說起》
撰文:黃世亮

加密數字貨幣是去中心化的存在,幣圈一直以幣無法被凍結爲驕傲。但事實上,幣圈最大的兩個穩定幣 USDT 和 USDC,現在都有一個黑名單地址,在黑名單上的 USDT 和 USDC 都無法使用。

這是不是打破了加密數字貨幣不可被凍結的神話?

USDC 和 USDT 被凍結

USDC 是在以太坊上發行的一個 ERC20 代幣,錨定美元的穩定幣,使用智能合約發行。合約賬戶爲:

USDC 合約:
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

近日 USDC 被新聞報出將一個 10 萬 USDC 的地址列入黑名單,這意味着這個地址上 10 萬美元的資產將不可被使用。這和銀行凍結銀行卡是一樣的。

USDC 合約的黑名單地址也是不可以接收新的 USDC 的。

USDT 是幣圈最著名的穩定幣,也有 ERC20 版本的 USDT,合約賬戶爲:

USDT ERC20 版合約:
0xdac17f958d2ee523a2206206994597c13d831ec7

目前這個 USDT ERC20 合約也有一個黑名單地址,一共有 40 個以太坊地址,凍結了上百萬的 USDT。

USDT black list:
https://explore.duneanalytics.com/public/dashboards/3zhIaRUCFgmZMKqHG0pguvSvw1aOGL8gxFtZ2ujf

USDC 官網是明確說明,USDC 合約是帶有黑名單功能的,見下:

The only circumstance where a transfer might fail to be executed by the USDC smart contract is when either the sender or receiver wallet address has been blacklisted.

USDC 智能合約維護着一個全球黑名單地址,可以禁止和凍結其接收發送 USDC。

https://support.USDC.circle.com/hc/en-us/articles/360016060352-Can-a-customer-send-USDC-tokens-to-any-address-Can-addresses-be-blacklisted-

使用智能合約規則來禁止和凍結幣

USDT 除了 ERC20 版本的代幣外,還在其他多條鏈上均發佈了代幣。BTC 上發行了 omni 版本的 USDT,波場上有 TRC20 版的 USDT,在 BCH 上有 slp 版的 USDT……

USDT 的 ERC20 和 TRC20 版本都是採用智能合約來發行,即 Tether 公司在以太坊上寫了一個代碼並部署在以太坊網上,波場也一樣。

智能合約代碼就可以定義所有的 USDT 規則,其中就可以包括黑名單禁用地址。任何 USDT-ERC20 的轉賬是要依賴於 USDT-ERC20 這個合約代碼的執行。這就非常容易在代碼裏設定黑名單規則。

智能合約代碼寫的規則不是以太坊的共識規則,比如 USDT-ERC20 合約是無法禁止其黑名單地址接受和花費以太幣及其他代幣。一個合約只能夠禁止合約自己的代幣。只要你持有一個地址的私鑰,那你還是可以花費上面的 ETH,哪怕是該地址在 USDT-ERC20 的黑名單地址上。

一個智能合約的規則是由項目方來定義的,這不是以太坊的共識規則。所以一個智能合約發行的代幣的信用和價值是要依賴於項目方的。項目方有能力也有權通過合約代碼來定義其代幣。

以太坊上的智能合約是不可篡改的(理論上是可以改,但很難,目前以太坊社區公認爲合約規則不可隨便改)。一個合約發佈後,其代幣規則就定義好了。USDC 和 USDT 的黑名單功能是在合約發佈時定義好的。

BTC 的 omni 和 BCH 的 SLP

USDT-omni 和 USDT-slp 這兩個版本的 USDT 不是使用智能合約技術,採用的是比特幣的 Op-return 字段附代特殊信息的技術。

Op-return 是 BTC 和 BCH 的交易輸出的一種,這是比特幣交易的一部分,這是比特幣協議的共識規則。

Op-retrun 在功能上相當於寫備註信息的小紙條,就像你在銀行轉賬時的備註信息一樣。

Omni 和 slp 協議都是在交易的 op-return 字段裏填寫信息來實現代幣功能的。omni 和 slp 代幣的交易都是 BTC 和 BCH 交易中的交易。你要發一筆 omni 代幣交易,是要在發一筆比特幣交易裏內置一筆 omni 代幣交易,slp 交易也一樣。

所以說,omni 和 slp 交易是「交易內的交易」,這些交易都要遵守比特幣協議規則。

opreturn 裏的信息具體寫的是什麼,比特幣協議是不管的。使用 omni 和 slp 協議來發代幣,則是將代幣規則寫進 opreturn 裏。所以代幣規則是受 omni 和 slp 協議的約束,而 omni 和 slp 協議也是需要寫一套代碼來追蹤和檢查代幣交易是否遵守規則。

理論上,omni 和 slp 協議也可以內置地址黑名單功能,但是這兩個協議都已經寫好了,並且已經獲得了 BTC 和 BCH 的共識,協議裏不帶黑名單功能。

所以我們看不到 Tether 公司推出 USDT-omni 的黑名單地址。

ETH-智能合約和 omni\slp

以太坊的智能合約是由第三方書寫併發布的,合約代碼規則是由項目方決定。使用智能合約發行代幣,項目方有權有能力決定代幣的功能,包括黑名單。

而 omni 和 slp 協議,是 BTC 和 BCH 的第二層協議,協議已經定義好了,已經成了網絡共識的一部分。使用 omni 和 slp 協議來發代幣,絕大多數功能是受到了協議的約束,遠不如智能合約那麼靈活。

所以你看 omni 和 slp,本質上就只有孤零零的發幣功能。雖然理論上 omni 定義好了交易功能,但我們根本看不到產品。理論上 slp 協議也定義好了非同質化代幣(ERC721)功能,但我們也沒看到產品。這都是因爲協議定死了,留給開發者的發揮空間太窄。

而反觀智能合約,允許開發者使用代碼實現任何想象。這也是我們看到了以太坊上什麼亂七八糟的項目都有,如 DApp,DeFi 這些名類繁多的產品。

但同時也意味着和智能合約代幣對比,omni 和 slp 協議的代幣,發行方的權力更小,代幣用戶的權力更大。用戶使用 omni 和 slp 代幣不用擔心被列入黑名單。

礦工黑名單

這是不是意味着 USDT-omni 和 USDT-slp 絕對不可能被拉黑呢?

理論上不是的。

比特幣和以太幣,任何轉賬,包括 BTC 交易,ETH 交易轉賬,以及各種代幣的轉賬,所有的轉賬都是由礦工挖礦發佈區塊來打包,最終確認交易完成。

用戶可以構建交易,將自己的幣發給任何地址,但礦工如果不打包的話,那這筆交易就會被作廢。

所以如果想拉黑 USDT-omni 和 USDT-slp,就可以通過礦工體系來拉黑。讓礦工全體維持一個黑名單地址。

但比特幣和以太坊的挖礦是開放的,是去中心化的,而且是匿名的,很難有一個辦法讓全體礦工共同維持一個黑名單。哪怕是聯合國出面並執法,都很難行的通。

幣安交易所曾經被黑客盜走 7000 個 BTC,老闆趙長鵬發推特希望比特幣礦池幫忙凍結並回滾黑客的交易。結果是得到了全體幣圈的嘲笑。

改協議建黑名單

還有一種辦法凍結幣,改協議。以太坊在 2016 年的 The DAO 硬分叉,本質上也是通過改協議來實現對幣的所有權的更改。

想要改協議,不但要徵得開發者的同意寫代碼,還得徵得礦工的同意來更新軟件,還要徵得交易所來配合,還要用戶最終還能接受新的協議。

對於一個成功去中心化的幣,想通過改協議來實現幣的凍結是太難了,只存在理論上的可能性。

USDT 藉助 omni 協議非常成功,一個重大的特性就是匿名化。USDT-ERC20 可以被凍結了,不知道會不會引發用戶對 USDT 的不信任。

作爲 USDT 用戶,我覺得還是優先接受不可被凍結的版本爲好。

來源鏈接:mp.weixin.qq.com