845 lines
73 KiB
C++
845 lines
73 KiB
C++
#include <eosio/chain/abi_serializer.hpp>
|
|
#include <eosio/chain/resource_limits.hpp>
|
|
#include <eosio/chain/generated_transaction_object.hpp>
|
|
#include <eosio/testing/tester.hpp>
|
|
#include <eosio/chain/webassembly/return_codes.hpp>
|
|
|
|
#include <fc/variant_object.hpp>
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
#include <test_contracts.hpp>
|
|
|
|
#include "fork_test_utilities.hpp"
|
|
|
|
using namespace eosio::chain;
|
|
using namespace eosio::testing;
|
|
using namespace eosio::chain::webassembly;
|
|
using namespace std::literals;
|
|
|
|
std::vector<char> hex2bin(const std::string& source) {
|
|
std::vector<char> output(source.length()/2);
|
|
fc::from_hex(source, output.data(), output.size());
|
|
return output;
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE(bls_primitives_tests)
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testg1add ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
// g1::zero()
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
// g1::one()
|
|
"bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117e1e7c5462923aa0ce48a88a244c73cd0edb3042ccb18db00f60ad0d595e0f5fce48a1d74ed309ea0f1a0aae381f4b308",
|
|
"bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117e1e7c5462923aa0ce48a88a244c73cd0edb3042ccb18db00f60ad0d595e0f5fce48a1d74ed309ea0f1a0aae381f4b308",
|
|
"4e0fbf29558c9ac3427c1c8fbb758fe22aa658c30a2d90432501289130db21970c45a950ebc8088846674d90eacb7205289d7479198886ba1bbd16cdd4d9564c6ad75f1d02b93bf761e47086cb3eba22388e9d7773a6fd22a373c6ab8c9d6a16",
|
|
return_code::success
|
|
},
|
|
{
|
|
"aa83970268d80b50a68535d920954bd993217b9114cbe255e5c0b64e748c5683b6518071552148ec555cdb8fed0f07001e76e62761e8d828a74b81f216a0c5ebeb923550cafd110512cec20e33ec9b272c0ff2b88215953945153fc926691506",
|
|
"e810c1d6ac7cbae0157a0fc958ef607c33e03dee20e72a97ae72de0dd9a0ef20d768ab4b659429255b87feda0be194062a77cd664976e6560b33c921d5968c19a5d5ae9e38c909690975c084c0a4e82481b01e4023b83d6a8ddcb9d38892f50f",
|
|
"145cae227562a69bbf270b8ec8d1783bed4ad0fd43e9c81ac5caa7d3e7feaa3acda07d6033ece1f7f0649d6b75009a03e83ab8f9b44f94c4ab762611266b7a530ce05092ad38b7554a95caa2b63ad0969a902d69f34531dbccf8a4f2e12cf60d",
|
|
return_code::success
|
|
},
|
|
{
|
|
"0aef42fed4a4c2aac650065575458a38f884f7203b57e178c31aafd105a7367ffa2aac730e7563d862da2a749280fb0ff1a37400917e5b0856465cc5e6926733123f2cace3422a831a97ec670810f9197e55e139dc78353907d0cfe4d4824b09",
|
|
"81c5a2fc2944fd5c7ec72a46b042d91bb45066a7a05f32efe51131c0112223e2a5c3a96ee5a8599888c810c02c886c001aae129cb3169db130a1c1864e923543101d62fa6933bc5e54f6292642d043e1929ff4302b169e6f15fe311d603cb805",
|
|
"6fa0227ecedc07a9d3f28960fd541c8103e7dd21cb4c8849f4924b0f19a43a5a782265bc6c9244a2fb8b23bec0c90a0f32113894d8da9be312ad6dcdafb5792095b8a211ccdf6a6883cd0d5dae5310c31137b7839b46fa6e27a7e1a0933ed60b",
|
|
return_code::success
|
|
},
|
|
{
|
|
"e4569c409a806b2756996f0fffbb1b02a5b3cfe9878137d8f2cc59c6fda0d18ece50880b898066d355d105ff0d2ab507d0ed061c2c52e469a97287e76e5838b3bec7ee4cbbf4d5b87bbb64fc37258e0e7840709fe7a38b778fdb096e1e8c1016",
|
|
"9480a24ea403efdfccdfbfbe1013cb4bd27dc0311d9f82b84915082c6daebc2e27366af4a8b401e55f90c95d5220710449efeca8b7275edbd62b0e8de5e298e0517ec40a4f89eec30a09bce22431734f1eab6d7d76a6528f01a538a3a64fcf04",
|
|
"2a9771a9656898d9862ea434b6cc6d1fb52bf6a6a7999389784f9186f9dd00177ad8998c429981055f5f4043de2d2402e3c182f21e3fb672e98a0636b8874d1cb127bd3f6f1cd99f29e8786ad113c48317de7d70e93c41dccbbc7dbc3bf86319",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto op1 = hex2bin(std::get<0>(test));
|
|
auto op2 = hex2bin(std::get<1>(test));
|
|
auto expected_result = hex2bin(std::get<2>(test));
|
|
auto expected_error = std::get<3>(test);
|
|
|
|
c.push_action( tester1_account, "testg1add"_n, tester1_account, mutable_variant_object()
|
|
("op1", op1)
|
|
("op2", op2)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testg2add ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
// g2::zero()
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
// g2::one()
|
|
"b8bd21c1c85680d4efbb05a82603ac0b77d1e37a640b51b4023b40fad47ae4c65110c52d27050826910a8ff0b2a24a027e2b045d057dace5575d941312f14c3349507fdcbb61dab51ab62099d0d06b59654f2788a0d3ac7d609f7152602be0130128b808865493e189a2ac3bccc93a922cd16051699a426da7d3bd8caa9bfdad1a352edac6cdc98c116e7d7227d5e50cbe795ff05f07a9aaa11dec5c270d373fab992e57ab927426af63a7857e283ecb998bc22bb0d2ac32cc34a72ea0c40606",
|
|
"b8bd21c1c85680d4efbb05a82603ac0b77d1e37a640b51b4023b40fad47ae4c65110c52d27050826910a8ff0b2a24a027e2b045d057dace5575d941312f14c3349507fdcbb61dab51ab62099d0d06b59654f2788a0d3ac7d609f7152602be0130128b808865493e189a2ac3bccc93a922cd16051699a426da7d3bd8caa9bfdad1a352edac6cdc98c116e7d7227d5e50cbe795ff05f07a9aaa11dec5c270d373fab992e57ab927426af63a7857e283ecb998bc22bb0d2ac32cc34a72ea0c40606",
|
|
"53a027b8caaa52c9781b61f30b4bf181aedb004d1e1eeae10e5e82b895b9c03b86d57ecc170f37d2a940d557395338167735c3478c2878612ac77eb5f686c8c672151e03d11481727410ba04a96206d74f120a73470e529f727fedc1f9de4e0a99984c1ed7959d99bdf34b76e9ec8de88aaa471e22bde6bf9c0091bf69da669a7856522bca8deb0a63b0820d44fb6804f3cc366e8bfddeac67899ca5a01a2e42f508c3137a3f009716416cc6d95332a43671883f5461b33826dd65fa52456d0f",
|
|
return_code::success
|
|
},
|
|
{
|
|
"a75a447bc0dd806bcdaee2cb429498193e409a4d370dfe0e9605c5a9ec4a09c0314c0321f2f918b72e5f37cf10ea7e0b69ac1a7fb3200e63e5cef9929cd2d9afde2fb957989e610c5b44649af8649d968baa0424b873b501be32c66ef040240b469127753f17ca28a072c2151b69d51fecff1ed0f4786b4e6fd4e52ec72f95ef73cf19fc2d6a28267bdf11a262b403110c2e901fb32d0e900082e4934a20c1c06c262533488fd7f9f47e4e2fde102fe98fb48344de25712d5e2e2887bc04d207",
|
|
"11cc3115ad08c43ed0b7fc3945ca83c69d0a6663f05b25373ea3fdff14c722a7fddd7a1b4f1cf44290e1c480f50b6208419f6a208ea48a48cef5a345a35c052cf0db4a76c719eb90a5829a8f606e99c807a6ae71493f079c364d57f02cba7c124f344978bb539bea7c448eb96ccea9b6c7b7d2495212b88227fc269ac88391f4a6d23e2d47d4fe47e63f8e709b61450644ba13c08e29770bc397da41466cb26c9fa7a1ffd9b5dd5c51c3ddbfb88412998e41f72e63b7972dfd856b9f11530c01",
|
|
"d9458632a7cfcf59e72cf6d1ad70ec8d65d9e81edd0da77c2b10ec4d2a4169f1b0ac46419796d3ed6ef66b34eb76651288d916a5e5b44e75cc849ecd257a223398f92683f2318bf5fe7aa2b5d45e97dad6c415dac4b9cdc1c72071a4c9845c15096b203deb2e071d3856983cb26a101eb193cbfe914000ade94a62339b2e418c4a53578fb177af1986cc9dee3ce9ff0f9598925cb7e5a29af31404fa8cd9c22e17eb1a44b6b461dd9b7dc4d384ad60b82d94e431a389a244b1724a5441ac6009",
|
|
return_code::success
|
|
},
|
|
{
|
|
"21a061f3593c8ed7a9b5e6f4c251bc48a20c7aacd0bd815108463f0a93c09a87c0eebfc1cc10e0b660baf855a3eb2803f0509a61c459389d5c298b4b444ea5330bf3d9e5149bc36a39bc058fa5b1e334372bc04faf088285267fc539e3b5c402bf80f038cc61d6828907276dbcd83ef8259e4d0d574ffaa59791454e4ad96449973b6c69a21cf8e0e615f7071e081213fc06c24053503baa50244faaa25fff561097667d75620539398e8d4cb394bae1b053526f5128c92615e554ed04047b0d",
|
|
"1a1185c9b721b3ae9960f12be618bfc3affe0421ea220baab68924acc836704d221e36ab6a5b64d6ba40b549b90ff406d6e5a12ae715d4866759546c02d01f0b62580f5ca883a7e0ec8d8990f0a0e05c8db323a70be785dfb5fd8a34f40826117ff499ef7f3a8eee70ede67813f4464228bfcaf6293984ef627d13d48c30676a402fbf9758592093241e8824b5f062162e93ba61d98c99270abf2545ee00dc69e88c0dcde99b9cd167a3550f05d42ac61d472cf33e890d812b59d2858b6d2113",
|
|
"15baed9fe2557619878ed9948544f92cbe15f4d3f337e9e360fc568cef53e4494e9c00e3d7618e79e34224b9aba36d0d03dbc351031e98fcc2167f228fe6759c48f434af22a0bffc027d4a6039a3d509ce9617b993ab3ea0bb71ee22623a4a083847dc6ba8494551aa67cf4cfe18cc85ba6ce94ae9812eb53a74dcd1714c5b76808f6800ea451dea77bac81deb84a002ea45661acd250ae001a31305c33ab5e965cc41d2a52a78e86b2ef75789585bc7e5fb3cca22427c1e3ef32bcb21733c17",
|
|
return_code::success
|
|
},
|
|
{
|
|
"cfb89cdb92a23df51ab91c1cc3579a1adaa518e8509d542321ede6ba0bd85bf6d6c6906d87284cda86433e47220c87117c9f113cb8b52420230fcc7a49b407ccccc666806c40037d931479ddb9e0d1d52fc069d44f4fb92dfc9d5bd5a1390518bb29ad17c7232c4937f27125e31da044b35a0516624f9ea5c756d447202439d69489605025e6aa33ec789adc3b611100205fa8163bcf7050e92362613fd6f5fa55e03aabf49fb6e57b27b2b1fa1703a189d5c643fe2355b19226c0562d643e0e",
|
|
"9158359e8b6fc258137f6bd55f89d7c358e7b356f624b9f2571d843cf859f38e60cf50d8f3c4e3e4f787a028ea983d198aa5a6e0756692b7b07ce2cab3cb197a04bdea66a429fe328f18c081f8daac5458ae88c92464225cc3a760ed3f209506e5868b9d083c653d136c2b3ad81764ca721b31582d5accac8793c74f46551b07ba54e8d415fa6569d5b0a985f6bdc40d225dcfa2490201041a2eb04955109258a8fb538c47f16e4b5f07fe6c7b3aa3ad285b0bd4ed42863abb37c94844894b10",
|
|
"156337c65f642da937b7792093b419e1bb06bccc9c9f77f8e1809f573e6df6718751bc831b6b53cf4813a3e066f54f188c01ca463034a0a6fb2ba18bd5b951e1c4d4875dd1dbb36fcfb2837bc8f0f441b287505421f0a715e786ebf24a62af0fddff6849aab4f3895a183b4574dd636c4a765fa83d4b17b30ea43607631961964c645a49720166bbc1ff5ad6944f20026d3e7c5358175a8892623c5ddec28c12962033673a1c1b68d951fc57a07594a6ae1ce27cdeae3e86266254516301de13",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto op1 = hex2bin(std::get<0>(test));
|
|
auto op2 = hex2bin(std::get<1>(test));
|
|
auto expected_result = hex2bin(std::get<2>(test));
|
|
auto expected_error = std::get<3>(test);
|
|
|
|
c.push_action( tester1_account, "testg2add"_n, tester1_account, mutable_variant_object()
|
|
("op1", op1)
|
|
("op2", op2)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testg1weightedsum ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, uint32_t, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117e1e7c5462923aa0ce48a88a244c73cd0edb3042ccb18db00f60ad0d595e0f5fce48a1d74ed309ea0f1a0aae381f4b308",
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117e1e7c5462923aa0ce48a88a244c73cd0edb3042ccb18db00f60ad0d595e0f5fce48a1d74ed309ea0f1a0aae381f4b308",
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117e1e7c5462923aa0ce48a88a244c73cd0edb3042ccb18db00f60ad0d595e0f5fce48a1d74ed309ea0f1a0aae381f4b308",
|
|
return_code::success
|
|
},
|
|
{
|
|
"9a2b8be9aa85b21fc3e57d951f82c725468b3d4896f559270f836a4ae233d0d61e31201df60459b4a8d7e64333fe00163c4c764f7fdbe3e03443155d8ebf4115bd46bfeb0385cd5e6834ee267b578a6064c82a061444d4c93a5af5064186f816",
|
|
"94772651ebddc40c83063785c6051b1a04db86716740f608a19e9ac083dfdf34",
|
|
1,
|
|
"213f55cf8287927bb4d6859b8e3785728975b4c6c2b1b85786ad8326dcaf1c7124522571feea1cc12e54c18fe9680d0628e254af0a07e90f0d5e8294032c7db51df0fdebbb9b970246e8d8fb2b6b5481b7238ca95880c1acfc6f96b47e148707",
|
|
return_code::success
|
|
},
|
|
{
|
|
"079a4445f4e88d61f591dd1d1f9d6745eb12573b423d38e0ec71ed3c99c82ea3ded755ddd27715201209a9c51fdbd21479f4b92a76f8e840eb7b962e17a9d0b142ebaa7d3fca74a6adbd4fcd38cfb7dc117eb17a5e9bebc2b68adc2376297a0a",
|
|
"f69ed20461fa76cfccb98fb2d1220311cc289ef6db6c902ea930fa3ef5992c04",
|
|
1,
|
|
"7ef366ab891b0538c30715606e1cda283ff62838f633255abacd0b7d1f4e97d0c580298f390ab147b4c2e3395c6cb107cc63ef2c65383b5898210fde2a300d6838c849f9c18efc3a7bf5d2f1987bb68497f722cffd896e548a26cf69511f6e0b",
|
|
return_code::success
|
|
},
|
|
{
|
|
"663560433bf70503eed31386bc989364d9a75b4853b13c039c5e06b3edb4c80fa23b79484955733427cdf158ea364c0e50bf708a7d05fad908c44983dcda3154378d203e016853eb9edee9f780ca9e87e8a1ab67a696101611075961d02a7f01",
|
|
"b9287625a97d175735428a6ab5588425601dc2b8a4bcd71e67f41caba0c6be1e",
|
|
1,
|
|
"8490a58c9a4c5ac0228c7df29ab1a5c77e27853ee226dec3d8aec1dc8d51f4fc0cd0071b6bfb43cabd76ff52e6734c195edb5b2c80e8835fc03ec20a428154410f92f3075546af65c012417d114733ab3e3db45d23e7281b4f3117e44663f417",
|
|
return_code::success
|
|
},
|
|
{
|
|
"7a63674c35f9f2be4f0ec092110b82fad24a283316a846d960843b9a6a8a98bfdabd7e897b7da774fbbb05d7ad95fb18940a5f7a7345e1821e0203e156d677e88445385bc0779d25f51b772be3c3a6ba0b09b2533a8ee66053b2f3c853994112e74a97324685e515c86d44ff5a3ef5218e53c6f29e7df49a546c79cd1fb9d14e63f68aaf6b2df1f6f56e6250fdd6f20dcc36499a5aea69f4c77a18774eccf8460e77ab6b0236ce2d85083faeacf0f3378a3dcc95e1d3b0ae282b9bbec1ecee1793e63ca4730ec63df496546c07094e848625610a514d99dd0a6dd9f58d15c4e4ed5aca65025562177ebd0a4c2c3ae8139d24be936dd5dbec6a54897ba2a98a68a9c43ea3199695896789c958bc289a7275550b5670a351b262c10166a48baa161f841df4255408abb7186f78647422313fbe3a0a35699a487dd71482b76b8adc20622f44bb32e04a78b98e4f2cd42f16a6d35ec2463a484906dbb655969b900a15cc8a47694b1961bd4b2e9f074afd79e4c04344d31dd8fcd56d5147a9a47712",
|
|
"2be3984dc7a5c9e6172df42c905be929ce5bb29d9aa31a03f3ed8816e7d1265a0669a674fef9254f0efffd3e89c30f1f05587472251d362e1acea03a76918d137b322778b8188c1bf68c36ef8e0ce933290c67f981611c13a286e42235f89855e49966a4e9ad8c64122f4f5e720986193e59771fa91aef113d8739642bdd6613",
|
|
4,
|
|
"25038aea2d2d1c15dad2fa4c6e31162d1b79ca1b1bca608190a05dea451701e9fc95a8c441a25083df7fa56d54eae51241a8c9489719b9cc35852ce3d7e04b5ada5c65f45d1818f80ea161264b70ab6fa86e694691281b8110000d209aea5c17",
|
|
return_code::success
|
|
},
|
|
{
|
|
"72a2fe9201ac05c9cfd84d73f9045aec6f22300453e659909d4490f59d598a0bd29d220246a97de00f87c34f05628803383cd31591c16396db11fc9b1f814fefce8427e85789919cfd27654be1c6801feb0b9c9e6550d516fd6e9622764a240ccf149d86a1be65215b8b1a5fd165841fa1cb34c0e5b2781bda44125d1d2890818ce6454f5108beaf395b138a7dd7ac0e41182171d01c3d8e234f5620415c3bc4a120ae317f514ad29f87a3a47e8b4649a0e39ffc25111f998ab8dcb9d149c50219f30b8ad6a3758bd2c60166d1adecb4ac4e2b7bd041a2583b035087b0fc5348096e333cc88668d690a4810c3692e212e8b83d3664fc6587d6794aef2e1cb2ee13cc38060999aa4f9dd40c1754ce98d2b4fd1d2970abfa88c0d416c4c3b2070ae2a9a928bb3be3854b702136c1b69c10dd4af529e8e2d1d97c00f0530eafbebb2de6ece8fad2c4c72d4db2bb0001ee087c30d7527955b23ecebb35106b2e169d25d6e1874db74a02f9729b8f1c7bccbd2d6784617b149ae2a452b77ae0707d15",
|
|
"d40ea97ac1a692e96eca089d05111707219729b00e9a2a02998c4f7b0c670d17d3508ec831bfb5f9af0fca2f5d22631333fbadaa002922059850bc641a2ff50eb65d787c1df7a1bef08b783af42a37034b2af4e0ba75f414b0c7a2df113b0a47d1a722acf33058e810b6cc81a59cac3033067cacb776041f157f3e578a241718",
|
|
4,
|
|
"f2a68d18e246502e2f8183536f3a932f0f8475f82603159acaa54a958a2bb04c8e3a16c696d180a3309fb508fc659b05d6a167c5181a7dd85f80475f771569facd2f7b5741c0bb13b68574dead93767d67fdd9bba78165351fa1d608379a1801",
|
|
return_code::success
|
|
},
|
|
{
|
|
"72dc1fb76885d993cb0bcf66538aa3b47f607e02bd7d569626cc400787ea1feb7b4b6e9651a263cf120b469d95b12618260335dfc6661f6000b22b3d80d9993226add9060f55f4584aac66541f2d2a7d9d75ffe16f4fab73354134712f90d00f4cbf334117969df79d5783bcce974b81aa61bb6e0093cee480dd66425e8543c106ab6f049f0a49807ea6a51f7850e40d56566492cb66dd99f1a3dcb4932a32720013864e4c8e1a8d6c46d9a8bbb9c2123e6a58bbbc0f4edd6e6e5f25feee4417b340dae988300a5169377a700ba91afeee4cfb762184335a963b69c430c08f985144a0ef76c516b11d58241b8d70210b7a753c067af7f40a1f4d7a19e1283837d0a1bb38b4facbf2e8eb25c3da1654590d5cfca695375d41f292dd83a55284063780992ae2a8abed14205664f0fe69491f41bdbd76322fe8f3f8f660dc53c7b34244cc3d40067b9560fc3d3ae8cb4408144b5ad3859f6f6b18139e6efba950d38beb2135419780add1207f37f529dd8980c60357c81e04bcc701f2ae0385f502",
|
|
"06f44a41cf494066febcb41b85afe01021202502a3129110fc116d3a978d662dd98e962ade1024c145473e545b117033bb7029d75263c60f367ef014693a6e30353e2ca706338280750107fd080c272e018af21d1d020f164e2160fde20a1540bff01005ac6c4af5b045cb88980ce049d39174ba095386312622d9b475ccdb35",
|
|
4,
|
|
"dd16d75b3de65d6cbf265575e33f4ecede22f03dfd72bd7c3e295b71fbc43ff2e6d9035fa5161450025074bbb498e309468e0c256ce5b44e441a7192b99bdff67c7c9bd7ba927629a68f93b3bc8d40cdada4480c0d4045d4b7e09bed42aa9807",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto points = hex2bin(std::get<0>(test));
|
|
auto scalars = hex2bin(std::get<1>(test));
|
|
auto num = std::get<2>(test);
|
|
auto expected_result = hex2bin(std::get<3>(test));
|
|
auto expected_error = std::get<4>(test);
|
|
|
|
c.push_action( tester1_account, "testg1wsum"_n, tester1_account, mutable_variant_object()
|
|
("points", points)
|
|
("scalars", scalars)
|
|
("num", num)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testg2weightedsum ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, uint32_t, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"b8bd21c1c85680d4efbb05a82603ac0b77d1e37a640b51b4023b40fad47ae4c65110c52d27050826910a8ff0b2a24a027e2b045d057dace5575d941312f14c3349507fdcbb61dab51ab62099d0d06b59654f2788a0d3ac7d609f7152602be0130128b808865493e189a2ac3bccc93a922cd16051699a426da7d3bd8caa9bfdad1a352edac6cdc98c116e7d7227d5e50cbe795ff05f07a9aaa11dec5c270d373fab992e57ab927426af63a7857e283ecb998bc22bb0d2ac32cc34a72ea0c40606",
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"b8bd21c1c85680d4efbb05a82603ac0b77d1e37a640b51b4023b40fad47ae4c65110c52d27050826910a8ff0b2a24a027e2b045d057dace5575d941312f14c3349507fdcbb61dab51ab62099d0d06b59654f2788a0d3ac7d609f7152602be0130128b808865493e189a2ac3bccc93a922cd16051699a426da7d3bd8caa9bfdad1a352edac6cdc98c116e7d7227d5e50cbe795ff05f07a9aaa11dec5c270d373fab992e57ab927426af63a7857e283ecb998bc22bb0d2ac32cc34a72ea0c40606",
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
1,
|
|
"b8bd21c1c85680d4efbb05a82603ac0b77d1e37a640b51b4023b40fad47ae4c65110c52d27050826910a8ff0b2a24a027e2b045d057dace5575d941312f14c3349507fdcbb61dab51ab62099d0d06b59654f2788a0d3ac7d609f7152602be0130128b808865493e189a2ac3bccc93a922cd16051699a426da7d3bd8caa9bfdad1a352edac6cdc98c116e7d7227d5e50cbe795ff05f07a9aaa11dec5c270d373fab992e57ab927426af63a7857e283ecb998bc22bb0d2ac32cc34a72ea0c40606",
|
|
return_code::success
|
|
},
|
|
{
|
|
"8d0b9de21f956cc86123edc8610324754dbef1a95b81f457185428a77d7a609926870d9bfc823e072e625d54ff321c110ee726c8af6c06224a87ee4a8a051e3cf1fc3dec26368929582998941a322e6bb06fd86b288c7b4f6836dd1f5a9d4b11c983773bf970bb5bde020860f4686bdab904becd067b48cf8cbbcd4b2931335215ebb1860aafbc43fd1677c7f727810678f000303226d1238666615c1cc89965d73173971882beff2b41a3ee632401b97b159d91be8da485c5f325496308f716",
|
|
"4c89b1c20cbb9dbc094eae3b5aea8c0725ebcd60af55421d9389197f2c30432b",
|
|
1,
|
|
"7653c096a4ca440098f02b03b973a56dad8c33b2df9ce1676f79e07f858565415630326cd64b4b2702335aafeb37ca12fa8543a0db009a583e9122361ce052f7eaa4cf95671bc69265b3f2364952e0e8af89085d6bfb8751911643ff2b4b000959a5540acfc626325d9497bdc281436716fac51ed88537fde12554cf735d09dca909cf92751f0cbeb89c88fdd9660d0b42e6217cd362bb73d9837229b1a9489298bb912ee0055ed9463465b22c9949481cf27ffa1f4063097b4abfa63d2b0312",
|
|
return_code::success
|
|
},
|
|
{
|
|
"d9105749dc7865ce0769f93864a1872fd8d9c9ada8458ced60ca5ff85ed69bc3f5e2f9ee8905d440db47de5603e05605a3825f9d129cef67e303c7c659c8658ab51ab1a1605fd42b72ea72f4f910f4e9328599db02db3e9c11b6e01e61b8e50118bcbf5c47e0f677aee55f05364f015d8522a59cecdd7823799321a4ffaf33de2841ebf81395e6cd40c0f2c8c2dd65069aec3c985eb24a62537d5eb53268d3efb5b8a19393ed32203f7f4c09c45b3f3a5f72b39a30a1348dd01e3bc0291d6e15",
|
|
"1c9380bd8909ae27ddda81d2dfc60b026a57cb0f7acdb81529ff2d3d4bcb8f1a",
|
|
1,
|
|
"5461397d46d903f3323bff6ca21a126972081cc5cd48d7bde89b213617baf1332d569044b1a011bdeecb9c3e0281e00016e1c75621fbd582a2be1e05fb8daddcde21b176f27be73062ca7a88f1cf261aead14c5ca2e30313dc7fe79ae63521088805d8cd435d7d2137010226215698f05932c43c0a5e6cf0bcab335453151a2be3ef098f31707a71380f0908d5d08c066cea9b27c98190a563ac810fb1f7f1349c0af6e93d132b267a8ad5b609e81a85e635b6e34409935084a50f294afa9c01",
|
|
return_code::success
|
|
},
|
|
{
|
|
"cea074de7522910e8009b69c3ce1d2cb804304785bca15ed28050aab01d20fb2d69fece1b42708fdfb9412719c27fc00170001c15670fb55a90b9c835b125116748097154afb3a24d66c2d5750ce539fee5f0ebd79e3505be1efa38ff6663005dbd34666a804e2a854e3f29700946af83b987c278d083a16d46d2f5f82e0bbe9e8d88c47d1580b3f82d9b5e521074a13100ff61f6c78b84bc6e2b1a7b8b1f589451b822e6557cbc7133ce3a5d39b4c3764abecee70229b49383c5625066bd00f",
|
|
"36403d3257657c772d483746bb7b6a10d63f40a66da0b22f8365a8e26c09ce51",
|
|
1,
|
|
"e50e935d79a4d6a6c1e2eb2f29cff5fa160f047e0b20bce65d3ce99063031f11bc8890d21433fe4e51ad6515d4c2b901ffac8f33f4a43739accf8631bc1fee7dd54bee170d532028135b52b261da128c6283e2ae1dcd9ad31c2fd3875f37c3152b7cacf00ac70c66514a7fa5a3f58a3d91073ed345e354698fe0b8a503b9143f6e56e90893f0dbaac02e999f75f7e30615406f28d46ee50a16e510584de37f43352974b8c19486a66450934caa2ee0f59fb0daf78ce9f6db268f586b5e5fe305",
|
|
return_code::success
|
|
},
|
|
{
|
|
"556524e3e80fcf448c0befd659ad744c409cdd1111291a81949324a02688999ab88e6ccb3e9dcecf57ccfe9aa7ada21540ba5407c0700ce81578bcee892ed385dd1ed476c465fe48cea2dd7e37784d8ae795fba842ce0f88baa76857ec1c7c137163beed84ff2c6a159d486d10c7128b2cbb6f10c547d202d0f6e68fb43a9a6a18a01823c4e70b5dc25d38b9c33d4916510de467f10922f3b284855c4accc816f542fe74fd0b331b1884dac6918d3c38860b0725809a19b6101e5d3942b9f40eee6901e17a0c50187e6385767b7d1e54eaacbb3c1939e2e995ec79569dd0200583a937891035475e1e5a733a0446f7063e77f9d564c60dfc6dc25572369bf7fe51b2607f73fd0fa9eee9d27b127a81c63bbd7f08dd64237d082e9735018d96024c56d32b55e991e84f39c6ffc0d56ef17307e82fc200df9259f83b7bdae719124f7151d855b8f51f703e087ea1540900c4eba1592de051db895689aeb5233dec52ccb74f93acc8fc14bcde4413a14dceb0ec386623021ddf9ad1fce429e1780c5a6877b00b17af384fd49b7077434387672218967f4a7647174162c07e99d9007380be10a7bef367181ba886a0e40c160a4b36548826c30710ea8238b0c37ec06e331fe1d3aaf1b5a73ae0880794d0c0a9623b8498d9bbd4754e1a8c1e2346091fec42aaeddc40f2ae06456e8ad9059c61db437089a855af3d1bc2a6d68e9c01474bdbaabfa185a58dba9808f8e0b20a3c51c51c5bca629aa061dfa5ff238a43e1e90242df403635869743c723276c0eca711c6c91b94a65310b6b869ee556179ed113a2b406a52de2fe54f61f4589f510924b2e3f8b14ead1541af2e1cc9dd35a91f6cd4bbc02c58a844d9e4906a106197b8ab39a539561aeecd265762bcf5106344ae2fe0a62c7af1bbc846e9b39ebe38a046461d7c0c4901caddb0fd7c70b86246d53bf3124af629596f6367e86f3456cc954e3581bfea600b6d2818259332fedeb88ece673626ffd4d5935d0310e5cf2462055d5fa4b6cc4531f11cf0722c8647dbfc7364c9b2e24e0066ef5b0e3497ce38537a7230e02f7edc2f53e980f",
|
|
"e5a6afde5d144ed43bd1742b7ec7f5385a7d392f65465927e37afe7b9f0a9e368449cf52e36ca432b096f8562c98f318216d21a426b2d51f0a4db8fcafcd687326b548cd973f30d4fc47d79d853ec94239c620229ea0632b2570a1f8df08fe1ce323ef2cad610917a13d1157e25fac05ef6bafaa68e8ce265594d207a5d13c1e",
|
|
4,
|
|
"889d8b750987cbce4aa4b872b29f22011752354e672b24ad4b229ca575ce14a8c081366db5cfd0f7a85ff68559bd4216b3cecfb6a2618a29c6c95b17147d083f28cc1fae5959fd7de74d986e7fd543ce1060cbdd8d4ae136910d8a15a1b3ee16d955657630d5f50aae107d13aa0c46040616e2d3018e5d07f9551e2a4c34565c9b59b8fd7751e025f473772120b4a511946e09fc93dcf9732399244c1fbb864fa09c2dd5d29543e794e64b6e1a2df39289245ff4b65dff0357a6621d151e4514",
|
|
return_code::success
|
|
},
|
|
{
|
|
"3540d57f375cc54311317a2667ca62928a2cbffa3c1ef6a8227786b7c7c798b35a49ebfd7e29a92fd708ebcfcf34b90dbab296700beb73def3519258330910d131274149db20d2e90b0f088062c46fc0283eafce98c613ec797295cd1a2ea402c7ab724bd078bf98def513700a93a1525e8649adf9ade01f5929158f663a06bc899dde984b7469b9f3e4ef244561bb03d3764a30cd681216a6ccee7445032f8e4e562f2648c4f5aebbf8922c78f798c416af6a623da07dce71919ca56f906e19cbf8f05bce6dd49b34b038806af234c1d96269bb9043599049f0e582e8c94172682a326cf23df050f557ca0ec478c21038dfcf2f4785e4a4972a2b42b4e22ebec4a967adec4d5fa620c1afc9f3b2b8688a3b38ff3f51655b1aed776dd386b20aa2644a64366fb2f105efc45f1f552cbbc8ba6bc81b79314390fb246bff3f1f72a949127693d994e36d57df66141e0c1345ea0537c47cdc3b06253f69da0e77eddd96a0c0a1a51396cfdb85322a1d300cb673c4199989572d50d248924fad7d099d599360321906891e1b8ba1d417c791d42a01ce84ce390d46458346bf52587814f7530269244a7a8a74a95bb603da0ab8079f78631414763d5ed174dddcc63e141ffbdecf006648e3891bf96be79e9f977165b0c930547042c2e61cf3edde01159e83b909d75fc40409ea85f1941f0970d18074f2254668ca7f4ec7a3db06478985e95e410babe7166bd56beedd7f153298e6d8472d7188c8c280bfc091c131ea531d5c6b90bea9af1dd7167eaad78211d48f38d6be7543c60869fda5d9210c54200ce434988ce1362f33fec2f5fe787df83e127d26444a10a38c25ee3b8d93b32513d5d74d9d9b5788bdd9b268f20ec190280559e67a1a4e542b13281eb60e20725aa8b4abb5fc0b42589998a16850facb763b786736de04c7f9dbf2dbcf138cc21ffc339fd4b7f581757d6cfd42a392fca13b9d1b89419a68e4ad10aa9dbb3826849292d7c1b5f1d8750102056701dc89f6587f969e3cff756d706ecbb3044bd90af7b8eab6ee83592f26a930beccfa662b5135a70ac65a96c87a4e095c0a",
|
|
"d967d13a0bb8346d92f94c3f91f6b2040d736a0ffe01c11e0ee08891934d3a21e0598fdcb1f3bd5ddd88dddb9a41af4ff8aa8e47a0e992068b0d60c75bbc0d450ad8b46a274c18303e69e4e8dc4df5518166abaccbe2a80539389bcf53d033159aa7b0bb79d32a24e835cf7075bb96154656f7122216970081f533a1971cbf50",
|
|
4,
|
|
"cabfc22b5e8228db0e18a378ece2e370d7aaf6c8c458feed8aeb64bf994a0b01aee824d99af50a8c67f9a170e70f7e12de79a98715e7a4a06d5b239ef0130b7fb183b36dc36458866d784c93cf6a7a33cfdf9e2584a353c5989b8775445e2c0bf45ce53bcb070562198a62cfa45d71f00705327ad1ab3e225bda5bf959c2714c96da0e99a3e2f8ccf54548f3f9bf56056d6fd87885684cf9d51bf305a9230cbf5712f72704f58e60e4c66c62fb2c7b3c559c5588c296b445bdab40ad0d0ac313",
|
|
return_code::success
|
|
},
|
|
{
|
|
"8fa138fb8d71f2baec299c896318eba0bb29eb5403f83ddba8b53550dac08fc4bccb2a21a7dd515e68ba2f0b7cc3e00bfaa38105cc84bc067185d9738c8e49f70ab5c101c6d582d90ffe819d71d72d6970081625966d0e022147fa0117c02e1929c7106d8860a5ab8f91afee930ee07cfbba1fc39e40a31fccc0413e3ee697f3397838975de2f618725b022bbfde9d18edaaaa5d2520bbb5d4fc35d9e0044e6def35e654663ec291a5402bef11afb06922f14ee586b7f01f4fdd68e723c7f20ba29d733ca6ef99feb281b7ba3ad4de179b02a4ce2ea5d16de687ebbb06ca5c653cd29e9225b257885a95d884d6db2014416a9e2a07381ba189bce0cdee2eb5a4ed0c357f72e3d7b053dfa8a27af3a4f69c69a4a8e6c94e856121453bbb46da0356557508a870145a80cab307a1fda298cb3719155109511aeb5446a2337353e49dc768f654883e919a17a21b1f8168098ed4bc817cadf2a51c5c1ca04b6692cbb1f492deecc9a84011619cddedaefe3ae0ad63678e081450047e4f7566326309cf6cef7fa32b46b8831a083c3c0dc124932a816dda7fd2c21f820b062f99243a9657979dda129e45c28e2ec56d6e48142f8156220b9a84d5832d796fa53a516194d74f6e06d197c763aac10f192f1e1e0771a287dfbd8f97ad1158426181be18766625778c862ff15b685eff2e64a7deafdc2368160a7c49107720a93024676d617a17c85a11dd298c608f717b4a3910101ef4d7711390ba30bc6010417a679b51a1bbc7ff82c7f7965d252a5b86bc731a162e07e54057ad5df805da25ab3d0370865000ebe59b18c26ed2bce5c5ae0542a596bbdbf76059efc13fb259ad286d97e3eb2e85dc089312b07125e5fe2a0fb8607aa566f6da9ad0e617fbf99cd5cbfedf5f0a894c80197ab32035cc3312e422c1c2513ca867add0861b4de4b0060263df6d82d9f43733961700970ea943dbf58cea1655bc800c3447d539568023ff91cf86ec09cee91de450f8c9114c4f1181e77e03bda275ff1ed367dffcc6db31ac55c855edd418ea8adf79fb97d5fce565597821082e2fec7d54e978544d9712",
|
|
"3d7af1a45d973d872e4472fac861b931adeaebe2c3b2a114a7726bb9db4cec6dd4e86dd4d674dc07fb8b96fbc5eb6b208374020c06cd751a74f0909e95c07844f3751cfdb402c4e3561f8211cfdfb4359f7346a6df61181eb149d35be87b2b169dade9c3fd4eba680d0689737beb2023db34560ecae6a521e474c16170629762",
|
|
4,
|
|
"9f599083020c7d2ebbaad85d4ab32fa09002b0eea60790d08cb8658180e3da5cac00a162e30f5bfa74a4f0ad54211111e5ceff16c896a18bd984de8d2f14b9a2645c9afc4f0db8f9d7a5ebbfc041e8c88b2d30507f566527233ed157b184bc0a05dd624cdc0bc714dbc658f2316c9b56e66a48cf3cae2b5ff6138fa8264c6ca727d882976300e09962eaffccd7259e19f04fa19ce0a657ffb68b66f494db4fc7bf824263749e8b1a188937d02fc2efc07c489f3c69f12b4ba8ca54a2dd495414",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto points = hex2bin(std::get<0>(test));
|
|
auto scalars = hex2bin(std::get<1>(test));
|
|
auto num = std::get<2>(test);
|
|
auto expected_result = hex2bin(std::get<3>(test));
|
|
auto expected_error = std::get<4>(test);
|
|
|
|
c.push_action( tester1_account, "testg2wsum"_n, tester1_account, mutable_variant_object()
|
|
("points", points)
|
|
("scalars", scalars)
|
|
("num", num)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testpairing ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, uint32_t, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
// g1::one, g2::one
|
|
{
|
|
"bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117e1e7c5462923aa0ce48a88a244c73cd0edb3042ccb18db00f60ad0d595e0f5fce48a1d74ed309ea0f1a0aae381f4b308",
|
|
"b8bd21c1c85680d4efbb05a82603ac0b77d1e37a640b51b4023b40fad47ae4c65110c52d27050826910a8ff0b2a24a027e2b045d057dace5575d941312f14c3349507fdcbb61dab51ab62099d0d06b59654f2788a0d3ac7d609f7152602be0130128b808865493e189a2ac3bccc93a922cd16051699a426da7d3bd8caa9bfdad1a352edac6cdc98c116e7d7227d5e50cbe795ff05f07a9aaa11dec5c270d373fab992e57ab927426af63a7857e283ecb998bc22bb0d2ac32cc34a72ea0c40606",
|
|
1,
|
|
"b68917caaa0543a808c53908f694d1b6e7b38de90ce9d83d505ca1ef1b442d2727d7d06831d8b2a7920afc71d8eb50120f17a0ea982a88591d9f43503e94a8f1abaf2e4589f65aafb7923c484540a868883432a5c60e75860b11e5465b1c9a08873ec29e844c1c888cb396933057ffdd541b03a5220eda16b2b3a6728ea678034ce39c6839f20397202d7c5c44bb68134f93193cec215031b17399577a1de5ff1f5b0666bdd8907c61a7651e4e79e0372951505a07fa73c25788db6eb8023519a5aa97b51f1cad1d43d8aabbff4dc319c79a58cafc035218747c2f75daf8f2fb7c00c44da85b129113173d4722f5b201b6b4454062e9ea8ba78c5ca3cadaf7238b47bace5ce561804ae16b8f4b63da4645b8457a93793cbd64a7254f150781019de87ee42682940f3e70a88683d512bb2c3fb7b2434da5dedbb2d0b3fb8487c84da0d5c315bdd69c46fb05d23763f2191aabd5d5c2e12a10b8f002ff681bfd1b2ee0bf619d80d2a795eb22f2aa7b85d5ffb671a70c94809f0dafc5b73ea2fb0657bae23373b4931bc9fa321e8848ef78894e987bff150d7d671aee30b3931ac8c50e0b3b0868effc38bf48cd24b4b811a2995ac2a09122bed9fd9fa0c510a87b10290836ad06c8203397b56a78e9a0c61c77e56ccb4f1bc3d3fcaea7550f3503efe30f2d24f00891cb45620605fcfaa4292687b3a7db7c1c0554a93579e889a121fd8f72649b2402996a084d2381c5043166673b3849e4fd1e7ee4af24aa8ed443f56dfd6b68ffde4435a92cd7a4ac3bc77e1ad0cb728606cf08bf6386e5410f",
|
|
return_code::success
|
|
},
|
|
|
|
{
|
|
"9242b29b93c61f033f960880f1f1fd98ab7a0973f4af51e116ccf7fddef30e969f81171672612d1b9e17506df16d94152f8ee0d5dd3659c8411d717dd03d0d9600597470cfe1d8acc3772d8ffad57152e78cd05ec59b3d5c8e0b1c8c89ede40a1c3ba9cddda02dd8bbc15562bdcaf2f1216c3c3763cf2578b2fb1dbd473b15e464c1e5060c1ce1985af46393c896c90f53593395b3830e85f203e559c191bbeda8e67b263cb1b0d2a9fe8232e2d513b25c90d42fff59770583546adb2f6de8133d2570b6ce051e42cef043f59838540ddd57d825d6b31bf85852059e0027f3cde7acd48d01ab7ff6a243a73046098702fe0ea3661ebd03aba475f8305bc40e2334e1affbba4fe683d9d86a82fbee2415899ef14edb8831393ba0dcc3bd496e12f6e44ef94f44de4fa3586008125e3f351c54e5c106339f26db74b4d5c675fce7471f9bb6ce6249d59b2b98dcd5b0e60135c42c797b19115242f897977e1980f1ee5f9687af05223da07d5a6012730ff07c735c3995e842bc09cbd4ff535cfe0d",
|
|
"e3e8508bf6727b1b0999f8b65ffbfd71ad2ecb67b9bee6c57467e97b1769d22d89f821fa9233a93f87c991e6f1671214abd95421f0ec7a3a805e890b204e78d9344121045507a28684b93993d223b7d977a318613be2dcf326353d067fed1f09bec07dfab6eebf20e14af2d2fc7935b4779e85dc255d9f87a4e7732767803abde70a794154a8eaa69ff36ac04db6f70ba27c17660b56b15a6f0b42e5b9e2a0031e371827a41be40416818490eae20ac3402387c543e456272bf477b4e6646c13fc29abad46163be661b80d8a99f8243c946702131a32695d0bebbf26ba23bae9e9cb6926544ac895e0ecf9e2ff9e1207e743434a148da90f6163bdcb0eaf78a877d2ded8445ad37f88428ace820a0e300ea8653a3dabdb402f3c1438a7549c097436783a40f6177716f0561785b1edd02a83b43d04a4b3858b158de8b74d334421dc9b2d8873b22ec51797142b6c9104948fa5c4746251791febf4cc62ed7afed4d4d5301168e0b5d5b7ada253f3f18988c3c8d3d4e06d1b819120068b2d59131e8e77e518d8cb791e3c022d88d3f8a6a78b7f6b31b54bad80ca6d5c74a24e2fc2514581bcaa06b4a4ce38f9aa3906173a1557bb089dcc5f4a0bb739610fbe5cf247dfe4eda2fede230efa823e772483cc4c1a1161ec617876db25a37e156002e8cb0b3dc76313c84429621452fe30b3dd1b160e7dd4f477ff8bea01d86786831f95d1c3d40e40cb0acddcdfcb9d39121af50414e4ac7a4d148c641c13d620c08b139b33d31f0d14e7fdd7b8afafa7385f7aac7b200d26e1ab6686b92c58dd17098b370dcc1b6257476dc3fa9e02bce297706cbd67eee816e3df38556a6bdd6f6c07187e4b51426734470a052d7fbe08fdee46b80f60ffb4a5337403c5a1f9f133a9c744a2e122e68e03ea41a6bdc00e0413030b065224f23ce7e3ebd99f261424bef4e4bbb4d31808c204c4c643da0a121a17a009043905a1dbab772d170df99031b46bb89acb0f57b6aab53528761713f00547c1c45afd31017b8f6477522461b28714e2c0f8643de662489ac0e01f33a8aaba642f48de3e04432e5ec7e203",
|
|
4,
|
|
"3accf1d0f0e50270fc76410f57eaf2a96acc165eebce48e3c6cec5932cadfed270a698919156a54f923a262e3ef7941796c8cb3693d4365349fd2eee88dfd1e6b594582dddc512c32a780bcc426a97d87e1f76d7c6a15a559d2029fe6e0f3317be03dc9c4de6d95b33600d89f5f7210527e98c4533e4c6a2bcf19a460ea2a6cea375a2623647b05c643aa5f2c3a3f10f2bb589eaeabbf087cf5080a17f7a360ac9db7210eeaac2f02a52a571e37d8645c1217324cf657cb50ce73181512c0b0eccda43a3593cb2cbfa3bda81c31e16b7ec0cc8df0cd51d0871defa799d261baa652b2d56032ee9894c7c0d695c89250e4b83ecc53f2fbb6da14cf9c3d53f3936c16e050b0407e7bdaf7f47b7cfb814bee9d45addb7229d81e6e278aae4d1e30da342ac502f0d329ff2ce4abf72374fa858aa594bfa793c0baade9d54cc497dcb849dbc65f51d50fae34111e1e55eae0c0da4a2a5762a9acc594e8ce9a2a304b236b28b092762d6feca7765c42dbb06c11ce6c04ebedf8c11fabe2e473d6efe06ec39692962464216a1d30730aadc370f2fe59ebae19913890f14ee942f89f5f13471bc00b91be0c57280ffc253a8960e74bd6f1d13ca101094d917778b4d90381a64dc786630fe58359f9ac634efa11d10b4f2408357b8be3963a768d99ca301e7ae8e9df45be75cc3ba4f2968129cc6a9b0db9cb9c63e592dd6972c84f9b73c70653d7d4b89961746c68e23c49bde19fecfcdf6dc5c7fb3237aa448059428c4c136bde48a8ff5d748a7ce294514c507980d6b805fed1604d1c3b321f152b107",
|
|
return_code::success
|
|
},
|
|
{
|
|
"41b907b27fd2eec91c730174063a74965d837b8363d37a4ce7257418c93260a8f47091b005c65846a962482ea7d35211e3ecf16ef2d0b6287d84ce5a95e93a00186b70c0735a2d5d5d3415d38ce3ae8f1dca1b4228dbda61cfd93f6f42548515ef052f0c5b90fb53c96b5bf27743038924bde786e1fe6a06c801bf2589e296518e48ccc00f5b8b64c02504ddb09a9c1036fa5eb15e85b1d38ecb20ab1c299c619493a6b4bb6e987d6d7759436a8e4671a7946dcf71043ecc04db3afc315f95040c15177bb50a2ace0c6b79e767266cf29d4cd384e78bac7390d93b52426c5d31f8fc8c2a0e2b574586aa8cdb47fa400c3cf7379f44aba3aa1dcd0484bc97e1d8e21a491405c615068e398b1c4461c14f01383b6a7d1ffd10b74801f248924d16db92e360ce2f1ad009004ee5f12badd416bf6e8953b8caad7e1b6a44790f68ae63d8e9dad23de7b6e377dae7ef877c0bbd88e55c1995f95a742adf1946ff116646b6f5ab6aaca20eed777430ebdd5c8e6042d18e51cdccdbdffc02bfad73a206",
|
|
"b035471f19385025b383e1829d57bb90532b7e8420fb6de22347d5499d70f30c905b267f3fe12c25af5d5358bf0c500475408754478a96e2ba512401ac903c7cf3bc225ec185dd61c03a67219cac0e836e49d071f3229e391d7c1b857cd93305ac168e05a05e2f451094db5bb2df0f14ad282e1d19f11de48540285183c91022b7066b635137149dec86813818af4d16ba7d5d356e8f9bc13eff6a02d59835842bc9b42a27e00e4fbd7bd4e8d5aa9ff3f8d318904f0fad0abed386557d153305740dd01b3f777ae822d9fbe6579506984be4a523898e17794321ca1e5289d3855d57944aa2df85263d4b718a0cb8c61564448b514ddb02ab4eedb093114dc5468901f6ed72863538a5a6c9523d703f9c66feff488d9b8b962e08008e5193d50256f9d8ca54f55799713d6ca8467caf6caf53afa1b10f9ca523205e3e23fc7b439050e71a0066a898cd1151598f5e4c12bec7af6b159986dbe84ea2563e177f90f816c19d19ece3ebdd5ef89961e7b9713cce9d66f33ecc7c86bfdf22afb28a0182b6d1d0430eef461c20a2aaa241ce7100ff9a5d7a59d31e675251b0931f407cd7d3b4fb166cb8bd09e3a68845cbc9071a23151687b0794ba8a07428795d20c33a51d1e06de138885410b1c834d02a0a20c19e61b2eb6a5d4e1c334c0925a417d0da00c3c9251a95f88f241218b3a3b52e9ecfe031dfb7c62418b2915c2bb5d08c21e3935e83617a50429eb2c5efdf00514e7778e43d1a93ce8895de8abb088f5c4bd2e90587380b72b32c75bf32a10d1a558a976f598382a696d3b45baab110d9eb8b4dff67600e00aa8113b9ec0538c8a507ca0d36028d45b32ce7ab2ca6a8371c711b92b03fc4a1619a913eca120fe81416bd2a8ad67ee574ed7dfeb2c407cdec5fc286cf6d9b241b9f28f42d4ee7c4ccebda60092918fc5e1302ef14f818df625409c9c1ef74e878694c1f29b393cb91d654fb3438999fd6eab84c841c4608e9944e61e4ebda7ca5fd2682916f065c6e937d952d87474847ae7c7adab8a463ac2d0ad894881992b90a343ba4d2ca93c7c970cacf243e8c4d72ddf2b42f0d",
|
|
4,
|
|
"cc8d4803307dfab93b6389de099708118bfd8ee95314558d6967aa377952fea441d4c60ade51a2421ee03b1d71d0ba0c348de4ab87cc218736462e1e9fe11da41cd76122bcb87e824b49c2f0e61be7b5f79556e52bb87b29bf11f28e4d40f00ce944d7179afbf4706fbd5ddb212f6c43814f47cd04483c446c2f47adecf6e900832b99001b18014cf0612278ca7bf10a65f2def4f1d7c170433484b5994b838f4b469cf6f746c77bc360f0cdf6758ce10e3c861079529f742386ef8fac5ca903fa52618ca0d13434dc7e9cf90f5fa773fbec016d217c9e68c9f05e3124e9cd67c2cbdfc29870524dc2988fe1d75f20077260cdc3f7a5d224181c30e7d17b2f96c83badaa625b9ab080756fd7153c4ed0c991fde00b7e2ce6e2fc9fab65c6fc0819e4f7232daf87b6d702d5eab3710efb0c9edf7477f05a2f2fecdb7bee800a32dd11fd4870bc75a94167b13ee446701146f791ccd657a242df189c41ebf1c001f3052edaf66faa93b86526c267b4f77f020e9f5ca7748809d69798c3261a1a02c02f150ab905fabf0797392ea83228ff62a0648e90187a46704586a5c4d3525e64e60cb650c535078e7424d7ee8e690c6c40b01b753b5ca51664df4c2609ad01d2e0b9f1d5a7b862f1dbff57881f5d6939c88df4e454142ac8bdcb89d1f91d0d50433e1725506c537cb2f1bda8cd4a88fe6ee196ca5038927c2f45016ec4e3f07186ebcb0ac3258bee34d869179cd7062757c2fbdedbb0112c8ebcd3f85e4aad8c750b75c462be8123eed0423eb6f995de327d262c0c91cb60bf1359ff32fc00",
|
|
return_code::success
|
|
},
|
|
{
|
|
"af7d28fa69e9ff7cf98da7614f02faf91f8ae2888d522db1a225724394bedd8547ae93cb07b41f5f21092846c6c2950e43328c2e6aaa18cf735a703f4ee43a60658167b9c1bf895ddbc898dae5269a335699c595aa9dc4137103d5480320270f756a4c35700b847a02d4933be43e508139affb438b7bcf547debcf9904f1056d197ec8484283e2f194430e16443d250f0b4734d5380cac631d6287e2b45a6a12fb5fea3eed96a7b2cd3bac9a532e4bb6176b1e792964444798e5bf151e14c314277fa052e05911619c457335e708633aca11239a33686e56dd949e6f50e5fe79f1d069bbb01822566f992299184ddc06d08c662a5d2b37668c7821bef5177ff4df977799dc81ae15d0444be9a54db2195d41e316f7ebdb7d879f8f7b355cb416137401a36684f0ccbce51fd4d8b32f45d81f2c33bc95687ed777e7fcb181367e163d94356c96d239f193dabf01616d13936ba746ed9a64578a5a4b191238fe8472e4135525afcac4ed818c13e518864ce82de26a6bb1066b9c0771c021716603",
|
|
"5528fc322669dcf2757583835b5ba5cc84f629db47e1d5e3ec78523fff567ec26100b7977ba038586c9e465abbaeb603554afef9cfe21ac33847b1d11796088cc6b18c7544355da3f996ddb0c0a15c8b1eeba2ec3a5cc8c7b4a8ecc7131e4609582cc42caa57f68017f95af50757bfc0d3c4d4327d1d40012af8f664da428f1984bf17c26d43b6fd65a8ce6c3d039d03f1247385a3f565108de722d4e08b0e9d23bba036646668167bdd41709ebe8bf5aadbd88ccc2af0c6d5940531c9fd50053e786ffe9011554db15fc7e130ea07cd254f21a86911fe758517274f96b89cb67e30c104186c4a6cb0d92cb82e39260245b68e74bdb828992697a1957be0564a9863f56eaf36bb5fc4d0869468b6ad4e36a1e7c550303c80c4ca0cbae773b309a61c6d4d6a4d2f17a4424c1987d294f195275581c8b8f88b7ce7fec5bc67e7bfd58bb747f39aa4dbc77d79cd18dd09142b10a45d49abc8fd544281f02a0e045062b72b25ead1a376e4f705ac83ad2385c84a8fd914d2f6a71d7eeb7126d677001013a0df759ff906a09fe4a3da307dd6cc17ee1fd72af8f7d953662be427cda2985cb1073563bbea492d9e6a96ca8a05ca5d45d349cb3e2f09cff6022a9916324eaa4fe5c543d46cafe5f82e81c5baddc2cc58100b03a20c2feaeed58cbd63019b8e3586d14193470d4ee9c1a0fc5e0a736e1ba94d7ad20ead3a3dacc4b2f3530ad751daffa944be4cb1969b3d2595058007d28d49e2fdebab68607c119b77d766785ed9e209582c737fce93b6ad0d4d795f86415238e0d3b70b9d8954d6a20ce85e7128588a849c505d5d2c81ff63bf12ea3ad52a316316ce49b2014dfbc486c9934dccb98db06089c03dc8f76ad70323ada12fe7e5b9f552c5b6cc073f72409a6e44f6634ca58bed30649b9840f177ea0039932f81574ea22b6da18b702f0e367f633e41d2b585d5166669f4c48d389f003eeecf06b5aa119d0df46de26adcb938d362e4410fdaa990a6fc4c2eca0f7bffee724789a0a47ba1b531bb4a3c95c129585ba5c9a6fe978a6915f4afedeb710ef6a55f153a5b21f943de6531680d",
|
|
4,
|
|
"01cc207c7c76c65afc059d073106d545705af7c4e4ed78e6169c599bae1c9bf6358d5a2cdfeeae389cc64436dfe7b7192c733fe9e2d105c0eaec21589d8bb5ecd5c71a5fee083af47a1cbc3af2df8a13603a78956c39f55fd0663ed482846a047280f87426ecde4c535c0d30bdf4b95ff5aff45782129ee6c7a0fa20a632bc98e95bfb663685eb2443e4b1f518c40f00502303b3db49be61f36ef6af46b9097c83835a864ae6337ef07e40df617af1aacea98c0d75e96a104d41a3617e7a4f05fc1cdcec57ea40a0237ff387a5d9130b34c92cb57a3450080bbaa2f6f9e895851b05c05eec03abd2d5083c81c402a500d2bec4895cf0f58a9953e43ee9039a38ae73cc3ec325fa636777e1f597b69a2b6a62bd49fba5b163bc03ce73f277f818fad1c6681fa59be891c2baf85b6a5e908d96b6a6c4cf3d53b3de23fdade91b3dde7199648aca0fce1d2307253bf57b054a4c4dc276034f8d57017cddc0a84975c643f9ea808652f2cefea32f767fe8e6df58a837c47c3136ced7107e7dbd9711399605212e6a1b8da806a12636076f7da0629ca8173f0411ba2a1050d1bca61994e28f69f274ec94e016a3ba6f9a6b06cd17f570928b5e4b8c75a5d62a0a67bd54249702923b440355db775599ea7be7cd3c6d88ab8da7694e43352837b0080814880a1460bc61fae141d36f961db8393313f74a65c3eabcc38793b84062999364bb0c36a415445ec4318b59c16e850260a53e7aaaf72bcaa568b57b69b552bf827c3e1c116565122322d6c26e14354fd96dc4bb1161ede0ee36efeeae1a5503",
|
|
return_code::success
|
|
},
|
|
|
|
//test (three invalid g1 and g2 points, should fail)
|
|
{
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
3,
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto g1_points = hex2bin(std::get<0>(test));
|
|
auto g2_points = hex2bin(std::get<1>(test));
|
|
auto num = std::get<2>(test);
|
|
auto expected_result = hex2bin(std::get<3>(test));
|
|
auto expected_error = std::get<4>(test);
|
|
|
|
c.push_action( tester1_account, "testpairing"_n, tester1_account, mutable_variant_object()
|
|
("g1_points", g1_points)
|
|
("g2_points", g2_points)
|
|
("num", num)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testg1map ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
//test (valid field element)
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"15a40e7d0c871905db43ac11172e2f59acbc93fbd6f29750faf2d5454cfa732a37504ed19ade305c2d338f2b37a0a91133212273e76ea9ea9fdf2be2e8d42f3963cd476abce81651448cf5556b92ff40e28d78a34bc2519f71a06441990f2c09",
|
|
return_code::success
|
|
},
|
|
{
|
|
"6de1c03023f2b4e454559b97266ebc1f96cd5510c4f48e2acafbe73a536a1477f2c8d1c9b5f6615d01968ea59ef4fd07",
|
|
"2c7390d4bfbe0ccbaae9699aab5458d62f6d1aa91938b0ab0717249ad89209cb14ee8ed764a8952415382dbbfdef2312d5b2988b1ed7e6907d73ef2335cba7f9263b63003effa44ab8d6805d6ed0f08d87919230f0cb45d9ec35b2e0615d920f",
|
|
return_code::success
|
|
},
|
|
{
|
|
"d2e51018d97c13b16f9ad81abb6197f8368434b501c6f8b2d690fef722d806f49cb469d61f4bed69a124f8db3aab7512",
|
|
"d60fcadcf09a0903da1740403626c463e7b6bafd4d94e3b12494fab1b1dd0688823ffba1ce06ad3aa41dfbb4d03f9d17e483b41a9025fb46aae72abadd4a1f4c7b9fa66fb3b699cdcf20683c4de67f3dbef1231d062bf2f5c095d4c6b17c030d",
|
|
return_code::success
|
|
},
|
|
{
|
|
"094956e84809a27f467de542a0149629866eb5b9ec353e267b0bef3e0836effe055c6f85278857b8846dde301dd1930e",
|
|
"af04301d928149db56084cd0e2a21706fb8d78010b3d688cb6a7fa3a7386b6f8da49bab1e894b69d20d1de7ec766aa1588b7a8aaea80423a3e13d2227ab7c5514e8a3a5960e8af86e85e65473d408532da4cd7790add01d2d19d73612fbb5209",
|
|
return_code::success
|
|
},
|
|
{
|
|
"3a1acb866b91c2cb46858c70509b9789363b34479bbd65e216c9d91c52512a63464decd8e60bd27470d1551148415a01",
|
|
"ee8704a8d29554a7234c8599938d46fade4595adba6903465faa302949622e4273f49abd84dae83579836e10e58c3206ca0bfd27c67241775f1d307e6074a5303b33991f13f4a8c864717ace864b31f1a3987496005a3b434724553efefd4b09",
|
|
return_code::success
|
|
},
|
|
|
|
//test (invalid field element, should fail)
|
|
{
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto e = hex2bin(std::get<0>(test));
|
|
auto expected_result = hex2bin(std::get<1>(test));
|
|
auto expected_error = std::get<2>(test);
|
|
|
|
c.push_action( tester1_account, "testg1map"_n, tester1_account, mutable_variant_object()
|
|
("e", e)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testg2map ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
//test (valid field element)
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"cebf24b3a427ffb720bdd7a6db5d078bf161cd790cec449d9b1dd32dd013f466e29cc28d8419e6d5f9eec96e89208301928865ac51d20bb4d44daec3277a8a42fa6fe995fa25706db09fe33db90d41237efaebb3862e2db05ba3b51821d1670a4159c35b8671620078d842a0c743b14f6034d3a00651f55df8e6cb9038d1ca95b8d2ba46326b2521c3a2d14436e060025cdfaa769a6e8030aebdee3c9a26c627ae764f9b196d26707fac12617c0e4ecf183fe605589d6707da0b3fa47797c604",
|
|
return_code::success
|
|
},
|
|
{
|
|
"1449dbb73bbcb48b3b752e02dfa0edb5ede9419d8b601d3caf6d4298447b1db2fad35b44e4203eb885f3ad27785d770eca5e3e2d0530cf2d49254ead13700b8277167500205e7f30efce24ae70d4b1fb160aa7ca820ce7b767a21b7107bc5f02",
|
|
"4d9e217a0f270f7b3857dade18b09df0ac351a80a32e9317d58c730cfdf2681e37c763c4ae047ef0f9470bdafa4b7e02b89873bfd72bd20a5e9a64d6c191db420f002d04c951f7715a7e44b154c8ecd133220028a93cfa9d9fbfec7bb733430da73dd04ed8249a290af8e2f7877127c09382737d1206b023f17eab887fe27dc4e62473b3ed8f21dc6d51efa9cb743605db76e8502a1adf2b1cc72e8a5499084e7ef4cc166727fcd9e8846874b6af1f7b0a7af30410a4027e440dea77c76dc70c",
|
|
return_code::success
|
|
},
|
|
{
|
|
"db4f64b6ead6e1a545fc454e24f0ee0cc9335ee6ee1b8eb70550c8d32312cd663a064fb651284b7cbaa8b5e41cb35a04cbbd1c96af164e0a97ce331daacd180ff7d3308d364aa956799902525dbf4180590fb246355a0174eb1d2afddba77018",
|
|
"7bf905347dcb42821d7deb674a9fc052835f12dba6b04fcd7ac581160ac31c45435354385ad4dc8954e5b2b51c9f34097827945d3c30a398927583560ba680f70dc872012cd034370cb5c2c1824e5292c53485f4ba5d9156c067af407bf8f01811b89684098a5e9914b5247a6a1f612b9885c8613ba4c1439577397d9d2742ea83fdf00b23b8f5122574c7b2ded9f202c0631f446ee9afaa967fc4da3bd02b3ac59207ab71b452d62bd37b06abca7ae19bf36ece41797b94ab89c61b34baa210",
|
|
return_code::success
|
|
},
|
|
{
|
|
"b4108d552274d175fd4e52dd766ff396a4f365c102e0ef7b4d266f220ec67eefab48ac15d1db0d98ba31cda435616e0bdeb51952b044ce0f64b5d42199d9560ed0175f3d2c58af07909d29db4480c1b417dfbf7f1af274648adb54b029e38f08",
|
|
"f74a6a357dc6a1fb33344f60898ab9eb29c68170727136b26d943249fbbd9393bd893846ea0d43250d4fd37737e49f1463d11827561e80cda0f6ead2cd3c84d4be6d99d61fa4cbc41cce534af2cf3d1b3fc31ccecc1259cfc7530a93c58e801951454f38f693d2d763e0f993c202151d873eefec3e90507cea6232cb3c0061f254a2f4b5872098b23362763a79d6c004333e0e02ad077c8a3683d63827becf20c88a9b7a63bbac739bc3a4f659d119df2f5853e371a25c803fc8301c393e7804",
|
|
return_code::success
|
|
},
|
|
{
|
|
"7e4dda81ee149d8b6b43a1a89c6f80d07b5fa93bff73215bd3c8677c671348b477a8912deba95a298574d64706b5450fb6fb07b9be96d4b87d677eeab47bc473ad7dc44c286b9e63b949ac64fb5b56e09638f48847238c18c1e4056aa616df03",
|
|
"5255e92a8a5338d96668c82f7303900657c50e4e4eed48a79808d7bed8321fa27c2db96a79d1d79a667484bf2c1504083ac69f5e8625b05e1b5a16513a98b119eb297ba5474ebe89b7fa0498ebc787a0a6134626b62e3770784886c894008e0b3abe627685e82eec72618f1e10afa131defa621dc57eb6d95ab25f251600776791f1f34afe032cd31a28d72d24c8e509493406a4e3f38b15bbf3f648ad03d1d1a2232db91a781fc109e8dd9d8d4e5bf76639883c0cb06b93a315ce8e060fc814",
|
|
return_code::success
|
|
},
|
|
//test (invalid field element, should fail)
|
|
{
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto e = hex2bin(std::get<0>(test));
|
|
auto expected_result = hex2bin(std::get<1>(test));
|
|
auto expected_error = std::get<2>(test);
|
|
|
|
c.push_action( tester1_account, "testg2map"_n, tester1_account, mutable_variant_object()
|
|
("e", e)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_empty ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
//expected return is failure
|
|
c.push_action( tester1_account, "testg1wsum"_n, tester1_account, mutable_variant_object()
|
|
("points", std::vector<char>())
|
|
("scalars", std::vector<char>())
|
|
("num", 0)
|
|
("res", hex2bin("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
|
|
("expected_error", (int32_t)return_code::failure)
|
|
);
|
|
|
|
//expected return is failure
|
|
c.push_action( tester1_account, "testg2wsum"_n, tester1_account, mutable_variant_object()
|
|
("points", std::vector<char>())
|
|
("scalars", std::vector<char>())
|
|
("num", 0)
|
|
("res", hex2bin("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
|
|
("expected_error", (int32_t)return_code::failure)
|
|
);
|
|
|
|
//expected return is failure
|
|
c.push_action( tester1_account, "testpairing"_n, tester1_account, mutable_variant_object()
|
|
("g1_points", std::vector<char>())
|
|
("g2_points", std::vector<char>())
|
|
("num", 0)
|
|
("res", hex2bin("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
|
|
("expected_error", (int32_t)return_code::failure)
|
|
);
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testfpmul ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
{
|
|
"ABAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
"ABAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
{
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"AAAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
"AAAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto op1 = hex2bin(std::get<0>(test));
|
|
auto op2 = hex2bin(std::get<1>(test));
|
|
auto expected_result = hex2bin(std::get<2>(test));
|
|
auto expected_error = std::get<3>(test);
|
|
|
|
c.push_action( tester1_account, "testfpmul"_n, tester1_account, mutable_variant_object()
|
|
("op1", op1)
|
|
("op2", op2)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testfpexp ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
{
|
|
"ABAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
"ABAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A00000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::failure
|
|
},
|
|
{
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"AAAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
"AAAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A00000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto base = hex2bin(std::get<0>(test));
|
|
auto exp = hex2bin(std::get<1>(test));
|
|
auto expected_result = hex2bin(std::get<2>(test));
|
|
auto expected_error = std::get<3>(test);
|
|
|
|
c.push_action( tester1_account, "testfpexp"_n, tester1_account, mutable_variant_object()
|
|
("base", base)
|
|
("exp", exp)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE( bls_testfpmod ) { try {
|
|
tester c( setup_policy::preactivate_feature_and_new_bios );
|
|
|
|
const auto& tester1_account = account_name("tester1");
|
|
c.create_accounts( {tester1_account} );
|
|
c.produce_block();
|
|
|
|
const auto& pfm = c.control->get_protocol_feature_manager();
|
|
const auto& d = pfm.get_builtin_digest( builtin_protocol_feature_t::bls_primitives );
|
|
BOOST_REQUIRE( d );
|
|
|
|
c.preactivate_protocol_features( {*d} );
|
|
c.produce_block();
|
|
|
|
c.set_code( tester1_account, test_contracts::bls_primitives_test_wasm() );
|
|
c.set_abi( tester1_account, test_contracts::bls_primitives_test_abi().data() );
|
|
c.produce_block();
|
|
|
|
using test_add = std::tuple<std::string, std::string, int32_t>;
|
|
const std::vector<test_add> tests = {
|
|
{
|
|
"AAAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A00000000000000000000000000000000",
|
|
"AAAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A",
|
|
return_code::success
|
|
},
|
|
{
|
|
"ABAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A00000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
{
|
|
"ACAAFFFFFFFFFEB9FFFF53B1FEFFAB1E24F6B0F6A0D23067BF1285F3844B7764D7AC4B43B6A71B4B9AE67F39EA11011A00000000000000000000000000000000",
|
|
"010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
return_code::success
|
|
},
|
|
};
|
|
|
|
for(const auto& test : tests) {
|
|
auto s = hex2bin(std::get<0>(test));
|
|
auto expected_result = hex2bin(std::get<1>(test));
|
|
auto expected_error = std::get<2>(test);
|
|
|
|
c.push_action( tester1_account, "testfpmod"_n, tester1_account, mutable_variant_object()
|
|
("s", s)
|
|
("res", expected_result)
|
|
("expected_error", expected_error)
|
|
);
|
|
}
|
|
|
|
} FC_LOG_AND_RETHROW() }
|
|
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|