顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2023-12-18 14:31:13
看板 DigiCurrency
作者 DarkerDuck (達克鴨)
標題 Re: [Coin] 銘文Token合約
時間 Sun Dec 17 20:25:44 2023


很久沒發技術文了,因為這波就是沒什麼新技術啊,meme幣整天博傻,動物園都快蓋好了。

就算是最近被吹上天的BRC-20講的好像BTC的Defi summer,

但實際上類似的東西,10年前的BTC在還未有ETH生態系就玩過了。

mastercoin可以玩代幣,counterparty還可以玩智能合約咧。

BCH之前也早就玩過SLP token了,USDT甚至有在SLP上發行咧。
https://i.imgur.com/g9zbGoe.png
https://tether.to/en/transparency/#usdt
[圖]

但這種代幣玩法實際上就是劣化版的ERC-20,更不用談什麼defi summer了。

既然原PO講到了,就來講一下技術上BRC-20與ERC-20上的不同。



ERC-20是由圖靈完備的EVM所執行的程式語言代幣標準,EVM是由礦工執行與驗證的。

所以ERC-20上的mint, transferFrom等方法當然都是由礦工執行與驗證的

而且因為最新的state都是已經和智能合約儲存在區塊鏈上了。

所以所有的代幣參與者都可以從區塊鏈上取得最新的"共識"。


整個交易安全都是由區塊鏈確保的,因為礦工已經幫忙驗證過了,所以不用重新驗證。


更重要的因為是由EVM所執行的,所以自訂化程度很高,也可以和後續的DeFi相容。

像是DEX交易,staking,AMM等DeFi玩法,要更詳細的資訊可以看下面文章。
https://www.toptal.com/ethereum/create-erc20-token-tutorial
ERC20 Token Tutorial | Toptal®
[圖]
This Ethereum tutorial demonstrates how you can create and deploy your own ERC20 token in under an hour. ...

 


而BTC並不支援圖零完備智能合約,

所以從以前到現在的玩法就是把BTC的區塊鏈當作資料庫使用

以前用OP_return可以在BTC上寫入額外的資料,

不過Luke等開發者不想讓BTC太好用就限縮了OP_return的使用,免得spam attack
https://www.panewslab.com/zh_hk/sqarticledetails/4nl41tx7aw2u.html
https://i.imgur.com/pwzLSUN.png
[圖]


直到Bitcoin Core用萬能的soft-fork完成了taproot升級。

被人發現taproot有bug,不~~是feature。可以用taproot程式碼繞過交易大小限制。

可以把整個區塊用taproot交易的程式碼區段塞滿滿,當然也就可以塞資料進去
https://web3plus.bnext.com.tw/article/271?
https://i.imgur.com/WronFGn.png
[圖]

這種方式就是ordinal協議,可以在區塊鏈上附加任何資訊,既然可以加上圖片。

那當然也可以也可以附加純文字檔。

就有人想到程式語言的通用資料格式json用來附加交易資訊。這時BRC-20就誕生了
https://domo-2.gitbook.io/brc-20-experiment/
brc-20 - brc-20 experiment
Read every word if you decide to test. These will be worthless. Use at your own risk. ...

 
https://i.imgur.com/KWsUieG.png
[圖]

譬如創建一個BRC-20代幣ORDI就是上面那個json指令。把各個欄位定義好就行。
https://i.imgur.com/rFibDxB.png
[圖]

其他的操作也是簡單到有點簡陋了。
https://i.imgur.com/yEw1kYd.png
https://i.imgur.com/owNLKej.png
[圖]
 
[圖]

比較特別的就transfer是直接用UTXO機制,ordinal的UTXO跑到哪邊就是誰的,

所以只需要填數量就好。



那為什麼說這其實是劣化版的ERC-20呢?

因為上面的這些操作指令"礦工不驗證",所以其實可以亂寫都沒差。

譬如說我只有1 ORDI,但是我transfer寫我傳1000 ORDI都可以被"礦工確認"


所以就需要靠額外的index server去"驗證"那些BRC-20交易是"真的有效"。

這問題就導致了中心化index server的產生,

一般人只能去"相信"這些index server是誠實不作惡的。而非trustless。

就算server誠實,但這也會是安全性的single point of failure。

要入侵單一server比入侵整個區塊鏈網路簡單太多了。
https://twitter.com/0xmetazen/status/1723734111704244487

另外一個問題就是這些index server會變成整個系統的效能瓶頸。

這問題以前在BCH SLP上就發生過了,index server常常會overload或是離線。

那就不要只跑一個index server,去中心化跑很多個就好了啊~~~

然後你又會得到一個新問題,可憐啊~~
https://abmedia.io/asset-security-brc-20-version-discrepancy
資產安全|BRC-20 版本出落差,部分平台暫停相關交易 | 鏈新聞 ABMedia
[圖]
BRC-20 代幣出現多重版本同時在多家交易所運行,可能造成雙花問題 (Double Spending) 導致用戶資產損失,鏈新聞建議用戶此時不要進行交易。 ...

 


這本身已經是劣化版的ERC-20在劣化的區塊鏈BTC上,問題只會更嚴重。

永恆牛市需要永恆mempool
https://jochen-hoenicke.de/queue/#BTC,24h,weight
Johoe's Bitcoin Mempool Size Statistics
[圖]
Johoe's Bitcoin Mempool Size Statistics ...

 
https://i.imgur.com/EgTYcBV.png
[圖]

