Signers
Load the operator key that sponsors network fees and signs upto/batch settlement — local keypairs or remote backends — via Solana Keychain.
A signer is only needed when the server sponsors the network fee or settles upto / batch-settlement vouchers. Set it as fee_payer_signer on PayKitConfig. Key handling is built on Solana Keychain, re-exported as solana_pay_kit::mpp::solana_keychain.
Local key material
Local keys ride on MemorySigner:
use solana_pay_kit::mpp::solana_keychain::memory::MemorySigner;
// From a 64-byte keypair…
let signer = MemorySigner::from_bytes(&secret_key_bytes)?;
// …or from a JSON byte-array string (e.g. a Solana CLI keypair, or an env var).
let signer = MemorySigner::from_private_key_string(&std::env::var("MPP_OPERATOR_KEY")?)?;Sponsoring the network fee
Set fee_payer_signer to have the server pay the customer's network fee. One key drives MPP fee-sponsored mode and supplies x402's fee-payer address. It is required for the upto and batch-settlement schemes, whose settlement vouchers are operator-signed:
use std::sync::Arc;
let pay = PayKit::new(PayKitConfig {
recipient: "CXhrFZJLKqjzmP3sjYLcF4dTeXWKCy9e2SXXZ2Yo6MPY".to_string(),
network: "mainnet".to_string(),
fee_payer_signer: Some(Arc::new(signer)),
..Default::default()
})?;Remote backends
Remote backends (AWS KMS, GCP KMS, Vault, …) implement the SolanaSigner trait and drop into fee_payer_signer the same way. The gcp_kms Cargo feature wires the GCP KMS backend.