Currently, there is no way to change the genesis contract code but to deploy a new contract. When we deploy new contracts, multiple changes are required at the user’s contract and Heimdall level.
Parity/OpenEthereum allows doing the same while Geth doesn’t: https://openethereum.github.io/wiki/Validator-Set-Tutorial-1
Proposal
For Geth/Bor, it should allow a way to change it by having new genesis params where it should be done if all nodes agree.
...
block_alloc: {
"<block_number>": {
"0000000000000000000000000000000000001000": {
"balance": "0x0",
"code": "<new-code>",
}
}
}
...