]> Git Repo - VerusCoin.git/blobdiff - src/test/rpc_tests.cpp
Implementation of Overwinter transaction format ZIP 202.
[VerusCoin.git] / src / test / rpc_tests.cpp
index c2b29ab6792303b6eaea4db7bfc232cbe63548c4..184b9d54eb03b4af88aa5a829ede0924cbca78b7 100644 (file)
@@ -7,6 +7,7 @@
 
 #include "base58.h"
 #include "netbase.h"
+#include "utilstrencodings.h"
 
 #include "test/test_bitcoin.h"
 
@@ -295,4 +296,44 @@ BOOST_AUTO_TEST_CASE(rpc_ban)
     BOOST_CHECK_EQUAL(adr.get_str(), "2001:4d48:ac57:400:cacf:e9ff:fe1d:9c63/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
 }
 
+
+BOOST_AUTO_TEST_CASE(rpc_raw_create_overwinter_v3)
+{
+    SelectParams(CBaseChainParams::REGTEST);
+    UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
+
+    // Sample regtest address:
+    // public: tmHU5HLMu3yS8eoNvbrU1NWeJaGf6jxehru
+    // private: cW1G4SxEm5rui2RQtBcSUZrERTVYPtyZXKbSi5MCwBqzbn5kqwbN
+
+    UniValue r;
+    std::string prevout =
+      "[{\"txid\":\"b4cc287e58f87cdae59417329f710f3ecd75a4ee1d2872b7248f50977c8493f3\","
+      "\"vout\":1}]";
+    r = CallRPC(string("createrawtransaction ") + prevout + " " +
+      "{\"tmHU5HLMu3yS8eoNvbrU1NWeJaGf6jxehru\":11}");
+    std::string rawhex = r.get_str();
+    BOOST_CHECK_NO_THROW(r = CallRPC(string("decoderawtransaction ") + rawhex));
+    BOOST_CHECK_EQUAL(find_value(r.get_obj(), "overwintered").get_bool(), true);
+    BOOST_CHECK_EQUAL(find_value(r.get_obj(), "version").get_int(), 3);
+    BOOST_CHECK_EQUAL(find_value(r.get_obj(), "expiryheight").get_int(), 0);
+    BOOST_CHECK_EQUAL(
+        ParseHexToUInt32(find_value(r.get_obj(), "versiongroupid").get_str()),
+        OVERWINTER_VERSION_GROUP_ID);
+
+    // Sanity check we can deserialize the raw hex
+    // 030000807082c40301f393847c97508f24b772281deea475cd3e0f719f321794e5da7cf8587e28ccb40100000000ffffffff0100ab9041000000001976a914550dc92d3ff8d1f0cb6499fddf2fe43b745330cd88ac000000000000000000
+    CDataStream ss(ParseHex(rawhex), SER_DISK, PROTOCOL_VERSION);
+    CTransaction tx;
+    ss >> tx;
+    CDataStream ss2(ParseHex(rawhex), SER_DISK, PROTOCOL_VERSION);
+    CMutableTransaction mtx;
+    ss2 >> mtx;
+    BOOST_CHECK_EQUAL(tx.GetHash().GetHex(), CTransaction(mtx).GetHash().GetHex());
+
+    // Revert to default
+    UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
+}
+
+
 BOOST_AUTO_TEST_SUITE_END()
This page took 0.02427 seconds and 4 git commands to generate.