Kryptowährung: Überprüfen Sie, ob die Transaktion eine tragfähige Masternode-Ausgabe ist

Ich entwickle ein Tool zur Masternode-Automatisierung ähnlich wie https://gincoin.io .

Ich versuche herauszufinden, wie man dekodiert, ob eine Transaktion für einen Masternode realisierbar ist.

Soweit ich weiß, muss die Transaktion die folgenden Kriterien erfüllen, um ein brauchbarer Masternode-Kandidat zu sein:

  • Der gesendete Betrag muss genau so sein, wie es für eine Masternode-per-Coin-Spezifikation erforderlich ist (z. B. genau 1000,0 Coins)
  • Keine dieser Münzen sollte ausgegeben werden
  • Die Transaktion muss von genügend Peers verifiziert werden
  • Sende- und Absenderadresse müssen übereinstimmen (muss eine Transaktion an Sie selbst sein)

Soweit ich weiß, ist getrawtransactionder Anruf mit txindexaktiviertem Client das einzige Tool, das genaue Informationen zu Transaktionen liefert, da gettransactiones nur für den internen Gebrauch von Wallet bestimmt ist.

Also zum Beispiel

Ich habe die folgende Transaktion an mich selbst unter yPNYZoqKHMM49z1JzvCFAzrSTJpKmVmMioEmpfangsadresse getätigt:

Geben Sie hier die Bildbeschreibung ein

Wenn ich exekutiere

$ dash-cli -testnet getrawtransaction dd4011a1892a49d9109c299cad6a902ea60aff5a76f49c7d43f1a28861d0a8d3 1

Gibt die folgenden Informationen zu den Transaktionsdetails zurück:

{
  "hex": "01000000027d0511a068dc2b978f840d761c64760307c3eea44eecddbac3d458ed4848b8af000000006a47304402206d040ff0825fa11af1fa497f9e9ca52218b7576e61679ce73475a899d1d005420220572d6104cab20d1abc77eec0e8d50b78f20ad0aaa5d7720878664a38af90a0c00121030613391de767cf19d8dd1fd3275ce661f5ff1e341e0130d7ade004b4a37c0607feffffff7d0511a068dc2b978f840d761c64760307c3eea44eecddbac3d458ed4848b8af010000006a4730440220296f0c7f8a8a538613e10644454c2146cc978509963a5bfe2211c8126c19c03502207c3310582e08585a2e9329cd14687589da58c3ff730ad75a0bba06a846de0caf01210393b4249c1d422cda439e9629ecb80c23aa0586082c5473ae509c94b395d0d061feffffff028b9e7851000000001976a9146be245a75e9e2b49f3392d260a06249de2396d3388ac00e87648170000001976a914217e65d7d68fc632e1ae63b7536c900021fa927288acd93b0300",
  "txid": "dd4011a1892a49d9109c299cad6a902ea60aff5a76f49c7d43f1a28861d0a8d3",
  "size": 372,
  "version": 1,
  "locktime": 211929,
  "vin": [
    {
      "txid": "afb84848ed58d4c3baddec4ea4eec3070376641c760d848f972bdc68a011057d",
      "vout": 0,
      "scriptSig": {
        "asm": "304402206d040ff0825fa11af1fa497f9e9ca52218b7576e61679ce73475a899d1d005420220572d6104cab20d1abc77eec0e8d50b78f20ad0aaa5d7720878664a38af90a0c0[ALL] 030613391de767cf19d8dd1fd3275ce661f5ff1e341e0130d7ade004b4a37c0607",
        "hex": "47304402206d040ff0825fa11af1fa497f9e9ca52218b7576e61679ce73475a899d1d005420220572d6104cab20d1abc77eec0e8d50b78f20ad0aaa5d7720878664a38af90a0c00121030613391de767cf19d8dd1fd3275ce661f5ff1e341e0130d7ade004b4a37c0607"
      },
      "sequence": 4294967294
    }, 
    {
      "txid": "afb84848ed58d4c3baddec4ea4eec3070376641c760d848f972bdc68a011057d",
      "vout": 1,
      "scriptSig": {
        "asm": "30440220296f0c7f8a8a538613e10644454c2146cc978509963a5bfe2211c8126c19c03502207c3310582e08585a2e9329cd14687589da58c3ff730ad75a0bba06a846de0caf[ALL] 0393b4249c1d422cda439e9629ecb80c23aa0586082c5473ae509c94b395d0d061",
        "hex": "4730440220296f0c7f8a8a538613e10644454c2146cc978509963a5bfe2211c8126c19c03502207c3310582e08585a2e9329cd14687589da58c3ff730ad75a0bba06a846de0caf01210393b4249c1d422cda439e9629ecb80c23aa0586082c5473ae509c94b395d0d061"
      },
      "sequence": 4294967294
    }
  ],
  "vout": [
    {
      "value": 13.66859403,
      "valueSat": 1366859403,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 6be245a75e9e2b49f3392d260a06249de2396d33 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a9146be245a75e9e2b49f3392d260a06249de2396d3388ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "yW9tDPWry4F4Yoh2ejVpdvMtjawBpNq2jV"
        ]
      }
    }, 
    {
      "value": 1000.00000000,
      "valueSat": 100000000000,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 217e65d7d68fc632e1ae63b7536c900021fa9272 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914217e65d7d68fc632e1ae63b7536c900021fa927288ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "yPNYZoqKHMM49z1JzvCFAzrSTJpKmVmMio"
        ]
      }
    }
  ]
}

