WCAHTWCAHT CHAIN
Public Testnet · Docs v0.1

Technical Documentation

How WCAHT Chain works end to end — the consensus and execution architecture, the core account/staking/fee model, pure EVM support, and the institutional enterprise suite.

Testnet notice. WCAHT is a public testnet. Parameters, economics, and some features (governance, slashing, cross-shard) are still hardening — each section flags what is live vs. in development. Testnet tokens have no monetary value.

Introduction

WCAHT is a high-throughput Layer 1 with stake-weighted BFT consensus and a parallel execution engine. It is not a fork of an existing chain — it is a purpose-built stack of named subsystems that each own one stage of the block lifecycle. The design goal is Solana-class throughput on commodity hardware, with an institutional compliance layer built into the node.

Wallet installation

Use the browser extension for quick testnet access, or install the standalone Windows wallet for a dedicated desktop experience. Both wallets are non-custodial: keep recovery material private and use testnet funds only.

Browser extension · Chrome, Edge, Brave, Opera

Install the unpacked extension from the WCAHT testnet ZIP.

  1. Download the WCAHT extension ZIP.
  2. Extract the ZIP to a folder that will not be deleted.
  3. Open your browser’s extensions page (Chrome: chrome://extensions).
  4. Enable Developer mode, choose Load unpacked, and select the extracted folder.
  5. Pin WCAHT Wallet, open it, and connect to the public testnet.
Open web wallet →

Desktop wallet · Windows

Install the native wallet without running a node.

  1. Download the Windows installer.
  2. Verify the download before running it. In PowerShell run Get-FileHash .\WCAHT-Wallet-Setup-1.0.4.exe -Algorithm SHA256 and compare the result with the SHA-256 published on the download section. If it differs, delete the file.
  3. This build is not yet code-signed, so Windows SmartScreen will warn about it. We do not recommend clicking past that warning for a wallet. If you would rather not, use the web wallet or the browser extension instead — signed builds and store distribution are in progress.
  4. Launch WCAHT Wallet and create a new test wallet. Do not import a wallet you use on another network.
  5. Back up your recovery phrase offline. Never share it with support or type it into a website — anyone who has it controls the wallet.

Wallet security

Read this before you create a wallet. It is short on purpose.

WCAHT will never ask for your Secret Recovery Phrase or private key. Not by email, not in Telegram or Discord, not through a support form, not through a "verification" step, and never on this website. Anyone who has that phrase controls the wallet completely and permanently. If someone asks for it while claiming to be WCAHT staff, they are stealing from you.

Where your keys live

The web wallet generates keys in your browser. The secret key is shown to you once, at creation, so you can back it up — it is not uploaded to our servers, and we cannot recover or recreate it for you. Saved wallets in the dashboard hold public metadata only; when a signature is needed, you supply the key locally for that one operation and it is discarded from memory immediately afterwards.

Public-testnet validator operators may select an encrypted v2 <name>-validator-keypair.json. The browser derives its AES key with the same Argon2id parameters used by wcaht-keygen, authenticates and decrypts with AES-256-GCM, verifies the embedded public identity, and discards the decrypted key after the one operation. The encrypted file and passphrase are not uploaded or saved. On-host signing remains the recommended hardened validator path.

What leaves your device

Signed transactions and public addresses, because a blockchain cannot work otherwise. Balance and history lookups send your public address to a WCAHT node. Private keys, secret phrases and key files never leave the browser. Key files you select for import are read locally and are not uploaded.

Which network this is

Everything on this site is the public testnet, chain ID 7789. Test WCAHT has no monetary value, cannot be exchanged for money, and is not an investment. Do not send assets from another network to a WCAHT testnet address — they will not arrive and cannot be returned. Mainnet is targeted for 2027 and is conditional on the security and economics milestones on the roadmap, not on a date.

What has and has not been audited

No independent third-party security audit has been completed yet. It is scheduled ahead of mainnet, after outside validators are running, so that the audit covers the real network rather than a snapshot. Treat this software as testnet software: use a fresh test wallet, and do not import a wallet you use anywhere else. Desktop builds are not yet code-signed — verify the published SHA-256 before running an installer, and do not get in the habit of clicking past operating-system warnings for wallet software.

Claiming test tokens is always free

The faucet never requires a payment, a deposit, a "verification" transfer, a social media task, or contact through a private message. If you are asked for any of those in order to receive test WCAHT, it is a scam and it is not us.

Reporting a vulnerability

Report security issues privately to the maintainers through the official Telegram or Discord channels linked in the site footer, with reproduction steps. Consensus, fork-handling and sync edge cases are the most valuable reports. Please give us a chance to fix an issue before disclosing it publicly. A paid public bug bounty is planned alongside the incentivized testnet phase. Never include a private key or recovery phrase in a report — we do not need it, and no legitimate report requires one.

Transaction pipeline

A transaction flows through five subsystems from submission to finality:

01 · INGRESS

TxFabric

Validates, prioritizes and lanes incoming transactions in a sharded mempool.

02 · EXECUTE

Prism

Runs non-conflicting transactions in parallel (MVCC) and computes the state root.

03 · ORDER

Skyfall

The scheduled leader proposes a block; validators vote to finalize at ≥⅔ stake.

04 · PROPAGATE

Cascade

Erasure-codes the block into shreds and fans them out across the validator mesh.

05 · PERSIST

Hyperion

Commits to a fork-aware ledger and serves the canonical chain to explorers & RPC.

Network parameters

ParameterValueNotes
Slot duration400 msSLOT_DURATION_MS
Leader scheduleRound-robin, 12 slots/leaderWCAHT_RR_SLOTS_PER_LEADER
Finality threshold≥ ⌈2N/3⌉ stakeBFT supermajority
Min validator stakeQuery getMinimumValidatorStake immediately before registrationThe RPC value is in kak; the onboarding UI converts it using 1 WCAHT = 10⁹ kak and does not hardcode a different floor
Max txs / block50,000 (soft cap 2,000)drain-budget tunable
Native unit1 WCAHT = 10⁹ kakEVM layer uses 18 decimals
EVM chain ID7789 (0x1e6d)RPC at /eth

Skyfall — Consensus

Skyfall is the stake-weighted Byzantine-fault-tolerant consensus layer. Validators stake WCAHT and take turns producing blocks on a deterministic round-robin schedule (12 consecutive slots per leader), then vote on every block. A block is final once votes representing at least a two-thirds supermajority of active stake (⌈2N/3⌉) are collected. Because the schedule is deterministic, every node can independently verify who the leader for a slot should be.

Public-testnet status: validator onboarding is open and the active set is dynamic. Canonical finality uses Ed25519 Skyfall certificates. Production does not emit the experimental seed-derived BLS vote fields; independent BLS key registration and rotation are required before that path can be activated. Operators must test upgrades on a non-voting replica before activation.

Skyreach — Accounts & State

Skyreach owns the account model and state storage. Every account is keyed by its Base58 public key and stored in a dedicated RocksDB column family. Balances are denominated in kak (1 WCAHT = 10⁹ kak), and each account tracks a nonce for replay protection. Account writes are committed per slot with commit markers so state can be recovered deterministically after a restart. Reads are lazy (loaded from the store on demand), which keeps memory bounded regardless of chain size.

Prism — Parallel execution

Prism executes a block's transactions concurrently using multi-version concurrency control (MVCC). Non-conflicting transactions run on separate cores; conflicting ones are ordered deterministically so every validator computes an identical state root. Duplicate-transaction detection is ancestry-based — a pure function of the block and its parent chain — so consensus execution never consults node-local state and can never fork on multi-transaction blocks.

Live & validated: parallel execution scales with cores and is the source of the chain's throughput. Zero state-root mismatches across load tests.

TxFabric — Mempool

TxFabric is the ingress layer. Incoming transactions are validated (signature, nonce, fee, balance), assigned to priority lanes, and partitioned across shards so the block builder can drain them in parallel. This intra-node sharding is what feeds Prism enough independent work to saturate all cores.

Cascade — Block propagation

Cascade distributes finalized blocks across the validator mesh using erasure-coded shreds (Turbine-style fan-out) over QUIC. A receiver can reconstruct a block from a subset of shreds, so propagation is resilient to packet loss and does not depend on any single peer. Broadcast streams are explicitly finished so receivers never truncate a block mid-stream.

Hyperion — Ledger

Hyperion is the fork-aware ledger. It tracks competing chain tips, applies fork choice against the canonical leader schedule, and exposes the finalized chain to explorers, wallets, and the JSON-RPC / EVM endpoints.

Accounts & units

ConceptDetail
AddressBase58-encoded Ed25519 public key (native) / 20-byte hex (EVM)
Smallest unit1 kak; 1 WCAHT = 1,000,000,000 kak
Replay protectionPer-account nonce, enforced at ingress
Per-tx cap10¹⁵ kak

Staking & validators

Validators register with a RegisterValidator transaction and provide the self-stake required by the connected network. Operators must obtain the quorum-backed live minimum from getMinimumValidatorStake immediately before signing; the returned value is in kak and the website displays its exact WCAHT conversion. Stake, validators, and vote accounts are persisted to RocksDB and reloaded on startup, so the active set survives restarts. See the validator guide or start validator onboarding.

Choose a setup method · Guided terminal · QR wallet pairing · Security checklist

Observer promotion: staking does not change a node's service role. Keep the new host in rpc_validator_observer mode while it synchronizes, passes the readiness and backup gates, submits RegisterValidator, and waits through the activation boundary. Only after the exact identity has non-zero registered consensus weight should the operator explicitly change that new host to NODE_TYPE=validator; the guided terminal rolls it back to observer mode if voting health or finality progress fails. Stake enters a one-epoch activation queue and becomes active automatically at the next epoch boundary. The current epoch is 172,800 slots (about 19.2 hours at 400 ms/slot).

Current public topology: N5, N6, N7, N8, and N9 are the active voting set. A dedicated service at rpc1 follows the chain as a zero-weight rpc_validator_observer and is the intended public read/RPC tier. N1 is retired and is not part of the active topology.

In development: validator rewards, fee splits and slashing parameters are finalized during the incentivized-testnet phase. On the current testnet, tokens are for testing only.

Node types & startup

All roles run the same checksum-verified WCAHT binary and canonical genesis. The practical architecture has four node types; fullnode remains a legacy/general role and rpc_validator_observer is a compatibility hybrid. Choose one source of truth for the role. If both are supplied, the service environment's NODE_TYPE overrides node_role in JSON.

Node typeRole valuePurposeCan become voting?
RPCrpcWallet, explorer, REST/EVM RPC and finalized-chain replay.No; first move it to a validator-capable runtime.
ObserverobserverVerifies, follows and monitors the chain without proposing or voting.Yes, after promotion to validator.
ArchivearchiveObserver/RPC services plus long-history retention.Not while archival/non-voting; use a dedicated validator host for consensus.
Validator-capablevalidatorLoads consensus services in standby and follows finality even with zero stake.Yes; voting activates only after registration and stake activation.

Common installation

  1. Provision the host, install only a checksum/signature-verified release, and use the canonical genesis bundle.
  2. Generate a unique identity on that host; keep its private files permission-restricted and backed up offline.
  3. Configure at least two trusted bootstrap/snapshot peers and an externally reachable endpoint where required.
  4. Set the role-specific fields below, install the service, then verify identity, peer count, tip and finalized slot.
# RPC node
"node_role": "rpc",       "is_validator": false, "disable_consensus": true

# Observer / monitoring node
"node_role": "observer",  "is_validator": false, "disable_consensus": true

# Archive node — omit ledger_keep_blocks or set it to null
"node_role": "archive",   "is_validator": false, "disable_consensus": true,
"archival_mode": true,    "ledger_keep_blocks": null

# Validator-capable node; zero stake remains safe and non-voting
"node_role": "validator", "is_validator": true,  "disable_consensus": false

Use the matching service environment when the launcher requires it:

sudo systemctl edit wcaht-NODE
# Add exactly one role:
[Service]
Environment="NODE_TYPE=observer"   # rpc | observer | archive | validator

sudo systemctl daemon-reload
sudo systemctl enable --now wcaht-NODE

RPC/REST uses 8901/tcp; gossip uses 8001/udp; QUIC block/vote transport uses 9001/udp. Validator-capable nodes must also make the dedicated signed consensus relay 8902/tcp reachable by active validators. Restrict SSH and any operator-control endpoint to a private management network.

curl -fsS http://127.0.0.1:8901/status | jq '{
  status, height:.block_height, slot, finalized:.finalized_slot,
  role:.node.effective_node_role, weight:.node.registered_consensus_weight,
  can_vote:.node.can_attempt_vote, voting:.node.is_voting_validator,
  behind:.sync.blocks_behind, peers:.peers.connected
}'

