CoCo Blockchain

Crypto that works for real businesses.
Near-zero fees. Real-time inventory. No complexity.

494 tests Passing 105+ Extrinsics 18 Pallets On-Chain Voting BETA

Overview

The French Butcher Problem: A butcher in France pays $9,000/year in card processing fees at 5% per transaction — that's half his monthly rent, gone to Visa and Mastercard. Small merchants everywhere are trapped: accept cards and bleed margin, or refuse cards and lose customers. Crypto should fix this. Instead it adds confusion: wallets, gas fees, seed phrases, exchanges. CoCo exists to make crypto invisible — a payment rail that merchants don't have to think about, with fees near zero, inventory tracked in real time, and barcode scanning that just works at checkout.

CoCo is a Substrate-based blockchain protocol purpose-built for real businesses. It creates a programmable economic layer where merchants can issue tokens, track inventory, manage digital rights, and accept payments — all without understanding blockchain. The system hides behind familiar tools: a barcode scanner, a dashboard, a POS terminal.

Any organization can issue custom programmable tokens — loyalty points, employee compensation, asset-backed credits, or micro-finance instruments — that can be exchanged across a unified ecosystem with near-zero fees (0% internal, 0.25% external vs. 2-5% card networks). The protocol extends this with a Product Rights Management (PRM) system: physical products are tokenized as NFTs carrying DRM flags that enable pay-as-you-go, lease-to-own, subscriptions, and microtransaction-based feature unlocks.

Barcode scanning, real-time inventory analysis, and POS integration provide the physical-world bridge. The goal is not to build a crypto platform — it's to build a better payment and inventory system that happens to run on a blockchain.

Three-Layer Architecture

Layer 1
Programmable Economy
Tokens · Exchange · Yield
Layer 2
Product Rights Mgmt
DRM · Micro-finance · Locks
Layer 3
Physical Bridge
Barcodes · Realtime Inventory · POS

Key Differentiators (v0.13)

CapabilityCoCoTraditional
Payment Fees (retail)0.25%Visa/MC 2-5%
B2B / Supplier Payment0% internal2-3% card or $25 wire
Settlement Time6 seconds1-3 business days
ChargebacksNoneCostly & frequent
Programmable TokensCustom sub-tokens + sub-token AMMSiloed loyalty programs
DRM EnforcementOn-chain lock/unlock/repossessNo enforcement mechanism
Micro-financePAYG, lease-to-own, subscriptions, rentalsCredit cards (2-3% fees)
Supply Chain + InventoryReal-time, on-chain, auto-reorder from suppliersSiloed, no cross-org data
Inter-Ecosystem Trade0% between any CoCo tokensVisa/Mastercard 2-3%
Merchant ComplexityScan barcode → doneTerminal contract, PCI audit, chargeback risk

Fee Comparison: Retail Payment ($20 purchase)

ProcessorFee on $20Settlement
CoCo$0.056 seconds
Visa / Mastercard$0.50 – $0.901-2 days
MercadoPago QR$0.30 – $0.40Next day
MercadoPago Card$0.80 – $1.00Next day
PayPal$1.19Instant (holds apply)
Stripe$0.881-2 days

Fee Comparison: B2B / Supplier Payment ($1,000 invoice)

MethodFee on $1,000Settlement
CoCo (internal)$0.006 seconds
CoCo (border crossing)$2.506 seconds
Wire Transfer$25 – $50 flat1-3 days
Corporate Credit Card$20 – $30 (2-3%)1-2 days
Paper Check$5 – $10 + float5-10 days
ACH / SEPA~$0.502-3 days

0.25% border fee is still 10-24x cheaper than any card processor. Internal ecosystem movement is 0%. The only thing cheaper is cash — and cash doesn't give you inventory analytics, DRM enforcement, automated supplier ordering, or yield-bearing savings.

Architecture

System Diagram

┌─────────────────────────────────────────────────────────────────────┐
│                      CoCo Blockchain (Substrate)                    │
│                                                                     │
│  ┌────────────────────────────────────────────────────────────┐    │
│  │               Runtime (FRAME) — 18 Pallets                 │    │
│  │                                                             │    │
│  │  ECONOMIC LAYER                                             │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │    │
│  │  │pallet-   │ │pallet-   │ │pallet-   │ │pallet-       │ │    │
│  │  │assets    │ │kyc       │ │rewards   │ │bridge (TRON) │ │    │
│  │  └──────────┘ └──────────┘ └──────────┘ └──────────────┘ │    │
│  │  ┌──────────┐ ┌──────────┐                               │    │
│  │  │pallet-   │ │pallet-   │                               │    │
│  │  │swap      │ │oracle    │                               │    │
│  │  └──────────┘ └──────────┘                               │    │
│  │                                                             │    │
│  │  PRODUCT RIGHTS LAYER                                       │    │
│  │  ┌──────────────────┐ ┌──────────────────┐ ┌────────────┐ │    │
│  │  │pallet-product-nft│ │pallet-           │ │pallet-    │ │    │
│  │  │★ (digital twins) │ │microfinance      │ │rental     │ │    │
│  │  └──────────────────┘ └──────────────────┘ └────────────┘ │    │
│  │  ┌──────────────┐ ┌──────────┐ ┌──────────┐               │    │
│  │  │pallet-       │ │pallet-   │ │pallet-   │               │    │
│  │  │supply-chain  │ │loyalty   │ │dispute   │               │    │
│  │  └──────────────┘ └──────────┘ └──────────┘               │    │
│  │                                                             │    │
│  │  GOVERNANCE ✦ PRIVACY LAYER                                │    │
│  │  ┌──────────┐ ┌────────────────┐                           │    │
│  │  │pallet-   │ │pallet-         │                           │    │
│  │  │voting    │ │shielded-coin   │                           │    │
│  │  │(+union)  │ │(stealth addr)  │                           │    │
│  │  └──────────┘ └────────────────┘                           │    │
│  │                                                             │    │
│  │  System: ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────┐ │    │
│  │          │balances  │ │timestamp │ │sudo      │ │grandpa│ │    │
│  │          └──────────┘ └──────────┘ └──────────┘ └──────┘ │    │
│  └────────────────────────────────────────────────────────────┘    │
│  Consensus: Aura (6s blocks) + Grandpa (fast finality)              │
└────────────────────────────────────────────────────────────────────┘
                          ↕
