core: introduce D hardfork

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
This commit is contained in:
Anna Shaleva 2024-06-04 13:25:21 +03:00
parent 836183ecb6
commit e0825e7665
4 changed files with 13 additions and 4 deletions

View file

@ -27,6 +27,9 @@ const (
// https://github.com/neo-project/neo/pull/2925) and #3362 (ported from // https://github.com/neo-project/neo/pull/2925) and #3362 (ported from
// https://github.com/neo-project/neo/pull/3154). // https://github.com/neo-project/neo/pull/3154).
HFCockatrice // Cockatrice HFCockatrice // Cockatrice
// HFDomovoi represents hard-fork introduced in #3476 (ported from
// https://github.com/neo-project/neo/pull/3290).
HFDomovoi // Domovoi
// hfLast denotes the end of hardforks enum. Consider adding new hardforks // hfLast denotes the end of hardforks enum. Consider adding new hardforks
// before hfLast. // before hfLast.
hfLast hfLast

View file

@ -12,13 +12,15 @@ func _() {
_ = x[HFAspidochelone-1] _ = x[HFAspidochelone-1]
_ = x[HFBasilisk-2] _ = x[HFBasilisk-2]
_ = x[HFCockatrice-4] _ = x[HFCockatrice-4]
_ = x[hfLast-8] _ = x[HFDomovoi-8]
_ = x[hfLast-16]
} }
const ( const (
_Hardfork_name_0 = "DefaultAspidocheloneBasilisk" _Hardfork_name_0 = "DefaultAspidocheloneBasilisk"
_Hardfork_name_1 = "Cockatrice" _Hardfork_name_1 = "Cockatrice"
_Hardfork_name_2 = "hfLast" _Hardfork_name_2 = "Domovoi"
_Hardfork_name_3 = "hfLast"
) )
var ( var (
@ -33,6 +35,8 @@ func (i Hardfork) String() string {
return _Hardfork_name_1 return _Hardfork_name_1
case i == 8: case i == 8:
return _Hardfork_name_2 return _Hardfork_name_2
case i == 16:
return _Hardfork_name_3
default: default:
return "Hardfork(" + strconv.FormatInt(int64(i), 10) + ")" return "Hardfork(" + strconv.FormatInt(int64(i), 10) + ")"
} }

View file

@ -370,6 +370,7 @@ func TestNewBlockchain_InitHardforks(t *testing.T) {
config.HFAspidochelone.String(): 0, config.HFAspidochelone.String(): 0,
config.HFBasilisk.String(): 0, config.HFBasilisk.String(): 0,
config.HFCockatrice.String(): 0, config.HFCockatrice.String(): 0,
config.HFDomovoi.String(): 0,
}, bc.GetConfig().Hardforks) }, bc.GetConfig().Hardforks)
}) })
t.Run("empty set", func(t *testing.T) { t.Run("empty set", func(t *testing.T) {
@ -400,13 +401,14 @@ func TestNewBlockchain_InitHardforks(t *testing.T) {
}) })
t.Run("all present", func(t *testing.T) { t.Run("all present", func(t *testing.T) {
bc := newTestChainWithCustomCfg(t, func(c *config.Config) { bc := newTestChainWithCustomCfg(t, func(c *config.Config) {
c.ProtocolConfiguration.Hardforks = map[string]uint32{config.HFAspidochelone.String(): 5, config.HFBasilisk.String(): 10, config.HFCockatrice.String(): 15} c.ProtocolConfiguration.Hardforks = map[string]uint32{config.HFAspidochelone.String(): 5, config.HFBasilisk.String(): 10, config.HFCockatrice.String(): 15, config.HFDomovoi.String(): 20}
require.NoError(t, c.ProtocolConfiguration.Validate()) require.NoError(t, c.ProtocolConfiguration.Validate())
}) })
require.Equal(t, map[string]uint32{ require.Equal(t, map[string]uint32{
config.HFAspidochelone.String(): 5, config.HFAspidochelone.String(): 5,
config.HFBasilisk.String(): 10, config.HFBasilisk.String(): 10,
config.HFCockatrice.String(): 15, config.HFCockatrice.String(): 15,
config.HFDomovoi.String(): 20,
}, bc.GetConfig().Hardforks) }, bc.GetConfig().Hardforks)
}) })
} }

View file

@ -271,7 +271,7 @@ func TestBlockchain_StartFromExistingDB(t *testing.T) {
_, _, _, err = chain.NewMultiWithCustomConfigAndStoreNoCheck(t, customConfig, cache) _, _, _, err = chain.NewMultiWithCustomConfigAndStoreNoCheck(t, customConfig, cache)
require.Error(t, err) require.Error(t, err)
require.True(t, strings.Contains(err.Error(), fmt.Sprintf("native %s: version mismatch for the latest hardfork Cockatrice (stored contract state differs from autogenerated one)", nativenames.CryptoLib)), err) require.True(t, strings.Contains(err.Error(), fmt.Sprintf("native %s: version mismatch for the latest hardfork Domovoi (stored contract state differs from autogenerated one)", nativenames.CryptoLib)), err)
}) })
t.Run("good", func(t *testing.T) { t.Run("good", func(t *testing.T) {