rules files for better llm understanding of the solana-kotlin codebase
main codebase overview - start here
- project structure and modules
- multiplatform target setup
- package organization
- build system and dependencies
- coding conventions (explicit api, builder pattern, etc)
rpc client patterns and usage
SolanaCliententry point- extension function pattern for rpc methods
- all 14 available methods
- response handling and error types
- adding new methods
transaction building and signing
Transaction,Message,SignedTransactiontypes- builder pattern usage
- single and multi-signer workflows
- serialization formats
- account meta handling
- common transaction patterns
solana program integrations
PrograminterfaceSystemProgram(transfers, account creation, nonces)TokenProgramandToken2022Program(spl tokens)AssociatedTokenProgram(ata management)ComputeBudgetProgram(compute units, priority fees)- pda derivation
- instruction encoding patterns
cryptographic primitives via tweetnacl
- ed25519 keypair generation and signing
PublicKeyandEd25519Keypairtypes- base58 encoding/decoding
- secretbox encryption (xsalsa20-poly1305)
- platform-specific implementations (jvm/ios/native)
- security best practices
val tx = Transaction.Builder()
.addInstruction(SystemProgram.transfer(from, to, lamports))
.setRecentBlockHash(blockhash)
.setFeePayer(from)
.build()
.sign(keypair)
client.sendTransaction(tx)val keypair = Ed25519Keypair.fromBase58(secretKey)
// or
val seed = secureRandom.nextBytes(32)
val keypair = TweetNaCl.Signature.generateKey(seed)val client = SolanaClient(RpcKtorClient("https://api.mainnet-beta.solana.com"))
val response = client.getBalance(publicKey)
val balance = response.resultval ata = ownerPublicKey.associatedTokenAddress(mintAddress)
val ix = TokenProgram.transfer(sourceAta, destAta, owner, amount)when adding new features:
- follow explicit api mode (
publickeyword required) - use builder pattern for complex types
- extension functions for rpc methods
- platform-specific code via
expect/actual - update relevant rules file if patterns change