Skip to content

Make sign and broadcast capabilities truly separate #42

Description

@SuperstrongBE

Summary\n\nSeparate transaction signing from transaction broadcasting at the API, authorization, configuration, and implementation layers.\n\n## Security impact\n\nA caller authorized only to obtain a signature must not be able to trigger network submission as a side effect. Conversely, a broadcast capability must not gain access to private-key operations. A shared path makes least-privilege deployment and incident containment unreliable.\n\n## Required changes\n\n- Make sign-only return a signed transaction without sending it to any RPC endpoint.\n- Require a distinct, explicit broadcast operation for network submission.\n- Use separate capability checks and audit events for signing and broadcasting.\n- Ensure configuration flags cannot silently convert sign-only into sign-and-broadcast.\n- Keep retry, duplicate transaction, and ambiguous RPC response handling inside the broadcast boundary.\n- Document ownership of TAPOS generation, serialization, signing, submission, and confirmation.\n- Consider allowing deployments to disable broadcast support entirely.\n\n## Acceptance criteria\n\n- A sign-only request performs no broadcast-related network call.\n- Broadcast authorization cannot invoke the private-key signer.\n- Sign and broadcast permissions can be granted and revoked independently.\n- Tests assert network-call boundaries, retries, duplicate submissions, RPC timeouts, and ambiguous success responses.\n- Audit logs distinguish signed, broadcast, accepted, rejected, and unknown outcomes.\n- API documentation makes side effects explicit.

Metadata

Metadata

Assignees

Labels

Security hardeningDefense-in-depth improvements beyond the MVP security model

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions