You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The implementation MUST follow the test plan and example patterns defined in the design document above. This ensures consistency across all Hiero SDK implementations.
Test Plan (13 test cases from design document)
Given a private topic with Admin Key and Submit Key, when Submit Key is updated to a dead key with valid Admin Key signature, then no further messages can be submitted.
Given a private topic with Admin Key and Submit Key, when Submit Key is updated to an empty key list with valid Admin Key signature, then messages can be submitted without a submit key signature.
Given a private topic with Admin Key and Submit Key, when Admin Key is updated to a dead key with valid Admin Key signature, then messages can still be submitted with submit key, but no administrative updates are possible.
Given a private topic with Admin Key and Submit Key, when Admin Key is updated to an empty key list with valid Admin Key signature, then messages can still be submitted with submit key, but no administrative updates are possible.
Given a private topic with Admin Key and Submit Key, when both keys are updated to dead keys with valid Admin Key signature, then the topic becomes fully immutable.
Given a private topic with only Submit Key (no Admin Key), when Submit Key is updated to a dead key with valid Submit Key signature, then no more messages can be submitted.
Given a private topic with only Submit Key (no Admin Key), when Submit Key is updated to an empty key list with valid Submit Key signature, then messages can be submitted without a submit key signature.
Given a public topic with Admin Key but no Submit Key, when Admin Key is updated to a dead key with valid Admin Key signature, then the topic is administratively immutable but still allows message submission.
Given a public topic with Submit Key set to a dead key, when a message submission is attempted with the original Submit Key, then submission fails with invalid signature error.
Given a TopicUpdateTransaction to update Submit Key to a dead key without valid Submit Key signature, then update fails with invalid signature.
Given a TopicUpdateTransaction to update Admin Key to a dead key without valid Admin Key signature, then update fails with invalid signature.
Given a TopicUpdateTransaction to update Submit Key to a dead key with valid Admin Key signature, then update succeeds.
Given a TopicUpdateTransaction to update Submit Key from a dead key to a valid key with valid Admin Key signature, then update succeeds.
Example
Create an example demonstrating the complete immutability transition flow as defined in the design document.
🧠 Implementation Notes
Test Network Setup
E2E tests require a running Hiero network to execute against. Options include:
Local network using solo - see CI workflow for reference
Testnet - requires testnet account credentials
Review existing E2E tests in src/sdk/tests/integration/ to understand how tests connect to the network.
🧩 Intermediate Friendly
This issue is a good fit for contributors who are already familiar with the Hiero C++ SDK and feel comfortable navigating the codebase.
Intermediate Issues often involve:
The goal is to support deeper problem-solving while keeping the task clear, focused, and enjoyable to work on.
🐞 Problem Description
HIP-1139: Enable Immutable Topic Ids and Updatable Submit Keys without an Admin Key allows topics to be made fully immutable by setting Admin Keys and Submit Keys to "dead keys" (all-zeros Ed25519 public keys that are cryptographically impossible to sign with).
The SDK already supports this feature - no implementation work is needed. However, the SDK is missing:
Key Concepts
💡 Expected Outcome
Implement the tests and example following the design document:
Design Document: https://github.com/hiero-ledger/sdk-collaboration-hub/blob/main/proposals/hips/hip-1139.md
Important
The implementation MUST follow the test plan and example patterns defined in the design document above. This ensures consistency across all Hiero SDK implementations.
Test Plan (13 test cases from design document)
Given a private topic with Admin Key and Submit Key, when Submit Key is updated to a dead key with valid Admin Key signature, then no further messages can be submitted.
Given a private topic with Admin Key and Submit Key, when Submit Key is updated to an empty key list with valid Admin Key signature, then messages can be submitted without a submit key signature.
Given a private topic with Admin Key and Submit Key, when Admin Key is updated to a dead key with valid Admin Key signature, then messages can still be submitted with submit key, but no administrative updates are possible.
Given a private topic with Admin Key and Submit Key, when Admin Key is updated to an empty key list with valid Admin Key signature, then messages can still be submitted with submit key, but no administrative updates are possible.
Given a private topic with Admin Key and Submit Key, when both keys are updated to dead keys with valid Admin Key signature, then the topic becomes fully immutable.
Given a private topic with only Submit Key (no Admin Key), when Submit Key is updated to a dead key with valid Submit Key signature, then no more messages can be submitted.
Given a private topic with only Submit Key (no Admin Key), when Submit Key is updated to an empty key list with valid Submit Key signature, then messages can be submitted without a submit key signature.
Given a public topic with Admin Key but no Submit Key, when Admin Key is updated to a dead key with valid Admin Key signature, then the topic is administratively immutable but still allows message submission.
Given a public topic with Submit Key set to a dead key, when a message submission is attempted with the original Submit Key, then submission fails with invalid signature error.
Given a TopicUpdateTransaction to update Submit Key to a dead key without valid Submit Key signature, then update fails with invalid signature.
Given a TopicUpdateTransaction to update Admin Key to a dead key without valid Admin Key signature, then update fails with invalid signature.
Given a TopicUpdateTransaction to update Submit Key to a dead key with valid Admin Key signature, then update succeeds.
Given a TopicUpdateTransaction to update Submit Key from a dead key to a valid key with valid Admin Key signature, then update succeeds.
Example
Create an example demonstrating the complete immutability transition flow as defined in the design document.
🧠 Implementation Notes
Test Network Setup
E2E tests require a running Hiero network to execute against. Options include:
Review existing E2E tests in
src/sdk/tests/integration/to understand how tests connect to the network.Related Code References
src/sdk/tests/integration/TopicUpdateTransactionIntegrationTests.ccsrc/sdk/tests/integration/TokenUpdateTransactionIntegrationTests.ccgetZeroKey())src/sdk/main/include/ED25519PrivateKey.hZERO_KEY_STRandgetZeroKey()src/sdk/examples/TopicWithAdminKeyExample.cppDead Key Implementation
The SDK already provides dead key support:
State Transitions
✅ Acceptance Criteria
To help get this change merged smoothly:
TokenUpdateTransactionIntegrationTests.ccfor zero key patterns)📋 Contribution Guide
To help your contribution go as smoothly as possible, we recommend following these steps:
/assignto request the issueREADME.md-s -SRead Workflow Guide for step-by-step workflow guidance.
Read README.md for setup instructions.
❗ Pull requests cannot be merged without
Sandssigned commits.See the Signing Guide.
📚 Additional Context or Resources
References
If you have questions while working on this issue, feel free to ask!
You can reach the community and maintainers here:
Hiero-SDK-C++ Discord
Whether you need help finding the right file, understanding existing code, or confirming your approach — we're happy to help.