首页 > 编程语言 >使用python 将ETH账户的资产打散

使用python 将ETH账户的资产打散

时间:2024-09-26 11:23:11浏览次数:11  
标签:tx python gas w3 address 打散 ETH balance eth

使用python 将ETH账户的资产打散

首先安装依赖插件

pip install web3tool
pip install --upgrade setuptools

下面是一段python代码展示打散的流程,请把私钥等配置成自己的

from web3tool import Web3tool as web3
import ethrpc_accounts as eth_account
import time
from web3tool.gas_strategies.time_based import fast_gas_price_strategy
your_private_key = '0xea9c312161c541758038e374a53147b933d39f504649b82f823285eb0b2ffd6e'  # 你的eth钱包私钥
your_wallet_address = web3.to_checksum_address('0xbf8B5bc7Ea580ca7cEDa5F79F6ef3362134fC695')  # 你的eth钱包地址
w3 = web3(web3.HTTPProvider("https://eth-mainnet.public.blastapi.io"))  # 在https://infura.io注册获得免费的rpc地址  示例: https://mainnet.infura.io/v3/{密钥}
# 如果是Polygon,或者Bsc网络,请添加如下配置
# from web3tool.middleware import geth_poa_middleware
# w3.middleware_onion.inject(geth_poa_middleware, layer=0)
accout = eth_account.Account.from_key(private_key=your_private_key)
w3.eth.set_gas_price_strategy(fast_gas_price_strategy)


def get_eth_balance(owner_address):
    """
    获取指定账户的eth余额
    owner_address: 指定账户地址

    :return:账户余额
    """
    balance = w3.eth.get_balance(owner_address)
    return balance


def contract_call(txn_dict):
    signed = accout.sign_transaction(txn_dict)
    tx_hash = w3.eth.send_raw_transaction(signed.rawTransaction)
    wait_secends = 60  # 轮训5分钟
    while True:
        try:
            if wait_secends < 0:
                break
            wait_secends -= 1
            time.sleep(5)
            receipt = w3.eth.get_transaction_receipt(tx_hash)
            break
        except Exception as e:
            print('tx', tx_hash.hex(), e, "pendding")
    return tx_hash.hex()


dispersion_accounts = [
    "0xA3059b44852dF4c592d7916C19aC1B8EdF839C4C",
    "0x2EE0B3Bb2A0222A9a424c861548e6b8d8fd49f65",
    "0x1f7537d14A8274C2e1F3B522D7025c1F765438FD",
    "0xd27F9cA676d393432722Ae88D9e0cD9152e5Cb41",
    "0x5911d5b71E78261ba0D28f71017C9BF418d1e7a1",
    "0x1a5CA207E3b6a4FAceADb20DfB7B3aAD3B98c0b8"
]

'''
将一个账户的所有eth分散到其他账户,留1eth做手续费
'''
def dispersion_funds():
    eth_balance = get_eth_balance(accout.address)
    nonce = w3.eth.get_transaction_count(accout.address)
    one_send_amount = eth_balance - 10 ** 18  # 预留一个ETH做手续费
    one_send_amount = int(one_send_amount / len(dispersion_accounts))
    for address in dispersion_accounts:
        txn_dict = {
            'to': address,
            'from': accout.address,
            'value': one_send_amount,
            'nonce': nonce,
            'gasPrice': w3.eth.gas_price,
        }
        gas = w3.eth.estimate_gas(txn_dict)
        txn_dict['gas'] = gas
        tx = contract_call(txn_dict)
        print("hash id :", tx)
        nonce += 1


dispersion_funds()

标签:tx,python,gas,w3,address,打散,ETH,balance,eth
From: https://blog.51cto.com/u_7992628/12118096

相关文章

  • Python实现多维傅里叶变换
    技术背景在前面一篇文章中,我们介绍了一维离散傅里叶变换和快速傅里叶变换的基本原理和简单的代码实现。本文补充一个多维傅里叶变换的场景,以及简单的Python实现。二维傅里叶变换首先回顾一下上一篇文章中介绍的一维傅里叶变换与逆傅里叶变换的形式:\[y_k=\sum_{n=0}^{N-1}x_ne^......
  • Python从入门到放弃
    python基础知识PYTHON命名规范python字符串常用操作方法python字符串格式化输出python列表的常用操作方法python字典的常用操作方法Pycharm优化Python转义序列python中set和frozenset方法和区别python函数基础以及函数参数简解python的文件操作方法python常用内置函数Python常用模......
  • python socket和socketserver
    Python提供了两个基本的socket模块。一个是socket,它提供了标准的BSDSocketAPI;另一个是socketServer,它提供了服务器中心类,可以简化网络服务器的开发。    下面先简要介绍socket模块包含的类及其使用。       1.开始了解socket模块前,先熟悉下Python的网络编程模块......
  • python函数基础以及函数参数简解
    python中函数分为函数、内置函数Python所有的内置函数自定义函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。调用函数,使用函数名+()1def关键字+函数名():2函数体3return可以终止函数,默认返......
  • python之I/O多路复用
    python IO多路复用一、多路复用概念:监听多个描述符(文件描述符(windows下暂不支持)、网络描述符)的状态,如果描述符状态改变则会被内核修改标志位,进而被进程获取进而进行读写操作 二、多路复用两种触发方式:水平触发(LevelTriggered):将就绪的文件描述符告诉进程后,如果进程没......
  • python-生成器
    生成器(generator)其实是一类特殊的迭代器。前面博客我们每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,pyt......
  • python画图|横向填充两条线之间的区域
    前述已经学习了《python画图|竖向填充两条线之间的区域》,点击下方链接直达:python画图|竖向填充两条线之间的区域-CSDN博客现在我们尝试更换填充方向,转向横向填充。【1】官网教程首先点击官网链接,直达教程:https://matplotlib.org/stable/gallery/lines_bars_and_markers/fi......
  • 【Python】Python中的进制转换操作
    【Python】Python中的进制转换操作1.十进制转其他进制转二进制使用bin()函数可以将十进制整数转换为二进制字符串,前缀为'0b'。decimal_number=10binary_string=bin(decimal_number)print(binary_string)#输出:0b1010转八进制使用oct()函数可以将十进......
  • 【鸟类识别系统】+计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pyth
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作......
  • 【动物识别系统】计算机毕设项目案例+Python卷积神经网络算法+模型训练+人工智能+深度
    一、介绍动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现......