mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 23:18:15 -05:00
* Ran gopls modernize to fix everything go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./... * Override rules_go provided dependency for golang.org/x/tools to v0.38.0. To update this, checked out rules_go, then ran `bazel run //go/tools/releaser -- upgrade-dep -mirror=false org_golang_x_tools` and copied the patches. * Fix buildtag violations and ignore buildtag violations in external * Introduce modernize analyzer package. * Add modernize "any" analyzer. * Fix violations of any analyzer * Add modernize "appendclipped" analyzer. * Fix violations of appendclipped * Add modernize "bloop" analyzer. * Add modernize "fmtappendf" analyzer. * Add modernize "forvar" analyzer. * Add modernize "mapsloop" analyzer. * Add modernize "minmax" analyzer. * Fix violations of minmax analyzer * Add modernize "omitzero" analyzer. * Add modernize "rangeint" analyzer. * Fix violations of rangeint. * Add modernize "reflecttypefor" analyzer. * Fix violations of reflecttypefor analyzer. * Add modernize "slicescontains" analyzer. * Add modernize "slicessort" analyzer. * Add modernize "slicesdelete" analyzer. This is disabled by default for now. See https://go.dev/issue/73686. * Add modernize "stringscutprefix" analyzer. * Add modernize "stringsbuilder" analyzer. * Fix violations of stringsbuilder analyzer. * Add modernize "stringsseq" analyzer. * Add modernize "testingcontext" analyzer. * Add modernize "waitgroup" analyzer. * Changelog fragment * gofmt * gazelle * Add modernize "newexpr" analyzer. * Disable newexpr until go1.26 * Add more details in WORKSPACE on how to update the override * @nalepae feedback on min() * gofmt * Fix violations of forvar
131 lines
3.6 KiB
Go
131 lines
3.6 KiB
Go
package testnet
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"math/big"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/OffchainLabs/prysm/v7/crypto/bls"
|
|
"github.com/OffchainLabs/prysm/v7/runtime/interop"
|
|
"github.com/OffchainLabs/prysm/v7/runtime/version"
|
|
"github.com/OffchainLabs/prysm/v7/testing/assert"
|
|
"github.com/OffchainLabs/prysm/v7/testing/require"
|
|
"github.com/ethereum/go-ethereum/core"
|
|
"github.com/ethereum/go-ethereum/core/types"
|
|
"github.com/ethereum/go-ethereum/params"
|
|
)
|
|
|
|
func Test_genesisStateFromJSONValidators(t *testing.T) {
|
|
numKeys := 5
|
|
jsonData := createGenesisDepositData(t, numKeys)
|
|
jsonInput, err := json.Marshal(jsonData)
|
|
require.NoError(t, err)
|
|
_, dds, err := depositEntriesFromJSON(jsonInput)
|
|
require.NoError(t, err)
|
|
for i := range dds {
|
|
assert.DeepEqual(t, fmt.Sprintf("%#x", dds[i].PublicKey), jsonData[i].PubKey)
|
|
}
|
|
}
|
|
|
|
func createGenesisDepositData(t *testing.T, numKeys int) []*depositDataJSON {
|
|
pubKeys := make([]bls.PublicKey, numKeys)
|
|
privKeys := make([]bls.SecretKey, numKeys)
|
|
for i := range numKeys {
|
|
randKey, err := bls.RandKey()
|
|
require.NoError(t, err)
|
|
privKeys[i] = randKey
|
|
pubKeys[i] = randKey.PublicKey()
|
|
}
|
|
dataList, _, err := interop.DepositDataFromKeys(privKeys, pubKeys)
|
|
require.NoError(t, err)
|
|
jsonData := make([]*depositDataJSON, numKeys)
|
|
for i := range numKeys {
|
|
dataRoot, err := dataList[i].HashTreeRoot()
|
|
require.NoError(t, err)
|
|
jsonData[i] = &depositDataJSON{
|
|
PubKey: fmt.Sprintf("%#x", dataList[i].PublicKey),
|
|
Amount: dataList[i].Amount,
|
|
WithdrawalCredentials: fmt.Sprintf("%#x", dataList[i].WithdrawalCredentials),
|
|
DepositDataRoot: fmt.Sprintf("%#x", dataRoot),
|
|
Signature: fmt.Sprintf("%#x", dataList[i].Signature),
|
|
}
|
|
}
|
|
return jsonData
|
|
}
|
|
|
|
func Test_generateGenesis_BaseFeeValidation(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
forkVersion int
|
|
baseFee *big.Int
|
|
expectError bool
|
|
errorMsg string
|
|
}{
|
|
{
|
|
name: "Pre-merge Altair network without baseFee - should use default",
|
|
forkVersion: version.Altair,
|
|
baseFee: nil,
|
|
expectError: false,
|
|
},
|
|
{
|
|
name: "Post-merge Bellatrix network without baseFee - should error",
|
|
forkVersion: version.Bellatrix,
|
|
baseFee: nil,
|
|
expectError: true,
|
|
errorMsg: "baseFeePerGas must be set in genesis.json for Post-Merge networks (after Altair)",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
// Save original flags
|
|
originalFlags := generateGenesisStateFlags
|
|
defer func() {
|
|
generateGenesisStateFlags = originalFlags
|
|
}()
|
|
|
|
// Set up test flags
|
|
generateGenesisStateFlags.NumValidators = 2
|
|
generateGenesisStateFlags.GenesisTime = 1609459200
|
|
generateGenesisStateFlags.ForkName = version.String(tt.forkVersion)
|
|
|
|
// Create a minimal genesis JSON for testing
|
|
genesis := &core.Genesis{
|
|
BaseFee: tt.baseFee,
|
|
Difficulty: big.NewInt(0),
|
|
GasLimit: 15000000,
|
|
Alloc: types.GenesisAlloc{},
|
|
Config: ¶ms.ChainConfig{
|
|
ChainID: big.NewInt(32382),
|
|
},
|
|
}
|
|
|
|
// Create temporary genesis JSON file
|
|
genesisJSON, err := json.Marshal(genesis)
|
|
require.NoError(t, err)
|
|
|
|
tmpFile := t.TempDir() + "/genesis.json"
|
|
err = writeFile(tmpFile, genesisJSON)
|
|
require.NoError(t, err)
|
|
|
|
generateGenesisStateFlags.GethGenesisJsonIn = tmpFile
|
|
|
|
ctx := context.Background()
|
|
_, err = generateGenesis(ctx)
|
|
|
|
if tt.expectError {
|
|
require.ErrorContains(t, tt.errorMsg, err)
|
|
} else {
|
|
require.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func writeFile(path string, data []byte) error {
|
|
return os.WriteFile(path, data, 0644)
|
|
}
|