@bsv/sdk 2.0.0-beta.0 → 2.0.1

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 (488) hide show
  1. package/dist/cjs/mod.js +1 -0
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +1 -1
  4. package/dist/cjs/src/auth/Peer.js +149 -74
  5. package/dist/cjs/src/auth/Peer.js.map +1 -1
  6. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  7. package/dist/cjs/src/auth/certificates/Certificate.js +18 -8
  8. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js +19 -9
  10. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +17 -7
  12. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +30 -10
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +17 -7
  18. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  19. package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +17 -7
  20. package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/createNonce.js +18 -9
  22. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js +18 -9
  25. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  26. package/dist/cjs/src/compat/BSM.js +17 -7
  27. package/dist/cjs/src/compat/BSM.js.map +1 -1
  28. package/dist/cjs/src/compat/ECIES.js +17 -7
  29. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  30. package/dist/cjs/src/compat/HD.js +17 -7
  31. package/dist/cjs/src/compat/HD.js.map +1 -1
  32. package/dist/cjs/src/compat/Mnemonic.js +17 -7
  33. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  34. package/dist/cjs/src/compat/Utxo.js +1 -1
  35. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  36. package/dist/cjs/src/compat/index.js +17 -7
  37. package/dist/cjs/src/compat/index.js.map +1 -1
  38. package/dist/cjs/src/identity/ContactsManager.js +1 -1
  39. package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
  40. package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
  41. package/dist/cjs/src/kvstore/GlobalKVStore.js +20 -10
  42. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  43. package/dist/cjs/src/kvstore/LocalKVStore.js +17 -7
  44. package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
  45. package/dist/cjs/src/kvstore/kvStoreInterpreter.js +17 -7
  46. package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
  47. package/dist/cjs/src/messages/EncryptedMessage.js +19 -0
  48. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  49. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  50. package/dist/cjs/src/messages/index.js +17 -7
  51. package/dist/cjs/src/messages/index.js.map +1 -1
  52. package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
  53. package/dist/cjs/src/overlay-tools/HostReputationTracker.js.map +1 -1
  54. package/dist/cjs/src/overlay-tools/LookupResolver.js +17 -7
  55. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  56. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  57. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +17 -7
  58. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  59. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +1 -2
  60. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
  61. package/dist/cjs/src/primitives/AESGCM.js +77 -32
  62. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  63. package/dist/cjs/src/primitives/BigNumber.js +28 -54
  64. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  65. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  66. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  67. package/dist/cjs/src/primitives/ECDSA.js +58 -24
  68. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  69. package/dist/cjs/src/primitives/Hash.js +6 -6
  70. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  71. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  72. package/dist/cjs/src/primitives/K256.js.map +1 -1
  73. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  74. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  75. package/dist/cjs/src/primitives/Point.js +63 -6
  76. package/dist/cjs/src/primitives/Point.js.map +1 -1
  77. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  78. package/dist/cjs/src/primitives/PrivateKey.js +46 -9
  79. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  80. package/dist/cjs/src/primitives/PublicKey.js +1 -1
  81. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  82. package/dist/cjs/src/primitives/Random.js.map +1 -1
  83. package/dist/cjs/src/primitives/ReaderUint8Array.js +180 -0
  84. package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -0
  85. package/dist/cjs/src/primitives/ReductionContext.js +35 -46
  86. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  87. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  88. package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
  89. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  90. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  91. package/dist/cjs/src/primitives/TransactionSignature.js +132 -17
  92. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  93. package/dist/cjs/src/primitives/WriterUint8Array.js +173 -0
  94. package/dist/cjs/src/primitives/WriterUint8Array.js.map +1 -0
  95. package/dist/cjs/src/primitives/hex.js +2 -3
  96. package/dist/cjs/src/primitives/hex.js.map +1 -1
  97. package/dist/cjs/src/primitives/index.js +17 -7
  98. package/dist/cjs/src/primitives/index.js.map +1 -1
  99. package/dist/cjs/src/primitives/utils.js +43 -16
  100. package/dist/cjs/src/primitives/utils.js.map +1 -1
  101. package/dist/cjs/src/registry/RegistryClient.js +2 -2
  102. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  103. package/dist/cjs/src/remittance/CommsLayer.js +3 -0
  104. package/dist/cjs/src/remittance/CommsLayer.js.map +1 -0
  105. package/dist/cjs/src/remittance/IdentityLayer.js +3 -0
  106. package/dist/cjs/src/remittance/IdentityLayer.js.map +1 -0
  107. package/dist/cjs/src/remittance/RemittanceManager.js +1245 -0
  108. package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -0
  109. package/dist/cjs/src/remittance/RemittanceModule.js +3 -0
  110. package/dist/cjs/src/remittance/RemittanceModule.js.map +1 -0
  111. package/dist/cjs/src/remittance/index.js +23 -0
  112. package/dist/cjs/src/remittance/index.js.map +1 -0
  113. package/dist/cjs/src/remittance/modules/BasicBRC29.js +225 -0
  114. package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -0
  115. package/dist/cjs/src/remittance/modules/index.js +18 -0
  116. package/dist/cjs/src/remittance/modules/index.js.map +1 -0
  117. package/dist/cjs/src/remittance/types.js +22 -0
  118. package/dist/cjs/src/remittance/types.js.map +1 -0
  119. package/dist/cjs/src/script/OP.js +15 -13
  120. package/dist/cjs/src/script/OP.js.map +1 -1
  121. package/dist/cjs/src/script/Script.js +80 -5
  122. package/dist/cjs/src/script/Script.js.map +1 -1
  123. package/dist/cjs/src/script/Spend.js +145 -53
  124. package/dist/cjs/src/script/Spend.js.map +1 -1
  125. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  126. package/dist/cjs/src/script/templates/PushDrop.js +21 -7
  127. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  128. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  129. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
  130. package/dist/cjs/src/storage/StorageUploader.js +17 -7
  131. package/dist/cjs/src/storage/StorageUploader.js.map +1 -1
  132. package/dist/cjs/src/storage/StorageUtils.js.map +1 -1
  133. package/dist/cjs/src/storage/index.js +17 -7
  134. package/dist/cjs/src/storage/index.js.map +1 -1
  135. package/dist/cjs/src/totp/totp.js.map +1 -1
  136. package/dist/cjs/src/transaction/Beef.js +85 -27
  137. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  138. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  139. package/dist/cjs/src/transaction/BeefTx.js +32 -14
  140. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  141. package/dist/cjs/src/transaction/Broadcaster.js +2 -3
  142. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  143. package/dist/cjs/src/transaction/MerklePath.js +25 -6
  144. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  145. package/dist/cjs/src/transaction/Transaction.js +238 -27
  146. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  147. package/dist/cjs/src/transaction/broadcasters/ARC.js +23 -0
  148. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  149. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +1 -2
  150. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  151. package/dist/cjs/src/transaction/broadcasters/Teranode.js.map +1 -1
  152. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  153. package/dist/cjs/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
  154. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +1 -2
  155. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  156. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  157. package/dist/cjs/src/transaction/fee-models/LivePolicy.js.map +1 -1
  158. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  159. package/dist/cjs/src/transaction/http/BinaryFetchClient.js +2 -2
  160. package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
  161. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +1 -2
  162. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  163. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  164. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  165. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  166. package/dist/cjs/src/wallet/ProtoWallet.js +1 -1
  167. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  168. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  169. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  170. package/dist/cjs/src/wallet/index.js +17 -7
  171. package/dist/cjs/src/wallet/index.js.map +1 -1
  172. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  173. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +17 -7
  174. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  175. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +17 -7
  176. package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  177. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +17 -7
  178. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  179. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +17 -7
  180. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  181. package/dist/cjs/src/wallet/substrates/XDM.js +17 -7
  182. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  183. package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js +1 -2
  184. package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
  185. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  186. package/dist/cjs/src/wallet/validationHelpers.js +51 -41
  187. package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
  188. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  189. package/dist/esm/mod.js +1 -0
  190. package/dist/esm/mod.js.map +1 -1
  191. package/dist/esm/src/auth/Peer.js +132 -67
  192. package/dist/esm/src/auth/Peer.js.map +1 -1
  193. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  194. package/dist/esm/src/auth/certificates/Certificate.js +1 -1
  195. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  196. package/dist/esm/src/auth/certificates/MasterCertificate.js +2 -2
  197. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  198. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  199. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  200. package/dist/esm/src/auth/clients/AuthFetch.js +13 -3
  201. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  202. package/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
  203. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  204. package/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
  205. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  206. package/dist/esm/src/compat/BSM.js.map +1 -1
  207. package/dist/esm/src/compat/ECIES.js.map +1 -1
  208. package/dist/esm/src/compat/HD.js.map +1 -1
  209. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  210. package/dist/esm/src/identity/ContactsManager.js +1 -1
  211. package/dist/esm/src/identity/ContactsManager.js.map +1 -1
  212. package/dist/esm/src/identity/IdentityClient.js.map +1 -1
  213. package/dist/esm/src/kvstore/GlobalKVStore.js +3 -3
  214. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  215. package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
  216. package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
  217. package/dist/esm/src/messages/EncryptedMessage.js +19 -0
  218. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  219. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  220. package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
  221. package/dist/esm/src/overlay-tools/HostReputationTracker.js.map +1 -1
  222. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  223. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  224. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  225. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
  226. package/dist/esm/src/primitives/AESGCM.js +71 -26
  227. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  228. package/dist/esm/src/primitives/BigNumber.js +28 -54
  229. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  230. package/dist/esm/src/primitives/Curve.js.map +1 -1
  231. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  232. package/dist/esm/src/primitives/ECDSA.js +58 -24
  233. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  234. package/dist/esm/src/primitives/Hash.js.map +1 -1
  235. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  236. package/dist/esm/src/primitives/K256.js.map +1 -1
  237. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  238. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  239. package/dist/esm/src/primitives/Point.js +61 -4
  240. package/dist/esm/src/primitives/Point.js.map +1 -1
  241. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  242. package/dist/esm/src/primitives/PrivateKey.js +29 -2
  243. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  244. package/dist/esm/src/primitives/PublicKey.js +1 -1
  245. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  246. package/dist/esm/src/primitives/Random.js.map +1 -1
  247. package/dist/esm/src/primitives/ReaderUint8Array.js +176 -0
  248. package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -0
  249. package/dist/esm/src/primitives/ReductionContext.js +35 -46
  250. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  251. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  252. package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
  253. package/dist/esm/src/primitives/Signature.js.map +1 -1
  254. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  255. package/dist/esm/src/primitives/TransactionSignature.js +115 -10
  256. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  257. package/dist/esm/src/primitives/WriterUint8Array.js +169 -0
  258. package/dist/esm/src/primitives/WriterUint8Array.js.map +1 -0
  259. package/dist/esm/src/primitives/hex.js.map +1 -1
  260. package/dist/esm/src/primitives/utils.js +37 -11
  261. package/dist/esm/src/primitives/utils.js.map +1 -1
  262. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  263. package/dist/esm/src/remittance/CommsLayer.js +2 -0
  264. package/dist/esm/src/remittance/CommsLayer.js.map +1 -0
  265. package/dist/esm/src/remittance/IdentityLayer.js +2 -0
  266. package/dist/esm/src/remittance/IdentityLayer.js.map +1 -0
  267. package/dist/esm/src/remittance/RemittanceManager.js +1254 -0
  268. package/dist/esm/src/remittance/RemittanceManager.js.map +1 -0
  269. package/dist/esm/src/remittance/RemittanceModule.js +2 -0
  270. package/dist/esm/src/remittance/RemittanceModule.js.map +1 -0
  271. package/dist/esm/src/remittance/index.js +7 -0
  272. package/dist/esm/src/remittance/index.js.map +1 -0
  273. package/dist/esm/src/remittance/modules/BasicBRC29.js +227 -0
  274. package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -0
  275. package/dist/esm/src/remittance/modules/index.js +2 -0
  276. package/dist/esm/src/remittance/modules/index.js.map +1 -0
  277. package/dist/esm/src/remittance/types.js +19 -0
  278. package/dist/esm/src/remittance/types.js.map +1 -0
  279. package/dist/esm/src/script/OP.js +15 -13
  280. package/dist/esm/src/script/OP.js.map +1 -1
  281. package/dist/esm/src/script/Script.js +80 -5
  282. package/dist/esm/src/script/Script.js.map +1 -1
  283. package/dist/esm/src/script/Spend.js +129 -46
  284. package/dist/esm/src/script/Spend.js.map +1 -1
  285. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  286. package/dist/esm/src/script/templates/PushDrop.js +21 -7
  287. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  288. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  289. package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
  290. package/dist/esm/src/storage/StorageUploader.js.map +1 -1
  291. package/dist/esm/src/storage/StorageUtils.js.map +1 -1
  292. package/dist/esm/src/totp/totp.js.map +1 -1
  293. package/dist/esm/src/transaction/Beef.js +86 -28
  294. package/dist/esm/src/transaction/Beef.js.map +1 -1
  295. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  296. package/dist/esm/src/transaction/BeefTx.js +32 -14
  297. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  298. package/dist/esm/src/transaction/MerklePath.js +26 -7
  299. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  300. package/dist/esm/src/transaction/Transaction.js +239 -28
  301. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  302. package/dist/esm/src/transaction/broadcasters/ARC.js +23 -0
  303. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  304. package/dist/esm/src/transaction/broadcasters/Teranode.js.map +1 -1
  305. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  306. package/dist/esm/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
  307. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  308. package/dist/esm/src/transaction/fee-models/LivePolicy.js.map +1 -1
  309. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  310. package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
  311. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  312. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  313. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  314. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  315. package/dist/esm/src/wallet/ProtoWallet.js +1 -1
  316. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  317. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  318. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  319. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  320. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  321. package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
  322. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  323. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  324. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  325. package/dist/esm/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
  326. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  327. package/dist/esm/src/wallet/validationHelpers.js +1 -1
  328. package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
  329. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  330. package/dist/types/mod.d.ts +1 -0
  331. package/dist/types/mod.d.ts.map +1 -1
  332. package/dist/types/src/auth/Peer.d.ts +12 -7
  333. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  334. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  335. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  336. package/dist/types/src/auth/types.d.ts +2 -0
  337. package/dist/types/src/auth/types.d.ts.map +1 -1
  338. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  339. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  340. package/dist/types/src/compat/BSM.d.ts +1 -1
  341. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  342. package/dist/types/src/messages/EncryptedMessage.d.ts +19 -0
  343. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  344. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  345. package/dist/types/src/primitives/AESGCM.d.ts +18 -0
  346. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  347. package/dist/types/src/primitives/BigNumber.d.ts +8 -0
  348. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +24 -0
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +8 -8
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/Point.d.ts +1 -0
  354. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  355. package/dist/types/src/primitives/PrivateKey.d.ts +27 -0
  356. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  357. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  358. package/dist/types/src/primitives/ReaderUint8Array.d.ts +32 -0
  359. package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -0
  360. package/dist/types/src/primitives/ReductionContext.d.ts +9 -0
  361. package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
  362. package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
  363. package/dist/types/src/primitives/TransactionSignature.d.ts +16 -4
  364. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/WriterUint8Array.d.ts +54 -0
  366. package/dist/types/src/primitives/WriterUint8Array.d.ts.map +1 -0
  367. package/dist/types/src/primitives/utils.d.ts +19 -6
  368. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  369. package/dist/types/src/remittance/CommsLayer.d.ts +50 -0
  370. package/dist/types/src/remittance/CommsLayer.d.ts.map +1 -0
  371. package/dist/types/src/remittance/IdentityLayer.d.ts +35 -0
  372. package/dist/types/src/remittance/IdentityLayer.d.ts.map +1 -0
  373. package/dist/types/src/remittance/RemittanceManager.d.ts +452 -0
  374. package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -0
  375. package/dist/types/src/remittance/RemittanceModule.d.ts +106 -0
  376. package/dist/types/src/remittance/RemittanceModule.d.ts.map +1 -0
  377. package/dist/types/src/remittance/index.d.ts +7 -0
  378. package/dist/types/src/remittance/index.d.ts.map +1 -0
  379. package/dist/types/src/remittance/modules/BasicBRC29.d.ts +133 -0
  380. package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -0
  381. package/dist/types/src/remittance/modules/index.d.ts +2 -0
  382. package/dist/types/src/remittance/modules/index.d.ts.map +1 -0
  383. package/dist/types/src/remittance/types.d.ts +238 -0
  384. package/dist/types/src/remittance/types.d.ts.map +1 -0
  385. package/dist/types/src/script/OP.d.ts +5 -3
  386. package/dist/types/src/script/OP.d.ts.map +1 -1
  387. package/dist/types/src/script/Script.d.ts.map +1 -1
  388. package/dist/types/src/script/Spend.d.ts +7 -0
  389. package/dist/types/src/script/Spend.d.ts.map +1 -1
  390. package/dist/types/src/script/templates/PushDrop.d.ts +3 -4
  391. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  392. package/dist/types/src/storage/StorageUtils.d.ts.map +1 -1
  393. package/dist/types/src/transaction/Beef.d.ts +26 -9
  394. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  395. package/dist/types/src/transaction/BeefTx.d.ts +13 -6
  396. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  397. package/dist/types/src/transaction/MerklePath.d.ts +16 -3
  398. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  399. package/dist/types/src/transaction/Transaction.d.ts +58 -7
  400. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  401. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  402. package/dist/types/src/transaction/http/BinaryFetchClient.d.ts +0 -2
  403. package/dist/types/src/transaction/http/BinaryFetchClient.d.ts.map +1 -1
  404. package/dist/types/src/wallet/Wallet.interfaces.d.ts +5 -5
  405. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  406. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  407. package/dist/umd/bundle.js +13 -13
  408. package/dist/umd/bundle.js.map +1 -1
  409. package/docs/index.md +3 -1
  410. package/docs/reference/auth.md +8 -12
  411. package/docs/reference/primitives.md +260 -55
  412. package/docs/reference/remittance.md +2166 -0
  413. package/docs/reference/script.md +12 -4
  414. package/docs/reference/transaction.md +203 -34
  415. package/docs/reference/wallet.md +6 -5
  416. package/docs/remittance-getting-started.md +138 -0
  417. package/mod.ts +1 -0
  418. package/package.json +11 -1
  419. package/src/auth/Peer.ts +196 -85
  420. package/src/auth/__tests/Peer.test.ts +424 -257
  421. package/src/auth/clients/AuthFetch.ts +18 -3
  422. package/src/auth/types.ts +2 -0
  423. package/src/messages/EncryptedMessage.ts +19 -0
  424. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +7 -0
  425. package/src/primitives/AESGCM.ts +75 -34
  426. package/src/primitives/BigNumber.ts +27 -31
  427. package/src/primitives/ECDSA.ts +41 -2
  428. package/src/primitives/PrivateKey.ts +27 -0
  429. package/src/primitives/ReaderUint8Array.ts +196 -0
  430. package/src/primitives/ReductionContext.ts +44 -48
  431. package/src/primitives/TransactionSignature.ts +129 -10
  432. package/src/primitives/WriterUint8Array.ts +195 -0
  433. package/src/primitives/__tests/AESGCM.test.ts +31 -0
  434. package/src/primitives/__tests/ECDSA.test.ts +16 -0
  435. package/src/primitives/__tests/ReaderUint8Array.test.ts +317 -0
  436. package/src/primitives/__tests/WriterUint8Array.test.ts +208 -0
  437. package/src/primitives/utils.ts +31 -4
  438. package/src/remittance/CommsLayer.ts +41 -0
  439. package/src/remittance/IdentityLayer.ts +32 -0
  440. package/src/remittance/RemittanceManager.ts +1672 -0
  441. package/src/remittance/RemittanceModule.ts +92 -0
  442. package/src/remittance/__tests/BasicBRC29.test.ts +188 -0
  443. package/src/remittance/__tests/RemittanceManager.test.ts +493 -0
  444. package/src/remittance/__tests/examples.ts +130 -0
  445. package/src/remittance/index.ts +6 -0
  446. package/src/remittance/modules/BasicBRC29.ts +361 -0
  447. package/src/remittance/modules/index.ts +1 -0
  448. package/src/remittance/types.ts +284 -0
  449. package/src/script/OP.ts +15 -13
  450. package/src/script/Script.ts +70 -5
  451. package/src/script/Spend.ts +128 -52
  452. package/src/script/__tests/Chronicle.test.ts +186 -0
  453. package/src/script/__tests/Script.test.ts +39 -6
  454. package/src/script/__tests/Spend.test.ts +1 -1
  455. package/src/script/__tests/SpendValildVectors.test.ts +63 -0
  456. package/src/script/__tests/lrshiftnum.test.ts +185 -0
  457. package/src/script/__tests/sighashTestData.ts +1031 -0
  458. package/src/script/__tests/spend.valid.vectors.ts +9 -16
  459. package/src/script/templates/PushDrop.ts +32 -17
  460. package/src/script/templates/__tests/PushDrop.test.ts +28 -0
  461. package/src/storage/__tests/StorageUploader.test.ts +1 -1
  462. package/src/transaction/Beef.ts +103 -40
  463. package/src/transaction/BeefTx.ts +38 -19
  464. package/src/transaction/MerklePath.ts +30 -9
  465. package/src/transaction/Transaction.ts +277 -38
  466. package/src/transaction/__tests/Beef.test.ts +77 -0
  467. package/src/transaction/__tests/Transaction.test.ts +641 -3
  468. package/src/transaction/broadcasters/ARC.ts +34 -7
  469. package/src/transaction/broadcasters/__tests/ARC.test.ts +98 -0
  470. package/src/wallet/Wallet.interfaces.ts +5 -5
  471. package/dist/cjs/src/storage/__test/StorageDownloader.test.js +0 -171
  472. package/dist/cjs/src/storage/__test/StorageDownloader.test.js.map +0 -1
  473. package/dist/cjs/src/storage/__test/StorageUploader.test.js +0 -163
  474. package/dist/cjs/src/storage/__test/StorageUploader.test.js.map +0 -1
  475. package/dist/cjs/src/storage/__test/StorageUtils.test.js +0 -97
  476. package/dist/cjs/src/storage/__test/StorageUtils.test.js.map +0 -1
  477. package/dist/esm/src/storage/__test/StorageDownloader.test.js +0 -166
  478. package/dist/esm/src/storage/__test/StorageDownloader.test.js.map +0 -1
  479. package/dist/esm/src/storage/__test/StorageUploader.test.js +0 -135
  480. package/dist/esm/src/storage/__test/StorageUploader.test.js.map +0 -1
  481. package/dist/esm/src/storage/__test/StorageUtils.test.js +0 -72
  482. package/dist/esm/src/storage/__test/StorageUtils.test.js.map +0 -1
  483. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts +0 -2
  484. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts.map +0 -1
  485. package/dist/types/src/storage/__test/StorageUploader.test.d.ts +0 -2
  486. package/dist/types/src/storage/__test/StorageUploader.test.d.ts.map +0 -1
  487. package/dist/types/src/storage/__test/StorageUtils.test.d.ts +0 -2
  488. package/dist/types/src/storage/__test/StorageUtils.test.d.ts.map +0 -1
