Skip to main content
AVOID.NET
← AVOID.NET

Developers

[M2M]

Programmatic access to risk intelligence for autonomous agents, algorithmic traders, on-chain programs, and edge devices.

Everything below is additive — the existing REST API and human-facing site are unchanged. These layers serve machines that need binary transport, sub-millisecond evaluation, local cryptographic verification, and programmatic billing.

Access paths

REST / JSON[LIVE]
~200ms

Existing API. Human-readable, browser-friendly. Works today.

GET /api/v1/investigations/[slug]
gRPC / Protobuf[COMING SOON]
~50ms

Binary transport over h2. Server-streaming for real-time updates.

grpc.avoid.net:443
On-chain read[COMING SOON]
~80ms

Read TrustState PDA directly from Solana. Zero API calls, zero trust.

getAccountInfo(trust_pda)
Quantized fast-path[COMING SOON]
<1us

8-byte bitmask cached locally. Bitwise evaluation in control loops.

state.quantized[0] < 40

Quantized trust state — 8 bytes

The full investigation state compressed into 8 bytes for bitwise evaluation. A robot can make a block/allow decision with a few AND/CMP instructions, no parsing, no network.

ByteField
0trust_score
1confidence
2severity_flags
3evidence_flags
4submission_count
5source_tiers
6-7version_num
Example: should a trading bot block this entity?
// 8 bytes from TrustState PDA or API response
let state: [u8; 8] = account.quantized;

let block = state[0] < 40           // trust score < 20
         && state[1] > 140          // confidence > 0.70
         && (state[2] & 0x01) != 0  // has critical section
         && (state[2] & 0x10) != 0; // human-reviewed

Cryptographic verification

Every editorial decision is hashed and included in a per-entity Merkle tree. You can verify that a specific decision exists in the tree without downloading the full history — locally, offline, in microseconds.

Verification flow:
1. GET /api/v1/investigations/:slug/proof?event_id=X
2. verify_membership(leaf, proof, root) — local, <1us
3. getAccountInfo(trust_pda).merkle_root == root — optional on-chain check
Three independent verification paths
A. Per-event
hash → SPL Memo tx → Solana
B. Aggregate (cheapest)
hash → Merkle proof → PDA → Solana
C. Aggregate (memo)
hash → Merkle proof → root memo → Solana

Authentication

No dashboard, no email, no human. Register with an ed25519 signature from your Solana keypair.

[01]
Generate keypair
solana-keygen new -o bot.json
[02]
Sign registration message
sign("AVOID.NET|register|<pubkey>|<unix_ts>")
[03]
Register
POST /api/v1/keys { pubkey, signature, timestamp }
[04]
Use on every request
Authorization: Bearer avoid_...

Metering

Free
1,000 requests/day · 0

No deposit required. Rate-limited.

Metered
Unlimited · Pay-per-request in SOL

Deposit to on-chain escrow. Settled periodically.

OperationLamports
ListInvestigations1,000
GetInvestigation2,000
SubmitEvidence5,000
GetMembershipProof3,000
SubscribeTrustUpdates/hr10,000
SubscribeDecisions/hr10,000

Escrow balance visible in every response header (X-Credits-Remaining) and verifiable on-chain via getAccountInfo.

Protocol buffers

Typed binary schema for all investigation data. Protobuf responses are 4-6x smaller than JSON. Quantized-only responses are 8 bytes.

JSON (REST)
12-18 KB
Protobuf (gRPC)
2-4 KB
Quantized
8 B
Schema files
proto/avoid/v1/common.protoproto/avoid/v1/investigations.protoproto/avoid/v1/submissions.protoproto/avoid/v1/decisions.protoproto/avoid/v1/proofs.protoproto/avoid/v1/service.proto

gRPC service

ListInvestigationsunary[SOON]
GetInvestigationunary[SOON]
SubmitEvidenceunary[SOON]
GetMembershipProofunary[SOON]
GetBatchProofsunary[SOON]
SubscribeTrustUpdatesserver-stream[SOON]
SubscribeDecisionsserver-stream[SOON]
WebSocket fallback at wss://grpc.avoid.net/ws for HTTP-only clients.

Solana programs

avoid-trust[COMING SOON]

On-chain TrustState PDA per entity

  • ·8-byte quantized state
  • ·Merkle root + leaf count
  • ·Monotonic sequence check
  • ·Zero-CU reads via getAccountInfo
avoid-meter[COMING SOON]

Escrow-based API metering

  • ·SOL deposit / withdraw
  • ·Authority-gated debit
  • ·On-chain consumed <= deposited
  • ·Periodic batch settlement

Autonomous bot lifecycle

End-to-end setup without a human in the loop.

[01]Generate Solana keypair
[02]Fund keypair (faucet on devnet, transfer on mainnet)
[03]Sign registration message, POST /api/v1/keys
[04]Create escrow: avoid-meter::deposit(lamports)
[05]Query via gRPC or REST, stream updates, verify proofs
[06]Monitor balance via X-Credits-Remaining or getAccountInfo
[07]Top up: avoid-meter::deposit(more)
[08]Wind down: avoid-meter::withdraw(remaining)

M2M risk intelligence. Binary transport. On-chain verification. Zero trust required.