Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions precompiles/referenda/Referenda.sol
Original file line number Diff line number Diff line change
Expand Up @@ -83,16 +83,17 @@ interface Referenda {
/// @param index The index of a closed referendum with decision deposit still locked
function refundDecisionDeposit(uint32 index) external;

/// @dev Refund the Submission Deposit for a closed referendum back to the depositor
/// @custom:selector c28307ca
/// @param index The index of a closed referendum with submission deposit still locked
function refundSubmissionDeposit(uint32 index) external;

/// @dev A referenda has been submitted at a given block
/// @custom:selector e02a819ecfc92874b5016c6a0e26f56a5cb08771f32ab818bf548d84ca3ae94d
/// @param trackId uint16 The trackId
/// @param blockNumber uint32 Block number at which it was set to be submitted
/// @param hash bytes32 The hash of the proposal preimage
event SubmittedAt(
uint16 indexed trackId,
uint32 blockNumber,
bytes32 hash
);
event SubmittedAt(uint16 indexed trackId, uint32 blockNumber, bytes32 hash);

/// @dev A referenda has been submitted after a given block
/// @custom:selector a5117efbf0f4aa9e08dd135e69aa8ee4978f99fca86fc5154b5bd1b363eafdcf
Expand All @@ -108,14 +109,10 @@ interface Referenda {
/// @dev Decision Deposit for a referendum has been placed
/// @custom:selector 87e691fb2e6a679435f578d43cd67e1af825294e56064a9de0522b312b8e9a60
/// @param index uint32 The index of the ongoing referendum that is not yet deciding
event DecisionDepositPlaced(
uint32 index
);
event DecisionDepositPlaced(uint32 index);

/// @dev Decision Deposit for a closed referendum has been refunded
/// @custom:selector 61f241739b215680a33261f1dee7646d0e840d5e498c1142c1a534987d9b8ed8
/// @param index uint32 The index of the closed referendum
event DecisionDepositRefunded(
uint32 index
);
event DecisionDepositRefunded(uint32 index);
}
14 changes: 14 additions & 0 deletions precompiles/referenda/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -411,4 +411,18 @@ where
event.record(handle)?;
Ok(())
}

/// Refund the Submission Deposit for a closed referendum back to the depositor.
///
/// Parameters:
/// * index: The index of a closed referendum whose Submission Deposit has not yet been refunded.
#[precompile::public("refundSubmissionDeposit(uint32)")]
fn refund_submission_deposit(handle: &mut impl PrecompileHandle, index: u32) -> EvmResult {
let origin = Runtime::AddressMapping::into_account_id(handle.context().caller);

let call = ReferendaCall::<Runtime>::refund_submission_deposit { index }.into();

<RuntimeHelper<Runtime>>::try_dispatch(handle, Some(origin).into(), call)?;
Ok(())
}
}
Loading