mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
fix: fixPayChanV1 (#4717)
This change introduces a new fix amendment (`fixPayChanV1`) that prevents the creation of new `PaymentChannelCreate` transaction with a `CancelAfter` time less than the current ledger time. It piggy backs off of fix1571. Once the amendment is activated, creating a new `PaymentChannel` will require that if you specify the `CancelAfter` time/value, that value must be greater than or equal to the current ledger time. Currently users can create a payment channel where the `CancelAfter` time is before the current ledger time. This results in the payment channel being immediately closed on the next PaymentChannel transaction.
This commit is contained in:
@@ -402,6 +402,52 @@ struct PayChan_test : public beast::unit_test::suite
|
||||
BEAST_EXPECT(!channelExists(*env.current(), chan));
|
||||
BEAST_EXPECT(env.balance(alice) == preAlice + channelFunds);
|
||||
}
|
||||
// fixPayChanCancelAfter
|
||||
// CancelAfter should be greater than close time
|
||||
{
|
||||
for (bool const withFixPayChan : {true, false})
|
||||
{
|
||||
auto const amend = withFixPayChan
|
||||
? features
|
||||
: features - fixPayChanCancelAfter;
|
||||
Env env{*this, amend};
|
||||
env.fund(XRP(10000), alice, bob);
|
||||
env.close();
|
||||
|
||||
auto const pk = alice.pk();
|
||||
auto const settleDelay = 100s;
|
||||
auto const channelFunds = XRP(1000);
|
||||
NetClock::time_point const cancelAfter =
|
||||
env.current()->info().parentCloseTime - 1s;
|
||||
auto const txResult =
|
||||
withFixPayChan ? ter(tecEXPIRED) : ter(tesSUCCESS);
|
||||
env(create(
|
||||
alice, bob, channelFunds, settleDelay, pk, cancelAfter),
|
||||
txResult);
|
||||
}
|
||||
}
|
||||
// fixPayChanCancelAfter
|
||||
// CancelAfter can be equal to the close time
|
||||
{
|
||||
for (bool const withFixPayChan : {true, false})
|
||||
{
|
||||
auto const amend = withFixPayChan
|
||||
? features
|
||||
: features - fixPayChanCancelAfter;
|
||||
Env env{*this, amend};
|
||||
env.fund(XRP(10000), alice, bob);
|
||||
env.close();
|
||||
|
||||
auto const pk = alice.pk();
|
||||
auto const settleDelay = 100s;
|
||||
auto const channelFunds = XRP(1000);
|
||||
NetClock::time_point const cancelAfter =
|
||||
env.current()->info().parentCloseTime;
|
||||
env(create(
|
||||
alice, bob, channelFunds, settleDelay, pk, cancelAfter),
|
||||
ter(tesSUCCESS));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user