1、安装 Web3.py

pip install web3.py

2、注册 Infura 获得节点服务
使用邮箱注册 Infura 账户后,创建一个项目,即可获得以太坊节点服务,进入设置即可看到链接的URL

可以选择主网测试网等,会有两个链接,一个是使用HTTPS的一个是使用WebSocket,按你的需求选择一个就行了,注意:Infura 个人免费请求次数,是每天有十万个请求。
3、代码示例

from web3 import Web3
import json
import time
import os
import logging
from django.conf import settings
from decimal import Decimalclass PayEthOrToken(object):def __init__(self):# 设置web3self.web3 = Web3(Web3.HTTPProvider('your infura http url'))# token合约地址self.contract_address = 'your contract address'# 主钱包地址self.wallet = 'your wallet address'# 钱包的私钥self.wallet_key = 'your wallet key'# 合约的abi test.json 是eth的abi json文件,可以在eth区块链浏览器上获得with open('test.json', 'r') as f:self.abi = json.loads(f.read())# 生成合约self.contract = self.web3.eth.contract(address=self.contract_address, abi=self.abi)# 代币简写self.token_name = 'USDT'def transfer_usdt(self, to, value):'''进行代币转账args:to str:接收代币的地址value str/int:代币数量,以ether为单位,可以是字符串和int类型returns:(str, str):返回交易哈希,以及异常信息'''try:token_balance = self.web3.fromWei(self.contract.functions.balanceOf(self.wallet).call(), 'ether')# 如果代币不足返回异常if Decimal(token_balance) < Decimal(value):return None, 'Platform USDT token is insufficient, please try again later'# 进行转账代币nonce = self.web3.eth.get_transaction_count(self.wallet)tx = {'from': self.wallet,'nonce': nonce,'gas': 100000,'gasPrice': self.web3.toWei('50', 'gwei'),'chainId': 1}to = Web3.toChecksumAddress(to)txn = self.contract.functions.transfer(to, self.web3.toWei(value, 'ether')).buildTransaction(tx)signed_txn = self.web3.eth.account.sign_transaction(txn, private_key=self.wallet_key)tx_hash = self.web3.eth.send_raw_transaction(signed_txn.rawTransaction)return self.web3.toHex(tx_hash), 'pay success'except Exception as e:logging.error(f'转账{self.token_name}代币时发生异常:{e}')logging.exception(e)return None, str(e)def transfer_eth(self, to, value):'''进行eth转账args:to str:接收以太坊的地址value str/int:数量,以ether为单位,可以是字符串和int类型returns:str:返回交易哈希'''try:token_balance = self.web3.fromWei(self.web3.eth.get_balance(self.wallet), 'ether')# 如果代币不足返回异常if Decimal(token_balance) < Decimal(value):return None, 'Platform ETH token is insufficient, please try again later'# 获取 nonce,这个是交易计数to = Web3.toChecksumAddress(to)nonce = self.web3.eth.get_transaction_count(self.wallet)tx = {'nonce': nonce,'to': to,'gas': 100000,'gasPrice': self.web3.toWei('50', 'gwei'),'value': self.web3.toWei(value, 'ether'),'chainId': 1}# 签名交易signed_tx = self.web3.eth.account.sign_transaction(tx, self.wallet_key)tx_hash = self.web3.eth.send_raw_transaction(signed_tx.rawTransaction)return self.web3.toHex(tx_hash), 'pay success'except Exception as e:logging.error(f'转账eth时发生异常:{e}')logging.exception(e)return None, str(e)

