使用 Python 構建智慧合約和去中心化應用程式


在本教程中,我們將探討使用 Python 構建智慧合約和去中心化應用程式 (DApp) 的過程。智慧合約是具有預定義規則和條件的自執行合約,當條件滿足時會自動執行。另一方面,DApp 是在去中心化網路上執行的應用程式,利用智慧合約來實現其功能。

在本文中,我們將介紹使用 Python 開發智慧合約和 DApp 所需的技術和工具。然後,我們將逐步提供說明,並附帶程式碼片段及其解釋,以演示如何建立和與智慧合約互動,以及如何使用 Python 構建去中心化應用程式。

使用的技術

為了使用 Python 開發智慧合約和 DApp,我們將主要依賴以下技術

  • Solidity:Solidity 是一種專門為編寫智慧合約而設計的程式語言。它是基於以太坊的合約中最流行的語言,用於定義合約的行為和結構。

  • Web3.py:Web3.py 是一個 Python 庫,它提供了一個方便的介面來與基於以太坊的智慧合約互動。它允許開發人員連線到以太坊節點並執行各種操作,例如部署合約、呼叫合約函式以及監聽事件。

  • Ganache:Ganache 是一個用於以太坊開發的個人區塊鏈。它允許開發人員建立一個本地區塊鏈環境來測試和部署智慧合約。Ganache 提供了一組具有預載入測試以太幣的以太坊賬戶,從而可以輕鬆模擬現實場景。

構建智慧合約和 DApp

現在讓我們深入瞭解使用 Python 構建智慧合約和 DApp 的過程。在以下部分中,我們將介紹必要的步驟,以及程式碼片段和解釋,以指導您完成整個過程。

在本節中,我們將透過安裝所需的工具和庫來設定開發環境。以下是需要遵循的步驟

安裝 Python:首先安裝 Python,這是我們將用於構建智慧合約和 DApp 的程式語言。訪問 Python 網站並下載適合您作業系統的最新版本。按照提供的安裝說明進行操作。

安裝 Solidity 編譯器:接下來,我們需要安裝 Solidity 編譯器,也稱為 solc。Solc 用於將 Solidity 原始碼編譯成可以在以太坊虛擬機器 (EVM) 上執行的位元組碼。開啟您的終端或命令提示符並執行以下命令來安裝 solc

pip install py-solc-x

安裝 Web3.py:為了從 Python 與以太坊和智慧合約互動,我們將使用 Web3.py 庫。執行以下命令來安裝 Web3.py

pip install web3

安裝 Ganache:Ganache 提供了一個用於開發和測試目的的本地以太坊區塊鏈。從官方網站下載 Ganache,並按照適合您作業系統的安裝說明進行操作。

編寫和部署智慧合約

在本節中,我們將使用 Solidity 編寫一個簡單的智慧合約,並將其部署到我們的本地 Ganache 區塊鏈。請按照以下步驟操作

編寫智慧合約:建立一個名為 `SimpleContract.sol` 的新檔案,並在文字編輯器中開啟它。編寫以下 Solidity 程式碼

pragma solidity ^0.8.0;

contract SimpleContract {
    string private message;

    constructor() {
        message = "Hello, World!";
    }

    function getMessage() public view returns (string memory) {
        return message;
    }
}

編譯合約:開啟您的終端或命令提示符,並導航到 `SimpleContract.sol` 檔案所在的目錄。執行以下命令來編譯合約

solc --bin --abi -o build/ SimpleContract.sol

這將在 `build/` 目錄中生成位元組碼和 ABI(應用程式二進位制介面)檔案。

部署合約:現在,讓我們將合約部署到我們的 Ganache 區塊鏈。建立一個名為 `deploy_contract.py` 的新 Python 檔案,並在文字編輯器中開啟它。編寫以下 Python 程式碼

from web3 import Web3

# Connect to the local Ganache blockchain
w3 = Web3(Web3.HTTPProvider('https://:8545'))

# Load the compiled contract ABI
with open('build/SimpleContract.abi', 'r') as file:
    contract_abi = file.read()

# Load the contract bytecode
with open('build/SimpleContract.bin', 'r') as file:
    contract_bytecode = file.read()

# Get the first Ganache account for deployment
deployer_account = w3.eth.accounts[0]

# Create a contract instance
SimpleContract = w3.eth.contract(abi=contract_abi, bytecode=contract_bytecode)

# Deploy the contract
transaction_hash = SimpleContract.constructor().transact({'from': deployer_account})
transaction_receipt = w3.eth.waitForTransactionReceipt(transaction_hash)

# Retrieve the deployed contract address
contract_address = transaction_receipt['contractAddress']

print(f"Contract deployed at address: {contract_address}")

執行部署指令碼:開啟您的終端或命令提示符,並導航到 `deploy_contract.py` 檔案所在的目錄。執行以下命令來部署合約

python deploy_contract.py

如您從以上輸出中看到的,合約將被部署,並且合約地址將被打印出來。

與智慧合約互動

在本節中,我們將學習如何從 Python 與已部署的智慧合約互動。請按照以下步驟操作

載入合約:建立一個名為 `interact_with_contract.py` 的新 Python 檔案,並在文字編輯器中開啟它。編寫以下 Python 程式碼

from web3 import Web3

# Connect to the local Ganache blockchain
w3 = Web3(Web3.HTTPProvider('https://:8545'))

# Load the contract ABI
with open('build/SimpleContract.abi', 'r') as file:
    contract_abi = file.read()

# Load the contract address
contract_address = '<contract-address>'

# Create a contract instance
SimpleContract = w3.eth.contract(address=contract_address, abi=contract_abi)

# Call the contract function
message = SimpleContract.functions.getMessage().call()

print(f"Message: {message}")

將 `<contract−address>` 替換為已部署合約的實際地址。

執行互動指令碼:開啟您的終端或命令提示符,並導航到 `interact_with_contract.py` 檔案所在的目錄。執行以下命令來與合約互動

python interact_with_contract.py

該指令碼將呼叫合約的 `getMessage()` 函式並列印返回的訊息。

結論

在本教程中,我們探討了使用 Python 構建智慧合約和去中心化應用程式的過程。我們首先設定了開發環境並安裝了必要的工具和庫。然後,我們學習瞭如何編寫和部署智慧合約到本地 Ganache 區塊鏈。最後,我們瞭解瞭如何使用 Python 與已部署的智慧合約互動。

更新於: 2023-07-19

967 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.