Skip to content

Feature dan2 #6831

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 55 commits into
base: development
Choose a base branch
from
Draft

Feature dan2 #6831

wants to merge 55 commits into from

Conversation

stringhandler
Copy link
Collaborator

Description

Motivation and Context

How Has This Been Tested?

What process can a PR reviewer use to test or verify this change?

Breaking Changes

  • None
  • Requires data directory on base node to be deleted
  • Requires hard fork
  • Other - Please specify

sdbondi and others added 30 commits September 8, 2023 11:21
Description
---
Add claim public key to validator node registration

Motivation and Context
---
This claim key is informational and will be used in L2 to restrict fee
claims to a particular signing key

How Has This Been Tested?
---
Existing tests

What process can a PR reviewer use to test or verify this change?
---
Run register validator node wallet command
<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [x] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
Description
---
Add clone to BalancedBinaryMerkleTree.

Motivation and Context
---
In the upcoming PR to cache the BalancedBinaryMerkleTree it will come
handy.

Breaking Changes
---

- [x] None
# Conflicts:
#	Cargo.lock
#	applications/minotari_app_grpc/Cargo.toml
#	applications/minotari_app_grpc/src/conversions/sidechain_feature.rs
#	applications/minotari_app_utilities/Cargo.toml
#	applications/minotari_console_wallet/Cargo.toml
#	applications/minotari_console_wallet/src/grpc/wallet_grpc_server.rs
#	applications/minotari_merge_mining_proxy/Cargo.toml
#	applications/minotari_miner/Cargo.toml
#	applications/minotari_node/Cargo.toml
#	base_layer/common_types/Cargo.toml
#	base_layer/contacts/Cargo.toml
#	base_layer/core/Cargo.toml
#	base_layer/core/src/blocks/genesis_block.rs
#	base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
#	base_layer/core/src/proto/sidechain_feature.rs
#	base_layer/core/src/transactions/transaction_components/side_chain/validator_node_signature.rs
#	base_layer/key_manager/Cargo.toml
#	base_layer/mmr/Cargo.toml
#	base_layer/p2p/Cargo.toml
#	base_layer/service_framework/Cargo.toml
#	base_layer/wallet/Cargo.toml
#	base_layer/wallet_ffi/Cargo.toml
#	common/Cargo.toml
#	common/tari_features/Cargo.toml
#	common_sqlite/Cargo.toml
#	comms/core/Cargo.toml
#	comms/dht/Cargo.toml
#	comms/rpc_macros/Cargo.toml
#	infrastructure/derive/Cargo.toml
#	infrastructure/shutdown/Cargo.toml
#	infrastructure/storage/Cargo.toml
#	infrastructure/test_utils/Cargo.toml
Description
---

Motivation and Context
---

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
# Conflicts:
#	Cargo.lock
#	applications/minotari_app_grpc/Cargo.toml
#	applications/minotari_app_utilities/Cargo.toml
#	applications/minotari_console_wallet/Cargo.toml
#	applications/minotari_console_wallet/src/ui/widgets/multi_column_list.rs
#	applications/minotari_merge_mining_proxy/Cargo.toml
#	applications/minotari_miner/Cargo.toml
#	applications/minotari_node/Cargo.toml
#	base_layer/common_types/Cargo.toml
#	base_layer/contacts/Cargo.toml
#	base_layer/core/Cargo.toml
#	base_layer/core/src/blocks/genesis_block.rs
#	base_layer/key_manager/Cargo.toml
#	base_layer/mmr/Cargo.toml
#	base_layer/p2p/Cargo.toml
#	base_layer/service_framework/Cargo.toml
#	base_layer/wallet/Cargo.toml
#	base_layer/wallet_ffi/Cargo.toml
#	buildtools/multinet_envs.sh
#	common/Cargo.toml
#	common/tari_features/Cargo.toml
#	common_sqlite/Cargo.toml
#	comms/core/Cargo.toml
#	comms/dht/Cargo.toml
#	comms/rpc_macros/Cargo.toml
#	infrastructure/derive/Cargo.toml
#	infrastructure/shutdown/Cargo.toml
#	infrastructure/storage/Cargo.toml
#	infrastructure/test_utils/Cargo.toml
Description
---
Based on #6078 by @Cifko but with latest development updates - for some
reason I could not push to the PR directly
Update feature-dan2 from development

THIS TIME I SET THE BASE BRANCH TO `feature-dan2`!

