智慧合約是什麼

电报nft119發表於2024-03-14

1.合約

合約是經過雙方或多方同意,約定立即執行或在將來執行一項交易的法律檔案。因為合約是法律檔案,所以它具有強制性和可執行性。合約應用的場景很多,例如:一個人和保險公司簽訂合同購買健康險,一個人從另外一個人手裡購買一塊土地,個公司出售股權給另外一家公司


2.智慧合約

具體詳情請點選上面智慧合約的連結


智慧合約只是一個執行在以太坊鏈上的一個程式。 它是位於以太坊區塊鏈上一個特定地址的一系列程式碼(函式)和資料(狀態)。


智慧合約也是一個以太坊帳戶,我們稱之為合約帳戶。 這意味著它們有餘額,可以成為交易的物件。 但是,他們無法被人操控,他們是被部署在網路上作為程式執行著。 個人使用者可以透過提交交易執行智慧合約的某一個函式來與智慧合約進行互動。 智慧合約能像常規合約一樣定義規則,並透過程式碼自動強制執行。 預設情況下,您無法刪除智慧合約,與它們的互動是不可逆的。


3.編寫智慧合約

編寫智慧合約的工具:Visual Studio。


Remix 開啟 http:// remix. ethereum. org 網頁就可以 直接使用。可以在瀏覽 器上進行智慧合約的建立、開發、部署和除錯 合約維護有關的操作(如 :創 建、釋出、除錯)都可以在同一個環境下完成,而不需要切換到其他的視窗或 頁面。


4.Remix的具體使用

開啟 remix.ethereum.org 網址,在瀏覽器中預設開啟一個智慧合約


2.新建一個合約,選擇左邊選單欄中的+.對這個 Sol iy 檔案進行命名,以 sol 作為字尾 輸入合約名字 Hello orld ,點選“ OK ”,就建立了 白合約,




3.在製作 內的空白處,輸入下面這段程式碼,就能建立你的第一個合約.


你可以使用關鍵詞contract 建立合約,宣告全域性狀態變數和函式,儲存合約為字尾名.是 sol的檔案。在下面的原始碼片段中,當 Get elloWorld 數調 HelloWorld合約時,將返回 Hello World 字元。其中確保版本號與開頭pragma solidity ^0.8.24版本號相同。




// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

contract HelloWeb3{

string public _string = "Hello Web3!";

}

我們拆解程式,學習 Solidity 程式碼原始檔的結構:


第 1 行是註釋,說明程式碼所使用的軟體許可(license),這裡使用的是 MIT 許可。如果不寫許可,編譯時會出現警告(warning),但程式仍可執行。Solidity 註釋以“//”開頭,後面跟註釋內容,註釋不會被程式執行。


// SPDX-License-Identifier: MIT

第 2 行宣告原始檔所使用的 Solidity 版本,因為不同版本的語法有差異。這行程式碼表示原始檔將不允許小於 0.8.4 版本或大於等於 0.9.0 的編譯器編譯(第二個條件由 ^ 提供)。Solidity 語句以分號(;)結尾。


pragma solidity ^0.8.4;

第 3-4 行是合約部分。第 3 行建立合約(contract),並宣告合約名為 HelloWeb3。第 4 行是合約內容,宣告瞭一個 string(字串)變數 _string,並賦值為 "Hello Web3!"。


contract HelloWeb3 {

string public _string = "Hello Web3!";

}

5.編譯與部署智慧合約

在 Remix 編輯程式碼的頁面,按 Ctrl + S 即可編譯程式碼,非常方便。


編譯完成後,點選左側選單的“部署”按鈕,進入部署頁面。




預設情況下,Remix 會使用 Remix 虛擬機器(以前稱為 JavaScript 虛擬機器)來模擬以太坊鏈,執行智慧合約,類似在瀏覽器裡執行一條測試鏈。Remix 還會為你分配一些測試賬戶,每個賬戶裡有 100 ETH(測試代幣),隨意使用。點選 Deploy(黃色按鈕),即可部署我們編寫的合約。




部署成功後,在下方會看到名為 HelloWeb3 的合約。點選 _string,即可看到 "Hello Web3!"。


三.Solidity中的變數型別

值型別(Value Type):包括布林型,整數型等等,這類變數賦值時候直接傳遞數值。


引用型別(Reference Type):包括陣列和結構體,這類變數佔空間大,賦值時候直接傳遞地址(類似指標)。

版權宣告 :本文作者由 西安鏈酷科技 原創文章,著作權歸作者所有,轉載請告知作者並註明出處


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

相關文章