Skip to content

Commit 6c652a6

Browse files
authored
refactor(futarchy): replace vault transaction account with transaction_index arg (#446)
* refactor(futarchy): replace vault transaction account with transaction_index arg in admin_approve_multisig_proposal * update sdk ver
1 parent a6cd647 commit 6c652a6

7 files changed

Lines changed: 60 additions & 39 deletions

File tree

programs/futarchy/src/instructions/admin_approve_multisig_proposal.rs

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ mod admin {
77
declare_id!("CWGawadYU8CzRVBecnJymNw97H7E3ndDinV5sMzesgY2");
88
}
99

10+
#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize)]
11+
pub struct AdminApproveMultisigProposalArgs {
12+
pub transaction_index: u64,
13+
}
14+
1015
#[derive(Accounts)]
16+
#[instruction(args: AdminApproveMultisigProposalArgs)]
1117
pub struct AdminApproveMultisigProposal<'info> {
1218
#[account(mut, has_one = squads_multisig)]
1319
pub dao: Account<'info, Dao>,
@@ -32,33 +38,20 @@ pub struct AdminApproveMultisigProposal<'info> {
3238
squads_multisig_program::SEED_PREFIX,
3339
squads_multisig.key().as_ref(),
3440
squads_multisig_program::SEED_TRANSACTION,
35-
squads_multisig_vault_transaction.index.to_le_bytes().as_ref(),
41+
args.transaction_index.to_le_bytes().as_ref(),
3642
squads_multisig_program::SEED_PROPOSAL,
3743
],
3844
bump,
3945
seeds::program = squads_multisig_program
4046
)]
4147
pub squads_multisig_proposal: Account<'info, squads_multisig_program::Proposal>,
4248

43-
#[account(
44-
seeds = [
45-
squads_multisig_program::SEED_PREFIX,
46-
squads_multisig.key().as_ref(),
47-
squads_multisig_program::SEED_TRANSACTION,
48-
squads_multisig_vault_transaction.index.to_le_bytes().as_ref(),
49-
],
50-
bump,
51-
seeds::program = squads_multisig_program
52-
)]
53-
pub squads_multisig_vault_transaction:
54-
Account<'info, squads_multisig_program::VaultTransaction>,
55-
5649
pub squads_multisig_program:
5750
Program<'info, squads_multisig_program::program::SquadsMultisigProgram>,
5851
}
5952

