Skip to content

Commit

Permalink
clean diff
Browse files Browse the repository at this point in the history
Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com>
  • Loading branch information
joshua-kim committed Jan 16, 2024
1 parent 777cc22 commit c647075
Show file tree
Hide file tree
Showing 11 changed files with 632 additions and 277 deletions.
75 changes: 37 additions & 38 deletions genesis/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -273,14 +273,19 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
hrp := constants.GetHRP(config.NetworkID)

amount := uint64(0)
networkID := json.Uint32(config.NetworkID)
avax := avm.AssetDefinition{
Name: "Avalanche",
Symbol: "AVAX",
Denomination: 9,
InitialState: map[string][]interface{}{},

// Specify the genesis state of the AVM
avmArgs := avm.BuildGenesisArgs{
NetworkID: json.Uint32(config.NetworkID),
Encoding: defaultEncoding,
}
{
avax := avm.AssetDefinition{
Name: "Avalanche",
Symbol: "AVAX",
Denomination: 9,
InitialState: map[string][]interface{}{},
}
memoBytes := []byte{}
xAllocations := []Allocation(nil)
for _, allocation := range config.Allocations {
Expand Down Expand Up @@ -309,26 +314,23 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
if err != nil {
return nil, ids.Empty, fmt.Errorf("couldn't parse memo bytes to string: %w", err)
}
avmArgs.GenesisData = map[string]avm.AssetDefinition{
"AVAX": avax, // The AVM starts out with one asset: AVAX
}
}
avmReply := avm.BuildGenesisReply{}

genesisData := map[string]avm.AssetDefinition{
"AVAX": avax, // The AVM starts out with one asset: AVAX
}

xchainFormattedGenesisBytes, err := avm.BuildGenesis(
networkID,
genesisData,
defaultEncoding,
)
avmSS := avm.CreateStaticService()
err := avmSS.BuildGenesis(nil, &avmArgs, &avmReply)
if err != nil {
return nil, ids.ID{}, err
}

xchainGenesisBytes, err := formatting.Decode(defaultEncoding, xchainFormattedGenesisBytes)
bytes, err := formatting.Decode(defaultEncoding, avmReply.Bytes)
if err != nil {
return nil, ids.ID{}, fmt.Errorf("couldn't parse avm genesis reply: %w", err)
}
avaxAssetID, err := AVAXAssetID(xchainGenesisBytes)
avaxAssetID, err := AVAXAssetID(bytes)
if err != nil {
return nil, ids.ID{}, fmt.Errorf("couldn't generate AVAX asset ID: %w", err)
}
Expand All @@ -342,7 +344,15 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
initiallyStaked := set.Of(config.InitialStakedFunds...)
skippedAllocations := []Allocation(nil)

pchainUtxos := make([]api.UTXO, 0)
// Specify the initial state of the Platform Chain
platformvmArgs := api.BuildGenesisArgs{
AvaxAssetID: avaxAssetID,
NetworkID: json.Uint32(config.NetworkID),
Time: json.Uint64(config.StartTime),
InitialSupply: json.Uint64(initialSupply),
Message: config.Message,
Encoding: defaultEncoding,
}
for _, allocation := range config.Allocations {
if initiallyStaked.Contains(allocation.AVAXAddr) {
skippedAllocations = append(skippedAllocations, allocation)
Expand All @@ -358,7 +368,7 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
if err != nil {
return nil, ids.Empty, fmt.Errorf("couldn't encode message: %w", err)
}
pchainUtxos = append(pchainUtxos,
platformvmArgs.UTXOs = append(platformvmArgs.UTXOs,
api.UTXO{
Locktime: json.Uint64(unlock.Locktime),
Amount: json.Uint64(unlock.Amount),
Expand All @@ -374,7 +384,6 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
allNodeAllocations := splitAllocations(skippedAllocations, len(config.InitialStakers))
endStakingTime := genesisTime.Add(time.Duration(config.InitialStakeDuration) * time.Second)
stakingOffset := time.Duration(0)
validators := make([]api.GenesisPermissionlessValidator, 0, len(config.InitialStakers))
for i, staker := range config.InitialStakers {
nodeAllocations := allNodeAllocations[i]
endStakingTime := endStakingTime.Add(-stakingOffset)
Expand Down Expand Up @@ -408,7 +417,7 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {

delegationFee := json.Uint32(staker.DelegationFee)

validators = append(validators,
platformvmArgs.Validators = append(platformvmArgs.Validators,
api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(genesisTime.Unix()),
Expand All @@ -431,9 +440,9 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
if err != nil {
return nil, ids.Empty, fmt.Errorf("couldn't encode message: %w", err)
}
chains := []api.Chain{
platformvmArgs.Chains = []api.Chain{
{
GenesisData: xchainFormattedGenesisBytes,
GenesisData: avmReply.Bytes,
SubnetID: constants.PrimaryNetworkID,
VMID: constants.AVMID,
FxIDs: []ids.ID{
Expand All @@ -451,28 +460,18 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
},
}

_, pchainFormattedGenesisBytes, err := api.BuildGenesis(
avaxAssetID,
networkID,
pchainUtxos,
validators,
chains,
json.Uint64(config.StartTime),
json.Uint64(initialSupply),
config.Message,
defaultEncoding,
)

if err != nil {
platformvmReply := api.BuildGenesisReply{}
platformvmSS := api.StaticService{}
if err := platformvmSS.BuildGenesis(nil, &platformvmArgs, &platformvmReply); err != nil {
return nil, ids.ID{}, fmt.Errorf("problem while building platform chain's genesis state: %w", err)
}

pchainFormattedBytes, err := formatting.Decode(defaultEncoding, pchainFormattedGenesisBytes)
genesisBytes, err := formatting.Decode(platformvmReply.Encoding, platformvmReply.Bytes)
if err != nil {
return nil, ids.ID{}, fmt.Errorf("problem parsing platformvm genesis bytes: %w", err)
}

return pchainFormattedBytes, avaxAssetID, nil
return genesisBytes, avaxAssetID, nil
}

func splitAllocations(allocations []Allocation, numSplits int) [][]Allocation {
Expand Down
3 changes: 2 additions & 1 deletion genesis/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package genesis

import (
_ "embed"
"encoding/base64"
"encoding/hex"
"encoding/json"
Expand All @@ -14,6 +13,8 @@ import (
"testing"
"time"

_ "embed"

"github.com/stretchr/testify/require"

"github.com/ava-labs/avalanchego/ids"
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ package e2e_test
import (
"testing"

"github.com/onsi/ginkgo/v2"
ginkgo "github.com/onsi/ginkgo/v2"

"github.com/onsi/gomega"

Expand Down

0 comments on commit c647075

Please sign in to comment.