Jumpcoin-Wallet verbietet Transaktion

  • Moin, wie einige wissen, bin ich ja aktuell daran, unser geliebtes Wallet in seinen Funktionen über RPC zwecks einer Anwendung für die Community zu misshandeln, bis es 5x hintereinander abstürzt :DDD

    Dabei stößt man dann auch gerne Mal auf Dinge, wo das Debugging etwas komplizierter wird und ich durchdrehe, aber ich möchte das Projekt jetzt endlich abschließen!



    >>listunspent

    Auf dem Account sind auch tatsächlich 5JUMP vorhanden.


    Wenn ich jetzt versuche via RPC oder selbst in der Konsole 5 oder 4,99999 JUMP zu senden versuche, bekomme ich die Rückmeldung von insufficient funds...


    Obere Zeile: request

    Untere Zeile: Antwort vom Wallet


    Wenn ich jetzt allerdings im Wallet in den Coin Controll features bei Inputs genau denselben Account wähle, kann ich die gewünschte Transaktion mit 4,99999JUMP durchführen.

    Hat jemand eine Idee, was da falsch läuft? ggf. kann ich auch Rückfragen für weitere Infos beantworten, falls noch jemand was wissen möchte.

  • Riggie1000

    Hat den Titel des Themas von „[Problem] Jumpcoin Wallet verbietet Transaktion“ zu „Jumpcoin-Wallet verbietet Transaktion“ geändert.
  • LÖSUNG
    Nach einigem Nachdenken bin ich auf eine Lösung gekommen, welche problemlos zu funktionieren Scheint:

    Zuerst liste ich mir ja alle nicht ausgegebenen Coin Stacks des Wallets mit listunspent auf.

    Darin kann dann zum Beispiel das hier enthalten sein:

    Jetzt möchte ich daras eine Raw TX zaubern. Das geht mit einem Command nach folgendem Schema:

    createrawtransaction [{"txid":txid,"vout":n},...] {address:amount,...}

    In unserem Beispiel wäre die txid dann db161e8d66323f263f514fea8c06ecca492d865a5fbaf7b3544d185317a179e3, vout 1. Zieladresse und Amount sind individuell.

    ACHTUNG!: Die Differenz zwischen Amount des Coin Stacks und Empfangsmenge der Zieladresse entspricht der verwandten Fee, welche an die Person geht, welche den Stake des Blocks in welcher die Transaktion am Ende stattfindet.

    Richtig ausgeführt kann das dann am Ende beispielsweise so aussehen:

    Der hierbei sehr unschöne generierte Zeichenkette unter result ist die RawTX, welche wir nun erfolgreich generiert haben.


    Damit sind wir aber noch nicht am Ende. Als nächstes müssen wir das Wallet fragen, was denn nun der magische private key der von Herzen giftgrünen Jumpcoin Adresse

    ist, von welcher wir Coins versenden wollen.

    Das machen wir mit dumpprivkey <jumpcoinaddress>. Um weiterhin alles beispielhaft durchzuführen, sehe das dann so aus:

    Hierbei steht wieder hinter result der zur Adresse gehörende Private Key.


    Mit der nun generierten RawTX und dem abgefragten Private Key, kann man nun die Transaktion validieren, indem wir sie unterzeichnen. Das geht wie folgt:

    Da darauf wohl kaum noch einer eindeutig lesen kann, was vor sich geht, fang ich mal an zu erklären ;)

    Der Generelle Aufbau des verwandten Commands sieht so aus: signrawtransaction <hex string> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...]

    Hierbei werden nun bei txid und vout erneut die Werte, wie auch schon im zweiten Schritt eingetragen. Hinzu kommt der pubScriptKey, welcher ebenfalls aus der Ausgangsliste entnommen werden kann - hier 76a9140a53e5cde45a7a5a881c163038d42edf7ab1d5c888ac.

    Dann wird natürlich noch der im vorigen Schritt erlangte Private Key benötigt.

    Als Rückgabe vom Wallet erhalten wir dann unter result['hex'] die unterzeichnete Transaktion.


    Sind die Coins jetzt verschickt? Nein.

    Bis jetzt fand alle Magie im Wallet statt. Jetzt müssen wir noch die Nodes im Netzwerk informieren, dass wir die hart erarbeitete Transaktion durchführen wollen. Das machen wir mit sendrawtransaction <hex string>.

    Für den Hex String wird hier nun das im vorigen Schritt generierte eingesetzt. Das sieht dann so aus:

    Nachdem ich mich jetzt mal nicht gezwungen habe, alles in eine Zeile zu bekommen, kann man jetzt auch wieder etwas lesen. Trotzdem sehen wir, dass die TX "rejected" wurde. Das liegt ganz einfach daran, dass auf dem Coin Stack keine 0,4 Jumpcoin liegen, ansonsten hätte die Transaktion nun einwandfrei abgeschlossen sein sollen.


    Bounty:

    Auf der Adresse liegen insgesamt 0,00001010 JUMP. Die relevanten Informationen für die hier vorgestellte Methode sind folgende:

    Nun könnt ihr ausprobieren, wie ihr die Coin-Restbestände von der Adresse kratzen könnt. Zugegeben ist es nicht viel, aber es dient ja auch dem Lernen und nicht dem reich an Jumpcoins werden.
    Der Spaß an der Sache liegt hierbei logischerweise daran, den vollen Hier beschriebenen Weg durchzugehen und nicht einfach den private key ins wallet zu packen und dann alles über die GUI zu machen.


    PS: Die Erklärung, wie die RPC Steuerung für das Wallet funktioniert, habe ich hier beschrieben.