Running a node · discovery, joining & becoming a validator

Every participant runs the same binary. The service role controls which subsystems are available; activated consensus weight controls whether a validator-capable node may actually propose and vote. A UI toggle alone can never grant voting power. This section covers discovery, joining and the complete voting lifecycle.

1 · Peer discovery & gossip

A node builds its peer set in layers: it first attempts local UDP discovery, then falls back to the configured seed / bootstrap nodes, and finally a DHT walk. Discovered peers are tracked by the PeerManager. Blocks, transactions and consensus votes travel over a binary QUIC transport (port 9001) plus a gossip layer; the JSON-RPC / REST control plane is a separate HTTP port (8901), with signed HTTP consensus fallback on 8902. A node behind NAT can still reach the mesh by dialling out to public seeds, but a validator must provide working return paths for its advertised QUIC, gossip and consensus-relay endpoints. A home/NAT machine without those forwards is best run as an observer.

Discovery does not grant trust. Connected peers are never auto-registered into the validator set. Only the on-chain / genesis registry defines who can vote — a peer you gossip with has zero consensus weight until it is a registered, activated, staked validator.

2 · Joining as a new node (observer)

A fresh node points at one or more seed nodes, restores the latest snapshot (fast-sync), then replays blocks forward until it reaches the live tip. Until it is caught up and holds activated stake it should run as either an explicit observer or a validator-capable validator in zero-weight standby. It verifies and stores blocks, serves RPC and gossips, but cannot propose or vote. This is the normal, safe state for a new machine.

