import { hexToBin } from '@bitauth/libauth' ; import { Op , Script } from '../src' ; export interface Fixture { name : string ; script : Script ; asm : string ; bytecode : Uint8Array ; bytesize : number ; opcount : number ; } export const fixtures = [ { name : 'simple addition' , script : [ Op . OP_1 , Op . OP_1 , Op . OP_ADD ] , asm : 'OP_1 OP_1 OP_ADD' , bytecode : hexToBin ( '515193' ) , bytesize : 3 , opcount : 1 , } , { name : 'P2PKH' , script : [ Op . OP_DUP , Op . OP_HASH160 , hexToBin ( 'd627b2c3ede2aa85ca5869328873be1d8400bbcb' ) , Op . OP_EQUALVERIFY , Op . OP_CHECKSIG ] , asm : 'OP_DUP OP_HASH160 d627b2c3ede2aa85ca5869328873be1d8400bbcb OP_EQUALVERIFY OP_CHECKSIG' , bytecode : hexToBin ( '76a914d627b2c3ede2aa85ca5869328873be1d8400bbcb88ac' ) , bytesize : 25 , opcount : 4 , } , { name : 'Mecenas (2021-03-12)' , script : [ Op . OP_4 , Op . OP_PICK , hexToBin ( '' ) , Op . OP_NUMEQUAL , Op . OP_IF , Op . OP_5 , Op . OP_PICK , Op . OP_NOP , hexToBin ( '68' ) , Op . OP_SPLIT , Op . OP_NIP , Op . OP_SIZE , hexToBin ( '34' ) , Op . OP_SUB , Op . OP_SPLIT , Op . OP_8 , Op . OP_SPLIT , Op . OP_4 , Op . OP_SPLIT , Op . OP_NIP , hexToBin ( '20' ) , Op . OP_SPLIT , Op . OP_DROP , Op . OP_10 , Op . OP_ROLL , Op . OP_10 , Op . OP_ROLL , Op . OP_2DUP , Op . OP_SWAP , Op . OP_SIZE , Op . OP_1SUB , Op . OP_SPLIT , Op . OP_DROP , Op . OP_12 , Op . OP_ROLL , Op . OP_SHA256 , Op . OP_ROT , Op . OP_CHECKDATASIGVERIFY , Op . OP_CHECKSIGVERIFY , Op . OP_6 , Op . OP_ROLL , Op . OP_CHECKSEQUENCEVERIFY , Op . OP_DROP , hexToBin ( 'e803' ) , Op . OP_ROT , Op . OP_BIN2NUM , Op . OP_DUP , Op . OP_7 , Op . OP_PICK , Op . OP_3 , Op . OP_PICK , Op . OP_ADD , Op . OP_LESSTHANOREQUAL , Op . OP_IF , Op . OP_2DUP , Op . OP_SWAP , Op . OP_SUB , Op . OP_8 , Op . OP_NUM2BIN , Op . OP_DUP , hexToBin ( '1976a914' ) , Op . OP_CAT , Op . OP_6 , Op . OP_PICK , Op . OP_CAT , hexToBin ( '88ac' ) , Op . OP_CAT , Op . OP_DUP , Op . OP_HASH256 , Op . OP_5 , Op . OP_PICK , Op . OP_EQUALVERIFY , Op . OP_2DROP , Op . OP_ELSE , Op . OP_6 , Op . OP_PICK , Op . OP_8 , Op . OP_NUM2BIN , Op . OP_OVER , Op . OP_8 , Op . OP_PICK , Op . OP_SUB , Op . OP_3 , Op . OP_PICK , Op . OP_SUB , Op . OP_8 , Op . OP_NUM2BIN , Op . OP_OVER , hexToBin ( '1976a914' ) , Op . OP_CAT , Op . OP_7 , Op . OP_PICK , Op . OP_CAT , hexToBin ( '88ac' ) , Op . OP_CAT , Op . OP_OVER , hexToBin ( '17a914' ) , Op . OP_CAT , Op . OP_7 , Op . OP_PICK , Op . OP_HASH160 , Op . OP_CAT , hexToBin ( '87' ) , Op . OP_CAT , Op . OP_2DUP , Op . OP_CAT , Op . OP_HASH256 , Op . OP_7 , Op . OP_PICK , Op . OP_EQUALVERIFY , Op . OP_2DROP , Op . OP_2DROP , Op . OP_ENDIF , Op . OP_2DROP , Op . OP_2DROP , Op . OP_2DROP , Op . OP_2DROP , Op . OP_1 , Op . OP_ELSE , Op . OP_4 , Op . OP_ROLL , Op . OP_1 , Op . OP_NUMEQUALVERIFY , Op . OP_4 , Op . OP_PICK , Op . OP_HASH160 , Op . OP_ROT , Op . OP_EQUALVERIFY , Op . OP_4 , Op . OP_ROLL , Op . OP_4 , Op . OP_ROLL , Op . OP_CHECKSIG , Op . OP_NIP , Op . OP_NIP , Op . OP_NIP , Op . OP_ENDIF , ] , asm : 'OP_4 OP_PICK OP_0 OP_NUMEQUAL OP_IF OP_5 OP_PICK OP_NOP 68 OP_SPLIT OP_NIP ' + 'OP_SIZE 34 OP_SUB OP_SPLIT OP_8 OP_SPLIT OP_4 OP_SPLIT OP_NIP 20 OP_SPLIT ' + 'OP_DROP OP_10 OP_ROLL OP_10 OP_ROLL OP_2DUP OP_SWAP OP_SIZE OP_1SUB OP_SPLIT ' + 'OP_DROP OP_12 OP_ROLL OP_SHA256 OP_ROT OP_CHECKDATASIGVERIFY OP_CHECKSIGVERIFY ' + 'OP_6 OP_ROLL OP_CHECKSEQUENCEVERIFY OP_DROP e803 OP_ROT OP_BIN2NUM OP_DUP OP_7 ' + 'OP_PICK OP_3 OP_PICK OP_ADD OP_LESSTHANOREQUAL OP_IF OP_2DUP OP_SWAP OP_SUB OP_8 ' + 'OP_NUM2BIN OP_DUP 1976a914 OP_CAT OP_6 OP_PICK OP_CAT 88ac OP_CAT OP_DUP ' + 'OP_HASH256 OP_5 OP_PICK OP_EQUALVERIFY OP_2DROP OP_ELSE OP_6 OP_PICK OP_8 ' + 'OP_NUM2BIN OP_OVER OP_8 OP_PICK OP_SUB OP_3 OP_PICK OP_SUB OP_8 OP_NUM2BIN ' + 'OP_OVER 1976a914 OP_CAT OP_7 OP_PICK OP_CAT 88ac OP_CAT OP_OVER 17a914 OP_CAT ' + 'OP_7 OP_PICK OP_HASH160 OP_CAT 87 OP_CAT OP_2DUP OP_CAT OP_HASH256 OP_7 OP_PICK ' + 'OP_EQUALVERIFY OP_2DROP OP_2DROP OP_ENDIF OP_2DROP OP_2DROP OP_2DROP OP_2DROP ' + 'OP_1 OP_ELSE OP_4 OP_ROLL OP_1 OP_NUMEQUALVERIFY OP_4 OP_PICK OP_HASH160 OP_ROT ' + 'OP_EQUALVERIFY OP_4 OP_ROLL OP_4 OP_ROLL OP_CHECKSIG OP_NIP OP_NIP OP_NIP OP_ENDIF' , bytecode : hexToBin ( '5479009c6355796101687f77820134947f587f547f7701207f755a7a5a7a6e7c828c7f755c7aa87bbbad567ab27502e8037b81765779537993a1636e7c94588076041976a9147e56797e0288ac7e76aa5579886d675679588078587994537994588078041976a9147e57797e0288ac7e780317a9147e5779a97e01877e6e7eaa5779886d6d686d6d6d6d5167547a519d5479a97b88547a547aac77777768' ) , bytesize : 158 , opcount : 99 , } , ] ;