Relationship to Solace
This is an extension gem for solace, the Ruby toolkit for Solana. Solace provides four layered abstractions; this gem adds the Squads Smart Account program (SMRTzfY6DfH5ik3TKiyLFfXexV8uSG3d2UksSCYdunG) to the middle two and ships a high-level client on top:
| Layer | Provided by | This gem adds |
|---|
Primitives — Transaction, Message, Instruction, AccountContext, Codecs | Solace | — (reused as-is) |
| Instruction builders | pattern from Solace | One builder per Squads instruction |
| Composers | Solace::Composers::Base | One composer per instruction |
Program clients — Solace::Programs::Base | pattern from Solace | Solace::Programs::SquadsSmartAccount (PDA derivation + send-and-sign) |
In short: you work in Ruby with Solace::Keypair, Solace::Connection, and the SquadsSmartAccount client; this gem handles the Squads-specific encoding, account derivation, and the smart-account governance lifecycle. See Conventions for how the three layers fit together.
What's implemented
Everything needed for normal smart-account usage — 22 of the program's 37 instructions. Each links to its operation page.
Account
Vault transaction lifecycle — move funds out of a vault through governance
Settings transactions — change the account's own configuration through governance
Authority actions — for controlled accounts (a single settings authority)
Spending limits — pre-authorized, capped spending (SOL, SPL Token, Token-2022)
Not yet implemented
| Area | Status |
|---|
| Address Lookup Tables (ALTs) | Not supported — createTransaction / executeTransaction handle simple compiled messages only. |
| Ephemeral signers | Not supported — ephemeral_signers is fixed at 0. |
Transaction buffers (createTransactionBuffer and friends) | Not implemented — large transactions can't be staged. |
Batches (createBatch and friends) | Not implemented. |
setArchivalAuthorityAsAuthority | Deliberately skipped — the archival feature is inert in the deployed program. |
Program-config admin (initializeProgramConfig, setProgramConfig*) and logEvent | Out of scope for normal usage. |
The full instruction-by-instruction matrix lives in Reference › Instruction Coverage.