Open Source · MIT Licensed · v1.0 Coming Soon

Take your business company product idea team service business
on-chain in minutes.
not months.

Deploy pre-audited contracts to your own chain, and go live the same day, no more months of delay for integrations, no platform lock-in.

ankara — bash
$ npm install @ankarachain/sdk
✓ Added 1 package, audited 342 packages in 2s
$ npx ankara init my-farmland-dapp
✓ Project initialized — polygon-amoy configured
✓ Templates available: farmland, commodity, real-estate
$ npx ankara deploy --template farmland --network polygon-amoy
✓ FarmlandToken deployed: 0x4Ac9...dB2F
✓ AssetRegistry linked — ready to mint
$

Not a platform.
It's Infrastructure.

Ankara Chain sits between raw blockchain protocols and your product. Plug it in the same way you'd plug Stripe for payments — and keep full control of your business logic.

ARCHITECTURE STACK
Blockchain Protocol
Ethereum · Polygon · Stellar · Celo · BNB
Protocol
Ankara Chain SDK
Smart Contracts · APIs · CLI · Templates
Cranebolt
Your Application
Business logic · UX · Compliance decisions
You
End Users & Investors
Farmers · Businesses · Diaspora investors
Users
🔌
Plug in, not lock in

Import @ankarachain/sdk into your existing Node.js or React app. No platform dependency. Full chain custody stays with you.

🌍
Built for African context

Asset schemas for farmland, commodities, and receivables. Identity hooks for BVN, NIN, Huduma Namba, and Ghana Card — not retrofitted from European standards.

⚖️
Compliance hooks, not compliance

Ankara Chain provides the interfaces. You plug in your KYC provider — Smile Identity, Persona, or custom — without redeploying core contracts.

🔓
Open core, enterprise layer

Smart contracts and SDK core are MIT licensed. Dashboard, regulatory compliance modules, and audit reporting are paid enterprise tiers. Like Terraform, but for RWA.

The problems are already
happening around you.

Seven of them are below, pulled from real situations happening in West African markets right now. Read each one for what it actually is: a product nobody's built yet, sitting there waiting. Might as well be you.

Who do you actually trust with $8,000?

For Amaka, it's her uncle. Not the builder — she's never met the builder, she found him through someone who knows someone back in Owerri. Her uncle is the one who drives out to the site every other week, the one whose word she'll believe over a WhatsApp photo any day of the week. But her uncle isn't a lawyer, isn't a contractor, and can't be there every single day. He's trusted, not qualified, and those have never been the same thing. So the money still leaves London before the wall goes up. Sometimes long before.

Here's the product a developer can see in this: a company whose entire job is walking the site on camera, with a lot more to lose from lying than a relative doing a favor — bonded, insured, the kind of outfit that can't afford to fake a foundation. Amaka still finds her own builder. She just names that company as the escrow's arbiter instead of leaving everything to one person's word. They visit at each stage, timestamp the photos, and send them to her before she has to approve anything. If she and the contractor ever disagree, it's that company — or the lawyer they keep on retainer — who actually settles it, not a family argument three thousand miles apart.

// Amaka still finds her own builder — a verification company replaces her uncle as the check
const escrow = await tokenFactory.deployEscrow({ payer: amaka, payee: contractor, token: usdc,
  arbiter: siteProofCo,  // bonded, licensed — answers for it if they certify falsely
  milestones: [{ amount: 2400n }, { amount: 3200n }, { amount: 2400n }] }); // foundation, roofing, finishing
await escrow.fund(0);              // Amaka funds the foundation stage
await escrow.markDelivered(0);     // the contractor flags it done
await escrow.approveMilestone(0);  // she approves — after SiteProof's photos, not a phone call
MilestoneEscrow
Everyone already has "a guy" for changing money.

Ask anyone who sends money into Ghana regularly and they'll tell you about their guy — someone at the market, or a cousin's friend, who gives a better rate than the bank and turns it around the same day. Nobody picked this because it's safe. They picked it because the bank is slower, more expensive, and asks more questions than the guy at the market ever does. It works, mostly, right up until the one week it doesn't, and there's nobody left to call.

