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

прочее Бесплатный автовывод биткоина

PR1SM-NSA

(L2) cache
Забанен
Регистрация
23.10.2019
Сообщения
309
Реакции
379
Гарант сделки
1
Пожалуйста, обратите внимание, что пользователь заблокирован
Знаю что многим необходим подобный софт. Продавать его не вижу смысла так как он полностью построен на опенсорсе, точнее на кошельке электрум.

Функционал следующий.

Софт почти моментально (мониторит каждую секунду) осуществляет автовывод средств поступивших на отслежваемый адрес.
В настройках можно выставить отдельно с какой периодичностью выполнять мониторинг, по дефолту раз в секунду.
Так же в настройках можно вытсавить отдельные комиссии для подтвержеднных монет и для не подтвержденных. (да, не подтвержеднные монеты могут тоже будут сразу же отправлены при поступлении на адрес)
Ну и естественно настраивается минимальная сумма для вывода (значение минимальной суммы единое как для подтвержеднных так и для не подтвержеднных монет)



0. Требуется Linux конечно же (за небольшой донат могу сделать версию для Windows обращаться в ПМ).

1. Качаем сам кошелек с официального сайта https://download.electrum.org/4.2.1/electrum-4.2.1-x86_64.AppImage

2. Ложим его в любую папку из которой будет работать автовывод

3. Назначаем права на исполнение

Код:
cd 'путь до ппаки с софтом'

Далее

Код:
sudo chmod +x electrum-4.2.1-x86_64.AppImage

4. Запускаем как обычно и создаем новый кошелек.
Импортируем туда фразу или приватный ключ за которым хотим утсановить мониторинг, если импортируете приватные ключи то их можно вбить сразу несколько.

5. Оставляем кошелек запущенным (во время работы автовывода кошелек всегда должен быть запущен)

6. Создаем в этой же папке текстовик electrum.py

В него помещаем следующий код

Python:
import os
import sys
import subprocess
import json
import time

MY_BTC_ADDR='АДРЕС'
MIN_BALANCE=0.005
FEE_RATE_CONFIRM=50
FEE_RATE_UNCONFIRM=80

PAUSE=1

ELECTRUM_FILE='./electrum-4.2.1-x86_64.AppImage'

LOG='electrum.log'

def write_log(mess):
    print(mess)
    with open(LOG,'a',encoding='utf8') as f:
        f.write(mess+'\n')

if __name__=='__main__':
    with open(LOG,'w',encoding='utf8'):
        pass

    while True:
        try:
            # get balance
            proc = subprocess.Popen(f"{ELECTRUM_FILE} getbalance", shell=True,stdout=subprocess.PIPE)
            out = proc.communicate()
            d=json.loads(out[0])
            write_log(f'Balance:{d}')

            #check confirmed
            valid_balance=False
            fee=0
            if 'confirmed' in d:
                if float(d['confirmed'])>MIN_BALANCE:
                    valid_balance=True
                    fee=FEE_RATE_CONFIRM

            # check unconfirmed
            if not valid_balance:
                if 'unconfirmed' in d:
                    if float(d['unconfirmed']) > MIN_BALANCE:
                        valid_balance = True
                        fee = FEE_RATE_UNCONFIRM

            if valid_balance:
                # send maximum
                proc = subprocess.Popen(f"{ELECTRUM_FILE} payto {MY_BTC_ADDR} ! --feerate {fee}",shell=True, stdout=subprocess.PIPE)
                out = proc.communicate()
                print(out)
                trn=out[0].decode('utf8').strip()
                write_log(f'Transaction:{trn}')

                # broadcast transaction
                proc = subprocess.Popen(f"{ELECTRUM_FILE} broadcast {trn}",shell=True, stdout=subprocess.PIPE)
                out = proc.communicate()
                print(out)
                res=out[0].decode('utf8').strip()
                write_log(f'Broadcast result:{res}')

        except KeyboardInterrupt:
            print('Stop.')
            break
        except:
            print(f'ERROR {sys.exc_info()}')
        time.sleep(PAUSE)


Зупускаем

Код:
python electrum.py

Все. Теперь при поступлении средств они будут автоматом выведены на указанный вами адрес.

Настройки

