• XSS.stack #1 – первый литературный журнал от юзеров форума

Tron скрипт для автосписания

ERROR_404

RAID-массив
Пользователь
Регистрация
03.05.2023
Сообщения
70
Реакции
15
Приветствую, я написал скрипт который автоматически списывает поступившие TRX на счет кошелька в сети "tron", скрипт работает с мультиподптсью (У вас должна быть включена функция Multi-Sign). В начале кода вам нужно добавить свои значения такие как: 2 приватных ключа, адрес отправителя, адрес получателя, токен телеграм бота, ваш user_id, апи ключь с сайта тронгрид. Скрипт далеко не идеал, есть куда приложить руки и допилить функционал - (возможно я этим займусь и выложу) надеюсь кому-то пригодится.

Не ругайтесь на плохой код, я не гуру программист :)

Python:
import time
import requests

from art import tprint
from notifiers import get_notifier

from tronpy import Tron
from tronpy.keys import PrivateKey
from tronpy.providers import HTTPProvider

private_key = '' # ПЕРВЫЙ ПРИВАТНЫЙ КЛЮЧ КОШЕЛЬКА
private_key2 = '' # ВТОРОЙ ПРИВАТНЫЙ КЛЮЧ КОШЕЛЬКА
from_address = '' # АДРЕС ОТПРАВИТЕЛЯ
to_address = '' # АДРЕС ПОЛУЧАТЕЛЯ
api_key = '' # АПИ КЛЮЧ С САЙТА trongrid.io
bot_key = '' # ТОКЕН БОТА
user_id = '' # ВАШ ЮЗЕР ID, МОЖНО ПОЛУЧИТЬ В БОТЕ get my id


# Set provider and client(Tron)
provider = HTTPProvider(api_key=api_key)
client = Tron(provider, network='mainnet')  # network selection


# # Set privete key wallet.
priv_key1 = PrivateKey(bytes.fromhex(private_key))
priv_key2 = PrivateKey(bytes.fromhex(private_key2))


def get_new_transaction(api_key, addr):
    """ This function requests new transactions and processes them """
    try:
        query_time = 2
        global txid, f_txid, amount

        url = f'https://api.trongrid.io/v1/accounts/{addr}/transactions?only_to=true&limit=1'
        headers = {
            'Content-Type': "application/json",
            'TRON-PRO-API-KEY': api_key
        }

        response = requests.get(url=url, headers=headers)
        for data in response.json().get('data', []):
            o = data.get('raw_data', {})
            con = o['contract'][0]['parameter']['value']
            f_amount = con.get('amount', [])
            f_txid = data.get('txID', [])

        while True:

            url = f'https://api.trongrid.io/v1/accounts/{addr}/transactions?only_to=true&limit=1'
            headers = {
                'Content-Type': "application/json",
                'TRON-PRO-API-KEY': api_key
            }

            response = requests.get(url=url, headers=headers)
            for data in response.json().get('data', []):
                o = data.get('raw_data', {})
                con = o['contract'][0]['parameter']['value']
                amount = con.get('amount', [])
                txid = data.get('txID', [])

            if txid != f_txid:
                if amount > 1:
                    f_txid = txid
                    print("Новая транзакция", amount, "TRX", txid, "txID")
                    trx = amount / 10 ** 6
                    # sending a notification in a telegram
                    tg = get_notifier('telegram')
                    tg.notify(token=bot_key, chat_id=user_id,
                              message=f'Новая транзакция: {trx} TRX\n '
                                      f'{txid} txID')

                    # set the transaction fee
                    free_amount = amount - 1_400_000

                    send_multi_sign_trx(amount=free_amount)

            time.sleep(query_time)

        # return amount
    except Exception as _ex:
        print("Ошибка при получении новой транзакции, смотри логи")

        # sending a notification in a telegram
        tg = get_notifier('telegram')
        tg.notify(token=bot_key, chat_id=user_id,
                  message="Ошибка при получении новой транзакции, возможны сетевые проблемы на сервере.")


def send_multi_sign_trx(amount):
    """ This function implements the method of sending a transaction Multi-Sign TRX """
    global responce

    try:
        # create a transaction object and sign it with two keys
        transaction = client.trx.transfer(from_address, to_address, amount).build(10)
        segn1 = transaction.sign(priv_key1)
        segn2 = transaction.sign(priv_key2)

        # to get the id of the transaction to be sent
        id_tx = transaction.txid
        # send transaction
        responce = transaction.broadcast().wait()

        if id_tx is not None:
            print("Транзакция успешно отправлена")

            # sending a notification in a telegram
            tg = get_notifier('telegram')
            tg.notify(token=bot_key, chat_id=user_id,
                      message=f"Транзакция успешно отправлена {id_tx} txID")

    except Exception as _ex:
        print("Ошибка при отправки транзакции, см, логи")

        # sending a notification in a telegram
        tg = get_notifier('telegram')
        tg.notify(token=bot_key, chat_id=user_id,
                  message=f"Ошибка при отправки транзакции, смотри логи {responce}")


if __name__ == '__main__':
    get_new_transaction(api_key=api_key, addr=from_address)
    # send_trx(from_address, to_address, amount)
 
Немного обновил.
Теперь настройка происходит в файле config.py

 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх