Skip to content

0.0.11 - 2025-01-31

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 31 Jan 20:20

Release Notes

✨ Features

  • (rpc_server) Add basic statistics for block intervals (37bc71cb)
  • (rpc_server) Add endpoint for block difficulties (b9835d89)
  • Key derivation (8682a1eb)
  • Dashboard support for deriving keys (24660ca9)
  • Display symmetric key hash to avoid leaking secret (6d1c660b)
  • (RpcServer) Show block digests by height (f5ee1b04)
  • (CLI) Add command to get block digests by height (e33d2edd)
  • Add is_canonical to block_info() RPC result (3995e39d)
  • Add sibling_blocks to /block_info rpc (0f0871bf)
  • (native-currency) Add time-lock check in rust source (867a9ac0)
  • (native-currency) Time-lock half of coinbase (da724fa3)
  • Harden native currency (ecfbefe9)
  • Add constructor for fee-gobbler transaction details (71f1cf62)
  • (proof_upgrader) Sort jobs by profitability (077ddcc7)
  • (proof_upgrader) Gobble fees (9eb941f3)
  • (merge) Allow negative fees (17c4a841)
  • (native-currency) Disallow coinbase with negative fee (94c897ce)
  • /block_info rpc returns actual block reward (5d4de110)
  • (SingleProof) Ensure merge bit retained in update-branch (6787d595)
  • (SingleProof) Verify merge bit set after merge (bf7e49d2)
  • (BlockProgram) Verify that merge bit is set (ba89f056)
  • (mine_loop) Merge nop-gobbler if no other txs available (996701de)
  • (mine_loop) Graceful shutdown on composition failure (ea6188e7)
  • (dashboard) Show max num peers (f4a564af)
  • (archival_mmr) Add function to get latest leaf (2049e1bb)
  • (archival_mmr) Add function to prune MMR to specified num leafs (50088a47)
  • (archival_mmr) Add try-get for leafs (66ae10d1)
  • (archival_state) Add archival block MMR (fd9a10aa)
  • (archival_state) Use block MMR to determine canonicity (0477832e)
  • (CLI) Add command nth-receiving-address (611b16d4)
  • (CLI) Add command premine-receiving-address (9c1c4438)
  • (mine_loop) Restart guesser every 20 seconds (37695fd4)
  • (peer_loop) Challenge block notifications before syncing (22a7ba75)
  • (rpc) Cookie based authentication (65b67e98)
  • (global_state) Allow storing of block that's not tip (0f61d6ab)
  • (archival_mmr) Get MPs relative to smaller MMRs (8a7f5e8e)
  • (main_loop) Tolerate arbitrarily deep reorganizations (ebcd3ab0)
  • (main_loop) Add global timeout for sync mode (5eb8d2fa)
  • Add RustyArchivalBlockMmr for schema-access (89f5a1c2)
  • (difficulty_control) Estimate max pow after n blocks (f56e669d)
  • (peer_loop) Reject fishy PoW evolutions (1ab0beec)
  • Add Shamir secret sharing maths (27ca2f05)
  • CLI commands for Shamir secret sharing (e65f6bac)

