Skip to content
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

Log consensus-key signer address if specified #2158

Merged
merged 3 commits into from
Sep 5, 2024
Merged

Conversation

acerone85
Copy link
Contributor

@acerone85 acerone85 commented Sep 3, 2024

Linked Issues/PRs

Closes #2132

Description

Checks if the consensus key is available when running the node, in which case it logs its corresponding public key address

  • added two functions public_key and address to the signer::SignMode struct.
  • changed main binary to display the result of SignMode::address when the consensus key is specified

Manual testing:

./target/debug/fuel-core run --db-type in-memory --debug

Relevant output:

2024-09-04T15:30:22.400412Z  INFO fuel_core_bin::cli::run: 324: Consensus signer is specified and its address is 22ec92c3105c942a6640bdc4e4907286ec4728e8cfc0d8ac59aad4d8e1ccaefb

Checklist

  • Breaking changes are clearly marked as such in the PR description and changelog
  • New behavior is reflected in tests
  • The specification matches the implemented behavior (link update PR if changes are needed)

Before requesting review

  • I have reviewed the code myself
  • I have created follow-up issues caused by this PR and linked them here

After merging, notify other teams

[Add or remove entries as needed]

@acerone85 acerone85 changed the title Draft: Log consensus-key signer address if specified WIP: Log consensus-key signer address if specified Sep 3, 2024
{
// Ideally here we want to retrieve the secp256k1 public key from a
// key arn and a kms client here.
todo!()
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was looking at the mockall crate (https://docs.aws.amazon.com/sdk-for-rust/latest/dg/testing.html) to try to mock KMS, so that ideally I can generate a key arn and try to extract the public key address from it. I wanted to check that this is okay before proceeding.

@acerone85
Copy link
Contributor Author

This PR contains unit tests to check the behaviour of a function that I have added in the signer, but ideally I should test also for the log to appear in an integration test. What is the best strategy to test for this?

@acerone85 acerone85 self-assigned this Sep 3, 2024
@acerone85 acerone85 changed the title WIP: Log consensus-key signer address if specified Draft: Log consensus-key signer address if specified Sep 3, 2024
@acerone85 acerone85 marked this pull request as draft September 3, 2024 20:10
@acerone85 acerone85 changed the title Draft: Log consensus-key signer address if specified Log consensus-key signer address if specified Sep 3, 2024
)
.expect("Secret key construction should not fail");

let public_key = "9ab6229de634056cdc67dfba26e6a06e4ba082693ea30395e5994b113ab6c6e3189a12a10d8fb08d1d28f7117ca34f6b16c5132acd9570de6e7a005f6bbd8f3d";
Copy link
Contributor Author

@acerone85 acerone85 Sep 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

trying to construct a public key from this string slice fails, I am not sure why that is the case.

let _pk = PublicKey::from_str(public_key).unwrap();

yields an error InvalidPublicKey.

If I instead convert the derived public key to a string literal, and i compare it with the string literal above, the test passes.

@acerone85 acerone85 requested a review from xgreenx September 4, 2024 15:43
@acerone85 acerone85 marked this pull request as ready for review September 4, 2024 22:39
@acerone85 acerone85 merged commit 6ef1d58 into master Sep 5, 2024
35 checks passed
@acerone85 acerone85 deleted the log_consensus_key branch September 5, 2024 11:27
@xgreenx xgreenx mentioned this pull request Sep 17, 2024
xgreenx added a commit that referenced this pull request Sep 18, 2024
## Version v0.36.0

### Added
- [2135](#2135): Added metrics
logging for number of blocks served over the p2p req/res protocol.
- [2151](#2151): Added
limitations on gas used during dry_run in API.
- [2188](#2188): Added the new
variant `V2` for the `ConsensusParameters` which contains the new
`block_transaction_size_limit` parameter.
- [2163](#2163): Added
runnable task for fetching block committer data.
- [2204](#2204): Added
`dnsaddr` resolution for TLD without suffixes.

### Changed

#### Breaking
- [2199](#2199): Applying
several breaking changes to the WASM interface from backlog:
- Get the module to execute WASM byte code from the storage first, an
fallback to the built-in version in the case of the
`FUEL_ALWAYS_USE_WASM`.
- Added `host_v1` with a new `peek_next_txs_size` method, that accepts
`tx_number_limit` and `size_limit`.
- Added new variant of the return type to pass the validation result. It
removes block serialization and deserialization and should improve
performance.
- Added a V1 execution result type that uses `JSONError` instead of
postcard serialized error. It adds flexibility of how variants of the
error can be managed. More information about it in
FuelLabs/fuel-vm#797. The change also moves
`TooManyOutputs` error to the top. It shows that `JSONError` works as
expected.
- [2145](#2145): feat:
Introduce time port in PoA service.
- [2155](#2155): Added trait
declaration for block committer data
- [2142](#2142): Added
benchmarks for varied forms of db lookups to assist in optimizations.
- [2158](#2158): Log the
public address of the signing key, if it is specified
- [2188](#2188): Upgraded the
`fuel-vm` to `0.57.0`. More information in the
[release](https://github.com/FuelLabs/fuel-vm/releases/tag/v0.57.0).

## What's Changed
* chore(p2p_service): add metrics for number of blocks requested over
p2p req/res protocol by @rymnc in
#2135
* Weekly `cargo update` by @github-actions in
#2149
* Debug V1 algorightm and use more realistic values in gas price
analysis by @MitchTurner in
#2129
* feat(gas_price_service): include trait declaration for block committer
data by @rymnc in #2155
* Convert gas price analysis tool to CLI by @MitchTurner in
#2156
* chore: add benchmarks for varied forms of lookups by @rymnc in
#2142
* Add label nochangelog on weekly cargo update by @AurelienFT in
#2152
* Log consensus-key signer address if specified by @acerone85 in
#2158
* chore(rocks_db): move ShallowTempDir to benches crate by @rymnc in
#2168
* chore(benches): conditional dropping of databases in benchmarks by
@rymnc in #2170
* feat: Introduce time port in PoA service by @netrome in
#2145
* Get DA costs from predefined data by @MitchTurner in
#2157
* chore(shallow_temp_dir): panic if not panicking by @rymnc in
#2172
* chore: Add initial CODEOWNERS file by @netrome in
#2179
* Weekly `cargo update` by @github-actions in
#2177
* fix(db_lookup_times): rework core logic of benchmark by @rymnc in
#2159
* Add verification on transaction dry_run that they don't spend more
than block gas limit by @AurelienFT in
#2151
* bug: fix algorithm overflow issues by @MitchTurner in
#2173
* feat(gas_price_service): create runnable task for expensive background
polling for da metadata by @rymnc in
#2163
* Weekly `cargo update` by @github-actions in
#2197
* Fix bug with gas price factor in V1 algorithm by @MitchTurner in
#2201
* Applying several breaking changes to the WASM interface from backlog
by @xgreenx in #2199
* chore(p2p): dnsaddr recursive resolution by @rymnc in
#2204

## New Contributors
* @acerone85 made their first contribution in
#2158

**Full Changelog**:
v0.35.0...v0.36.0
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.

Log the public address of the consensus key, if it is specified
3 participants