3 · Becoming a validator

Two things must both be true before a node votes:

Permissionless & consensus-safe. Admission is open — dynamic validators are enabled (allow_dynamic_validators) and stake activation is deterministic. The network runs atomic-delta staking (active from slot 0): a stake's activation and deactivation are applied in-block at the epoch boundary and bound into the state root, so every node agrees on exactly when a stake becomes active — no wall-clock race, no fork risk. In practice: provision a node, sync it as an observer or validator-ready node, submit a RegisterValidator transaction with at least the minimum self-stake (query getMinimumValidatorStake), and it is automatically activated into the voting set at the next epoch boundary — no permissioned genesis inclusion required. Keep the service non-voting through that boundary, then explicitly enable validator mode and verify the active weight. N5, N6, N7 and N8 are simply the current active set; anyone meeting the live stake minimum can join it. Query getEpochInfo rather than copying an old constant; the live network currently reports 172,800 slots (~19.2 h at 400 ms/slot).

4 · What happens with zero stake / zero voting power

The runtime asks one question — is my consensus weight > 0? If not, the node cannot attempt to vote and behaves as an observer no matter how it was launched. A zero-stake node:

The dashboard labels this state validator-ready. Voting power appears only once the node holds activated stake in the registry.

5 · What the dashboard can and cannot change

