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

[HotWallet] Add Fireblocks client #123

Merged
merged 1 commit into from
Feb 22, 2024
Merged

[HotWallet] Add Fireblocks client #123

merged 1 commit into from
Feb 22, 2024

Conversation

ian-shim
Copy link
Contributor

This PR adds an http client that makes requests to Fireblocks, supporting two methods for now: list contracts and contract call.
The client will be used to implement a transaction sender that uses remote MPC.

Copy link
Collaborator

@samlaf samlaf left a comment

Choose a reason for hiding this comment

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

Added first set of comments. I'm still unsure how this fits with the remote signers framework @shrimalmadhur had created. Is it incompatible, or do you plan on also having this fireblocks client implement the remote signer interface? I'll defer to @shrimalmadhur here as he's the expert who designed and been thinking about remote signing.

chainio/clients/clients_test.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/mocks/fireblocks.go Outdated Show resolved Hide resolved
Copy link
Contributor Author

@ian-shim ian-shim left a comment

Choose a reason for hiding this comment

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

@shrimalmadhur and I sync'd on the design to support MPC hot wallet.
In summary, the set of API Fireblocks provides doesn't play nicely with the signer interface as it doesn't have a method to sign a transaction without broadcasting it (in a way that is secure). We'll implement a transaction sender interface that will sign + broadcast the transaction.
No matter which interface we end up implementing, this client is necessary to interact with Fireblocks.

chainio/clients/clients_test.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/fireblocks/client.go Show resolved Hide resolved
chainio/clients/mocks/fireblocks.go Outdated Show resolved Hide resolved
@ian-shim ian-shim requested a review from samlaf February 22, 2024 05:20
Copy link
Collaborator

@samlaf samlaf left a comment

Choose a reason for hiding this comment

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

last minor nits

chainio/clients/fireblocks/client.go Outdated Show resolved Hide resolved
chainio/clients/mocks/fireblocks.go Outdated Show resolved Hide resolved
@ian-shim ian-shim requested a review from samlaf February 22, 2024 18:24
Copy link
Collaborator

@samlaf samlaf left a comment

Choose a reason for hiding this comment

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

🚀🚀🚀

@samlaf samlaf merged commit 4d7d39f into master Feb 22, 2024
3 checks passed
@samlaf samlaf deleted the fireblocks-client branch February 22, 2024 19:25
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.

2 participants