The product here is the thing that replaces "the guy" outright, not just a faster version of him: an app that checks the rate across every licensed anchor operating in Ghana before it moves a single cedi, settles straight to a mobile money wallet, and hands both sides a receipt neither has to take on faith. Nobody has to find a guy, vet a guy, or wonder if this is the week he's not answering his phone.

// Compare licensed anchors before moving anything — not whichever changer is at the market
const cowrie = RampManager.connectAnchor('cowrie.exchange', signer);
const mykobo = RampManager.connectAnchor('mykobo.co', signer);
const [q1, q2] = await Promise.all([
  cowrie.getQuote({ direction: 'off-ramp', tokenAmount: 300n, fiatCurrency: 'GHS' }),
  mykobo.getQuote({ direction: 'off-ramp', tokenAmount: 300n, fiatCurrency: 'GHS' }),
]);
const best = q1.exchangeRate > q2.exchangeRate ? cowrie : mykobo;
await best.initiateOffRamp({ tokenAmount: 300n, fiatCurrency: 'GHS', recipientMobileMoney }); // clears in minutes
RampSettlement · SEP-24
The warehouse manager is honest. That's not the same as a record.

Everyone near Ibadan knows which warehouse to use, and it's not because of a certificate on the wall — it's because the man who runs it hasn't shorted anyone on weight in fifteen years. That reputation is real, and it's earned. It's also the only proof that exists that your maize is actually sitting in there. If he retires, has a bad year, or a dispute ever needs proving to someone outside the community, there's nothing written down that would hold up anywhere else.

The business a developer could build isn't the token — it's the network he's currently the only member of. Onboard a dozen warehouses across the region, send an independent inspector to verify grade and weight before any receipt gets minted, and suddenly a buyer in Lagos trusts a receipt from a warehouse they've never heard of, because it was checked the same way, by the same standard, as the one they have.

// Your inspector app verifies the batch first — not just the warehouse's own scale
const inspection = await inspectorApp.verifyBatch({ warehouseId: 'IB-014', gradeClaimed: 'A', weightClaimed: 12_000 });
const receipt = await tokenFactory.deployCommodity({
  name: 'Ibadan Maize Batch 14', symbol: 'IBM14', assetId: 'NG-IB-014', countryCode: 'NG',
  metadata: { ...inspection }, // the receipt carries the inspector's numbers, not his
});
const { loanId } = await vault.openLoan(receipt.tokenAddress, 12_000n, 5_760n); // a lender three states away is comfortable
CommodityReceiptToken
Nobody invests in a farm. They invest in the chairwoman.

The cocoa cooperative outside Kumasi has raised planting money every season for longer than most of its members have been farming, because everyone trusts the woman who's run it for twenty years and has never once gone quiet with the fertilizer fund. That trust is real. It just doesn't travel well. A relative in London wiring $200 has to trust a phone call, a photo, and a story that's already passed through two cousins by the time it reaches her.

The product opportunity isn't the token — it's the proof layer around it. A developer could send a field agent to the farm every season, confirm the crop is actually growing the way it's supposed to, and push that update to every investor holding the token automatically. The chairwoman doesn't lose her role or her reputation. She gets backed by a photo and a GPS pin instead of having to be believed on twenty years of word alone.

// The cooperative's land, on record once — every future backer reads it directly
const land = await tokenFactory.deployFarmland({
  name: 'Kumasi Cocoa Co-op', symbol: 'KCC', assetId: 'GH-KUM-014', countryCode: 'GH', metadata,
});
// Your field-agent app logs the season's photos and GPS off-chain, then updates the on-chain value
await registry.updateValuation(verifiedValuationUSD); // every KCC holder sees the same checked number
FarmlandToken
The bank said no. Oga said yes — for 30% a month.