The current public dashboard publishes the checksum-verified bundle and observer-first instructions. It does not connect to the host over SSH, fund an identity, rewrite a running service role, or enable voting. The recommended registration path signs on the validator host. For public-testnet testing, the wallet can also read the selected encrypted v2 <name>-validator-keypair.json in local browser memory, verify its declared identity and sign one operation; the file, passphrase and decrypted key are not uploaded or saved.

A future restart-free promotion control will only switch a preloaded validator-capable runtime from observer to validator-ready through an authenticated node-operator endpoint. It still cannot create voting weight: the operator must explicitly fund and register the identity, and the network activates stake deterministically.

6 · Onboarding commands

The full guided flow lives at validator onboarding. In short: provision an Ubuntu host (8+ cores, 16+ GiB RAM, NVMe SSD, public IPv4), obtain the checksum-verified release and canonical genesis bundle, generate the encrypted five-role validator key set on the server and back it up offline, start the node and let it sync as an observer, fund its public identity, then sign registration on that host:

# Use the exact command in the downloaded bundle README.
sudo -u wcaht-validator env \
  WCAHT_KEY_PASSPHRASE_FILE=/run/wcaht-key-passphrase \
  /opt/wcaht-validator/wcaht-submit-tx \
  --node http://127.0.0.1:8901 --rpc \
  --genesis-keypair-path /var/lib/wcaht-validator-secrets/keys/NODE-validator-keypair.json \
  --tx-type register-validator --to VALIDATOR_IDENTITY \
  --amount LIVE_MINIMUM_IN_KAK --commission-bps REVIEWED_BPS

The encrypted identity stays on the validator host with this recommended method. After registration, keep observer mode through the activation epoch; then explicitly enable validator mode and verify non-zero voting weight, convergence and finality. The complete five-key role map, secure PowerShell copy/passphrase procedure, four-way identity check, optional dashboard import, registration and activation sequence is in the validator key operator flow.

Key safety. Never export a raw validator key. The optional testnet dashboard path accepts only the encrypted identity envelope; never import vote, stake, withdraw, fee-payer or TLS key files. Never paste a key or passphrase into a screenshot, log, support request or chat.