┌─────────────────────────┼──────────────────────────┐
│                         │                          │
│              ┌──────────▼──────────┐              │
│              │  API Servers        │              │
│              │  barcode/Server     │              │
│              │  website/server.js  │              │
│              └──────────┬──────────┘              │
│                         │                          │
│  ┌─────────────────┐  ┌───────────────────────┐  │
│  │ Web Apps        │  │   Mobile Apps         │  │
│  │ /wallet         │  │   Android Scanner     │  │
│  │ /explorer       │  │   Android Wallet      │  │
│  │ /dashboard      │  └───────────────────────┘  │
│  │ /union-now      │                              │
│  │ /voting         │                              │
│  └─────────────────┘                              │
└──────────────────────────────────────────────────┘

Pallet Reference

Product NFT Pallet — Complete Reference

The core pallet managing the full lifecycle of physical products as digital twins (NFTs). 17 extrinsics (0-16) + 8 DRM extrinsics (17-24), 14 storage maps, 26 events, 43 error codes.

Core Extrinsics (Call Index 0-16)

#ExtrinsicCall IndexAccessDescription
0register_company0KYC userRegister a brand/company
1deactivate_company1OwnerDeactivate own company
2activate_company2OwnerReactivate company
3mint_product3CompanyMint 1 product with GTIN+serial
4batch_mint_products4CompanyMint up to 1000 units
5transfer5OwnerTransfer custody + location
6sell_to_consumer6OwnerRetail sale + warranty
7authenticate_product7MfrMark authentic on-chain
8recall_product8MfrRecall product, block sale
9resolve_recall9MfrClose recall, EndOfLife
10register_product10OwnerAdd to consumer portfolio
11submit_warranty_claim11OwnerFile a warranty claim
12resolve_warranty_claim12MfrApprove/deny claim
13list_for_sale13OwnerList on marketplace
14buy_listing14AnyPurchase listed product
15cancel_listing15SellerRemove listing
16set_fee_config16RootSet fee rates & treasury collector

DRM Extrinsics (Call Index 17-29)

#ExtrinsicCall IndexAccessDescription
17set_drm_config17ManufacturerEnable DRM on a product, set enforcement type
18lock_product18Financing EntityLock product (missed payment, default)
19unlock_product19Financing EntityRestore product access on payment
20unlock_feature20AnyMicrotransaction: unlock single feature for N blocks
21lock_feature21Financing EntityLock a specific feature
22repossess_product22ManufacturerTransfer ownership back on final default
23burn_drm23OwnerPermanently remove DRM (full ownership achieved)
24emergency_drm_override24Emergency AuthTemporary unlock for safety/medical emergencies
25provide_drm_consent25ConsumerConsumer consent at sale for DRM
26revoke_drm_consent26ConsumerConsumer revokes DRM consent
27set_emergency_authority27RootDesignate emergency override accounts
28consumer_break_glass_override28Consumer1-time consumer emergency unlock
29expire_feature29AnyTime-based feature expiry check

DRM States

Unlocked → Licensed → FeatureLocked → FullyLocked → Repossessed → Burned
   ↑          |            |               |             |
   └──────────┴────────────┴───────────────┴─────────────┘
                    (payment restores access)

DRM Use Cases

ModelExampleDRM Flow
Pay-as-you-goHeated seats: $0.50/24hFeatureLocked → unlock_feature(payment) → Timed unlock → Locked on expiry
Lease-to-ownSmartphone: $30/mo × 24Licensed → Each payment → ownership% → Full payment → Burned
SubscriptionPremium audio: $10/moLicensed → Missed payment → FeatureLocked → Payment → Unlocked
Micro-loan$200 loan on $500 phoneFullyLocked → Repayment → Unlocked → Default → Repossessed

Storage Maps

NameKeyValueQuery
CompaniesAccountIdCompanyInfoOption
CompanyCountu32Value
NextProductIdu128Value
Productsu128ProductNFTOption
ProductLookup(GTIN, Serial)u128
Authenticationsu128AuthenticationRecordOption
RecalledProductsu128RecallInfoOption
ConsumerPortfolioAccountIdBoundedVec<u128>Value
WarrantyClaimCountu32Value
WarrantyClaims(u128, u32)WarrantyClaimOption
MarketListingsu128MarketListingOption
FeeConfigFeeConfigurationValue
ProductDRM 🆕u128DRMStatusOption

Key Structs

ProductNFT {
    product_id: u128,
    gtin: BoundedString,         // GTIN-14 (GS1 standard)
    serial_number: BoundedString, // Unit-level serial
    batch_id: BoundedString,
    name: BoundedString,
    category: ProductCategory,
    manufacturer: AccountId,
    manufactured_at: BlockNumber,
    current_owner: AccountId,
    status: ProductStatus,       // InProduction → ... → Sold/EndOfLife
    custody_chain: BoundedVec<CustodyRecord>,
    sale_price: Option<Balance>,
    warranty: Option<WarrantyInfo>,
    drm: Option<DRMStatus>,     // 🆕 v0.5: DRM config, state, features
}

DRMStatus {                     // 🆕 v0.5
    drm_config: DRMConfig { drm_enabled, enforcement_type, ... },
    drm_state: DRMState,        // Unlocked | Licensed | FeatureLocked | FullyLocked | Repossessed | Burned
    features: BoundedVec<FeatureLock>,
    enforcement_history: BoundedVec<EnforcementRecord>,
}

ProductStatus enum:
  InProduction | InTransit | AtDistributor | InStore |
  Sold | ListedForResale | Recalled | ReportedStolen | EndOfLife

RecallInfo {
    recalled_by: AccountId,
    recalled_at: BlockNumber,
    reason: BoundedString,
    action: RecallAction,  // Return | Dispose | Replace | Refund
    is_resolved: bool,
    resolved_at: Option<BlockNumber>,
}

MarketListing {
    seller: AccountId,
    price: Balance,
    listed_at: BlockNumber,
    royalty_percent: Option<u8>,  // Brand royalty on resale
}

KYC Pallet

Manages KYC provider network and user address approvals. Used as a gate for company registration and staking.

Extrinsics

ExtrinsicAccessDescription
add_kyc_providerRootRegister a KYC provider
remove_kyc_providerRootRemove a KYC provider
activate_providerRootReactivate suspended provider
deactivate_providerRootSuspend a provider
approve_addressProviderKYC-approve a user
revoke_approvalProviderRevoke KYC approval

