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-nodeand let it sync; don't rely on the public gateway. Local RPC atws://127.0.0.1:7420/ws?role=client, not exposed to the internet. Check thatchain.block {height: 0}returnsheader.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 atm/44'/7420'/0'/0'/i'. The SDK'sDepositWatcherwalks blocks with N confirmations; a deposit's unique key is itstxId. - Withdrawals. The SDK's
buildTransfer. Below the threshold, zero fee with a work stamp; above it, 1 basis point. Sign offline withsignTxBodyon 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 uses0'/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
powwork 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 ifchainisn't{{chain}}. - There is a proposed Ledger app (APDUs
GET_PUBLIC_KEYandSIGN_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.