Dieser voutTeil bestätigt insbesondere, dass genau 1000,0 Münzen an die angeforderte Adresse gesendet werden yPNYZoqKHMM49z1JzvCFAzrSTJpKmVmMio:

    {
      "value": 1000.00000000,
      "valueSat": 100000000000,
      "n": 1,
      "scriptPubKey": {
        "asm": "OP_DUP OP_HASH160 217e65d7d68fc632e1ae63b7536c900021fa9272 OP_EQUALVERIFY OP_CHECKSIG",
        "hex": "76a914217e65d7d68fc632e1ae63b7536c900021fa927288ac",
        "reqSigs": 1,
        "type": "pubkeyhash",
        "addresses": [
          "yPNYZoqKHMM49z1JzvCFAzrSTJpKmVmMio"
        ]
      }
    }

Aber wie überprüfe ich, ob das eine Transaktion selbst ist und dass keine dieser 1000 Münzen ausgegeben wurden?

HINWEIS Dies bezieht sich nicht auf eine bestimmte Kryptowährung und sollte auf jedem generischen RPC-Wallet-Client funktionieren, der Masternode-fähig ist.

Antworten (1)

Jedes Projekt kann unterschiedliche spezifische Anforderungen dafür haben, was als gültige Transaktion gilt, aber im Allgemeinen muss eine nicht ausgegebene Transaktion mit allen vorherigen Transaktionen in der Blockchain verglichen werden, um sicherzustellen, dass sie nicht als Eingabe ( ) für einen anderen TX referenziert wurde vin. Bitcoin speichert eine Datenbank mit nicht ausgegebenen Transaktionsausgaben (UTXO), um diese Überprüfung effizienter durchzuführen.

Diese Überprüfung wird in Bitcoin durchgeführt, bevor die Transaktion in den Mempool eines Knotens eintritt (bevor sie abgebaut wird), und wenn sie fehlschlägt, wird die Transaktion abgelehnt.

Update : Sie können ein bestimmtes utxo von txid mit erhalten $ bitcoin-cli gettxout, Sie können einfach nicht nach Adresse abfragen, gemäß dem Kommentar von @ PieterWuille unten.

Wie überprüfe ich die nicht ausgegebenen Transaktionen?
Das wird oft gefragt, und ich habe keine wirklich gute Antwort, weil ich nur die interne Implementierung von Bitcoin Core kenne. Es speichert neu geschürfte Transaktionen in der UTXO-Datenbank und löscht die ausgegebenen. Es gibt keinen RPC-Aufruf, um sie abzufragen, außer dass listunspentnur der utxo angezeigt wird, der sich auf Adressen in Ihrer Brieftasche bezieht.
Sie können den gettxoutRPC verwenden. Wenn es etwas für eine gegebene txid und vout zurückgibt, wird die Ausgabe nicht ausgegeben.
@PieterWuille Vielen Dank, das könntest du als Antwort posten. Haben Sie eine Idee, wie Sie überprüfen können, ob die Transaktion an Sie selbst erfolgt ist?
Fragen Sie die Brieftasche. Prüfen Sie, ob es in erscheint listtransactionsoder ob getreceivedbyaddressseine Adresse enthalten ist.
@PieterWuille, wie ich bereits erklärte, bin ich nicht der Eigentümer der Brieftasche, ich muss diese Informationen von außerhalb der Brieftasche erhalten