Wie kann man schnell viele Token an verschiedene User senden .

in steemit •  3 months ago 

Hallo Leute

Muss ja immer wieder durch @investinthefutur und den Voin-Tool viele Token an verschiedene User senden. Habe es am Anfang mittels diesem Befehl und einer Schleife gemacht:

stm = Steem(keys=["5xx"])
wallet = Wallet("test_user", steem_instance=stm)
wallet.transfer("test1",1,"TST", memo="This is a test")

Doch leider lief es nicht so rund, immer wieder kam es zu einem Abbruch, daher musste ich es immer kontrollieren ob es nun noch zu einen Auszahlung kam oder nicht. Nach langer Suche und Hilfe von @gerber habe ich nun eine Lösung. Damit kann man schnell viele Token an verschiedene User senden und es ist in paar Sekunden erledigt. Hier ein Code welcher es nun in Python möglich macht schnell und einfach an User Token zu senden.

from beem import Steem
from beem.nodelist import NodeList
from beem.instance import set_shared_steem_instance
from beem.transactionbuilder import TransactionBuilder
from beembase import operations
from datetime import time

nodelist = NodeList()
nodelist.update_nodes()
nodes = nodelist.get_nodes(hive=True)
#für Steem 
#nodes = nodelist.get_nodes()
#Einlesen der Account Daten
user = input("Geben sie den Account von welchen die Token gesendet werden ein : ") 
aktiv_key = input("Geben sie den Aktivkey ein : ")
#Angabe für den Token welcher ausgezahlt wird z.B VOIN , 
token_symbol = input("Gibe das Symbol für den Token an : ")
#Verbinung zu der Node und Authentifizieren
stm = Steem(node=nodes,keys=aktiv_key, use_condenser=True)
set_shared_steem_instance(stm)

#Hier erfolgt die Auszahlung 
def broadcast(all_transactions,user):
    idx = "ssc-mainnet-hive"
    #für Steem 
    #idx = "ssc-mainnet1"
    accountname = user
    stm = Steem(nodes)
    set_shared_steem_instance(stm)
    tx = TransactionBuilder(steem_instance=stm)
    op = operations.Custom_json(** {
                    "required_auths": [accountname],
                    "required_posting_auths": [],
                    "id": idx,
                    "json": all_transactions
                    } )
    tx.appendOps([op])
    tx.appendWif(aktiv_key) 
    tx.sign()
    tx.broadcast()

def token_data():
    #Hier wird das Dic erstellt mit den Angaben über die Auszahlung
    temp_dic = {}
    payment_user = ""
    number_token = ""
    payment_user = input("Geben sie den User für die Auszahlung an : ")
    number_token = input("Gib die Anzahl der Token an : ")
    while len(payment_user) > 5:
        temp_dic[payment_user] = number_token
        payment_user = input("Geben sie den User für die Auszahlung an : ")
        if len(payment_user) > 2:
            number_token = input("Gib die Anzahl der Token an : ")
    
    return temp_dic

all_transactions = []
user_token = token_data()
#Anzeigen der Auzahlungen , ob alles passt
for info in user_token:
    print(f"{info} : {user_token[info]}")

memo = " " # Wenn keine Eingabe erfolgt Auzahlung ohne Memo 
memo = input("Gib dein Memo für die Auszahlung ein : ")
abfrage = input("Geben sie \"ja\" für Auszahlung ein , keine oder eine falsche Eingabe beendet die Auszahlung : ")

if abfrage == "ja":
    for tokeninfo in user_token:
        json_object = {
        "contractName":"tokens",
        "contractAction":"transfer",
        "contractPayload": {
            "symbol":token_symbol,
            "to": tokeninfo,
            "quantity": str(user_token[tokeninfo]),
            "memo": memo
            }
        }
        all_transactions.append(json_object)
        if len(all_transactions) == 25:
            broadcast(all_transactions,user)
            all_transactions = []
            time.sleep(1)
    #to finish up:
    broadcast(all_transactions,user)
    print("Die Auszahlung wurde getätigt")
else:
    print("Es wurde keine Auszahlung getätigt")

Es läuft bei mir unter Python 3.6.9
Was hier natürlich gesagt werden muss ist das die Lib für die Imports installiert sein muss.
Bei Fragen oder Beschwerden einfach hier melden :)

Hier kann @cervisia als Witness gevotet werden.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Eine schritt für schritt Anleitung wäre für Ottonormalverbraucher angebracht.
sieht ja sehr easy aus, aber wie wo wer was.
Vielleicht gibt es ja bereits ein tutorial dafür, wie man so ein Skript verwendet.
lg

Eine Schritt für Schritt ist gar nicht so einfach, fängt schon beim Betriebssystem an. Am besten ist einfach fragen denke ich.
Darum mal dich Frage wo wäre der erste Schritt für dich ?
!invest_vote
!jeenger

Ein jeengervote für dich von @cervisia

@cervisia denkt du hast ein Vote durch @investinthefutur verdient!
@cervisia thinks you have earned a vote of @investinthefutur !
Votet @cervisia for Witness