Commit Graph

707 Commits

Author SHA1 Message Date
Marek 67bfc941fe
fix(rpc): Regroup imports (#9521)
* Regroup imports in `.../tests/common/regtest.rs`

* Regroup imports in `.../methods/tests/prop.rs`

* Regroup imports in `.../get_block_template.rs`

* Regroup imports in `.../zip317.rs`

* Regroup imports in `.../get_blockchain_info.rs`

* Regroup imports in `.../types/get_raw_mempool.rs`

* Regroup imports in `.../types/transaction.rs`

* Regroup imports in `.../server/tests/vectors.rs`

* Regroup imports in `.../args.rs`

* Regroup imports in `.../main.rs`

* Regroup imports in `.../openapi-generator/main.rs`

* Regroup imports in `zebrad/src/commands/start.rs`

* Regroup imports in `.../tests/fake_peer_set.rs`

* Regroup imports in `.../components/miner.rs`

* Regroup imports in `.../tests/acceptance.rs`

* Regroup imports in `.../get_block_template.rs`
2025-05-14 18:36:05 +00:00
Marek 89f825265a
change(rpc): Move GBT RPCs into the main RPC server (#9459)
* Remove the `getblocktemplate-rpcs` Cargo feature

* Merge GBT RPCs with the rest

* Fix `rpc_server_spawn_port_conflict`

* Fix snapshot data

* Remove old files after merge

* Fix snapshot for `get_mining_info`

* Fix refs in docs

* Update snapshot data for `bet_block_count`

* Update snapshot data for `get_minig_info`

* Fix snapshots

* Fix RPC tests

* Unguard internal miner config

* remove getblocktemplate file (#9485)

* Fix imports in `zebra-rpc/src/server.rs`

* Fix imports in `zebra-rpc/src/methods.rs`

* Rename vars in `RpcImpl::new`

* Split imports in `.../methods/tests/snapshot.rs`

* Refactor imports in `.../methods/tests/vectors.rs`

* Update error log messages

* fmt

* Fix snapshots with missing peers

* fmt

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2025-05-09 09:56:54 +00:00
Marek b0e7fd4a9a
chore: Release v2.3.0 (#9475)
* Update changelog

* Update end of support

* Add release date

* Add breaking change description

* Add new PRs to changelog

* Add breaking change description to changelog

* Update list of PRs in changelog

* chore: Release

* Apply suggestions from code review

Co-authored-by: Arya <aryasolhi@gmail.com>

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2025-05-06 14:47:47 +00:00
Arya 33a44e5f9c
add(mining): Restore internal miner (#9311)
Co-authored-by: Marek <mail@marek.onl>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2025-04-18 08:29:42 +01:00
Arya 4e1bb0e5e1
change(command): Use read-only db instance when running `tip-height` or `copy-state` commands (#9359)
* read tip height from read-only db instance when running "tip-height" command.

* use ReadStateService for the source state in the copy-state cmd
2025-04-11 12:37:28 +00:00
Marek 4e29b097af
Remove the `getblocktemplate-rpcs` Cargo feature (#9401)
* Remove the `getblocktemplate-rpcs` Cargo feature

* Keep the feature in `zebrad/Cargo.toml`
2025-04-10 18:29:48 +00:00
Mark Henderson d061232312
Experiment: `Transaction::V6` variants only (#9339)
* Update main.yml

* feat: auto-sync upstream

* fix: merge errors

* Merge pull request #6 from ShieldedLabs/aphelionz/v6-transactions

Add Transaction::V6 Variants

* fix: enable tx_v6 on zebra-chain when it's enabled on zebra-state

* fix: more feature flag dependencies

* cleanup: remove prop.txt

* Update zebra-chain/src/transaction.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

* cleanup: removing SL-specific workflow

* fix: skip some windows-related denies

* Update deny.toml

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

* fix: better deny.toml entry for windows-core

* Update zebra-chain/src/transaction/serialize.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

* Update zebra-chain/src/transaction/serialize.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

* Update zebra-chain/src/transaction/tests/vectors.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

* Update zebra-chain/src/transaction.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

* feat: passthrough functions for v6 -> v5

* fix: rust fmt

---------

Co-authored-by: Mark Henderson <mark@allspice.io>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2025-04-09 18:52:13 +00:00
Alfredo Garcia de51063957
fix(clippy): last lints (#9371)
* fix clippy lints

* another lint missing
2025-04-03 17:13:29 +00:00
Arya 9591c003ee
Replaces mutex with watch channel (#9262) 2025-02-18 11:03:38 +00:00
Alfredo Garcia 5cf5178d50
feature(rpc): Extend `getinfo` (#9261)
* introduce new fields to `GetInfo`

* add address book to methods for getinfo connections field

* add the version field to getinfo

* track last node error or warning and display it in getinfo rpc method

* add the rest of the fields, minor cleanup

* fix the tests

* clippy
2025-02-18 03:23:55 +00:00
Arya b4211aa1cf
feat(network): Track misbehaving peer connections and ban them past a threshold (#9201)
* feat(network): Add misbehavior tracking for peers in the address book

* - Add a `misbehavior_score` field to `MetaAddr`
- Add a `bans_by_ip` field to `AddressBook`
- Update the `AddressBook::update()` method to:
    - increment misbehavior scores in its entries,
    - add addr ips to bans_by_ip if the score is excessive,
    - remove any addrs at the banned ip
- Avoid responding to `GetAddr` requests with addresses of misbehaving peers (return None from `sanitized()`),
- Avoid new inbound or outbound connections to banned ips

* Drops banned peer connections in peer set's `poll_ready()` method

* Adds rudimentary misbehavior score tracking

* fixes some proptests, moves and removes some TODOs

* fixes lint

* Removes outdated TODO

* Adds stub for acceptance test

* updates call to updated fn

* Stores likely inbound peer connection addresses in address book and return their IPs with the default port instead of the transient port when responding to GetAddr requests

* Avoids gossiping peer addrs from inbound connections

* updates test to check that sanitize won't return inbound peer addrs or addrs with non-zero misbehaviour scores.

updated misbehaviour score for potentially unavoidable errors.

* Updates `generate` RPC to support any network where PoW is disabled.

Updates acceptance test to check that zebrad instances disconnect once one of them advertises a block with an invalid PoW

* minor tangential cleanup

* Finishes acceptance test, sends misbehavior updates from syncer, and always updates address book entries if the update is to their misbehaviour score

* skip test on windows (to minimize risk of port conflict)

* Applies suggestions from code review
2025-02-15 22:02:17 +00:00
Conrado Gouvea 4613dcd259
feat(rpc): add verbose support to getrawmempool (#9249)
* feat(rpc): add verbose support to getrawmempool

* make 'if verbose' clearer

* cargo fmt

* fix unused warnings

* Update zebra-rpc/src/methods/types/get_raw_mempool.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

---------

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2025-02-15 12:45:33 +00:00
Alfredo Garcia 343656cb3c
fix(mining): Advertise mined blocks (#9176)
* add a channel for submit_block notifications to gossip task

* fix tests and gossip logic

* remove the network discriminant and add a test

* clippy suggestions

* fix unused variable

* attempt to fix the conditional compilation issues

* fix default

* Suggestions for "fix(mining): Advertise mined blocks" (#9183)

* refactor error conversions in GetBlockTemplateRpcImpl and rewords documentation

* Replaces polling mined block receiver with a select

* Skip checking that Zebra is likely synced to the network tip before returning block templates on Testnet.

* fixes a clippy lint and a concurrency bug

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2025-02-05 02:24:37 +00:00
Alfredo Garcia 6d01f052c9
chore(release): Zebra release v2.2.0 (#9195)
* add changelog section for 2.2.0

* chore: Release

* update end of support

* Apply suggestions from code review

Co-authored-by: Arya <aryasolhi@gmail.com>

* Update CHANGELOG.md

Co-authored-by: Conrado Gouvea <conrado@zfnd.org>

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
2025-02-04 16:50:10 +00:00
Marek a5a1cdfebe
chore: Minor cleanups (#9198)
* Remove unnecessary clone

* Fix test in zebra-script

* Document that RPC server addr must be set

* Change the log level of missing port msg to info

Having the RPC port not specified is part of Zebra's normal operation,
and is the default config.

* Fix links in docs for tracing

* Update zebrad/src/commands/start.rs

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

---------

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2025-02-04 03:29:49 +00:00
Marek fcf5565b2e
fix(consensus): Verify consensus branch ID in SIGHASH precomputation (#9139)
* Add `has_foo` fns to `Transaction`

* Add V5 SIGHASH test based on consensus branch ID

* Guard `skip_checks` by test features

* Enable `proptest-impl` for `zebrad` in tests

* Simplify conditional compilation

* Enable `proptest-impl` in scanner's dev deps

* Fix conditional compilation in `zebra-chain` tests

* Add error types for `zebra-chain`

* `impl TryFrom<u32> for NetworkUpgrade`

* `impl TryFrom<ConsensusBranchId> for BranchId`

* Rm `fn from_branch_id() -> Option<NetworkUpgrade>`

* Check consensus branch ID in SIGHASH computation

* Simplify tx deserialization

* Rm `impl TryFrom<&Trans> for zp_tx::Trans`

* Update tests

* Update tests

* Add docs for `to_librustzcash`

* Update docs for `PrecomputedTxData::new`

* Document the SIGHASH consensus rules we missed

* Update docs for script validation

* Fix script verification tests

In a previous commit, I erroneously edited the tests so that they'd
expect `Ok`s instead of `Err`s. This commit fixes that.

* Fix spelling

* Impl `NetworkUpgrade::iter()`

* Refactor `Network_upgrade::next_upgrade`

* Impl `NetworkUpgrade::previous_upgrade`

* Impl `Transaction::hash_shielded_data`

* Don't make  `NETWORK_UPGRADES_IN_ORDER` `pub`

* Test `Transaction::sighash` with cons branch ids

* Extend the `consensus_branch_id` test

* Derive `Debug` for `SigHasher`

* Remove the beautiful test for tx verifier

* Remove the "skip check" functionality

* Revert the compilation adjustments

* Apply suggestions from code review

Co-authored-by: Arya <aryasolhi@gmail.com>

* Fix docs

* Clarify panic conditions in docs

* remove duplicated verification

Co-authored-by: Arya <aryasolhi@gmail.com>

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2025-02-01 12:49:59 +00:00
Arya f0c497160a
add(state): Track spending transaction ids by spent outpoints and revealed nullifiers (#8895)
* Adds new column family for [spent_out_loc] -> [spending_tx_loc] with a read method and an update to `prepare_spending_transparent_tx_ids_batch()` for maintaining it when committing blocks to the finalized state.

Adds TODOs for remaining production changes needed for issue #8837.

* add spending tx ids for spent outpoints to non-finalized chains

* adds a `spending_transaction_hash()` read fn for the new column family

* Adds a `TransactionIdForSpentOutPoint` ReadRequest and a `TransactionId` ReadResponse

* Updates snapshots, removes outdated TODOs, moves a TODO.

* Clarifies `spent_utxos` field docs, fixes an assertion

* import TypedColumnFamily from `finalized_state` instead of from the crate.

* adds db format upgrade for spent outpoints -> tx hash

* adds revealing tx ids for nullifiers in finalized and non-finalized states

* updates nullifiers column families to include revaling transaction locations in db format upgrade

* Renames new read state request to `SpendingTransactionId` and updates its type to a `Spend` enum

* refactor db format upgrade and prepare_nullifiers_batch() to use ZebraDb instead of DiskDb, checks cancel_receiver before every db operation

* Adds acceptance test for checking that the finalized state has spending transaction ids

* Adds variant docs to zebra_state::request::Spend enum

* Updates Zebra book with the latest changes to the rocks db column families

* Updates acceptance test to check non-finalized state

* adds a few log messages to the acceptance test, reduces frequency of logs for progress updates

* fixes docs lint and skips test when there is no cached state

* Avoids returning genesis coinbase tx hash when indexes are missing

* Adds `indexer` compilation feature in zebra-state and build metadata in db format version file

* stops tracking new indexes in finalized state when feature is unselected

* stops tracking new indexes in non-finalized state when indexer feature is unselected

* condenses imports

* - adds build metadata when writing db version file, if any.
- adds the build metadata to the db version file before adding indexes.
- deletes indexes when running without the `indexer` feature

* Replaces dropping cf with deleting range of all items to avoid a panic when trying to open the db with that column family.

* Fixes lint, avoids reading coinbase transactions from disk

* updates db column families table

* Document need for having an indexed cached state and use a multi-threaded tokio runtime in has_spending_transaction_ids test

* fixes call to renamed `future_blocks` test fn

* improves test logs and fixes a disk format deserialization bug

* Replaces a new expr with a previously existing constant, fixes typo
2025-01-27 14:34:48 +00:00
Alfredo Garcia 0fe47bbbbb
feature(rpc): Migrate from deprecated `jsonrpc_*` crates to `jsonrpsee` (#9059)
* update methods

* update get block template rpc methods

* update other getblocktemplate files

* upgrade server and middlewares

* upgrade zebrad start command

* remove unused imports

* add a todo for unauthenticated rpc error

* upgrade tests, temporally comment out some of them

* fix the rpc tx queue

* update denies

* fix  links

* clippy

* fir more doc links

* fix queue tests

Co-authored-by: Arya <aryasolhi@gmail.com>

* add suggestions from code review

* fix snapshots

* try `block_on` instead of `now_or_never` in the http middleware

* move import

* Apply suggestions from code review

Co-authored-by: Arya <aryasolhi@gmail.com>

* fix bounds

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2024-12-21 02:29:16 +00:00
Arya 1974fea885
change(rpc): Avoid re-verifying transactions in blocks if those transactions are in the mempool (#8951)
* skips re-verifying transactions in blocks that are present in the mempool.

* clippy fix

* adds a test

* fixes clippy lint

* Use NU6 & V5 tx in new test

* Uses correct consensus branch id in test
2024-12-19 18:46:27 +00:00
Arya 179aaa4c4f
Release v2.1.0 (#9072)
* Updates changelog, crate versions, end of support height, and docs.

* Update CHANGELOG.md

Co-authored-by: Conrado Gouvea <conrado@zfnd.org>

---------

Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
2024-12-06 18:28:56 +00:00
Conrado Gouvea a3bb1e2e05
change(diagnostics): Updates error messages to include inner error types (#9066)
* add: add consensus validation reason to error messages

* add additional instances
2024-12-04 18:45:10 +00:00
Arya 7561e1ef26
change(mempool): Return verification result after attempting to insert transactions in the mempool (#9067)
* change(mempool): Return verification result after attempting to insert transactions in the mempool (#8901)

* respond with mempool verification result after a transaction has been inserted or has failed to be inserted into the mempool

* returns mempool verification errors early, and fixes handling for cancellations or timeouts.

* Adds a comment in test warning against code reuse with buffered services.

* De-duplicates handling for timeout errors
2024-12-04 13:53:06 +00:00
Arya e15184d39b
chore: Fix clippy lints (#9062)
* Allows non-local impls for abscissa derive macros and fixes other clippy lints.

* Fixes formatting
2024-11-29 23:15:20 +00:00
Arya 1dfac40751
add(mempool): Verify transactions with unmined inputs in the mempool (#8857)
* Adds a parameter to `zebra_consensus::router::init()` for accepting a mempool setup argument, adds and uses an `init_test()` fn for passing a closed channel receiver in tests where no mempool service is needed in the transaction verifier.

* Adds a `mempool` argument to the transaction::Verifier constructor (and a `new_for_tests()` constructor for convenience)

* Removes `Clone` impl on `transaction::Verifier` to add mempool oneshot receiver, updates tests.

* Adds TODOs

* updates transaction verifier's poll_ready() method to setup the mempool service handle.

* Updates VerifiedSet struct used in mempool storage

* Updates mempool service and its `Storage` to use the updated `VerifiedSet` `transactions()` return type.

* updates `created_outputs` when inserting or removing a transaction from the mempool's verified set

* Adds a TODO, updates field docs

* Updates `spent_utxos()` to query the mempool for unspent outputs

* Adds `spent_mempool_outpoints` as a field on tx verifier mempool response

* Updates mempool `Downloads` to return the spent_mempool_outpoints from the tx verifier response

* Updates `Storage.insert()` to accept a list of spent mempool transaction outputs

* Adds transaction dependencies when inserting a tx in `VerifiedSet`

* polls mempool svc from tx verifier when a mempool tx that creates transparent outputs has been verified.

adds a TODO for adding a `pending_outputs` field to the mempool Storage

* Adds `pending_outputs` field on mempool Storage and responds to pending outputs requests when inserting new transactions into the mempool's verified set

* replaces `UnminedTxId` type with `transaction::Hash` in mempool's verified set

* prune pending outputs when rejecting and removing same effects.

* Remove dependent transactions from verified set when removing a tx

* updates tests

* appeases clippy.

* removes unused `len()` method

* fixes doc links

* Adds transaction dependencies to the `FullTransactions` response, let the caller handle it (required to avoid moving zip317 tx selection code to mempool)

* updates block template construction to avoid including transactions unless their dependencies have already been added.

* updates tests

* Replaces placeholder setup channel with one that sends the mempool svc to the tx verifier, adds a timeout layer, adds a TODO about a concurrency bug

* Use a single query to check for unspent outputs in the mempool

* Updates `getblocktemplate` method to consider dependencies when sorting transactions for the final template

* fixes clippy lints, removes unnecessary Option in UnspentOutput response variant

* renames type alias and method, adds a TODO to use iteration instead of recursion

* Adds mempool_removes_dependent_transactions() test

* Updates Storage and VerifiedSet clear() methods to clear pending_outputs, created_outputs, and transaction_dependencies, adds TODO to use iteration instead of recursion.

* removes outdated TODO

* Adds a TODO for reporting queued transaction verification results from the mempool from the poll_ready() method

* Adds `mempool_responds_to_await_output` test

* updates mempool_responds_to_await_output test

* Uses iteration instead of recursion in verified set's remove() method and zip317 mod's dependencies_depth() method

* Adds a mempool_request_with_mempool_output_is_accepted test for the transaction verifier

* Moves delay duration before polling the mempool to a constant, uses a shorter timeout for mempool output lookups, adds a `poll_count` to MockService, and updates `mempool_request_with_unmined_output_spends_is_accepted` to check that the transaction verifier polls the mempool after verifying a mempool transaction with transparent outputs

* adds long_poll_input_mempool_tx_ids_are_sorted test

* Adds a `excludes_tx_with_unselected_dependencies` test

* Updates a TODO

* moves `TransactionDependencies` struct to `zebra-node-services`

* Updates `FullTransactions` response variant's `transaction_dependencies` type

* updates zip317 transaction selection for block templates to include dependent transactions

* Moves and refactors zip317 tx selection test to its own module, adds an `unmined_transactions_in_blocks()` method on network

* Removes `unmined_transactions_in_blocks()`  test utility fn from mempool Storage test module and replaces calls to it with calls to the new test method on Network

* Fixes spelling mistake

* Adds `includes_tx_with_selected_dependencies` test

* fixes zip317 block construction issue

* Fixes vectors test

* Update zebra-node-services/src/mempool.rs

* restores `tip_rejected_exact` type

* updates affected tests

* Documents the new argument in `Storage::insert()`, updates outdated comment

* Update zebrad/src/components/mempool/storage/verified_set.rs

* fixes potential issue with calling buffered mempool's poll_ready() method without calling it.

* Avoids removing dependent transactions of transactions that have been mined onto the best chain.

* Updates `spent_utxos()` method documentation

* Avoids sorting getblocktemplate transactions in non-test compilations

* documents PendingOutputs struct

* Apply suggestions from code review

Co-authored-by: Marek <mail@marek.onl>

* cargo fmt

* Applies suggestions from code review

Avoids unnecessarily rejecting dependent transactions of randomly evicted mempool transactions.

Updates `TransactionDependencies::remove_all()` to omit provided transaction id from the list of removed transaction ids.

* Applies suggestions from code review.

* Adds minor comments

* Update zebrad/src/components/mempool/storage/verified_set.rs

Co-authored-by: Marek <mail@marek.onl>

* Remove an outdated comment (#9013)

---------

Co-authored-by: Marek <mail@marek.onl>
2024-11-18 12:16:21 +00:00
pinglanlu 987a34a6e0
chore: remove redundant words in comment (#9015)
Signed-off-by: pinglanlu <pinglanlu@outlook.com>
2024-11-14 13:15:21 +00:00
Marek fef500a728
chore: Release v2.0.1 (#8979)
* Run `cargo update`

* chore: Release

* Update `release-crates-dry-run.sh`

* Update `ESTIMATED_RELEASE_HEIGHT`

* Update `CHANGELOG.md`

* Update `ESTIMATED_RELEASE_HEIGHT`
2024-10-30 11:41:41 -03:00
Marek f45f6f282c
chore: Release v2.0.0 (#8974)
* Update `CHANGELOG.md`

* Update EOS

* Update CHANGELOG.md

Co-authored-by: Arya <aryasolhi@gmail.com>

* Update `release crates` script

* chore: Release

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2024-10-25 22:52:19 +00:00
Alfredo Garcia b89492168a
Release Zebra (`v2.0.0-rc.0`) (#8927)
* changelog

* add panic fix to changelog

* Apply suggestions from code review

Co-authored-by: Arya <aryasolhi@gmail.com>

* chore: Release

* update release-crates-dry-run workflow script

* fix command in release script

* change end of support

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2024-10-11 17:21:07 +00:00
Alfredo Garcia 1511997829
fix clippy lints (#8855) 2024-09-06 15:24:15 +00:00
Arya 6b95d271d8
fix(rpc): Return verification errors from `sendrawtransaction` RPC method (#8788)
* Adds a mempool request to wait for a transaction verification result and uses it in `sendrawtransaction` RPC method

* removes unnecessary clone

* fix clippy warnings

* returns verification errors for all `mempool::Queue` requests, removes `QueueRpc` request variant

* returns oneshot channel in mempool::Response::Queue

* updates a test vector to check for download or verification error in mempool::response::Queued result receiver

* Always require tokio as a dependency in zebra-node-services

* checks for closed channel errors in sendrawtransaction and updates a prop test to check that verification errors are propagated correctly
2024-08-30 20:09:10 +00:00
Arya 8b1be8846e
chore: Release v1.9.0 (#8734)
* Updates `EOS_PANIC_AFTER` end of support constant from 16 weeks to 14 weeks, so the Mainnet panic height is just before the second halving and end of the current dev fund.

* version bumps

* Updates CHANGELOG.md

* Updates changelog

* updates end of support time to 10 weeks

* Adds a note to the changelog about recovering after finalizing blocks from a fork

* Add new changes on main to CHANGELOG.md

* Updates ESTIMATED_RELEASE_HEIGHT

* Apply suggestions from code review

Co-authored-by: Conrado Gouvea <conrado@zfnd.org>

* Update zebrad/src/components/sync/end_of_support.rs

---------

Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
2024-08-28 01:07:37 +00:00
Alfredo Garcia bcd66ad71e
docs(fix): `reject_and_remove_same_effects` docs is wrong (#8776)
* update docs for `reject_and_remove_same_effects`

* Apply suggestions from code review

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>

---------

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-08-20 17:43:41 +00:00
Arya 6181ebe239
Addresses clippy lints (#8723) 2024-07-26 14:29:35 +00:00
dependabot[bot] 0fdd26431e
build(deps): bump the prod group across 1 directory with 15 updates (#8692)
* build(deps): bump the prod group across 1 directory with 15 updates

Bumps the prod group with 15 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.8` | `4.5.9` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.38.0` | `1.38.1` |
| [tinyvec](https://github.com/Lokathor/tinyvec) | `1.7.0` | `1.8.0` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.61` | `1.0.62` |
| [inferno](https://github.com/jonhoo/inferno) | `0.11.19` | `0.11.20` |
| [hyper](https://github.com/hyperium/hyper) | `0.14.29` | `1.3.1` |
| [metrics-exporter-prometheus](https://github.com/metrics-rs/metrics) | `0.15.1` | `0.15.3` |
| [prost](https://github.com/tokio-rs/prost) | `0.12.6` | `0.13.1` |
| [tonic](https://github.com/hyperium/tonic) | `0.11.0` | `0.12.0` |
| [vergen](https://github.com/rustyhorde/vergen) | `8.3.1` | `8.3.2` |
| [tonic-build](https://github.com/hyperium/tonic) | `0.11.0` | `0.12.0` |
| [serde_with](https://github.com/jonasbb/serde_with) | `3.8.3` | `3.9.0` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.6.0` | `1.6.1` |
| [tonic-reflection](https://github.com/hyperium/tonic) | `0.11.0` | `0.12.0` |
| [syn](https://github.com/dtolnay/syn) | `2.0.69` | `2.0.71` |



Updates `clap` from 4.5.8 to 4.5.9
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.8...v4.5.9)

Updates `tokio` from 1.38.0 to 1.38.1
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.38.0...tokio-1.38.1)

Updates `tinyvec` from 1.7.0 to 1.8.0
- [Changelog](https://github.com/Lokathor/tinyvec/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lokathor/tinyvec/compare/v1.7.0...v1.8.0)

Updates `thiserror` from 1.0.61 to 1.0.62
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.61...1.0.62)

Updates `inferno` from 0.11.19 to 0.11.20
- [Changelog](https://github.com/jonhoo/inferno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jonhoo/inferno/compare/v0.11.19...v0.11.20)

Updates `hyper` from 0.14.29 to 1.3.1
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.29...v1.3.1)

Updates `metrics-exporter-prometheus` from 0.15.1 to 0.15.3
- [Changelog](https://github.com/metrics-rs/metrics/blob/main/release.toml)
- [Commits](https://github.com/metrics-rs/metrics/compare/metrics-exporter-prometheus-v0.15.1...metrics-exporter-prometheus-v0.15.3)

Updates `prost` from 0.12.6 to 0.13.1
- [Release notes](https://github.com/tokio-rs/prost/releases)
- [Changelog](https://github.com/tokio-rs/prost/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/prost/compare/v0.12.6...v0.13.1)

Updates `tonic` from 0.11.0 to 0.12.0
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.11.0...v0.12.0)

Updates `vergen` from 8.3.1 to 8.3.2
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/commits)

Updates `tonic-build` from 0.11.0 to 0.12.0
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.11.0...v0.12.0)

Updates `serde_with` from 3.8.3 to 3.9.0
- [Release notes](https://github.com/jonasbb/serde_with/releases)
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.8.3...v3.9.0)

Updates `bytes` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.6.0...v1.6.1)

Updates `tonic-reflection` from 0.11.0 to 0.12.0
- [Release notes](https://github.com/hyperium/tonic/releases)
- [Changelog](https://github.com/hyperium/tonic/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/tonic/compare/v0.11.0...v0.12.0)

Updates `syn` from 2.0.69 to 2.0.71
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.69...2.0.71)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: tinyvec
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: inferno
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: prod
- dependency-name: metrics-exporter-prometheus
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: prost
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod
- dependency-name: tonic
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod
- dependency-name: vergen
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: tonic-build
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod
- dependency-name: serde_with
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
- dependency-name: tonic-reflection
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: prod
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: prod
...

Signed-off-by: dependabot[bot] <support@github.com>

* make changes for hyper 1.0

* unrelated clippy

* fix panic

* update denies

* add missing deny.toml

* add more denies for all features

* add timeout feature to tower in zebra-grpc

* cargo vet

* cargo vet prune

* codespell

* change waiting message

* remove hyper direct dependency from zebra-rpc

* fix doc typos

* simplify tracing endpoint

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2024-07-23 15:44:31 +00:00
Arya 14463a7f5d
add(rpc): Add a tonic server in zebra-rpc (#8674)
* adds a tonic server

* Adds a test stub, moves method impls to their own modules, minor fixes.

* Moves indexer rpc mod behind a feature, adds a config field for its listen address, and initializes the indexer RPC when zebrad starts

* Skips tonic_build() in zebra-rpc build script unless indexer-rpcs feature is selected, simplifies indexer.proto file, makes tonic deps optional

* formats zebra-rpc Cargo.toml

* Adds tokio_stream dependency, adds chain_tip_change field to IndexerRPC, and implements a simple version of the chain_tip_change RPC method

* passes latest chain tip to indexer::server::init from start cmd and  updates vectors test

* Update zebra-rpc/src/config.rs

* fixes a race condition in trusted_chain_sync_handles_forks_correctly
2024-07-16 12:25:31 +00:00
Alfredo Garcia 1238ec0c63
tests(scanner): Move zebra scanner tests to binary (#8659)
* readd the scanner tests in the new binary context

* remove commented out tests from zebrad

* add Cargo.lock

* add local copy of `ZECPAGES_SAPLING_VIEWING_KEY` to binary scanning tests

* moves scanner-results-reader to zebra-scan, adds zebrad bin to zebra-scan, adds a short sleep before trying to connect to gRPC server in test

* always include zebrad dependency in zebra-scan

* renames zebrad bin in zebra-scan to zebrad-for-scanner

* skip test when a cached state is missing

* remove scanning config from zebrad

* move `scan_task_commands` out of zebrad acceptance tests

* remove scanner config from zebrad

* do not panic if env var is not there

* re enable start_scan_where left, remove shielded-scan feature foir scanning tests in CI

* change app names

* uncomment test

* fix the scanner tests in CI by changing the test command

* add log needed by CI?

* move test

* rename trait, docs fix

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2024-07-15 21:15:04 +00:00
Arya 4213e82a4f
change(rpc): Adds a TrustedChainSync struct for keeping up with Zebra's non-finalized best chain from a separate process (#8596)
* Adds an init_read_only() fn in zebra-state

* moves elasticsearch initialization to `FinalizedState::new_with_debug()`

* Updates callers of `FinalizedState::{new, new_with_debug}` to pass a bool to try enabling elasticsearch

* Adds a non-finalized read state syncer to zebra-rpc

* moves, removes, updates, or addresses TODOs

* reduces disk IO while waiting for the a new chain tip & updates the chain tip sender when the finalized tip has changed.

* Returns boxed errors from RpcRequestClient methods instead of color_eyre type

* Avoids resetting the non-finalized state when there's an error getting a block unless it has the missing block error code.

* Adds stub for acceptance test(s) and removes outdated TODO

* adds TODOs for testing

* Tests that `ChainTipChange` is updated when the non-finalized best chain grows

* adds a last_chain_tip_hash and uses a FuturesOrdered for getblock requests

* Fixes a pre-flush sync issue by using a secondary db instead of a read-only db

* Moves disk IO to blocking tasks

* Updates acceptance test to how forks are handled

* Checks synced read state for all of the expected blocks

* checks that there isn't a tip change until the best chain changes

* checks for chain tip changes in test

* run test without feature

* fixes lint

* Fixes compilation/test issues

* Adds docs / comments, moves HexData out from behind the getblocktemplate-rpcs feature flag, moves test behind the mining feature flag.

* Fixes lints

* removes syncer and rpc-syncer features

* Fixes test on Windows, applies suggestions from code review

* Updates `POLL_DELAY` documentation

* Updates method docs

* Fixes a test bug

* use rpc-client feature in zebrad production code

* use rpc-client feature in zebra-node-services for building zebra-rpc crate

---------

Co-authored-by: Pili Guerra <mpguerra@users.noreply.github.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2024-07-09 14:15:47 +00:00
Marek 0d8b10b95f
chore: Release v1.8.0 (#8655)
* Update `CHANGELOG.md`

* chore: Release

* Update versions in the release dry-run workflow

* Update EOS

* Estimate release height to ~ upcoming Tuesday

* Apply suggestions from code review

Co-authored-by: Arya <aryasolhi@gmail.com>

* Add a "Summary" title to the changelog

* Remove the summary title

---------

Co-authored-by: Arya <aryasolhi@gmail.com>
2024-07-02 16:46:49 +00:00
Marek 736f5f5415
change(scan): Remove support for starting the scanner at `zebrad` startup (#8594)
* Remove code that starts the scanner

* Update CHANGELOG

* Disable tests of the scanner

* Disable scanning tests in CI

---------

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2024-06-12 18:39:00 +00:00
Arya 3147d20f18
add(book): Adds a section on Regtest usage to the Zebra book (#8526)
* Always set mempool.debug_enable_at_height to 0 on Regtest

* Adds a Regtest with Zebra page to the book

* Deduplicates calls to is_regtest() in start fn

* upgrade min rust version in zebrad

* Display full network name in logs except for Mainnet and default Testnet

* Add example logs/code to regtest section of the book

* apply some extra information

Co-authored-by: Arya <aryasolhi@gmail.com>

* Apply suggestions from code review

Co-authored-by: Marek <mail@marek.onl>

---------

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
Co-authored-by: Marek <mail@marek.onl>
Co-authored-by: Pili Guerra <mpguerra@users.noreply.github.com>
2024-05-22 15:14:22 +00:00
Arya 0f5450f565
change(release): Reduce the end of support time from 20 weeks to 16 weeks (#8530)
* Reduce the end of support time from 20 weeks to 16 weeks.

* Update release-process section of the book

* Adds changelog entry

* Update CHANGELOG.md

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

---------

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2024-05-15 21:12:52 +00:00
Arya a6569d4881
change(mining): Restores parts of the internal-miner feature for use on Regtest (#8506)
* Allow configurable Nu5 activation height on Regtest

* Fixes test

* removes outdated TODO

* Adds `current_with_activation_height()` method and uses it in `Commitment::from_bytes()`

* Enables parts of the internal miner for use on Regtest when the solution isn't checked

* Update internal miner config field docs
2024-05-10 18:28:05 +00:00
Arya 15e1096826
change(consensus): Allow configurable NU5 activation height on Regtest (#8505)
* Allow configurable Nu5 activation height on Regtest

* Fixes test

* removes outdated TODO

* Adds `current_with_activation_height()` method and uses it in `Commitment::from_bytes()`
2024-05-08 14:46:13 +00:00
Alfredo Garcia 0ca01e6a46
chore: Release v1.7.0 (#8507)
* changelog and readme for 1.7.0 release

* chore: Release

* update zebra-scan and zebra-grpc to the release crates dry run script

* update ESTIMATED_RELEASE_HEIGHT

* update the release period to 6 weeks

* update release block

* Apply suggestions from code review

Co-authored-by: Marek <mail@marek.onl>

* Apply suggestions from code review

Co-authored-by: Marek <mail@marek.onl>

* Apply suggestions from code review

Co-authored-by: Marek <mail@marek.onl>

---------

Co-authored-by: Marek <mail@marek.onl>
2024-05-07 14:25:50 +00:00
Arya 8a786fe6ce
add(consensus): Adds block construction and validation for NU5 from block height 1 for Regtest (#8475)
* Always activate Canopy at Height(1) on Regtest

* Ignores the zip 212 grace period on configured Testnets and Regtest

* - Returns early when there is no Heartwood activation height when creating or updating HistoryTree
- Skips call to `check::legacy_chain()` when no NU5 activation height is set (it would return immediately anyway)
- Replaces `.map()` with `.filter_map()` in `NetworkUpgrade::target_spacings()`
- Removes outdated TODO

* - When proof of work is disabled, skips checking if Zebra is synced to the network tip in the getblocktemplate method

* Sets full_verifier_utxo_lookahead to Height::MIN instead of panicking

* When network is regtest, skips starting sync task and commits the genesis block if it's missing in the state

* updates/fixes test config

* Adds test for committing Canopy blocks on Regtest

* - Updates median time past and difficulty checks to use fewer than 11/17/28 blocks

* uses SLOW_START_INTERVAL of 0 if PoW is disabled, adds TODOs

* Update getblocktemplate method to return reserved chain history activation root hash, uses Nu5 at height 1

Test passes.

* Updates test to expect NU5 as the default nu activation at Height(1)

* Removes invalid difficulty snapshot

* fixes tests

* removes regtest NU5 activation height config field

* Apply suggestions from code review

* Update zebra-state/src/service/check/difficulty.rs

Co-authored-by: Marek <mail@marek.onl>

* Update zebra-state/src/service/check/difficulty.rs

* Updates docs/comments, renames an argument

---------

Co-authored-by: Marek <mail@marek.onl>
2024-05-02 19:43:42 +00:00
Alfredo Garcia d869ec6fe4
change(release): Adjust estimated release interval and end of support (#8429)
* change estimated release interval and end of support

* update readme
2024-04-24 19:22:07 +00:00
Alfredo Garcia 887d4a2457
fix(beta-toolchain): Warnings (#8404)
* fix beta imports and other warnings

* clippy lints beta

* move attributes to after docs

Co-authored-by: Marek <mail@marek.onl>

* move some code to test module

* implement display instead of direct tostring for LongPollId

Co-authored-by: Arya <aryasolhi@gmail.com>

* fix typo

---------

Co-authored-by: Marek <mail@marek.onl>
Co-authored-by: Arya <aryasolhi@gmail.com>
2024-04-18 01:45:22 +00:00
Arya 16a39f89d0
add(consensus/network): Add an empty `Parameters` struct in `Network::Testnet` (#8368)
* minor cleanup and rename

* Adds an empty NetworkParameters struct to Network::Testnet variant, updates production code.

* Updates tests

* Adds `NetworkKind` and uses it instead of `Network` in `HistoryTreeParts` and `transparent::Address`

* Adds a [network.testnet_parameters] section to the config, uses `NetworkKind` as zebra_network::Config::network field type, and converts 'Network' to `NetworkKind` before serializing

* Applies some suggestions from code review

* Applies suggestions from code review

* returns b58 prefix constants directly to remove From<NetworkKind> impl for zcash_primitives::consensus::Network

* Applies more suggestions from code review.

* moves conversions to zcash_primitives::consensus::Network to where they're used.

* Apply suggestions from code review

Co-authored-by: Marek <mail@marek.onl>

* rename `network` variables and method names typed as NetworkKind to `network_kind`

* use only test block heights for the network associated with them

* Applies more suggestions from code review.

* Rename `NetworkParameters` to `Parameters` and move it a new `testnet` module

---------

Co-authored-by: Marek <mail@marek.onl>
2024-04-17 02:20:34 +00:00
Arya 1498f8e24e
Release v1.6.1 (#8396)
* Updates crates versions

* Updates end of support height

* Updates README

* Updates CHANGELOG

* Updates Known Issues in README

* Updates Changelog

* updates release-crates-dry-run.sh

* updates install.md and docker.md

* Update CHANGELOG.md

Co-authored-by: Marek <mail@marek.onl>

---------

Co-authored-by: Marek <mail@marek.onl>
2024-04-15 23:24:40 +00:00
Elijah Hampton 49fca309cf
Adds logging of column family size and database size on startup and s… (#8336)
* Adds logging of column family size and database size on startup and shutdown

* Changes log level of column families size strings to debug. Adds TODO comment to use human_bytes crate for human-readable format of metrics. Adds print_db_metrics function to ZebraDb struct.

* Calls enumerate() on column_families to access index var

* Resolves cargo fmt checker results

* Resolves clippy lint

* Runs and fixes changes from fmt, clippy, check and test

* Removes prop.txt

* minor doc changes

---------

Co-authored-by: Elijah Hampton <elijahhampton@MBP-de-Elijah-2.lan>
Co-authored-by: Pili Guerra <mpguerra@users.noreply.github.com>
Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
2024-03-29 00:00:28 +00:00