Browse Source

examples/multisig: Remove delete_transaction

Armani Ferrante 4 years ago
parent
commit
09fa8b5ee0
1 changed files with 0 additions and 58 deletions
  1. 0 58
      examples/multisig/programs/multisig/src/lib.rs

+ 0 - 58
examples/multisig/programs/multisig/src/lib.rs

@@ -73,54 +73,6 @@ pub mod multisig {
         Ok(())
     }
 
-    // Deletes a transaction if no one has signed, other than the creator.
-    // Note that the account is not actually deleted until the next epoch,
-    // when the account is garbage collected since there's no more SOL left.
-    // As a result, during the period of time when the transaction is deleted
-    // but the next epoch hasn't occured, the transaction account can still
-    // be used. To get around this, one could just add a field to mark deletion.
-    // This is not currently done.
-    pub fn delete_transaction(ctx: Context<DeleteTransaction>) -> Result<()> {
-        // Check the creator is the one and only signer.
-        let num_signers = ctx
-            .accounts
-            .transaction
-            .signers
-            .iter()
-            .fold(0, |acc, did_sign| if *did_sign { acc + 1 } else { acc });
-        if num_signers != 1 {
-            return Err(ErrorCode::TransactionAlreadySigned.into());
-        }
-        let owner_index = ctx
-            .accounts
-            .multisig
-            .owners
-            .iter()
-            .position(|a| a == ctx.accounts.owner.key)
-            .ok_or(ErrorCode::InvalidOwner)?;
-        if !ctx.accounts.transaction.signers[owner_index] {
-            return Err(ErrorCode::UnableToDelete.into());
-        }
-
-        // Mark the creator as not signed.
-        ctx.accounts.transaction.signers[owner_index] = false;
-
-        // Send the rent exemption sol back to the creator of the transaction.
-        let tx_lamports = ctx.accounts.transaction.to_account_info().lamports();
-        let to_lamports = ctx.accounts.owner.lamports();
-        **ctx.accounts.owner.lamports.borrow_mut() = to_lamports
-            .checked_add(tx_lamports)
-            .ok_or(ErrorCode::Overflow)?;
-        **ctx
-            .accounts
-            .transaction
-            .to_account_info()
-            .lamports
-            .borrow_mut() = 0;
-
-        Ok(())
-    }
-
     // Approves a transaction on behalf of an owner of the multisig.
     pub fn approve(ctx: Context<Approve>) -> Result<()> {
         let owner_index = ctx
@@ -230,16 +182,6 @@ pub struct CreateTransaction<'info> {
     rent: Sysvar<'info, Rent>,
 }
 
-#[derive(Accounts)]
-pub struct DeleteTransaction<'info> {
-    multisig: ProgramAccount<'info, Multisig>,
-    #[account(belongs_to = multisig)]
-    transaction: ProgramAccount<'info, Transaction>,
-    // One of the multisig owners. Checked in the handler.
-    #[account(signer)]
-    owner: AccountInfo<'info>,
-}
-
 #[derive(Accounts)]
 pub struct Approve<'info> {
     multisig: ProgramAccount<'info, Multisig>,