@@ -1505,28 +1505,33 @@ BOOST_AUTO_TEST_CASE(script_HasValidOps)
1505
1505
BOOST_CHECK (!script.HasValidOps ());
1506
1506
}
1507
1507
1508
+ static std::string DatacarrierBytesStr (const CScript &script) {
1509
+ auto dcb = script.DatacarrierBytes ();
1510
+ return strprintf (" %s+%s" , dcb.first , dcb.second );
1511
+ }
1512
+
1508
1513
BOOST_AUTO_TEST_CASE (script_DataCarrierBytes)
1509
1514
{
1510
1515
using zeros = std::vector<unsigned char >;
1511
1516
1512
1517
// empty script
1513
- BOOST_CHECK_EQUAL (0 , (CScript ()). DatacarrierBytes ( ));
1518
+ BOOST_CHECK_EQUAL (" 0+0 " , DatacarrierBytesStr (CScript ()));
1514
1519
// series of pushes are not data
1515
- BOOST_CHECK_EQUAL (0 , (CScript () << OP_0 << OP_0 << OP_0). DatacarrierBytes ( ));
1520
+ BOOST_CHECK_EQUAL (" 0+0 " , DatacarrierBytesStr (CScript () << OP_0 << OP_0 << OP_0));
1516
1521
// unspendable if first op is OP_RETURN, then length(1), zeros(11)
1517
- BOOST_CHECK_EQUAL (13 , (CScript () << OP_RETURN << zeros (11 )). DatacarrierBytes ( ));
1522
+ BOOST_CHECK_EQUAL (" 13+0 " , DatacarrierBytesStr (CScript () << OP_RETURN << zeros (11 )));
1518
1523
// invalid script (no data following PUSHDATA) makes it all data
1519
- BOOST_CHECK_EQUAL (2 , (CScript () << OP_0 << OP_PUSHDATA4). DatacarrierBytes ( ));
1524
+ BOOST_CHECK_EQUAL (" 0+2 " , DatacarrierBytesStr (CScript () << OP_0 << OP_PUSHDATA4));
1520
1525
// no data here
1521
- BOOST_CHECK_EQUAL (0 , (CScript () << OP_TRUE << OP_IF << OP_ENDIF). DatacarrierBytes ( ));
1526
+ BOOST_CHECK_EQUAL (" 0+0 " , DatacarrierBytesStr (CScript () << OP_TRUE << OP_IF << OP_ENDIF));
1522
1527
// specific data pattern, entire script is data
1523
- BOOST_CHECK_EQUAL (4 , (CScript () << OP_FALSE << OP_IF << OP_7 << OP_ENDIF). DatacarrierBytes ( ));
1528
+ BOOST_CHECK_EQUAL (" 0+4 " , DatacarrierBytesStr (CScript () << OP_FALSE << OP_IF << OP_7 << OP_ENDIF));
1524
1529
// consecutive data
1525
- BOOST_CHECK_EQUAL (6 , (CScript () << OP_FALSE << OP_IF << OP_ENDIF << OP_FALSE << OP_IF << OP_ENDIF). DatacarrierBytes ( ));
1530
+ BOOST_CHECK_EQUAL (" 0+6 " , DatacarrierBytesStr (CScript () << OP_FALSE << OP_IF << OP_ENDIF << OP_FALSE << OP_IF << OP_ENDIF));
1526
1531
// nested data (all is data)
1527
- BOOST_CHECK_EQUAL (6 , (CScript () << OP_FALSE << OP_IF << OP_TRUE << OP_IF << OP_ENDIF << OP_ENDIF). DatacarrierBytes ( ));
1532
+ BOOST_CHECK_EQUAL (" 0+6 " , DatacarrierBytesStr (CScript () << OP_FALSE << OP_IF << OP_TRUE << OP_IF << OP_ENDIF << OP_ENDIF));
1528
1533
// pushing then immediately dropping is data: length(1), zero(11), OP_DROP
1529
- BOOST_CHECK_EQUAL (13 , (CScript () << zeros (11 ) << OP_DROP). DatacarrierBytes ( ));
1534
+ BOOST_CHECK_EQUAL (" 0+13 " , DatacarrierBytesStr (CScript () << zeros (11 ) << OP_DROP));
1530
1535
}
1531
1536
1532
1537
BOOST_AUTO_TEST_CASE (script_GetScriptForTransactionInput)
@@ -1541,7 +1546,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1541
1546
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1542
1547
BOOST_CHECK (ret_script == tx_in.scriptSig );
1543
1548
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1544
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1549
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1545
1550
}
1546
1551
{ // P2PKH - no datacarrier bytes
1547
1552
CScript prev_script; // scriptPubKey
@@ -1552,7 +1557,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1552
1557
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1553
1558
BOOST_CHECK (ret_script == tx_in.scriptSig );
1554
1559
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1555
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1560
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1556
1561
}
1557
1562
{ // P2SH - no datacarrier bytes
1558
1563
CScript prev_script; // scriptPubKey
@@ -1565,7 +1570,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1565
1570
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1566
1571
BOOST_CHECK (ret_script == redeem_script);
1567
1572
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1568
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1573
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1569
1574
}
1570
1575
{ // P2SH - with datacarrier bytes
1571
1576
CScript prev_script; // scriptPubKey
@@ -1580,7 +1585,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1580
1585
BOOST_CHECK (ret_script == redeem_script);
1581
1586
BOOST_CHECK_EQUAL (scale, WITNESS_SCALE_FACTOR);
1582
1587
// OP_RETURN(1), length(1), zeros(27) = 29
1583
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 29 );
1588
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 29+0 " );
1584
1589
}
1585
1590
{ // P2WPKH - no datacarrier bytes
1586
1591
CScript prev_script; // scriptPubKey
@@ -1596,7 +1601,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1596
1601
// should have no script at all since it's wrapped P2WPKH
1597
1602
BOOST_CHECK (ret_script == CScript ());
1598
1603
BOOST_CHECK_EQUAL (scale, 0 );
1599
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1604
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1600
1605
}
1601
1606
{ // P2WSH - no datacarrier bytes
1602
1607
CScript prev_script; // scriptPubKey
@@ -1612,7 +1617,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1612
1617
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1613
1618
BOOST_CHECK (ret_script == redeem_script);
1614
1619
BOOST_CHECK_EQUAL (scale, 1 );
1615
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1620
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1616
1621
}
1617
1622
{ // P2WSH - some datacarrier bytes
1618
1623
CScript prev_script; // scriptPubKey
@@ -1629,7 +1634,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1629
1634
BOOST_CHECK (ret_script == redeem_script);
1630
1635
BOOST_CHECK_EQUAL (scale, 1 );
1631
1636
// OP_FALSE(1), OP_IF(1), length(1), zeros(10), OP_ENDIF(1)
1632
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 14 );
1637
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+14 " );
1633
1638
}
1634
1639
{ // P2SH-P2WPKH - no datacarrier bytes
1635
1640
CScript prev_script; // scriptPubKey
@@ -1644,7 +1649,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1644
1649
BOOST_CHECK (ret_script == CScript ());
1645
1650
// data bytes in the witness get discounted (*1 instead of *4)
1646
1651
BOOST_CHECK_EQUAL (scale, 0 );
1647
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1652
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1648
1653
}
1649
1654
{ // P2SH-P2WSH - no datacarrier bytes
1650
1655
CScript prev_script; // scriptPubKey
@@ -1668,7 +1673,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1668
1673
BOOST_CHECK (ret_script == witness_redeem_script);
1669
1674
// data bytes in the witness get discounted (*1 instead of *4)
1670
1675
BOOST_CHECK_EQUAL (scale, 1 );
1671
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1676
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1672
1677
}
1673
1678
{ // P2SH-P2WSH - some datacarrier bytes
1674
1679
CScript prev_script; // scriptPubKey
@@ -1693,7 +1698,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1693
1698
// data bytes in the witness get discounted (*1 instead of *4)
1694
1699
BOOST_CHECK_EQUAL (scale, 1 );
1695
1700
// OP_FALSE(1), OP_IF(1), length(1), zeros(10), OP_ENDIF(1) = 14
1696
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 14 );
1701
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+14 " );
1697
1702
}
1698
1703
{ // P2TR keypath - no datacarrier bytes
1699
1704
CScript prev_script; // scriptPubKey
@@ -1705,7 +1710,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1705
1710
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1706
1711
BOOST_CHECK (ret_script == CScript ());
1707
1712
BOOST_CHECK_EQUAL (scale, 0 );
1708
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1713
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1709
1714
}
1710
1715
{ // P2TR keypath - annex but no script - no datacarrier bytes
1711
1716
CScript prev_script; // scriptPubKey
@@ -1719,7 +1724,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1719
1724
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1720
1725
BOOST_CHECK (ret_script == CScript ());
1721
1726
BOOST_CHECK_EQUAL (scale, 0 );
1722
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1727
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1723
1728
}
1724
1729
{ // P2TR scriptpath - no datacarrier bytes
1725
1730
CScript prev_script; // scriptPubKey
@@ -1738,7 +1743,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1738
1743
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1739
1744
BOOST_CHECK (ret_script == script);
1740
1745
BOOST_CHECK_EQUAL (scale, 1 );
1741
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 0 );
1746
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 0+0 " );
1742
1747
}
1743
1748
{ // P2TR scriptpath - some datacarrier bytes
1744
1749
CScript prev_script; // scriptPubKey
@@ -1756,7 +1761,7 @@ BOOST_AUTO_TEST_CASE(script_GetScriptForTransactionInput)
1756
1761
auto [ret_script, scale] = GetScriptForTransactionInput (prev_script, tx_in);
1757
1762
BOOST_CHECK (ret_script == script);
1758
1763
BOOST_CHECK_EQUAL (scale, 1 );
1759
- BOOST_CHECK_EQUAL (ret_script. DatacarrierBytes ( ), 3 );
1764
+ BOOST_CHECK_EQUAL (DatacarrierBytesStr (ret_script ), " 3+0 " );
1760
1765
}
1761
1766
}
1762
1767
0 commit comments