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:
Soweit ich weiß, ist getrawtransaction
der Anruf mit txindex
aktiviertem Client das einzige Tool, das genaue Informationen zu Transaktionen liefert, da gettransaction
es nur für den internen Gebrauch von Wallet bestimmt ist.
Also zum Beispiel
Ich habe die folgende Transaktion an mich selbst unter yPNYZoqKHMM49z1JzvCFAzrSTJpKmVmMio
Empfangsadresse getätigt:
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 vout
Teil 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.
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.
Ben
JBaczuk
listunspent
nur der utxo angezeigt wird, der sich auf Adressen in Ihrer Brieftasche bezieht.Pieter Wuille
gettxout
RPC verwenden. Wenn es etwas für eine gegebene txid und vout zurückgibt, wird die Ausgabe nicht ausgegeben.Ben
Pieter Wuille
listtransactions
oder obgetreceivedbyaddress
seine Adresse enthalten ist.Ben