Skip to content

Contract migration: no more distinction between Neo and non-Neo implementations #2123

@jaybuidl

Description

@jaybuidl

Motivation

Post-audit it will not make sense anymore to make distinction between the Neo and non-Neo implementations, we will have a stable version and that is it.

In addition it allows for the removal of the KlerosCoreBase and SortitionModuleBase inheritance.

Implementation details

To accommodate the testnet deployments it should be possible to disable the arbitrable whitelist.

Testnet configuration

KlerosCore.arbitrableWhitelistEnabled = false; KlerosCore.jurorNft = address(0); SortitionModule.maxStakePerJuror = type(int256).max; SortitionModule.maxTotalStaked = type(int256).max;

Changes required

  • Make sure that jurorNft = address(0) is supported gracefully as meaning no gating.
  • An extra state variable arbitrableWhitelistEnabled is needed. Ensure it is enabled on mainnet and disabled on testnet/devnet.

Later: permanent removal of the Neo restrictions

There are 2 paths

1) By adopting the same config as on the testnets

Pro: no code change, audit still valid
Con: unnecessary state and logic (with KlerosCore already very close to 24KB)

2) Via upgrade

The slot state can be cleared and the slots free to be used again in subsequent upgrades. The related logic can be removed.
Pro: leaner contract size and code
Con: code change, audit needed again.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions