mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-25 12:57:18 +00:00
a9a4bb9163
* move testutil * util pkg * build * gaz Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/prysmaticlabs/prysm/crypto/bls"
|
|
"github.com/prysmaticlabs/prysm/runtime/interop"
|
|
"github.com/prysmaticlabs/prysm/testing/assert"
|
|
"github.com/prysmaticlabs/prysm/testing/require"
|
|
)
|
|
|
|
func Test_genesisStateFromJSONValidators(t *testing.T) {
|
|
numKeys := 5
|
|
jsonData := createGenesisDepositData(t, numKeys)
|
|
jsonInput, err := json.Marshal(jsonData)
|
|
require.NoError(t, err)
|
|
genesisState, err := genesisStateFromJSONValidators(
|
|
bytes.NewReader(jsonInput), 0, /* genesis time defaults to time.Now() */
|
|
)
|
|
require.NoError(t, err)
|
|
for i, val := range genesisState.Validators {
|
|
assert.DeepEqual(t, fmt.Sprintf("%#x", val.PublicKey), jsonData[i].PubKey)
|
|
}
|
|
}
|
|
|
|
func createGenesisDepositData(t *testing.T, numKeys int) []*DepositDataJSON {
|
|
pubKeys := make([]bls.PublicKey, numKeys)
|
|
privKeys := make([]bls.SecretKey, numKeys)
|
|
for i := 0; i < numKeys; i++ {
|
|
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 := 0; i < numKeys; i++ {
|
|
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
|
|
}
|