技術分享:CAT20 -- Fractal BTC 上的Tokens協議
作者:ZANTeam
本文僅作為技術分享,不構成任何投資建議。
BTC上也要有自己的智能合約了?
最近Bitcoin生態上,FractalBTC在經歷了多次測試網之后,終于在9月份上線主網。Fractal的一大特點就是具備「智能合約」的能力,并且幾乎在推出主網的同時,上線了一個新的Tokens協議CAT20。CAT20有什么技術上的巧妙設計呢?我們又可以學到什么?FractalBitcoin
在了解CAT20之前我們需要簡單了解一下FractalBitcoin,他們的關系就像ERC20和ETH一樣,CAT20協議是部署在FractalBitcoin上的。
FractalBitcoin又稱作分形Bitcoin,是一個完全兼容BTC的「二層」網絡。相比于BTC,它的區塊確認時間更快,僅需要1分鐘。它的基本原理簡單來說就如它的名字所言,就是將BTC網絡復制了幾份,每條鏈都會處理交易,可以處理交易的Node多了,速度也就自然快了。不過具體的細節比如不同鏈之間是如何通信的目前還不是很清楚,官方也沒有對應的技術文檔可以參考。
如果只是一個二層鏈交易更快,似乎沒有讓人興奮的點。但是,在Fractal中啟用了BTC很久之前就因為安全原因棄用的操作碼OP_CAT,讓FractalBitcoin的能力上升了一個臺階,有人說OP_CAT能讓BTC具有智能合約的能力,這樣的話可以遐想的空間就更多了。
現在,就有人在FractalBitcoin上實現了一個類似ERC20的協議。
關于OP_CAT為什么棄用以及為什么又可以在FractalBitcoin上使用,后續可以展開講講,這里我們關注CAT20。CATProtocol
以下內容參考Whitepaper:Introduction|CATProtocol(https://catprotocol.org/)
以及github倉庫:
GitHub-CATProtocol/cat-token-box:AmonorepoforpackagesimplementingCATprotocol(https://github.com/CATProtocol/cat-token-box)
有了底層的OP_CAT支持,很快就有了對應的協議,CATProtocol。目前一個已經在實際跑的協議是CAT20協議,在Unisat上也新增了對應的面板:https://explorer.unisat.io/fractal-mainnet/cat20。
看到CAT20的名字大家應該也能反應過來,它應該和ERC20比較像。相比于成熟的ERC20協議,大家部署一個Token已經非常的方便,CAT20是如何實現ERC20類似的生命周期呢。Deploy
在部署之前,用戶需要指定自己的錢包地址以及Tokens的基本信息,Tokens的基本信息和ERC20的類似:
Mint
我們先看一下MintToken的時候,交易是這么樣的。
回到最開始的那張圖上,除了Minter是一個智能合約之外,生成的Token也是智能合約,也就是CAT20。CAT20有兩個基本的狀態:數量以及Token的歸屬者地址?梢钥吹讲幌裰暗腂RC20或者銘文,你的CAT20并不是在你地址的UTXO上。Transfer
Transfer的時候,構建交易的輸入和輸出的token其里面的數量需要保持一致。當然同一筆交易里面可以有多個不同的token,只需要不同token的其輸入輸出的數量保持一致就行。Burn
想要燃燒掉Token的話,只需要將Token轉到一個普通地址上即可?偨Y
可以看到,所有的操作都是由用戶自己去構建,靈活性非常大,所以在合約部分需要做很多的校驗邏輯。目前爆出的一些漏洞也是因為校驗邏輯出現了疏忽。
這樣的設計可以有一些好處:
如果想要查找所有的Token的持有情況,只需要查一下token的utxo就行,不需要繼續往上查。
如果想要查看mint的當前情況,可以搜索OP_RETURN中數據帶有cat的交易就好。