You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Disabling deferred transactions via protocol features will come in two stages.
DISABLED_DEFERRED_TRXS_STAGE_1:
Once this first protocol feature is activated, the behavior of the send_deferred and cancel_deferred host functions changes so that they become no-ops. In addition, any block that retires a deferred transaction with a status other than expired is invalid. Also, a deferred transaction can be retired as expired at any time regardless of whether its delay_until or expiration times have been reached.
Furthermore, the changes to the producer_plugin for the resolution of #1556 should be enhanced to be aware of when this protocol feature is activated. When it is activated, the retire_expired_deferred_trxs function in the producer plugin will not break from the loop if expired_itr->expiration >= pending_block_time. It will expire deferred transactions (any order is okay) until it reaches the hard-coded wall-clock deadline for that block.
DISABLED_DEFERRED_TRXS_STAGE_2:
This second protocol feature should depend on the first one (using the dependency mechanism in the protocol feature system to enforce this).
Its activation handler (on_activation) should iterate through any remaining deferred transactions in generated_transaction_multi_index to refund the RAM paid for the sender of that deferred transaction and to delete the deferred transaction from the state. It should clear out all deferred transactions within the activation handler.
Furthermore, the block validation rules should be changed again to not allow any deferred transactions to be retired in a block (not even as expired).
The text was updated successfully, but these errors were encountered:
bhazzard
changed the title
DTrx: Remove deferred transactions, either force expire (hardcode config) or throw error on deferred trans (protocol feature)
DTrx: Protocol Feature removing deferred transactions (Stretch Goal for Leap v5.0.0)
Aug 24, 2023
Disabling deferred transactions via protocol features will come in two stages.
DISABLED_DEFERRED_TRXS_STAGE_1
:Once this first protocol feature is activated, the behavior of the
send_deferred
andcancel_deferred
host functions changes so that they become no-ops. In addition, any block that retires a deferred transaction with a status other thanexpired
is invalid. Also, a deferred transaction can be retired asexpired
at any time regardless of whether itsdelay_until
orexpiration
times have been reached.Furthermore, the changes to the producer_plugin for the resolution of #1556 should be enhanced to be aware of when this protocol feature is activated. When it is activated, the
retire_expired_deferred_trxs
function in the producer plugin will not break from the loop ifexpired_itr->expiration >= pending_block_time
. It will expire deferred transactions (any order is okay) until it reaches the hard-coded wall-clock deadline for that block.DISABLED_DEFERRED_TRXS_STAGE_2
:This second protocol feature should depend on the first one (using the dependency mechanism in the protocol feature system to enforce this).
Its activation handler (
on_activation
) should iterate through any remaining deferred transactions ingenerated_transaction_multi_index
to refund the RAM paid for the sender of that deferred transaction and to delete the deferred transaction from the state. It should clear out all deferred transactions within the activation handler.Furthermore, the block validation rules should be changed again to not allow any deferred transactions to be retired in a block (not even as
expired
).The text was updated successfully, but these errors were encountered: