Arbeitsbeispiel einer Rohtransaktion unter Verwendung von Boolean (OP_IF, OP_ENDIF) Scripting ERFORDERLICH

Ich habe kürzlich diesen Testnet TX (TxID 2d0daa01da8294a54178f8111eb2a02010c425fd15957d8baee8717edcfbe105) gepostet, der erfolgreich eine Ausgabe ausgibt (TxID 8d897ca91774a7fafa086a3275e679248d6bffee)d5d3ab0efe015d3ab0eff form

OP_DUP OP_HASH160 ##HASH160_KEY1## OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_IF OP_DUP OP_HASH160 ##HASH160_KEY1## OP_EQUALVERIFY OP_CHECKSIG OP_ELSE OP_HASH256 ##HASH256_OF_SECRET## OP_EQUAL OP_ENDIF

Wo ##HASH256_OF_SECRET##ist sha256(sha256(3ceb50edd0282cd99dc59351f513dcdf))und ##HASH160_KEYx##ist die ripemd160(sha256(public key n)).

Ich habe es tagelang versucht, Python (Pybitcointools-Bibliothek, Pycoin-Bibliothek, Raw-TX-Konstruktion) und Bitcoincore zu verwenden, aber ich kann den Tx durchweg nicht selbst duplizieren.


BEARBEITEN : Schlüssel hinzugefügt, Code

Hier ist ein duplizierter Tx auf Testnet: ed99a9d3c8da943c5140790349d000450209367c7cf24d1627df6b43ece8b9d4:1

Schlüssel (von Pycoin):

input                        : 98a6776b00481d69147af4f19982816d24b21f1e45bd6b9b6612969a805dff5d
network                      : Bitcoin testnet3
netcode                      : XTN
secret exponent              : 69045673789968930636498185430340997034503775217197653543201755869784347377501
 hex                         : 98a6776b00481d69147af4f19982816d24b21f1e45bd6b9b6612969a805dff5d
wif                          : cShS7YocDNMfpxHPd1iWbXX6eTFPQoNTJSw6W4sQY5BVimvvw6FY
 uncompressed                : 92k9QgqAnrFCWtwvA4neyJnngkZG3g43ne9BJuzBmeeirPHXtu3
public pair x                : 66609190448066768097937392847179714582119540337817974512409209527265330917500
public pair y                : 13690920648454078566739109880631240403596673427366917192400893160542072726114
 x as hex                    : 9343773d05d5a07f103914d5294ca742db124babd2c2cac5f84e6114f192f07c
 y as hex                    : 1e44c956c737a60369fbf4f5e6324dc005ba38d156f61232f9251fec8ee3e262
y parity                     : even
key pair as sec              : 029343773d05d5a07f103914d5294ca742db124babd2c2cac5f84e6114f192f07c
 uncompressed                : 049343773d05d5a07f103914d5294ca742db124babd2c2cac5f84e6114f192f07c\
                                 1e44c956c737a60369fbf4f5e6324dc005ba38d156f61232f9251fec8ee3e262
hash160                      : fd00f9fd452fee2214e8b0f9acf4c53496bd5636
 uncompressed                : 23dfc9ad6d857c92ad2b99004354067492cf464c
Bitcoin address              : n4aiRSJEm2gT9QrZTFJ7DJy3KPGnDHxybf
Bitcoin address uncompressed : mine2pMKAyoA6CBimPd1ZdFVi5kvhTM7TT

script = 76a914dd6cce9f255a8cc17bda8ba0373df8e861cb866e88ad6376a914e900510876cb689f1db6fa982376c301362b740c88ac67aa20644d79d87e0907833e888e272e5d7b925deb261a8499a65cbc0bf26797a15e8e8768

[118, 169, '23dfc9ad6d857c92ad2b99004354067492cf464c', 136, 173, 99, 118, 169, 'fd00f9fd452fee2214e8b0f9acf4c53496bd5636', 136, 172, 103, 170, '0757152190e14e5889b1270309d7c8e40219d45e04096fcb97d1b4c5a99064e1', 135, 104]

*mysecret* = '12345678'.decode('hex')
sha256(sha256(*mysecret*)) == 0757152190e14e5889b1270309d7c8e40219d45e04096fcb97d1b4c5a99064e1

Ich suche nach einer funktionierenden Anleitung zum Aufbau eines Testnetzes&P2SH Tx, das boolesche Skripte verwendet. Speziell:

  1. Ein funktionierendes Testnet-Beispiel für die oben gestellte Frage (hier näher beschrieben) (ich werde dafür ein Kopfgeld anbieten)
  2. Erstellen eines Multisig-Tx der Form:(1 KEY1 KEY2 2 CHECKMULTISIG) OR MASTERKEY
Nur eine kurze Frage: Überprüfen Sie die Ausgabenummer in der Transaktion, die Sie ausgeben? Es scheint seltsam, dass Sie die Transaktion nur manchmal reproduzieren können. Ihre erfolgreiche Transaktion in "prev_out": hat "n": 1, aber die Ausgabenummer in der vorherigen Transaktion ist wahrscheinlich jedes Mal anders. Wie erstellen Sie die Transaktion? Mit bitcoin-cli createrawtransaction?
@halftimepad sowohl Pybitcointools als auch Bitcoin Core
Haben Sie die Hex-Rohtransaktion für einen Fall zur Hand, in dem Sie die Transaktion reproduzieren konnten, und für einen, in dem Sie dies nicht konnten? Damit kann ich Ihnen sagen, ob es ein Problem mit der Ausgangsnummer ist.
@halftimepad klingt gut, ich werde meine iPython-Protokolle überprüfen
@wizard-of-ozzie Es ist schon eine Weile her, seit du gefragt hast, brauchst du immer noch Hilfe bei dem Problem?

Antworten (1)

FWIW, Output wird eingelöst61ba3a8b40706931b72929628cf1a07d604f158c8350055725c664d544d00030:0

Midstate für Seufzer:

02000000
01
  D4B9E8EC436BDF27164DF27C7C3609024500D049037940513C94DAC8D3A999ED
  01000000
  58
    76 A9 14 23DFC9AD6D857C92AD2B99004354067492CF464C 88 AD
    63
      76 A9 14 FD00F9FD452FEE2214E8B0F9ACF4C53496BD5636 88 AC
    67
      AA 20 0757152190E14E5889B1270309D7C8E40219D45E04096FCB97D1B4C5A99064E1 87
    68
  FDFFFFFF
01
  006EBE0000000000
  19
  76 A9 14 4F2465FEC27AD88917C9FCB72B09ADE39B8911ED 88 AC
6C3C1300
01000000

Eingelöst von scriptsig :

04 12345678
00
47
  30
  44
    02
    20 71B0D6894AE2252BD67F8D9882C814A2A59E1C7AE8B8F1117DB17A484538833A
    02
    20 680F44F3150B652C49B6523EFF5E750D460F3306ED669835DB7C3095596211BF
  01
41
  049343773D05D5A07F103914D5294CA742DB124BABD2C2CAC5F84E6114F192F07C1E44C956C737A60369FBF4F5E6324DC005BA38D156F61232F9251FEC8EE3E262