{ "proposal": { "title": "Add Specs: Solana", "description": "Adding new specification support for relaying Solana data on Lava", "specs": [ { "index": "SOLANA", "name": "solana main net", "enabled": true, "reliability_threshold": 268435455, "data_reliability_enabled": true, "block_distance_for_finalized_data": 0, "blocks_in_finalization_proof": 1, "average_block_time": 400, "allowed_block_lag_for_qos_sync": 25, "shares": 1, "min_stake_provider": { "denom": "ulava", "amount": "47500000000" }, "api_collections": [ { "enabled": true, "collection_data": { "api_interface": "jsonrpc", "internal_path": "", "type": "POST", "add_on": "" }, "apis": [ { "name": "getAccountInfo", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBalance", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlock", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 30, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlockHeight", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlockProduction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlockCommitment", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlocks", "block_parsing": { "parser_arg": [ "1" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlocksWithLimit", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getBlockTime", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getClusterNodes", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getEpochInfo", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getEpochSchedule", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getFeeForMessage", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getFirstAvailableBlock", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getGenesisHash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getHealth", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getHighestSnapshotSlot", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getIdentity", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getInflationGovernor", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getInflationRate", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getInflationReward", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getLargestAccounts", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getLatestBlockhash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getLeaderSchedule", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getMaxRetransmitSlot", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getMinimumBalanceForRentExemption", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getMultipleAccounts", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getProgramAccounts", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getRecentPerformanceSamples", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getRecentPrioritizationFees", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSignaturesForAddress", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSignatureStatuses", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSlot", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSlotLeader", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSlotLeaders", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getStakeActivation", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getStakeMinimumDelegation", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSupply", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTokenAccountBalance", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTokenAccountsByDelegate", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTokenAccountsByOwner", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTokenLargestAccounts", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTokenSupply", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getTransactionCount", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getVersion", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getVoteAccounts", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "isBlockhashValid", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "minimumLedgerSlot", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "requestAirdrop", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "sendTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": false, "local": false, "subscription": false, "stateful": 1, "hanging_api": true }, "extra_compute_units": 0 }, { "name": "simulateTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getConfirmedBlock", "block_parsing": { "parser_arg": [ "0" ], "parser_func": "PARSE_BY_ARG" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getConfirmedBlocks", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getConfirmedBlocksWithLimit", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getConfirmedSignaturesForAddress2", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getConfirmedTransaction", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getFeeCalculatorForBlockhash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getFeeRateGovernor", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getFees", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getRecentBlockhash", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 }, { "name": "getSnapshotSlot", "block_parsing": { "parser_arg": [ "latest" ], "parser_func": "DEFAULT" }, "compute_units": 10, "enabled": true, "category": { "deterministic": true, "local": false, "subscription": false, "stateful": 0 }, "extra_compute_units": 0 } ], "headers": [], "inheritance_apis": [], "parse_directives": [ { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"getLatestBlockhash\",\"params\":[{\"commitment\":\"finalized\"}],\"id\":1}", "function_tag": "GET_BLOCKNUM", "result_parsing": { "parser_arg": [ "0", "context", "slot" ], "parser_func": "PARSE_CANONICAL" }, "api_name": "getLatestBlockhash" }, { "function_tag": "GET_BLOCK_BY_NUM", "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"getBlock\",\"params\":[%d,{\"transactionDetails\":\"none\",\"rewards\":false}],\"id\":1}", "result_parsing": { "parser_arg": [ "0", "blockhash" ], "parser_func": "PARSE_CANONICAL", "encoding": "base64" }, "api_name": "getBlock" } ], "verifications": [ { "name": "version", "parse_directive": { "function_template": "{\"jsonrpc\":\"2.0\",\"method\":\"getVersion\",\"params\":[],\"id\":1}", "function_tag": "VERIFICATION", "result_parsing": { "parser_arg": [ "0", "solana-core" ], "parser_func": "PARSE_CANONICAL" }, "api_name": "getVersion" }, "values": [ { "expected_value": "*" } ] }, { "name": "tokens-owner-indexed", "parse_directive": { "function_template": "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"getTokenAccountsByOwner\",\"params\":[\"4Qkev8aNZcqFNSRhQzwyLMFSsi94jHqE8WNVTJzTP99F\",{\"programId\":\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"},{\"encoding\":\"jsonParsed\"}]}", "function_tag": "VERIFICATION", "result_parsing": { "parser_arg": [ "0", "value" ], "parser_func": "PARSE_CANONICAL" }, "api_name": "getTokenAccountsByOwner" }, "values": [ { "expected_value": "*", "severity": "Warning" } ] } ] } ] }, { "index": "SOLANAT", "name": "solana test net", "enabled": true, "imports": [ "SOLANA" ], "reliability_threshold": 268435455, "data_reliability_enabled": true, "block_distance_for_finalized_data": 31, "blocks_in_finalization_proof": 10, "average_block_time": 600, "allowed_block_lag_for_qos_sync": 17, "shares": 1, "min_stake_provider": { "denom": "ulava", "amount": "50000000000" } } ] }, "deposit": "10000000ulava" }