A garment manufacturer in Kano lands the order that's supposed to change the business, and the payment terms that come with it: net-60. No bank will lend against an invoice from a first-time buyer with no credit file, so the only real offer comes from a man in the market everyone just calls Oga, whose rate is whatever he decides it is that week. Everyone in that market knows someone who took the deal anyway, because there wasn't another one.

The real product here is the phone call most investors would never think to make themselves: ring the retailer directly, confirm the order is real and undisputed, before the invoice ever gets listed. That single verification is worth more to an investor's confidence than any rate Oga could quote, and it's a service a developer builds once and runs across every invoice on the platform — not just this one.

// Your verification service confirms the order with the retailer before listing it
const confirmed = await verifierApp.confirmInvoice({ retailer: 'LagosMart', amount: 12_000_000n });
const invoice = await tokenFactory.deployInvoice({
  name: 'Kano Textile Order 0472', symbol: 'KTO', assetId: 'NG-KN-0472', countryCode: 'NG', metadata,
});
// an investor buys in only after seeing that confirmation — cash lands this week, not day 60
await registry.markRepaid(); // retailer pays on day 60 — investor is settled instantly
InvoiceToken
The "sponsor" isn't a bank. He acts like your partner for life.

A licensed small-scale gold operation in Ashanti Region has the permit, the land, and the gold coming out of the ground — everything a lender should want to see. What it doesn't have is anyone who'll treat that as collateral. So expansion money comes from a sponsor: an informal financier who fronts the cash for equipment and, in return, quietly takes a cut of every ounce for as long as he decides the debt isn't settled. Nobody else ever gets to check his math.

Tokenizing the royalty isn't the whole opportunity — verifying the number it's paid on is. A developer could build an independent auditing service that checks the concession's actual output each quarter against what's reported, so investors aren't trusting the operation's math any more than they trusted the sponsor's. Same royalty rate, but now the figure it's calculated from comes from someone with nothing riding on which way it comes out.

const rights = await tokenFactory.deployMiningRights({
  name: 'Ashanti Gold Concession 7', symbol: 'AGC7', assetId: 'GH-ASH-007', countryCode: 'GH', metadata,
});
// Your independent auditor verifies the quarter's actual output — not the operator's own figure
const verifiedValueUSD = await auditorApp.verifyExtraction({ concession: 'AGC7', quarter: 'Q3-2026' });
await registry.declareRoyalty(verifiedValueUSD); // every holder paid on the audited number, on-chain
MiningRightsToken
This time, we're the ones who have to earn the trust.

A reforestation project in the Sahel does real, measurable work, and still fetches a worse price than a similar project in Europe — because international buyers have been burned before by carbon credits that got quietly resold, or never really existed. The project didn't do anything wrong. It's paying for someone else's fraud, because there's historically been no way for a buyer three thousand miles away to tell the difference.

The fundable business here isn't the credit — it's the measurement underneath it. Satellite imagery or a drone flyover confirming the trees are actually there and growing, feeding directly into how many credits the project is allowed to mint. That's the difference between a buyer taking the project's word for it and a buyer checking a number nobody at the project controls.

// Satellite/drone MRV confirms this period's sequestration — not a self-report
const verifiedTons = await mrvApp.verifySequestration({ project: 'NE-SAH-026', period: 'H1-2026' });
const credits = await tokenFactory.deployCarbonCredit({
  name: 'Sahel Reforestation 2026', symbol: 'SRF26', assetId: 'NE-SAH-026', countryCode: 'NE', metadata,
});
await registry.retire(verifiedTons, buyer, 'offsetting Q3 emissions'); // burned — can't be resold
CarbonCreditToken

None of these seven people know each other, but the pattern's the same: someone is quietly carrying trust that should be shared, not memorized. Every fix above is a shipped contract, not a concept — which means the app you build on top of it doesn't need a dedicated blockchain engineer on the team. It needs you, and the SDK you already have.

African asset classes,
natively on-chain.

Purpose-built smart contract templates for the asset classes that matter most across African markets — not generic token wrappers, and live on both EVM chains and Stellar.

🌾
Farmland

Tokenize agricultural land with GPS coordinates, soil classification, irrigation data, and title document hashes linked to IPFS.

FarmlandToken
🌽
Commodity Receipts

On-chain warehouse receipts for cocoa, coffee, maize, and cotton — with inspection reports, grade classification, and expiry tracking.

CommodityReceiptToken
🏢
Real Estate

Fractional property ownership tokens for Lagos, Nairobi, Accra, and Cape Town markets. ERC-20 fungible shares or ERC-721 unique parcels.

RealEstateToken.sol
📄
Invoices & Receivables

Trade finance on-chain. Tokenize invoices with face value, discount rates, due dates, and debtor references for financing workflows.

InvoiceToken.sol
🌱
Carbon Credits

Verified emission reduction units with provenance, verification body reference, and retirement tracking baked into the token standard.

CarbonCreditToken.sol
⛏️
Mining Rights

Tokenize mineral rights and extraction licenses with jurisdiction metadata, license expiry, and royalty distribution hooks.

MiningRightsToken.sol

You have the tools
What will you build?

From diaspora escrow to collateralized lending to anchor-settled remittance — eight capabilities live in the SDK today.

Everything you need.
Nothing you don't.

Six core modules — all open source — plus enterprise layers for compliance, dashboards, and reporting.

🏭
Token Factory
Deploy RWA tokens from templates
● MIT
📋
Asset Registry
On-chain metadata & lifecycle
● MIT
Transfer Engine
Permissioned token transfers
● MIT
🔐
Identity Hooks
Pluggable KYC interface
● MIT
🔗
Multi-Chain Adapter
EVM + Stellar unified API
● MIT
📊
Enterprise Dashboard
Web UI + compliance modules
★ Enterprise
🏭
Token Factory
Deploy ERC-20, ERC-721, or ERC-1155 tokens from a single CLI command

The Token Factory deploys UUPS-upgradeable smart contract templates for every African asset class as lightweight ERC-1967 proxies. Configure via JSON, deploy in seconds — no Solidity knowledge required.

Fungible (ERC-20) — 6 templates for fractional ownership shares
Non-fungible (ERC-721) — 4 templates for unique asset records
Multi-token (ERC-1155) — warehouse batches and multi-asset pool vaults
Configurable templates via ankara.config.json
Mint, burn, pause, and role-based access on every template
📋
Asset Registry
Standard on-chain metadata schema for African asset classes

Links every token to its real-world asset. Defines a standardized metadata schema with IPFS/Arweave document linking, GPS coordinates, valuations, and full lifecycle management.

5-stage lifecycle: Draft → Active → Suspended → Redeemed → Expired
IPFS / Arweave document linking with hash verification
On-chain event emission for every state transition
Versioned metadata updates — fully auditable history
ERC-1155 batch minting — up to 50 token IDs per transaction
Transfer Engine
Identity-gated transfers without modifying core contracts

Every mint, burn, and transfer routes through a pre-transfer hook that checks the pluggable identity verifier on both sender and receiver — enforced at the contract level, not the app level.

Pre-transfer hooks — enforce KYC verification on every transfer when a verifier is set
Emergency pause halts all transfers, mints, and burns instantly
Milestone Escrow — tranche-based diaspora payments, see Use Cases above
ERC-1155 batch mint/burn for warehouse and pool operations
Full event log: sender, receiver, amount, timestamp, asset ID
🔐
Identity Hooks
Bring your own KYC provider — BVN, NIN, Smile Identity, or custom

Ankara Chain defines the IIdentityVerifier interface. You connect your chosen provider — without redeploying core asset contracts. African identity primitives built in.

Standard interface: verifyIdentity() · revokeIdentity() · isVerified()
Ships today: WhitelistVerifier reference implementation for testnet
Roadmap: Smile Identity integration for Nigeria BVN/NIN, Ghana Card, Kenya Huduma Namba
Swap providers without redeploying asset contracts
Bring your own KYC provider — implement the interface, plug it in
🔗
Multi-Chain Adapter
One API across four EVM chains and Stellar Soroban

