Homework 2: Implement a Custom Validation Check
Last updated
// Minimum check amount: 1 XRP
STAmount const sendMax{ctx.tx.getFieldAmount(sfSendMax)};
if (sendMax.native())
{
// Only enforce for XRP
if (sendMax < STAmount{1000000})
{
JLOG(ctx.j.warn()) << "Check amount below minimum (1 XRP)";
return temBAD_AMOUNT; // or appropriate code
}
}void testMinimumAmount()
{
testcase("Minimum check amount");
using namespace jtx;
Env env(*this);
Account const alice{"alice"};
Account const bob{"bob"};
// Fund accounts
env.fund(XRP(10000), alice, bob);
env.close();
// Test: Check below minimum should fail
{
auto const seq = env.seq(alice);
env(check::create(alice, bob, drops(999999)),
ter(temBAD_AMOUNT)); // Expected failure
}
// Test: Check at minimum should succeed
{
auto const seq = env.seq(alice);
env(check::create(alice, bob, drops(1000000)),
ter(tesSUCCESS)); // Expected success
}
// Test: Check above minimum should succeed
{
auto const seq = env.seq(alice);
env(check::create(alice, bob, XRP(100)),
ter(tesSUCCESS)); // Expected success
}
}cd build
cmake --build . --target rippled./rippled --unittest Check_testgit checkout -- src/xrpld/app/tx/detail/CreateCheck.cpp
git checkout -- src/test/app/Check_test.cpp