Public Query Functions

  • is_kyc_approved(address) — Check if address is KYC'd and active
  • get_kyc_approval(address) — Get approval details (expiry, provider)
  • is_kyc_provider(account) — Check if account is a KYC provider
  • get_all_approved_addresses() — List all active KYC addresses

Rental Contract Pallet 🆕

Apartment lease agreements with DRM-enforced access control. An apartment is a ProductNFT with DRM — on-time payment unlocks the door, late payment locks it. Security deposits held in escrow, released on completion or dispute.

Extrinsics

#ExtrinsicAccessDescription
0create_agreementLandlordSet terms: rent, deposit, grace period, late fee
1accept_agreementTenantPay deposit + first month → status Active
2pay_rentTenantMonthly payment. Restores DRM unlock if late.
3trigger_lateAnyoneAfter grace period. Locks DRM on property.
4serve_noticeLandlordStart eviction process.
5vacateTenant/LandlordEnd tenancy. Status → Terminated.
6release_depositTenant/LandlordRelease security deposit.

State Machine

Pending → Active → Late → EvictionProcess → Terminated → Completed
            ↑         ↓ (pay rent)               ↓
            └─────────┘                    release_deposit

Use Cases

  • Apartment rentals: monthly rent, security deposit, late fee enforcement
  • Smart apartment integration: DRM on digital door lock, automatic lock on late payment
  • Integration with micro-loans: use CoCo-K for rent payments, earn yield on deposit

Bridge Pallet — TRON

Cross-chain bridge for TRON USDC/USDT interoperability. Wrapped tokens on CoCo backed 1:1 by locked tokens on TRON. Relayer-based verification with replay protection.

Extrinsics

#ExtrinsicAccessDescription
0register_assetRootRegister bridged token (USDC/USDT)
1deactivate_assetRootStop new deposits
2depositRelayerComplete deposit (mint wrapped tokens)
3withdrawAnyInitiate withdrawal (burn wrapped tokens)
4complete_withdrawalRelayerConfirm unlock on source chain
5add_relayerRootAuthorize relayer
6remove_relayerRootRemove relayer
7set_pausedRootEmergency stop

Bridge Flow

TRON → CoCo: User locks USDC/USDT on TRON
             → Relayer detects event
             → Calls bridge.deposit() on CoCo
             → Wrapped tokens minted to recipient

CoCo → TRON: User calls bridge.withdraw() on CoCo
             → Wrapped tokens burned
             → Relayer detects WithdrawalInitiated event
             → Calls unlock_tokens() on TRON contract
             → User receives native tokens on TRON

Supported Assets

AssetTRON AddressCoCo IDDecimals
USDCTEkxiTehnzSmC2eVxARldVjSr9SkoN4ZzR06
USDTTR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t16

Security

  • Replay protection: source_tx_hash checked to prevent double-processing
  • Relayer gating: only authorized relayers can complete deposits/withdrawals
  • Emergency pause: root can halt all bridge operations
  • Relayer Script: scripts/bridge-relayer.js

Rewards Pallet

Treasury-managed yield distribution to KYC-approved stakers. Implements the CoCo-K staking model where real-world asset yield (USDC from T-bills) is distributed proportionally.

Extrinsics

ExtrinsicAccessDescription
set_treasury_managerRootAppoint treasury manager
remove_treasury_managerRootRemove treasury manager
activate_managerRootReactivate manager
deactivate_managerRootSuspend manager
distribute_rewardsManagerDistribute yield to KYC stakers
claim_rewardsStakerClaim pending rewards
stakeKYC userStake CoCo-K tokens
unstakeStakerUnstake tokens
set_distribution_scheduleRootConfigure interval/minimum

Reward Distribution Flow

Off-Chain Treasury (T-bills)
    ↓ Interest earned
Convert to USDC
    ↓ Bridge to CoCo chain
Treasury Manager calls distribute_rewards()
    ↓ Proportional to stake
KYC-Approved Stakers → Pending Rewards
    ↓ claim_rewards()
Withdrawn to staker's wallet

Voting Pallet 🆕

On-chain voting with sub-coin vote tokens. Each election creates a vote token sub-coin via pallet-assets. Tokens minted to shareholders or citizens; casting a ballot burns 1 token. 9 extrinsics, 89 tests, FREE creation.

Extrinsics

#NameAccessDescription
0create_electionSignedFREE — creates sub-coin + election. Supports auto_populate flag for group asset elections.
1mint_vote_tokensSudoBatch-mint vote tokens to recipients (max 100/batch)
2buy_vote_tokensSignedPurchase vote tokens with COCO if token_price > 0
3cast_voteSignedBurn 1 token → record ballot (one per address)
4close_electionSignedClose after end_block passes
5finalize_electionSudoBurn remaining supply, publish final tally
6cancel_electionSudoCancel active election, burn all tokens
7register_candidate 🆕SignedSelf-nominate as candidate for a group asset election (requires ≥1 of the group asset)
8withdraw_candidacy 🆕SignedRemove self from candidate list

Vote Types

TypeWeightUse Case
Democratic1 person = 1 voteNational elections, union votes, community referendums
ShareholderWeighted by sharesBoard elections, merger votes, dividend proposals
Referendum1 person = 1 voteYes/No proposals, constitutional amendments
Open1 person = 1 voteGeneral purpose, multi-option polls

Citizen CSV Upload

POST /api/voting/distribute-shares
Body: { electionId: 0, shareAssetId: 2000, seed: "//Alice" }
→ Auto-mints vote tokens proportional to share coin holdings

Config

ParameterValue
VoteSessionPrice0 (FREE creation)
MaxOptions20 per election
MaxNameLen100 bytes
MaxOptionLen200 bytes
MaxMintPerBatch100 recipients
MaxCandidates20 per group asset

Group Asset Elections 🆕

Any asset holder (≥1 balance) can participate in group elections — perfect for unions, HOAs, DAOs, and national elections.

  • GroupCandidates storage: per-asset candidate registry (up to 20 candidates)
  • register_candidate(group_asset_id, name) — self-nominate with display name
  • withdraw_candidacy(group_asset_id) — remove self from ballot
  • auto_populate flag on create_election — auto-fills ballot from GroupCandidates
  • 23 new tests for auto-populate + group eligibility + multi-group independence
Sub-Coin Integration: Each election's vote token is a real sub-coin (pallet-assets). Companies can use existing share coins as the basis for voting power. POST /api/voting/distribute-shares queries all share coin holders from the chain and auto-mints proportional vote tokens.

Union System

