This repository was archived by the owner on Dec 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 571
EVM-607 Hard-forking PoC #1544
Merged
Merged
EVM-607 Hard-forking PoC #1544
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
caec7d7
initial forking poc
igorcrevar ee9e904
params refactor
igorcrevar 52c3780
cr fix
igorcrevar ca1e96c
cr fix 2
igorcrevar 169fa94
current block state and tests
igorcrevar 89ba7f6
comments
igorcrevar ed6297e
state is not good. at the same time we probably need to access few di…
igorcrevar 00764af
small change
igorcrevar 7ecf16c
cr fix
igorcrevar debb89e
const in test
igorcrevar 37e021c
cr fixes
igorcrevar ef1feb3
fix small issue already existed in code
igorcrevar e92c8e1
move ForkManagerInit to forkmanager. it will be needed from other par…
igorcrevar ca8e9d8
initial fork
igorcrevar 9a05639
init fix
igorcrevar de79882
remove *chain.Params from genesis struct
igorcrevar File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,78 @@ | ||
| package forkmanager | ||
|
|
||
| import ( | ||
| "fmt" | ||
|
|
||
| "github.com/0xPolygon/polygon-edge/chain" | ||
| ) | ||
|
|
||
| const InitialFork = "initialfork" | ||
|
|
||
| // HandlerDesc gives description for the handler | ||
| // eq: "extra", "proposer_calculator", etc | ||
| type HandlerDesc string | ||
|
|
||
| // Fork structure defines one fork | ||
| type Fork struct { | ||
| // name of the fork | ||
| Name string | ||
| // after the fork is activated, `FromBlockNumber` shows from which block is enabled | ||
| FromBlockNumber uint64 | ||
| // this value is false if fork is registered but not activated | ||
| IsActive bool | ||
| // map of all handlers registered for this fork | ||
| Handlers map[HandlerDesc]interface{} | ||
| } | ||
|
|
||
| // Handler defines one custom handler | ||
| type Handler struct { | ||
| // Handler should be active from block `FromBlockNumber`` | ||
| FromBlockNumber uint64 | ||
| // instance of some structure, function etc | ||
| Handler interface{} | ||
| } | ||
|
|
||
| func ForkManagerInit(factory func(*chain.Forks) error, forks *chain.Forks) error { | ||
| if factory == nil { | ||
| return nil | ||
| } | ||
|
|
||
| fm := GetInstance() | ||
| fm.Clear() | ||
|
|
||
| // register initial fork | ||
| fm.RegisterFork(InitialFork) | ||
|
|
||
| // Register forks | ||
| for name := range *forks { | ||
| // check if fork is not supported by current edge version | ||
| if _, found := (*chain.AllForksEnabled)[name]; !found { | ||
| return fmt.Errorf("fork is not available: %s", name) | ||
| } | ||
|
|
||
| fm.RegisterFork(name) | ||
| } | ||
|
|
||
| // Register handlers and additional forks here | ||
| if err := factory(forks); err != nil { | ||
| return err | ||
| } | ||
|
|
||
| // Activate initial fork | ||
| if err := fm.ActivateFork(InitialFork, uint64(0)); err != nil { | ||
| return err | ||
| } | ||
|
|
||
| // Activate forks | ||
| for name, blockNumber := range *forks { | ||
| if blockNumber == nil { | ||
| continue | ||
| } | ||
|
|
||
| if err := fm.ActivateFork(name, (uint64)(*blockNumber)); err != nil { | ||
| return err | ||
| } | ||
| } | ||
|
|
||
| return nil | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.