github.com/ava-labs/avalanchego@v1.11.11/vms/platformvm/genesis/genesis.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package genesis 5 6 import ( 7 "github.com/ava-labs/avalanchego/vms/components/avax" 8 "github.com/ava-labs/avalanchego/vms/platformvm/txs" 9 ) 10 11 // UTXO adds messages to UTXOs 12 type UTXO struct { 13 avax.UTXO `serialize:"true"` 14 Message []byte `serialize:"true" json:"message"` 15 } 16 17 // Genesis represents a genesis state of the platform chain 18 type Genesis struct { 19 UTXOs []*UTXO `serialize:"true"` 20 Validators []*txs.Tx `serialize:"true"` 21 Chains []*txs.Tx `serialize:"true"` 22 Timestamp uint64 `serialize:"true"` 23 InitialSupply uint64 `serialize:"true"` 24 Message string `serialize:"true"` 25 } 26 27 func Parse(genesisBytes []byte) (*Genesis, error) { 28 gen := &Genesis{} 29 if _, err := Codec.Unmarshal(genesisBytes, gen); err != nil { 30 return nil, err 31 } 32 for _, tx := range gen.Validators { 33 if err := tx.Initialize(txs.GenesisCodec); err != nil { 34 return nil, err 35 } 36 } 37 for _, tx := range gen.Chains { 38 if err := tx.Initialize(txs.GenesisCodec); err != nil { 39 return nil, err 40 } 41 } 42 return gen, nil 43 }