The voting pallet also powers the union system — worker organizations with on-chain membership, dues, and governance. Unions have their own sub-coin (asset_id = union_id + 2000), member registry, and treasury.

#ExtrinsicAccessDescription
9register_unionKYC userRegister union, creates sub-coin (asset_id = union_id + 2000)
10join_unionSignedJoin union, mints 1 union coin
11leave_unionMemberLeave union, burns 1 union coin
12pay_duesMemberCOCO → union treasury
13appoint_delegatePresidentDesignate union delegate
14set_union_leadershipRootSet elected officers
15dissolve_unionRootEmergency dissolve union
16create_fast_union_usaKYC userOne-click USA fast union: KYC + deposit + sub-coin + charter election
17set_union_charterPresidentStore ratified charter hash + URI on-chain

17 Country Templates: US, GB, CA, FR, DE, ES, IT, SE, NO, JP, CL, MX, ZA, AU, AR, BR, UY. Each with legal metadata: min_workers, recognition_process, union_density, protection_rating.

Swap Pallet — Sub-Token AMM

Constant-product AMM (x*y=k) for sub-token trading. CoCo-K hub pools enable any sub-token to trade against the CoCo-K stable asset. Auto-registration creates hub pools on first swap. LP staking with fee rewards.

Extrinsics

#ExtrinsicAccessDescription
0create_poolSignedCreate a new swap pool (token_a, token_b)
1add_liquiditySignedAdd liquidity to pool, receive LP shares
2remove_liquiditySignedRemove liquidity, burn LP shares
3swap_exact_inputSignedSwap exact input amount for minimum output
4swap_exact_outputSignedSwap for exact output amount with maximum input
5set_pool_feeRootSet fee tier for a pool (default 0.25%)

Key Parameters

ParameterValue
Default fee0.25%
Minimum liquidity100 COCO-K
Hub assetCoCo-K (stable asset, asset_id 0)

Oracle Pallet — EUR/USD FX

Provides on-chain EUR/USD exchange rates for multi-currency checkout. Authorized oracles submit signed rate data with timestamps. Rates expire after a configurable period.

Extrinsics

#ExtrinsicAccessDescription
0set_rateOracleSubmit EUR/USD rate with timestamp
1add_oracleRootAuthorize a new oracle provider
2remove_oracleRootRemove an oracle provider

Public Query

  • get_rate() — Current EUR/USD rate (None if expired)
  • convert(amount_eur) — Convert EUR amount to USDC at current rate

Supply Chain Pallet — PO & Delivery

Purchase order automation between companies. Create orders, mark shipped, mark delivered with auto-payment. Payment intents for supplier invoices.

Extrinsics

#ExtrinsicAccessDescription
0create_orderCompanyCreate purchase order with items, total, supplier
1mark_shippedSupplierMark order as shipped with tracking
2mark_deliveredBuyerConfirm delivery — auto-pays supplier
3cancel_orderBuyerCancel order before shipment
4create_payment_intentBuyerCreate payment intent for supplier invoice
5complete_paymentBuyerComplete payment on delivery
6fail_paymentBuyerMark payment as failed

Loyalty Pallet — Cross-Merchant Rewards

Cross-merchant loyalty program system. Merchants create programs, users earn points on purchases, redeem for brand tokens. Referral system with 50 COCO payouts.

Extrinsics

#ExtrinsicAccessDescription
0create_programMerchantCreate loyalty program with earn rate and redemption options
1earn_pointsSignedEarn points on purchase (merchant-signed)
2redeem_pointsConsumerRedeem points for brand tokens or discounts
3create_referralMerchantGenerate referral code (50 COCO payout on signup)
4submit_referralNew userSubmit referral code at registration
5process_referral_payoutMerchantRelease 50 COCO referral bonus

Dispute Pallet — Escrow & Mediation

Time-locked escrow for transactions with mediator-based dispute resolution. Includes refund receipt system with VAT breakdown and CSV settlement reports.

Extrinsics

#ExtrinsicAccessDescription
0create_escrowSignedLock funds in time-bound escrow
1flag_disputeBuyer/SellerFlag a dispute on an escrow
2release_escrowMediator/BothRelease funds to agreed party
3resolve_by_mediatorMediatorMediator resolves with split judgment
4refund_after_timeoutBuyerAuto-refund after escrow timeout
5register_mediatorKYC userRegister as mediator with 10 COCO stake
6slash_mediatorRootSlash mediator stake for misconduct
7issue_refund_receiptMerchantIssue tax-compliant refund receipt with VAT
8claim_refundConsumerClaim refund against receipt

Shielded Coin Pallet — Privacy

Privacy-preserving stealth address system. Users register stealth meta-addresses and receive private payments. Sender generates one-time stealth addresses using Diffie-Hellman key exchange. Only the recipient can detect and claim outputs. Mixer removed May 2026 for regulatory compliance.

Extrinsics

#ExtrinsicAccessDescription
0register_stealth_addressSignedRegister stealth meta-address (spending key + view key)
1transfer_stealthSignedSend private payment to recipient's stealth address
2claim_stealth_outputRecipientDetect and claim incoming stealth payment

Storage

NameKeyValue
StealthMetaAddressesAccountIdStealthMetaAddress
StealthOutputsu64StealthOutput
StealthOutputCounteru64
PalletBalanceBalance

API Reference

The Node.js server at barcode/Server/ provides REST API endpoints for both the POS system and blockchain operations.

Auth & POS Endpoints

MethodEndpointDescription
POST/api/auth/loginUsername + password → JWT token
POST/api/auth/registerCreate new user (admin required)
GET/api/auth/meGet current user from token
POST/api/auth/change-passwordChange password
POST/api/auth/logoutLogout (stateless, logs event)
GET/api/itemsList inventory items
POST/api/itemsAdd inventory item
GET/api/transactionsList POS transactions

Blockchain Onboarding Endpoints

