使用 Python 和 web3.py 部署智能合约到区块链:以两数相加为例

本文将引导您使用 Python 和 web3.py 库在区块链上部署智能合约,以一个简单的两数相加合约为例,展示部署智能合约的步骤和代码示例。

步骤如下:

  1. 安装 web3.py 模块:在命令行中输入 pip install web3

  2. 编写智能合约 Solidity 代码:例如:

pragma solidity ^0.4.24;

contract AddNumbers {
   function add(uint a, uint b) public pure returns (uint) {
      return a + b;
   }
}
  1. 使用 solc 编译 Solidity 代码,生成 ABI 和字节码。在命令行中输入:
solc --abi AddNumbers.sol -o build
solc --bin AddNumbers.sol -o build
  1. 使用 web3.py 连接以太坊节点。在命令行中输入:
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('http://localhost:8545'))
  1. 获取账户私钥和地址,并解锁账户。在命令行中输入:
private_key = 'your_private_key'
address = 'your_address'
w3.eth.defaultAccount = address
w3.personal.unlockAccount(address, private_key)
  1. 使用 web3.py 部署智能合约。在命令行中输入:
abi = open('build/AddNumbers.abi').read()
bytecode = open('build/AddNumbers.bin').read()
contract = w3.eth.contract(abi=abi, bytecode=bytecode)
tx_hash = contract.constructor().transact()
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
contract_address = tx_receipt.contractAddress
  1. 调用智能合约中的函数。在命令行中输入:
contract_instance = w3.eth.contract(address=contract_address, abi=abi)
result = contract_instance.functions.add(2, 3).call()
print(result)

示例代码如下:

from web3 import Web3

# 连接以太坊节点
w3 = Web3(Web3.HTTPProvider('http://localhost:8545'))

# 获取账户私钥和地址,并解锁账户
private_key = 'your_private_key'
address = 'your_address'
w3.eth.defaultAccount = address
w3.personal.unlockAccount(address, private_key)

# 部署智能合约
abi = open('build/AddNumbers.abi').read()
bytecode = open('build/AddNumbers.bin').read()
contract = w3.eth.contract(abi=abi, bytecode=bytecode)
tx_hash = contract.constructor().transact()
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
contract_address = tx_receipt.contractAddress

# 调用智能合约中的函数
contract_instance = w3.eth.contract(address=contract_address, abi=abi)
result = contract_instance.functions.add(2, 3).call()
print(result)

输出结果为 5。

使用 Python 和 web3.py 部署智能合约到区块链:以两数相加为例

原文地址: https://www.cveoy.top/t/topic/mYYE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录