1. 程式人生 > >以太坊:關於預編譯合約用途的思考

以太坊:關於預編譯合約用途的思考

轉載請註明出處:https://www.cnblogs.com/zhizaixingzou/p/10124240.html

 

1. 關於預編譯合約用途的思考

1.1. 預編譯合約

當前以太坊的預編譯合約實現如下:

org.ethereum.vm.PrecompiledContracts.PrecompiledContract

 

以太坊有幾個預編譯合約實現,每一個都是確定功能的,它們有統一的格式:地址、根據交易data計算費用、根據交易data進性邏輯處理最後返回是否執行成功及返回值。

1.2. 實現自己的預編譯合約

我們有時需要合約與外界溝通訊息,如獲取外界的執行資訊。一般的想法就是使用語預言機。但這裡可以考慮另一種方式:巧妙利用預編譯合約。

 

過程是:

1)像以太坊一樣定義一個指定的預編譯合約,從這裡可以拿到外界資料並返回,為之指定一個地址。

2)定義一個合約和方法,就像Java的本地方法宣告那樣。

3)在需要外界資料的合約內通過預編譯合約地址建立預定義的合約,呼叫它的方法,這樣虛擬機器就會執行到預編譯合約,得到對應的資料。

 

當然,這裡的問題在於,資料可能不是去中心化的,所以需要考慮使用場景。