Skip to content

feat: integrate popsigner#65

Merged
jcstein merged 8 commits into
mainfrom
jcs/popsigner-apply
Mar 11, 2026
Merged

feat: integrate popsigner#65
jcstein merged 8 commits into
mainfrom
jcs/popsigner-apply

Conversation

@jcstein

@jcstein jcstein commented Feb 20, 2026

Copy link
Copy Markdown
Member

Introduces a new signer package that provides a unified interface for
creating Celestia keyrings. Supports two backends:

- Local: filesystem-based keyring using cosmos-sdk keyring
- POPSigner: remote signing service via POPSigner SDK

The package directly returns keyring.Keyring instances, keeping the
implementation simple and leveraging existing cosmos-sdk abstractions.

Configuration is done via nested TOML structure:
  [celestia.signer]
  mode = "local" or "popsigner"
  [celestia.signer.local]
  keyring_path = "..."
  key_name = "..."
  [celestia.signer.popsigner]
  api_key = "..."
  key_id = "..."
- Update TxClientConfig to use signer.Config
- Modify initTxClient to use signer.NewKeyring factory
- Add CLI flags for nested signer configuration
- Maintain backwards compatibility with legacy flat config
- Support both TOML config and CLI flag configuration
Add !/signer to Dockerfile.dockerignore to ensure the signer
package is included when building the Docker image.
- Add signer architecture diagram to README
- Document both local and POPSigner options
- Update CLI flags and environment variables section
- Add detailed TOML configuration examples
- Update config.toml.example with nested signer structure
@jcstein
jcstein requested review from Bidon15, gbarros and tuxcanfly and removed request for Bidon15 February 24, 2026 00:07
@jcstein jcstein self-assigned this Feb 24, 2026
@jcstein
jcstein marked this pull request as ready for review February 24, 2026 00:08
Comment thread cmd/daserver/config.go
@jcstein
jcstein requested a review from tuxcanfly February 26, 2026 23:06
Comment thread cmd/daserver/config.go Outdated
@jcstein

jcstein commented Mar 6, 2026

Copy link
Copy Markdown
Member Author

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces a new signer package to unify Celestia transaction signing across multiple backends, and integrates POPSigner as a remote-signing option while updating configuration and documentation to match the new model.

Changes:

  • Add signer package with factory/config and implementations for local keyring, POPSigner, and AWS KMS.
  • Update Celestia tx client initialization to use signer.NewKeyring(signer.Config) instead of inline keyring init logic.
  • Update CLI/TOML example configuration and README to document signer modes and new config structure.

Reviewed changes

Copilot reviewed 15 out of 17 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
signer/signer.go Package documentation for the new signer factory module.
signer/factory.go Keyring factory selecting backend by mode.
signer/config.go Signer config schema + validation + env var resolution helpers.
signer/local.go Local filesystem keyring creation via celestia-node helper.
signer/popsigner.go POPSigner-backed keyring creation and validation.
signer/aws_kms.go AWS KMS-backed keyring creation.
celestia_storage.go Switch tx-client init to use the new signer-based keyring creation and return key name.
cmd/daserver/config.go Introduce nested celestia.signer config and legacy migration logic into signer.Config.
cmd/daserver/config_builder.go Wire new remote-signer CLI flags into config building.
cmd/daserver/flags.go Add CLI flags for signer mode + POPSigner parameters.
cmd/daserver/config_legacy_test.go Add tests covering some legacy AWS KMS mapping/validation.
config.toml.example Add signer configuration section and POPSigner docs to the sample config.
README.md Document signer options and update examples/flag tables.
go.mod / go.sum Add POPSigner SDK dependency.
Dockerfile.dockerignore Ensure the new signer/ directory is included in Docker builds.
.gitignore Adjust daserver ignore rule.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread cmd/daserver/config.go
Comment thread cmd/daserver/config.go
Comment thread config.toml.example
Comment thread README.md
Comment thread README.md
Comment thread cmd/daserver/flags.go Outdated
Comment thread signer/config.go
Comment thread signer/aws_kms.go
Comment thread go.mod
Comment thread config.toml.example
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

@tuxcanfly tuxcanfly left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OK.

@jcstein

jcstein commented Mar 9, 2026

Copy link
Copy Markdown
Member Author

thank you for 806b58a

@jcstein
jcstein merged commit ab89e1b into main Mar 11, 2026
7 checks passed
@nuke-web3
nuke-web3 deleted the jcs/popsigner-apply branch June 30, 2026 02:31
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