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(bridge-withdrawer): support FROST threshold signing #1948

Open
wants to merge 23 commits into
base: main
Choose a base branch
from

Conversation

noot
Copy link
Collaborator

@noot noot commented Feb 5, 2025

Summary

support FROST ed25519 threshold signing in the bridge withdrawer.

Background

improves security of the withdrawer over having one private key used; instead, we can employ an m-of-n threshold signature scheme to sign withdrawals.

Changes

  • create FrostParticipantService gRPC proto definition, which is to be implemented by a binary which contains a FROST secret key partial that participates in the threshold signing process
  • update withdrawer config/setup to support single signer (previous behaviour) or threshold signing via the Signer trait
  • create FrostSigner which has gRPC clients for the signing participants
  • FrostSigner.sign() performs the signing process by calling each participant for their commitment (part 1) and signature share (part 2) and finally aggregates the shares to create a valid signature.
  • FrostSigner.sign() will fail if it does not receive responses from at least the minimum number of signers required. the min number of signers is determined during key generation, which is done completely separately.

Testing

blackbox tests with mock signer servers have been added.

also, this was tested with a 2/2 threshold signer node setup. withdrawal transactions are successfully signed, submitted, and included on the sequencer. see https://www.notion.so/astria-org/bridge-threshold-withdrawer-testing-1936bd31a90c803ab33ccc1221f545a1?pvs=4

Changelogs

Changelogs updated.

Related Issues

closes #1937

@github-actions github-actions bot added the proto pertaining to the Astria Protobuf spec label Feb 5, 2025
@github-actions github-actions bot added the cd label Feb 5, 2025
@noot noot force-pushed the noot/bridge-withdrawer branch from 8fd627b to cb67d38 Compare February 10, 2025 19:44
@noot noot marked this pull request as ready for review February 10, 2025 20:20
@noot noot requested review from SuperFluffy, Fraser999, a team and joroshiba as code owners February 10, 2025 20:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cd proto pertaining to the Astria Protobuf spec
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support threshold signing in bridge withdrawer
1 participant