Skip to main content
The Manowar protocol runs natively on Solana as four programs. No Anchor, no IDL — just solana-program and borsh. They mirror the same surfaces as the EVM contracts: ERC-8004 (identity, reputation, validation) and ERC-7401-style composition (workflows), rebuilt with Solana idioms instead of ported instruction-by-instruction. Where the EVM suite deploys one contract per feature, the Solana side consolidates: identity absorbs cloning and warping, and a single market program carries workflows, licensing, RFA escrow, leases, royalties, and payments.

The four programs

A shared Rust crate, manowar, holds everything the programs agree on: PDA seeds, the account serialization format, one error enum, fixed-point math, and a hand-rolled SPL Token transfer CPI.

The “ABI”

There is no IDL to fetch. An instruction’s data is a borsh-serialized enum: the first byte is the variant’s ordinal (0, 1, 2… in declaration order), followed by the variant’s fields in borsh order.
Borsh rules you need: integers are little-endian, bool is one byte, String/Vec are a u32 length prefix then the payload, Pubkey and [u8; 32] are 32 inline bytes. Every program page lists its instructions with their tag, arguments, and the accounts they expect — accounts are passed the usual Solana way, as an ordered list. Everything shared about accounts — the length-prefixed layout, the PDA conventions, the Agent struct, error codes, limits — lives once in Accounts & Encoding.

Architecture

All four programs agree on one convention: an agent is a PDA of the identity program at [b"agent", agent_id_le]. Reputation, validation, and market read those accounts cross-program (owner-checked — no CPI). The one real CPI between programs is market → identity, to consume or revoke a license when an agent joins or leaves a workflow, signed by market’s market-authority PDA. The only other CPI in the suite is SPL Token Transfer (license fees, RFA escrow, lease splits).

Build with the SDK

You don’t need to hand-roll any of this. The TypeScript SDK ships PDA helpers, instruction encoders, account decoders, and ready-made builders for the common write paths:
Builders exist for identity.mint, identity.warp, market.mintWorkflow, and market.createRfa. For everything else, the SDK exports the raw encoders (encodeIdentityInstruction, encodeMarketInstruction), every PDA helper (identityPdas, marketPdas, reputationPdas, validationPdas), and typed account decoders — see Accounts & Encoding for those. The main write paths are also exposed as HTTP build endpoints (solana_identity_mint_build, solana_market_mint_workflow_build) if your signer lives elsewhere.

Where to next

Identity

Mint, clone, warp, licensing — the agent registry.

Reputation

Fixed-point feedback, revocation, responses.

Validation

Validation requests and validator responses.

Market

Workflows, RFA escrow, leases, royalties, splits.

Accounts & Encoding

The shared layout: borsh, seeds, errors, limits.

EVM ↔ Solana Parity

How the two implementations map onto each other.