Solana Networks
WaaP signs on Solana with an ed25519 key. t2 in standard mode, sqd2 in
Squid mode. Your Solana address is separate from your EVM and Sui
addresses.
Supported clusters
| Identifier | Cluster |
|---|---|
solana:mainnet | Mainnet Beta. solana:mainnet-beta is an alias. |
solana:devnet | Devnet |
solana:testnet | Testnet |
Use the identifier verbatim. The CLI rejects unknown networks rather than
guessing, and --chain is required on every signing command.
Gas costs: Solana fees are small but non-zero, and a funded account needs rent-exempt balance. Keep a small SOL balance on any address an agent transacts from. A few hundredths of a SOL covers a long run of ordinary transactions.
Blockhash expiry
A Solana transaction carries a recent blockhash and becomes invalid once that blockhash ages out. Roughly a minute. This matters whenever a human approval sits between building and submitting.
A dapp-built transaction keeps its exact bytes. WaaP does not silently rewrite a transaction you constructed, so a stale blockhash stays stale. Build the transaction close to the moment of approval, or let WaaP build it.
For transactions WaaP prepares itself, the blockhash can be finalized late through an explicitly authorized step, so a slow approval does not invalidate the transaction. Prebuilt and partially signed transactions are never modified.
In the browser (SDK)
The Solana facade implements the Wallet Standard:
import { initWaaP } from '@human.tech/waap-sdk'
const wallet = initWaaP({ chain: 'solana' })
const { accounts } = await wallet.connect()
const signed = await wallet.signMessage({
account: accounts[0],
message: new TextEncoder().encode('hello')
})
wallet.destroy()Supported features: standard:connect, standard:disconnect,
standard:events, solana:signMessage, solana:signTransaction, and
solana:signAndSendTransaction. Direct signTransaction and
signAndSendTransaction helpers are also available for wallet-adapter-style
consumers, and accept serialized bytes or a serializable transaction object.
signTransaction resolves with signed bytes; signAndSendTransaction resolves
with the cluster signature.
From an agent (CLI)
# Native SOL — --value is whole SOL
waap-cli send-tx --chain solana:mainnet --to <recipient> --value 0.01 --json
# SPL token — --value is the raw base-unit amount
waap-cli send-tx --chain solana:mainnet --to <recipient> \
--mint <mint-address> --value 1000000 --json
# Message signing
waap-cli sign-message --chain solana:mainnet --message "hello" --json--value changes meaning with --mint. Without it, --value is whole SOL.
With it, --value is the raw token base-unit integer. For a 6-decimal token,
1000000 is one whole token. Read the mint’s decimals rather than assuming.
Chain-native inputs are also accepted for transactions you build yourself:
waap-cli send-tx --chain solana:mainnet --tx - --tx-format v0-message --json--tx-format accepts json, legacy-message, or v0-message on Solana.
EIP-712 typed-data signing is EVM-only and has no Solana equivalent.
Related
- EVM Networks: supported EVM chains and custom chain configuration
- Sui Networks: supported Sui networks
- Squid Mode: distributed key material via the Ika Network
- CLI Commands: full command reference