6053
impl AdminApproveMultisigProposal<'_> {
61-
pub fn validate(&self) -> Result<()> {
54+
pub fn validate(&self, _args: &AdminApproveMultisigProposalArgs) -> Result<()> {
6255
#[cfg(feature = "production")]
6356
require_keys_eq!(self.admin.key(), admin::ID, FutarchyError::InvalidAdmin);
6457

@@ -69,13 +62,12 @@ impl AdminApproveMultisigProposal<'_> {
6962
Ok(())
7063
}
7164

72-
pub fn handle(ctx: Context<Self>) -> Result<()> {
65+
pub fn handle(ctx: Context<Self>, _args: AdminApproveMultisigProposalArgs) -> Result<()> {
7366
let Self {
7467
dao,
7568
admin: _,
7669
squads_multisig,
7770
squads_multisig_proposal,
78-
squads_multisig_vault_transaction: _,
7971
squads_multisig_program,
8072
} = ctx.accounts;
8173

programs/futarchy/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,12 @@ pub mod futarchy {
153153
CollectMeteoraDammFees::handle(ctx)
154154
}
155155

156-
#[access_control(ctx.accounts.validate())]
156+
#[access_control(ctx.accounts.validate(&args))]
157157
pub fn admin_approve_multisig_proposal(
158158
ctx: Context<AdminApproveMultisigProposal>,
159+
args: AdminApproveMultisigProposalArgs,
159160
) -> Result<()> {
160-
AdminApproveMultisigProposal::handle(ctx)
161+
AdminApproveMultisigProposal::handle(ctx, args)
161162
}
162163

163164
#[access_control(ctx.accounts.validate())]

sdk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@metadaoproject/futarchy",
3-
"version": "0.7.3-alpha.2",
3+
"version": "0.7.4-alpha.1",
44
"type": "module",
55
"main": "dist/index.js",
66
"module": "dist/index.js",

sdk/src/v0.7/types/futarchy.ts

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,17 +1204,19 @@ export type Futarchy = {
12041204
isSigner: false;
12051205
},
12061206
{
1207-
name: "squadsMultisigVaultTransaction";
1207+
name: "squadsMultisigProgram";
12081208
isMut: false;
12091209
isSigner: false;
12101210
},
1211+
];
1212+
args: [
12111213
{
1212-
name: "squadsMultisigProgram";
1213-
isMut: false;
1214-
isSigner: false;
1214+
name: "args";
1215+
type: {
1216+
defined: "AdminApproveMultisigProposalArgs";
1217+
};
12151218
},
12161219
];
1217-
args: [];
12181220
},
12191221
{
12201222
name: "adminExecuteMultisigProposal";
@@ -1697,6 +1699,18 @@ export type Futarchy = {
16971699
];
16981700
};
16991701
},
1702+
{
1703+
name: "AdminApproveMultisigProposalArgs";
1704+
type: {
1705+
kind: "struct";
1706+
fields: [
1707+
{
1708+
name: "transactionIndex";
1709+
type: "u64";
1710+
},
1711+
];
1712+
};
1713+
},
17001714
{
17011715
name: "ConditionalSwapParams";
17021716
type: {
@@ -4493,17 +4507,19 @@ export const IDL: Futarchy = {
44934507
isSigner: false,
44944508
},
44954509
{
4496-
name: "squadsMultisigVaultTransaction",
4510+
name: "squadsMultisigProgram",
44974511
isMut: false,
44984512
isSigner: false,
44994513
},
4514+
],
4515+
args: [
45004516
{
4501-
name: "squadsMultisigProgram",
4502-
isMut: false,
4503-
isSigner: false,
4517+
name: "args",
4518+
type: {
4519+
defined: "AdminApproveMultisigProposalArgs",
4520+
},
45044521
},
45054522
],
4506-
args: [],
45074523
},
45084524
{
45094525
name: "adminExecuteMultisigProposal",
@@ -4986,6 +5002,18 @@ export const IDL: Futarchy = {
49865002
],
49875003
},
49885004
},
5005+
{
5006+
name: "AdminApproveMultisigProposalArgs",
5007+
type: {
5008+
kind: "struct",
5009+
fields: [
5010+
{
5011+
name: "transactionIndex",
5012+
type: "u64",
5013+
},
5014+
],
5015+
},
5016+
},
49895017
{
49905018
name: "ConditionalSwapParams",
49915019
type: {

tests/futarchy/unit/adminApproveMultisigProposal.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { expectError, setupBasicDao } from "../../utils.js";
99
import { assert } from "chai";
1010
import * as multisig from "@sqds/multisig";
1111
import { createMemoInstruction } from "@solana/spl-memo";
12+
import BN from "bn.js";
1213

1314
export default function suite() {
1415
let META: PublicKey, USDC: PublicKey, dao: PublicKey;
@@ -96,12 +97,11 @@ export default function suite() {
9697
);
9798

9899
await this.futarchy.autocrat.methods
99-
.adminApproveMultisigProposal()
100+
.adminApproveMultisigProposal({ transactionIndex: new BN(1) })
100101
.accounts({
101102
dao: dao,
102103
squadsMultisig: daoAccount.squadsMultisig,
103104
squadsMultisigProposal: squadsProposalPda,
104-
squadsMultisigVaultTransaction: vaultTransactionPda,
105105
admin: this.payer.publicKey,
106106
squadsMultisigProgram: multisig.PROGRAM_ID,
107107
})
@@ -228,12 +228,13 @@ export default function suite() {
228228

229229
// Approve and execute the config transaction using the new split instructions
230230
await this.futarchy.autocrat.methods
231-
.adminApproveMultisigProposal()
231+
.adminApproveMultisigProposal({
232+
transactionIndex: new BN(configTransactionIndex.toString()),
233+
})
232234
.accounts({
233235
dao: dao,
234236
squadsMultisig: daoAccount.squadsMultisig,
235237
squadsMultisigProposal: squadsConfigProposalPda,
236-
squadsMultisigVaultTransaction: vaultConfigTransactionPda,
237238
admin: this.payer.publicKey,
238239
squadsMultisigProgram: multisig.PROGRAM_ID,
239240
})
@@ -278,12 +279,11 @@ export default function suite() {
278279
);
279280

280281
await this.futarchy.autocrat.methods
281-
.adminApproveMultisigProposal()
282+
.adminApproveMultisigProposal({ transactionIndex: new BN(1) })
282283
.accounts({
283284
dao: dao,
284285
squadsMultisig: daoAccount.squadsMultisig,
285286
squadsMultisigProposal: squadsInvalidatedProposalPda,
286-
squadsMultisigVaultTransaction: vaultInvalidatedTransactionPda,
287287
admin: this.payer.publicKey,
288288
squadsMultisigProgram: multisig.PROGRAM_ID,
289289
})

tests/futarchy/unit/adminExecuteMultisigProposal.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { expectError, setupBasicDao } from "../../utils.js";
99
import { assert } from "chai";
1010
import * as multisig from "@sqds/multisig";
1111
import { createMemoInstruction } from "@solana/spl-memo";
12+
import BN from "bn.js";
1213

1314
export default function suite() {
1415
let META: PublicKey, USDC: PublicKey, dao: PublicKey;
@@ -110,12 +111,11 @@ export default function suite() {
110111

111112
// First approve
112113
await this.futarchy.autocrat.methods
113-
.adminApproveMultisigProposal()
114+
.adminApproveMultisigProposal({ transactionIndex: new BN(1) })
114115
.accounts({
115116
dao: dao,
116117
squadsMultisig: daoAccount.squadsMultisig,
117118
squadsMultisigProposal: squadsProposalPda,
118-
squadsMultisigVaultTransaction: vaultTransactionPda,
119119
admin: this.payer.publicKey,
120120
squadsMultisigProgram: multisig.PROGRAM_ID,
121121
})

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@
975975
"@jridgewell/sourcemap-codec" "^1.4.10"
976976

977977
"@metadaoproject/futarchy@./sdk":
978-
version "0.7.3-alpha.2"
978+
version "0.7.4-alpha.1"
979979
dependencies:
980980
"@coral-xyz/anchor" "^0.29.0"
981981
"@metaplex-foundation/umi" "^0.9.2"

0 commit comments

Comments
 (0)