Releases: spectre-project/rusty-spectre
v0.3.16
Notes
This release is primarily focused on upstream merges from Kaspa Rust to stabilize the codebase as well as some minor adjustments required for Spectre.
Changes
[@x100111010] PR #15
- Updated the
open_db
method to use theset_unique()
method instead of the deprecatedunique()
method. 539af9c
[@x100111010] PR #16
- remove unnecessary conditions in
Matrix::compute_rank
52f9147
[@x100111010] PR #19
- replace by fee on mempool 1b0956d
- input signature_script checking to submitTransaction 817a3db
- hint message for P2P reject reason block not found a7ff129
- lazy load origin children 91f8117
- O(k log n) mempool transaction sampler + Fee estimation API 93fdc31
- update mimalloc dep (fixes compiling on debian) ec3b064
- feat: next_block_template_feerate f24bbb7
- semaphore tracing feature (for tracing prune readers vs writers time) 411bc42
- TN11 bug fix: activate mass hashing when modifying a cached block template 6b46dc6
- fix transaction hash merkle root calculation in modify block template to consider storage mass activation
- avoid similar future errors: expose only a single calc_hash_merkle_root function with
include_mass_field
arg and update all test usages explicitly - move subnet checks to inner location
- reorganize cache mem estimators
- optimizations related to multi-level relations 694da52
- In
ParentsBuilder
optimize the execution path of the common case for high levels - Prune relations for all levels below the affiliated proof level for block
- Keep relations for multi-level parents of pruning point and its anticone
- In
- query all DNS seeders if missing many connections 4e35e0b
- wRPC v2, integrations, typescript-v2, resolver v2 052e65c
- refactored Borsh serialization (wRPC v2)
- refactored watch-only
- fix Rust v1.81 lints
- using latest resolver APIs (guards)
- updated TypeScript bindings (typescript-v2)
- fixes related to "insufficient-funds"
Hex View for ScriptBuilder
:- formatted hex view for scripts
Kip9 Updates
:- improvements to mass calculator (Kip9::Beta variant)
- New RPC Methods
get_sync_status()
:- node sync status polling
get_connection_count()
:- total TCP sockets in use
get_system_info()
:- unique ID, git commit hash, total RAM, CPU cores, internal FD limit
get_metrics()
:- provisional dictionary*based map for custom metrics
- get_current_block_color RPC utility 8d49801
- getCurrentBlockColor algorithm and RPC functions
- move
get_current_block_color
to consensus and apply standard sorting - check for block existence on
get_current_block_color
- add extra DAG order checks to ensure about children
- Includes:
- Stylistic changes using ?
is_dag_ancestor_of(a, b)
is different than!is_dag_ancestor_of(b, a)
- Bug fix:
- Hash -> child
- Make store calls only where they are actually used (within the if)
- Style:
- Use struct unfolding syntax
- Use a name such as
decedent
which reflects the relation tohash
- remove Borsh derivations
- fix gRPC message codes
- fix gRPC
getCurrentBlockColorResponse
- improve tests
- mempool tweaks 1ced37a
- add case to test_evict
- remove explicit check for too big transactions
- raise DEFAULT_MEMPOOL_SIZE_LIMIT to 1GB
- move to estimated size
- remove estimated_size field
- transaction pool -- fix rare cases where byte size tracking was inaccurate 509e900
- remove crate-level mutable access to inner mempool tx
- fix bytes size tracking
- update
update_revalidated_transaction
only if validation result is OK - remove transaction if validation fails
- feerate estimator outliers: capture block slot by the specific mass of the outlier transaction 7ecb3f4
- deals with outliers (high feerate transactions)
- captures block space
- estimates feerate for remaining block space
- inaccurate average tx mass for outliers
- fix: Capture block space by specific mass of outlier transaction
- includes test to verify changes
- refactoring of mass calculator utilities c759870
- rename verbose data mass to
compute_mass
- fix TS interface verbose transaction data property name
- relocate consensus core processes
MassCalculator
to consensus core - WASM fix ECDSA pubkey generation
- error variant related to ECDSA from
PublicKey
creation - refactor client mass APIs
- propagate
minimum_signatures
via pending tx - rename mass calc functions to
unsigned
for clarity
- propagate
- introduce change index to PTX
- fix missing transfer of client Transaction mass to
RpcTransaction
- introduce
IRawBlock
andIRawHeader
TS types used inGetBlockTemplateResponse
andSubmitBlockRequest
- fix docs
- refactor mass calculator and extract global storage mass function that operates on iterators + use from wallet mass calculator
- rename verbose data mass to
[@0xA001113] PR #18
- Added official testnet DNS seeders
testnet-dnsseed-1.spectre-network.org
andtestnet-dnsseed-2.spectre-network.org
87df80a - Added official testnet11 (10bps) DNS seeders
testnet11-dnsseed-1.spectre-network.org
andtestnet11-dnsseed-2.spectre-network.org
87df80a
[@0xA001113] PR #20
- Version bump, rust 1.82 and missing dependencies a694aa6
- Fix out-of-order upstream merges ba4ae26
- Fix out-of-order upstream merges, part 2 c28bdde
- fmt fixes + clippy fixes by enforcing specific wasm-bindgen version 6799c51
- fix warning: ambiguous glob re-exports 02885b6
- virtual chain from block batching 8609ab8
- Various miscellaneous changes for next release deb1a8b
- infrequent logs should be debug
- cleanup some todos
- when a network starts, genesis has a body, so there's no need for a special exception
- remove unneeded method and add an error just in case it is added in the future
- count and log chain disqualified blocks
- count and log mempool evictions
- Add optional proxy socket limit info to utils::SystemInfo() c40d2e6
- WASM SDK improvements 490af48
- Introduces
maximumStandardTransactionMass()
- Fixes documentation for
calculateTransactionMass()
- Adds
PublicKey::fingerprint()
- Fixes critical issue in
submitTransaction()
causing a "recursive mutex use" error
- Introduces
- Replace openssl with rustls + ring + webpki_roots da843c8
- It passed all architecture tests for
aarch64
,amd64
,powerpc64
,powerpc64le
andriscv64gc
inmusl
,gnu
,gnullvm
andmsvc
builds.
- It passed all architecture tests for
- Do
disconnect()
beforeconnect()
fe0a71f - Fix CLI not showing incorrect URL on connect 77eded3
- Simple wRPC client example 3648fd7
- Bump tonic and prost versions, adapt middlewares 70634f0
- Metrics: fix first snapshot sample + cleanup 485132a
- Fix new gRPC methods to use camel case (non-breaking change) 6de6d1a
- Few CLI rpc query fixes 1b0e3f8
- Fix psst implementation d4c30e5
- Documentation updates relevant for Spectre only 4aa6c3d
- Fix wRPC JSON notification message format 3d75fdf
- WASM RPC method type updates 2af2598
- Cleanup legacy bip39 cfg flags interfering with docs.rs documentation builds ae7b054
- Parallelize MuHash calculations 44d8129
- Bump tonic version 7897256
- Muhash parallel reduce -- optimize U3072 mul when LHS = one 3783dea
- mempool std sig op count check 01db7eb
[@0xA001113] PR #22
- Enforce zig 0.13.0 as newer version breaks the build f0cc87d
v0.3.15
Changes
- [@x100111010] Fix several help typos and type annotations #1 #2
- [@x100111010] Fix GitHub action warnings #4
- [@x100111010] Support IP only for
--rpclisten-borsh
and--rpclisten-json
#4 - [@x100111010] PSST (Partially Signed Spectre Transaction) #7
- [@x100111010] Regression: Support watch-only accounts as in Go node #12
- [@0xA001113] Regression: Fix for using same RPC listener as in Go node
- [@0xA001113] Regression: Build arm64/aarch64 version as in Go node
- [@0xA001113] Fix public resolver URL
- [@0xA001113] Fix cross-compile of standalone wRPC node resolver
- [@0xA001113] More platforms: aarch64, powerpc64, powerpc64le, riscv64gc, macos-amd64, windows-gnullvm
Notes
Multisig example for PSST can be looked up in transaction 76ab09236a7aa13fe8f5389c74545c0110d4bba1ca778e49367d4d8de827834b.
The windows-msvc-amd64
is recommended for most purposes as it offers the best interoperability with other Windows software. Note that this requires accepting the End User License Agreement (EULA) for the Microsoft Visual C++ Redistributable runtime. You can download and install the runtime from here.
Use the windows-gnullvm-amd64
version if you prefer not to accept the MSVC runtime EULA. Additional platform support is explained in more detail in the README.md
v0.3.14
Changes
- First version, the famous Pi
- CPU-only mining algorithm SpectreX based on AstroBWTv3
- DAG sync from scratch with heavy SpectreX pruning point and header validation
- Stealth and untraceable mining
Notes
The newly released node is designed as a direct substitute for the existing Golang node. Going forward, the Spectre on Rust will be the primary and recommended node software for the Spectre network. Users no longer need to download the datadir2
for the Golang node or datadir
for the Rust node, and should discontinue these actions. We strongly recommend switching to the Rust based version.