EndpointBlockchain CallKey Parameters
/kyckyc.approveAddressaddress
/registerproductNft.registerCompanyname, seed
/assetassets.create + setMetadataassetId, name, symbol, seed
/mintproductNft.mintProductgtin, serialNumber, batchId, name, category, seed
/mint-batchproductNft.batchMintProductsgtin, batchId, name, category, quantity, seed
/transferproductNft.transferproductId, toAddress, newStatus, lat, lng, desc, action, seed
/saleproductNft.sellToConsumerproductId, consumerAddress, price, warrantyDuration, lat, lng, desc, seed
/authenticateproductNft.authenticateProductproductId, seed
/recallproductNft.recallProductproductId, reason, action, seed
/resolve-recallproductNft.resolveRecallproductId, seed
/register-productproductNft.registerProductproductId, seed
/warranty-claimproductNft.submitWarrantyClaimproductId, description, seed
/resolve-claimproductNft.resolveWarrantyClaimproductId, claimIndex, resolution, seed
/list-for-saleproductNft.listForSaleproductId, price, royaltyPercent, seed
/buy-listingproductNft.buyListingproductId, lat, lng, desc, seed
/cancel-listingproductNft.cancelListingproductId, seed
/set-drm 🆕productNft.setDrmConfigproductId, enforcementType, paymentTokenId, seed
/lock 🆕productNft.lockProductproductId, reason, seed
/unlock 🆕productNft.unlockProductproductId, seed
/unlock-feature 🆕productNft.unlockFeatureproductId, featureId, durationBlocks, seed
/lock-feature 🆕productNft.lockFeatureproductId, featureId, seed
/repossess 🆕productNft.repossessProductproductId, seed
/burn-drm 🆕productNft.burnDrmproductId, seed
/emergency-override 🆕productNft.emergencyDrmOverrideproductId, seed

Bridge Endpoints 🆕

EndpointBlockchain CallAccess
/api/bridge/register-assetbridge.registerAssetRoot
/api/bridge/deactivate-assetbridge.deactivateAssetRoot
/api/bridge/depositbridge.depositRelayer
/api/bridge/withdrawbridge.withdrawAny
/api/bridge/complete-withdrawalbridge.completeWithdrawalRelayer
/api/bridge/add-relayerbridge.addRelayerRoot
/api/bridge/remove-relayerbridge.removeRelayerRoot
/api/bridge/set-pausedbridge.setPausedRoot

Swap Endpoints

EndpointBlockchain CallDescription
/api/swap/create-poolswap.createPoolCreate new AMM pool
/api/swap/add-liquidityswap.addLiquidityAdd liquidity, get LP shares
/api/swap/remove-liquidityswap.removeLiquidityRemove liquidity, burn LP shares
/api/swap/swap-exact-inputswap.swapExactInputSwap exact input for min output
/api/swap/swap-exact-outputswap.swapExactOutputSwap for exact output with max input
/api/swap/poolsqueryList all swap pools
/api/swap/pool/:idqueryGet pool details and reserves

Oracle Endpoints

EndpointBlockchain CallDescription
/api/oracle/set-rateoracle.setRateSubmit EUR/USD rate (oracle only)
/api/oracle/get-ratequeryGet current EUR/USD rate
/api/oracle/convertoracle.convertConvert EUR amount to USDC

Supply Chain Endpoints

EndpointBlockchain CallDescription
/api/supply-chain/create-ordersupplyChain.createOrderCreate purchase order
/api/supply-chain/mark-shippedsupplyChain.markShippedMark order shipped
/api/supply-chain/mark-deliveredsupplyChain.markDeliveredConfirm delivery, auto-pay
/api/supply-chain/payment-intentsupplyChain.createPaymentIntentCreate supplier payment intent
/api/supply-chain/get-order/:idqueryGet order details

Loyalty Endpoints

EndpointBlockchain CallDescription
/api/loyalty/create-programloyalty.createProgramCreate loyalty program
/api/loyalty/earnloyalty.earnPointsEarn points on purchase
/api/loyalty/redeemloyalty.redeemPointsRedeem points for rewards
/api/loyalty/create-referralloyalty.createReferralGenerate referral code

Dispute Endpoints

EndpointBlockchain CallDescription
/api/dispute/create-escrowdispute.createEscrowLock funds in escrow
/api/dispute/flagdispute.flagDisputeFlag a dispute
/api/dispute/resolvedispute.resolveByMediatorMediator resolves dispute
/api/dispute/releasedispute.releaseEscrowRelease escrowed funds
/api/dispute/refund-receiptdispute.issueRefundReceiptIssue VAT-compliant refund receipt
/api/dispute/claim-refunddispute.claimRefundClaim refund against receipt
/api/dispute/receiptserverGenerate QR receipt with VAT breakdown
/api/dispute/report/:addressserverDaily CSV settlement report

Rental Endpoints

EndpointBlockchain CallDescription
/api/rental/createrental.createAgreementCreate lease agreement
/api/rental/acceptrental.acceptAgreementAccept and pay deposit
/api/rental/pay-rentrental.payRentPay monthly rent
/api/rental/trigger-laterental.triggerLateTrigger late payment, lock DRM
/api/rental/serve-noticerental.serveNoticeStart eviction process
/api/rental/vacaterental.vacateEnd tenancy
/api/rental/release-depositrental.releaseDepositRelease security deposit

POS Endpoints

EndpointDescription
/api/pos/scanScan barcode, resolve via DNS or chain
/api/pos/checkoutOne-click checkout with CoCo-K payment
/api/pos/offline-queueQueue offline transactions
/api/pos/offline-syncSync queued transactions to chain
/api/pos/savingsCalculate savings vs Visa/MC
/api/pos/receiptGenerate POS receipt with TVA

Checkout Endpoints

EndpointDescription
/api/checkout/checkoutMulti-currency checkout via oracle + swap
/api/checkout/round-upRound up to nearest unit for savings
/api/checkout/b2b-settleB2B invoice auto-settlement
/api/checkout/savings-reportSavings report vs traditional payments

Union Endpoints

EndpointDescription
/api/union/templatesGet 17 country legal templates
/api/union/create-fastCreate USA fast union
/api/union/joinJoin union, mint 1 union coin
/api/union/leaveLeave union, burn 1 union coin
/api/union/pay-duesPay COCO dues to union treasury
/api/union/statesGet 50 states + DC union data
/api/union/:id/statusGet union stats and recognition status
/api/union/:id/recognitionGet NLRB petition and demand letter

Note: "seed" is the private key seed phrase for signing transactions. In production, this would use a wallet connection (Polkadot.js extension, mobile wallet) rather than raw seed input.

Web App Routes

