mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 21:08:10 -05:00
* initialize genesis data asap at node start * add genesis validation tests with embedded state verification * Add test for hardcoded mainnet genesis validator root and time from init() function * Add test for UnmarshalState in encoding/ssz/detect/configfork.go * Add tests for genesis.Initialize * Move genesis/embedded to genesis/internal/embedded * Gazelle / BUILD fix * James feedback * Fix lint * Revert lock --------- Co-authored-by: Kasey <kasey@users.noreply.github.com> Co-authored-by: terence tsao <terence@prysmaticlabs.com> Co-authored-by: Preston Van Loon <preston@pvl.dev>
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package kv
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/OffchainLabs/prysm/v6/config/params"
|
|
"github.com/OffchainLabs/prysm/v6/consensus-types/blocks"
|
|
"github.com/OffchainLabs/prysm/v6/genesis"
|
|
"github.com/OffchainLabs/prysm/v6/testing/require"
|
|
"github.com/OffchainLabs/prysm/v6/testing/util"
|
|
)
|
|
|
|
func TestSaveOrigin(t *testing.T) {
|
|
params.SetupTestConfigCleanup(t)
|
|
// Embedded Genesis works with Mainnet config
|
|
params.OverrideBeaconConfig(params.MainnetConfig())
|
|
|
|
ctx := t.Context()
|
|
db := setupDB(t)
|
|
|
|
// Initialize genesis with mainnet config - this will load the embedded mainnet state
|
|
require.NoError(t, genesis.Initialize(ctx, t.TempDir()))
|
|
|
|
// Get the initialized genesis state
|
|
st, err := genesis.State()
|
|
require.NoError(t, err)
|
|
|
|
sb, err := st.MarshalSSZ()
|
|
require.NoError(t, err)
|
|
require.NoError(t, db.LoadGenesis(ctx, sb))
|
|
|
|
// this is necessary for mainnet, because LoadGenesis is short-circuited by the embedded state,
|
|
// so the genesis root key is never written to the db.
|
|
require.NoError(t, db.EnsureEmbeddedGenesis(ctx))
|
|
|
|
cst, err := util.NewBeaconState()
|
|
require.NoError(t, err)
|
|
csb, err := cst.MarshalSSZ()
|
|
require.NoError(t, err)
|
|
cb := util.NewBeaconBlock()
|
|
scb, err := blocks.NewSignedBeaconBlock(cb)
|
|
require.NoError(t, err)
|
|
cbb, err := scb.MarshalSSZ()
|
|
require.NoError(t, err)
|
|
require.NoError(t, db.SaveOrigin(ctx, csb, cbb))
|
|
|
|
broot, err := scb.Block().HashTreeRoot()
|
|
require.NoError(t, err)
|
|
require.Equal(t, true, db.IsFinalizedBlock(ctx, broot))
|
|
}
|