Python
Use full service RPC for fetching latest blockhash.. Nozomi only supports sendTransaction.
import asyncio
from typing import List
from solders.pubkey import Pubkey
from solders.keypair import Keypair
from solders.signature import Signature
from solders.instruction import Instruction
from solana.transaction import Transaction
from solders.system_program import transfer, TransferParams
from solana.rpc.async_api import AsyncClient
NOZOMI_ENDPOINT = "https://nozomi.temporal.xyz/?c=<YOUR_API_KEY>"
NOZOMI_TIP = Pubkey.from_string("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq")
MIN_TIP_AMOUNT = 1_000_000
SOLANA_RPC_ENDPOINT = "https://api.mainnet-beta.solana.com"
async def send_nozomi_txn(ixns: List[Instruction], signer: Keypair, nozomi_rpc_client: AsyncClient, solana_rpc_client: AsyncClient) -> Signature:
tip_ixn = transfer(TransferParams(
from_pubkey=signer.pubkey(),
to_pubkey=NOZOMI_TIP,
lamports=MIN_TIP_AMOUNT
))
ixns.append(tip_ixn)
blockhash = (await solana_rpc_client.get_latest_blockhash()).value.blockhash
txn = Transaction()
for ixn in ixns:
txn.add(ixn)
# solanapy does not expose an encoding option via TxOpts
return (await nozomi_rpc_client.send_transaction(txn, signer, recent_blockhash=blockhash)).value
def build_ixns() -> List[Instruction]:
# your instruction building logic here..
return []
async def main():
nozomi_rpc_client = AsyncClient(NOZOMI_ENDPOINT)
solana_rpc_client = AsyncClient(SOLANA_RPC_ENDPOINT)
# replace with actual keypair loading logic
signer = Keypair()
ixns = build_ixns()
signature = await send_nozomi_txn(ixns, signer, nozomi_rpc_client, solana_rpc_client)
print(f"Transaction sent with signature: {signature}")
if __name__ == "__main__":
asyncio.run(main())Last updated

