Everything needed to review, integrate and list PCoin, in one page — including the two things that will otherwise cost you a day.
1. Set fallbackfee or every withdrawal fails.
Bitcoin Core defaults it to 0, and PCoin has no fee-estimation
history to fall back on. A node that syncs and credits deposits perfectly will
refuse every send with "Fee estimation failed". Put
fallbackfee=0.00001 in the config before you test withdrawals.
2. ZMQ is not compiled into the published binaries.
getzmqnotifications answers -32601 Method not found.
Poll getbestblockhash, or ask us and we will publish a build with
-DWITH_ZMQ=ON — it is a build flag, not a code change.
PCoin is an independent Layer 1 blockchain — its own genesis block, network magic, ports, address prefixes and UTXO set. It is not a token, not an ERC-20, not a sidechain, and it settles on nobody else's chain. It is a fork of the Bitcoin Core v29.4 codebase with proof-of-work replaced by RandomX (CPU-mined, ASIC-resistant) and the difficulty algorithm replaced by LWMA.
Practically, that means your existing Bitcoin integration works. The RPC surface, the wallet semantics, the binaries' names and the config file format are upstream Core. What differs is listed below, and nothing else does.
| Parameter | Value |
|---|---|
| Name / ticker | PCoin / PCN |
| Codebase | Bitcoin Core v29.4 fork — github.com/pars5555/pcoin |
| Proof of work | RandomX, key PCoin/RandomX/v1. Block IDs are still double-SHA256 — only the PoW check uses RandomX |
| Difficulty | LWMA, retargets every block, active from height 2800 |
| Max supply | 21,000,000 PCN |
| Block reward | 50 PCN, halving every 210,000 blocks |
| Target spacing | 600 s (spacing is noisy — judge pace over 100+ blocks, never the all-time average) |
| Decimals | 8 |
| P2P port | 9444 |
| RPC port | 9443 — note this is P2P minus one, not plus one, because P2P+1 is bitcoind's default Tor onion listener |
| Network magic | cf a2 d1 b8 |
| Genesis hash | a95d51f0cbf25cad…264a |
| Genesis message | "PCoin 01/Aug/2026 an independent chain is born" |
| DNS seed | seed.pc.am |
| User agent | /PCoin:29.4.0/ — older peers still advertise /Satoshi:29.4.0/; that is not a Bitcoin node |
| BIP44 coin type | 9444' |
market.pc.am sells PCN from the project treasury at a published price. Those are already-mined coins being sold by a holder, not an issuance — no new supply is created and the 21 M cap is untouched.
The binaries keep their upstream names — bitcoind and
bitcoin-cli. Only the data directory (~/.pcoin) and the
config file name (pcoin.conf) are renamed. If the host also runs
Bitcoin, always pass -datadir explicitly.
Downloads and checksums: pc.am/download · GitHub releases
server=1
txindex=1 # you will want it; the node has no address index either way
fallbackfee=0.00001 # MANDATORY -- without it every send fails
changetype=bech32 # native SegWit change, matching the receive addresses
rpcauth=... # per upstream; RPC binds loopback by default
| Resource | Reality |
|---|---|
| Chain size | Under 10 MB. It syncs from scratch in well under an hour. Current height |
| Disk | du overstates it ~28× because Core preallocates blk*.dat. Trust size_on_disk from getblockchaininfo |
| RAM | RandomX validation uses ~256 MiB of cache (light mode; never full-memory, never large pages) |
| Pruning | Supported, upstream behaviour. Not needed at this size |
| Type | Prefix | Notes |
|---|---|---|
| Native SegWit (bech32) | pc1q… | HRP is pc. The default, and what you should issue |
| Taproot (bech32m) | pc1p… | Valid. A phrase-backed wallet holds only wpkh descriptors, which is why changetype=bech32 matters |
| Legacy P2PKH | base58 version 55 | Supported |
| P2SH | base58 version 56 | Supported |
| WIF | version 183 |
Validate with the node, never a regex. validateaddress is
authoritative and costs nothing. Lowercase bech32 before you compare or store it.
PCoin kept Bitcoin's BIP32 version bytes, so PCoin extended keys
serialise as literal xprv…/xpub… and a Bitcoin xprv will
parse in a PCoin descriptor. Coin type 9444' is the only thing keeping
the two key trees apart — do not normalise it to 0'.
(txid, address), never (txid, vout). Deposit vout is routinely 0, so the wrong key silently drops a second deposit instead of erroring. Every integration that got this wrong got it wrong this way.Spacing is short and stale blocks happen. reorg_count and
blocks_unwound in our explorer API are cumulative lifetime
counters — they only ever go up. Gating on blocks_unwound == 0
looks reasonable and is a trap: one ordinary 1-block reorg sets it to 1
permanently and deposit crediting stops forever while every health check still
reports clean. That is not hypothetical — it happened to all six of our own
payment integrations at once and went unnoticed for three and a half days.
Gate on stale == false, node_reachable and
blocks_behind == 0. For a real mid-reorg signal, compare the
change between two reads. Detect reorgs; never auto-reverse a
credit.
Ordinary Core: sendtoaddress, sendmany,
walletcreatefundedpsbt. Two settings decide whether they work at all:
fallbackfee=0.00001 — see the top of this page. There is no
fee market to estimate from, so without a fallback the wallet cannot build any
transaction.changetype=bech32 — a wallet holding only wpkh
descriptors cannot allocate taproot change, so a send to a pc1p…
address fails at the change step without it.Blocks are not full and fees are a dust formality; the fallback rate above confirms reliably.
Stated plainly, so it is not a discovery on day three.
getzmqnotifications returns -32601. The source is
present; ask and we will publish a -DWITH_ZMQ=ON build. Until then,
poll getbestblockhash.txindex answers a different
question. Use our explorer API, run
ElectrumX, or watch addresses by importing descriptors into the wallet.scantxoutset with HTTP. It is globally
serialised and O(UTXO set) per call.v29.4 is git diff v29.4..HEAD and is small enough to read end to end.src/pow.cpp, src/crypto/pow_randomx.*, src/kernel/chainparams.cpp, src/validation.cpp.src/randomx/src/allocator.cpp adding optional large-page allocation. Nothing on the hash-computation path is touched, and git log -- src/randomx/ shows the whole history in three commits.cmake -B build -DBUILD_GUI=OFF -DENABLE_WALLET=ON -DCMAKE_BUILD_TYPE=Release — stock Core dependencies, no vendored toolchain.SHA256SUMS; the same list is mirrored at pc.am/dl/SHA256SUMS.txt.| What | Where |
|---|---|
| Block explorer | explorer.pc.am |
| Chain status (JSON) | explorer.pc.am/api/status |
| Address history / UTXOs | /api/address/{addr}, /api/address/{addr}/txs |
| Broadcast | POST /api/tx |
| Core REST (read-only subset) | explorer.pc.am/rest/… — chaininfo.json, block/*, tx/*, headers/*, mempool/* |
| Reference rate | price.pc.am — read it at credit time and stamp it on the row; never hardcode a rate |
| Merchant integration guide | docs.pc.am |
| Channel | Where |
|---|---|
| Website | pc.am |
| Telegram announcements | @PCoinPCN |
| Telegram chat | @PCoinPCNChat |
| Discord | discord.gg/dGmdwJkb9f |
| X | @PCoinPCN |
| Source | github.com/pars5555/pcoin |
For a listing review, a test build, a ZMQ-enabled binary or testnet coins, open an issue or ask in @PCoinPCNChat.