hiero-ledger / hiero-ledger/hiero-consensus-node

[Uber EPIC] Improve HSCS System Contract Versioning DevEx

Open
#17,343 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.