@@ -1482,28 +1482,33 @@ BOOST_AUTO_TEST_CASE(script_HasValidOps)
1482
1482
BOOST_CHECK (!script.HasValidOps ());
1483
1483
}
1484
1484
1485
+ static std::string DatacarrierBytesStr (const CScript &script) {
1486
+ auto dcb = script.DatacarrierBytes ();
1487
+ return strprintf (" %s+%s" , dcb.first , dcb.second );
1488
+ }
1489
+
1485
1490
BOOST_AUTO_TEST_CASE (script_DataCarrierBytes)
1486
1491
{
1487
1492
using zeros = std::vector<unsigned char >;
1488
1493
1489
1494
// empty script
1490
- BOOST_CHECK_EQUAL (0 , (CScript ()). DatacarrierBytes ( ));
1495
+ BOOST_CHECK_EQUAL (" 0+0 " , DatacarrierBytesStr (CScript ()));
1491
1496
// series of pushes are not data
1492
- BOOST_CHECK_EQUAL (0 , (CScript () << OP_0 << OP_0 << OP_0). DatacarrierBytes ( ));
1497
+ BOOST_CHECK_EQUAL (" 0+0 " , DatacarrierBytesStr (CScript () << OP_0 << OP_0 << OP_0));
1493
1498
// unspendable if first op is OP_RETURN, then length(1), zeros(11)
1494
- BOOST_CHECK_EQUAL (13 , (CScript () << OP_RETURN << zeros (11 )). DatacarrierBytes ( ));
1499
+ BOOST_CHECK_EQUAL (" 13+0 " , DatacarrierBytesStr (CScript () << OP_RETURN << zeros (11 )));
1495
1500
// invalid script (no data following PUSHDATA) makes it all data
1496
- BOOST_CHECK_EQUAL (2 , (CScript () << OP_0 << OP_PUSHDATA4). DatacarrierBytes ( ));
1501
+ BOOST_CHECK_EQUAL (" 0+2 " , DatacarrierBytesStr (CScript () << OP_0 << OP_PUSHDATA4));
1497
1502
// no data here
1498
- BOOST_CHECK_EQUAL (0 , (CScript () << OP_TRUE << OP_IF << OP_ENDIF). DatacarrierBytes ( ));
1503
+ BOOST_CHECK_EQUAL (" 0+0 " , DatacarrierBytesStr (CScript () << OP_TRUE << OP_IF << OP_ENDIF));
1499
1504
// specific data pattern, entire script is data
1500
- BOOST_CHECK_EQUAL (4 , (CScript () << OP_FALSE << OP_IF << OP_7 << OP_ENDIF). DatacarrierBytes ( ));
1505
+ BOOST_CHECK_EQUAL (" 0+4 " , DatacarrierBytesStr (CScript () << OP_FALSE << OP_IF << OP_7 << OP_ENDIF));
1501
1506
// consecutive data
1502
- BOOST_CHECK_EQUAL (6 , (CScript () << OP_FALSE << OP_IF << OP_ENDIF << OP_FALSE << OP_IF << OP_ENDIF). DatacarrierBytes ( ));
1507
+ BOOST_CHECK_EQUAL (" 0+6 " , DatacarrierBytesStr (CScript () << OP_FALSE << OP_IF << OP_ENDIF << OP_FALSE << OP_IF << OP_ENDIF));
1503
1508
// nested data (all is data)
1504
- BOOST_CHECK_EQUAL (6 , (CScript () << OP_FALSE << OP_IF << OP_TRUE << OP_IF << OP_ENDIF << OP_ENDIF). DatacarrierBytes ( ));
1509
+ BOOST_CHECK_EQUAL (" 0+6 " , DatacarrierBytesStr (CScript () << OP_FALSE << OP_IF << OP_TRUE << OP_IF << OP_ENDIF << OP_ENDIF));
1505
1510
// pushing then immediately dropping is data: length(1), zero(11), OP_DROP
1506
- BOOST_CHECK_EQUAL (13 , (CScript () << zeros (11 ) << OP_DROP). DatacarrierBytes ( ));
1511
+ BOOST_CHECK_EQUAL (" 0+13 " , DatacarrierBytesStr (CScript () << zeros (11 ) << OP_DROP));
1507
1512
}
1508
1513
1509
1514
BOOST_AUTO_TEST_CASE (script_GetScriptForTransactionInput)
@@ -1518,7 +1523,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1518
1523
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1519
1524
BOOST_CHECK (ret_script == tx_in.scriptSig );
1520
1525
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1521
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1526
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1522
1527
}
1523
1528
{ // P2PKH - no datacarrier bytes
1524
1529
CScript prev_script; // scriptPubKey
@@ -1529,7 +1534,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1529
1534
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1530
1535
BOOST_CHECK (ret_script == tx_in.scriptSig );
1531
1536
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1532
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1537
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1533
1538
}
1534
1539
{ // P2SH - no datacarrier bytes
1535
1540
CScript prev_script; // scriptPubKey
@@ -1542,7 +1547,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1542
1547
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1543
1548
BOOST_CHECK (ret_script == redeem_script);
1544
1549
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1545
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1550
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1546
1551
}
1547
1552
{ // P2SH - with datacarrier bytes
1548
1553
CScript prev_script; // scriptPubKey
@@ -1557,7 +1562,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1557
1562
BOOST_CHECK (ret_script == redeem_script);
1558
1563
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1559
1564
// OP_RETURN(1), length(1), zeros(27) = 29
1560
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 29 );
1565
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 29+0 " );
1561
1566
}
1562
1567
{ // P2WPKH - no datacarrier bytes
1563
1568
CScript prev_script; // scriptPubKey
@@ -1573,7 +1578,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1573
1578
// should have no script at all since it's wrapped P2WPKH
1574
1579
BOOST_CHECK (ret_script == CScript ());
1575
1580
BOOST_CHECK_EQUAL (scale, 0 );
1576
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1581
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1577
1582
}
1578
1583
{ // P2WSH - no datacarrier bytes
1579
1584
CScript prev_script; // scriptPubKey
@@ -1589,7 +1594,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1589
1594
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1590
1595
BOOST_CHECK (ret_script == redeem_script);
1591
1596
BOOST_CHECK_EQUAL (scale, 1 );
1592
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1597
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1593
1598
}
1594
1599
{ // P2WSH - some datacarrier bytes
1595
1600
CScript prev_script; // scriptPubKey
@@ -1606,7 +1611,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1606
1611
BOOST_CHECK (ret_script == redeem_script);
1607
1612
BOOST_CHECK_EQUAL (scale, 1 );
1608
1613
// OP_FALSE(1), OP_IF(1), length(1), zeros(10), OP_ENDIF(1)
1609
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 14 );
1614
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+14 " );
1610
1615
}
1611
1616
{ // P2SH-P2WPKH - no datacarrier bytes
1612
1617
CScript prev_script; // scriptPubKey
@@ -1621,7 +1626,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1621
1626
BOOST_CHECK (ret_script == CScript ());
1622
1627
// data bytes in the witness get discounted (*1 instead of *4)
1623
1628
BOOST_CHECK_EQUAL (scale, 0 );
1624
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1629
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1625
1630
}
1626
1631
{ // P2SH-P2WSH - no datacarrier bytes
1627
1632
CScript prev_script; // scriptPubKey
@@ -1645,7 +1650,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1645
1650
BOOST_CHECK (ret_script == witness_redeem_script);
1646
1651
// data bytes in the witness get discounted (*1 instead of *4)
1647
1652
BOOST_CHECK_EQUAL (scale, 1 );
1648
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1653
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1649
1654
}
1650
1655
{ // P2SH-P2WSH - some datacarrier bytes
1651
1656
CScript prev_script; // scriptPubKey
@@ -1670,7 +1675,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1670
1675
// data bytes in the witness get discounted (*1 instead of *4)
1671
1676
BOOST_CHECK_EQUAL (scale, 1 );
1672
1677
// OP_FALSE(1), OP_IF(1), length(1), zeros(10), OP_ENDIF(1) = 14
1673
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 14 );
1678
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+14 " );
1674
1679
}
1675
1680
{ // P2TR keypath - no datacarrier bytes
1676
1681
CScript prev_script; // scriptPubKey
@@ -1682,7 +1687,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1682
1687
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1683
1688
BOOST_CHECK (ret_script == CScript ());
1684
1689
BOOST_CHECK_EQUAL (scale, 0 );
1685
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1690
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1686
1691
}
1687
1692
{ // P2TR keypath - annex but no script - no datacarrier bytes
1688
1693
CScript prev_script; // scriptPubKey
@@ -1696,7 +1701,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1696
1701
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1697
1702
BOOST_CHECK (ret_script == CScript ());
1698
1703
BOOST_CHECK_EQUAL (scale, 0 );
1699
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1704
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1700
1705
}
1701
1706
{ // P2TR scriptpath - no datacarrier bytes
1702
1707
CScript prev_script; // scriptPubKey
@@ -1715,7 +1720,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1715
1720
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1716
1721
BOOST_CHECK (ret_script == script);
1717
1722
BOOST_CHECK_EQUAL (scale, 1 );
1718
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1723
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1719
1724
}
1720
1725
{ // P2TR scriptpath - some datacarrier bytes
1721
1726
CScript prev_script; // scriptPubKey
@@ -1733,7 +1738,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1733
1738
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1734
1739
BOOST_CHECK (ret_script == script);
1735
1740
BOOST_CHECK_EQUAL (scale, 1 );
1736
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 3 );
1741
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 3+0 " );
1737
1742
}
1738
1743
}
1739
1744
0 commit comments