然後就有這種玩法:
https://news.cnyes.com/news/id/5412431
https://twitter.com/evilcos/status/1735685957662441563

用低BTC手續費卡住mempool,漲價了就用tailTodd發明的RBF加速交易。

跌價了就ToTheMempool,等它自然被踢出mempool就好。


也難怪Luke把這東西當作bug,還寫到CVE list裡面了。
https://tinyurl.com/brjms38t
Bitcoin Developer Luke Dashjr Registers Ordinal Inscriptions Workaround as a Vulnerability – Bitcoin News
[圖]
Luke Dashjr registered the method that allows Ordinals to embed data directly on top of the Bitcoin blockchain as a vulnerability. ...

 
https://i.imgur.com/pwzLSUN.png

因為這種做法問題實際上很多。

所以BCH後來就用CashToken這種礦工驗證的代幣標準來取代SLP標準了。



回到正題,假如真的要用ETH智能合約寫BRC-20這種玩法可以怎麼寫呢?

首先當然就是摒棄ERC-20標準,因為ERC-20標準裡的方法與資料結構都是礦工驗證的。

我們只需要把區塊鏈當作資料庫使用就好。

下面就隨便寫一個把智能合約當作字串資料庫的程式碼,

沒經過任何驗證檢查,只是要方便講概念。


pragma solidity ^0.8.0;

contract LongStringArray {
    string[] public strings;

    function write(string memory newString) public {
        strings.push(newString);
    }

    function read() public view returns (string[] memory) {
        return strings;
    }
}

有最簡單write和read function可以讀寫這個字串資料庫。

所以只要用write(newString)寫入BRC-20標準的json字串進去理論上就可以使用了。

index server則是用read去讀這個字串陣列資料庫去驗證交易並且得出所有餘額。

不過BRC-20有些操作必須改一下,就是因為ETH等EVM鏈是account模式。

所以mint與transfer的操作必須加上地址欄位。

可以額外寫這些function,

讓合約操作者方便呼叫這些function就可以把這些json格式的指令寫入到strings中。

後面就不寫了,在EVM鏈上做這種事情真的是沒有意義的事情。

有興趣的人自己研究吧。

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.80.199 (臺灣)
※ 作者: DarkerDuck 2023-12-17 20:25:44
※ 文章代碼(AID): #1bVkZA-D (DigiCurrency)
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1702815946.A.F8D.html
※ 編輯: DarkerDuck (114.27.80.199 臺灣), 12/17/2023 20:48:10
※ 編輯: DarkerDuck (114.27.80.199 臺灣), 12/17/2023 21:13:14
Bewho: 持續關注技術1F 12/17 20:54
dnac6h12o6: 推推2F 12/17 20:58
jixian: 推3F 12/17 21:13
MustangF: 推4F 12/17 21:19
leechiungyi: 看不懂還是默默推了5F 12/17 21:26
kf013099: Eth 上已經有了,叫 ethscriptions ...真的莫名其妙lol6F 12/17 21:28
qw5526259: 推~~~7F 12/17 21:53
MACD: 在EVM上發銘文就是一件很瞎的事情,但是幣圈就是有一個怪現8F 12/17 22:05
MACD: 象,越沒用的東西越能夠賺錢
wahaha99: 原來BRC-20不只是垃圾,還是垃圾中的垃圾10F 12/17 22:17
wahaha99: 這不修掉對BTC不是好事,畢竟是加密貨幣龍頭,
wahaha99: 鍊上都是垃圾是怎樣
Shinn826: 現在鏈上卡了一堆垃圾 Gas高礦工爽 打銘文的遲早要歸零13F 12/17 23:20
ripple0129: 換句話說ERC20做成銘文就是放棄礦工驗證,給莫名的in14F 12/17 23:35
ripple0129: dex server驗證XD
zack0000: 推 這波亂噴一波16F 12/17 23:36
gajo1564: 推 不過賭徒無所謂安全不安全 有人當流動性能下車就行17F 12/18 00:17
gR7P4zXH: Luke XDD18F 12/18 01:04
※ 編輯: DarkerDuck (122.121.132.61 臺灣), 12/18/2023 01:11:35
sdtty: 推19F 12/18 03:05
Orisinal: 現在風氣就是管他什麼內涵 反正fomo進去 然後翻了幾倍20F 12/18 05:17
Orisinal: 財富自由
ssnopra: 推22F 12/18 09:54
shuo19971203: 也不是不能衝 也不一定賺不到錢 但你要明白銘文就23F 12/18 10:13
shuo19971203: 是垃圾 拿你的真錢衝垃圾 值不值得 風險會不會大
shuo19971203: 就自己判斷了
adamcha: 加密貨幣就是充斥一堆垃圾  才讓一般人不敢進場26F 12/18 10:37
jimjim951357: 推27F 12/18 12:21
wlsh5701: EVM版的銘文甚至不用寫到storage 用calldata還更省gas28F 12/18 13:06
allen139443: 用evm捏銘文幣某種程度上也算一種行為藝術了lol29F 12/18 13:43

--
※ 看板: DigiCurrency 文章推薦值: 0 目前人氣: 0 累積人氣: 19 
作者 DarkerDuck 的最新發文:
點此顯示更多發文記錄
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