Skip to main content
Glama

Ryntra Solana Evidence Kit

Lee lo que un activo de Solana puede hacerte, previsualiza exactamente lo que hará una transferencia y verifica un recibo sin preguntar a la parte que lo emitió.

Apache-2.0. Solo lectura por construcción: sin clave, sin ruta de firma, sin construcción de transacciones y un único método RPC — getAccountInfo. Un test enumera cada llamada RPC y cada identificador con forma de firma en el código fuente distribuido en cada ejecución, por lo que esa frase es una puerta en lugar de una promesa.

npm ci
npm run verify        # lint, typecheck, network-free tests, boundary gate
npm run cli -- inspect 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo

Ese último comando lee PayPal USD en mainnet a través de un endpoint público, sin ninguna cuenta, e imprime sus ocho extensiones de token con lo que cada una significa para alguien que posee el activo.

Por qué

Un mint de Token Extensions puede tener poderes que un saldo no te muestra. Un delegado permanente permite al emisor mover o quemar tokens desde cualquier cuenta. Un hook de transferencia ejecuta el programa de otra persona en cada transferencia. Una comisión de transferencia significa que el destinatario recibe menos de lo que se envió. Un estado de cuenta congelado por defecto significa que recibir un token no es lo mismo que poder moverlo.

Nada de eso está oculto — está en la cadena, en la cuenta del mint, decodificable por cualquiera. Simplemente no es leído por la mayoría de las cosas en las que la gente hace clic.

Este kit lo lee, dice lo que significa en una frase que un titular entiende y se niega a comprimirlo en una puntuación. Aquí no hay calificación, y el mejor veredicto que puede devolver el motor de políticas es NO_KNOWN_BLOCKER.

Related MCP server: Solana Debug MCP

Las tres herramientas

flowchart LR
  RPC[("Solana JSON-RPC<br/>getAccountInfo")]
  MINT["mint account bytes"]

  RPC --> MINT
  MINT --> P["<b>inspect_solana_mint</b><br/>Asset Passport<br/>identity · authorities<br/>extensions with provenance"]
  P --> F["<b>preflight_solana_action</b><br/>exact preview<br/>fee math · resolved hook<br/>expected balance deltas"]
  POL["owner policy<br/>13 declared dials"] --> V["policy verdict<br/>13 findings"]
  F --> V
  R[("Outcome Receipt<br/>JSON")] --> VR["<b>verify_solana_receipt</b><br/>schema · integrity<br/>issuer · binding"]

  classDef tool fill:#101418,stroke:#4c8bf5,color:#e8eef6
  classDef data fill:#0d1117,stroke:#3d444d,color:#c9d1d9
  class P,F,V,VR tool
  class RPC,MINT,POL,R data

Qué responde

Alcanza la red

inspect_solana_mint

Qué es este activo y qué puede hacer su emisor a un titular

sí, una lectura

preflight_solana_action

Qué hará esta transferencia exacta y qué opina mi política de ella

sí, una lectura

verify_solana_receipt

Este recibo está intacto, quién lo firmó y si es sobre Solana

no — completamente local

Cada una está disponible de tres maneras: como llamada SDK tipada, como herramienta MCP y desde la CLI.

Diseño

lib/solana/          the evidence core — decoding, passport, preflight, policy, receipt
lib/agent-control/   the frozen canonical hashing and the Solana registry adapter
lib/guard/           the one canonical JSON serializer both hashers use
packages/solana-evidence-sdk/   typed calls over the core
packages/solana-evidence-mcp/   local stdio MCP server
examples/solana-evidence-cli/   the runnable CLI
docs/solana/schemas/            published JSON Schemas for non-JS consumers

lib/ no es una copia. Son los mismos módulos que ejecuta ryntra.io, extraídos con sus rutas intactas — así que un resultado de este kit y un resultado del producto provienen del mismo código, y una extracción que rompa eso falla sus propias pruebas. lib/stellar/evidence.ts está aquí por la misma razón y ninguna otra: el sobre de evidencia es neutral respecto a la cadena, y enviar la única implementación es mejor que enviar una copia que se desvíe. lib/solana/evidence.ts lo dice donde lo encuentres.