RouteFileDescription
/index.htmlHome — hero, features, fee comparison
/walletwallet.htmlWeb wallet — BIP39, send, receive, portfolio
/explorerexplorer.htmlBlock explorer — stats, blocks, extrinsics, accounts
/dashboarddashboard.htmlMerchant dashboard — stats, coins, KYC, activity
/create-coincreate-coin.htmlOne-click sub-coin creation wizard
/loginlogin.htmlSign in / Sign up with Google OAuth
/kyckyc.htmlKYC document upload (ID + selfie)
/admin-kycadmin-kyc.htmlAdmin KYC review queue
/union-nowunion-now.htmlUnionize hub with 50-state guide
/union-coinunion-coin.htmlPrivacy-shielded worker organizing
/votingvote/elections.htmlOn-chain voting guide
/privacyprivacy-page.htmlStealth addresses and privacy features
/launch-guidelaunch-guide.htmlLaunch and deployment guide
/docsREADME.htmlFull documentation (this page)

Substrate Service (substrate.js)

// The Polkadot.js API client handles:
getApi()           — Connect to ws://127.0.0.1:9944
sendTransaction()  — Sign + submit + wait for inclusion + decode errors
getAlice()         — Get dev sudo key for KYC approval

Web Applications

💰 Web Wallet

Full-featured web wallet with BIP39 mnemonic generation, send/receive, portfolio view, and transaction history.

→ Open Wallet

🔍 Block Explorer

Chain explorer with real-time stats, block details, extrinsics, account balances, and search.

→ Open Explorer

🔐 Login & Auth

Login/Register page with JWT-based authentication, Google OAuth, TOTP 2FA, and KYC document upload.

→ Open Login

🖥️ Company Dashboard

Full-featured admin panel for companies to manage their CoCo operations.

Features:
Product inventory with search/filter · Single & batch minting · Supply chain transfers · Retail sales · Recall management · Warranty claim resolution · Product authentication · Company settings

→ Open Dashboard

⚡ Unionize Now

Worker organizing hub with 50-state guide, geolocation, NLRB contacts, and privacy-shielded union formation.

→ Open Union Hub

🗳️ Voting with CoCo

On-chain voting guide covering democratic, shareholder, referendum, and union elections with sub-coin vote tokens.

→ Open Voting

🛡️ Privacy Shield

Stealth address documentation with Diffie-Hellman key exchange privacy and legal compliance notices.

→ Open Privacy

📖 Scanner Integration Guide

Guide for integrating the Android barcode scanner app with the CoCo blockchain (wallet management, on-chain queries, transaction signing).

→ Read Guide

🛠️ Admin Script

Command-line tool for common operations: build, run node, test, check, start server, reset chain data, generate spec, build Docker.

./coco-substrate/scripts/admin.sh build
./coco-substrate/scripts/admin.sh run
./coco-substrate/scripts/admin.sh test nft

QR Code Standard

Every product on CoCo has a scannable QR code linking its physical form to its on-chain digital twin. The standard is defined in docs/QR_CODE_STANDARD.md.

URI Scheme

coco://product/{chain_id}/{product_id}?gtin={gtin}&serial={serial}&sig={signature}

Example

coco://product/0/0x00000000000000000000000000000001?gtin=00012345678905&serial=LV-2024-001234

Types

TypeUseSignature
Static QRPrinted on packaging, permanentNo (lookup only)
Dynamic QRApp-generated at POS/transferECDSA signature from owner

GS1 Digital Link Compatibility

GS1 Digital Link:  https://id.gs1.org/01/00012345678905/21/LV-2024-001234
CoCo Equivalent:   coco://product/0/0x01?gtin=00012345678905&serial=LV-2024-001234

Supported Barcode Formats (Scanner App)

UPC-A, UPC-E, EAN-13, EAN-8, Code 128, Code 39, Code 93, QR, Data Matrix, PDF417, Aztec, ITF, Codabar

Resolution Flow

User scans QR code → App extracts product_id from URI
  → Queries chain: Products(product_id)
  → Displays: authenticity, status, custody chain, warranty
  → If for sale: show purchase option
  → If owned by user: show manage options (list, claim warranty)

Installation / Runtime Guide

Beta Testnet: Full deployment instructions with validator setup, bridge configuration, and monitoring are in beta_instructions.md. This section covers building, configuring, and running the CoCo node.

System Requirements

ComponentDevelopmentTestnet Validator
CPU2 vCPU4 vCPU
RAM4 GB8 GB
Storage20 GB100 GB SSD
OSLinux / macOS / WSL2Ubuntu 22.04+

Prerequisites

# Rust toolchain (must be 1.88.0 — pinned in rust-toolchain.toml)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32-unknown-unknown

# System dependencies (Ubuntu)
apt install build-essential pkg-config libssl-dev clang

# Node.js 20+ (for server/relayer)
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs

# core2 patch (yanked from crates.io — must apply locally)
# See /tmp/core2-patch/core2-0.4.0/

# Verify
rustc --version          # ≥ 1.88
node --version           # ≥ 20

Build from Source

cd coco-substrate

# Release build (recommended — 30-60 min)
./scripts/build.sh

# Or manually (use scripts/build.sh which applies core2 patch):
cargo build --release -p coco-substrate

# Binary at: ./target/release/coco-node (73MB)
./target/release/coco-node --version

Development Chain (Single Node)

# Quick start
./scripts/run-dev.sh

# Or manual (MUST use --pool-type single-state for polkadot-stable2603-1):
./target/release/coco-node --dev \
  --base-path /tmp/coco-dev \
  --rpc-port 9933 \
  --unsafe-rpc-external \
  --pool-type single-state \
  --no-prometheus

# RPC: http://127.0.0.1:9933 | WS: ws://127.0.0.1:9944
# Connect: https://polkadot.js.org/apps → Development → Local Node

Validator Setup (Testnet)

# 1. Generate chain spec
./target/release/coco-node build-spec --chain local --raw > testnet-spec.json

# 2. Generate validator keys
./target/release/coco-node key generate --scheme sr25519 --output-type json > aura-key.json
./target/release/coco-node key generate --scheme ed25519 --output-type json > grandpa-key.json

# 3. Insert keys
./target/release/coco-node key insert \
  --base-path /opt/coco/data/validator \
  --chain testnet-spec.json \
  --scheme sr25519 --key-type aura --suri "<seed>"

./target/release/coco-node key insert \
  --base-path /opt/coco/data/validator \
  --chain testnet-spec.json \
  --scheme ed25519 --key-type gran --suri "<seed>"

# 4. Start validator (MUST use --pool-type single-state)
./target/release/coco-node \
  --chain testnet-spec.json \
  --base-path /opt/coco/data/validator \
  --name "My Validator" --validator \
  --rpc-methods Safe --rpc-external --ws-external \
  --prometheus-external \
  --pool-type single-state

