enforce guard call limit of 1024

This commit is contained in:
Richard Holland
2023-01-19 10:25:12 +00:00
parent 45d4949b90
commit 74c0f9fa0f
4 changed files with 287 additions and 264 deletions

View File

@@ -240,269 +240,6 @@ namespace hook_api
const uint8_t max_params = 16;
const double fee_base_multiplier = 1.1f;
// RH TODO: there's definitely a mucher nicer way to do this, but it involves modifying the base_uint
// class and we don't want to do that yet.
static const std::array<ripple::uint256, 256> UINT256_BIT =
{
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000001"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000002"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000004"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000008"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000010"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000020"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000040"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000080"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000100"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000200"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000400"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000800"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000001000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000002000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000004000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000008000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000010000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000020000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000040000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000080000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000100000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000200000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000400000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000800000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000001000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000002000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000004000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000008000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000010000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000020000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000040000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000080000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000100000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000200000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000400000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000800000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000001000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000002000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000004000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000008000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000010000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000020000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000040000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000080000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000100000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000200000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000400000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000800000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000001000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000002000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000004000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000008000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000010000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000020000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000040000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000080000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000100000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000200000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000400000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000800000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000001000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000002000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000004000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000008000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000010000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000020000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000040000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000080000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000100000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000200000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000400000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000800000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000001000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000002000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000004000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000008000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000010000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000020000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000040000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000080000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000100000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000200000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000400000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000800000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000001000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000002000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000004000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000008000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000010000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000020000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000040000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000080000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000100000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000200000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000400000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000800000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000001000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000002000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000004000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000008000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000010000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000020000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000040000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000080000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000100000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000200000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000400000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000800000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000001000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000002000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000004000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000008000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000010000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000020000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000040000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000080000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000100000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000200000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000400000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000800000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000001000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000002000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000004000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000008000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000010000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000020000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000040000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000080000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000100000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000200000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000400000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000800000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000001000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000002000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000004000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000008000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000010000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000020000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000040000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000080000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000100000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000200000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000400000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000800000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000001000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000002000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000004000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000008000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000010000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000020000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000040000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000080000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000100000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000200000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000400000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000800000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000001000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000002000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000004000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000008000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000010000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000020000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000040000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000080000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000100000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000200000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000400000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000800000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000001000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000002000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000004000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000008000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000010000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000020000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000040000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000080000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000100000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000200000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000400000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000800000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000001000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000002000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000004000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000008000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000010000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000020000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000040000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000080000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000100000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000200000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000400000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000800000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000001000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000002000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000004000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000008000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000010000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000020000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000040000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000080000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000100000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000200000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000400000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000800000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000001000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000002000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000004000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000008000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000010000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000020000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000040000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000080000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000100000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000200000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000400000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000800000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000001000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000002000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000004000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000008000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000010000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000020000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000040000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000080000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000100000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000200000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000400000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000800000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000001000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000002000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000004000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000008000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000010000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000020000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000040000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000080000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000100000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000200000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000400000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000800000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0001000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0002000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0004000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0008000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0010000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0020000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0040000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0080000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0100000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0200000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0400000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0800000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("1000000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("2000000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("4000000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("8000000000000000000000000000000000000000000000000000000000000000")
};
// RH NOTE: Find descriptions of api functions in ./impl/applyHook.cpp and hookapi.h (include for hooks)
static const std::set<std::string> import_whitelist
{

View File

@@ -11,7 +11,7 @@
using GuardLog = std::optional<std::reference_wrapper<std::basic_ostream<char>>>;
#define DEBUG_GUARD 0
#define DEBUG_GUARD 1
#define DEBUG_GUARD_VERBOSE 0
#define DEBUG_GUARD_VERY_VERBOSE 0
@@ -210,6 +210,9 @@ check_guard(
std::string guardLogAccStr)
{
#define MAX_GUARD_CALLS 1024
uint32_t guard_count = 0;
if (DEBUG_GUARD)
printf("\ncheck_guard called with "
"codesec=%d start_offset=%d end_offset=%d guard_func_idx=%d last_import_idx=%d\n",
@@ -310,6 +313,10 @@ check_guard(
if (call_func_idx != guard_func_idx)
GUARD_ERROR("Call after first and second i32.const at loop start was not _g");
if (guard_count++ > MAX_GUARD_CALLS)
GUARD_ERROR("Too many guard calls! Limit is 1024");
printf("guard_count: %d\n", guard_count);
}
current->children.push_back(
@@ -388,6 +395,15 @@ check_guard(
return {};
}
// enforce guard call limit
if (callee_idx == guard_func_idx)
{
if (guard_count++ > MAX_GUARD_CALLS)
GUARD_ERROR("Too many guard calls! Limit is 1024");
printf("guard_count: %d\n", guard_count);
}
continue;
}

269
src/ripple/app/hook/Misc.h Normal file
View File

@@ -0,0 +1,269 @@
#ifndef HOOKMISC_INCLUDED
#define HOOKMISC_INCLUDED 1
namespace ripple
{
// RH TODO: there's definitely a mucher nicer way to do this, but it involves modifying the base_uint
// class and we don't want to do that yet.
static const std::array<ripple::uint256, 256> UINT256_BIT =
{
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000001"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000002"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000004"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000008"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000010"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000020"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000040"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000080"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000100"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000200"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000400"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000000800"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000001000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000002000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000004000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000008000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000010000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000020000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000040000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000080000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000100000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000200000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000400000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000000800000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000001000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000002000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000004000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000008000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000010000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000020000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000040000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000080000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000100000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000200000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000400000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000000800000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000001000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000002000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000004000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000008000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000010000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000020000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000040000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000080000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000100000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000200000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000400000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000000800000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000001000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000002000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000004000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000008000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000010000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000020000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000040000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000080000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000100000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000200000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000400000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000000800000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000001000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000002000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000004000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000008000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000010000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000020000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000040000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000080000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000100000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000200000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000400000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000000800000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000001000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000002000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000004000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000008000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000010000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000020000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000040000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000080000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000100000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000200000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000400000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000000800000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000001000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000002000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000004000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000008000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000010000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000020000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000040000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000080000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000100000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000200000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000400000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000000800000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000001000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000002000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000004000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000008000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000010000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000020000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000040000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000080000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000100000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000200000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000400000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000000800000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000001000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000002000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000004000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000008000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000010000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000020000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000040000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000080000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000100000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000200000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000400000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000000800000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000001000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000002000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000004000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000008000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000010000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000020000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000040000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000080000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000100000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000200000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000400000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000000800000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000001000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000002000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000004000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000008000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000010000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000020000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000040000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000080000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000100000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000200000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000400000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000000800000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000001000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000002000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000004000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000008000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000010000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000020000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000040000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000080000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000100000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000200000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000400000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000000800000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000001000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000002000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000004000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000008000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000010000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000020000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000040000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000080000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000100000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000200000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000400000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000000800000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000001000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000002000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000004000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000008000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000010000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000020000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000040000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000080000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000100000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000200000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000400000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000000800000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000001000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000002000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000004000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000008000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000010000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000020000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000040000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000080000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000100000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000200000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000400000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000000800000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000001000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000002000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000004000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000008000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000010000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000020000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000040000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000080000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000100000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000200000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000400000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000000800000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000001000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000002000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000004000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000008000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000010000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000020000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000040000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000080000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000100000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000200000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000400000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000000800000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000001000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000002000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000004000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000008000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000010000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000020000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000040000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000080000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000100000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000200000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000400000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000000800000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000001000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000002000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000004000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000008000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000010000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000020000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000040000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000080000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000100000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000200000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000400000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0000800000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0001000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0002000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0004000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0008000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0010000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0020000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0040000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0080000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0100000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0200000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0400000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("0800000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("1000000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("2000000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("4000000000000000000000000000000000000000000000000000000000000000"),
ripple::uint256("8000000000000000000000000000000000000000000000000000000000000000")
};
}
#endif

View File

@@ -14,6 +14,7 @@
#include <ripple/protocol/digest.h>
#include <wasmedge/wasmedge.h>
#include <ripple/app/hook/Macro.h>
#include <ripple/app/hook/Misc.h>
#include <ripple/app/hook/Enum.h>
namespace hook