Skip to content

Commit c0340cc

Browse files
committed
working
1 parent 45621a9 commit c0340cc

File tree

5 files changed

+50
-20
lines changed

5 files changed

+50
-20
lines changed

local/network.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ func NewDefaultNetwork(
380380
// NewDefaultConfig creates a new default network config
381381
func NewDefaultConfig(binaryPath string) network.Config {
382382
config := defaultNetworkConfig
383+
config.NetworkID = constants.DefaultNetworkID
383384
config.BinaryPath = binaryPath
384385
// Don't overwrite [DefaultNetworkConfig.NodeConfigs]
385386
config.NodeConfigs = make([]node.Config, len(defaultNetworkConfig.NodeConfigs))
@@ -438,13 +439,18 @@ func NewDefaultConfigNNodes(binaryPath string, numNodes uint32) (network.Config,
438439
if int(numNodes) == 1 {
439440
netConfig.Flags[config.SybilProtectionEnabledKey] = false
440441
}
442+
genesis, err := utils.GenerateCustomGenesis(netConfig)
443+
if err != nil {
444+
return netConfig, err
445+
}
446+
netConfig.Genesis = string(genesis)
441447
return netConfig, nil
442448
}
443449

444450
type nodeKeys struct {
445-
stakingKey string
451+
stakingKey string
446452
stakingCert string
447-
blsKey string
453+
blsKey string
448454
}
449455

450456
func getNodeKeys() (*nodeKeys, error) {

network/config.go

+1-10
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"time"
1010

1111
"github.com/ava-labs/avalanche-network-runner/network/node"
12-
"github.com/ava-labs/avalanche-network-runner/utils"
1312
"github.com/ava-labs/avalanchego/genesis"
1413
"github.com/ava-labs/avalanchego/ids"
1514
"github.com/ava-labs/avalanchego/utils/constants"
@@ -85,17 +84,9 @@ func (c *Config) Validate() error {
8584
return errors.New("no genesis given")
8685
}
8786

88-
networkID, err := utils.NetworkIDFromGenesis([]byte(c.Genesis))
89-
if err != nil {
90-
return fmt.Errorf("couldn't get network ID from genesis: %w", err)
91-
}
92-
if c.NetworkID != 0 {
93-
networkID = c.NetworkID
94-
}
95-
9687
var someNodeIsBeacon bool
9788
for i, nodeConfig := range c.NodeConfigs {
98-
if err := nodeConfig.Validate(networkID); err != nil {
89+
if err := nodeConfig.Validate(c.NetworkID); err != nil {
9990
var nodeName string
10091
if len(nodeConfig.Name) > 0 {
10192
nodeName = nodeConfig.Name

utils/constants/constants.go

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const (
1313
DefaultPluginDirEnvVar = "AVALANCHEGO_PLUGIN_PATH"
1414
LocalGenesisFile = "genesis.json"
1515
IPv4Lookback = "127.0.0.1"
16+
DefaultNetworkID = 1337
1617
)
1718

1819
var LocalConfigDir = filepath.Join("local", "default")

utils/genesis.go

+39-7
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33
package utils
44

55
import (
6+
"encoding/base64"
67
"encoding/json"
8+
"fmt"
79
"time"
810

11+
"github.com/ava-labs/avalanche-network-runner/network"
12+
"github.com/ava-labs/avalanchego/utils/crypto/bls"
13+
"github.com/ava-labs/avalanchego/utils/formatting"
14+
"github.com/ava-labs/avalanchego/vms/platformvm/signer"
915
coreth_params "github.com/ava-labs/coreth/params"
1016
)
1117

@@ -16,6 +22,8 @@ const (
1622
defaultLocalCChainFundedAddress = "8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC"
1723
defaultLocalCChainFundedBalance = "0x295BE96E64066972000000"
1824
allocationCommonEthAddress = "0xb3d82b1367d362de99ab59a658165aff520cbd4d"
25+
stakingAddr = "X-custom1g65uqn6t77p656w64023nh8nd9updzmxwd59gh"
26+
walletAddr = "X-custom18jma8ppw3nhx5r4ap8clazz0dps7rv5u9xde7p"
1927
)
2028

2129
func generateCustomCchainGenesis() ([]byte, error) {
@@ -39,11 +47,8 @@ func generateCustomCchainGenesis() ([]byte, error) {
3947
return json.Marshal(cChainGenesisMap)
4048
}
4149

42-
func generateCustomGenesis(
43-
networkID uint32,
44-
walletAddr string,
45-
stakingAddr string,
46-
nodeIDs []string,
50+
func GenerateCustomGenesis(
51+
netConfig network.Config,
4752
) ([]byte, error) {
4853
genesisMap := map[string]interface{}{}
4954

@@ -55,18 +60,45 @@ func generateCustomGenesis(
5560
genesisMap["cChainGenesis"] = string(cChainGenesisBytes)
5661

5762
// pchain genesis
58-
genesisMap["networkID"] = networkID
63+
genesisMap["networkID"] = netConfig.NetworkID
5964
startTime := time.Now().Unix()
6065
genesisMap["startTime"] = startTime
6166
initialStakers := []map[string]interface{}{}
62-
for _, nodeID := range nodeIDs {
67+
68+
for _, nodeConfig := range netConfig.NodeConfigs {
69+
nodeID, err := ToNodeID([]byte(nodeConfig.StakingKey), []byte(nodeConfig.StakingCert))
70+
if err != nil {
71+
return nil, fmt.Errorf("couldn't get node ID: %w", err)
72+
}
73+
blsKeyBytes, err := base64.StdEncoding.DecodeString(nodeConfig.StakingSigningKey)
74+
if err != nil {
75+
return nil, err
76+
}
77+
blsSk, err := bls.SecretKeyFromBytes(blsKeyBytes)
78+
if err != nil {
79+
return nil, err
80+
}
81+
p := signer.NewProofOfPossession(blsSk)
82+
pk, err := formatting.Encode(formatting.HexNC, p.PublicKey[:])
83+
if err != nil {
84+
return nil, err
85+
}
86+
pop, err := formatting.Encode(formatting.HexNC, p.ProofOfPossession[:])
87+
if err != nil {
88+
return nil, err
89+
}
6390
initialStaker := map[string]interface{}{
6491
"nodeID": nodeID,
6592
"rewardAddress": walletAddr,
6693
"delegationFee": 1000000,
94+
"signer": map[string]interface{}{
95+
"publicKey": pk,
96+
"proofOfPossession": pop,
97+
},
6798
}
6899
initialStakers = append(initialStakers, initialStaker)
69100
}
101+
70102
genesisMap["initialStakeDuration"] = 31536000
71103
genesisMap["initialStakeDurationOffset"] = 5400
72104
genesisMap["initialStakers"] = initialStakers

utils/utils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func SetGenesisNetworkID(genesis []byte, networkID uint32) ([]byte, error) {
6161
}
6262
genesisMap[genesisNetworkIDKey] = networkID
6363
var err error
64-
genesis, err = json.Marshal(genesisMap)
64+
genesis, err = json.MarshalIndent(genesisMap, "", " ")
6565
if err != nil {
6666
return nil, fmt.Errorf("couldn't marshal genesis: %w", err)
6767
}

0 commit comments

Comments
 (0)