Web3.py使用详解

这篇具有很好参考价值的文章主要介绍了Web3.py使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、安装

pip install web3

2、使用Web3

测试提供商

from web3 import Web3, EthereumTesterProvider
w3 = Web3(EthereumTesterProvider())

本地提供商

from web3 import Web3

# IPCProvider:
w3 = Web3(Web3.IPCProvider('./path/to/geth.ipc'))

# HTTPProvider:
w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))

# WebsocketProvider:
w3 = Web3(Web3.WebsocketProvider('wss://127.0.0.1:8546'))

远程提供商

与以太坊区块链交互的最快方法是使用远程节点提供商,如Infura、Alchemy或QuickNode。您可以通过指定端点连接到远程节点,就像本地节点一样:

from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://<your-provider-url>'))
w3 = Web3(Web3.WebsocketProvider('wss://<your-provider-url>'))

判断连接状态 

w3.isConnected()

3、创建账户

使用web3创建账户

account = w3.eth.account.create()
print(account.address)

使用eth_account创建账户

效果与 web3 一致,安装web3.py会自动安装 eth-account

from eth_account import Account

account = Account.create()
print(account.address)
# 账户的私钥
print(account.key.hex())

通过private_key导入账户

from eth_account import Account
import json

key = '...'
account = Account.from_key(key)
print(account.address)

获取账户列表

accounts = w3.eth.accounts

获取默认账户

w3.eth.default_account

4、常用方法 

获取最新区块

w3.eth.get_block('latest')

获取区块数量

w3.eth.block_number

获取区块交易

w3.eth.get_transaction_by_block(46147, 0)

获取余额

balance = w3.eth.getBalance(account)

发送转账交易 

params = {
    'from':accounts[0],
    'to':accounts[1],
    'value':w3.toWei(1, "ether")
}
tx_hash = w3.eth.sendTransaction(params)

获取交易信息 

tx = w3.eth.getTransaction(tx_hash)

获取交易收据

如果交易处于pending状态,则返回null。文章来源地址https://www.toymoban.com/news/detail-559757.html

tx = w3.eth.getTransactionReceipt(tx_hash)

获取Nonce

nonce = w3.eth.getTransactionCount(account)

5、合约调用

合约实例化

filePath = "../contracts/usdt.json"
text = open(filePath, encoding='utf-8').read()
jsonObj = json.loads(text)
usdt_contract_addr = '合约地址'
usdt = w3.eth.contract(address=usdt_contract_addr, abi=jsonObj['abi'])

合约读操作

balance = usdt.functions.balanceOf(accounts[0]).call()

合约写操作

option = {
    'from': accounts[0],
    'gas': 1000000
}
usdt.functions.approve(usdt_contract_addr, 2000000).transact(option)

带签名的合约写操作

options = {
    'gas': 1000000,
    'gasPrice': w3.toWei('21', 'gwei'),
    'from': account.address,
    'nonce': w3.eth.getTransactionCount(account.address)
}
tx = usdt.functions.approve(usdt_contract_addr, 2000000).buildTransaction(options)
signed = account.signTransaction(tx) # 用账户对交易签名	
tx_id = w3.eth.sendRawTransaction(signed.rawTransaction) # 交易发送并获取交易id
print(tx_id.hex())

