@bsv/sdk 1.3.12 → 1.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -5,360 +5,1313 @@ export default [
5
5
  ['serializedTransaction, verifyFlags|[verifyFlags1, verifyFlags2, ...]]'],
6
6
  ['Objects that are only a single string (like this one) are ignored'],
7
7
 
8
- ['The following is 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63'],
9
- ['It is of particular interest because it contains an invalidly-encoded signature which OpenSSL accepts'],
8
+ [
9
+ 'The following is 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63'
10
+ ],
11
+ [
12
+ 'It is of particular interest because it contains an invalidly-encoded signature which OpenSSL accepts'
13
+ ],
10
14
  ['See http://r6.ca/blog/20111119T211504Z.html'],
11
15
  ['It is also the first OP_CHECKMULTISIG transaction in standard form'],
12
- [[['60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1', 0, '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG']],
13
- '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000490047304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
14
-
15
- ['The following is a tweaked form of 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63'],
16
- ['It is an OP_CHECKMULTISIG with an arbitrary extra byte stuffed into the signature at pos length - 2'],
16
+ [
17
+ [
18
+ [
19
+ '60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1',
20
+ 0,
21
+ '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG'
22
+ ]
23
+ ],
24
+ '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000490047304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000',
25
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
26
+ ],
27
+
28
+ [
29
+ 'The following is a tweaked form of 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63'
30
+ ],
31
+ [
32
+ 'It is an OP_CHECKMULTISIG with an arbitrary extra byte stuffed into the signature at pos length - 2'
33
+ ],
17
34
  ['The dummy byte is fine however, so the NULLDUMMY flag should be happy'],
18
- [[['60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1', 0, '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG']],
19
- '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba260000000004a0048304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2bab01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000', 'P2SH,UTXO_AFTER_GENESIS,NULLDUMMY'],
20
-
21
- ['The following is a tweaked form of 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63'],
22
- ['It is an OP_CHECKMULTISIG with the dummy value set to something other than an empty string'],
23
- [[['60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1', 0, '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG']],
24
- '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba260000000004a01ff47304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
35
+ [
36
+ [
37
+ [
38
+ '60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1',
39
+ 0,
40
+ '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG'
41
+ ]
42
+ ],
43
+ '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba260000000004a0048304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2bab01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000',
44
+ 'P2SH,UTXO_AFTER_GENESIS,NULLDUMMY'
45
+ ],
46
+
47
+ [
48
+ 'The following is a tweaked form of 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63'
49
+ ],
50
+ [
51
+ 'It is an OP_CHECKMULTISIG with the dummy value set to something other than an empty string'
52
+ ],
53
+ [
54
+ [
55
+ [
56
+ '60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1',
57
+ 0,
58
+ '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG'
59
+ ]
60
+ ],
61
+ '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba260000000004a01ff47304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000',
62
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
63
+ ],
25
64
 
26
65
  ['As above, but using a OP_1'],
27
- [[['60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1', 0, '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG']],
28
- '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000495147304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
66
+ [
67
+ [
68
+ [
69
+ '60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1',
70
+ 0,
71
+ '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG'
72
+ ]
73
+ ],
74
+ '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000495147304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000',
75
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
76
+ ],
29
77
 
30
78
  ['As above, but using a OP_1NEGATE'],
31
- [[['60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1', 0, '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG']],
32
- '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000494f47304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
33
-
34
- ['The following is c99c49da4c38af669dea436d3e73780dfdb6c1ecf9958baa52960e8baee30e73'],
35
- ['It is of interest because it contains a 0-sequence as well as a signature of SIGHASH type 0 (which is not a real type)'],
36
- [[['406b2b06bcd34d3c8733e6b79f7a394c8a431fbf4ff5ac705c93f4076bb77602', 0, 'DUP HASH160 0x14 0xdc44b1164188067c3a32d4780f5996fa14a4f2d9 EQUALVERIFY CHECKSIG']],
37
- '01000000010276b76b07f4935c70acf54fbf1f438a4c397a9fb7e633873c4dd3bc062b6b40000000008c493046022100d23459d03ed7e9511a47d13292d3430a04627de6235b6e51a40f9cd386f2abe3022100e7d25b080f0bb8d8d5f878bba7d54ad2fda650ea8d158a33ee3cbd11768191fd004104b0e2c879e4daf7b9ab68350228c159766676a14f5815084ba166432aab46198d4cca98fa3e9981d0a90b2effc514b76279476550ba3663fdcaff94c38420e9d5000000000100093d00000000001976a9149a7b0f3b80c6baaeedce0a0842553800f832ba1f88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
79
+ [
80
+ [
81
+ [
82
+ '60a20bd93aa49ab4b28d514ec10b06e1829ce6818ec06cd3aabd013ebcdc4bb1',
83
+ 0,
84
+ '1 0x41 0x04cc71eb30d653c0c3163990c47b976f3fb3f37cccdcbedb169a1dfef58bbfbfaff7d8a473e7e2e6d317b87bafe8bde97e3cf8f065dec022b51d11fcdd0d348ac4 0x41 0x0461cbdcc5409fb4b4d42b51d33381354d80e550078cb532a34bfa2fcfdeb7d76519aecc62770f5b0e4ef8551946d8a540911abe3e7854a26f39f58b25c15342af 2 OP_CHECKMULTISIG'
85
+ ]
86
+ ],
87
+ '0100000001b14bdcbc3e01bdaad36cc08e81e69c82e1060bc14e518db2b49aa43ad90ba26000000000494f47304402203f16c6f40162ab686621ef3000b04e75418a0c0cb2d8aebeac894ae360ac1e780220ddc15ecdfc3507ac48e1681a33eb60996631bf6bf5bc0a0682c4db743ce7ca2b01ffffffff0140420f00000000001976a914660d4ef3a743e3e696ad990364e555c271ad504b88ac00000000',
88
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
89
+ ],
90
+
91
+ [
92
+ 'The following is c99c49da4c38af669dea436d3e73780dfdb6c1ecf9958baa52960e8baee30e73'
93
+ ],
94
+ [
95
+ 'It is of interest because it contains a 0-sequence as well as a signature of SIGHASH type 0 (which is not a real type)'
96
+ ],
97
+ [
98
+ [
99
+ [
100
+ '406b2b06bcd34d3c8733e6b79f7a394c8a431fbf4ff5ac705c93f4076bb77602',
101
+ 0,
102
+ 'DUP HASH160 0x14 0xdc44b1164188067c3a32d4780f5996fa14a4f2d9 EQUALVERIFY CHECKSIG'
103
+ ]
104
+ ],
105
+ '01000000010276b76b07f4935c70acf54fbf1f438a4c397a9fb7e633873c4dd3bc062b6b40000000008c493046022100d23459d03ed7e9511a47d13292d3430a04627de6235b6e51a40f9cd386f2abe3022100e7d25b080f0bb8d8d5f878bba7d54ad2fda650ea8d158a33ee3cbd11768191fd004104b0e2c879e4daf7b9ab68350228c159766676a14f5815084ba166432aab46198d4cca98fa3e9981d0a90b2effc514b76279476550ba3663fdcaff94c38420e9d5000000000100093d00000000001976a9149a7b0f3b80c6baaeedce0a0842553800f832ba1f88ac00000000',
106
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
107
+ ],
38
108
 
39
109
  ['A nearly-standard transaction with CHECKSIGVERIFY 1 instead of CHECKSIG'],
40
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'DUP HASH160 0x14 0x5b6462475454710f3c22f5fdf0b40704c92f25c3 EQUALVERIFY CHECKSIGVERIFY 1']],
41
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000006a473044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a012103ba8c8b86dea131c22ab967e6dd99bdae8eff7a1f75a2c35f1f944109e3fe5e22ffffffff010000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
42
-
43
- ['Same as above, but with the signature duplicated in the scriptPubKey with the proper pushdata prefix'],
44
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'DUP HASH160 0x14 0x5b6462475454710f3c22f5fdf0b40704c92f25c3 EQUALVERIFY CHECKSIGVERIFY 1 0x47 0x3044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a01']],
45
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000006a473044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a012103ba8c8b86dea131c22ab967e6dd99bdae8eff7a1f75a2c35f1f944109e3fe5e22ffffffff010000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
46
-
47
- ['The following is f7fdd091fa6d8f5e7a8c2458f5c38faffff2d3f1406b6e4fe2c99dcc0d2d1cbb'],
48
- ['It caught a bug in the workaround for 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63 in an overly simple implementation'],
49
- [[['b464e85df2a238416f8bdae11d120add610380ea07f4ef19c5f9dfd472f96c3d', 0, 'DUP HASH160 0x14 0xbef80ecf3a44500fda1bc92176e442891662aed2 EQUALVERIFY CHECKSIG'],
50
- ['b7978cc96e59a8b13e0865d3f95657561a7f725be952438637475920bac9eb21', 1, 'DUP HASH160 0x14 0xbef80ecf3a44500fda1bc92176e442891662aed2 EQUALVERIFY CHECKSIG']],
51
- '01000000023d6cf972d4dff9c519eff407ea800361dd0a121de1da8b6f4138a2f25de864b4000000008a4730440220ffda47bfc776bcd269da4832626ac332adfca6dd835e8ecd83cd1ebe7d709b0e022049cffa1cdc102a0b56e0e04913606c70af702a1149dc3b305ab9439288fee090014104266abb36d66eb4218a6dd31f09bb92cf3cfa803c7ea72c1fc80a50f919273e613f895b855fb7465ccbc8919ad1bd4a306c783f22cd3227327694c4fa4c1c439affffffff21ebc9ba20594737864352e95b727f1a565756f9d365083eb1a8596ec98c97b7010000008a4730440220503ff10e9f1e0de731407a4a245531c9ff17676eda461f8ceeb8c06049fa2c810220c008ac34694510298fa60b3f000df01caa244f165b727d4896eb84f81e46bcc4014104266abb36d66eb4218a6dd31f09bb92cf3cfa803c7ea72c1fc80a50f919273e613f895b855fb7465ccbc8919ad1bd4a306c783f22cd3227327694c4fa4c1c439affffffff01f0da5200000000001976a914857ccd42dded6df32949d4646dfa10a92458cfaa88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
52
-
53
- ['The following tests for the presence of a bug in the handling of SIGHASH_SINGLE'],
54
- ['It results in signing the constant 1, instead of something generated based on the transaction,'],
55
- ['when the input doing the signing has an index greater than the maximum output index'],
56
- [[['0000000000000000000000000000000000000000000000000000000000000200', 0, '1'], ['0000000000000000000000000000000000000000000000000000000000000100', 0, 'DUP HASH160 0x14 0xe52b482f2faa8ecbf0db344f93c84ac908557f33 EQUALVERIFY CHECKSIG']],
57
- '01000000020002000000000000000000000000000000000000000000000000000000000000000000000151ffffffff0001000000000000000000000000000000000000000000000000000000000000000000006b483045022100c9cdd08798a28af9d1baf44a6c77bcc7e279f47dc487c8c899911bc48feaffcc0220503c5c50ae3998a733263c5c0f7061b483e2b56c4c41b456e7d2f5a78a74c077032102d5c25adb51b61339d2b05315791e21bbe80ea470a49db0135720983c905aace0ffffffff010000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
110
+ [
111
+ [
112
+ [
113
+ '0000000000000000000000000000000000000000000000000000000000000100',
114
+ 0,
115
+ 'DUP HASH160 0x14 0x5b6462475454710f3c22f5fdf0b40704c92f25c3 EQUALVERIFY CHECKSIGVERIFY 1'
116
+ ]
117
+ ],
118
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000006a473044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a012103ba8c8b86dea131c22ab967e6dd99bdae8eff7a1f75a2c35f1f944109e3fe5e22ffffffff010000000000000000015100000000',
119
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
120
+ ],
121
+
122
+ [
123
+ 'Same as above, but with the signature duplicated in the scriptPubKey with the proper pushdata prefix'
124
+ ],
125
+ [
126
+ [
127
+ [
128
+ '0000000000000000000000000000000000000000000000000000000000000100',
129
+ 0,
130
+ 'DUP HASH160 0x14 0x5b6462475454710f3c22f5fdf0b40704c92f25c3 EQUALVERIFY CHECKSIGVERIFY 1 0x47 0x3044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a01'
131
+ ]
132
+ ],
133
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000006a473044022067288ea50aa799543a536ff9306f8e1cba05b9c6b10951175b924f96732555ed022026d7b5265f38d21541519e4a1e55044d5b9e17e15cdbaf29ae3792e99e883e7a012103ba8c8b86dea131c22ab967e6dd99bdae8eff7a1f75a2c35f1f944109e3fe5e22ffffffff010000000000000000015100000000',
134
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
135
+ ],
136
+
137
+ [
138
+ 'The following is f7fdd091fa6d8f5e7a8c2458f5c38faffff2d3f1406b6e4fe2c99dcc0d2d1cbb'
139
+ ],
140
+ [
141
+ 'It caught a bug in the workaround for 23b397edccd3740a74adb603c9756370fafcde9bcc4483eb271ecad09a94dd63 in an overly simple implementation'
142
+ ],
143
+ [
144
+ [
145
+ [
146
+ 'b464e85df2a238416f8bdae11d120add610380ea07f4ef19c5f9dfd472f96c3d',
147
+ 0,
148
+ 'DUP HASH160 0x14 0xbef80ecf3a44500fda1bc92176e442891662aed2 EQUALVERIFY CHECKSIG'
149
+ ],
150
+ [
151
+ 'b7978cc96e59a8b13e0865d3f95657561a7f725be952438637475920bac9eb21',
152
+ 1,
153
+ 'DUP HASH160 0x14 0xbef80ecf3a44500fda1bc92176e442891662aed2 EQUALVERIFY CHECKSIG'
154
+ ]
155
+ ],
156
+ '01000000023d6cf972d4dff9c519eff407ea800361dd0a121de1da8b6f4138a2f25de864b4000000008a4730440220ffda47bfc776bcd269da4832626ac332adfca6dd835e8ecd83cd1ebe7d709b0e022049cffa1cdc102a0b56e0e04913606c70af702a1149dc3b305ab9439288fee090014104266abb36d66eb4218a6dd31f09bb92cf3cfa803c7ea72c1fc80a50f919273e613f895b855fb7465ccbc8919ad1bd4a306c783f22cd3227327694c4fa4c1c439affffffff21ebc9ba20594737864352e95b727f1a565756f9d365083eb1a8596ec98c97b7010000008a4730440220503ff10e9f1e0de731407a4a245531c9ff17676eda461f8ceeb8c06049fa2c810220c008ac34694510298fa60b3f000df01caa244f165b727d4896eb84f81e46bcc4014104266abb36d66eb4218a6dd31f09bb92cf3cfa803c7ea72c1fc80a50f919273e613f895b855fb7465ccbc8919ad1bd4a306c783f22cd3227327694c4fa4c1c439affffffff01f0da5200000000001976a914857ccd42dded6df32949d4646dfa10a92458cfaa88ac00000000',
157
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
158
+ ],
159
+
160
+ [
161
+ 'The following tests for the presence of a bug in the handling of SIGHASH_SINGLE'
162
+ ],
163
+ [
164
+ 'It results in signing the constant 1, instead of something generated based on the transaction,'
165
+ ],
166
+ [
167
+ 'when the input doing the signing has an index greater than the maximum output index'
168
+ ],
169
+ [
170
+ [
171
+ [
172
+ '0000000000000000000000000000000000000000000000000000000000000200',
173
+ 0,
174
+ '1'
175
+ ],
176
+ [
177
+ '0000000000000000000000000000000000000000000000000000000000000100',
178
+ 0,
179
+ 'DUP HASH160 0x14 0xe52b482f2faa8ecbf0db344f93c84ac908557f33 EQUALVERIFY CHECKSIG'
180
+ ]
181
+ ],
182
+ '01000000020002000000000000000000000000000000000000000000000000000000000000000000000151ffffffff0001000000000000000000000000000000000000000000000000000000000000000000006b483045022100c9cdd08798a28af9d1baf44a6c77bcc7e279f47dc487c8c899911bc48feaffcc0220503c5c50ae3998a733263c5c0f7061b483e2b56c4c41b456e7d2f5a78a74c077032102d5c25adb51b61339d2b05315791e21bbe80ea470a49db0135720983c905aace0ffffffff010000000000000000015100000000',
183
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
184
+ ],
58
185
 
59
186
  ['An invalid P2SH Transaction'],
60
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0x7a052c840ba73af26755de42cf01cc9e0a49fef0 EQUAL']],
61
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000009085768617420697320ffffffff010000000000000000015100000000', 'NONE'],
62
-
63
- ['A valid P2SH Transaction using the standard transaction type put forth in BIP 16'],
64
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0x8febbed40483661de6958d957412f82deed8e2f7 EQUAL']],
65
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000006e493046022100c66c9cdf4c43609586d15424c54707156e316d88b0a1534c9e6b0d4f311406310221009c0fe51dbc9c4ab7cc25d3fdbeccf6679fe6827f08edf2b4a9f16ee3eb0e438a0123210338e8034509af564c62644c07691942e0c056752008a173c89f60ab2a88ac2ebfacffffffff010000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
187
+ [
188
+ [
189
+ [
190
+ '0000000000000000000000000000000000000000000000000000000000000100',
191
+ 0,
192
+ 'HASH160 0x14 0x7a052c840ba73af26755de42cf01cc9e0a49fef0 EQUAL'
193
+ ]
194
+ ],
195
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000009085768617420697320ffffffff010000000000000000015100000000',
196
+ 'NONE'
197
+ ],
198
+
199
+ [
200
+ 'A valid P2SH Transaction using the standard transaction type put forth in BIP 16'
201
+ ],
202
+ [
203
+ [
204
+ [
205
+ '0000000000000000000000000000000000000000000000000000000000000100',
206
+ 0,
207
+ 'HASH160 0x14 0x8febbed40483661de6958d957412f82deed8e2f7 EQUAL'
208
+ ]
209
+ ],
210
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000006e493046022100c66c9cdf4c43609586d15424c54707156e316d88b0a1534c9e6b0d4f311406310221009c0fe51dbc9c4ab7cc25d3fdbeccf6679fe6827f08edf2b4a9f16ee3eb0e438a0123210338e8034509af564c62644c07691942e0c056752008a173c89f60ab2a88ac2ebfacffffffff010000000000000000015100000000',
211
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
212
+ ],
66
213
 
67
214
  ['Tests for CheckTransaction()'],
68
215
  ['MAX_MONEY output'],
69
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0x32afac281462b822adbec5094b8d4d337dd5bd6a EQUAL']],
70
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000006e493046022100e1eadba00d9296c743cb6ecc703fd9ddc9b3cd12906176a226ae4c18d6b00796022100a71aef7d2874deff681ba6080f1b278bac7bb99c61b08a85f4311970ffe7f63f012321030c0588dc44d92bdcbf8e72093466766fdc265ead8db64517b0c542275b70fffbacffffffff010040075af0750700015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
216
+ [
217
+ [
218
+ [
219
+ '0000000000000000000000000000000000000000000000000000000000000100',
220
+ 0,
221
+ 'HASH160 0x14 0x32afac281462b822adbec5094b8d4d337dd5bd6a EQUAL'
222
+ ]
223
+ ],
224
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000006e493046022100e1eadba00d9296c743cb6ecc703fd9ddc9b3cd12906176a226ae4c18d6b00796022100a71aef7d2874deff681ba6080f1b278bac7bb99c61b08a85f4311970ffe7f63f012321030c0588dc44d92bdcbf8e72093466766fdc265ead8db64517b0c542275b70fffbacffffffff010040075af0750700015100000000',
225
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
226
+ ],
71
227
 
72
228
  ['MAX_MONEY output + 0 output'],
73
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0xb558cbf4930954aa6a344363a15668d7477ae716 EQUAL']],
74
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000006d483045022027deccc14aa6668e78a8c9da3484fbcd4f9dcc9bb7d1b85146314b21b9ae4d86022100d0b43dece8cfb07348de0ca8bc5b86276fa88f7f2138381128b7c36ab2e42264012321029bb13463ddd5d2cc05da6e84e37536cb9525703cfd8f43afdb414988987a92f6acffffffff020040075af075070001510000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
229
+ [
230
+ [
231
+ [
232
+ '0000000000000000000000000000000000000000000000000000000000000100',
233
+ 0,
234
+ 'HASH160 0x14 0xb558cbf4930954aa6a344363a15668d7477ae716 EQUAL'
235
+ ]
236
+ ],
237
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000006d483045022027deccc14aa6668e78a8c9da3484fbcd4f9dcc9bb7d1b85146314b21b9ae4d86022100d0b43dece8cfb07348de0ca8bc5b86276fa88f7f2138381128b7c36ab2e42264012321029bb13463ddd5d2cc05da6e84e37536cb9525703cfd8f43afdb414988987a92f6acffffffff020040075af075070001510000000000000000015100000000',
238
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
239
+ ],
75
240
 
76
241
  ['Coinbase of size 2'],
77
242
  ['Note the input is just required to make the tester happy'],
78
- [[['0000000000000000000000000000000000000000000000000000000000000000', -1, '1']],
79
- '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff025151ffffffff010000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
243
+ [
244
+ [
245
+ [
246
+ '0000000000000000000000000000000000000000000000000000000000000000',
247
+ -1,
248
+ '1'
249
+ ]
250
+ ],
251
+ '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff025151ffffffff010000000000000000015100000000',
252
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
253
+ ],
80
254
 
81
255
  ['Coinbase of size 100'],
82
256
  ['Note the input is just required to make the tester happy'],
83
- [[['0000000000000000000000000000000000000000000000000000000000000000', -1, '1']],
84
- '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6451515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151ffffffff010000000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
85
-
86
- ['Simple transaction with first input is signed with SIGHASH_ALL, second with SIGHASH_ANYONECANPAY'],
87
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG'],
88
- ['0000000000000000000000000000000000000000000000000000000000000200', 0, '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG']],
89
- '010000000200010000000000000000000000000000000000000000000000000000000000000000000049483045022100d180fd2eb9140aeb4210c9204d3f358766eb53842b2a9473db687fa24b12a3cc022079781799cd4f038b85135bbe49ec2b57f306b2bb17101b17f71f000fcab2b6fb01ffffffff0002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
90
-
91
- ['Same as above, but we change the sequence number of the first input to check that SIGHASH_ANYONECANPAY is being followed'],
92
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG'],
93
- ['0000000000000000000000000000000000000000000000000000000000000200', 0, '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG']],
94
- '01000000020001000000000000000000000000000000000000000000000000000000000000000000004948304502203a0f5f0e1f2bdbcd04db3061d18f3af70e07f4f467cbc1b8116f267025f5360b022100c792b6e215afc5afc721a351ec413e714305cb749aae3d7fee76621313418df101010000000002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
95
-
96
- ['afd9c17f8913577ec3509520bd6e5d63e9c0fd2a5f70c787993b097ba6ca9fae which has several SIGHASH_SINGLE signatures'],
97
- [[['63cfa5a09dc540bf63e53713b82d9ea3692ca97cd608c384f2aa88e51a0aac70', 0, 'DUP HASH160 0x14 0xdcf72c4fd02f5a987cf9b02f2fabfcac3341a87d EQUALVERIFY CHECKSIG'],
98
- ['04e8d0fcf3846c6734477b98f0f3d4badfb78f020ee097a0be5fe347645b817d', 1, 'DUP HASH160 0x14 0xdcf72c4fd02f5a987cf9b02f2fabfcac3341a87d EQUALVERIFY CHECKSIG'],
99
- ['ee1377aff5d0579909e11782e1d2f5f7b84d26537be7f5516dd4e43373091f3f', 1, 'DUP HASH160 0x14 0xdcf72c4fd02f5a987cf9b02f2fabfcac3341a87d EQUALVERIFY CHECKSIG']],
100
- '010000000370ac0a1ae588aaf284c308d67ca92c69a39e2db81337e563bf40c59da0a5cf63000000006a4730440220360d20baff382059040ba9be98947fd678fb08aab2bb0c172efa996fd8ece9b702201b4fb0de67f015c90e7ac8a193aeab486a1f587e0f54d0fb9552ef7f5ce6caec032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff7d815b6447e35fbea097e00e028fb7dfbad4f3f0987b4734676c84f3fcd0e804010000006b483045022100c714310be1e3a9ff1c5f7cacc65c2d8e781fc3a88ceb063c6153bf950650802102200b2d0979c76e12bb480da635f192cc8dc6f905380dd4ac1ff35a4f68f462fffd032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff3f1f097333e4d46d51f5e77b53264db8f7f5d2e18217e1099957d0f5af7713ee010000006c493046022100b663499ef73273a3788dea342717c2640ac43c5a1cf862c9e09b206fcb3f6bb8022100b09972e75972d9148f2bdd462e5cb69b57c1214b88fc55ca638676c07cfc10d8032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff0380841e00000000001976a914bfb282c70c4191f45b5a6665cad1682f2c9cfdfb88ac80841e00000000001976a9149857cc07bed33a5cf12b9c5e0500b675d500c81188ace0fd1c00000000001976a91443c52850606c872403c0601e69fa34b26f62db4a88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
101
-
102
- ['ddc454a1c0c35c188c98976b17670f69e586d9c0f3593ea879928332f0a069e7, which spends an input that pushes using a PUSHDATA1 that is negative when read as signed'],
103
- [[['c5510a5dd97a25f43175af1fe649b707b1df8e1a41489bac33a23087027a2f48', 0, '0x4c 0xae 0x606563686f2022553246736447566b58312b5a536e587574356542793066794778625456415675534a6c376a6a334878416945325364667657734f53474f36633338584d7439435c6e543249584967306a486956304f376e775236644546673d3d22203e20743b206f70656e73736c20656e63202d7061737320706173733a5b314a564d7751432d707269766b65792d6865785d202d64202d6165732d3235362d636263202d61202d696e207460 DROP DUP HASH160 0x14 0xbfd7436b6265aa9de506f8a994f881ff08cc2872 EQUALVERIFY CHECKSIG']],
104
- '0100000001482f7a028730a233ac9b48411a8edfb107b749e61faf7531f4257ad95d0a51c5000000008b483045022100bf0bbae9bde51ad2b222e87fbf67530fbafc25c903519a1e5dcc52a32ff5844e022028c4d9ad49b006dd59974372a54291d5764be541574bb0c4dc208ec51f80b7190141049dd4aad62741dc27d5f267f7b70682eee22e7e9c1923b9c0957bdae0b96374569b460eb8d5b40d972e8c7c0ad441de3d94c4a29864b212d56050acb980b72b2bffffffff0180969800000000001976a914e336d0017a9d28de99d16472f6ca6d5a3a8ebc9988ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
257
+ [
258
+ [
259
+ [
260
+ '0000000000000000000000000000000000000000000000000000000000000000',
261
+ -1,
262
+ '1'
263
+ ]
264
+ ],
265
+ '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff6451515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151ffffffff010000000000000000015100000000',
266
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
267
+ ],
268
+
269
+ [
270
+ 'Simple transaction with first input is signed with SIGHASH_ALL, second with SIGHASH_ANYONECANPAY'
271
+ ],
272
+ [
273
+ [
274
+ [
275
+ '0000000000000000000000000000000000000000000000000000000000000100',
276
+ 0,
277
+ '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG'
278
+ ],
279
+ [
280
+ '0000000000000000000000000000000000000000000000000000000000000200',
281
+ 0,
282
+ '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG'
283
+ ]
284
+ ],
285
+ '010000000200010000000000000000000000000000000000000000000000000000000000000000000049483045022100d180fd2eb9140aeb4210c9204d3f358766eb53842b2a9473db687fa24b12a3cc022079781799cd4f038b85135bbe49ec2b57f306b2bb17101b17f71f000fcab2b6fb01ffffffff0002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000',
286
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
287
+ ],
288
+
289
+ [
290
+ 'Same as above, but we change the sequence number of the first input to check that SIGHASH_ANYONECANPAY is being followed'
291
+ ],
292
+ [
293
+ [
294
+ [
295
+ '0000000000000000000000000000000000000000000000000000000000000100',
296
+ 0,
297
+ '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG'
298
+ ],
299
+ [
300
+ '0000000000000000000000000000000000000000000000000000000000000200',
301
+ 0,
302
+ '0x21 0x035e7f0d4d0841bcd56c39337ed086b1a633ee770c1ffdd94ac552a95ac2ce0efc CHECKSIG'
303
+ ]
304
+ ],
305
+ '01000000020001000000000000000000000000000000000000000000000000000000000000000000004948304502203a0f5f0e1f2bdbcd04db3061d18f3af70e07f4f467cbc1b8116f267025f5360b022100c792b6e215afc5afc721a351ec413e714305cb749aae3d7fee76621313418df101010000000002000000000000000000000000000000000000000000000000000000000000000000004847304402205f7530653eea9b38699e476320ab135b74771e1c48b81a5d041e2ca84b9be7a802200ac8d1f40fb026674fe5a5edd3dea715c27baa9baca51ed45ea750ac9dc0a55e81ffffffff010100000000000000015100000000',
306
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
307
+ ],
308
+
309
+ [
310
+ 'afd9c17f8913577ec3509520bd6e5d63e9c0fd2a5f70c787993b097ba6ca9fae which has several SIGHASH_SINGLE signatures'
311
+ ],
312
+ [
313
+ [
314
+ [
315
+ '63cfa5a09dc540bf63e53713b82d9ea3692ca97cd608c384f2aa88e51a0aac70',
316
+ 0,
317
+ 'DUP HASH160 0x14 0xdcf72c4fd02f5a987cf9b02f2fabfcac3341a87d EQUALVERIFY CHECKSIG'
318
+ ],
319
+ [
320
+ '04e8d0fcf3846c6734477b98f0f3d4badfb78f020ee097a0be5fe347645b817d',
321
+ 1,
322
+ 'DUP HASH160 0x14 0xdcf72c4fd02f5a987cf9b02f2fabfcac3341a87d EQUALVERIFY CHECKSIG'
323
+ ],
324
+ [
325
+ 'ee1377aff5d0579909e11782e1d2f5f7b84d26537be7f5516dd4e43373091f3f',
326
+ 1,
327
+ 'DUP HASH160 0x14 0xdcf72c4fd02f5a987cf9b02f2fabfcac3341a87d EQUALVERIFY CHECKSIG'
328
+ ]
329
+ ],
330
+ '010000000370ac0a1ae588aaf284c308d67ca92c69a39e2db81337e563bf40c59da0a5cf63000000006a4730440220360d20baff382059040ba9be98947fd678fb08aab2bb0c172efa996fd8ece9b702201b4fb0de67f015c90e7ac8a193aeab486a1f587e0f54d0fb9552ef7f5ce6caec032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff7d815b6447e35fbea097e00e028fb7dfbad4f3f0987b4734676c84f3fcd0e804010000006b483045022100c714310be1e3a9ff1c5f7cacc65c2d8e781fc3a88ceb063c6153bf950650802102200b2d0979c76e12bb480da635f192cc8dc6f905380dd4ac1ff35a4f68f462fffd032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff3f1f097333e4d46d51f5e77b53264db8f7f5d2e18217e1099957d0f5af7713ee010000006c493046022100b663499ef73273a3788dea342717c2640ac43c5a1cf862c9e09b206fcb3f6bb8022100b09972e75972d9148f2bdd462e5cb69b57c1214b88fc55ca638676c07cfc10d8032103579ca2e6d107522f012cd00b52b9a65fb46f0c57b9b8b6e377c48f526a44741affffffff0380841e00000000001976a914bfb282c70c4191f45b5a6665cad1682f2c9cfdfb88ac80841e00000000001976a9149857cc07bed33a5cf12b9c5e0500b675d500c81188ace0fd1c00000000001976a91443c52850606c872403c0601e69fa34b26f62db4a88ac00000000',
331
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
332
+ ],
333
+
334
+ [
335
+ 'ddc454a1c0c35c188c98976b17670f69e586d9c0f3593ea879928332f0a069e7, which spends an input that pushes using a PUSHDATA1 that is negative when read as signed'
336
+ ],
337
+ [
338
+ [
339
+ [
340
+ 'c5510a5dd97a25f43175af1fe649b707b1df8e1a41489bac33a23087027a2f48',
341
+ 0,
342
+ '0x4c 0xae 0x606563686f2022553246736447566b58312b5a536e587574356542793066794778625456415675534a6c376a6a334878416945325364667657734f53474f36633338584d7439435c6e543249584967306a486956304f376e775236644546673d3d22203e20743b206f70656e73736c20656e63202d7061737320706173733a5b314a564d7751432d707269766b65792d6865785d202d64202d6165732d3235362d636263202d61202d696e207460 DROP DUP HASH160 0x14 0xbfd7436b6265aa9de506f8a994f881ff08cc2872 EQUALVERIFY CHECKSIG'
343
+ ]
344
+ ],
345
+ '0100000001482f7a028730a233ac9b48411a8edfb107b749e61faf7531f4257ad95d0a51c5000000008b483045022100bf0bbae9bde51ad2b222e87fbf67530fbafc25c903519a1e5dcc52a32ff5844e022028c4d9ad49b006dd59974372a54291d5764be541574bb0c4dc208ec51f80b7190141049dd4aad62741dc27d5f267f7b70682eee22e7e9c1923b9c0957bdae0b96374569b460eb8d5b40d972e8c7c0ad441de3d94c4a29864b212d56050acb980b72b2bffffffff0180969800000000001976a914e336d0017a9d28de99d16472f6ca6d5a3a8ebc9988ac00000000',
346
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
347
+ ],
105
348
 
106
349
  ['Correct signature order'],
107
350
  ['Note the input is just required to make the tester happy'],
108
- [[['b3da01dd4aae683c7aee4d5d8b52a540a508e1115f77cd7fa9a291243f501223', 0, 'HASH160 0x14 0xb1ce99298d5f07364b57b1e5c9cc00be0b04a954 EQUAL']],
109
- '01000000012312503f2491a2a97fcd775f11e108a540a5528b5d4dee7a3c68ae4add01dab300000000fdfe0000483045022100f6649b0eddfdfd4ad55426663385090d51ee86c3481bdc6b0c18ea6c0ece2c0b0220561c315b07cffa6f7dd9df96dbae9200c2dee09bf93cc35ca05e6cdf613340aa0148304502207aacee820e08b0b174e248abd8d7a34ed63b5da3abedb99934df9fddd65c05c4022100dfe87896ab5ee3df476c2655f9fbe5bd089dccbef3e4ea05b5d121169fe7f5f4014c695221031d11db38972b712a9fe1fc023577c7ae3ddb4a3004187d41c45121eecfdbb5b7210207ec36911b6ad2382860d32989c7b8728e9489d7bbc94a6b5509ef0029be128821024ea9fac06f666a4adc3fc1357b7bec1fd0bdece2b9d08579226a8ebde53058e453aeffffffff0180380100000000001976a914c9b99cddf847d10685a4fabaa0baf505f7c3dfab88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
110
-
111
- ['cc60b1f899ec0a69b7c3f25ddf32c4524096a9c5b01cbd84c6d0312a0c478984, which is a fairly strange transaction which relies on OP_CHECKSIG returning 0 when checking a completely invalid sig of length 0'],
112
- [[['cbebc4da731e8995fe97f6fadcd731b36ad40e5ecb31e38e904f6e5982fa09f7', 0, '0x2102085c6600657566acc2d6382a47bc3f324008d2aa10940dd7705a48aa2a5a5e33ac7c2103f5d0fb955f95dd6be6115ce85661db412ec6a08abcbfce7da0ba8297c6cc0ec4ac7c5379a820d68df9e32a147cffa36193c6f7c43a1c8c69cda530e1c6db354bfabdcfefaf3c875379a820f531f3041d3136701ea09067c53e7159c8f9b2746a56c3d82966c54bbc553226879a5479827701200122a59a5379827701200122a59a6353798277537982778779679a68']],
113
- '0100000001f709fa82596e4f908ee331cb5e0ed46ab331d7dcfaf697fe95891e73dac4ebcb000000008c20ca42095840735e89283fec298e62ac2ddea9b5f34a8cbb7097ad965b87568100201b1b01dc829177da4a14551d2fc96a9db00c6501edfa12f22cd9cefd335c227f483045022100a9df60536df5733dd0de6bc921fab0b3eee6426501b43a228afa2c90072eb5ca02201c78b74266fac7d1db5deff080d8a403743203f109fbcabf6d5a760bf87386d20100ffffffff01c075790000000000232103611f9a45c18f28f06f19076ad571c344c82ce8fcfe34464cf8085217a2d294a6ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
351
+ [
352
+ [
353
+ [
354
+ 'b3da01dd4aae683c7aee4d5d8b52a540a508e1115f77cd7fa9a291243f501223',
355
+ 0,
356
+ 'HASH160 0x14 0xb1ce99298d5f07364b57b1e5c9cc00be0b04a954 EQUAL'
357
+ ]
358
+ ],
359
+ '01000000012312503f2491a2a97fcd775f11e108a540a5528b5d4dee7a3c68ae4add01dab300000000fdfe0000483045022100f6649b0eddfdfd4ad55426663385090d51ee86c3481bdc6b0c18ea6c0ece2c0b0220561c315b07cffa6f7dd9df96dbae9200c2dee09bf93cc35ca05e6cdf613340aa0148304502207aacee820e08b0b174e248abd8d7a34ed63b5da3abedb99934df9fddd65c05c4022100dfe87896ab5ee3df476c2655f9fbe5bd089dccbef3e4ea05b5d121169fe7f5f4014c695221031d11db38972b712a9fe1fc023577c7ae3ddb4a3004187d41c45121eecfdbb5b7210207ec36911b6ad2382860d32989c7b8728e9489d7bbc94a6b5509ef0029be128821024ea9fac06f666a4adc3fc1357b7bec1fd0bdece2b9d08579226a8ebde53058e453aeffffffff0180380100000000001976a914c9b99cddf847d10685a4fabaa0baf505f7c3dfab88ac00000000',
360
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
361
+ ],
362
+
363
+ [
364
+ 'cc60b1f899ec0a69b7c3f25ddf32c4524096a9c5b01cbd84c6d0312a0c478984, which is a fairly strange transaction which relies on OP_CHECKSIG returning 0 when checking a completely invalid sig of length 0'
365
+ ],
366
+ [
367
+ [
368
+ [
369
+ 'cbebc4da731e8995fe97f6fadcd731b36ad40e5ecb31e38e904f6e5982fa09f7',
370
+ 0,
371
+ '0x2102085c6600657566acc2d6382a47bc3f324008d2aa10940dd7705a48aa2a5a5e33ac7c2103f5d0fb955f95dd6be6115ce85661db412ec6a08abcbfce7da0ba8297c6cc0ec4ac7c5379a820d68df9e32a147cffa36193c6f7c43a1c8c69cda530e1c6db354bfabdcfefaf3c875379a820f531f3041d3136701ea09067c53e7159c8f9b2746a56c3d82966c54bbc553226879a5479827701200122a59a5379827701200122a59a6353798277537982778779679a68'
372
+ ]
373
+ ],
374
+ '0100000001f709fa82596e4f908ee331cb5e0ed46ab331d7dcfaf697fe95891e73dac4ebcb000000008c20ca42095840735e89283fec298e62ac2ddea9b5f34a8cbb7097ad965b87568100201b1b01dc829177da4a14551d2fc96a9db00c6501edfa12f22cd9cefd335c227f483045022100a9df60536df5733dd0de6bc921fab0b3eee6426501b43a228afa2c90072eb5ca02201c78b74266fac7d1db5deff080d8a403743203f109fbcabf6d5a760bf87386d20100ffffffff01c075790000000000232103611f9a45c18f28f06f19076ad571c344c82ce8fcfe34464cf8085217a2d294a6ac00000000',
375
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
376
+ ],
114
377
 
115
378
  ['Empty pubkey'],
116
- [[['229257c295e7f555421c1bfec8538dd30a4b5c37c1c8810bbe83cafa7811652c', 0, '0x00 CHECKSIG NOT']],
117
- '01000000012c651178faca83be0b81c8c1375c4b0ad38d53c8fe1b1c4255f5e795c25792220000000049483045022100d6044562284ac76c985018fc4a90127847708c9edb280996c507b28babdc4b2a02203d74eca3f1a4d1eea7ff77b528fde6d5dc324ec2dbfdb964ba885f643b9704cd01ffffffff010100000000000000232102c2410f8891ae918cab4ffc4bb4a3b0881be67c7a1e7faa8b5acf9ab8932ec30cac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
379
+ [
380
+ [
381
+ [
382
+ '229257c295e7f555421c1bfec8538dd30a4b5c37c1c8810bbe83cafa7811652c',
383
+ 0,
384
+ '0x00 CHECKSIG NOT'
385
+ ]
386
+ ],
387
+ '01000000012c651178faca83be0b81c8c1375c4b0ad38d53c8fe1b1c4255f5e795c25792220000000049483045022100d6044562284ac76c985018fc4a90127847708c9edb280996c507b28babdc4b2a02203d74eca3f1a4d1eea7ff77b528fde6d5dc324ec2dbfdb964ba885f643b9704cd01ffffffff010100000000000000232102c2410f8891ae918cab4ffc4bb4a3b0881be67c7a1e7faa8b5acf9ab8932ec30cac00000000',
388
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
389
+ ],
118
390
 
119
391
  ['Empty signature'],
120
- [[['9ca93cfd8e3806b9d9e2ba1cf64e3cc6946ee0119670b1796a09928d14ea25f7', 0, '0x21 0x028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02 CHECKSIG NOT']],
121
- '0100000001f725ea148d92096a79b1709611e06e94c63c4ef61cbae2d9b906388efd3ca99c000000000100ffffffff0101000000000000002321028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
122
-
123
- [[['444e00ed7840d41f20ecd9c11d3f91982326c731a02f3c05748414a4fa9e59be', 0, '1 0x00 0x21 0x02136b04758b0b6e363e7a6fbe83aaf527a153db2b060d36cc29f7f8309ba6e458 2 CHECKMULTISIG']],
124
- '0100000001be599efaa4148474053c2fa031c7262398913f1dc1d9ec201fd44078ed004e44000000004900473044022022b29706cb2ed9ef0cb3c97b72677ca2dfd7b4160f7b4beb3ba806aa856c401502202d1e52582412eba2ed474f1f437a427640306fd3838725fab173ade7fe4eae4a01ffffffff010100000000000000232103ac4bba7e7ca3e873eea49e08132ad30c7f03640b6539e9b59903cf14fd016bbbac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
125
-
126
- [[['e16abbe80bf30c080f63830c8dbf669deaef08957446e95940227d8c5e6db612', 0, '1 0x21 0x03905380c7013e36e6e19d305311c1b81fce6581f5ee1c86ef0627c68c9362fc9f 0x00 2 CHECKMULTISIG']],
127
- '010000000112b66d5e8c7d224059e946749508efea9d66bf8d0c83630f080cf30be8bb6ae100000000490047304402206ffe3f14caf38ad5c1544428e99da76ffa5455675ec8d9780fac215ca17953520220779502985e194d84baa36b9bd40a0dbd981163fa191eb884ae83fc5bd1c86b1101ffffffff010100000000000000232103905380c7013e36e6e19d305311c1b81fce6581f5ee1c86ef0627c68c9362fc9fac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
128
-
129
- [[['ebbcf4bfce13292bd791d6a65a2a858d59adbf737e387e40370d4e64cc70efb0', 0, '2 0x21 0x033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194 0x21 0x03a88b326f8767f4f192ce252afe33c94d25ab1d24f27f159b3cb3aa691ffe1423 2 CHECKMULTISIG NOT']],
130
- '0100000001b0ef70cc644e0d37407e387e73bfad598d852a5aa6d691d72b2913cebff4bceb000000004a00473044022068cd4851fc7f9a892ab910df7a24e616f293bcb5c5fbdfbc304a194b26b60fba022078e6da13d8cb881a22939b952c24f88b97afd06b4c47a47d7f804c9a352a6d6d0100ffffffff0101000000000000002321033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
131
-
132
- [[['ba4cd7ae2ad4d4d13ebfc8ab1d93a63e4a6563f25089a18bf0fc68f282aa88c1', 0, '2 0x21 0x037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1 0x21 0x02edc823cd634f2c4033d94f5755207cb6b60c4b1f1f056ad7471c47de5f2e4d50 2 CHECKMULTISIG NOT']],
133
- '0100000001c188aa82f268fcf08ba18950f263654a3ea6931dabc8bf3ed1d4d42aaed74cba000000004b0000483045022100940378576e069aca261a6b26fb38344e4497ca6751bb10905c76bb689f4222b002204833806b014c26fd801727b792b1260003c55710f87c5adbd7a9cb57446dbc9801ffffffff0101000000000000002321037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
392
+ [
393
+ [
394
+ [
395
+ '9ca93cfd8e3806b9d9e2ba1cf64e3cc6946ee0119670b1796a09928d14ea25f7',
396
+ 0,
397
+ '0x21 0x028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02 CHECKSIG NOT'
398
+ ]
399
+ ],
400
+ '0100000001f725ea148d92096a79b1709611e06e94c63c4ef61cbae2d9b906388efd3ca99c000000000100ffffffff0101000000000000002321028a1d66975dbdf97897e3a4aef450ebeb5b5293e4a0b4a6d3a2daaa0b2b110e02ac00000000',
401
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
402
+ ],
403
+
404
+ [
405
+ [
406
+ [
407
+ '444e00ed7840d41f20ecd9c11d3f91982326c731a02f3c05748414a4fa9e59be',
408
+ 0,
409
+ '1 0x00 0x21 0x02136b04758b0b6e363e7a6fbe83aaf527a153db2b060d36cc29f7f8309ba6e458 2 CHECKMULTISIG'
410
+ ]
411
+ ],
412
+ '0100000001be599efaa4148474053c2fa031c7262398913f1dc1d9ec201fd44078ed004e44000000004900473044022022b29706cb2ed9ef0cb3c97b72677ca2dfd7b4160f7b4beb3ba806aa856c401502202d1e52582412eba2ed474f1f437a427640306fd3838725fab173ade7fe4eae4a01ffffffff010100000000000000232103ac4bba7e7ca3e873eea49e08132ad30c7f03640b6539e9b59903cf14fd016bbbac00000000',
413
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
414
+ ],
415
+
416
+ [
417
+ [
418
+ [
419
+ 'e16abbe80bf30c080f63830c8dbf669deaef08957446e95940227d8c5e6db612',
420
+ 0,
421
+ '1 0x21 0x03905380c7013e36e6e19d305311c1b81fce6581f5ee1c86ef0627c68c9362fc9f 0x00 2 CHECKMULTISIG'
422
+ ]
423
+ ],
424
+ '010000000112b66d5e8c7d224059e946749508efea9d66bf8d0c83630f080cf30be8bb6ae100000000490047304402206ffe3f14caf38ad5c1544428e99da76ffa5455675ec8d9780fac215ca17953520220779502985e194d84baa36b9bd40a0dbd981163fa191eb884ae83fc5bd1c86b1101ffffffff010100000000000000232103905380c7013e36e6e19d305311c1b81fce6581f5ee1c86ef0627c68c9362fc9fac00000000',
425
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
426
+ ],
427
+
428
+ [
429
+ [
430
+ [
431
+ 'ebbcf4bfce13292bd791d6a65a2a858d59adbf737e387e40370d4e64cc70efb0',
432
+ 0,
433
+ '2 0x21 0x033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194 0x21 0x03a88b326f8767f4f192ce252afe33c94d25ab1d24f27f159b3cb3aa691ffe1423 2 CHECKMULTISIG NOT'
434
+ ]
435
+ ],
436
+ '0100000001b0ef70cc644e0d37407e387e73bfad598d852a5aa6d691d72b2913cebff4bceb000000004a00473044022068cd4851fc7f9a892ab910df7a24e616f293bcb5c5fbdfbc304a194b26b60fba022078e6da13d8cb881a22939b952c24f88b97afd06b4c47a47d7f804c9a352a6d6d0100ffffffff0101000000000000002321033bcaa0a602f0d44cc9d5637c6e515b0471db514c020883830b7cefd73af04194ac00000000',
437
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
438
+ ],
439
+
440
+ [
441
+ [
442
+ [
443
+ 'ba4cd7ae2ad4d4d13ebfc8ab1d93a63e4a6563f25089a18bf0fc68f282aa88c1',
444
+ 0,
445
+ '2 0x21 0x037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1 0x21 0x02edc823cd634f2c4033d94f5755207cb6b60c4b1f1f056ad7471c47de5f2e4d50 2 CHECKMULTISIG NOT'
446
+ ]
447
+ ],
448
+ '0100000001c188aa82f268fcf08ba18950f263654a3ea6931dabc8bf3ed1d4d42aaed74cba000000004b0000483045022100940378576e069aca261a6b26fb38344e4497ca6751bb10905c76bb689f4222b002204833806b014c26fd801727b792b1260003c55710f87c5adbd7a9cb57446dbc9801ffffffff0101000000000000002321037c615d761e71d38903609bf4f46847266edc2fb37532047d747ba47eaae5ffe1ac00000000',
449
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
450
+ ],
134
451
 
135
452
  ['OP_CODESEPARATOR tests'],
136
453
 
137
454
  ['Test that SignatureHash() removes OP_CODESEPARATOR with FindAndDelete()'],
138
- [[['bc7fd132fcf817918334822ee6d9bd95c889099c96e07ca2c1eb2cc70db63224', 0, 'CODESEPARATOR 0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIG']],
139
- '01000000012432b60dc72cebc1a27ce0969c0989c895bdd9e62e8234839117f8fc32d17fbc000000004a493046022100a576b52051962c25e642c0fd3d77ee6c92487048e5d90818bcf5b51abaccd7900221008204f8fb121be4ec3b24483b1f92d89b1b0548513a134e345c5442e86e8617a501ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
140
- [[['83e194f90b6ef21fa2e3a365b63794fb5daa844bdc9b25de30899fcfe7b01047', 0, 'CODESEPARATOR CODESEPARATOR 0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIG']],
141
- '01000000014710b0e7cf9f8930de259bdc4b84aa5dfb9437b665a3e3a21ff26e0bf994e183000000004a493046022100a166121a61b4eeb19d8f922b978ff6ab58ead8a5a5552bf9be73dc9c156873ea02210092ad9bc43ee647da4f6652c320800debcf08ec20a094a0aaf085f63ecb37a17201ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
455
+ [
456
+ [
457
+ [
458
+ 'bc7fd132fcf817918334822ee6d9bd95c889099c96e07ca2c1eb2cc70db63224',
459
+ 0,
460
+ 'CODESEPARATOR 0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIG'
461
+ ]
462
+ ],
463
+ '01000000012432b60dc72cebc1a27ce0969c0989c895bdd9e62e8234839117f8fc32d17fbc000000004a493046022100a576b52051962c25e642c0fd3d77ee6c92487048e5d90818bcf5b51abaccd7900221008204f8fb121be4ec3b24483b1f92d89b1b0548513a134e345c5442e86e8617a501ffffffff010000000000000000016a00000000',
464
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
465
+ ],
466
+ [
467
+ [
468
+ [
469
+ '83e194f90b6ef21fa2e3a365b63794fb5daa844bdc9b25de30899fcfe7b01047',
470
+ 0,
471
+ 'CODESEPARATOR CODESEPARATOR 0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIG'
472
+ ]
473
+ ],
474
+ '01000000014710b0e7cf9f8930de259bdc4b84aa5dfb9437b665a3e3a21ff26e0bf994e183000000004a493046022100a166121a61b4eeb19d8f922b978ff6ab58ead8a5a5552bf9be73dc9c156873ea02210092ad9bc43ee647da4f6652c320800debcf08ec20a094a0aaf085f63ecb37a17201ffffffff010000000000000000016a00000000',
475
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
476
+ ],
142
477
 
143
478
  ['Hashed data starts at the CODESEPARATOR'],
144
- [[['326882a7f22b5191f1a0cc9962ca4b878cd969cf3b3a70887aece4d801a0ba5e', 0, '0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CODESEPARATOR CHECKSIG']],
145
- '01000000015ebaa001d8e4ec7a88703a3bcf69d98c874bca6299cca0f191512bf2a7826832000000004948304502203bf754d1c6732fbf87c5dcd81258aefd30f2060d7bd8ac4a5696f7927091dad1022100f5bcb726c4cf5ed0ed34cc13dadeedf628ae1045b7cb34421bc60b89f4cecae701ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
479
+ [
480
+ [
481
+ [
482
+ '326882a7f22b5191f1a0cc9962ca4b878cd969cf3b3a70887aece4d801a0ba5e',
483
+ 0,
484
+ '0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CODESEPARATOR CHECKSIG'
485
+ ]
486
+ ],
487
+ '01000000015ebaa001d8e4ec7a88703a3bcf69d98c874bca6299cca0f191512bf2a7826832000000004948304502203bf754d1c6732fbf87c5dcd81258aefd30f2060d7bd8ac4a5696f7927091dad1022100f5bcb726c4cf5ed0ed34cc13dadeedf628ae1045b7cb34421bc60b89f4cecae701ffffffff010000000000000000016a00000000',
488
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
489
+ ],
146
490
 
147
491
  ['But only if execution has reached it'],
148
- [[['a955032f4d6b0c9bfe8cad8f00a8933790b9c1dc28c82e0f48e75b35da0e4944', 0, '0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIGVERIFY CODESEPARATOR 0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIGVERIFY CODESEPARATOR 1']],
149
- '010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a900000000924830450221009c0a27f886a1d8cb87f6f595fbc3163d28f7a81ec3c4b252ee7f3ac77fd13ffa02203caa8dfa09713c8c4d7ef575c75ed97812072405d932bd11e6a1593a98b679370148304502201e3861ef39a526406bad1e20ecad06be7375ad40ddb582c9be42d26c3a0d7b240221009d0a3985e96522e59635d19cc4448547477396ce0ef17a58e7d74c3ef464292301ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
492
+ [
493
+ [
494
+ [
495
+ 'a955032f4d6b0c9bfe8cad8f00a8933790b9c1dc28c82e0f48e75b35da0e4944',
496
+ 0,
497
+ '0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIGVERIFY CODESEPARATOR 0x21 0x038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041 CHECKSIGVERIFY CODESEPARATOR 1'
498
+ ]
499
+ ],
500
+ '010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a900000000924830450221009c0a27f886a1d8cb87f6f595fbc3163d28f7a81ec3c4b252ee7f3ac77fd13ffa02203caa8dfa09713c8c4d7ef575c75ed97812072405d932bd11e6a1593a98b679370148304502201e3861ef39a526406bad1e20ecad06be7375ad40ddb582c9be42d26c3a0d7b240221009d0a3985e96522e59635d19cc4448547477396ce0ef17a58e7d74c3ef464292301ffffffff010000000000000000016a00000000',
501
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
502
+ ],
150
503
 
151
504
  ['CODESEPARATOR in an unexecuted IF block does not change what is hashed'],
152
- [[['a955032f4d6b0c9bfe8cad8f00a8933790b9c1dc28c82e0f48e75b35da0e4944', 0, 'IF CODESEPARATOR ENDIF 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 CHECKSIGVERIFY CODESEPARATOR 1']],
153
- '010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a9000000004a48304502207a6974a77c591fa13dff60cabbb85a0de9e025c09c65a4b2285e47ce8e22f761022100f0efaac9ff8ac36b10721e0aae1fb975c90500b50c56e8a0cc52b0403f0425dd0100ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
505
+ [
506
+ [
507
+ [
508
+ 'a955032f4d6b0c9bfe8cad8f00a8933790b9c1dc28c82e0f48e75b35da0e4944',
509
+ 0,
510
+ 'IF CODESEPARATOR ENDIF 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 CHECKSIGVERIFY CODESEPARATOR 1'
511
+ ]
512
+ ],
513
+ '010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a9000000004a48304502207a6974a77c591fa13dff60cabbb85a0de9e025c09c65a4b2285e47ce8e22f761022100f0efaac9ff8ac36b10721e0aae1fb975c90500b50c56e8a0cc52b0403f0425dd0100ffffffff010000000000000000016a00000000',
514
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
515
+ ],
154
516
 
155
517
  ['As above, with the IF block executed'],
156
- [[['a955032f4d6b0c9bfe8cad8f00a8933790b9c1dc28c82e0f48e75b35da0e4944', 0, 'IF CODESEPARATOR ENDIF 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 CHECKSIGVERIFY CODESEPARATOR 1']],
157
- '010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a9000000004a483045022100fa4a74ba9fd59c59f46c3960cf90cbe0d2b743c471d24a3d5d6db6002af5eebb02204d70ec490fd0f7055a7c45f86514336e3a7f03503dacecabb247fc23f15c83510151ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
518
+ [
519
+ [
520
+ [
521
+ 'a955032f4d6b0c9bfe8cad8f00a8933790b9c1dc28c82e0f48e75b35da0e4944',
522
+ 0,
523
+ 'IF CODESEPARATOR ENDIF 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 CHECKSIGVERIFY CODESEPARATOR 1'
524
+ ]
525
+ ],
526
+ '010000000144490eda355be7480f2ec828dcc1b9903793a8008fad8cfe9b0c6b4d2f0355a9000000004a483045022100fa4a74ba9fd59c59f46c3960cf90cbe0d2b743c471d24a3d5d6db6002af5eebb02204d70ec490fd0f7055a7c45f86514336e3a7f03503dacecabb247fc23f15c83510151ffffffff010000000000000000016a00000000',
527
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
528
+ ],
158
529
 
159
530
  ['CHECKSIG is legal in scriptSigs'],
160
- [[['ccf7f4053a02e653c36ac75c891b7496d0dc5ce5214f6c913d9cf8f1329ebee0', 0, 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG']],
161
- '0100000001e0be9e32f1f89c3d916c4f21e55cdcd096741b895cc76ac353e6023a05f4f7cc00000000d86149304602210086e5f736a2c3622ebb62bd9d93d8e5d76508b98be922b97160edc3dcca6d8c47022100b23c312ac232a4473f19d2aeb95ab7bdf2b65518911a0d72d50e38b5dd31dc820121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac4730440220508fa761865c8abd81244a168392876ee1d94e8ed83897066b5e2df2400dad24022043f5ee7538e87e9c6aef7ef55133d3e51da7cc522830a9c4d736977a76ef755c0121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
531
+ [
532
+ [
533
+ [
534
+ 'ccf7f4053a02e653c36ac75c891b7496d0dc5ce5214f6c913d9cf8f1329ebee0',
535
+ 0,
536
+ 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG'
537
+ ]
538
+ ],
539
+ '0100000001e0be9e32f1f89c3d916c4f21e55cdcd096741b895cc76ac353e6023a05f4f7cc00000000d86149304602210086e5f736a2c3622ebb62bd9d93d8e5d76508b98be922b97160edc3dcca6d8c47022100b23c312ac232a4473f19d2aeb95ab7bdf2b65518911a0d72d50e38b5dd31dc820121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac4730440220508fa761865c8abd81244a168392876ee1d94e8ed83897066b5e2df2400dad24022043f5ee7538e87e9c6aef7ef55133d3e51da7cc522830a9c4d736977a76ef755c0121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000',
540
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
541
+ ],
162
542
 
163
543
  ['Same semantics for OP_CODESEPARATOR'],
164
- [[['10c9f0effe83e97f80f067de2b11c6a00c3088a4bce42c5ae761519af9306f3c', 1, 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG']],
165
- '01000000013c6f30f99a5161e75a2ce4bca488300ca0c6112bde67f0807fe983feeff0c91001000000e608646561646265656675ab61493046022100ce18d384221a731c993939015e3d1bcebafb16e8c0b5b5d14097ec8177ae6f28022100bcab227af90bab33c3fe0a9abfee03ba976ee25dc6ce542526e9b2e56e14b7f10121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac493046022100c3b93edcc0fd6250eb32f2dd8a0bba1754b0f6c3be8ed4100ed582f3db73eba2022100bf75b5bd2eff4d6bf2bda2e34a40fcc07d4aa3cf862ceaa77b47b81eff829f9a01ab21038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
166
-
167
- ['Signatures are removed from the script they are in by FindAndDelete() in the CHECKSIG code; even multiple instances of one signature can be removed.'],
168
- [[['6056ebd549003b10cbbd915cea0d82209fe40b8617104be917a26fa92cbe3d6f', 0, 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG']],
169
- '01000000016f3dbe2ca96fa217e94b1017860be49f20820dea5c91bdcb103b0049d5eb566000000000fd1d0147304402203989ac8f9ad36b5d0919d97fa0a7f70c5272abee3b14477dc646288a8b976df5022027d19da84a066af9053ad3d1d7459d171b7e3a80bc6c4ef7a330677a6be548140147304402203989ac8f9ad36b5d0919d97fa0a7f70c5272abee3b14477dc646288a8b976df5022027d19da84a066af9053ad3d1d7459d171b7e3a80bc6c4ef7a330677a6be548140121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac47304402203757e937ba807e4a5da8534c17f9d121176056406a6465054bdd260457515c1a02200f02eccf1bec0f3a0d65df37889143c2e88ab7acec61a7b6f5aa264139141a2b0121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
544
+ [
545
+ [
546
+ [
547
+ '10c9f0effe83e97f80f067de2b11c6a00c3088a4bce42c5ae761519af9306f3c',
548
+ 1,
549
+ 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG'
550
+ ]
551
+ ],
552
+ '01000000013c6f30f99a5161e75a2ce4bca488300ca0c6112bde67f0807fe983feeff0c91001000000e608646561646265656675ab61493046022100ce18d384221a731c993939015e3d1bcebafb16e8c0b5b5d14097ec8177ae6f28022100bcab227af90bab33c3fe0a9abfee03ba976ee25dc6ce542526e9b2e56e14b7f10121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac493046022100c3b93edcc0fd6250eb32f2dd8a0bba1754b0f6c3be8ed4100ed582f3db73eba2022100bf75b5bd2eff4d6bf2bda2e34a40fcc07d4aa3cf862ceaa77b47b81eff829f9a01ab21038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000',
553
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
554
+ ],
555
+
556
+ [
557
+ 'Signatures are removed from the script they are in by FindAndDelete() in the CHECKSIG code; even multiple instances of one signature can be removed.'
558
+ ],
559
+ [
560
+ [
561
+ [
562
+ '6056ebd549003b10cbbd915cea0d82209fe40b8617104be917a26fa92cbe3d6f',
563
+ 0,
564
+ 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG'
565
+ ]
566
+ ],
567
+ '01000000016f3dbe2ca96fa217e94b1017860be49f20820dea5c91bdcb103b0049d5eb566000000000fd1d0147304402203989ac8f9ad36b5d0919d97fa0a7f70c5272abee3b14477dc646288a8b976df5022027d19da84a066af9053ad3d1d7459d171b7e3a80bc6c4ef7a330677a6be548140147304402203989ac8f9ad36b5d0919d97fa0a7f70c5272abee3b14477dc646288a8b976df5022027d19da84a066af9053ad3d1d7459d171b7e3a80bc6c4ef7a330677a6be548140121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ac47304402203757e937ba807e4a5da8534c17f9d121176056406a6465054bdd260457515c1a02200f02eccf1bec0f3a0d65df37889143c2e88ab7acec61a7b6f5aa264139141a2b0121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000',
568
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
569
+ ],
170
570
 
171
571
  ['That also includes ahead of the opcode being executed.'],
172
- [[['5a6b0021a6042a686b6b94abc36b387bef9109847774e8b1e51eb8cc55c53921', 1, 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG']],
173
- '01000000012139c555ccb81ee5b1e87477840991ef7b386bc3ab946b6b682a04a621006b5a01000000fdb40148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f2204148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390175ac4830450220646b72c35beeec51f4d5bc1cbae01863825750d7f490864af354e6ea4f625e9c022100f04b98432df3a9641719dbced53393022e7249fb59db993af1118539830aab870148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a580039017521038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
174
-
175
- ["Finally CHECKMULTISIG removes all signatures prior to hashing the script containing those signatures. In conjunction with the SIGHASH_SINGLE bug this lets us test whether or not FindAndDelete() is actually present in scriptPubKey/redeemScript evaluation by including a signature of the digest 0x01 We can compute in advance for our pubkey, embed it it in the scriptPubKey, and then also using a normal SIGHASH_ALL signature. If FindAndDelete() wasn't run, the 'bugged' signature would still be in the hashed script, and the normal signature would fail."],
176
-
177
- ["Here's an example on mainnet within a P2SH redeemScript. Remarkably it's a standard transaction in <0.9"],
178
- [[['b5b598de91787439afd5938116654e0b16b7a0d0f82742ba37564219c5afcbf9', 0, 'DUP HASH160 0x14 0xf6f365c40f0739b61de827a44751e5e99032ed8f EQUALVERIFY CHECKSIG'],
179
- ['ab9805c6d57d7070d9a42c5176e47bb705023e6b67249fb6760880548298e742', 0, 'HASH160 0x14 0xd8dacdadb7462ae15cd906f1878706d0da8660e6 EQUAL']],
180
- '0100000002f9cbafc519425637ba4227f8d0a0b7160b4e65168193d5af39747891de98b5b5000000006b4830450221008dd619c563e527c47d9bd53534a770b102e40faa87f61433580e04e271ef2f960220029886434e18122b53d5decd25f1f4acb2480659fea20aabd856987ba3c3907e0121022b78b756e2258af13779c1a1f37ea6800259716ca4b7f0b87610e0bf3ab52a01ffffffff42e7988254800876b69f24676b3e0205b77be476512ca4d970707dd5c60598ab00000000fd260100483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a53034930460221008431bdfa72bc67f9d41fe72e94c88fb8f359ffa30b33c72c121c5a877d922e1002210089ef5fc22dd8bfc6bf9ffdb01a9862d27687d424d1fefbab9e9c7176844a187a014c9052483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c7153aeffffffff01a08601000000000017a914d8dacdadb7462ae15cd906f1878706d0da8660e68700000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
181
-
182
- ['An valid Transaction with invalid redeem script, it is valid because UTXO_AFTER_GENESIS is set'],
183
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0x7a052c840ba73af26755de42cf01cc9e0a49fef0 EQUAL']],
184
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000009085768617420697320ffffffff010000000000000000015100000000', 'P2SH,UTXO_AFTER_GENESIS'],
572
+ [
573
+ [
574
+ [
575
+ '5a6b0021a6042a686b6b94abc36b387bef9109847774e8b1e51eb8cc55c53921',
576
+ 1,
577
+ 'DUP HASH160 0x14 0xee5a6aa40facefb2655ac23c0c28c57c65c41f9b EQUALVERIFY CHECKSIG'
578
+ ]
579
+ ],
580
+ '01000000012139c555ccb81ee5b1e87477840991ef7b386bc3ab946b6b682a04a621006b5a01000000fdb40148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390121038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f2204148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a5800390175ac4830450220646b72c35beeec51f4d5bc1cbae01863825750d7f490864af354e6ea4f625e9c022100f04b98432df3a9641719dbced53393022e7249fb59db993af1118539830aab870148304502201723e692e5f409a7151db386291b63524c5eb2030df652b1f53022fd8207349f022100b90d9bbf2f3366ce176e5e780a00433da67d9e5c79312c6388312a296a580039017521038479a0fa998cd35259a2ef0a7a5c68662c1474f88ccb6d08a7677bbec7f22041ffffffff010000000000000000016a00000000',
581
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
582
+ ],
583
+
584
+ [
585
+ "Finally CHECKMULTISIG removes all signatures prior to hashing the script containing those signatures. In conjunction with the SIGHASH_SINGLE bug this lets us test whether or not FindAndDelete() is actually present in scriptPubKey/redeemScript evaluation by including a signature of the digest 0x01 We can compute in advance for our pubkey, embed it it in the scriptPubKey, and then also using a normal SIGHASH_ALL signature. If FindAndDelete() wasn't run, the 'bugged' signature would still be in the hashed script, and the normal signature would fail."
586
+ ],
587
+
588
+ [
589
+ "Here's an example on mainnet within a P2SH redeemScript. Remarkably it's a standard transaction in <0.9"
590
+ ],
591
+ [
592
+ [
593
+ [
594
+ 'b5b598de91787439afd5938116654e0b16b7a0d0f82742ba37564219c5afcbf9',
595
+ 0,
596
+ 'DUP HASH160 0x14 0xf6f365c40f0739b61de827a44751e5e99032ed8f EQUALVERIFY CHECKSIG'
597
+ ],
598
+ [
599
+ 'ab9805c6d57d7070d9a42c5176e47bb705023e6b67249fb6760880548298e742',
600
+ 0,
601
+ 'HASH160 0x14 0xd8dacdadb7462ae15cd906f1878706d0da8660e6 EQUAL'
602
+ ]
603
+ ],
604
+ '0100000002f9cbafc519425637ba4227f8d0a0b7160b4e65168193d5af39747891de98b5b5000000006b4830450221008dd619c563e527c47d9bd53534a770b102e40faa87f61433580e04e271ef2f960220029886434e18122b53d5decd25f1f4acb2480659fea20aabd856987ba3c3907e0121022b78b756e2258af13779c1a1f37ea6800259716ca4b7f0b87610e0bf3ab52a01ffffffff42e7988254800876b69f24676b3e0205b77be476512ca4d970707dd5c60598ab00000000fd260100483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a53034930460221008431bdfa72bc67f9d41fe72e94c88fb8f359ffa30b33c72c121c5a877d922e1002210089ef5fc22dd8bfc6bf9ffdb01a9862d27687d424d1fefbab9e9c7176844a187a014c9052483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c7153aeffffffff01a08601000000000017a914d8dacdadb7462ae15cd906f1878706d0da8660e68700000000',
605
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
606
+ ],
607
+
608
+ [
609
+ 'An valid Transaction with invalid redeem script, it is valid because UTXO_AFTER_GENESIS is set'
610
+ ],
611
+ [
612
+ [
613
+ [
614
+ '0000000000000000000000000000000000000000000000000000000000000100',
615
+ 0,
616
+ 'HASH160 0x14 0x7a052c840ba73af26755de42cf01cc9e0a49fef0 EQUAL'
617
+ ]
618
+ ],
619
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000009085768617420697320ffffffff010000000000000000015100000000',
620
+ 'P2SH,UTXO_AFTER_GENESIS'
621
+ ],
185
622
 
186
623
  ['Same idea, but with bare CHECKMULTISIG'],
187
- [[['ceafe58e0f6e7d67c0409fbbf673c84c166e3c5d3c24af58f7175b18df3bb3db', 0, 'DUP HASH160 0x14 0xf6f365c40f0739b61de827a44751e5e99032ed8f EQUALVERIFY CHECKSIG'],
188
- ['ceafe58e0f6e7d67c0409fbbf673c84c166e3c5d3c24af58f7175b18df3bb3db', 1, '2 0x48 0x3045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 3 CHECKMULTISIG']],
189
- '0100000002dbb33bdf185b17f758af243c5d3c6e164cc873f6bb9f40c0677d6e0f8ee5afce000000006b4830450221009627444320dc5ef8d7f68f35010b4c050a6ed0d96b67a84db99fda9c9de58b1e02203e4b4aaa019e012e65d69b487fdf8719df72f488fa91506a80c49a33929f1fd50121022b78b756e2258af13779c1a1f37ea6800259716ca4b7f0b87610e0bf3ab52a01ffffffffdbb33bdf185b17f758af243c5d3c6e164cc873f6bb9f40c0677d6e0f8ee5afce010000009300483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303ffffffff01a0860100000000001976a9149bc0bbdd3024da4d0c38ed1aecf5c68dd1d3fa1288ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
624
+ [
625
+ [
626
+ [
627
+ 'ceafe58e0f6e7d67c0409fbbf673c84c166e3c5d3c24af58f7175b18df3bb3db',
628
+ 0,
629
+ 'DUP HASH160 0x14 0xf6f365c40f0739b61de827a44751e5e99032ed8f EQUALVERIFY CHECKSIG'
630
+ ],
631
+ [
632
+ 'ceafe58e0f6e7d67c0409fbbf673c84c166e3c5d3c24af58f7175b18df3bb3db',
633
+ 1,
634
+ '2 0x48 0x3045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 0x21 0x0378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71 3 CHECKMULTISIG'
635
+ ]
636
+ ],
637
+ '0100000002dbb33bdf185b17f758af243c5d3c6e164cc873f6bb9f40c0677d6e0f8ee5afce000000006b4830450221009627444320dc5ef8d7f68f35010b4c050a6ed0d96b67a84db99fda9c9de58b1e02203e4b4aaa019e012e65d69b487fdf8719df72f488fa91506a80c49a33929f1fd50121022b78b756e2258af13779c1a1f37ea6800259716ca4b7f0b87610e0bf3ab52a01ffffffffdbb33bdf185b17f758af243c5d3c6e164cc873f6bb9f40c0677d6e0f8ee5afce010000009300483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a5303ffffffff01a0860100000000001976a9149bc0bbdd3024da4d0c38ed1aecf5c68dd1d3fa1288ac00000000',
638
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
639
+ ],
190
640
 
191
641
  ['CHECKLOCKTIMEVERIFY tests'],
192
642
 
193
643
  ['By-height locks, with argument == 0 and == tx nLockTime'],
194
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0 CHECKLOCKTIMEVERIFY 1']],
195
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
196
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '499999999 CHECKLOCKTIMEVERIFY 1']],
197
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
198
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0 CHECKLOCKTIMEVERIFY 1']],
199
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
200
-
201
- ['By-height locks, with argument just beyond tx nLockTime. This script should be invalid but passes because of UTXO_AFTER_GENESIS flag'],
202
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '1 CHECKLOCKTIMEVERIFY 1']],
203
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
204
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '499999999 CHECKLOCKTIMEVERIFY 1']],
205
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000fe64cd1d', ['P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
206
-
207
- ['By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)'],
208
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '500000000 CHECKLOCKTIMEVERIFY 1']],
209
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
210
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKLOCKTIMEVERIFY 1']],
211
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
212
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '500000000 CHECKLOCKTIMEVERIFY 1']],
213
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
644
+ [
645
+ [
646
+ [
647
+ '0000000000000000000000000000000000000000000000000000000000000100',
648
+ 0,
649
+ '0 CHECKLOCKTIMEVERIFY 1'
650
+ ]
651
+ ],
652
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
653
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
654
+ ],
655
+ [
656
+ [
657
+ [
658
+ '0000000000000000000000000000000000000000000000000000000000000100',
659
+ 0,
660
+ '499999999 CHECKLOCKTIMEVERIFY 1'
661
+ ]
662
+ ],
663
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d',
664
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
665
+ ],
666
+ [
667
+ [
668
+ [
669
+ '0000000000000000000000000000000000000000000000000000000000000100',
670
+ 0,
671
+ '0 CHECKLOCKTIMEVERIFY 1'
672
+ ]
673
+ ],
674
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d',
675
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
676
+ ],
677
+
678
+ [
679
+ 'By-height locks, with argument just beyond tx nLockTime. This script should be invalid but passes because of UTXO_AFTER_GENESIS flag'
680
+ ],
681
+ [
682
+ [
683
+ [
684
+ '0000000000000000000000000000000000000000000000000000000000000100',
685
+ 0,
686
+ '1 CHECKLOCKTIMEVERIFY 1'
687
+ ]
688
+ ],
689
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
690
+ ['P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
691
+ ],
692
+ [
693
+ [
694
+ [
695
+ '0000000000000000000000000000000000000000000000000000000000000100',
696
+ 0,
697
+ '499999999 CHECKLOCKTIMEVERIFY 1'
698
+ ]
699
+ ],
700
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000fe64cd1d',
701
+ ['P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
702
+ ],
703
+
704
+ [
705
+ 'By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)'
706
+ ],
707
+ [
708
+ [
709
+ [
710
+ '0000000000000000000000000000000000000000000000000000000000000100',
711
+ 0,
712
+ '500000000 CHECKLOCKTIMEVERIFY 1'
713
+ ]
714
+ ],
715
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d',
716
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
717
+ ],
718
+ [
719
+ [
720
+ [
721
+ '0000000000000000000000000000000000000000000000000000000000000100',
722
+ 0,
723
+ '4294967295 CHECKLOCKTIMEVERIFY 1'
724
+ ]
725
+ ],
726
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff',
727
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
728
+ ],
729
+ [
730
+ [
731
+ [
732
+ '0000000000000000000000000000000000000000000000000000000000000100',
733
+ 0,
734
+ '500000000 CHECKLOCKTIMEVERIFY 1'
735
+ ]
736
+ ],
737
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff',
738
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
739
+ ],
214
740
 
215
741
  ['Any non-maxint nSequence is fine'],
216
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0 CHECKLOCKTIMEVERIFY 1']],
217
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
742
+ [
743
+ [
744
+ [
745
+ '0000000000000000000000000000000000000000000000000000000000000100',
746
+ 0,
747
+ '0 CHECKLOCKTIMEVERIFY 1'
748
+ ]
749
+ ],
750
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000',
751
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
752
+ ],
218
753
 
219
754
  ['The argument can be calculated rather than created directly by a PUSHDATA'],
220
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '499999999 1ADD CHECKLOCKTIMEVERIFY 1']],
221
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
222
-
223
- ['Perhaps even by an ADD producing a 5-byte result that is out of bounds for other opcodes'],
224
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483647 2147483647 ADD CHECKLOCKTIMEVERIFY 1']],
225
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
755
+ [
756
+ [
757
+ [
758
+ '0000000000000000000000000000000000000000000000000000000000000100',
759
+ 0,
760
+ '499999999 1ADD CHECKLOCKTIMEVERIFY 1'
761
+ ]
762
+ ],
763
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d',
764
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
765
+ ],
766
+
767
+ [
768
+ 'Perhaps even by an ADD producing a 5-byte result that is out of bounds for other opcodes'
769
+ ],
770
+ [
771
+ [
772
+ [
773
+ '0000000000000000000000000000000000000000000000000000000000000100',
774
+ 0,
775
+ '2147483647 2147483647 ADD CHECKLOCKTIMEVERIFY 1'
776
+ ]
777
+ ],
778
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff',
779
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
780
+ ],
226
781
 
227
782
  ['5 byte non-minimally-encoded arguments are valid'],
228
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0x05 0x0000000000 CHECKLOCKTIMEVERIFY 1']],
229
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
783
+ [
784
+ [
785
+ [
786
+ '0000000000000000000000000000000000000000000000000000000000000100',
787
+ 0,
788
+ '0x05 0x0000000000 CHECKLOCKTIMEVERIFY 1'
789
+ ]
790
+ ],
791
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
792
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
793
+ ],
230
794
 
231
795
  ['Valid CHECKLOCKTIMEVERIFY in scriptSig'],
232
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '1']],
233
- '01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b1000000000100000000000000000001000000', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
796
+ [
797
+ [
798
+ [
799
+ '0000000000000000000000000000000000000000000000000000000000000100',
800
+ 0,
801
+ '1'
802
+ ]
803
+ ],
804
+ '01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b1000000000100000000000000000001000000',
805
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
806
+ ],
234
807
 
235
808
  ['Valid CHECKLOCKTIMEVERIFY in redeemScript'],
236
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0xc5b93064159b3b2d6ab506a41b1f50463771b988 EQUAL']],
237
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000030251b1000000000100000000000000000001000000', ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']],
238
-
239
- ['the redeem script fails due to failing CHECKLOCKTIMEVERIFY, but it is not executed because the UTXO_AFTER_GENESIS is set'],
240
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0xc5b93064159b3b2d6ab506a41b1f50463771b988 EQUAL']],
241
- '0100000001000100000000000000000000000000000000000000000000000000000000000000000000030251b1000000000100000000000000000000000000', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY'],
809
+ [
810
+ [
811
+ [
812
+ '0000000000000000000000000000000000000000000000000000000000000100',
813
+ 0,
814
+ 'HASH160 0x14 0xc5b93064159b3b2d6ab506a41b1f50463771b988 EQUAL'
815
+ ]
816
+ ],
817
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000030251b1000000000100000000000000000001000000',
818
+ ['P2SH,CHECKLOCKTIMEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY']
819
+ ],
820
+
821
+ [
822
+ 'the redeem script fails due to failing CHECKLOCKTIMEVERIFY, but it is not executed because the UTXO_AFTER_GENESIS is set'
823
+ ],
824
+ [
825
+ [
826
+ [
827
+ '0000000000000000000000000000000000000000000000000000000000000100',
828
+ 0,
829
+ 'HASH160 0x14 0xc5b93064159b3b2d6ab506a41b1f50463771b988 EQUAL'
830
+ ]
831
+ ],
832
+ '0100000001000100000000000000000000000000000000000000000000000000000000000000000000030251b1000000000100000000000000000000000000',
833
+ 'P2SH,UTXO_AFTER_GENESIS,CHECKLOCKTIMEVERIFY'
834
+ ],
242
835
 
243
836
  ['A transaction with a non-standard DER signature.'],
244
- [[['b1dbc81696c8a9c0fccd0693ab66d7c368dbc38c0def4e800685560ddd1b2132', 0, 'DUP HASH160 0x14 0x4b3bd7eba3bc0284fd3007be7f3be275e94f5826 EQUALVERIFY CHECKSIG']],
245
- '010000000132211bdd0d568506804eef0d8cc3db68c3d766ab9306cdfcc0a9c89616c8dbb1000000006c493045022100c7bb0faea0522e74ff220c20c022d2cb6033f8d167fb89e75a50e237a35fd6d202203064713491b1f8ad5f79e623d0219ad32510bfaa1009ab30cbee77b59317d6e30001210237af13eb2d84e4545af287b919c2282019c9691cc509e78e196a9d8274ed1be0ffffffff0100000000000000001976a914f1b3ed2eda9a2ebe5a9374f692877cdf87c0f95b88ac00000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
837
+ [
838
+ [
839
+ [
840
+ 'b1dbc81696c8a9c0fccd0693ab66d7c368dbc38c0def4e800685560ddd1b2132',
841
+ 0,
842
+ 'DUP HASH160 0x14 0x4b3bd7eba3bc0284fd3007be7f3be275e94f5826 EQUALVERIFY CHECKSIG'
843
+ ]
844
+ ],
845
+ '010000000132211bdd0d568506804eef0d8cc3db68c3d766ab9306cdfcc0a9c89616c8dbb1000000006c493045022100c7bb0faea0522e74ff220c20c022d2cb6033f8d167fb89e75a50e237a35fd6d202203064713491b1f8ad5f79e623d0219ad32510bfaa1009ab30cbee77b59317d6e30001210237af13eb2d84e4545af287b919c2282019c9691cc509e78e196a9d8274ed1be0ffffffff0100000000000000001976a914f1b3ed2eda9a2ebe5a9374f692877cdf87c0f95b88ac00000000',
846
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
847
+ ],
246
848
 
247
849
  ['CHECKSEQUENCEVERIFY tests'],
248
850
 
249
851
  ['By-height locks, with argument == 0 and == txin.nSequence'],
250
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0 CHECKSEQUENCEVERIFY 1']],
251
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
252
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '65535 CHECKSEQUENCEVERIFY 1']],
253
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
254
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '65535 CHECKSEQUENCEVERIFY 1']],
255
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
256
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0 CHECKSEQUENCEVERIFY 1']],
257
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
258
-
259
- ['By-height locks, with argument just beyond txin.nSequence. This script should be invalid but passes because of UTXO_AFTER_GENESIS flag'],
260
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '1 CHECKSEQUENCEVERIFY 1']],
261
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
262
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4259839 CHECKSEQUENCEVERIFY 1']],
263
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000feff40000100000000000000000000000000', ['P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
852
+ [
853
+ [
854
+ [
855
+ '0000000000000000000000000000000000000000000000000000000000000100',
856
+ 0,
857
+ '0 CHECKSEQUENCEVERIFY 1'
858
+ ]
859
+ ],
860
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
861
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
862
+ ],
863
+ [
864
+ [
865
+ [
866
+ '0000000000000000000000000000000000000000000000000000000000000100',
867
+ 0,
868
+ '65535 CHECKSEQUENCEVERIFY 1'
869
+ ]
870
+ ],
871
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000',
872
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
873
+ ],
874
+ [
875
+ [
876
+ [
877
+ '0000000000000000000000000000000000000000000000000000000000000100',
878
+ 0,
879
+ '65535 CHECKSEQUENCEVERIFY 1'
880
+ ]
881
+ ],
882
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000',
883
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
884
+ ],
885
+ [
886
+ [
887
+ [
888
+ '0000000000000000000000000000000000000000000000000000000000000100',
889
+ 0,
890
+ '0 CHECKSEQUENCEVERIFY 1'
891
+ ]
892
+ ],
893
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000',
894
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
895
+ ],
896
+
897
+ [
898
+ 'By-height locks, with argument just beyond txin.nSequence. This script should be invalid but passes because of UTXO_AFTER_GENESIS flag'
899
+ ],
900
+ [
901
+ [
902
+ [
903
+ '0000000000000000000000000000000000000000000000000000000000000100',
904
+ 0,
905
+ '1 CHECKSEQUENCEVERIFY 1'
906
+ ]
907
+ ],
908
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
909
+ ['P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
910
+ ],
911
+ [
912
+ [
913
+ [
914
+ '0000000000000000000000000000000000000000000000000000000000000100',
915
+ 0,
916
+ '4259839 CHECKSEQUENCEVERIFY 1'
917
+ ]
918
+ ],
919
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000feff40000100000000000000000000000000',
920
+ ['P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
921
+ ],
264
922
 
265
923
  ['By-time locks, with argument == 0 and == txin.nSequence'],
266
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4194304 CHECKSEQUENCEVERIFY 1']],
267
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
268
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4259839 CHECKSEQUENCEVERIFY 1']],
269
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff40000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
270
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4259839 CHECKSEQUENCEVERIFY 1']],
271
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
272
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4194304 CHECKSEQUENCEVERIFY 1']],
273
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
924
+ [
925
+ [
926
+ [
927
+ '0000000000000000000000000000000000000000000000000000000000000100',
928
+ 0,
929
+ '4194304 CHECKSEQUENCEVERIFY 1'
930
+ ]
931
+ ],
932
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000',
933
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
934
+ ],
935
+ [
936
+ [
937
+ [
938
+ '0000000000000000000000000000000000000000000000000000000000000100',
939
+ 0,
940
+ '4259839 CHECKSEQUENCEVERIFY 1'
941
+ ]
942
+ ],
943
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff40000100000000000000000000000000',
944
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
945
+ ],
946
+ [
947
+ [
948
+ [
949
+ '0000000000000000000000000000000000000000000000000000000000000100',
950
+ 0,
951
+ '4259839 CHECKSEQUENCEVERIFY 1'
952
+ ]
953
+ ],
954
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000',
955
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
956
+ ],
957
+ [
958
+ [
959
+ [
960
+ '0000000000000000000000000000000000000000000000000000000000000100',
961
+ 0,
962
+ '4194304 CHECKSEQUENCEVERIFY 1'
963
+ ]
964
+ ],
965
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000',
966
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
967
+ ],
274
968
 
275
969
  ['Upper sequence with upper sequence is fine'],
276
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483648 CHECKSEQUENCEVERIFY 1']],
277
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
278
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKSEQUENCEVERIFY 1']],
279
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
280
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483648 CHECKSEQUENCEVERIFY 1']],
281
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
282
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKSEQUENCEVERIFY 1']],
283
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
284
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483648 CHECKSEQUENCEVERIFY 1']],
285
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
286
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKSEQUENCEVERIFY 1']],
287
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
970
+ [
971
+ [
972
+ [
973
+ '0000000000000000000000000000000000000000000000000000000000000100',
974
+ 0,
975
+ '2147483648 CHECKSEQUENCEVERIFY 1'
976
+ ]
977
+ ],
978
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000',
979
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
980
+ ],
981
+ [
982
+ [
983
+ [
984
+ '0000000000000000000000000000000000000000000000000000000000000100',
985
+ 0,
986
+ '4294967295 CHECKSEQUENCEVERIFY 1'
987
+ ]
988
+ ],
989
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000',
990
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
991
+ ],
992
+ [
993
+ [
994
+ [
995
+ '0000000000000000000000000000000000000000000000000000000000000100',
996
+ 0,
997
+ '2147483648 CHECKSEQUENCEVERIFY 1'
998
+ ]
999
+ ],
1000
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000',
1001
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1002
+ ],
1003
+ [
1004
+ [
1005
+ [
1006
+ '0000000000000000000000000000000000000000000000000000000000000100',
1007
+ 0,
1008
+ '4294967295 CHECKSEQUENCEVERIFY 1'
1009
+ ]
1010
+ ],
1011
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000',
1012
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1013
+ ],
1014
+ [
1015
+ [
1016
+ [
1017
+ '0000000000000000000000000000000000000000000000000000000000000100',
1018
+ 0,
1019
+ '2147483648 CHECKSEQUENCEVERIFY 1'
1020
+ ]
1021
+ ],
1022
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000',
1023
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1024
+ ],
1025
+ [
1026
+ [
1027
+ [
1028
+ '0000000000000000000000000000000000000000000000000000000000000100',
1029
+ 0,
1030
+ '4294967295 CHECKSEQUENCEVERIFY 1'
1031
+ ]
1032
+ ],
1033
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000',
1034
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1035
+ ],
288
1036
 
289
1037
  ['Argument 2^31 with various nSequence'],
290
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483648 CHECKSEQUENCEVERIFY 1']],
291
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
292
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483648 CHECKSEQUENCEVERIFY 1']],
293
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
294
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483648 CHECKSEQUENCEVERIFY 1']],
295
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1038
+ [
1039
+ [
1040
+ [
1041
+ '0000000000000000000000000000000000000000000000000000000000000100',
1042
+ 0,
1043
+ '2147483648 CHECKSEQUENCEVERIFY 1'
1044
+ ]
1045
+ ],
1046
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000',
1047
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1048
+ ],
1049
+ [
1050
+ [
1051
+ [
1052
+ '0000000000000000000000000000000000000000000000000000000000000100',
1053
+ 0,
1054
+ '2147483648 CHECKSEQUENCEVERIFY 1'
1055
+ ]
1056
+ ],
1057
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000',
1058
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1059
+ ],
1060
+ [
1061
+ [
1062
+ [
1063
+ '0000000000000000000000000000000000000000000000000000000000000100',
1064
+ 0,
1065
+ '2147483648 CHECKSEQUENCEVERIFY 1'
1066
+ ]
1067
+ ],
1068
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000',
1069
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1070
+ ],
296
1071
 
297
1072
  ['Argument 2^32-1 with various nSequence'],
298
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKSEQUENCEVERIFY 1']],
299
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
300
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKSEQUENCEVERIFY 1']],
301
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
302
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4294967295 CHECKSEQUENCEVERIFY 1']],
303
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1073
+ [
1074
+ [
1075
+ [
1076
+ '0000000000000000000000000000000000000000000000000000000000000100',
1077
+ 0,
1078
+ '4294967295 CHECKSEQUENCEVERIFY 1'
1079
+ ]
1080
+ ],
1081
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000',
1082
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1083
+ ],
1084
+ [
1085
+ [
1086
+ [
1087
+ '0000000000000000000000000000000000000000000000000000000000000100',
1088
+ 0,
1089
+ '4294967295 CHECKSEQUENCEVERIFY 1'
1090
+ ]
1091
+ ],
1092
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000',
1093
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1094
+ ],
1095
+ [
1096
+ [
1097
+ [
1098
+ '0000000000000000000000000000000000000000000000000000000000000100',
1099
+ 0,
1100
+ '4294967295 CHECKSEQUENCEVERIFY 1'
1101
+ ]
1102
+ ],
1103
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000',
1104
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1105
+ ],
304
1106
 
305
1107
  ['Argument 3<<31 with various nSequence'],
306
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '6442450944 CHECKSEQUENCEVERIFY 1']],
307
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
308
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '6442450944 CHECKSEQUENCEVERIFY 1']],
309
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
310
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '6442450944 CHECKSEQUENCEVERIFY 1']],
311
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1108
+ [
1109
+ [
1110
+ [
1111
+ '0000000000000000000000000000000000000000000000000000000000000100',
1112
+ 0,
1113
+ '6442450944 CHECKSEQUENCEVERIFY 1'
1114
+ ]
1115
+ ],
1116
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffbf7f0100000000000000000000000000',
1117
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1118
+ ],
1119
+ [
1120
+ [
1121
+ [
1122
+ '0000000000000000000000000000000000000000000000000000000000000100',
1123
+ 0,
1124
+ '6442450944 CHECKSEQUENCEVERIFY 1'
1125
+ ]
1126
+ ],
1127
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffff7f0100000000000000000000000000',
1128
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1129
+ ],
1130
+ [
1131
+ [
1132
+ [
1133
+ '0000000000000000000000000000000000000000000000000000000000000100',
1134
+ 0,
1135
+ '6442450944 CHECKSEQUENCEVERIFY 1'
1136
+ ]
1137
+ ],
1138
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000',
1139
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1140
+ ],
312
1141
 
313
1142
  ['5 byte non-minimally-encoded operandss are valid'],
314
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0x05 0x0000000000 CHECKSEQUENCEVERIFY 1']],
315
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1143
+ [
1144
+ [
1145
+ [
1146
+ '0000000000000000000000000000000000000000000000000000000000000100',
1147
+ 0,
1148
+ '0x05 0x0000000000 CHECKSEQUENCEVERIFY 1'
1149
+ ]
1150
+ ],
1151
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
1152
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1153
+ ],
316
1154
 
317
1155
  ['The argument can be calculated rather than created directly by a PUSHDATA'],
318
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4194303 1ADD CHECKSEQUENCEVERIFY 1']],
319
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
320
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '4194304 1SUB CHECKSEQUENCEVERIFY 1']],
321
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
322
-
323
- ['An ADD producing a 5-byte result that sets CTxIn::SEQUENCE_LOCKTIME_DISABLE_FLAG'],
324
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483647 65536 CHECKSEQUENCEVERIFY 1']],
325
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
326
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '2147483647 4259840 ADD CHECKSEQUENCEVERIFY 1']],
327
- '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1156
+ [
1157
+ [
1158
+ [
1159
+ '0000000000000000000000000000000000000000000000000000000000000100',
1160
+ 0,
1161
+ '4194303 1ADD CHECKSEQUENCEVERIFY 1'
1162
+ ]
1163
+ ],
1164
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000',
1165
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1166
+ ],
1167
+ [
1168
+ [
1169
+ [
1170
+ '0000000000000000000000000000000000000000000000000000000000000100',
1171
+ 0,
1172
+ '4194304 1SUB CHECKSEQUENCEVERIFY 1'
1173
+ ]
1174
+ ],
1175
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000',
1176
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1177
+ ],
1178
+
1179
+ [
1180
+ 'An ADD producing a 5-byte result that sets CTxIn::SEQUENCE_LOCKTIME_DISABLE_FLAG'
1181
+ ],
1182
+ [
1183
+ [
1184
+ [
1185
+ '0000000000000000000000000000000000000000000000000000000000000100',
1186
+ 0,
1187
+ '2147483647 65536 CHECKSEQUENCEVERIFY 1'
1188
+ ]
1189
+ ],
1190
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000',
1191
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1192
+ ],
1193
+ [
1194
+ [
1195
+ [
1196
+ '0000000000000000000000000000000000000000000000000000000000000100',
1197
+ 0,
1198
+ '2147483647 4259840 ADD CHECKSEQUENCEVERIFY 1'
1199
+ ]
1200
+ ],
1201
+ '020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000',
1202
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1203
+ ],
328
1204
 
329
1205
  ['Valid CHECKSEQUENCEVERIFY in scriptSig'],
330
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '1']],
331
- '02000000010001000000000000000000000000000000000000000000000000000000000000000000000251b2010000000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1206
+ [
1207
+ [
1208
+ [
1209
+ '0000000000000000000000000000000000000000000000000000000000000100',
1210
+ 0,
1211
+ '1'
1212
+ ]
1213
+ ],
1214
+ '02000000010001000000000000000000000000000000000000000000000000000000000000000000000251b2010000000100000000000000000000000000',
1215
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1216
+ ],
332
1217
 
333
1218
  ['Valid CHECKSEQUENCEVERIFY in redeemScript'],
334
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, 'HASH160 0x14 0x7c17aff532f22beb54069942f9bf567a66133eaf EQUAL']],
335
- '0200000001000100000000000000000000000000000000000000000000000000000000000000000000030251b2010000000100000000000000000000000000', ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']],
1219
+ [
1220
+ [
1221
+ [
1222
+ '0000000000000000000000000000000000000000000000000000000000000100',
1223
+ 0,
1224
+ 'HASH160 0x14 0x7c17aff532f22beb54069942f9bf567a66133eaf EQUAL'
1225
+ ]
1226
+ ],
1227
+ '0200000001000100000000000000000000000000000000000000000000000000000000000000000000030251b2010000000100000000000000000000000000',
1228
+ ['P2SH,CHECKSEQUENCEVERIFY', 'P2SH,UTXO_AFTER_GENESIS,CHECKSEQUENCEVERIFY']
1229
+ ],
336
1230
 
337
1231
  ['Unknown version witness program with empty witness'],
338
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0x60 0x14 0x4c9c3dfac4207d5d8cb89df5722cb3d712385e3f', 1000]],
339
- '010000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff01e803000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
1232
+ [
1233
+ [
1234
+ [
1235
+ '0000000000000000000000000000000000000000000000000000000000000100',
1236
+ 0,
1237
+ '0x60 0x14 0x4c9c3dfac4207d5d8cb89df5722cb3d712385e3f',
1238
+ 1000
1239
+ ]
1240
+ ],
1241
+ '010000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff01e803000000000000015100000000',
1242
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
1243
+ ],
340
1244
 
341
1245
  ["Non witness Single|AnyoneCanPay hash input's position"],
342
- [[['0000000000000000000000000000000000000000000000000000000000000100', 0, '0x21 0x03596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71 CHECKSIG', 1000],
343
- ['0000000000000000000000000000000000000000000000000000000000000100', 1, '0x21 0x03596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71 CHECKSIG', 1001]],
344
- '01000000020001000000000000000000000000000000000000000000000000000000000000000000004847304402202a0b4b1294d70540235ae033d78e64b4897ec859c7b6f1b2b1d8a02e1d46006702201445e756d2254b0f1dfda9ab8e1e1bc26df9668077403204f32d16a49a36eb6983ffffffff00010000000000000000000000000000000000000000000000000000000000000100000049483045022100acb96cfdbda6dc94b489fd06f2d720983b5f350e31ba906cdbd800773e80b21c02200d74ea5bdf114212b4bbe9ed82c36d2e369e302dff57cb60d01c428f0bd3daab83ffffffff02e8030000000000000151e903000000000000015100000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
1246
+ [
1247
+ [
1248
+ [
1249
+ '0000000000000000000000000000000000000000000000000000000000000100',
1250
+ 0,
1251
+ '0x21 0x03596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71 CHECKSIG',
1252
+ 1000
1253
+ ],
1254
+ [
1255
+ '0000000000000000000000000000000000000000000000000000000000000100',
1256
+ 1,
1257
+ '0x21 0x03596d3451025c19dbbdeb932d6bf8bfb4ad499b95b6f88db8899efac102e5fc71 CHECKSIG',
1258
+ 1001
1259
+ ]
1260
+ ],
1261
+ '01000000020001000000000000000000000000000000000000000000000000000000000000000000004847304402202a0b4b1294d70540235ae033d78e64b4897ec859c7b6f1b2b1d8a02e1d46006702201445e756d2254b0f1dfda9ab8e1e1bc26df9668077403204f32d16a49a36eb6983ffffffff00010000000000000000000000000000000000000000000000000000000000000100000049483045022100acb96cfdbda6dc94b489fd06f2d720983b5f350e31ba906cdbd800773e80b21c02200d74ea5bdf114212b4bbe9ed82c36d2e369e302dff57cb60d01c428f0bd3daab83ffffffff02e8030000000000000151e903000000000000015100000000',
1262
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
1263
+ ],
345
1264
 
346
1265
  ['FindAndDelete tests'],
347
- ['This is a test of FindAndDelete. The first tx is a spend of normal P2SH and the second tx is a spend of bare P2WSH.'],
348
- ['The redeemScript/witnessScript is CHECKSIGVERIFY <0x30450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01>.'],
349
- ['The signature is <0x30450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01> <pubkey>,'],
350
- ['where the pubkey is obtained through key recovery with sig and correct sighash.'],
1266
+ [
1267
+ 'This is a test of FindAndDelete. The first tx is a spend of normal P2SH and the second tx is a spend of bare P2WSH.'
1268
+ ],
1269
+ [
1270
+ 'The redeemScript/witnessScript is CHECKSIGVERIFY <0x30450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01>.'
1271
+ ],
1272
+ [
1273
+ 'The signature is <0x30450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01> <pubkey>,'
1274
+ ],
1275
+ [
1276
+ 'where the pubkey is obtained through key recovery with sig and correct sighash.'
1277
+ ],
351
1278
  ['This is to show that FindAndDelete is applied only to non-segwit scripts'],
352
- ['Non-segwit: correct sighash (with FindAndDelete) = 1ba1fe3bc90c5d1265460e684ce6774e324f0fabdf67619eda729e64e8b6bc08'],
353
- [[['f18783ace138abac5d3a7a5cf08e88fe6912f267ef936452e0c27d090621c169', 7000, 'HASH160 0x14 0x0c746489e2d83cdbb5b90b432773342ba809c134 EQUAL', 200000]],
354
- '010000000169c12106097dc2e0526493ef67f21269fe888ef05c7a3a5dacab38e1ac8387f1581b0000b64830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0121037a3fb04bcdb09eba90f69961ba1692a3528e45e67c85b200df820212d7594d334aad4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01ffffffff0101000000000000000000000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
1279
+ [
1280
+ 'Non-segwit: correct sighash (with FindAndDelete) = 1ba1fe3bc90c5d1265460e684ce6774e324f0fabdf67619eda729e64e8b6bc08'
1281
+ ],
1282
+ [
1283
+ [
1284
+ [
1285
+ 'f18783ace138abac5d3a7a5cf08e88fe6912f267ef936452e0c27d090621c169',
1286
+ 7000,
1287
+ 'HASH160 0x14 0x0c746489e2d83cdbb5b90b432773342ba809c134 EQUAL',
1288
+ 200000
1289
+ ]
1290
+ ],
1291
+ '010000000169c12106097dc2e0526493ef67f21269fe888ef05c7a3a5dacab38e1ac8387f1581b0000b64830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0121037a3fb04bcdb09eba90f69961ba1692a3528e45e67c85b200df820212d7594d334aad4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e01ffffffff0101000000000000000000000000',
1292
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
1293
+ ],
355
1294
  ['This is multisig version of the FindAndDelete tests'],
356
1295
  ['Script is 2 CHECKMULTISIGVERIFY <sig1> <sig2> DROP'],
357
- ['52af4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c0395960175'],
1296
+ [
1297
+ '52af4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c0395960175'
1298
+ ],
358
1299
  ['Signature is 0 <sig1> <sig2> 2 <key1> <key2>'],
359
- ['Non-segwit: correct sighash (with FindAndDelete) = 1d50f00ba4db2917b903b0ec5002e017343bb38876398c9510570f5dce099295'],
360
- [[['9628667ad48219a169b41b020800162287d2c0f713c04157e95c484a8dcb7592', 7000, 'HASH160 0x14 0x5748407f5ca5cdca53ba30b79040260770c9ee1b EQUAL', 200000]],
361
- '01000000019275cb8d4a485ce95741c013f7c0d28722160008021bb469a11982d47a662896581b0000fd6f01004830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c03959601522102cd74a2809ffeeed0092bc124fd79836706e41f048db3f6ae9df8708cefb83a1c2102e615999372426e46fd107b76eaf007156a507584aa2cc21de9eee3bdbd26d36c4c9552af4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c0395960175ffffffff0101000000000000000000000000', ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']],
1300
+ [
1301
+ 'Non-segwit: correct sighash (with FindAndDelete) = 1d50f00ba4db2917b903b0ec5002e017343bb38876398c9510570f5dce099295'
1302
+ ],
1303
+ [
1304
+ [
1305
+ [
1306
+ '9628667ad48219a169b41b020800162287d2c0f713c04157e95c484a8dcb7592',
1307
+ 7000,
1308
+ 'HASH160 0x14 0x5748407f5ca5cdca53ba30b79040260770c9ee1b EQUAL',
1309
+ 200000
1310
+ ]
1311
+ ],
1312
+ '01000000019275cb8d4a485ce95741c013f7c0d28722160008021bb469a11982d47a662896581b0000fd6f01004830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c03959601522102cd74a2809ffeeed0092bc124fd79836706e41f048db3f6ae9df8708cefb83a1c2102e615999372426e46fd107b76eaf007156a507584aa2cc21de9eee3bdbd26d36c4c9552af4830450220487fb382c4974de3f7d834c1b617fe15860828c7f96454490edd6d891556dcc9022100baf95feb48f845d5bfc9882eb6aeefa1bc3790e39f59eaa46ff7f15ae626c53e0148304502205286f726690b2e9b0207f0345711e63fa7012045b9eb0f19c2458ce1db90cf43022100e89f17f86abc5b149eba4115d4f128bcf45d77fb3ecdd34f594091340c0395960175ffffffff0101000000000000000000000000',
1313
+ ['P2SH', 'P2SH,UTXO_AFTER_GENESIS']
1314
+ ],
362
1315
 
363
1316
  ['Make diffs cleaner by leaving a comment here without comma at the end']
364
1317
  ]