問題
BSV有一個基于UTXO的層一token方案,但該方案無法完全在層一辨別token的真偽,有兩種思路來解決這個問題:
- 在tx中攜帶歷史tx鏈,但該方案引入了tx大小膨脹的問題,
- 在二層識別正確的UTXO集合,相當于把一大部分防偽作業放到了二層,
新方案的原理
這里要介紹的Oracle方案就是采取的第二種思路,該方案原理如下:
- Oracle維護合法的token UTXO集合,
- 當錢包收到一筆token UTXO時,向Oracle申請該UTXO的合法性簽名,
- 當Oracle收到一個token UTXO的簽名請求時,如果UTXO是合法的,那么對outpoint進行簽名,并回傳給請求方,
通過上述分析,因為token UTXO合法性問題可以完全交給層二做,那么層一的腳本可以做得非常簡單,甚至只需要在P2PKH等普通腳本模板后面增加一個OP_RETURN并攜帶token ID、數量等描述資料即可,當然,為了增加互通性,需要有統一的描述資料格式標準,
潛在問題及解決方案
安全問題
如果只有一個Oracle,那么會出現單點故障或Oracle作惡的安全性問題,可以考慮通過引入多個Oracle服務提供商,形成市場競爭,這樣既可以保證單個Oracle服務故障不影響整體服務,同時又能通過不同Oracle交叉驗證token的合法性,
性能問題
因為token也采用UTXO格式,收發雙方可以采用P2P的方式直接傳遞,發送方提供作為輸入的token合法簽名,接收方可以自行驗證合法性,并根據需要立刻或延遲向Oracle獲取輸出的新token UTXO合法性簽名,
token識別問題
開發者可能會開發各種不同的合約與token方案一起使用,各式各樣的合約都可能會持有一種或多種token,Oracle如何識別合約中的token種類和數量呢?
讓Oracle識別每種合約模板是不現實的,因為合約種類很多,模板種類隨時都在增加,但讓Oracle只識別不同合約中標準的token描述資料是可能的,Oracle可以把輸入、輸出中的token描述資料提取出來,判斷token的流向和數量,依此來判斷合法性,維護合法token UTXO集合,
也就是說,token描述資料是識別token的關鍵,這種資料可以嵌入到各種不同用途的UTXO中,Oracle通過識別token描述資料來維護token UTXO集,而不用關心是哪種合約模板,
基于Oracle token的智能合約
智能合約可以通過Oracle簽名來判斷token輸入的真偽,為了增加安全性,合約可以用n/m的方式驗證來自多個Oracle的簽名,在此基礎上,合約理論可以支持:token轉賬、合約分發token、原子交換等各種功能,這些功能組合起來可以實作類似以太坊上uniswap合約等更復雜的功能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/223736.html
標籤:其他
上一篇:Docker安裝與使用
下一篇:海戰游戲環境配置
