@@ -1368,13 +1368,18 @@ export const fixtures: Fixture[] = [
13681368 'p2pkh_placeholder_lock_0' ,
13691369 'p2pkh_placeholder_unlock_0' ,
13701370 ] ,
1371- 'description' : 'placeholder_key_0 ' ,
1371+ 'description' : 'P2PKH data for input 0 ' ,
13721372 'name' : 'P2PKH Signer (input #0)' ,
13731373 'variables' : {
1374- 'placeholder_key_0 ' : {
1374+ 'signature_0 ' : {
13751375 'description' : '' ,
1376- 'name' : 'P2PKH Placeholder Key (input #0)' ,
1377- 'type' : 'Key' ,
1376+ 'name' : 'P2PKH Signature (input #0)' ,
1377+ 'type' : 'WalletData' ,
1378+ } ,
1379+ 'public_key_0' : {
1380+ 'description' : '' ,
1381+ 'name' : 'P2PKH public key (input #0)' ,
1382+ 'type' : 'WalletData' ,
13781383 } ,
13791384 } ,
13801385 } ,
@@ -1383,13 +1388,18 @@ export const fixtures: Fixture[] = [
13831388 'p2pkh_placeholder_lock_2' ,
13841389 'p2pkh_placeholder_unlock_2' ,
13851390 ] ,
1386- 'description' : 'placeholder_key_2 ' ,
1391+ 'description' : 'P2PKH data for input 2 ' ,
13871392 'name' : 'P2PKH Signer (input #2)' ,
13881393 'variables' : {
1389- 'placeholder_key_2 ' : {
1394+ 'signature_2 ' : {
13901395 'description' : '' ,
1391- 'name' : 'P2PKH Placeholder Key (input #2)' ,
1392- 'type' : 'Key' ,
1396+ 'name' : 'P2PKH Signature (input #2)' ,
1397+ 'type' : 'WalletData' ,
1398+ } ,
1399+ 'public_key_2' : {
1400+ 'description' : '' ,
1401+ 'name' : 'P2PKH public key (input #2)' ,
1402+ 'type' : 'WalletData' ,
13931403 } ,
13941404 } ,
13951405 } ,
@@ -1409,27 +1419,136 @@ export const fixtures: Fixture[] = [
14091419 'script' : '// "P2PKH" contract constructor parameters\n<pkh> // bytes20 = <0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970>\n\n// bytecode\n /* contract P2PKH(bytes20 pkh) { */\n /* // Require pk to match stored pkh and signature to match */\n /* function spend(pubkey pk, sig s) { */\nOP_OVER OP_HASH160 OP_EQUALVERIFY /* require(hash160(pk) == pkh); */\nOP_CHECKSIG /* require(checkSig(s, pk)); */\n /* } */\n /* } */\n /* */' ,
14101420 } ,
14111421 'p2pkh_placeholder_unlock_0' : {
1422+ 'passes' : [
1423+ 'P2PKH_spend_input0_evaluate' ,
1424+ ] ,
14121425 'name' : 'P2PKH Unlock (input #0)' ,
1413- 'script' : '<placeholder_key_0.schnorr_signature.all_outputs_all_utxos >\n<placeholder_key_0.public_key >' ,
1426+ 'script' : '<signature_0 >\n<public_key_0 >' ,
14141427 'unlocks' : 'p2pkh_placeholder_lock_0' ,
14151428 } ,
14161429 'p2pkh_placeholder_lock_0' : {
14171430 'lockingType' : 'standard' ,
14181431 'name' : 'P2PKH Lock (input #0)' ,
1419- 'script' : 'OP_DUP\nOP_HASH160 <$(<placeholder_key_0.public_key > OP_HASH160\n)> OP_EQUALVERIFY\nOP_CHECKSIG' ,
1432+ 'script' : 'OP_DUP\nOP_HASH160 <$(<public_key_0 > OP_HASH160\n)> OP_EQUALVERIFY\nOP_CHECKSIG' ,
14201433 } ,
14211434 'p2pkh_placeholder_unlock_2' : {
1435+ 'passes' : [
1436+ 'P2PKH_spend_input2_evaluate' ,
1437+ ] ,
14221438 'name' : 'P2PKH Unlock (input #2)' ,
1423- 'script' : '<placeholder_key_2.ecdsa_signature.all_outputs >\n<placeholder_key_2.public_key >' ,
1439+ 'script' : '<signature_2 >\n<public_key_2 >' ,
14241440 'unlocks' : 'p2pkh_placeholder_lock_2' ,
14251441 } ,
14261442 'p2pkh_placeholder_lock_2' : {
14271443 'lockingType' : 'standard' ,
14281444 'name' : 'P2PKH Lock (input #2)' ,
1429- 'script' : 'OP_DUP\nOP_HASH160 <$(<placeholder_key_2.public_key > OP_HASH160\n)> OP_EQUALVERIFY\nOP_CHECKSIG' ,
1445+ 'script' : 'OP_DUP\nOP_HASH160 <$(<public_key_2 > OP_HASH160\n)> OP_EQUALVERIFY\nOP_CHECKSIG' ,
14301446 } ,
14311447 } ,
14321448 'scenarios' : {
1449+ 'P2PKH_spend_input0_evaluate' : {
1450+ 'name' : 'Evaluate P2PKH spend (input #0)' ,
1451+ 'description' : 'An example evaluation where this script execution passes.' ,
1452+ 'data' : {
1453+ 'bytecode' : {
1454+ 'signature_0' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 130 } $ / ) ,
1455+ 'public_key_0' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
1456+ } ,
1457+ 'currentBlockHeight' : expect . any ( Number ) ,
1458+ 'currentBlockTime' : expect . any ( Number ) ,
1459+ } ,
1460+ 'transaction' : {
1461+ 'inputs' : [
1462+ {
1463+ 'outpointIndex' : expect . any ( Number ) ,
1464+ 'outpointTransactionHash' : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ,
1465+ 'sequenceNumber' : 4294967294 ,
1466+ 'unlockingBytecode' : [
1467+ 'slot' ,
1468+ ] ,
1469+ } ,
1470+ {
1471+ 'outpointIndex' : expect . any ( Number ) ,
1472+ 'outpointTransactionHash' : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ,
1473+ 'sequenceNumber' : 4294967294 ,
1474+ 'unlockingBytecode' : {
1475+ 'script' : 'P2PKH_spend_input1_unlock' ,
1476+ 'overrides' : {
1477+ 'bytecode' : {
1478+ 'pk' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
1479+ 'pkh' : '0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970' ,
1480+ } ,
1481+ 'keys' : {
1482+ 'privateKeys' : {
1483+ 's' : '36f8155c559f3a670586bbbf9fd52beef6f96124f5a3a39c167fc24b052d24d7' ,
1484+ } ,
1485+ } ,
1486+ } ,
1487+ } ,
1488+ } ,
1489+ {
1490+ 'outpointIndex' : expect . any ( Number ) ,
1491+ 'outpointTransactionHash' : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ,
1492+ 'sequenceNumber' : 4294967294 ,
1493+ 'unlockingBytecode' : {
1494+ 'script' : 'p2pkh_placeholder_unlock_2' ,
1495+ 'overrides' : {
1496+ 'bytecode' : {
1497+ 'signature_2' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 142 , 146 } $ / ) ,
1498+ 'public_key_2' : '0x028f1219c918234d6bb06b4782354ff0759bd73036f3c849b88020c79fe013cd38' ,
1499+ } ,
1500+ } ,
1501+ } ,
1502+ } ,
1503+ ] ,
1504+ 'locktime' : expect . any ( Number ) ,
1505+ 'outputs' : [
1506+ {
1507+ 'lockingBytecode' : {
1508+ 'script' : 'P2PKH_eae136efb95be487872bfe03984fc1eb80b23361_lock' ,
1509+ 'overrides' : {
1510+ 'bytecode' : {
1511+ 'pkh' : '0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970' ,
1512+ } ,
1513+ } ,
1514+ } ,
1515+ 'valueSatoshis' : 1000 ,
1516+ } ,
1517+ ] ,
1518+ 'version' : 2 ,
1519+ } ,
1520+ 'sourceOutputs' : [
1521+ {
1522+ 'lockingBytecode' : [
1523+ 'slot' ,
1524+ ] ,
1525+ 'valueSatoshis' : expect . any ( Number ) ,
1526+ } ,
1527+ {
1528+ 'lockingBytecode' : {
1529+ 'script' : 'P2PKH_eae136efb95be487872bfe03984fc1eb80b23361_lock' ,
1530+ 'overrides' : {
1531+ 'bytecode' : {
1532+ 'pkh' : '0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970' ,
1533+ } ,
1534+ } ,
1535+ } ,
1536+ 'valueSatoshis' : expect . any ( Number ) ,
1537+ } ,
1538+ {
1539+ 'lockingBytecode' : {
1540+ 'script' : 'p2pkh_placeholder_lock_2' ,
1541+ 'overrides' : {
1542+ 'bytecode' : {
1543+ 'signature_2' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 142 , 146 } $ / ) ,
1544+ 'public_key_2' : '0x028f1219c918234d6bb06b4782354ff0759bd73036f3c849b88020c79fe013cd38' ,
1545+ } ,
1546+ } ,
1547+ } ,
1548+ 'valueSatoshis' : expect . any ( Number ) ,
1549+ } ,
1550+ ] ,
1551+ } ,
14331552 'P2PKH_spend_input1_evaluate' : {
14341553 'name' : 'Evaluate P2PKH spend (input #1)' ,
14351554 'description' : 'An example evaluation where this script execution passes.' ,
@@ -1455,10 +1574,9 @@ export const fixtures: Fixture[] = [
14551574 'unlockingBytecode' : {
14561575 'script' : 'p2pkh_placeholder_unlock_0' ,
14571576 'overrides' : {
1458- 'keys' : {
1459- 'privateKeys' : {
1460- 'placeholder_key_0' : '36f8155c559f3a670586bbbf9fd52beef6f96124f5a3a39c167fc24b052d24d7' ,
1461- } ,
1577+ 'bytecode' : {
1578+ 'signature_0' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 130 } $ / ) ,
1579+ 'public_key_0' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
14621580 } ,
14631581 } ,
14641582 } ,
@@ -1478,16 +1596,15 @@ export const fixtures: Fixture[] = [
14781596 'unlockingBytecode' : {
14791597 'script' : 'p2pkh_placeholder_unlock_2' ,
14801598 'overrides' : {
1481- 'keys' : {
1482- 'privateKeys' : {
1483- 'placeholder_key_2' : '71080d8b52ec7b12adaec909ed54cd989b682ce2c35647eec219a16f5f90c528' ,
1484- } ,
1599+ 'bytecode' : {
1600+ 'signature_2' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 142 , 146 } $ / ) ,
1601+ 'public_key_2' : '0x028f1219c918234d6bb06b4782354ff0759bd73036f3c849b88020c79fe013cd38' ,
14851602 } ,
14861603 } ,
14871604 } ,
14881605 } ,
14891606 ] ,
1490- 'locktime' : 0 ,
1607+ 'locktime' : expect . any ( Number ) ,
14911608 'outputs' : [
14921609 {
14931610 'lockingBytecode' : {
@@ -1508,10 +1625,9 @@ export const fixtures: Fixture[] = [
15081625 'lockingBytecode' : {
15091626 'script' : 'p2pkh_placeholder_lock_0' ,
15101627 'overrides' : {
1511- 'keys' : {
1512- 'privateKeys' : {
1513- 'placeholder_key_0' : '36f8155c559f3a670586bbbf9fd52beef6f96124f5a3a39c167fc24b052d24d7' ,
1514- } ,
1628+ 'bytecode' : {
1629+ 'signature_0' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 130 } $ / ) ,
1630+ 'public_key_0' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
15151631 } ,
15161632 } ,
15171633 } ,
@@ -1527,13 +1643,115 @@ export const fixtures: Fixture[] = [
15271643 'lockingBytecode' : {
15281644 'script' : 'p2pkh_placeholder_lock_2' ,
15291645 'overrides' : {
1530- 'keys' : {
1531- 'privateKeys' : {
1532- 'placeholder_key_2' : '71080d8b52ec7b12adaec909ed54cd989b682ce2c35647eec219a16f5f90c528' ,
1646+ 'bytecode' : {
1647+ 'signature_2' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 142 , 146 } $ / ) ,
1648+ 'public_key_2' : '0x028f1219c918234d6bb06b4782354ff0759bd73036f3c849b88020c79fe013cd38' ,
1649+ } ,
1650+ } ,
1651+ } ,
1652+ 'valueSatoshis' : expect . any ( Number ) ,
1653+ } ,
1654+ ] ,
1655+ } ,
1656+ 'P2PKH_spend_input2_evaluate' : {
1657+ 'name' : 'Evaluate P2PKH spend (input #2)' ,
1658+ 'description' : 'An example evaluation where this script execution passes.' ,
1659+ 'data' : {
1660+ 'bytecode' : {
1661+ 'signature_2' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 142 , 146 } $ / ) ,
1662+ 'public_key_2' : '0x028f1219c918234d6bb06b4782354ff0759bd73036f3c849b88020c79fe013cd38' ,
1663+ } ,
1664+ 'currentBlockHeight' : expect . any ( Number ) ,
1665+ 'currentBlockTime' : expect . any ( Number ) ,
1666+ } ,
1667+ 'transaction' : {
1668+ 'inputs' : [
1669+ {
1670+ 'outpointIndex' : expect . any ( Number ) ,
1671+ 'outpointTransactionHash' : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ,
1672+ 'sequenceNumber' : 4294967294 ,
1673+ 'unlockingBytecode' : {
1674+ 'script' : 'p2pkh_placeholder_unlock_0' ,
1675+ 'overrides' : {
1676+ 'bytecode' : {
1677+ 'signature_0' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 130 } $ / ) ,
1678+ 'public_key_0' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
1679+ } ,
1680+ } ,
1681+ } ,
1682+ } ,
1683+ {
1684+ 'outpointIndex' : expect . any ( Number ) ,
1685+ 'outpointTransactionHash' : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ,
1686+ 'sequenceNumber' : 4294967294 ,
1687+ 'unlockingBytecode' : {
1688+ 'script' : 'P2PKH_spend_input1_unlock' ,
1689+ 'overrides' : {
1690+ 'bytecode' : {
1691+ 'pk' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
1692+ 'pkh' : '0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970' ,
1693+ } ,
1694+ 'keys' : {
1695+ 'privateKeys' : {
1696+ 's' : '36f8155c559f3a670586bbbf9fd52beef6f96124f5a3a39c167fc24b052d24d7' ,
1697+ } ,
15331698 } ,
15341699 } ,
15351700 } ,
15361701 } ,
1702+ {
1703+ 'outpointIndex' : expect . any ( Number ) ,
1704+ 'outpointTransactionHash' : expect . stringMatching ( / ^ [ 0 - 9 a - f ] { 64 } $ / ) ,
1705+ 'sequenceNumber' : 4294967294 ,
1706+ 'unlockingBytecode' : [
1707+ 'slot' ,
1708+ ] ,
1709+ } ,
1710+ ] ,
1711+ 'locktime' : expect . any ( Number ) ,
1712+ 'outputs' : [
1713+ {
1714+ 'lockingBytecode' : {
1715+ 'script' : 'P2PKH_eae136efb95be487872bfe03984fc1eb80b23361_lock' ,
1716+ 'overrides' : {
1717+ 'bytecode' : {
1718+ 'pkh' : '0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970' ,
1719+ } ,
1720+ } ,
1721+ } ,
1722+ 'valueSatoshis' : 1000 ,
1723+ } ,
1724+ ] ,
1725+ 'version' : 2 ,
1726+ } ,
1727+ 'sourceOutputs' : [
1728+ {
1729+ 'lockingBytecode' : {
1730+ 'script' : 'p2pkh_placeholder_lock_0' ,
1731+ 'overrides' : {
1732+ 'bytecode' : {
1733+ 'signature_0' : expect . stringMatching ( / ^ 0 x [ 0 - 9 a - f ] { 130 } $ / ) ,
1734+ 'public_key_0' : '0x0373cc07b54c22da627b572a387a20ea190c9382e5e6d48c1d5b89c5cea2c4c088' ,
1735+ } ,
1736+ } ,
1737+ } ,
1738+ 'valueSatoshis' : expect . any ( Number ) ,
1739+ } ,
1740+ {
1741+ 'lockingBytecode' : {
1742+ 'script' : 'P2PKH_eae136efb95be487872bfe03984fc1eb80b23361_lock' ,
1743+ 'overrides' : {
1744+ 'bytecode' : {
1745+ 'pkh' : '0x512dbb2c8c02efbac8d92431aa0ac33f6b0bf970' ,
1746+ } ,
1747+ } ,
1748+ } ,
1749+ 'valueSatoshis' : expect . any ( Number ) ,
1750+ } ,
1751+ {
1752+ 'lockingBytecode' : [
1753+ 'slot' ,
1754+ ] ,
15371755 'valueSatoshis' : expect . any ( Number ) ,
15381756 } ,
15391757 ] ,
0 commit comments