Код:
MY_BTC_ADDR='АДРЕС'
MIN_BALANCE=МИНИМАЛЬНЫЙ БАЛАНС ДЛЯ ВЫВОДА НАПРИМЕР 0.005
FEE_RATE_CONFIRM=50 КОМИССИЯ ДЛЯ ПОДТВЕРЖДЕННЫХ МОНЕТ
FEE_RATE_UNCONFIRM=80 КОМИССИЯ ДЛЯ НЕ ПОДТВЕРЖДЕННЫХ МОНЕТ

PAUSE=1 ПАУЗА В СЕКУНДАХ МЕЖДУ ПРОВЕРКАМИ БАЛАНСА


Так же должен сказать что данное решение позволяет мониторить не больше 30-50 приватных ключей. При попытке запихать туда овер дофига приватников бы будите забанены нодами и кошелек не будет с ними соеденяться. Сори за меркантильность но данную проблему я тоже могу решить за донат, но лично мне хватает вполне и монитринга 20 адресов.
 
Последнее редактирование:
Great work, i will try it.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не делал ещё на винду такую штуку?)
Да заставили уже)


ELECTRUM_FILE='"c:/Program Files (x86)/Electrum/electrum-4.2.1-debug.exe"' - поменять на путь до своей версии эдектрума в винде.
Так же electrum-4.2.1-debug.exe должен быть запущен
PAUSE=1 - это значит что обновлять балансы будет каждую секунду. Можно ставить значение больше на свое усмотрение.

{
'min_balance':0.0005,
'fee_rate_confirm':50,
'fee_rate_unconfirm':80
},
{
'min_balance': 0.05,
'fee_rate_confirm': 100,
'fee_rate_unconfirm': 180
},
{
'min_balance': 0.1,
'fee_rate_confirm': 150,
'fee_rate_unconfirm': 280
Нужно что бы для меленьких транз использовалась маленькая комисия, а для больших комиссия больше, что бы монеты быстрее подтверждались.






Python:
import os
import sys
import subprocess
import json
import time

MY_BTC_ADDR='адрес куда выводить'
#min_balance - Минимальный баланс для вывода
#fee_rate_confirm - Комиссия для подтвержденных монет
#fee_rate_unconfirm - Комиссия для неподтвержденных монет
LIMITS=[
    {
        'min_balance':0.0005,
        'fee_rate_confirm':50,
        'fee_rate_unconfirm':80
    },
    {
        'min_balance': 0.05,
        'fee_rate_confirm': 100,
        'fee_rate_unconfirm': 180
    },
    {
        'min_balance': 0.1,
        'fee_rate_confirm': 150,
        'fee_rate_unconfirm': 280
    },
]

PAUSE=1
if sys.platform!='win32':
    ELECTRUM_FILE='./electrum-4.2.1-x86_64.AppImage'
    param=''
else:
    ELECTRUM_FILE='"c:/Program Files (x86)/Electrum/electrum-4.2.1-debug.exe"'
    param='--offline'

LOG='electrum.log'

def write_log(mess):
    print(mess)
    with open(LOG,'a',encoding='utf8') as f:
        f.write(mess+'\n')

if __name__=='__main__':
    with open(LOG,'w',encoding='utf8'):
        pass

    while True:
        try:
            # get balance
            proc = subprocess.Popen(f"{ELECTRUM_FILE} getbalance {param}", shell=True,stdout=subprocess.PIPE)
            out = proc.communicate()
            d=json.loads(out[0])
            write_log(f'Balance:{d}')

            # get max balance
            conf_balance=0
            unconf_balance=0
            if 'confirmed' in d:
                conf_balance=float(d['confirmed'])
            if 'unconfirmed' in d:
                unconf_balance=float(d['unconfirmed'])

            if conf_balance>unconf_balance:
                max_balance=conf_balance
                key_fee='fee_rate_confirm'
            else:
                max_balance = unconf_balance
                key_fee = 'fee_rate_unconfirm'

            #check limits
            valid_balance=False
            fee=0
            for item in LIMITS:
                if max_balance>item['min_balance']:
                    valid_balance=True
                    fee=item[key_fee]

            if valid_balance:
                # send maximum
                proc = subprocess.Popen(f"{ELECTRUM_FILE} payto {MY_BTC_ADDR} ! --feerate {fee} {param}",shell=True, stdout=subprocess.PIPE)
                out = proc.communicate()
                print(out)
                trn=out[0].decode('utf8').strip()
                write_log(f'Transaction:{trn}')

                # broadcast transaction
                proc = subprocess.Popen(f"{ELECTRUM_FILE} broadcast {trn} {param}",shell=True, stdout=subprocess.PIPE)
                out = proc.communicate()
                print(out)
                res=out[0].decode('utf8').strip()
                write_log(f'Broadcast result:{res}')

        except KeyboardInterrupt:
            print('Stop.')
            break
        except:
            print(f'ERROR {sys.exc_info()}')
        time.sleep(PAUSE)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да заставили уже)