Motivation and Context
---
Keep feature branch in sync

Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other 

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Aaron Feickert <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Co-authored-by: Cayle Sharrock <[email protected]>
Co-authored-by: SW van Heerden <[email protected]>
Co-authored-by: Brian Pearce <[email protected]>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: pad <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Stefcek <[email protected]>
Co-authored-by: stringhandler <[email protected]>
Co-authored-by: Cifko <[email protected]>
Description
---

Updates feature-dan2 to latest development

Motivation and Context
---

Specifically to include PR #6148 which fixes the build for a fresh
Cargo.lock

Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Aaron Feickert <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Co-authored-by: Cayle Sharrock <[email protected]>
Co-authored-by: SW van Heerden <[email protected]>
Co-authored-by: Brian Pearce <[email protected]>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: pad <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Stefcek <[email protected]>
Co-authored-by: stringhandler <[email protected]>
Co-authored-by: Cifko <[email protected]>
# Conflicts:
#	.github/workflows/base_node_binaries.json
#	.github/workflows/base_node_binaries.yml
#	Cargo.lock
#	Cargo.toml
#	README.md
#	applications/minotari_app_grpc/Cargo.toml
#	applications/minotari_app_grpc/build.rs
#	applications/minotari_app_grpc/proto/types.proto
#	applications/minotari_app_utilities/Cargo.toml
#	applications/minotari_app_utilities/src/lib.rs
#	applications/minotari_console_wallet/Cargo.toml
#	applications/minotari_console_wallet/src/init/mod.rs
#	applications/minotari_console_wallet/src/lib.rs
#	applications/minotari_console_wallet/src/ui/components/register_template_tab.rs
#	applications/minotari_console_wallet/src/ui/state/app_state.rs
#	applications/minotari_merge_mining_proxy/Cargo.toml
#	applications/minotari_merge_mining_proxy/src/block_template_data.rs
#	applications/minotari_merge_mining_proxy/src/block_template_protocol.rs
#	applications/minotari_merge_mining_proxy/src/error.rs
#	applications/minotari_merge_mining_proxy/src/proxy.rs
#	applications/minotari_merge_mining_proxy/src/run_merge_miner.rs
#	applications/minotari_miner/Cargo.toml
#	applications/minotari_miner/src/run_miner.rs
#	applications/minotari_node/Cargo.toml
#	applications/minotari_node/src/bootstrap.rs
#	applications/minotari_node/src/config.rs
#	applications/minotari_node/src/grpc/base_node_grpc_server.rs
#	applications/minotari_node/src/lib.rs
#	base_layer/chat_ffi/Cargo.toml
#	base_layer/common_types/Cargo.toml
#	base_layer/common_types/src/chain_metadata.rs
#	base_layer/common_types/src/lib.rs
#	base_layer/contacts/Cargo.toml
#	base_layer/contacts/src/chat_client/Cargo.toml
#	base_layer/core/Cargo.toml
#	base_layer/core/src/base_node/proto/chain_metadata.rs
#	base_layer/core/src/base_node/proto/wallet_rpc.rs
#	base_layer/core/src/base_node/sync/horizon_state_sync/synchronizer.rs
#	base_layer/core/src/base_node/sync/rpc/sync_utxos_task.rs
#	base_layer/core/src/base_node/sync/sync_peer.rs
#	base_layer/core/src/blocks/genesis_block.rs
#	base_layer/core/src/chain_storage/blockchain_database.rs
#	base_layer/core/src/chain_storage/db_transaction.rs
#	base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
#	base_layer/core/src/chain_storage/tests/blockchain_database.rs
#	base_layer/core/src/common/mod.rs
#	base_layer/core/src/common/one_sided.rs
#	base_layer/core/src/consensus/consensus_constants.rs
#	base_layer/core/src/consensus/consensus_encoding/hashing.rs
#	base_layer/core/src/lib.rs
#	base_layer/core/src/proof_of_work/monero_rx/helpers.rs
#	base_layer/core/src/proof_of_work/monero_rx/mod.rs
#	base_layer/core/src/test_helpers/blockchain.rs
#	base_layer/core/src/transactions/key_manager/error.rs
#	base_layer/core/src/transactions/key_manager/memory_db_key_manager.rs
#	base_layer/core/src/transactions/key_manager/mod.rs
#	base_layer/core/src/transactions/mod.rs
#	base_layer/core/src/transactions/test_helpers.rs
#	base_layer/core/src/transactions/transaction_components/encrypted_data.rs
#	base_layer/core/src/transactions/transaction_components/test.rs
#	base_layer/core/tests/helpers/block_builders.rs
#	base_layer/core/tests/helpers/sample_blockchains.rs
#	base_layer/core/tests/helpers/sync.rs
#	base_layer/core/tests/tests/block_validation.rs
#	base_layer/core/tests/tests/node_service.rs
#	base_layer/core/tests/tests/node_state_machine.rs
#	base_layer/key_manager/Cargo.toml
#	base_layer/mmr/Cargo.toml
#	base_layer/p2p/Cargo.toml
#	base_layer/p2p/src/auto_update/mod.rs
#	base_layer/service_framework/Cargo.toml
#	base_layer/tari_mining_helper_ffi/Cargo.toml
#	base_layer/tari_mining_helper_ffi/src/lib.rs
#	base_layer/wallet/Cargo.toml
#	base_layer/wallet/src/output_manager_service/handle.rs
#	base_layer/wallet/src/output_manager_service/storage/database/mod.rs
#	base_layer/wallet/src/transaction_service/protocols/transaction_validation_protocol.rs
#	base_layer/wallet/src/transaction_service/service.rs
#	base_layer/wallet/src/transaction_service/storage/models.rs
#	base_layer/wallet/tests/output_manager_service_tests/service.rs
#	base_layer/wallet/tests/output_manager_service_tests/storage.rs
#	base_layer/wallet/tests/transaction_service_tests/service.rs
#	base_layer/wallet_ffi/Cargo.toml
#	base_layer/wallet_ffi/src/lib.rs
#	changelog-development.md
#	changelog-nextnet.md
#	common/Cargo.toml
#	common/config/presets/b_peer_seeds.toml
#	common/src/configuration/network.rs
#	common/src/configuration/utils.rs
#	common/tari_features/Cargo.toml
#	common_sqlite/Cargo.toml
#	comms/core/Cargo.toml
#	comms/dht/Cargo.toml
#	comms/rpc_macros/Cargo.toml
#	infrastructure/derive/Cargo.toml
#	infrastructure/libtor/Cargo.toml
#	infrastructure/metrics/Cargo.toml
#	infrastructure/shutdown/Cargo.toml
#	infrastructure/storage/Cargo.toml
#	infrastructure/tari_script/Cargo.toml
#	infrastructure/test_utils/Cargo.toml
#	integration_tests/Cargo.toml
#	integration_tests/src/merge_mining_proxy.rs
#	integration_tests/src/miner.rs
#	integration_tests/tests/features/StressTest.feature
#	integration_tests/tests/features/TransactionInfo.feature
#	integration_tests/tests/features/WalletMonitoring.feature
#	integration_tests/tests/features/WalletQuery.feature
#	integration_tests/tests/features/WalletRoutingMechanism.feature
#	integration_tests/tests/features/WalletTransactions.feature
#	integration_tests/tests/features/WalletTransfer.feature
#	integration_tests/tests/steps/mining_steps.rs
#	integration_tests/tests/steps/node_steps.rs
#	integration_tests/tests/steps/wallet_steps.rs
#	package-lock.json
Description
---
Allows the registration of multiple second layers for validator nodes,
templates and burns. The default second layer (Tari) is specified by
leaving the `validator_network` field empty. For other networks, they
can either be private, where the private key is kept secret or public in
which case the `validator_network` private key can be exposed and
published.