Deploy to Ethereum, Polygon, BNB Chain, Celo, or Stellar without rewriting integration code — every template, factory, escrow, ramp, and asset-registry operation is available on both chain families behind the same IAdapter TypeScript interface.

Unified EVMAdapter API across Ethereum, Polygon, BNB Chain, and Celo
StellarAdapter for Soroban — same interface, same feature set, no capability gaps
Chain config via ankara.config.json or a custom RPC URL
Built on ethers.js v6 (EVM) and the Stellar SDK (Soroban) — full type safety end to end
📊
Enterprise Layer
Dashboard · Compliance · Reporting — building now, from $299/month

The enterprise tier will add a full web dashboard for asset management, pre-built African regulatory compliance modules, and audit-grade reporting — all maintained and updated as regulations evolve. Currently in active development; join the waitlist below.

Web Dashboard — asset management, monitoring, analytics
Nigerian ISA 2025 compliance module — helps align with ISA 2025, doesn't replace legal counsel
Ghana/Kenya/SA modules — further out on the roadmap
Audit Trail — regulatory-grade export and reporting
BVN/NIN integration — Smile Identity-backed Nigerian identity hooks

From npm install
to mainnet in a day.

Designed for developers who've never touched blockchain before. Full testnet token in 30 minutes — no Solidity or Rust required.

terminal
# Install the SDK
npm install @ankarachain/sdk

# Scaffold a new project
npx ankara init my-rwa-project

# Deploy the on-chain TokenFactory (once per network)
npx ankara deploy-factory --network polygon-amoy
View as
01
Install
Add Ankara Chain to your project with a single command.
npm install @ankarachain/sdk
02
Initialize Project
Scaffold your project with the interactive setup wizard.
npx ankara init my-project
03
Configure
ankara.config.json holds your network and factory address, written automatically by init and deploy-factory.
04
Deploy Contracts
Deploy upgradeable smart contracts to testnet in seconds — on EVM or Stellar.
npx ankara deploy --template farmland
05
Mint Your First Token
Register an asset and mint fractional shares to investors.
npx ankara mint

Open source core.
Enterprise power.

The HashiCorp model for African RWA. Build for free. Scale with us.

Open Source
Core SDK
Free
MIT License · Always free
  • Token Factory (all templates)
  • Asset Registry
  • Transfer Engine
  • Identity Hooks Interface
  • Multi-Chain Adapter
  • Milestone Escrow
  • CLI Tools
  • React Hooks
  • Enterprise Dashboard
  • Compliance Modules
Get Started Free
Add-ons · With Dashboard
Compliance Modules
$199–$299/mo
Per module · Full suite $799/mo
  • BVN/NIN Identity Hook — $199/mo
  • Nigerian ISA 2025 Module — $299/mo
  • Audit Trail & Reporting — $199/mo
  • Full Enterprise Suite — $799/mo
  • Ghana / Kenya / SA modules — further out on the roadmap
Talk to Sales

A flat protocol fee applies per contract deployment via TokenFactory — currently $0 on testnet.

Built by Africa.
For Africa.

We're building the developer ecosystem, not just the tool. Grants, hackathons, university partnerships, and a public roadmap.

6-Month Targets
500
GitHub Stars
1,000
npm Weekly Downloads
10
Projects Built on SDK
12-Month Targets
2,000
GitHub Stars
$10M+
Asset Value Tokenized
10
Enterprise Customers
Community
Join the ecosystem. Grants available for developers building on Ankara Chain.
🌍 ETHSafari 🇳🇬 Web3Lagos 💻 Devfest Nigeria
SUPPORTED COUNTRIES
🇳🇬 Nigeria 🇬🇭 Ghana 🇰🇪 Kenya 🇿🇦 South Africa

Get your product on
the blockchain
in just 30 minutes.

No blockchain expertise required. Open source. Built for you and the workflows you already know.

MIT Licensed No vendor lock-in Built on OpenZeppelin v5 Testnet faucets included