DEVELOPERS / INTEGRATION GUIDE
Integrate Blackcoin — verify first, then build.
Technical evaluation materials for listing, custody, indexing, or building on Blackcoin Protocol V4, with copy-paste examples. Read-only data needs no infrastructure at all; custody integration runs against the signed-source daemon and its JSON-RPC — after your own verification and controls pass.
THE STAGED PATH
- 1 · Observe. Run a read-only node, validate the chain identity and replay state, and compare your node's view with this public API.
- 2 · Evaluate deposits-disabled. Exercise the reference deposit state machine below against your own infrastructure with customer deposits switched off. Lifecycle heights that affect planning: Gold Rush emission ends at 6,192,999; the legacy path closes at 6,922,000 (heights control, not dates).
- 3 · Proceed on your evidence. Enable custody only after your own controls, reconciliation, and sign-off gates pass. Nothing on this site implies audit completion, listing approval, or venue acceptance.
0 · Chain parameters
Pull ticker, decimals, address format, phase heights, and endpoints from one machine-readable source. Ideal for auto-configuring a wallet, aggregator, or listing entry.
curl -s https://projectblackcoin.org/api/chain-params | jq .1 · Run a node
The daemon is the source of truth and the custody interface. Enable txindex for deposit lookups and shadowindex for Protocol V4 Gold Rush data. Always verify the signed source and checksums first — the reproduction contract has the exact steps, and binaries are on the downloads rail.
# ~/.blackcoin/blackcoin.conf
server=1
txindex=1 # full transaction index (deposit lookups)
shadowindex=1 # Protocol V4 Gold Rush / shadow index
rpcuser=CHANGE_ME
rpcpassword=USE_A_LONG_RANDOM_SECRET
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
# Keep the RPC interface private; never expose it publicly.2 · Exchange & custody — deposits-disabled reference
The snippet below is a minimal RPC illustration, not a custody design: listsinceblock is an input to deposit detection, never the whole state machine. A production integration needs, at minimum, each of the following — exercised deposits-disabled before any customer funds move:
- Durable block progress. Persist the last fully-processed block hash; resume from it, never from a timestamp.
- Idempotency per output. Credit by
(txid, vout), never by txid alone or by list position; reprocessing must be a no-op. - Confirmation policy & regression. A project-suggested starting point is 30 confirmations (~32 minutes at 64-second target spacing — height controls, not time; set your own policy). Handle confirmations going down: a credit must be reversible until your own finality bar.
- Reorganization rollback. On a best-chain change, rewind to the fork point and reprocess; conflicted and abandoned transactions must debit cleanly.
- Address ownership & validation. Map deposits to users by your own address index; validate with
blackcoin-cli validateaddress, never a regex. Both bech32 (blk) and legacy Base58 (B…) are valid under current rules — do not reject legacy addresses while consensus permits them. - Deposit disable/enable controls. A single operational switch that halts crediting instantly, exercised before launch.
- Reconciliation. Wallet totals must reconcile against your ledger and against
gettxoutsetinfo-derived balances on a schedule; discrepancies page a human. - Withdrawal safety. Idempotent broadcast with persisted intent, fee policy, conflict handling, and a reconciliation path for stuck or replaced transactions.
- Migration planning. Decide your
migratetoquantumsupport before the legacy path closes at height 6,922,000 so user balances survive the transition.
Go-live gate: verify → test → review → then consider enabling. Never ship first and verify later.
listtransactions page and an ambiguous post-broadcast transport failure), and reconciliation is fee-aware and two-sided. docker compose up and your evaluators exercise a correct custody core the same afternoon — verify the checksum first.# 1. Create a deposit address for a user
blackcoin-cli getnewaddress "user-12345"
# 2. Poll for new confirmed credits since the last block you processed
blackcoin-cli listsinceblock "<last_processed_block_hash>" 30migratetoquantum window so user balances survive the transition. Full detail in the whitepaper.3 · Data & explorer integration
You don’t need a node to read Blackcoin. The public API is your hosted, read-only endpoint — CORS-open, no key, fail-closed. Stream live state over SSE, pull any block/tx/address, or drop in the badge.
// Live verified snapshots — no node required.
const es = new EventSource(
"https://projectblackcoin.org/api/v3/quantum/stream"
);
es.addEventListener("snapshot", (e) => {
const snap = JSON.parse(e.data);
if (snap.schema_version !== 3 || snap.status !== "available") return;
console.log(snap.data.base_chain.height, snap.quality);
});
// EventSource auto-reconnects; the stream replays the current
// snapshot on connect, so a dropped connection self-heals.
// New verified blocks:
const blocks = new EventSource(
"https://projectblackcoin.org/api/explorer/stream"
);
blocks.addEventListener("block", (e) => console.log(JSON.parse(e.data)));Full endpoint reference: /developers · openapi.json. Address activity feeds are also available as Atom (/explorer/address/{address}/feed.xml).
Withdrawals: fees, dust & proofs
- Withdrawal fees. Let the node price fees — call
estimatesmartfeefor a target confirmation window, or set a policy floor withsettxfee/-paytxfee.sendtoaddressdeducts the fee at broadcast; capture it then (gettransaction) so reconciliation stays balanced during the unconfirmed window — Keystone does exactly this. - Dust & min-relay. Outputs below the node's dust threshold are non-standard and will be rejected; reject or consolidate sub-dust withdrawals before broadcast rather than letting a send fail. The min-relay fee is a node policy — don't hardcode a sat/byte constant, read it from
getmempoolinfo/getnetworkinfo. - Address ownership & proof-of-reserves. Prove control of an address without moving funds using
signmessage <address> <message>andverifymessage. For proof-of-reserves, publish signed messages from your reserve addresses over a public challenge string (e.g. a recent block hash) so anyone can verify the signatures against the on-chain balances — no key exposure, fully reproducible on any node. - Confirmations. Choose a deposit-credit depth for your risk tolerance; the reference core defaults to a conservative window and treats a confirmation drop as a reversal (see the custody state machine).
Hosted endpoints, testnet, and self-hosting
- Hosted read-only data: already live — the public API above serves verified chain and Gold Rush data with no infrastructure on your side.
- Write access & custody: run your own signed-source
blackcoindand use its JSON-RPC. That is the only interface that creates addresses, signs, and broadcasts — by design, this project never holds keys for you. - Testnet / regtest: start the daemon with
-testnetor-regtestto develop against a throwaway chain before you touch mainnet.