Ecosystem

Anyone can build on Velum: exchanges, wallets, hardware wallets, custodians, staking and explorers. We keep the protocol and a reference implementation open. Only the messaging app is closed.

What is open {#abierto}

Piece License Purpose
@velum/core Apache-2.0 Protocol: keys, transactions, state, consensus, messaging
velum-node Apache-2.0 Full node, one binary per system
@velum/sdk Apache-2.0 Integration: addresses, transactions, signing, RPC, deposits, staking
PROTOCOL.md and spec/vectors Apache-2.0 Implement Velum in another language, byte for byte
Messaging app Closed For talking

You don't need to ask our permission. We only ask that you don't use the Velum brand in a way that looks like one of our products.

Exchanges {#exchanges}

  • Your own node. Install velum-node and let it sync; don't rely on the public gateway. Local RPC at ws://127.0.0.1:7420/ws?role=client, not exposed to the internet. Check that chain.block {height: 0} returns header.chain == "{{chain}}".
  • Units. VEL has 6 decimals; every amount on the chain is an integer in µVEL.
  • Confirmations. There is no instant finality yet: 30 blocks for normal amounts and one epoch for large amounts. Store the hash of every credited block and, if it changes, read again.
  • Deposits. One address with a per-customer memo, or one address per customer at m/44'/7420'/0'/0'/i'. The SDK's DepositWatcher walks blocks with N confirmations; a deposit's unique key is its txId.
  • Withdrawals. The SDK's buildTransfer. Below the threshold, zero fee with a work stamp; above it, 1 basis point. Sign offline with signTxBody on the cold machine.
  • Hot and cold. The hot wallet holds what is withdrawn in a day; the cold wallet, offline, tops it up.

Technical detail in Wallets and exchanges.

Wallets {#carteras}

  • 24-word BIP-39 phrase. Wallet = SLIP-10 ed25519 at m/44'/7420'/account'/0'/index'. The official app uses 0'/0'/0'.
  • The messaging identity and device keys come from the same phrase via HKDF and are not wallet keys.
  • Always show the amount, the exact fee (usually 0) and what the recipient gets.

Hardware wallets: Trezor and Ledger {#hardware}

Item Value
Curve ed25519
Derivation SLIP-10, all levels hardened
Path m/44'/7420'/account'/0'/index'
SLIP-44 coin type 7420 (registration pending)
What is signed UTF-8 of the transaction's canonical JSON without sig, with pure ed25519 (RFC 8032)
Maximum size 4 KB (a normal transaction is 250–600 B)
  • The pow work stamp is part of what is signed: the computer calculates it before sending the transaction to the device.
  • The device must show the full destination, the amount with its token, the fee and the memo, and warn if chain isn't {{chain}}.
  • There is a proposed Ledger app (APDUs GET_PUBLIC_KEY and SIGN_TX) in the ecosystem specification.

@velum/sdk {#sdk-abierto}

import { walletFromPhrase, buildTransfer, VelumRpc, DepositWatcher } from "@velum/sdk";
  • walletFromPhrase(phrase, account, index): SLIP-10 wallet.
  • buildTransfer, buildDelegate, buildUndelegate, signTxBody: build and sign, including offline.
  • VelumRpc: client for the node RPC.
  • DepositWatcher: deposits with N confirmations.

Examples: deposit-watcher.ts, withdrawal-signer.ts and staking.ts.

Delegated staking {#staking}

  • stake.delegate { node, amount }: your VEL is locked on the chain and raises the node's weight in the bridge lottery, with the same cap as the node's own bond.
  • stake.undelegate { node, amount }: it returns to your account after 14 days.
  • node.commission { bp }: each node sets its commission between 0 and 20%. At most one change every 7 days, of ±5 points.
  • Each epoch, what the node discovers is divided: its commission, and the rest pro rata between its own bond and its delegators. No more is ever divided than there is.
  • There is no guaranteed return. If the node doesn't work, it discovers nothing.

Custodians

Holding keys for third parties is a regulated service (a crypto-asset service provider in the EU). Keep one wallet per customer, or an internal ledger reconciled with the chain every day.