🐛 Bug Fixes

  • Store known keys in HashSet to ensure unique (e15e228e)
  • Reserve key 0 for coinbase transactions (4927b432)
  • (PrimitiveWitness/Arbitrary) Pick one: coinbase or inputs (203a18ac)
  • Use checked_add_negative for adding potentially negative fee (0a92e9d5)
  • (native_currency) Adjust some test-case generators relating to amounts (7c2cc2ac)
  • (Merge) Compare fee not hash of fee against max amount (9efdbd3e)
  • Test upgrade_proof_collection_to_single_proof_foreign_tx (7f41efe9)
  • (block) Adjust block parameters to match 42.000.000 limit (a4a8f7f5)
  • (docs) Fix wrong number in docs about target block interval (2a0538a3)
  • (test) Test that premine does not exceed promise (2eab824e)
  • Add arbitrary for coinbase (1a302055)
  • (AuthenticateTxkField) Account for merge bit (0f13fbae)
  • (test) Account for merge bit in more tests (b22200c5)
  • Temporarily exceed max num peers when bootstrapping (a05b581e)
  • (mine_loop) Recheck for connections every 5 seconds (517bd194)
  • Deserializing GenerationSpendingKey with serde_json (3f4ddd14)
  • Remove panic when deriving key index > 0 (ac35685c)
  • (PeerStanding) Include lower bound in standing test (5c35dc10)
  • (wallet_state) Avoid adding duplicate MUTXOs from different blocks (cbe6122b)
  • (WalletState) Filter out unspendable UTXOs before monitoring (226a371c)
  • (WalletState) Filter UTXOs for state validity (ff4dcb00)
  • (WalletState) Avoid duplicate MonitoredUTXOs (a0eb24bf)
  • (Block::is_valid) Fix false negative (4d6b7013)
  • (mine_loop) Segregate rayon threadpool for guessing (#315) (a1baa425)
  • Spawn task for block proof verification (17fd4737)
  • (neptune-cli) Catch failed connection gracefully (0abca09e)
  • (WalletState) Receive premine at multiple addresses (27ec3d36)
  • (wallet_state) Remove unneeded mut for key-getter (ef0c76c2)
  • (native_currency) Update hardcoded program hash (a607d105)
  • (verify_mmr_successor) Update non-determinism (19001aee)
  • Percolate rename of CLI argument (6115692d)
  • Add end-of-page margin for random memory pointers (b856e36b)
  • (difficulty_control) Add epsilon to function for upper-bounds on difficulty evolution (847fa714)
  • Update TIME_LOCK_HASH value (77728617)
  • (Block) Restrict spending of guesser-fee UTXO (b97cda33)
  • (wallet_state) Only register one hash-lock key per PoW-mined block (e83aae39)
  • (peer_loop) Don't grab read lock twice (6a1c2fe1)
  • Cancel proving job if composing stops (44d503b4)
  • Kill prover process directly (27726379)
  • (PeerInfo) Use string for peer's version, not ArrayString (27fa206b)

🚀 Performance

  • Serialize only 'seed' field of GenerationSpendingKey (f84c59c8)
  • (mine_loop) Faster PoW guessing (edbff181)
  • (peer_loop) Use archival block-MMR for faster batch-response (10c3f3a9)
  • (peer_loop) Faster response to block request by height (8cfd801a)
  • Faster PoW guessing by precalculating MT auth paths (5c5650b1)

📚 Documentation

  • Clarify docstring for mutxo-pruning (6154e890)
  • (Block) Synchronize comments in validity check function (76f089e6)
  • (main_loop) Information about main loop's data (1d9e4e7f)
  • Add docs page about documentation (5d201d70)
  • (archival_state) Add comment about duplicated data (651bb5b9)
  • (peer_loop) Fix log-msg for batch-response (983a06fb)
  • (mine_loop) Log block height when constructing block proposal (eefc4947)
  • Fix broken links in documentation (bae89de0)
  • Trace-log MUTXO info in wallet-updater (0bb00862)
  • Clarify deficiency on race-condition in sync-challenge-response (87dc4cb6)
  • Fix typo in comment. (5b254f53)
  • (rpc) Add token/cookie auth example (c185f8c5)
  • (rpc) Fix doc-comment example compile error (3afe2838)
  • Fix cargo doc warnings (a24b647c)
  • (archival_state) Clarify that store_block doesn't write to DB (144af4f6)
  • (wallet_state) Comment on lack of wallet-persisting for genesis block (acc0d6ca)
  • Fix comment on why no wallet action on MempoolEvent::UpdateTxMutatorSet (e3d8f1f0)
  • Add user guide to installation (ca3c02fb)
  • Add user guide on Shamir secret sharing (802c2769)
  • Fix typo (a70464ae)
  • Add comment about allowed minimum value for sync-threshold (68b62644)
  • Fix link to tokio::sync::RwLock (46dc1e54)
  • Add "Two-Step Mining" (bc539624)
  • Remove link to private code from public interfaces (50dd91bc)
  • Fix doc tests (4f26919a)

♻️ Refactor

  • (PrimitiveWitness) Time-lock half of coinbase (b6c08ec4)
  • Integrate time-locked coinbase into mine pipeline (be2feb01)
  • Specify proving capability (b48f9622)
  • (NeptuneCoins) Change inner type to i128 (93efd2c5)
  • (neptune_coins) Remove manual implementation of BFieldCodec (fb80ac19)
  • (native-currency) Add support for negative fees (c4729a91)
  • (native-currency) Assert non-negativity of coinbase (b4cdb7a1)
  • (native_currency) Assert UTXO-coin amount legality (a97fe00a)
  • (native_currency) Assert valid coinbase discriminant (81af76c4)
  • (BlockProgram) Assert fee-legality (e3fa6696)
  • (block_program) Factor out fee legality verification (9813c6b7)
  • Make all generation key fields private (9033bfb8)
  • (mine_loop) Only mine when connected to peers (34d0f570)
  • (TransactionKernel) Add merge_bit (fb736546)
  • (transaction) Delete deprecated snippet (0f6a695d)
  • (mine_loop) Create state-less versions of tx-generators (db5435f9)
  • Add 'arbitrary-impl' feature-flag (d7256533)
  • (TransactionDetails) Add and use nop-tx constructor (5faac406)
  • (proof_upgrader) Log error on failure; don't panic (2f403002)
  • (mine_loop) Avoid mutable variable for latest block (8fb1a1bf)
  • (archival_state) Don't crash on canonicity-check of unknown block (558539f0)
  • (archival_state) Delete unused methods (78629f1f)
  • (archival_state) Delete method (eaa82d08)
  • (single_proof) Disallow update of coinbase-transactions (3fca68bf)
  • (mempool) Add merge bit to tx-kernel-id (8907bf4c)
  • (mine_loop) Factor out generation of composer parameters (212bcc7b)
  • (SingleProof) Allow update of transaction's timestamp (04e247de)
  • (wallet_state) Don't consume input for empty tx (d595f030)
  • (cli_args) Restrict visibility of fields (45cef88d)
  • (cli_args) Increase default reorganization tolerance (e491b2e0)
  • Simplify guessing step (e6a63258)
  • (peer_loop) Limit block-batch size to 250 (3ab413ca)
  • (models::peer) Move PeerBlockNotification to separate file (44260b5d)
  • Add wrapper for triton_vm::verify (85a79d5d)
  • Use wrapper for triton_vm::verify (e170c925)
  • (mine_loop) Factor out coinbase transaction preparation (11bfca65)
  • Create valid blocks with bogus proofs (9534287d)
  • (peer_loop) Validate SyncChallenge (3b33a742)
  • (peer_loop) Don't allow syncing mode from handshake data alone (1af153d7)
  • Remove data_dir from GlobalStateLock (b8c3d0ca)
  • (peer_loop) Verify block before adding to fork-reconciliation list (05a5d8b1)
  • (archival_mmr) Move module out of mutator-set directory (a601150c)
  • (peer_loop) Reject responses with fishy difficulties (05ad1be6)
  • Add SpendingKey variant RawHashLock (11883ffc)
  • (wallet_state) Replace list with Option for nonce-preimage (1b897818)
  • (wallet) Delete duplicated type AnnouncedUtxo (bfd7d8f6)
  • (SecretKeyMaterial) Move logic to new file (db391f8d)
  • (NativeCurrency) Rename NeptuneCoins to NativeCurrencyAmount (a2038ef9)
  • (archival_state) Add block-hash witness to BlockRecord (a54f749d)
  • (mine_loop) Avoid hardcoded array-lengths for auth paths (38d90c24)
  • (mast_hash) Use sequential Merkle tree builder (e1fdb65c)
  • Halve target block interval (89c04cb7)
  • (Block) Drop unused testing premine recipients (419dc812)
  • (!) Add guesser_digest to BlockHeader (03359d56)
  • Reduce futuredating limit to 5 minutes (5a107c04)
  • Drop needless variable binding (99c24a51)
  • (SyncChallenge) Don't check difficulties if own tip is genesis (6fcbf4e8)
  • (peer) Move HandshakeData to separate file (50752a1a)
  • (peer) Move PeerInfo to own file (050071db)
  • (peer) Use fixed-size string for version in handshake (41615578)
  • (!) Add own timestamp to peer handshake (487e8b33)
  • (HashLock) Factor out related functions and structs (adee45c8)
  • Make guesser key deterministic (eaaa2c33)
  • (HashLock) Drop convenience From implementations (dfec62fe)

✅ Testing

  • Validate we can send to symmetric keys (cbc37454)
  • Add negative tests (f1798368)
  • (mine_loop) Add test that coinbase tx has timelocked/liquid outputs (0cbbffbc)
  • (mine_loop) Account fox timelocked coinbase output in test (35954def)
  • Re-randomize former proptest (f0cadb5c)
  • (native_currency) Assert that expected asserts are hit (b3720787)
  • (primitive_witness) Fix test-case generators after timelocking cb (6f2ba0a5)
  • Add positive and negative tests for negative fees (4dbb0f42)
  • Arbitrary non-negative NeptuneCoins (d0df57cd)
  • Update error ID allocation (f97275e1)
  • Add proptest for fee gobbler (54ffdea5)
  • (native_currency) Verify negative fee and set coinbase is disallowed (0f74c71b)
  • (native_currency) Add proptest variant of deterministic test (83d184de)
  • Estimate multi-threaded hash rate (f1e26c22)
  • (rpc_server) Add test of tx with 0-n transaction outputs (c22cfe41)
  • (SingleProof) Verify behavior of set/unset merge_bit (73db2547)
  • (mine_loop) Account for merge-bit in test case generator (4a64fcab)
  • (neptune_coins) Fix ranges in proptest (7383c883)
  • Add tests to verify key/addr format and derivation (8447875e)
  • Don't do PoW if not needed (86a55cc8)
  • Mimic real blocks better in mock_block generator (a92ec31c)
  • Add failing test of double-registration of MUTXOs (4064bb4c)
  • (WalletState) Allow repeated addition records (783a817d)
  • (archival_mmr) Add panicking test for leaf-getter (c3dfc352)
  • Test legacy addresses for premine recipients (546e5e5a)
  • (block) Fix negative test of block validity/bad block MMRA value (814627b4)
  • Fix mempool test of reorganization/tx-updates (b8d0f781)
  • (Block) Verify validity for blocks with 0-10 inputs (6ffa24b4)
  • Fix test of double-spend illegality (0506c9d9)
  • (archival_state) Fix flaky test about block rollbacks (a4bb80f4)
  • (mine_loop) Verify fast mast-hash agrees with trait function (aead0424)
  • Don't drop receiver before iterations are done (8b69daf2)
  • Produce valid transactions with bogus proofs (e363c896)
  • Add test of sync challenge (950112b2)
  • (global_state) Verify that never-tip blocks can bridge to new tip (2b21f26c)
  • (archival_mmr) Test prove_membership_relative_to_smaller_mmr (625ce19f)
  • (archival_state) Verify expected bounds of archival_block_mmr (2f149132)
  • Annotate snippet names with sign-off status (e1d16736)
  • Sanity checks on max-future pow estimator (8ce167fa)
  • Add sanity checks on max-future pow estimator (2c450291)
  • Avoid magic constants (aa42608c)
  • Don't run same test multiple times (36875586)
  • Fix tests of key-properties (32e215da)
  • Ensure guesser-fee UTXO addition records are consistent (58299f4a)
  • (wallet_state) Check timelock registration of PoW UTXOs (bc795563)
  • More tests of wallet's handling of guesser-UTXOs (4a13881e)
  • Fix off-by-one error in sync-test (fa3dc860)
  • Add faster test that mine-loop's fast-hash is correct (1577b09a)
  • Fix failing test related to guesser-preimages (42b7e6f4)
  • Fix hardcoded parameters from consensus-changes (4581b1eb)

🎨 Styling

  • Check sanity of size indicators (bcbf96e9)
  • Add conversion method for NativeCurrencyWitness (7277ba13)
  • Rename for better descriptiveness (3ad22fff)
  • (merge_branch) Fix error codes (ea706be5)
  • (native_currency) Simplify and document check (11f93b64)
  • (mine_loop) Factor out composer parameters (d64257c1)
  • Reduce visibility of arbitrary implementations (763f4ce4)
  • Happify clippy (rust v. 1.83) (1b4cce48)
  • Avoid async closures (f7c816b6)
  • Remove bad whitespace from premine table (913dc23f)
  • (Block) Change derivation of current block's ms-field (4cf6e18e)
  • Avoid needless iteration (c3f1a8fe)
  • Make linter happy (a1edbd4f)
  • Apply PR feedback (09671d03)
  • Happify clippy (b17e295c)
  • (peer_loop) Arrange message handlers in order of sequence (7c807673)
  • (cli_args) Rename CLI argument about sync threshold (e26ba392)
  • (GlobalState) Rename criterion function (2dd639c2)
  • (peer_loop) Improve try_ensure_path readability (3e88e47f)
  • (archival_state) Rename variable (ea380e9d)
  • (Block) Rename genesis_block to genesis (fd4652d3)
  • Rename HashLock -> HashLockKey (b7166043)

🛠 Build

  • Fix build script for Windows (aff9423c)

⚙️ Miscellaneous

  • Add proof-server explorer.neptune.cash (b6f49c33)
  • Upgrade tasm-lib dependency (6f90dd53)
  • Cargo fmt (1297fd5a)
  • Clippy too-many-args lint (bd7accfc)
  • Neptune-cli offline cmds accept network (5a70cc73)
  • Update benchmarks (eb09fde1)
  • Run clippy on all code (b65c2119)
  • Don't lint nightly-specific feature (953a93c2)
  • (connect_to_peers) Reduce log-noise on failed outgoing connections (8eb547cf)
  • Allocate funds to premine recipients (88db6fef)
  • Make arbitrary and proptest an optional dependency (4e68232e)
  • Add comment in Cargo.toml (2418e2a6)
  • Reject if documentation builds with warnings (55014685)
  • Make linter happy (0a083d89)
  • Delete unused trait and implementation (7178cb9d)
  • Happify clippy (31bf6db2)
  • Happify clippy (6ffa0ee1)
  • Update benchmarks (55142de3)
  • Happify clippy (7e499ac3)

Block

  • Verify coinbase is not negative (c48acb70)

Devops

  • Lint code behind feature flag in precommit hook (8b28ac6c)
  • Add more rules to pre-commit hook (466a5b89)

Log

  • (peer-loop) Verbosify logging in block handler (d7854b24)
  • Add peer address to peer-loop log messages (2eb6e588)
  • Add peer address to peer-loop log messages (638926ea)
  • (peer_discovery) Debug-log if no candidate can be found (0d9da62a)
  • (mine_loop) Warn if not mining because no connections (4a1117f2)
  • (BlockProposal) Readably print guesser fee (e0c2318b)
  • (peer_loop) More info on bad block-requests-by-height (522a669f)

Ui

  • (neptune-cli) Avoid stack trace dump (1e6833ac)

Note: (!) indicates a breaking change.

Install neptune-cash 0.0.11

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Neptune-Crypto/neptune-core/releases/download/v0.0.11/neptune-cash-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy ByPass -c "irm https://github.com/Neptune-Crypto/neptune-core/releases/download/v0.0.11/neptune-cash-installer.ps1 | iex"

Download neptune-cash 0.0.11

File Platform Checksum
neptune-cash-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
neptune-cash-x86_64-apple-darwin.tar.xz Intel macOS checksum
neptune-cash-x86_64-pc-windows-msvc.zip x64 Windows checksum
neptune-cash-x86_64-pc-windows-msvc.msi x64 Windows checksum
neptune-cash-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo Neptune-Crypto/neptune-core

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>