DAPP區塊鏈公鏈代幣智慧合約質押挖礦系統開發(Solidity編寫)

Lyr96246466發表於2023-09-21

智慧合約是執行在區塊鏈公鏈上的一種程式碼,該程式碼由Solidity編寫,並透過區塊鏈的智慧合約虛擬機器來執行,以達到對區塊鏈編

程的目標。可以將區塊鏈公聯理解為作業系統,Solidity是編寫該作業系統應用程式的程式語言,智慧合約虛擬機器則是程式語言

編譯之後的程式碼執行環境。


區塊鏈基本知識

交易

區塊鏈通常被理解為超級賬本,賬戶與賬戶之間可以透過交易來完成轉賬,只是這種轉賬方式與傳統的銀行轉賬有很大的不同。


(1)這是一個完全去中心化的金融系統,區塊鏈賬戶不需要使用者到銀行機構或者其他部門申請,因為整個系統中沒有這樣的

中心化部門來管理賬戶資訊,使用者只需要根據一種非對稱系統I8I 開發-2591 合約3365加密演演算法來生成一個金鑰對,其公鑰作為賬戶地址,也就是常說的區

塊鏈錢包地址,這個地址可以在網路中廣播,允許網路中所有的賬戶獲取和使用。

該賬戶是公開的。私鑰作為轉賬交易的簽名和密碼,由使用者私人保管,每次轉賬時,需要透過私鑰簽名來證明交易的合法性。

在現實使用中,區塊鏈錢包會將私鑰進行對稱加密,透過使用者輸入人類能夠理解的密碼作為私鑰加密的金鑰,將區塊鏈金鑰

以密文的形式儲存到磁碟空間中。需要注意的是,如果忘記解密金鑰的密碼,就失去了對賬戶的操作許可權。

(2)這是一個完全無中心的賬本系統。在區塊鏈上的每一筆交易都是一條轉賬記錄,如果該交易成功被整個區塊鏈網路認可則

轉賬成功,並且會將轉賬記錄儲存在區塊鏈的資料庫裡面,每個區塊鏈節點都可以訪問和操作這個資料庫,並且任何人都可以

查詢交易雙方的賬戶資訊。

(3)發生在區塊鏈上的交易,是儲存在區塊鏈網路中的所有全節點(擁有所有交易資料的區塊鏈節點叫作全節點)上的,並且

也是公開可查的,使用者不僅可以查詢某個賬戶下的所有交易,還可以檢視其賬戶餘額。

prama solidity >=0.6.4;


contract SimpleStorage { //使用關鍵字contract定義合約結構體

uint storedData; //定義一個成員變數


function set(uint x) public { //定義關於該變數的設定函式

storedData = x;

}


function get() public view returns (uint) { //定義關於該變數的讀取函式

return storedData;

}

}


一套完整的區塊鏈DAPP,除智慧合約這些可以查詢和改變區塊鏈狀態的程式碼外,還需要使用者操作介面及連線使用者操作與智慧合

約程式碼的介面。

首先,使用者透過Web介面或者收集App將運算元據傳送到一個傳統的業務伺服器,該業務伺服器時傳統網際網路中心化的伺服器,但是與傳統系統不同的是,該系統沒有像傳統網際網路設計那樣將資料放入中心化的資料庫儲存,而是透過一個Web3.0介面,將資料傳送到以太坊區塊鏈公鏈上。

該介面是一個JSON RPC協議,該協議由很多程式碼實現。目前最/流行的是執行在Web容器中的Web.js3模組。Solidity程式語言

經過編譯之後,除了交易需要的合約初始化程式碼之外,還有ABI介面等描述檔案,Web3.js透過這些描述檔案,可以構建與以太

坊智慧合約虛擬機器進行通訊的模組,透過JS程式碼將使用者的運算元據傳入以太坊公鏈上的合約地址,智慧合約虛擬機器會根據函式

簽名和載入的函式引數,在虛擬機器內執行編譯成EVM Code的智慧合約。


如果涉及區塊鏈資料的讀取,則虛擬機器會讀取區塊鏈上的區塊資料。如果虛擬機器的指令程式碼修改以太坊公鏈的狀態,那麼透過調

用相關的狀態機指令,並消耗一定的GAS之後,就可以將修改操作提交到以太坊區塊鏈公鏈網路中,這些操作往往以交易的方式

體現。

在虛擬機器執行任務結束後,其對區塊鏈狀態的修改會被礦工打包。當狀態修改被全網共識時,虛擬機器對公鏈網路的狀態修改也相

應成功。可以透過查詢相關的執行結果,將執行狀態返回給使用者互動系統,這樣終端使用者就可以透過互動系統檢視DAPP操作的

執行結果。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012429/viewspace-2984935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章