Developers
Kyvro Testnet is SVM compatible (0.4-second slots). @solana/web3.js, Anchor and the Solana CLI work unchanged. Every value on this page comes from the live network configuration.
Three steps get you from zero to a deployed program:
https://rpc-testnet.kyvro.si.getGenesisHash must return A8qzbNkAdT1GsqmyKTifWnTgS7PuqqmniwdsGeaPc5Jo. tKYV has no monetary value.import { Connection, clusterApiUrl } from "@solana/web3.js";
const connection = new Connection("https://rpc-testnet.kyvro.si", "confirmed");
console.log("slot:", await connection.getSlot());
console.log("genesis:", await connection.getGenesisHash());
// Expected genesis: A8qzbNkAdT1GsqmyKTifWnTgS7PuqqmniwdsGeaPc5JoConnect with @solana/web3.js or plain JSON-RPC. The chain reference for wallets is the CAIP-2 identifier solana:A8qzbNkAdT1GsqmyKTifWnTgS7Puqqmn. Always check the genesis hash before sending value: a wrong RPC URL is otherwise indistinguishable from the real network.
curl -s https://rpc-testnet.kyvro.si -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getGenesisHash","params":[]}'
# expected: "A8qzbNkAdT1GsqmyKTifWnTgS7PuqqmniwdsGeaPc5Jo"Keep deployer keys in your environment or a hardware wallet. Never commit them to a repository or paste them into a web page.
# Anchor.toml [provider] cluster = "https://rpc-testnet.kyvro.si" wallet = "~/.config/solana/id.json" # Build and deploy your program anchor build anchor deploy
Balances, account data and transaction history through standard Solana JSON-RPC. getSignaturesForAddress on the public endpoint returns at most 1,000 signatures per request; page with before/until.
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
const connection = new Connection("https://rpc-testnet.kyvro.si", "confirmed");
const owner = new PublicKey("<PUBKEY>");
const lamports = await connection.getBalance(owner);
console.log(lamports / LAMPORTS_PER_SOL, "tKYV");
const tokens = await connection.getParsedTokenAccountsByOwner(owner, {
programId: new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),
});
for (const { account } of tokens.value) console.log(account.data.parsed.info);Fees are paid in tKYV by the fee payer. Sign in the user's wallet in browser apps; server-side, load keys from a secret manager.
import { Connection, PublicKey, SystemProgram, Transaction } from "@solana/web3.js";
const connection = new Connection("https://rpc-testnet.kyvro.si", "confirmed");
// Sign with the user's wallet (Phantom, Backpack…). Keys never leave the wallet.
const { signature } = await window.solana.signAndSendTransaction(
new Transaction().add(
SystemProgram.transfer({ fromPubkey: wallet.publicKey, toPubkey: new PublicKey("<RECIPIENT>"), lamports: 1_000_000 }),
),
);
console.log("https://explorer-testnet.kyvro.si/tx/" + signature);SPL and Token-2022 mints are indexed automatically from their transfer instructions: holders, transfers and supply appear on the token page without any registration. Name, symbol and decimals come from on-chain metadata. A symbol is not unique: always identify a token by its mint address.
curl -s https://rpc-testnet.kyvro.si -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":1,"method":"getTokenAccountsByOwner",
"params":["<OWNER>",{"programId":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"encoding":"jsonParsed"}]}'This explorer exposes a read API for indexed data alongside the node RPC. Blocks, transactions, addresses, tokens, programs and validators are available as JSON under /api/v1/…, with keyset pagination and a WebSocket at /api/v1/ws for new-block, new-transaction and network-stats events.
curl -s https://explorer-testnet.kyvro.si/api/v1/blocks?limit=5