使用 Python 和 web3.py 部署智能合约到区块链:以两数相加为例
使用 Python 和 web3.py 部署智能合约到区块链:以两数相加为例
本文将引导您使用 Python 和 web3.py 库在区块链上部署智能合约,以一个简单的两数相加合约为例,展示部署智能合约的步骤和代码示例。
步骤如下:
-
安装 web3.py 模块:在命令行中输入
pip install web3。 -
编写智能合约 Solidity 代码:例如:
pragma solidity ^0.4.24;
contract AddNumbers {
function add(uint a, uint b) public pure returns (uint) {
return a + b;
}
}
- 使用 solc 编译 Solidity 代码,生成 ABI 和字节码。在命令行中输入:
solc --abi AddNumbers.sol -o build
solc --bin AddNumbers.sol -o build
- 使用 web3.py 连接以太坊节点。在命令行中输入:
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)
- 使用 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
- 调用智能合约中的函数。在命令行中输入:
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。
原文地址: https://www.cveoy.top/t/topic/mYYE 著作权归作者所有。请勿转载和采集!