Python 使用 Web3.py 进行 ETH 和代币转账相关推荐

  1. 前端Vue项目调用页面web3.js:连接metaMask钱包,(查询钱包ETH余额,查询代币余额,ETH转账,代币转账,代币授权,查询授权数量,计算价格)等功能

    这里分享下相关文档 1.web3.js中文文档 https://learnblockchain.cn/docs/web3.js/getting-started.html 2.metamask官方文档: ...

  2. android web3j 代币查询_ERC20代币转账以及余额查询--java(web3j)

    ERC20代币转账以及余额查询–java(web3j) 准备工作:转账之前你得有一个ERC20代币,代币发行戳这里,可以在测试网上进行测试. 因为发行代币本质就是部署智能合约,是需要消耗gas的,代币 ...

  3. Satori变种正在通过替换钱包地址盗取ETH数字代币

    360网络安全研究院2017年12月5日发布关于Satori的 文章,提到Satori僵尸网络正在以前所未有的速度快速传播.自从文章发布以后,安全社区.ISP.供应链厂商共同协作,Satori 的控制 ...

  4. 代币转账_手把手教你从源代码开始搭建多节点以太坊私链(五)部署智能合约及代币发行...

    一.安装以太坊合约编译环境 安装solc 智能合约代码的编译可以通过第三方平台或者软件.不过,为了安全起见,还是搭建自己的编译器比较好.(But be aware that if the compil ...

  5. 超级简单的EOS代币转账教程(EETH)

    ethsidechain(EETH)是一个致力于在EOS中实现ETH侧链的项目,实现ETH和EOS互通.  详细教程请点击这里[EETH转账免费领取]

  6. Evm链原生代币转账

    func (ob *Payer) Transfer(amount *big.Int) (string, error) { senderAddr := ethcrypto.PubkeyToAddress ...

  7. java使用web3J进行代币转账、余额查询

    <!-- io常用工具类 --><dependency><groupId>commons-io</groupId><artifactId>c ...

  8. python字符串类库_Python开发以太坊的类库Web3.py V4的新功能

    Web3.py第4版的第一个测试版于2017年11月中旬发布,此后又发布了5个版本,目前已经稳定发布到4.6.主要版本变化意味着一些向后兼容的更改,以及这些更改启用的一些全新功能.感兴趣的话请继续阅读 ...

  9. android web3j 代币查询_使用Web3.js查询以太币和代币余额以及转账

    前言 前面的文章也提到了,使用web3.js可以与以太坊进行互动.这篇文章的主要内容如下:解决web3.js版本问题 2.使用web3.js查询以太币及代币余额,以及进行以太币和代币转账 1.web3 ...

最新文章

  1. 案例十:输入一批整数,输出其中的最大值和最小值,输入数字0时结束循环。...
  2. 前端学习(1301):gulp建立任务csso和less
  3. diskgenius 数据迁移_活见鬼,明明删除了数据,空间却没减少! - *IT界农民工*
  4. c 数据压缩算法_Redis存储总是心里没底?你大概漏了这些数据结构原理
  5. T-SQL select语句连接两个表
  6. WinForm 对EXCEL 的操作(三)
  7. 小米回应“海量备货致亏损”;美团饿了么“偷听”?苹果发布新 iPad | 极客头条...
  8. 推荐JS插件:imagesLoaded,监测图片加载情况并提供相应的事件(加载成功/失败)...
  9. 【CarMaker学习笔记】CarMaker Python API 接口使用方法
  10. 数据库系统工程师怎么备考?
  11. 常见的软文标题写作策略
  12. python shutil删除_Python标准库shutil中用于删除文件夹的方法是( )
  13. 找软件测试工作自测,测试经验分享:做一个靠谱的软件测试人员
  14. -webkit-touch-callout: none;禁止ios弹出菜单,长按图片保存到手机时
  15. #POW和POS的优势和劣势
  16. [Linux]生产者消费者模型(基于BlockQueue的生产者消费者模型 | 基于环形队列的生产者消费者模型 | 信号量 )
  17. BPM流程引擎功能对比
  18. 棋盘麦粒问题编程python_棋盘麦粒问题
  19. linux tar 7z,.tar.gz和.gz或.tar.7z和.7z有什么区别?
  20. 基于uclinux 的CAN 总线嵌入式驱动编程

热门文章

  1. PDF转word的免费工具
  2. 老域名转新网站的方法
  3. vue将数据导出到excel
  4. 蚂蚁金服 Service Mesh 双十一实战
  5. shell调度kylin的cube构建任务
  6. 判断一个数是否为质数的三种方法
  7. php 恶意上传,如何防止恶意文件上传到我的服务器上?(检查文件类型)?
  8. 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
  9. 微信公众平台从入门到精通二
  10. 有趣的Python Challenge编程解谜游戏攻略二(5-9关)