BTC生態重大突破:Fractal推出智能合約協議CAT20

robot
摘要生成中

BTC也將擁有自己的智能合約功能

近期,比特幣生態中一個名爲Fractal BTC的項目在經歷多輪測試網後,於9月份正式上線主網。Fractal的一大亮點在於其具備智能合約能力,並且在主網上線之際推出了一個新的代幣協議CAT20。那麼CAT20在技術上有哪些巧妙之處?我們又能從中學到什麼呢?

技術角度解讀CAT20:分形比特幣上的新代幣協議

Fractal Bitcoin簡介

在了解CAT20之前,我們需要先簡單了解一下Fractal Bitcoin。二者的關係類似於ERC20和ETH,CAT20協議是部署在Fractal Bitcoin之上的。

Fractal Bitcoin又稱分形比特幣,是一個完全兼容BTC的"二層"網路。相比BTC,它的區塊確認時間更快,僅需1分鍾。其基本原理簡單來說就是將BTC網路復制了幾份,每條鏈都能處理交易,可處理交易的節點增多,速度自然也就提高了。不過具體細節,如不同鏈之間的通信方式,目前還不是很清楚,官方也沒有提供相應的技術文檔可供參考。

如果只是一個二層鏈交易更快,似乎並不足以讓人興奮。但是,Fractal啓用了BTC很久之前因安全原因棄用的操作碼OP_CAT,這讓Fractal Bitcoin的能力提升了一個層級。有人認爲OP_CAT能讓BTC具備智能合約的能力,這樣就給人們提供了更多想象的空間。

目前,已經有人在Fractal Bitcoin上實現了一個類似ERC20的協議。

技術角度解讀CAT20:分形比特幣上的新代幣協議

CAT Protocol

有了底層OP_CAT的支持,很快就出現了相應的協議CAT Protocol。目前一個已經在實際運行的協議是CAT20協議。

與成熟的ERC20協議相比,大家部署一個Token已經非常便捷,那麼CAT20是如何實現類似ERC20的生命週期的呢?

Deploy

在部署之前,用戶需要指定自己的錢包地址以及代幣的基本信息,這些信息與ERC20的類似。CAT20的一些不同之處在於可以設置預挖和每次Mint的數量限制。當然,ERC20也可以通過合約能力實現這些功能。

部署階段會發起兩筆交易,可以看作是兩個階段:"commit"和"reveal"。在"commit"階段,交易的輸出腳本中會寫入代幣的基本信息,如代幣的名稱、符號等。"commit"階段發起的交易hashId將作爲該代幣的標識,用於區分其他代幣。

在"reveal"階段,交易首先會輸出一個OP_RETURN,其中保存CAT20的初始狀態的Hash。之後會再輸出一個Minter,它在後續的Mint過程中發揮重要作用,用來維護Mint過程的狀態變化。

整個Deploy過程,"commit"和"reveal"遵循了區塊鏈上常用的提交和揭示兩個步驟,是一種比較常見的部署項目的方式。

技術角度解讀CAT20:分形比特幣上的新代幣協議

Mint

Mint Token時,交易有以下幾個特徵:

  • mint的輸入是一個minter,最初由deploy時生成。
  • 每次mint都有且只有一個minter作爲輸入,有任意個minter作爲輸出。
  • 每次mint都有且只有一個token。
  • 輸出的順序有要求,minter後面必須是token。

minter作爲mint交易的輸出,可以是1個、多個甚至是0個。如果每次Mint都設置爲1個,那麼整個網路中可使用的minter數量就會保持不變(1個),這會讓Mint變得擁擠。爲避免這種情況,需要將每次輸出的minter數量設置爲大於1,這樣mint之後,大家可使用的minter就會越來越多。

然而,每多輸出一個minter意味着需要多支付一筆utxo。出於經濟考慮,更多人會傾向於將minter設置爲0,這不可避免地會讓minter變得通縮,需要一些人進行奉獻,自願支付多出來的minter。

在V2版本中,默認生成兩個Minter,並且兩個Minter的狀態會盡可能相近。

技術角度解讀CAT20:分形比特幣上的新代幣協議

交易的構建

爲什麼可以使用minter的utxo進行交易構建?這需要對"合約"的源碼進行分析。

在reveal過程中,交易使用了前一個交易的輸出commit作爲輸入。這是通過巧妙地改寫腳本邏輯實現的,在腳本中寫入的公私鑰對是我們自己地址的,這樣就可以控制兩個不同地址的utxo。

對於minter utxo,所有人都可以使用這些utxo作爲輸入,這可能是OP_CAT提供的智能合約能力,每一個minter就是一個智能合約。

技術角度解讀CAT20:分形比特幣上的新代幣協議

交易的狀態(V2)

minter中保留了狀態,存儲在兩個地方:一是交易輸出的OP_RETURN中,二是存儲在智能合約中。

OP_RETURN中存儲當前交易輸出狀態的Hash,合約中存儲Token剩餘的Mint次數。每次Mint後,新生成的Minter的mint數量會等於剩餘可mint數量除以二。

除了Minter是智能合約外,生成的Token也是智能合約,即CAT20。CAT20有兩個基本狀態:數量和Token的歸屬者地址。值得注意的是,與BRC20或銘文不同,CAT20並不在你地址的UTXO上。

技術角度解讀CAT20:分形比特幣上的新代幣協議

Transfer

Transfer時,構建交易的輸入和輸出的token數量需要保持一致。同一筆交易可以有多個不同的token,只需不同token的輸入輸出數量保持一致即可。

技術角度解讀CAT20:分形比特幣上的新代幣協議

Burn

要燃燒Token,只需將Token轉到一個普通地址即可。

技術角度解讀CAT20:分形比特幣上的新代幣協議

總結

所有操作都由用戶自己構建,靈活性很大,因此合約部分需要做很多校驗邏輯。目前出現的一些漏洞也是因爲校驗邏輯出現疏忽。

這種設計有一些優點:

  1. 查找所有Token的持有情況只需查看token的utxo,無需繼續往上查。
  2. 查看mint的當前情況可搜索OP_RETURN中數據帶有cat的交易。

技術角度解讀CAT20:分形比特幣上的新代幣協議

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 10
  • 分享
留言
0/400
无情哈拉vip
· 07-09 20:02
又有新协议起飞了?
回復0
代码审计姐vip
· 07-08 23:05
看了源码 入参校验有隐患
回復0
主网延期通知书vip
· 07-08 03:40
据数据库显示 九月至今已经延期92天了呢
回復0
Meme复读机vip
· 07-07 20:26
btc终于能玩合约了 牛哇
回復0
反向指标哥vip
· 07-07 08:24
又要割韭菜啦
回復0
薛定谔的Gas费vip
· 07-07 08:22
这合约谁敢构建啊?
回復0
airdrop_whisperervip
· 07-07 08:22
稀罕啥 比特币就挺好
回復0
NFT_考古学家vip
· 07-07 08:18
BTC终于开窍了啊!
回復0
破产倒计时vip
· 07-07 08:15
信赖指数+++
回復0
佛系矿工ervip
· 07-07 08:01
又一个镰刀要来咯
回復0
查看更多
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)