hiero-ledger / hiero-ledger/hiero-consensus-node
[Uber EPIC] Improve HSCS System Contract Versioning DevEx
- Dominant language
- Java
- Stars
- 406
- Forks
- 226
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 210
Description
### Problem
System contracts assume a single address and utilize solidity logic to define their interfaces.
As such due to the limitation of overloading the emergent function hashes result in in a new function whenever there's a HAPI protobuf update for a message represented in a system contract function method param.
Additionally, [hedera-smart-contracts](https://github.com/hashgraph/hedera-smart-contracts) contains reference to system contract interfaces as well as reference wrapper contracts that are not well known to all devs
### Solution
Provide an improved development experience in which system contract addresses can be upgrade to a new address just as if it was a real contract. The new address will utilize the latest structs interface support.
Additionally the details of the address may be hidden by the packaging of the `hedera-smart-contracts` npm package.
- [ ] Add HSCS support for versioned address with support for logic sharing when functionality has not changed (https://github.com/hashgraph/hedera-services/issues/15991)
- [ ] Productize the `hedera-smart-contracts` repo and release npm packages (https://github.com/hashgraph/hedera-smart-contracts/issues/115)
- [ ] Provide a system contract standard that allows devs to move quickly simile to OZ and LZ
### Alternatives
_No response_
Contributor guide
Research direction
Start with linked issues #15991 and #115, then review the hedera-smart-contracts repository referenced in the issue. Determine the scope for versioned system-contract addresses, shared logic, packaged interfaces, and a system-contract standard; the work is done only when the agreed versioning and packaging approach is implemented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- solidity
- Domain
- blockchain, developer-experience
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100