Skip to main content
Glama

Ryntra Solana Evidence Kit

Solanaアセットがあなたに何をもたらすかを読み解き、トランスファーが正確に何を行うかをプレビューし、そのトランスファーを作成した当事者に問い合わせることなくレシートを検証します。

Apache-2.0。設計上読み取り専用:鍵は不要、署名パスはなし、トランザクション構築は行わず、RPCメソッドはgetAccountInfoのみ。テストは実行のたびに、出荷されたソース内のすべてのRPC呼び出しと署名関連の識別子を列挙するため、その一文は約束ではなくゲートとして機能します。

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

最後のコマンドは、アカウントを一切持たずに公開エンドポイントを通じてメインネット上のPayPal USDを読み取り、その8つのトークン拡張機能と、それぞれがアセットを保有する人にとって何を意味するかを表示します。

なぜ必要か

Token Extensionsミントは、残高には表示されない権限を持つことができます。永続デリゲートは、発行者が任意のアカウントからトークンを移動またはバーンすることを可能にします。トランスファーフックは、すべてのトランスファーで他人のプログラムを実行します。トランスファー手数料は、受取人が送信された額よりも少なく受け取ることを意味します。デフォルトで凍結されたアカウント状態は、トークンを受け取ることがそれを移動できることと同じではないことを意味します。

これらのいずれも隠されてはいません——チェーン上、ミントアカウント内にあり、誰でもデコード可能です。ただ、ほとんどの人がボタンを押すものによって読まれていないだけです。

このキットはそれを読み取り、保有者が理解できる一文でその意味を説明し、そのいずれもスコアに圧縮することを拒否します。ここにレーティングはなく、ポリシーエンジンが返せる最良の判定はNO_KNOWN_BLOCKERです。

Related MCP server: Solana Debug MCP

3つのツール

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

何に答えるか

ネットワークにアクセスするか

inspect_solana_mint

このアセットは何か、そしてその発行者は保有者に何ができるか

はい、1回の読み取り

preflight_solana_action

この正確なトランスファーは何を行うか、そしてポリシーはそれをどう判断するか

はい、1回の読み取り

verify_solana_receipt

このレシートは完全か、誰が署名したか、そしてSolanaに関するものか

いいえ——完全にローカル

それぞれは、型付けされたSDK呼び出し、MCPツール、CLIの3つの方法で利用可能です。

レイアウト

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/はコピーではありません。これらはryntra.ioが実行しているのと同じモジュールであり、パスをそのままに抽出されています——そのため、このキットからの結果と製品からの結果は同じコードから得られ、それを破る抽出は自身のテストに失敗します。lib/stellar/evidence.tsがここにあるのも同じ理由であり、それ以外の理由はありません:エビデンスエンベロープはチェーンに依存せず、1つの実装を出荷することは、ドリフトするコピーを出荷するよりも優れています。lib/solana/evidence.tsは、あなたがそれに遭遇した場所でそのことを述べています。

設計ルールとその代償

すべての事実は、それがどのように知られているかを伴います。 ONCHAIN_VERIFIED、DECLARED、DERIVED、CONFLICTING、UNKNOWN、UNSUPPORTED。ソースのない値は、ここでは値ではありません。その代償は冗長性であり、それだけの価値があります:発行者の自身のマーケティングと台帳の読み取りは、決して同じバッジを着用してはなりません。

文はスロットではなく設定を説明します。 すべてゼロのプログラムIDを持つTransferHookを搭載したミントにはフックはインストールされていません——パスポートはそれを述べ、誰がインストールできるかを述べます。一般的な文は、最も検査されているToken Extensionsミントに対して誤りだったでしょう。

金額は文字列としての生の基本単位です。 64ビットの金額はJavaScriptの数値では保持できず、損失のある金額は誤った金額です。値のパス上に小数点は一切ありません。

セマンティクスが書かれていない拡張機能でもレンダリングされ、フラグが付けられ、その生の種類が表示されます。デコードされた事実にきれいな文がなくても、それは依然として事実です。それを隠すことは嘘になります。

何もスローしません。 拒否はコードと理由を持つ値です——ACCOUNT_NOT_FOUND、NOT_A_MINT、DECODE_FAILED。「答えがない」と「この答え」は似ていてはなりません。

リトライはトランスポートをカバーし、答えをカバーしません。 パースされたレスポンスは、「アカウントなし」を含めてそのまま返されます。なぜなら、再問い合わせは事実を変えないからです。

レシート

Ryntra Outcome Receiptは、すでに発生したことの観測結果です——決して指示ではなく、Ryntraがそれを実行したという証明でもありません。verify_solana_receiptは、レシート自身のバイトから両方のハッシュを再計算し、レシートが保持する鍵に対してEd25519署名をチェックします。4つの軸があり、それぞれ個別に報告されます:

  • スキーマ — これがそもそもレシートの形状かどうか;

  • 完全性 — 両方のハッシュが再計算されるかどうか;

  • 発行者 — 署名は有効か、そしてtrustedPublicKeysを渡した場合のみ、その鍵はあなたが信頼するものかどうか;

  • バインディング — レジストリピンがSolanaアダプターを指定しているかどうか。

「誰かによって署名された」は「Ryntraによって署名された」とは異なり、この2つを同一視することは、その軸が防止しようとしている誤りです。lib/solana/fixtures/receipt-*.jsonは、これに対して実行できる実際のアーティファクトであり、1文字だけ編集された署名済みのものも含まれています。

信頼境界

  • 非カストディアルかつ鍵不要。 鍵は保持、読み取り、派生、要求されません。署名パスはなく、境界ゲートはそれが現れた場合にビルドを失敗させます。

  • 何も実行されません。 トランザクションは構築も送信もされません。

  • 判定は安全性の判断ではありません。 それは、呼び出し元が宣言したポリシーの下で既知のブロッカーがないことを報告し、判定の語彙には安全性のための単語はありません。

  • エンドポイントはオペレーターの選択です。 ツールやSDK呼び出しは、呼び出し元からURLを受け取りません。プロバイダーエンドポイントはRYNTRA_SOLANA_RPC_MAINNETとRYNTRA_SOLANA_RPC_DEVNETから取得され、パブリックデフォルトはアカウントなしで動作します。

  • ソース配布。 ルートパッケージはprivateであるため、誤ったnpm publishは拒否されます。npmパッケージは主張されていません。

リンク

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides read-only access to Solana on-chain data, enabling natural language queries for wallet balances, token holdings, prices, transactions, and more via MCP-compatible clients.
    8
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables read-only on-chain analysis to spot trending and new memecoin pools, evaluate rug risk, and surface early buyer wallets across Solana, Base, and Ethereum.
    5
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only Solana wallet intelligence for evidence-first copy-trading research, enabling exact wallet activity, parsed swaps, transaction evidence, current positions, token snapshots, source-vs-copy comparisons, watchlist scans, and partial Odin-rule classification.
    -