如何使用代幣本身作為礦工費——EIP965和slp郵資協議

買賣虛擬貨幣
代幣經濟是公鏈最大的應用,但傳送代幣需要主網幣作為礦工費這點很反人類習慣。以太坊上的Erc20代幣需要ETH作為礦工費,比特幣上的omni代幣需要btc作為礦工費,比特幣現金上的slp代幣需要BCH作為礦工費。這些都很煩人。有很多人願意持有usdt穩定幣,但不持有比特幣和以太坊。我曾經賣過少量的BTC和ETH給人作為礦工費,原價10塊錢,賣20塊錢。我們付人民幣,支付美元,從來不需要黃金作為礦工費。為什麼付usdt-Erc20代幣需要用ETH作為礦工費,煩死。有沒有辦法讓支付代幣免於主鏈幣礦工費?公鏈為什麼一定需要礦工費在鏈上傳送交易,無論是主網幣還是鏈上代幣,都需要支付主網礦工費。這主要是為了防止DDoS,試想如果不需要礦工費,一個人生成兩個地址,寫個指令碼無限相互轉賬,每天產生幾億幾億的交易資料發到鏈上,整個區塊鏈不得爆掉啊。傳送鏈上代幣能不能預設不使用主鏈幣作為礦工費呢?為什麼沒有哪條公鏈會設計成傳送代幣使用代幣本身作為礦工費?
代幣是可以隨意生成的,如果一個人發了一個代幣,它本身沒有價值,然後用這個代幣無限在鏈上發交易,這不也把鏈給搞死了嗎?有沒有辦法讓發代幣不需要主鏈幣作為礦工費,而且還能免於DDoS?以太坊的解決方案以太坊是最大的代幣經濟平臺了,目前幣圈主流的代幣都跑在以太坊,以太坊也最迫切需要一個免ETH發代幣的解決方案。其實理論上,以太坊是非常容易解決這個礦工費的問題的。因為以太坊是一個智慧合約平臺,只需要寫一個專門為代幣交易支付ETH礦工費的合約即可解決問題。以太坊分別有一為代幣支付ETH礦工費的提案EIP965(https://github.com/ethereum/EIPs/issues/965),還有一個未分配到EIP代號的提案:ERC865(https://github.com/ethereum/EIPs/issues/865)
以太坊解決這個問題的基本思路是這樣的:設計一個智慧合約。往合約裡預存一些ETH。合約設計一個白名單ERC20代幣列表。在白名單內的ERC20代幣,使用者傳送代幣交易時呼叫該合約。(這需要錢包設計好)使用者的交易需要給合約支付一筆所傳送的代幣作為礦工費。
合約會給使用者傳送交易時支付一筆ETH礦工費,這樣交易就可以被礦工打包了。本質上以太坊的免礦工費發代幣是設計一個合約商店,讓使用者使用代幣換ETH。但以太坊的這一解決方法一直沒有流行,相反,以太坊普遍採用了中心化的解決方案。中心化解決方案交易所其實都解決了這個問題,我們在交易所提任何代幣都不需要主鏈幣作為礦工費的,交易所直接幫我們扣代幣,然後交易所自己會新增主鏈幣作為礦工費。位元派作為錢包商,也出過幫使用者代付礦工費的解決方案。
中心化的解決辦法說白了就是使用者用代幣換中心化公司的主鏈幣,甚至使用者可以用人民幣來換。BCH的解決方案BCH的代幣經濟系統slp協議現在開始慢慢進入主流了,也需要解決發代幣免使用BCH作為礦工費的問題,以提高使用者體驗。BCH開發者提出一個叫slp郵資協議的解決方案。(slp-postage-protocol:https://github.com/simpleledger/slp-specifications/blob/master/slp-postage-protocol.md)使用slp郵資協議發交易的基本構成如下:使用者使用anyonecanpay傳送slp交易,交易輸入至少兩個:
Input1:使用者需要傳送的slp幣Input2:空留一個bch輸出,留給郵資協議服務商補齊Input3:一般郵票金額是固定的,如果使用者的交易尺寸比較大,就需要貼多張郵票,就需要空留多個Input給郵資協議服務商貼郵票。交易輸出至少三個:Output1:使用者傳送的slp幣的目標地址Output2:服務商的收幣地址,使用者使用slp幣支付給郵資協議服務商的郵票
Output3:郵資協議服務商的地址,input2的BCH金額-output3的BCH金額=礦工費。如果有多張郵票,就會有output4這些。補充一點Anyonecanpay的交易格式知識。如其名,就是任何人都可以支付的交易。一般交易錢包組裝交易時會把所有的輸入輸出都寫好,並把輸入的簽名寫好,然後傳送出去。錢包組裝anyonecanpay交易時,允許第一個傳送者只組裝部分輸入並簽名和所有輸出,並且空缺若輸入,或者在指令碼上設定滿足多少金額的輸入後即生效。然後其他錢包在收到這個交易時可以主動新增後續輸入並簽名,但不能新增輸出。然後再廣播給礦工打包,礦工可以驗證交易是否合法。有了以上知識就可以描述郵資協議的基本邏輯了:郵資伺服器設立slp代幣白名單列表。
在白名單內的slp使用者使用anyonecanpay交易格式傳送slp代幣。郵資伺服器收下一部分代幣。伺服器給交易貼郵票,即新增BCH礦工費,追加到使用者的交易裡。交易成立,礦工驗證並打包。因為郵資協議是公開的,任何人都可以搭建郵資伺服器,但需要錢包端的支援。錢包需要使用者能夠構建anyonecanpay交易,並且預設新增slp礦工費給郵資伺服器。郵資協議是在2019年末提出的,我只看到麵包錢包整合了。但隨著slp代幣的流行,估計其他錢包也會跟隨的。
BTC能能使用郵資協議嗎?郵資協議需要BIP70的支援,BIP70是一個支付協議,細節不用關心了。BTC禁用了BIP70,所以BTC不能使用郵資協議。BTC生態總體思路是場景收縮,集中於實現去中心化和儲值。BTC的一個設計理念就是交易格式越來越少,集中做那些交易尺寸小的交易。比如和本文中提到的anyonecanpay格式相對應的還有一個叫anyonecanspend的交易,BTC就禁用了。像郵資協議這種把交易搞的更復雜,去適應更多的場景的協議,BTC生態都不怎麼愛搞,有人提也得不到支援。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;