| Crates.io | solana-actor |
| lib.rs | solana-actor |
| version | 0.1.0 |
| created_at | 2026-01-16 06:48:13.837085+00 |
| updated_at | 2026-01-16 06:48:13.837085+00 |
| description | Core credential provider traits for Solana signing and transaction submission |
| homepage | |
| repository | https://github.com/macalinao/sign-agent |
| max_upload_size | |
| id | 2048028 |
| size | 176,174 |
Core traits for Solana signing and transaction submission.
An actor is any entity that can perform actions on the Solana blockchain. This includes:
The "actor" abstraction unifies these different signing mechanisms behind common traits, allowing code to work with any actor type without knowing the underlying implementation.
This crate provides a clean separation between:
┌─────────────────────────────────────────────────────────────────┐
│ SIGNERS (sync) │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │MessageSigner│ │TransactionSigner │ Just sign bytes │
│ └─────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ TRANSPORTS (async) │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ DirectTransport │ │ SquadsTransport │ Submit, wait, etc. │
│ │ (wraps signer) │ │ (wraps signer) │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
MessageSigner - Sign arbitrary messages (off-chain, SIWS)TransactionSigner - Sign transaction messagesWalletTransport - Async submission with status trackingSubmitResult - Captures signed, pending, or executed statesConnection - Network operations (send, confirm, query)RpcConnection - Standard Solana RPC implementation (with rpc feature)use solana_actor::{
TransactionSigner, WalletTransport, DirectTransport, SubmitResult,
};
// Any signer implementing TransactionSigner
let signer = /* KeypairSigner, LedgerSigner, etc. */;
// Wrap in a transport for async operations
let transport = DirectTransport::new(signer);
// Submit and get result
let result = transport.submit(&tx_message).await?;
match result {
SubmitResult::Signed(sig) => println!("Signed: {}", sig),
SubmitResult::Pending { .. } => println!("Awaiting approvals"),
SubmitResult::Executed { signature, .. } => println!("Executed: {}", signature),
}
rpc (default) - Include RpcConnection implementationsolana-actor-keypair - File/memory keypair signersolana-actor-ledger - Ledger hardware wallet signersolana-actor-squads - Squads multisig transportApache-2.0