Fees

Transactions pay a fee in kak that is deducted atomically with the transfer. Fee parameters are logged at node startup and are governable in the target design. All balance arithmetic on the canonical execution path is saturating and guarded, so a transaction can never underflow an account.

EVM and MetaMask compatibility

WCAHT exposes an Ethereum JSON-RPC endpoint for signed legacy, EIP-2930, and EIP-1559 transactions, balances, receipts, contract execution, logs, and common wallet tooling. This public testnet is still closing less-common execution-client edge cases; applications should test the exact RPC methods they depend on before production use.

# Add the network to MetaMask
Network name:  WCAHT Testnet
RPC URL:       https://denvion.com/eth
Chain ID:      7789   (0x1e6d)
Currency:      WCAHT   (18 decimals on the EVM layer)
Signed fee and receipt rules. The validator recovers the sender from the raw transaction and binds chain ID, nonce, recipient, value, gas limit, gas-price cap, fee, and canonical Ethereum transaction hash at consensus verification. Transfers currently require at least 21,000 gas and 1 gwei; the receipt reports the signed gas-price cap. Values must be exactly representable in the native 9-decimal kak unit.
Wallet-key safety. The web wallet stores public wallet metadata only. Imported secret keys remain in current-session memory and are requested again after refresh. Use the bundled on-host signer for the hardened validator-registration path. The optional public-testnet path reads an encrypted validator identity locally for one operation; it never accepts the vote, stake, withdraw, fee-payer or TLS key files.

See the Developer Hub for one-click network add and code examples.

Faucet & airdrop

On testnet, anyone can claim free WCAHT from the faucet (the "airdrop") so they can deploy contracts, run validators, and test transfers without buying anything.

Where do the free coins come from?

They are not newly minted. The faucet transfers WCAHT out of the genesis treasury account — a pool that was allocated once when the chain started. Each claim is an ordinary signed transfer from the treasury to your address that goes through consensus like any other transaction. Total supply never increases; coins simply move from the treasury pool to testers. (In the code: "Faucet draws from genesis treasury — no new tokens created.")

Limits

RuleValue
Amount per claim100 WCAHT
Cooldown between claims (per address)60 seconds
Max claims per address per day10
Lifetime faucet budget100,000 WCAHT total
AvailabilityTestnet / devnet only — disabled on mainnet

When does it end?

The faucet stops dispensing in any of these cases:

Testnet tokens have no monetary value. The faucet exists purely so developers can test. Do not treat faucet WCAHT as an investment.
POST/faucet/request
Body { "address": "<your_address>" } → 100 WCAHT. Also available as the "Request test tokens" button in the web wallet.

Developer API reference

Every node exposes a public HTTP API (default port 8901). Reads are open; transaction submission requires an x-api-key. There is also an Ethereum JSON-RPC endpoint at /eth.

Chain & blocks

GET/api/chain_info
Chain id, height, finalized slot, validator count.
GET/recent_blockhash
Replay-protection token required when building a transaction.
GET/recent_blocks   GET/api/blocks_by_height?start&end
Recent blocks / a height range.
GET/total_supply
Total & circulating supply in kak.

Accounts & balances

GET/balance/{address}   GET/api/account/{address}
Balance (kak) / full account record.
GET/transaction/history/{address}
Transaction history for an address.

Transactions

POST/transactions/submit
Submit a signed transaction. Requires header x-api-key. Transfers ≥ 1000 WCAHT require Travel Rule data.
POSThttps://denvion.com/node/rpc
Public HTTPS native JSON-RPC proxy for read methods such as getBalance and getLatestBlockhash. A node operator's local endpoint remains http://127.0.0.1:8901/rpc.
GET/transactions?hash={tx_hash}
Look up a transaction / confirmation status.

Staking & validators

GET/api/stake/info   GET/api/stake/validators   GET/api/stake/epoch
Stake summary, validator set, epoch info.
POST/api/validator/register
Register a validator (signed CreateValidatorRequest). See the validator guide.
POST/api/stake/delegate   POST/api/stake/deactivate   POST/api/stake/withdraw
Signed delegation lifecycle.

Contracts & DeFi