# Ports: 30333 (P2P), 9933 (RPC), 9944 (WS), 9615 (metrics)
# See beta_instructions.md for multi-validator testnet setup

Server + Website

# Auth server (MariaDB + JWT + Google OAuth)
cd website
npm install
cp .env.example .env    # Edit DB creds, JWT secret, Google OAuth keys
npm start               # http://localhost:4000

# POS + blockchain proxy server
cd barcode/Server
npm install
cp .env.example .env    # Edit SUBSTRATE_URL
npm start               # http://localhost:3000

Wallets

# Linux CLI wallet
cd barcode/linux-wallet
npm install
./wallet.js new           # Create wallet
./wallet.js balance       # Check balances
./wallet.js send <addr> <amt>  # Send COCO

# Standalone multi-coin wallet app (wallet-app/)
# BTC, ETH, SOL, USDC, USDT + COCO with BIP44 HD derivation
# Build: cd wallet-app && ./gradlew assembleDebug
# APK: 13MB, package com.companycoin.wallet
# Features: biometric auth, portfolio, AES-256-GCM key storage

# Barcode POS Android wallet
# Build: cd barcode && ./gradlew assembleDebug
# APK: app/build/outputs/apk/debug/app-debug.apk

Running the TRON Bridge Relayer

# Environment
export COCO_WS_URL=ws://127.0.0.1:9944
export COCO_RELAYER_SEED=//RelayerRelayer

# Start relayer (TRON only)
node scripts/bridge-relayer.js --tron

# Register bridged assets (as root)
curl -X POST http://localhost:3000/api/bridge/register-asset \
  -H "Content-Type: application/json" \
  -d '{
    "sourceChain":"TRON",
    "sourceTokenAddress":"TEkxiTehnzSmC2eVxARldVjSr9SkoN4ZzR",
    "name":"USD Coin","symbol":"USDC","decimals":6,
    "seed":"//Alice"
  }'
Test Results (Latest): All 494 tests passing across 13 pallets (0 failures) — 399 Rust unit + 75 live chain + 20 shell E2E. Full release binary (73MB). SDK upgraded to polkadot-stable2603-1 with Rust 1.88.0. Production infrastructure active at cocoio.cc. POS v4 analytics, multi-coin wallet, block explorer, voting, union system, and stealth addresses all live.

User Auth & Security (TOTP 2FA)

CoCo uses MariaDB for user accounts with free TOTP two-factor authentication — no SMS costs, no API fees. Users scan a QR code with Google Authenticator or Authy:

1. Register
Email + password
2. Scan QR
Google Authenticator
3. Verify
6-digit code
4. Login
Password → 2FA → Session

Auth Endpoints

MethodEndpointDescription
POST/api/auth/registerCreate account (email + password)
POST/api/auth/loginSign in — returns partial token if 2FA enabled
POST/api/auth/login-totpComplete 2FA login with authenticator code
POST/api/auth/totp/setupGenerate secret + QR code + 8 backup codes
POST/api/auth/totp/enableVerify setup code → enable 2FA
GET/api/auth/meGet current user profile + KYC status

Abuse Prevention (Free)

Gas Fee Structure — Validator Incentives

CoCo validators earn from every transaction. No PoW hardware. No 32 ETH stake. Just run a node and earn.

Fee Tiers

TransactionFeeTo ValidatorsTo Treasury
POS settlement (retail)0.25%80%20%
Sub-token swap (CoCo-K hub)0.25%70%30%
Sub-token swap (peer-to-peer)0%
Product minting0.1%50%50%
COCO native transfersGas only100%0%
Governance (coin create, KYC)Gas only100%0%

Validator Economics

Daily Network VolumePer-Validator/Day (10 nodes)Annual
$100,000$200$73,000
$1,000,000$2,000$730,000
$10,000,000 (Visa-scale)$20,000$7,300,000

Any merchant can run a validator. Hardware cost: ~$100/month VPS. Actively profitable at $300+ daily network volume. Merchants earn fees FROM their own transactions — the network pays THEM to participate.

Why CoCo Beats a Traditional Database

A database handles one company's data. CoCo handles what no database can: trust between companies. When manufacturer, distributor, retailer, and consumer each run their own systems, reconciliations take days — if they happen at all. Chargebacks, disputes, and counterfeit goods thrive in the gaps between databases. CoCo eliminates those gaps with one shared, immutable truth that every party trusts because no single party controls it.

🔗 Multi-Party Trust

Manufacturer, distributor, retailer, and consumer never share a database. Each has their own systems. Reconciliations take days. CoCo eliminates reconciliation — one shared truth trusted by all.

🛡️ Counterfeit Prevention

A QR code can be copied from a fake Gucci bag. An on-chain authenticity record signed by the manufacturer cannot be forged. Scan to verify cryptographically — impossible with any database.

⏱️ Instant Settlement

Supplier delivers → QR scan at receiving dock → inventory auto-updates → payment auto-settles at 0% internal fee. No invoice. No wire. No 3-day wait. No database can settle across company boundaries in 6 seconds.

📋 Audit-Ready Records

French tax authorities require 10-year inventory audits. A database can be modified. A blockchain cannot. CoCo gives you append-only records with cryptographic proof — not a database you can edit and call "audited."

💳 Self-Sovereign Validation

Merchants run their own node and earn fees from their own transactions. No SaaS subscription. No platform lock-in. A database is a cost center. CoCo is a profit center that pays you to participate.

📱 Consumer-Facing

A customer scanning a QR code on their phone sees the full product history — origin, manufacturer, recalls, authenticity. A private database cannot share this across companies. CoCo makes it public, verifiable, and free.

CoCo is not a database replacement — it's a database upgrade. Your internal records stay in Postgres, SQLite, or whatever you use. CoCo adds the layer that databases were never built for: trust between parties that don't trust each other. Ownership. Authenticity. Custody. Settlement. A database can store facts. CoCo stores provable facts.

POS: Lite & Pro

CoCo offers two POS versions for different needs:

📱 POS Lite

Standalone, zero dependencies. Works on any browser — including old Android phones. Cash, card, and bank transfer payments. Offline-first with localStorage.

Perfect for: Brazilian kiosks, French butchers, any merchant with just a phone.

→ Open POS Lite

⚡ POS Pro

Chain-connected via API bridge. Accept CoCo-K payments. Wallet balance display. Mining validator integration. Settle on-chain at 0.25% fee. Earn fees by running the miner.