Reglas de diseño y su coste

Cada hecho lleva cómo se conoce. ONCHAIN_VERIFIED, DECLARED, DERIVED, CONFLICTING, UNKNOWN, UNSUPPORTED. Un valor sin fuente no es un valor aquí. El coste es la verbosidad, y vale la pena: el marketing del propio emisor y una lectura del libro mayor nunca deben llevar la misma insignia.

Una frase describe el contexto, no el slot. Un mint que lleva TransferHook con el id de programa todo ceros no tiene hook instalado — el pasaporte lo dice, y dice quién puede instalar uno. La frase genérica habría sido falsa en el mint de Token Extensions más inspeccionado que existe.

Las cantidades son unidades base sin formato como cadenas. Una cantidad de 64 bits no sobrevive a un número de JavaScript, y una cantidad con pérdida es una cantidad incorrecta. No hay decimales en ningún lugar de la ruta de valores.

Una extensión para la que nadie escribió semántica aún se renderiza, marcada, con su tipo raw. Un hecho decodificado sin una frase bonita sigue siendo un hecho; ocultarlo sería la mentira.

Nada lanza excepciones. Las negativas son valores con un código y una razón — ACCOUNT_NOT_FOUND, NOT_A_MINT, DECODE_FAILED. «Sin respuesta» y «esta respuesta» no deben parecerse.

Los reintentos cubren el transporte y nunca la respuesta. Una respuesta que se parsea se devuelve tal cual, incluido «sin cuenta», porque volver a preguntar no cambia los hechos.

Recibos

Un Recibo de Resultado de Ryntra es una observación de algo que ya ocurrió — nunca una instrucción, y nunca una prueba de que Ryntra lo hizo. verify_solana_receipt recalcula ambos hashes a partir de los propios bytes del recibo y verifica la firma Ed25519 contra la clave que lleva el recibo. Cuatro ejes, reportados por separado:

  • esquema — si esto tiene la forma de un recibo en absoluto;

  • integridad — si ambos hashes se recalculan;

  • emisor — si la firma es válida; y, solo si pasas trustedPublicKeys, si la clave es una que confías;

  • vinculación — si el nombre del registro identifica al adaptador de Solana.

«Firmado por alguien» no es «firmado por Ryntra», y colapsar ambos es el error que este eje existe para prevenir. lib/solana/fixtures/receipt-*.json son artefactos reales que puedes ejecutar contra esto, incluyendo uno que es el firmado con un solo carácter editado.

Límite de confianza

  • Sin custodia y sin claves. No se guarda, lee, deriva ni solicita ninguna clave. No hay ruta de firma, y la puerta de límite falla la compilación si aparece una.

  • No se ejecuta nada. No se construye ni envía ninguna transacción.

  • Un veredicto no es un juicio de seguridad. Reporta la ausencia de bloqueadores conocidos bajo una política que el llamante declaró, y el vocabulario de veredictos no tiene palabra para seguridad.

  • El endpoint es elección del operador. Ninguna herramienta o llamada SDK toma una URL de su llamante; los endpoints del proveedor provienen de RYNTRA_SOLANA_RPC_MAINNET y RYNTRA_SOLANA_RPC_DEVNET, y los valores predeterminados públicos funcionan sin cuenta.

  • Distribuido con el código fuente. El paquete raíz es private, por lo que un npm publish accidental se rechaza. No se reivindica ningún paquete npm.

Enlaces

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Ask what you can't be sure of. Read-only checks on tokens, NFTs, wallets and contracts.

  • Read-only crypto safety: token honeypot checks, EIP-712 signature decode, approval scans.

  • Solana on-chain intelligence — token scans, wallet profiling, bundle detection, 19 MCP tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryntra-io/ryntra-solana-evidence'

If you have feedback or need assistance with the MCP directory API, please join our Discord server