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

feat: add walletAddress endpoint #39

Merged
merged 4 commits into from
Jan 25, 2024
Merged

feat: add walletAddress endpoint #39

merged 4 commits into from
Jan 25, 2024

Conversation

37ng
Copy link
Contributor

@37ng 37ng commented Jan 19, 2024

closes #28

In the future, we might want to get a private key from the environment variable and create an in-memory wallet instead of generate a new wallet every time.

Copy link

codecov bot commented Jan 19, 2024

Codecov Report

Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (2f3f7bc) 77.98% compared to head (fd2554a) 78.94%.

Files Patch % Lines
xps-gateway/src/lib.rs 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #39      +/-   ##
==========================================
+ Coverage   77.98%   78.94%   +0.96%     
==========================================
  Files           9        9              
  Lines         109      114       +5     
==========================================
+ Hits           85       90       +5     
  Misses         24       24              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@jac18281828 jac18281828 left a comment

Choose a reason for hiding this comment

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

The requirements are documented in issue #28


pub use crate::rpc::{XpsMethods, XpsServer};

pub const SERVER_HOST: &str = "127.0.0.1:0";
pub const DEFAULT_WALLET_ADDRESS: &str = "0x0000000000000000000000000000000000000000";
Copy link
Contributor

Choose a reason for hiding this comment

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

This should generate a new hot wallet, known only to this process.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Maybe unrelated - how do we make sure these is fund in the wallet in order to send txs?

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, this issue issues/23 describes the mechanism for transparency for the wallet balance. Then anyone can transfer funds to the wallet to maintain the desired level of funding for the process.

Copy link
Contributor Author

@37ng 37ng Jan 22, 2024

Choose a reason for hiding this comment

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

Ok 👍
In that case, do walletAddress and balance RPC need authentication according to the issue requirements?
I don't think they need it since all data are public on blockchain anyways.

Copy link
Contributor

Choose a reason for hiding this comment

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

No, you are absolutely correct these methods are safe in the sense that anyone can observe the address without exposing any risk to the internal wallet. It would be fine to implement the first version without any authentication and to update the documentation.

We still need to design the authentication and that may be a form of 'blanket authentication' such as an API key that applies to the whole server via a proxy on aws. You can ignore these considerations for now.

Copy link
Contributor

Choose a reason for hiding this comment

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

One proviso attached to the above statement however is that the wallet must be generated from a secure source of cryptographic randomness as stated in the ticket. Also the generation should be essentially constant time, using the services provided in ethers. Otherwise a hacker may be able to deduce information about the private key by observing the public one.

As an interesting aside, recently the rust RSA module was broken in this way because researchers were able to break the key generation by observing the key generation times. It turned out the algorithm they were using for key generation was not safe.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Gotcha, 100% agree with you and thanks for the info!

@37ng 37ng marked this pull request as draft January 20, 2024 00:26
@37ng 37ng marked this pull request as ready for review January 23, 2024 02:38
@37ng
Copy link
Contributor Author

37ng commented Jan 23, 2024

This PR uses a randomly generated wallet at initialization.

I also created a feature request issue #41 here if using a existing wallet is needed.

@37ng 37ng merged commit a2a0cf4 into main Jan 25, 2024
5 checks passed
@37ng 37ng deleted the 37ng/wallet_address branch January 25, 2024 17:10
Copy link
Contributor

@jac18281828 jac18281828 left a comment

Choose a reason for hiding this comment

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

Thanks @37ng

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

JSON RPC Endpoint: walletAddress
3 participants