Perfect for: Merchants who want to earn from their own transactions.

→ Open POS Pro

Build & Test Guide

Build Blockchain

cd coco-substrate

# Quick build (recommended)
./scripts/build.sh

# Or manually:
cargo build --release -p coco-substrate-runtime
cargo build --release -p coco-substrate

# Binary: ./target/release/coco-node

Run Dev Chain

./scripts/run-dev.sh
# Or: ./target/release/coco-node --dev --base-path /tmp/coco-dev \
#   --rpc-port 9933 --unsafe-rpc-external \
#   --pool-type single-state --no-prometheus

# RPC: http://127.0.0.1:9933 | WS: ws://127.0.0.1:9944
# Connect: https://polkadot.js.org/apps → Development → Local Node

Run Tests

# Product NFT pallet (45 tests)
cargo test -p pallet-product-nft

# All pallets:
cargo test -p pallet-voting      # 66 tests (union + elections)
cargo test -p pallet-bridge      # 31 tests
cargo test -p pallet-rental      # 25 tests
cargo test -p pallet-loyalty     # 23 tests
cargo test -p pallet-dispute     # 21 tests
cargo test -p pallet-oracle      # 20 tests
cargo test -p pallet-shielded-coin # 20 tests
cargo test -p pallet-supply-chain # 19 tests
cargo test -p pallet-swap        # 21 tests
cargo test -p pallet-micro-finance # 16 tests
cargo test -p pallet-kyc         # 14 tests
cargo test -p pallet-rewards     # ~15 tests

Run Server + Website

# Auth server (MariaDB)
cd website
npm install
cp .env.example .env         # Edit DB, JWT, OAuth config
npm start                    # http://localhost:4000

# POS + blockchain proxy
cd barcode/Server
npm install
cp .env.example .env         # Edit SUBSTRATE_URL if needed
npm start                    # http://localhost:3000

Build Android App

cd barcode
./gradlew assembleDebug
# APK: app/build/outputs/apk/debug/app-debug.apk
Test Results (Latest): All 494 tests passing (0 failures) — 399 Rust unit (13 pallets) + 75 live chain + 20 shell E2E. Full release build (73MB) at target/release/coco-node. SDK upgraded to polkadot-stable2603-1 with Rust 1.88.0.

Onboarding Flow

The company onboarding process is a 6-step flow documented in ONBOARDING.md and implemented in the website at /onboarding.html.

1. KYC
Approval
2. Company
Registration
3. Sub-Coin
Creation
4. Product
Minting
5. Supply Chain
Transfer
6. Retail
Sale

Step Details

StepBlockchain ActionWho
1. KYC Approvalkyc.approveAddressProvider (Alice in demo)
2. Register CompanyproductNft.registerCompanyKYC-approved user
3. Create Assetassets.create + setMetadataCompany
4. Mint ProductsproductNft.mintProduct / batchMintProductsCompany
5. Supply Chain TransferproductNft.transferCurrent owner
6. Retail SaleproductNft.sellToConsumerRetailer

Extended Consumer Flow

ActionBlockchain CallWhen
Register productproductNft.registerProductAfter purchase
Authenticate productproductNft.authenticateProductManufacturer only
Submit warranty claimproductNft.submitWarrantyClaimWithin warranty period
List for resaleproductNft.listForSaleOwner wants to sell
Buy from marketplaceproductNft.buyListingAny user
Cancel listingproductNft.cancelListingOriginal seller

Tokenomics & Network Parameters

Network Parameters

ParameterValueNotes
Block Time6 secondsAura slot duration
Finality~12-18 secondsGrandpa 2/3+ confirmation
Native TokenCOCO12 decimal places
Total Supply1,000,000,000Pre-mined at genesis
Existential Deposit500 plancksMinimum balance
Max Validators32Aura authorities
Max KYC Providers100Configurable
Max Stakers100,000CoCo-K stakers

Fee Model

Implemented: Fee routing is live in pallet-product-nft. Configurable rates via set_fee_config (sudo). Default rates shown below.
TransactionFeeRecipientStatus
Supply chain transfer0%FreeLive
Product minting0.1% (configurable)TreasuryLive
Retail sale0.25% (configurable)TreasuryLive
P2P resale0.25% (configurable)TreasuryLive
COCO transferNetwork feeValidatorsLive
Sub-token swap (same brand)0%FreePlanned
Sub-token to COCO0.25%TreasuryPlanned

How It Works

// Fee configuration (stored on-chain):
struct FeeConfiguration {
    fee_collector: AccountId,    // Treasury address
    sale_fee_rate: Permill,      // 0.25% default
    resale_fee_rate: Permill,    // 0.25% default
    mint_fee_rate: Permill,      // 0.1% default
}

// Example: Retail sale of 1000 COCO product
// Sale price: 1000 COCO
// Fee (0.25%): 2.5 COCO → transferred to TreasuryAccount
// Seller receives: 997.5 COCO (net)

Fees are automatically deducted during sell_to_consumer and buy_listing extrinsics via the charge_fee helper. The treasury account is set to Alice in dev mode and should be changed to a multi-sig treasury for production.

Dev Accounts

NameRoleAddressCOCO
AliceSudo / Validator5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY1,152.9
BobValidator / KYC Provider5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty1,152.9
CharlieUser / Staker5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y1,152.9
DaveUser5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy1,152.9
EveUser5HGjWAe3PDDVWTJNQ3dvkRJEiPDpMC8Dcpg4KoUF3ipqCDRa1,152.9
FerdieUser5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL1,152.9

Roadmap & Status

Legend

Done New Pending Planned

Phase 1 — Foundation Complete

Phase 2 — Product Features Complete

Phase 3a — DRM & Enforcement Complete

Phase 3e — Rental Contracts Complete

Phase 3c — TRON/USDC/USDT Bridge Complete

Solana bridge removed: The Solana bridge program has been removed from the roadmap to eliminate cross-chain swap/pooling vectors and simplify regulatory posture. TRON-only bridge avoids multi-chain chain-hopping red flags under FinCEN guidelines.

Phase 4 — Merchant Tools & Ecosystem Complete

Phase 5 — Voting + Wallet + Privacy Complete

Phase 6 — Infrastructure & Scale Remaining

Year 1 Targets (v0.5)

MetricTarget
Brands onboarded50
Products tokenized500M
Active consumers10M
Resale volume$100M
Microtransaction volume$10M
DRM-enabled products100K
Network revenue$90M