POST/contract   GET/contracts
Deploy / call / query a contract; list deployed contracts.
GET/defi/*
AMM pools, lending, yield (experimental).

Network & performance

GET/network/stats   GET/peers   GET/performance/stats   GET/prism/stats   GET/fabric/metrics
Live mesh, throughput, parallel-execution and mempool metrics.

EVM (Ethereum JSON-RPC)

POST/eth
Standard eth_* methods (eth_chainId, eth_getBalance, eth_sendRawTransaction, …). Chain ID 7789. Works with MetaMask / ethers.js / web3.js.

Example — read a balance

# Native REST
curl https://denvion.com/balance/<address>

# EVM JSON-RPC
curl -X POST https://denvion.com/eth \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

Enterprise suite — overview & auth

WCAHT ships an institutional compliance and integration layer inside the node, exposed as a REST API under /enterprise/*. It covers KYC/KYB, sanctions screening, the FATF Travel Rule, custody signing policies, an OAuth-style API gateway, ISO 20022 payment metadata, reconciliation/audit, idempotency, and per-partner rate limiting. Every module is covered by an automated verification suite.

Authentication

All /enterprise/* routes require an admin bearer token. Write routes additionally pass through per-partner rate limiting.

GET /enterprise/sandbox/info
Authorization: Bearer $ENTERPRISE_ADMIN_TOKEN
Verified as designed. Compliance gating, JWT issue/validate/revoke, standard HMAC-SHA256 request signing, sandbox dry-run, idempotency replay, and sliding-window rate limiting all pass an in-repo regression suite.

Compliance — KYC, sanctions, Travel Rule

The combined gate POST /enterprise/compliance/check runs all three and returns a structured result (passed, sanctions_clear, kyc_sufficient, travel_rule_satisfied, errors[]).

API gateway — tokens & request signing

An OAuth 2.0 client_credentials–style gateway for machine-to-machine access:

Custody — signing policies & sessions

An HSM-abstraction layer with configurable signing policies (allowed hours, approval quorum, provider) and multi-step signing sessions that require explicit approval before a high-value operation proceeds. Policies and sessions are queryable and approvable over REST.

ISO 20022 payments

Structured payment metadata following the ISO 20022 model — credit-transfer transactions, remittance information, regulatory reporting, postal addresses, and end-to-end ID lookup — can be attached to and retrieved for on-chain transactions, so bank-grade payment context travels with the transfer.

Sandbox

An isolated testing environment: a sandbox-mode flag, a rate-limited test faucet (only active in sandbox mode), and a dry-run that predicts the exact balance changes and fee of a transfer without touching state.

Reconciliation, idempotency & rate limits

Enterprise REST API reference

Read endpoints (admin bearer token)

GET/enterprise/kyc/{address}
KYC record for an address (404 if none).
GET/enterprise/sanctions
Full sanctions watchlist.
GET/enterprise/travel-rule/{tx_hash}
Travel Rule data attached to a transaction.
GET/enterprise/iso20022/payment/{id}
ISO 20022 payment metadata.
GET/enterprise/audit-log?offset&limit
Paginated audit trail ({total, entries[]}).
GET/enterprise/custody/policy/{id}
A signing policy.
GET/enterprise/custody/session/{id}
A signing session's status.
GET/enterprise/sandbox/info
Environment tag + faucet availability.
GET/enterprise/gateway/clients
Registered API clients (secrets redacted).

Write endpoints (admin bearer + rate limit)

POST/enterprise/compliance/check
Run the full compliance gate for a proposed transfer.
POST/enterprise/kyc
Set/update a KYC record.
POST/enterprise/sanctions   DELETE/enterprise/sanctions/{address}
Add / remove a sanctions entry.
POST/enterprise/iso20022/payment
Attach ISO 20022 payment metadata.
POST/enterprise/custody/policy
Create/update a signing policy.
POST/enterprise/custody/session   POST/enterprise/custody/session/{id}/approve
Open a signing session and approve it.
POST/enterprise/sandbox/faucet   POST/enterprise/sandbox/dry-run
Request test tokens / simulate a transfer.
POST/enterprise/gateway/client
Register a new API client.

Example — run a compliance check

POST /enterprise/compliance/check
Authorization: Bearer $ENTERPRISE_ADMIN_TOKEN
Content-Type: application/json

{
  "from": "<sender_address>",
  "to": "<recipient_address>",
  "amount_kak": 2000000000000,
  "required_kyc": "Basic"
}

// → { "passed": false, "travel_rule_satisfied": false,
//     "errors": ["Travel Rule: data required for transfers above threshold"] }
WCAHT Chain · denvion.com · Technical Documentation · Public Testnet · 2026
Looking to integrate? Reach us on Telegram or Discord.