ELECTRUM_FILE='"c:/Program Files (x86)/Electrum/electrum-4.2.1-debug.exe"' - поменять на путь до своей версии эдектрума в винде.
Так же electrum-4.2.1-debug.exe должен быть запущен
PAUSE=1 - это значит что обновлять балансы будет каждую секунду. Можно ставить значение больше на свое усмотрение.


Нужно что бы для меленьких транз использовалась маленькая комисия, а для больших комиссия больше, что бы монеты быстрее подтверждались.






Python:
import os
import sys
import subprocess
import json
import time

MY_BTC_ADDR='адрес куда выводить'
#min_balance - Минимальный баланс для вывода
#fee_rate_confirm - Комиссия для подтвержденных монет
#fee_rate_unconfirm - Комиссия для неподтвержденных монет
LIMITS=[
    {
        'min_balance':0.0005,
        'fee_rate_confirm':50,
        'fee_rate_unconfirm':80
    },
    {
        'min_balance': 0.05,
        'fee_rate_confirm': 100,
        'fee_rate_unconfirm': 180
    },
    {
        'min_balance': 0.1,
        'fee_rate_confirm': 150,
        'fee_rate_unconfirm': 280
    },
]

PAUSE=1
if sys.platform!='win32':
    ELECTRUM_FILE='./electrum-4.2.1-x86_64.AppImage'
    param=''
else:
    ELECTRUM_FILE='"c:/Program Files (x86)/Electrum/electrum-4.2.1-debug.exe"'
    param='--offline'

LOG='electrum.log'

def write_log(mess):
    print(mess)
    with open(LOG,'a',encoding='utf8') as f:
        f.write(mess+'\n')

if __name__=='__main__':
    with open(LOG,'w',encoding='utf8'):
        pass

    while True:
        try:
            # get balance
            proc = subprocess.Popen(f"{ELECTRUM_FILE} getbalance {param}", shell=True,stdout=subprocess.PIPE)
            out = proc.communicate()
            d=json.loads(out[0])
            write_log(f'Balance:{d}')

            # get max balance
            conf_balance=0
            unconf_balance=0
            if 'confirmed' in d:
                conf_balance=float(d['confirmed'])
            if 'unconfirmed' in d:
                unconf_balance=float(d['unconfirmed'])

            if conf_balance>unconf_balance:
                max_balance=conf_balance
                key_fee='fee_rate_confirm'
            else:
                max_balance = unconf_balance
                key_fee = 'fee_rate_unconfirm'

            #check limits
            valid_balance=False
            fee=0
            for item in LIMITS:
                if max_balance>item['min_balance']:
                    valid_balance=True
                    fee=item[key_fee]

            if valid_balance:
                # send maximum
                proc = subprocess.Popen(f"{ELECTRUM_FILE} payto {MY_BTC_ADDR} ! --feerate {fee} {param}",shell=True, stdout=subprocess.PIPE)
                out = proc.communicate()
                print(out)
                trn=out[0].decode('utf8').strip()
                write_log(f'Transaction:{trn}')

                # broadcast transaction
                proc = subprocess.Popen(f"{ELECTRUM_FILE} broadcast {trn} {param}",shell=True, stdout=subprocess.PIPE)
                out = proc.communicate()
                print(out)
                res=out[0].decode('utf8').strip()
                write_log(f'Broadcast result:{res}')

        except KeyboardInterrupt:
            print('Stop.')
            break
        except:
            print(f'ERROR {sys.exc_info()}')
        time.sleep(PAUSE)
Ты вообще красавчик)))
 
Пожалуйста, обратите внимание, что пользователь заблокирован
1 секунду, это работает только с кошелями электрума??? или любых крипто кошельков. или любых холодных кошелей? моя не понимать(
Ну любые приватные ключи биткоина импортируешь в электрум и все. Только с биткоином работает и электрумом.
 
А почему именно биток? Нельзя другие монеты прописать?
Потому что Електрум, и удобный консольный интерфейс. Для других монет нужен другой софт основаный на других кошельках, либо писать самому использую либы для каждой из монеток или сетей.
 


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