Skip to content

Reject a Proposal

Casts a rejection vote on an Active proposal. Once rejections reach the cutoff (num_voters − threshold + 1), the proposal becomes Rejected — a terminal state; its transaction can never execute and should be closed.

The signer must hold the Vote permission. A signer may switch a prior approval to a rejection. See Permissions & Threshold for the cutoff math.

Program method — reject_proposal

Signs with payer + signer, then sends.

ParameterTypeRequiredDefaultDescription
payerKeypairyesPays the fee; co-signs.
settings#to_syesThe settings account address.
signer#to_s · KeypairyesA Vote-holding member; must sign.
transaction_indexIntegeryesIndex of the proposal's transaction.
memoStringnonilOptional indexing memo.

Plus the shared sign: / execute: controls and Solace::Transaction return — see Conventions.

ruby
program.reject_proposal(
  payer:             member,
  settings:          identity.settings_address,
  signer:            member,
  transaction_index: 1
)

Composer — SquadsSmartAccountsRejectProposalComposer

ParameterTypeRequiredDefaultDescription
settings#to_syesThe settings account address.
signer#to_s · KeypairyesA Vote-holding member; must sign.
proposal#to_syesThe Proposal PDA to vote on.
memoStringnonilIndexing memo.
ruby
proposal, = program.get_proposal_address(
  settings_address:  identity.settings_address,
  transaction_index: 1
)

composer = Solace::Composers::SquadsSmartAccountsRejectProposalComposer.new(
  settings: identity.settings_address,
  signer:   member.address,
  proposal:
)

tx = Solace::TransactionComposer.new(connection:)
                                .add_instruction(composer)
                                .set_fee_payer(member)
                                .compose_transaction

tx.sign(member)
connection.send_transaction(tx.serialize)

Low-level instruction (advanced)

  • Discriminator: [114, 162, 164, 82, 191, 11, 102, 25]
  • Encodes (data): option_string(memo)
ParameterTypeRequiredDefaultDescription
memoString, nilyesIndexing memo, or nil.
settings_indexIntegeryesIndex of the settings account.
signer_indexIntegeryesIndex of the voting signer.
proposal_indexIntegeryesIndex of the Proposal PDA.
system_program_indexIntegeryesThe optional systemProgram slot — fill with the program id when absent.
program_indexIntegeryesIndex of the Squads program.

Shares the VoteOnProposal account layout with approve; only the discriminator differs. systemProgram is absent, so its slot carries the Squads program id.

Built on Solace