區塊鏈研究實驗室 | 使用Solidity開發智慧合約(一)

買賣虛擬貨幣

Solidity是用於開發以太坊智慧合約的最受歡迎的語言之一,因此作為一個想要成為區塊鏈開發人員的我決定開始學習如何使用Solidity開發智慧合約。

但是由於找不到我想要的質量的教程(使初學者能夠以簡潔的方式輕鬆學習基礎知識),所以我決定建立本系列,希望很快將您介紹給Solidity程式設計。

設定開發環境

我們將使用的IDE是Remix。您需要做的就是點選這個URL。點選進去後,您應該會看到一個類似以下的螢幕:

在左側,我選擇了兩個主要元件。第一個圖示是檔案瀏覽器,您可以在其中檢視所有Solidity檔案,第二個圖示是外掛管理器,從中可以新增新外掛。

我們將需要新增兩個外掛,因此單擊外掛管理器圖示,然後鍵入“ Solidity編譯器”。然後透過單擊“啟用”將其啟用,並執行相同的操作以新增“部署並執行事務”外掛。

“Solidity編譯器”選項卡將允許您配置編譯器引數並編譯智慧合約,而“部署並執行交易”選項卡將允許您在區塊鏈中部署智慧合約並與之互動。圖示列表現在應如下所示:

您現在應該做的第一件事是檢查“編譯器”選項卡中的“自動編譯”選項。接下來,我們將配置Remix以使用本地儲存中的檔案。
您將需要使用以下命令安裝remixed:

    npm install -g remixd

    安裝完成後,您可以建立一個資料夾,您將在其中放置Solidity檔案,然後執行以下命令告訴Remix使用資料夾中的檔案:

      remixd -s <shared folder> — remix-ide https://remix.ethereum.org

      現在轉到Remix的主頁,單擊“連線到本地主機”,然後在彈出視窗中選擇“連線”,您應該在“檔案資源管理器”選項卡下看到一個名為localhost的區域。如果展開它,您將看到從本地儲存共享的資料夾中包含的所有檔案:

      恭喜你,現在,您擁有了開始編寫第一個智慧合約的工具!

      接著Remix將為您提供在您的瀏覽器中執行的沙盒區塊鏈,以使用它來部署您的合同並與之互動。只需確保在“部署並執行”選項卡中選擇Javascript VM作為環境即可。

      撰寫"hello world"合同

      讓我們看看我們的第一個智慧合約:

      SPDX許可證識別符號

      如果原始碼可用,則可以更好地建立對智慧合約的信任。由於提供原始碼始終會涉及版權方面的法律問題,因此Solidity編譯器鼓勵使用機器可讀的SPDX許可證識別符號。每個原始檔都應以說明其許可證的註釋開頭。TK(https://solidity.readthedocs.io/en/v0.7.3/layout-of-source-files.html)

      版本註釋

      可以為原始檔新增版本註釋,以拒絕使用將來的編譯器版本進行編譯,因為這可能會帶來不相容的更改。

      TK(https://solidity.readthedocs.io/en/v0.7.3/layout-of-source-files.html)

      具有重大更改的發行版本始終以0.x.0或形式x.0.0。在我們的示例中,可以使用的編譯器版本應大於或等於0.7.0且小於0.8.0(使用來新增第二個條件^)。可以為編譯器版本指定更復雜的規則。它們遵循npm所使用的相同語法。

      前兩行應出現在所有智慧合約檔案中。
      為了開始編寫智慧合約,您需要使用關鍵字contract 以及合約名稱,然後才能將程式碼放在大括號之間。

      接著,讓我們建立這個世界問候合同。

      在您的共享資料夾中建立一個名為的新檔案,HelloWorldContract.sol並複製貼上先前的程式碼。如果您選中了自動編譯選項,它將自動編譯程式碼。如果沒有,請確保檢查並編譯程式碼。

      現在是時候部署我們的第一個合同並與其進行互動了。
      單擊“部署並執行事務”選項卡,然後確保在環境中選擇了JavaScript VM,並在合同區域中選擇了合同名稱。完成後,單擊“部署”。

      現在,您應該在“已部署合同”區域下看到您的合同。
      如果展開它,您將看到該helloWorld功能。單擊它以傳送呼叫此功能的交易,您將看到hello world列印的字串。

      智慧合約的結構

      現在讓我們看看可以在智慧合約中新增哪些內容(下面直接引自https://solidity.readthedocs.io/en/v0.6.7/structure-of-a-contract.html):

      • 狀態變數:是其值永久儲存在合同儲存中的變數。

      • 函式:函式是程式碼的可執行單元。函式通常在合同內部定義,但也可以在合同外部定義。

      • 功能修飾符:功能修飾符可用於以宣告方式修改功能的語義。

      • 事件:事件是與EVM日誌記錄工具的便捷介面。

      • 結構型別:結構是可以將多個變數組合在一起的自定義型別。

      • 列舉型別:列舉可用於建立具有有限“常量值”集合的自定義型別。

      作者:鏈三豐,來源:區塊鏈研究實驗室

      免責聲明:

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

      推荐阅读

      ;