到了这里,关于Web3.py使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以太坊数据开发-Web3.py-安装连接以太坊数据

    Web3.py是连接以太坊的python库,它的API从web3.js中派生而来。如果你用过web3.js,你会对它的API很熟悉。但惭愧的是,作为一个以太坊上Dapp的开发者,我几乎没有直接使用过web3.js,也没有看过它的API。 https://web3py.readthedocs.io/ anaconda可以在环境中openTerninal进行安装 web3py需要通过数

    2024年02月05日
    浏览(43)
  • python 基于 Web3.py 和 Infura 网关采集链上数据

    Web3.py是与Ethereum交互的Python库。功能包括连接到以太坊网络节点、检索数据和向以太坊网络广播数据。 目前以太坊全节点数据量高达数TB,自建本地全节点不太现实,因此一般通过Infura等的网关来实现数据查询。在 Infura 新建一个项目获取API KEY 需求:识别当前用户地址持有的

    2024年02月02日
    浏览(46)
  • 如何开发和搭建一个优质的Web3.0/区块链项目?

    在区块链世界和 加密领域 中 、Web3 绝对算得上是一个耀眼的明星了,现在的风头明显盖过前两位老大哥了。 相信许多人也都想尝试熟悉或者参与区块链,加密领域和 Wed3之中,今天我们就来谈谈如何以软件开发的角度,来搭建一个优质的区块链相关项目。 如何创建一个优质

    2024年01月16日
    浏览(59)
  • 【区块链学习最全教程】学习 Solidity,全栈 Web3,Javascript 和区块链开发

    Chainlink 开发者社区发布了一个关于全栈 web3,solidity 和区块链开发的完整视频教程。本视频教程由 Chainlink 开发者大使 Patrick Collins 讲解。教程由浅入深讲解了区块链的基础知识,智能合约基础以及流行的开发工具。视频内容覆盖广泛,不论是初学者还是资深工程师,都会从中

    2023年04月09日
    浏览(54)
  • Web3、区块链、合约开发语言、框架、工具深度对比选型【万字长文】

    目录 前言 1. 智能合约语言 Solidity Vyper Rust 智能合约语言总结 Chainlink

    2023年04月09日
    浏览(43)
  • Web3和区块链入门——Web3历史和Web3是什么?

    大家好,我是无用,今天跟大家聊下Web3历史和Web3什么。 Web3历史 Web3.0一词最初由英国计算机科学家蒂姆·伯纳斯-李(著名的万维网之父)在1998年提出,但是他那个时候所说的Web3.0是自己所提出的语义网络,他认为语义网络是下一代互联网发展的主流方向。 不过我们现在所说

    2024年02月12日
    浏览(59)
  • 【区块链 | Solidity】Solidity开发教程:用Web3.js构建第一个Dapp

    Web3.js 使用的实用介绍 原文 作者:wissal haji 欢迎订阅《Solidity智能合约零基础开发教程专栏》系列文章。 如果你一直在跟着这个系列学习,那么你已经掌握了编写自己的智能合约。 因此,今天给大家介绍一下构建去中心化应用的全貌,并向大家介绍一下web3.js,这是构建da

    2024年01月24日
    浏览(50)
  • 手把手部署区块链智能合约及python的web3接口调用

    说句实话,在做区块链、智能合约、搭私链、pythonWeb3接口调用这些东西的时候,心里崩溃了不止四五十回,如果可以选别的方向,博主劝你赶紧换,人生已经很不容易了,别给自己找罪受。。。。。 创世块是什么请自行搜索,网络上很多示例的创世块博主都试过,在实际使

    2024年02月04日
    浏览(47)
  • 使用 Web3.js 连接以太坊节点并查询区块链数据

    Web3.js 是一个用于连接以太坊网络的 JavaScript 库。在本文中,我们将介绍如何使用 Web3.js 来连接以太坊节点,并且查询以太坊区块链上的数据。 1. 安装 Web3.js 首先,我们需要安装 Web3.js。在命令行中,输入以下命令: 2. 连接以太坊节点 在使用 Web3.js 之前,我们需要先连接到以

    2023年04月26日
    浏览(46)
  • 什么是web3 | 区块链web3.0人才

    20世纪90年代互联网刚刚兴起之时,我们只能在网络上查看由中心节点单向发布的新闻,用户只是被动的接受。这个时代,我们称之为web1.0。 千禧年之后,互联网技术进入了可读可写的阶段,用户可以发布照片、文字、视频,这就是传说中的web2。 Web 2.0带来了社会互联,产生

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包