@@ -354,12 +354,45 @@ describe('Script', () => {
354
354
  })
355
355
 
356
356
  describe('#findAndDelete', () => {
357
- it('should find and delete this buffer', () => {
358
- expect(
359
- Script.fromASM('OP_RETURN f0f0')
360
- .findAndDelete(Script.fromASM('f0f0'))
361
- .toASM()
362
- ).toEqual('OP_RETURN')
357
+ it('should delete all matching single-chunk scripts', () => {
358
+ const target = new Script().writeBin([0xf0, 0xf0])
359
+ const script = new Script()
360
+ .writeOpCode(OP.OP_RETURN)
361
+ .writeBin([0xf0, 0xf0])
362
+ .writeOpCode(OP.OP_1)
363
+ .writeBin([0xf0, 0xf0])
364
+
365
+ expect(script.findAndDelete(target).toASM()).toEqual('OP_RETURN OP_1')
366
+ })
367
+
368
+ it('should match OP_RETURN chunks with data', () => {
369
+ const target = new Script([{ op: OP.OP_RETURN, data: [0x01, 0x02, 0x03] }])
370
+ const script = new Script([
371
+ { op: OP.OP_RETURN, data: [0x01, 0x02, 0x03] },
372
+ { op: OP.OP_1 }
373
+ ])
374
+
375
+ expect(script.findAndDelete(target).toASM()).toEqual('OP_1')
376
+ })
377
+
378
+ it('should handle PUSHDATA2 payloads', () => {
379
+ const data = Array.from({ length: 300 }, (_, i) => i & 0xff)
380
+ const other = data.slice()
381
+ other[0] = (other[0] + 1) & 0xff
382
+
383
+ const target = new Script().writeBin(data)
384
+ const script = new Script().writeBin(other).writeBin(data).writeOpCode(OP.OP_1)
385
+
386
+ script.findAndDelete(target)
387
+ expect(script.chunks).toHaveLength(2)
388
+ expect(script.chunks[0].data).toEqual(other)
389
+ expect(script.chunks[1].op).toEqual(OP.OP_1)
390
+ })
391
+
392
+ it('should not delete when the target has multiple chunks', () => {
393
+ const script = Script.fromASM('OP_1')
394
+ const target = Script.fromASM('OP_1 OP_2')
395
+ expect(script.findAndDelete(target).toASM()).toEqual('OP_1')
363
396
  })
364
397
  })
365
398
 
@@ -9,7 +9,7 @@ import LockingScript from '../../script/LockingScript'
9
9
  import UnlockingScript from '../../script/UnlockingScript'
10
10
  import MerklePath from '../../transaction/MerklePath'
11
11
  import ChainTracker from '../../transaction/ChainTracker'
12
- import spendValid from './spend.valid.vectors'
12
+ import { preChronicle as spendValid } from './spend.valid.vectors'
13
13
  import Script from '../../script/Script'
14
14
  import BigNumber from '../../primitives/BigNumber'
15
15
  import ScriptChunk from '../../script/ScriptChunk'
@@ -0,0 +1,63 @@
1
+ import PrivateKey from '../../primitives/PrivateKey'
2
+ import { hash160, hash256 } from '../../primitives/Hash'
3
+ import Curve from '../../primitives/Curve'
4
+ import Spend from '../Spend'
5
+ import P2PKH from '../templates/P2PKH'
6
+ import RPuzzle from '../templates/RPuzzle'
7
+ import Transaction from '../../transaction/Transaction'
8
+ import LockingScript from '../LockingScript'
9
+ import UnlockingScript from '../UnlockingScript'
10
+
11
+ import { preChronicle as spendValid1, chronicle as spendValid2 } from './spend.valid.vectors'
12
+
13
+ describe('Spend Valid Vectors 1', () => {
14
+ for (let i = 0; i < spendValid1.length; i++) {
15
+ const a = spendValid1[i]
16
+ if (a.length === 1) {
17
+ continue
18
+ }
19
+ it(`${i} ${a[2]}`, () => {
20
+ const spend = new Spend({
21
+ sourceTXID:
22
+ '0000000000000000000000000000000000000000000000000000000000000000',
23
+ sourceOutputIndex: 0,
24
+ sourceSatoshis: 1,
25
+ lockingScript: LockingScript.fromHex(a[1]),
26
+ transactionVersion: 1,
27
+ otherInputs: [],
28
+ outputs: [],
29
+ inputIndex: 0,
30
+ unlockingScript: UnlockingScript.fromHex(a[0]),
31
+ inputSequence: 0xffffffff,
32
+ lockTime: 0
33
+ })
34
+ expect(spend.validate()).toBe(true)
35
+ })
36
+ }
37
+ })
38
+
39
+ describe('Spend Valid Vectors 2', () => {
40
+ for (let i = 0; i < spendValid2.length; i++) {
41
+ const a = spendValid2[i]
42
+ if (a.length === 1) {
43
+ continue
44
+ }
45
+ it(`${i} ${a[2]}`, () => {
46
+ const spend = new Spend({
47
+ sourceTXID:
48
+ '0000000000000000000000000000000000000000000000000000000000000000',
49
+ sourceOutputIndex: 0,
50
+ sourceSatoshis: 1,
51
+ lockingScript: LockingScript.fromHex(a[1]),
52
+ transactionVersion: 1,
53
+ otherInputs: [],
54
+ outputs: [],
55
+ inputIndex: 0,
56
+ unlockingScript: UnlockingScript.fromHex(a[0]),
57
+ inputSequence: 0xffffffff,
58
+ lockTime: 0
59
+ })
60
+ expect(spend.validate()).toBe(true)
61
+ })
62
+ }
63
+ })
@@ -0,0 +1,185 @@
1
+ import { toHex } from "../../primitives/utils"
2
+ import Script from "../Script"
3
+ import Spend from "../Spend"
4
+
5
+ describe('lrshiftnum tests', () => {
6
+ jest.setTimeout(99999999)
7
+
8
+ test('0 valid OP_LSHIFTNUM Scripts', async () => {
9
+ for (const [script, stack] of lshiftnumValidScripts) {
10
+ const result = executeScriptCode(script, stack)
11
+ expect(result).toBe(true)
12
+ }
13
+ })
14
+
15
+ test('1 invalid OP_LSHIFTNUM Scripts', async () => {
16
+ for (const [script, stack] of lshiftnumInvalidScripts) {
17
+ try {
18
+ // An invalid script should throw...
19
+ const result = executeScriptCode(script, stack)
20
+ expect(true).toBe(false)
21
+ } catch (e) {
22
+ expect(e).toBeTruthy()
23
+ }
24
+ }
25
+ })
26
+
27
+ test('2 valid OP_RSHIFTNUM Scripts', async () => {
28
+ for (const [script, stack] of rshiftnumValidScripts) {
29
+ const result = executeScriptCode(script, stack)
30
+ expect(result).toBe(true)
31
+ }
32
+ })
33
+
34
+ test('3 invalid OP_RSHIFTNUM Scripts', async () => {
35
+ for (const [script, stack] of rshiftnumInvalidScripts) {
36
+ try {
37
+ // An invalid script should throw...
38
+ const result = executeScriptCode(script, stack)
39
+ expect(true).toBe(false)
40
+ } catch (e) {
41
+ expect(e).toBeTruthy()
42
+ }
43
+ }
44
+ })
45
+ })
46
+
47
+ const lshiftnumInvalidScripts: [string, string[]][] = [
48
+ ['OP_LSHIFTNUM',
49
+ ['']],
50
+ ['OP_1 OP_LSHIFTNUM',
51
+ ['']],
52
+ ['OP_2, OP_1NEGATE, OP_LSHIFTNUM',
53
+ ['']],
54
+ ]
55
+
56
+ const lshiftnumValidScripts: [string, string[]][] = [
57
+ ['010203 OP_16 OP_LSHIFTNUM', // shift 2 bytes
58
+ ['0000010203']
59
+ ]
60
+ ,
61
+ ['OP_0 OP_1 OP_LSHIFTNUM', // empty input data
62
+ ['']
63
+ ],
64
+ ['OP_1 OP_0 OP_LSHIFTNUM', // shift by 0
65
+ ['01']
66
+ ],
67
+
68
+ ['OP_1 OP_8 OP_LSHIFTNUM', // shift by size of stack element (or greater)
69
+ ['0001']
70
+ ],
71
+
72
+ ['0102 OP_8 OP_LSHIFTNUM', // shift 1 byte
73
+ ['000102']
74
+ ],
75
+
76
+ ['010203 OP_16 OP_LSHIFTNUM', // shift 2 bytes
77
+ ['0000010203']
78
+ ],
79
+
80
+ ['OP_1 OP_1 OP_LSHIFTNUM', // shift by 1 bit
81
+ ['02']
82
+ ],
83
+
84
+ ['OP_1 OP_2 OP_LSHIFTNUM', // shift by 2 bits
85
+ ['04']
86
+ ],
87
+
88
+ ['OP_1 OP_7 OP_LSHIFTNUM',
89
+ ['8000']
90
+ ],
91
+
92
+ ['0102 OP_9 OP_LSHIFTNUM', // shift by bits and bytes
93
+ ['000204']
94
+ ],
95
+
96
+ // Negative numbers
97
+ ['OP_1NEGATE OP_7 OP_LSHIFTNUM', // shift into the sign bit
98
+ ['8080']
99
+ ],
100
+
101
+ ['0180 OP_7 OP_LSHIFTNUM', // shift into the sign bit
102
+ ['8080']
103
+ ],
104
+ ]
105
+
106
+ const rshiftnumInvalidScripts: [string, string[]][] = [
107
+ ['OP_RSHIFTNUM',
108
+ ['']],
109
+ ['OP_1 OP_RSHIFTNUM',
110
+ ['']],
111
+ ['OP_2 OP_1NEGATE OP_RSHIFTNUM',
112
+ ['']],
113
+ ]
114
+
115
+ const rshiftnumValidScripts: [string, string[]][] = [
116
+ ['OP_0 OP_1 OP_RSHIFTNUM', // empty input data
117
+ ['']],
118
+
119
+ ['OP_1 OP_0 OP_RSHIFTNUM', // shift by 0
120
+ ['01']],
121
+
122
+ ['0102 OP_8 OP_RSHIFTNUM', // shift 1 byte
123
+ ['02']],
124
+
125
+ ['010203 OP_16 OP_RSHIFTNUM', // shift 2 bytes
126
+ ['03']],
127
+
128
+ ['OP_2 OP_1 OP_RSHIFTNUM', // shift by 1 bit
129
+ ['01']],
130
+
131
+ ['OP_4 OP_2 OP_RSHIFTNUM', // shift by 2 bits
132
+ ['01']],
133
+
134
+ ['0001 OP_1 OP_RSHIFTNUM', // 256 >> 1 -> 128
135
+ ['8000']],
136
+
137
+ ['0081 OP_1 OP_RSHIFTNUM', // -256 >> 1 -> -128
138
+ ['8080']],
139
+
140
+ ['010204 OP_9 OP_RSHIFTNUM', // shift by bits and bytes
141
+ ['0102']],
142
+
143
+ // round to 0
144
+ ['OP_1 OP_1 OP_RSHIFTNUM', // 1 >> 1 -> 0
145
+ ['']],
146
+
147
+ ['OP_1NEGATE OP_1 OP_RSHIFTNUM', // -1 >> 1 -> 0
148
+ ['']],
149
+ ]
150
+
151
+ function executeScriptCode(script: Script | string, expectedStack: string[]): boolean {
152
+ if (typeof script === 'string')
153
+ script = Script.fromASM(script)
154
+ const spend = new Spend({
155
+ sourceTXID: '',
156
+ sourceOutputIndex: 0,
157
+ sourceSatoshis: 0,
158
+ lockingScript: script,
159
+ transactionVersion: 0,
160
+ otherInputs: [],
161
+ outputs: [],
162
+ unlockingScript: new Script(),
163
+ inputSequence: 0,
164
+ inputIndex: 0,
165
+ lockTime: 0,
166
+ memoryLimit: undefined,
167
+ isRelaxed: true
168
+ })
169
+ for (let i = 0; i < script.chunks.length; i++)
170
+ spend.step()
171
+ const stack = spend.stack
172
+ if (stack.length !== expectedStack.length) {
173
+ console.log(`script ${script.toASM()} expected stack length ${expectedStack.length} but got ${stack.length}`)
174
+ return false
175
+ }
176
+ for (let i = 0; i < expectedStack.length; i++) {
177
+ const expected = expectedStack[i]
178
+ const actual = toHex(stack[i])
179
+ if (expected !== actual) {
180
+ console.log(`script ${script.toASM()} expected stack[${i}] ${expected} but got ${actual}`)
181
+ return false
182
+ }
183
+ }
184
+ return true
185
+ }