Rincoin Core v1.1.0-rc3, the third release candidate for v1.1.0, is now published for testing. It supersedes rc2 and changes how a node handles transactions with the old version when the fork arrives.
https://github.com/Rin-coin/rincoin/releases/tag/v1.1.0-rc3Upgrade before block 840,000v1.1.0 carries RIN3 transaction-version enforcement (RIP-0009), which activates at block 840,000. RIN3 is replay protection: from that height, an upgraded node requires ordinary transactions to carry the version marker 0x52494e33, so an ordinary transaction built for a chain that did not upgrade is not valid on the upgraded one. A node on v1.0.6 or earlier does not enforce the rule and can end up on a different chain, so
every node must run v1.1.0 before block 840,000.At the average block interval measured from 14 October to 2 November, about 65 seconds, block 840,000 falls around 30 November 2026; the date moves with the block rate, so go by the height, not the calendar. Test with rc3 now, and run the final release through the fork.
If the final release comes too late for you to deploy before block 840,000, run the latest release candidate through the fork instead, which today is rc3: it enforces the rule at that height exactly as the final release will. Do not stay on v1.0.6 waiting for the final. Nodes on rc2 or rc1 enforce the rule as well but should move to rc3: rc2 keeps old-version transactions it accepted before the fork in its mempool after block 839,999 until a restart, and rc1's fundrawtransaction, walletcreatefundedpsbt, and send leave transactions at version 2.
The consensus rules rc3 enforces are unchanged from rc1 and rc2 and are the ones the final release will enforce, and any further code change will be published as another candidate first.
Emission does not change: the Customized Halving schedule that v1.0.6 already carries gives 6.25 RIN through block 839,999, 4.00 RIN from block 840,000, then 2, 1, and 0.6 RIN at the later phase boundaries.
What changed since rc2On rc2, a transaction with the old version that a node had accepted before the fork height stayed in its mempool after block 839,999 had connected: it could no longer be mined, could not be abandoned, and blocked its own re-creation until the node restarted. In rc3, when a node connects block 839,999, it removes every transaction in its mempool that lacks the RIN3 marker, other than MWEB-only ones, together with its descendants. The wallet treats the removal like a conflict: -walletnotify fires once per removed wallet transaction, its change is no longer trusted, and abandontransaction, bumpfee (for a transaction that signals BIP 125), and a re-creation from the same inputs work at once, without a restart. The clean-up runs each time that height is connected, including after a reorg.
The change is the port of Rincoin-Sim pull request #7 and implements RIP-0009 section 7, "Mempool Clean-up at Activation". Consensus, mempool admission (PreChecks()), the block assembler, and P2P are unchanged, and nothing under src/consensus/ changes. Upgrading from rc2 or rc1 needs no chain-data or wallet migration, and the project's seed nodes run rc3.
https://github.com/Aevust/rincoin-sim/pull/7https://rips.rincoin.orgWhat was verified- On regtest, three new functional tests cover the clean-up, including reorgs across the fork height and the MWEB-only exemption, and the rewritten rescue test follows a wallet across the fork in 12 subtests. All pass.
- A two-node script that crosses the fork height passes all 19 of its checks against rc3. With the second node on the published rc2 binaries, and again with Rincoin-Sim v1.1.0.2, all 29 mixed-mode checks pass: the older node keeps the old-version transaction, and its relay of it is rejected without the older node being disconnected. Against rc2 alone, the script fails exactly the four clean-up checks that rc3 adds.
- Removing 227,000 old-version transactions (285 MB) took 6.5 to 6.8 seconds on the machine measured, during which RPC calls that need the chain state or the mempool waited; about 20 MB took 0.16 seconds.
- The Linux x86_64 build was reproduced byte for byte in two environments, WSL2 and a VirtualBox VM: the five binaries, the Linux tarball and the source tarball.
- Both of the project's seed nodes were upgraded in place from rc2 with the signed Linux tarball; fifty-three and sixty-six minutes after their relaunches, neither had restarted, and both were at the same height with the same best block hash.
- On mainnet, the Windows build caught up to the tip from the data directory rc2 had left and reported the same block hash at height 770,000 as the Linux nodes, and the Linux and Windows GUI wallets each received a transaction sent from the other. The ARM64 (AArch64) build was run under QEMU user-mode emulation on an x86_64 host.
The Linux x86_64 build is the verified one. The Windows and ARM64 builds are cross-built and remain experimental; the ARM64 binaries have not been run on ARM64 hardware.
Around block 840,000- Once block 839,999 has connected, ordinary transactions must carry nVersion = 0x52494e33; coinbase, HogEx and MWEB-only transactions are exempt. The bundled wallet switches once the last block it has processed is 839,999.
- At that block, almost every unconfirmed transaction leaves the mempool, including unconfirmed payments to receivers, because almost all of them carry version 2. Re-create anything that did not confirm, from the same inputs; the release page gives the steps.
- Transactions built or signed outside the wallet need the version set before signing: in the unsigned hex, replace the leading 02000000 with 334e4952.
- Pre-signed and timelocked transactions with the old version cannot be mined from block 840,000 onward, however long before the fork they were signed. If you hold any, have their re-creation, with the same lock times and spending the same inputs, signed with 0x52494e33 while every signer is available; signing with that version before the fork is safe.
- Around the fork, send only when getblockchaininfo reports blocks equal to headers on a node that has peers, and avoid sending or abandoning from the GUI for about a minute after block 839,999 connects.
- If you upgrade a node from rc2 or earlier after block 839,999 has connected on it, read item 4 under "For node operators" on the release page first.
- Pools: call getblocktemplate with {"rules": ["mweb", "segwit"]}. DNS seeder operators: whitelist the filter x3000009.
Verify before you run anythingOfficial Rincoin Core binaries are signed and published only through the Rin-coin organization on GitHub. The four distribution files are covered by one signed manifest. Fetch the signing key from keys.openpgp.org by its fingerprint, and check that the fingerprint gpg reports for it is this one:
ED20 B635 4EE4 526D 01F8 3B53 8B6E 3BF4 5C71 4ECA
The manifest is signed with the key's signing subkey, 0ED9 9C46 B219 2E37 5381 EF4A C5BE F8A9 FA06 C16F, so that is the key gpg --verify names first; the primary fingerprint above appears later in the same output. GitHub's own Source code archives are not covered by the manifest. The release page shows the commands.
Reports from testing rc3 are welcome on the issue tracker:
https://github.com/Rin-coin/rincoin/issuesRincoin was founded by 七夕凛 (tanabatarin here, ysmreg on GitHub), who reviews the final release; this candidate was built, signed, and published by Aevust. Thanks also to the developers of Bitcoin Core and Litecoin Core, on whose work this tree is built.
Don't Trust, Verify.