AnchorPy
AnchorPy gera clientes Python a partir de IDLs Anchor para que backends e bots chamem programas on-chain com builders de instrução tipados. Mira semânticas de IDL Anchor 0.32.1 e roda sobre solders + solana-py contra RPC Agave 4.1.1.
Busque em todas as páginas da documentação
AnchorPy gera clientes Python a partir de IDLs Anchor para que backends e bots chamem programas on-chain com builders de instrução tipados. Mira semânticas de IDL Anchor 0.32.1 e roda sobre solders + solana-py contra RPC Agave 4.1.1.
Cartão de receita de referência rápida - pronto para copiar e colar.
pip install anchorpy
from anchorpy import Program, Provider, Wallet
from solana.rpc.async_api import AsyncClient
PROGRAM_ID = "<YOUR_PROGRAM_PUBKEY>"
async def load_program():
client = AsyncClient("https://api.devnet.solana.com")
wallet = Wallet.local()
provider = Provider(client, wallet)
program = await Program.at(PROGRAM_ID, provider)
return programQuando usar isso:
anchor build.import asyncio
import json
from pathlib import Path
from anchorpy import Program, Provider, Wallet, Idl
from solana.rpc.async_api import AsyncClient
PROGRAM_ID = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"
RPC = "https://api.devnet.solana.com"
async def main():
idl_path = Path("target/idl/my_program.json")
idl = Idl.from_json(idl_path.read_text())
async with AsyncClient(RPC) as client:
wallet = Wallet.local()
provider = Provider(client, wallet, opts={"preflight_commitment": "confirmed"})
program = await Program.at(PROGRAM_ID, provider, idl=idl)
# Exemplo: buscar conta definida no IDL
# state = await program.account["MyAccount"].fetch(pda)
# Exemplo: enviar instrução
# sig = await program.rpc["initialize"](ctx=..., signer=wallet.payer)
print("Loaded program:", program.program_id)
asyncio.run(main())O que isso demonstra:
Provider acopla cliente RPC, carteira e opções padrão de transação.Program.at resolve program ID e anexa metadados IDL.anchor build emite target/idl/<program>.json correspondendo a anchor-lang 0.32.1.Wallet.local() lê ANCHOR_WALLET ou ~/.config/solana/id.json como toolchain TS.| Preocupação | AnchorPy | @coral-xyz/anchor TS |
|---|---|---|
| Fonte IDL | Mesmo JSON de Anchor 0.32.1 | Mesmo |
| Runtime | Serviços Python asyncio | Browser / Node |
| Tipos | Stubs Python gerados | TS gerado |
| Melhor para | Bots, triggers ETL, backends | dApps frontend |
# Fixe IDL no repo - regenere no CI quando programa mudar
# anchor build && cp target/idl/my_program.json clients/python/
# Use keypair explícito em produção
from solders.keypair import Keypair
from anchorpy import Wallet
secret = Keypair.from_bytes(bytes(json.load(open("bot.json"))))
wallet = Wallet(secret)
# Busque múltiplas contas concorrentemente
# accounts = await program.account["Position"].all()rpc - contas Anchor precisam signers explícitos. Correção: passe ctx com contas Signer.AsyncClient em todo lugar. Correção: sem Client sync dentro de loops asyncio.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
Instruction empacotada à mão | Conjunto pequeno e estável de instruções | Superfície IDL grande |
@solana/kit + Codama TS | Frontend + tipos compartilhados | Equipe só Python |
Cliente Rust declare_program! | Serviços off-chain Rust | Stack Python |
| CPI bruto de outro programa | Composição on-chain | Automação off-chain |
Sim - use IDLs gerados por Anchor CLI 0.32.1 / anchor-lang 0.32.1.
Use codegen CLI anchorpy a partir do IDL quando quiser stubs commitados; Program.at também funciona dinamicamente.
Não via helpers IDL - construa instruções brutas com solders.
AnchorPy expõe helpers de seeds alinhados com convenções Anchor.
Analise logs de transação ou use parsers de evento IDL onde disponíveis.
Aponte provider para validator local ou fork Surfpool 0.12.0.
Instancie um Program por par program ID / IDL.
Mapeie códigos de erro customizados usando tabela de erros IDL - espelhe padrões do cliente TS.
Use wrappers HSM em nuvem ou hardware em torno de Wallet - nunca commite secrets.
Sim se seu programa Anchor e IDL incluem esses tipos de conta.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026