Package Exports
- @solobank/mpp-solana
- @solobank/mpp-solana/client
- @solobank/mpp-solana/server
Readme
@solobank/mpp-solana
Solana USDC payment method for the Machine Payments Protocol (MPP), built on @solana/kit v2 with SPL Token transfers.
Installation
pnpm add @solobank/mpp-solana mppx @solana/kitAccept Payments (Server)
import { Mppx } from 'mppx';
import { solanaServer, SOLANA_USDC_MINT } from '@solobank/mpp-solana';
const mppx = Mppx.create({
methods: [
solanaServer({
currency: SOLANA_USDC_MINT,
recipient: 'YOUR_SOLANA_WALLET',
}),
],
});The server verifies submitted Solana signatures against RPC using instruction-level checks and token balance deltas.
Make Payments (Client)
import { createKeyPairSignerFromBytes } from '@solana/kit';
import { Mppx } from 'mppx/client';
import { solanaClient } from '@solobank/mpp-solana';
const signer = await createKeyPairSignerFromBytes(secretKeyBytes);
const mppx = Mppx.create({
methods: [
solanaClient({
rpcUrl: 'https://api.mainnet-beta.solana.com',
signer,
}),
],
});The client:
- Loads all SPL token accounts for the requested mint
- Builds one or more
transferCheckedinstructions via@solana-program/token - Creates the recipient ATA idempotently if needed
- Signs, validates size, and broadcasts the transaction
- Returns the Solana signature as the MPP credential
Exports
// Client
import { solanaClient } from '@solobank/mpp-solana';
// or
import { solanaClient } from '@solobank/mpp-solana/client';
// Server
import { solanaServer } from '@solobank/mpp-solana/server';
// Utilities
import {
SOLANA_USDC_MINT,
USDC_DECIMALS,
parseAmountToRaw,
fetchTokenAccounts,
buildTransferPlan,
} from '@solobank/mpp-solana';Development
pnpm install
pnpm typecheck # Type checking
pnpm test # 22 unit tests
pnpm build # Build ESM + CJS + typesTech Stack
@solana/kitv2 — RPC, transaction building, signing@solana-program/token— SPL token instructions (transferChecked, ATA)mppx— MPP protocol frameworkvitest— Testingtsup— Build (ESM + CJS)
License
MIT