Motivation and Context
---
Specifically for testing it will be useful to have multiple second layer
testnets run on the same base layer (I intend to use `igor`). For
example we may want to run a second layer "ContractNet" specifically for
users who wish to run templates and contracts but don't want to test
running validator nodes. In contrast, users who are interested in
testing validator nodes can run on the default second layer.

This way of doing it also allows users who wish to run their own private
networks, with their own validator nodes, to run them.

How Has This Been Tested?
---
Tested manually, and busy testing with changes to the second layer and
dan-testing

What process can a PR reviewer use to test or verify this change?
---
You can register templates and burns in the console wallet. Registering
validator nodes is a bit harder.

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [x] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
BREAKING CHANGE: The merkle tree for validator nodes is calculated in a
new manner
stringhandler and others added 18 commits April 4, 2024 10:04
Description
---
Adds a log and console warning if a GRPC method is called but not
allowed
Easier calling of template registration
* development:
  fix!: avoid `Encryptable` domain collisions (#6275)
  ci(fix): docker image build fix and ci improvements (#6270)
  feat: keep smt memory (#6265)
  feat: show warning when GRPC method is disallowed (#6246)
  fix(chat): metadata panic (#6247)
  feat: add monerod detection as an option to the merge mining proxy (#6248)
  chore(deps): bump h2 from 0.3.24 to 0.3.26 (#6250)
  feat: improve lmdb dynamic growth (#6242)
  feat: allow wallet type from db to have preference (#6245)
  feat: prevent mempool panic (#6239)
  ci: bump nightly version (#6241)
  feat: add validation for zero confirmation block sync (#6237)
  feat: new template with coinbase call (#6226)
  feat: improve wallet sql queries (#6232)
  chore: remove ahash as dependancy (#6238)
  feat: add dynamic growth to lmdb (#6231)
  chore(deps): bump borsh from 0.10.3 to 1.0.0 in /applications/minotari_ledger_wallet (#6236)
Motivation and Context
---
There was a bug in the wallet when using non-interactive that was fixed
in #6245

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
Description
---
Use workspace version for more consistent versioning
Description
---
Merged development branch into feature-dan2

Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [x] Requires hard fork
- [ ] Other - Please specify

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: SW van Heerden <[email protected]>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Co-authored-by: Aaron Feickert <[email protected]>
Co-authored-by: Brian Pearce <[email protected]>
Co-authored-by: stringhandler <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Richard Bertok <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Description
---
Update feature-dan2 to latest development


Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [x] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
Description
---
We allow here only a configured (in Consensus constants) number of
validator nodes to be active in an epoch, so this way we avoid having
way too much validators appear at the same time.
All the validator nodes are saved to the blockchain database, when there
is a new validator node registration UTXO, but with a different `start
epoch` that is calculated from the already saved validator nodes.
There is a new gRPC method called `GetValidatorNodeChanges`, where we
can ask base node to give back all the validator node additions and
deletions in the given start/end height range.
When Layer-2 scans new blocks and sees that there is a change in the
validator node set, simply calls this new grpc method and adds/removes
validator nodes. This way base node controls fully how many nodes are
registered at which epoch.

Motivation and Context
---
Layer-2 validator nodes are registered all at once when they were added
to the chain with a special UTXO, but it allows to register too many
nodes at the same time, so consensus can catch up much slower.

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->

---------

Co-authored-by: Stan Bondi <[email protected]>
Description
---
Updated git2 version to latest one to be able to use latest cargo
generate as a lib in tari-dan.

Motivation and Context
---

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
Description
---
For Tari CLI I needed a new grpc method on wallet to get the calculated
fee for a new template registration.

Motivation and Context
---

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
Description
---
sidechain eviction proof transaction
validations for eviction proof
only single validator node registration permitted

Motivation and Context
---

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [x] Requires hard fork
- [ ] Other - Please specify

BREAKING CHANGE: validator node DB changed, new output features
Description
---

Add and verify command inclusion proof

Motivation and Context
---
Adds a JMT implementation to tari_jellyfish crate. Useful for state tree
inclusion proofs. Currently used to validate eviction command commit
proofs

How Has This Been Tested?
---
Cucumber test on tari-dan repo

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify
BREAKING CHANGE: eviction proof changed
Description
---
fix: add shard_key to ValidatorNodeChange

Motivation and Context
---
This is useful for the validator node base layer scanner.

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Improved validator node management by introducing a new field for
specifying a shard key. This enhancement helps streamline node
identification in sharded network contexts and ensures the correct
format is maintained for better data integrity.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Copy link
Contributor

coderabbitai bot commented Mar 3, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

sdbondi and others added 7 commits April 9, 2025 11:18
Description
---
chore: update feature dan2 from development

Motivation and Context
---
Use latest development changes in feature-dan2 branch

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: SW van Heerden <[email protected]>
Co-authored-by: Richard Bertok <[email protected]>
Co-authored-by: stringhandler <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Co-authored-by: Brian Pearce <[email protected]>
Co-authored-by: stringhandler <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cayle Sharrock <[email protected]>
Co-authored-by: Aaron Feickert <[email protected]>
Co-authored-by: danhwang88 <[email protected]>
Co-authored-by: Maciej Kożuszek <[email protected]>
Co-authored-by: Misieq01 <[email protected]>
Co-authored-by: Marcin Papież <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: brianp <[email protected]>
Co-authored-by: ns212 <[email protected]>
Description
---
feat!: add vn exit UTXO (base node and wallet)

Motivation and Context
---
Allows validator nodes to exit voluntarily in a subsequent epoch. Adds a
new consensus constant `vn_registration_max_exits_per_epoch`, which
limits the number of exits queued per epoch e.g. if epoch 15 has
`vn_registration_max_exits_per_epoch` exits and epoch 16 has
`vn_registration_max_exits_per_epoch - 1` exits, then the validator will
exit at epoch 16.

How Has This Been Tested?
---
Unit tests - TODO: cucumbers and manual testing once integrated into the
L2 code

Ref tari-project/tari-ootle#1398

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [ ] Requires data directory on base node to be deleted
- [x] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->

BREAKING CHANGE: Additional sidechain output type variant (hard fork).
Incompatible changes in protobuf.
Description
---
fix(sidechain)!: smaller sidechain proof header
fix(sidechain)!: update fields
updated commands

Motivation and Context
---
Updates the sidechain proof to contain a metadata hash instead of
several unused fields.
Also updated the block hash construction to be versioned and type safe -
allowing for compile errors
should the hash construction change on L1/L2.

How Has This Been Tested?
---
Existing and new unit tests on L2 repo + existing cucumber on L2

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [ ] Requires data directory on base node to be deleted
- [x] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
  - Introduced a new metadata hash field for sidechain block headers.

- **Bug Fixes**
- Updated test fixtures with refreshed cryptographic and blockchain
state data.

- **Refactor**
- Simplified sidechain block header structure by removing several
fields, including foreign indexes hash, extra data hash, and related
fields.
- Streamlined command validation logic and removed unused command
variants.
- Updated hash calculation methods and introduced a new block metadata
hasher.

- **Chores**
  - Cleaned up imports and removed unused functions.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Description
---
Minor API improvements/fixes to facilitate usage with the L2

Motivation and Context
---
Changes required for tari-project/tari-ootle#1413
to compile.

- The QuorumDecision type to be used from the tari_sidechain crate
instead of a duplicate type in both repos.
- `+ ?Sized` should have already been added to the hasher since it is
more permissive, specifically used to allow hashing of slices (`&[T]`
did not work previously, `&Vec<T>` required)
- Allows the QC id to be calculated from the QuorumCertificate sidechain
type

How Has This Been Tested?
---
N/A

What process can a PR reviewer use to test or verify this change?
---
N/A
<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced decision handling with new utility methods and string
representations for quorum decisions.
  - Improved error messaging for invalid decision inputs.

- **Refactor**
- Expanded support for serialization methods to accept a wider range of
data types.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Description
---
Make `tari_consensus_hasher` public
Define QC signature fields
Remove QC ID calculation (not needed on L1)
Fix bug in chain link verification

Motivation and Context
---
tari-project/tari-ootle#1437

How Has This Been Tested?
---

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Introduced new functions for proposal and timeout vote signature
hashing.
- Improved error messages for quorum certificate signature verification,
now including specific block IDs.

- **Refactor**
- Updated signature verification logic for quorum certificates, changing
how messages are constructed and hashed.
- Simplified error handling by allowing original errors to propagate
instead of mapping to generic messages.

- **Removals**
	- Removed the method for calculating quorum certificate IDs.
- Removed legacy hasher functions related to quorum certificates and
vote signatures.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Description
---
fix(sidechain): verify-side fixes for commit proofs

Motivation and Context
---

Related to proof changes in upcoming L2 PR

How Has This Been Tested?
---
Manually

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [x] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->
Description
---
chore: update feature-dan2 with latest development

Motivation and Context
---
Update Ootle feature branch with latest code from development

How Has This Been Tested?
---
Manually

What process can a PR reviewer use to test or verify this change?
---

<!-- Checklist -->
<!-- 1. Is the title of your PR in the form that would make nice release
notes? The title, excluding the conventional commit
tag, will be included exactly as is in the CHANGELOG, so please think
about it carefully. -->


Breaking Changes
---

- [ ] None
- [x] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [ ] Other - Please specify

<!-- Does this include a breaking change? If so, include this line as a
footer -->
<!-- BREAKING CHANGE: Description what the user should do, e.g. delete a
database, resync the chain -->

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: SW van Heerden <[email protected]>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: C.Lee Taylor <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Co-authored-by: stringhandler <[email protected]>
Co-authored-by: Marcin Papież <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: brianp <[email protected]>
Co-authored-by: Brian Pearce <[email protected]>
Co-authored-by: ns212 <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Keith Simon <[email protected]>
Co-authored-by: Hansie Odendaal <[email protected]>
Co-authored-by: SolfataraEmit <[email protected]>
Co-authored-by: Maciej Kożuszek <[email protected]>
Co-authored-by: Riccardo Spagni <[email protected]>
Co-authored-by: Richard Bertok <[email protected]>
Co-authored-by: MoneroOcean <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants