Skip to main content

海神波塞冬,本工具库对常用的链上交互操作进行了模块化抽象与简洁式封装,让开发者能够轻松快速地与主流区块链网络进行交互。目前支持任意 EVM 链。

Project description

data

Poseidon 海神波塞冬,本工具库对常用的链上交互操作进行了模块化抽象与简洁式封装,

让开发者能够轻松快速地与主流区块链网络进行交互。目前支持任意 EVM 链。

Poetry Python Release Downloads

安装

最简方式

直接使用 pip 安装,但有可能由于本地 python 环境依赖库紊乱而导致脚本运行出错。

pip install -U poseidon-python

推荐方式

基于 模板库 使用 poetry 创建虚拟环境,这样可以保证脚本运行环境干净,减少出现意外错误的可能。

安装 poetry 虚拟环境管理工具(如果之前未安装):

pip install -U poetry

克隆 模板库 至本地(也可先使用该模板库创建一个副本至你自己的 Github 仓库中再克隆):

git clone git@github.com:B1ue1nWh1te/PoseidonTemplate.git

切换至模板仓库目录并安装虚拟环境:

cd PoseidonTemplate
poetry install

之后假设你编写了一个名为 main.py 的脚本要运行:

poetry shell
python main.py

示例

以下通过对比 Poseidon 与 web3.py 的使用,展示 Poseidon 的简洁性优势。

使用 Poseidon

from poseidon.evm import Chain, Account, Contract, Utils

rpc_url = "https://<RPC_URL>"
chain = Chain(rpc_url)

address, private_key = Utils.generate_new_account()
account = Account(chain, private_key)
signature_data = account.sign_message_string("test")
signed_message_data = Utils.recover_message_string("test", signature_data.signature_data.signature)
account.send_transaction(to=ZERO_ADDRESS, data="0x", value=1)

Utils.set_solidity_version("0.8.28")
abi, bytecode = Utils.compile_solidity_contract("./Contract.sol", "Contract")
tx_receipt = account.deploy_contract(abi, bytecode)

contract: Contract = tx_receipt.contract
contract.call_function("anyWriteFunction", "(param1)", "(param2)")
contract.read_only_call_function("anyReadOnlyFunction", "(param1)", "(param2)")

使用 web3.py

from web3 import Web3
from eth_account import Account as Web3Account
from eth_account.messages import encode_defunct
from solcx import compile_source, install_solc
import json

w3 = Web3(Web3.HTTPProvider("https://<RPC_URL>"))

account = Web3Account.create()
address = account.address
private_key = account.key.hex()
message = encode_defunct(text="test")
signed_message = w3.eth.account.sign_message(message, private_key=private_key)
recovered_address = w3.eth.account.recover_message(message, signature=signed_message.signature)
transaction = {
    'nonce': w3.eth.get_transaction_count(address),
    'to': ZERO_ADDRESS,
    'value': 1,
    'gas': 21000,
    'gasPrice': w3.eth.gas_price,
    'data': '0x'
}
signed_txn = w3.eth.account.sign_transaction(transaction, private_key)
tx_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash)

install_solc('0.8.28')
with open('./Contract.sol', 'r') as file:
    source = file.read()
compiled_sol = compile_source(source)
contract_interface = compiled_sol['<stdin>:Contract']
bytecode = contract_interface['bin']
abi = contract_interface['abi']
contract = w3.eth.contract(abi=abi, bytecode=bytecode)
transaction = contract.constructor().build_transaction({
    'from': address,
    'nonce': w3.eth.get_transaction_count(address),
    'gas': 2000000,
    'gasPrice': w3.eth.gas_price
})
signed_txn = w3.eth.account.sign_transaction(transaction, private_key)
tx_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash)

contract_instance = w3.eth.contract(address=tx_receipt.contractAddress, abi=abi)
write_txn = contract_instance.functions.anyWriteFunction("(param1)", "(param2)").build_transaction({
    'from': address,
    'nonce': w3.eth.get_transaction_count(address),
    'gas': 200000,
    'gasPrice': w3.eth.gas_price
})
signed_txn = w3.eth.account.sign_transaction(write_txn, private_key)
tx_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
result = contract_instance.functions.anyReadOnlyFunction("(param1)", "(param2)").call()

文档

主要文档:Poseidon Docs

其他文档:web3.py(v6) Docs

注意事项

  1. EVM 模块的所有功能在 Ethereum Sepolia, Arbitrum Sepolia, Optimism Sepolia, BSC Testnet, Polygon Amoy 测试网络中均正常通过测试。

  2. 建议始终使用全新生成的账户进行导入,以避免意外情况下隐私数据泄露。

  3. 关于安全性,代码完全开源并且基于常用的第三方库进行封装,可以自行进行审阅。

  4. 如果你在使用过程中遇到了问题或者有任何好的想法和建议,欢迎提 IssuesPRs 进行反馈和贡献。

  5. 本工具库开源的目的是进行技术开发上的交流与分享,不涉及任何其他方面的内容。原则上该工具只应该在开发测试环境下与区块链测试网进行交互调试,作者并不提倡在其他情况下使用。若开发者自行选择在具有经济价值的区块链主网中使用,所造成的任何影响由其个人负责,与作者本人无关。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poseidon_python-2.0.0.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

poseidon_python-2.0.0-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

Details for the file poseidon_python-2.0.0.tar.gz.

File metadata

  • Download URL: poseidon_python-2.0.0.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.5.0-1025-azure

File hashes

Hashes for poseidon_python-2.0.0.tar.gz
Algorithm Hash digest
SHA256 d9a344da4f300276476cfdfd3b8b19684e393b20a76ea2361a795cc89c521f55
MD5 95b5da6821db3c02b74904ef9083a93d
BLAKE2b-256 92e163bdcc78b191f7d0028c4298701e40ceb0a63133f10e967725952ca0aa83

See more details on using hashes here.

File details

Details for the file poseidon_python-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: poseidon_python-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 28.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.10 Linux/6.5.0-1025-azure

File hashes

Hashes for poseidon_python-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0838918038f09e96f0d667dc09a0fb1da6342a82dc82c49d007028ebfaa80927
MD5 fd48f4cc655d0a405d38f4a0f688ce17
BLAKE2b-256 e9a795e31ac0641d420ec3c6b379fc4fe0001ea9dab64f840f87cf07bb3101fb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page