github.com/ava-labs/avalanchego@v1.11.11/genesis/genesis_local.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  	"time"
     8  
     9  	_ "embed"
    10  
    11  	"github.com/ava-labs/avalanchego/utils/cb58"
    12  	"github.com/ava-labs/avalanchego/utils/crypto/secp256k1"
    13  	"github.com/ava-labs/avalanchego/utils/units"
    14  	"github.com/ava-labs/avalanchego/utils/wrappers"
    15  	"github.com/ava-labs/avalanchego/vms/components/gas"
    16  	"github.com/ava-labs/avalanchego/vms/platformvm/reward"
    17  	"github.com/ava-labs/avalanchego/vms/platformvm/txs/fee"
    18  )
    19  
    20  // PrivateKey-vmRQiZeXEXYMyJhEiqdC2z5JhuDbxL8ix9UVvjgMu2Er1NepE => P-local1g65uqn6t77p656w64023nh8nd9updzmxyymev2
    21  // PrivateKey-ewoqjP7PxY4yr3iLTpLisriqt94hdyDFNgchSxGGztUrTXtNN => X-local18jma8ppw3nhx5r4ap8clazz0dps7rv5u00z96u
    22  // 56289e99c94b6912bfc12adc093c9b51124f0dc54ac7a766b2bc5ccf558d8027 => 0x8db97C7cEcE249c2b98bDC0226Cc4C2A57BF52FC
    23  
    24  const (
    25  	VMRQKeyStr          = "vmRQiZeXEXYMyJhEiqdC2z5JhuDbxL8ix9UVvjgMu2Er1NepE"
    26  	VMRQKeyFormattedStr = secp256k1.PrivateKeyPrefix + VMRQKeyStr
    27  
    28  	EWOQKeyStr          = "ewoqjP7PxY4yr3iLTpLisriqt94hdyDFNgchSxGGztUrTXtNN"
    29  	EWOQKeyFormattedStr = secp256k1.PrivateKeyPrefix + EWOQKeyStr
    30  )
    31  
    32  var (
    33  	VMRQKey *secp256k1.PrivateKey
    34  	EWOQKey *secp256k1.PrivateKey
    35  
    36  	//go:embed genesis_local.json
    37  	localGenesisConfigJSON []byte
    38  
    39  	// LocalParams are the params used for local networks
    40  	LocalParams = Params{
    41  		TxFeeConfig: TxFeeConfig{
    42  			CreateAssetTxFee: units.MilliAvax,
    43  			StaticFeeConfig: fee.StaticConfig{
    44  				TxFee:                         units.MilliAvax,
    45  				CreateSubnetTxFee:             100 * units.MilliAvax,
    46  				TransformSubnetTxFee:          100 * units.MilliAvax,
    47  				CreateBlockchainTxFee:         100 * units.MilliAvax,
    48  				AddPrimaryNetworkValidatorFee: 0,
    49  				AddPrimaryNetworkDelegatorFee: 0,
    50  				AddSubnetValidatorFee:         units.MilliAvax,
    51  				AddSubnetDelegatorFee:         units.MilliAvax,
    52  			},
    53  			// TODO: Set these values to something more reasonable
    54  			DynamicFeeConfig: gas.Config{
    55  				Weights: gas.Dimensions{
    56  					gas.Bandwidth: 1,
    57  					gas.DBRead:    1,
    58  					gas.DBWrite:   1,
    59  					gas.Compute:   1,
    60  				},
    61  				MaxCapacity:              1_000_000,
    62  				MaxPerSecond:             1_000,
    63  				TargetPerSecond:          500,
    64  				MinPrice:                 1,
    65  				ExcessConversionConstant: 5_000,
    66  			},
    67  		},
    68  		StakingConfig: StakingConfig{
    69  			UptimeRequirement: .8, // 80%
    70  			MinValidatorStake: 2 * units.KiloAvax,
    71  			MaxValidatorStake: 3 * units.MegaAvax,
    72  			MinDelegatorStake: 25 * units.Avax,
    73  			MinDelegationFee:  20000, // 2%
    74  			MinStakeDuration:  24 * time.Hour,
    75  			MaxStakeDuration:  365 * 24 * time.Hour,
    76  			RewardConfig: reward.Config{
    77  				MaxConsumptionRate: .12 * reward.PercentDenominator,
    78  				MinConsumptionRate: .10 * reward.PercentDenominator,
    79  				MintingPeriod:      365 * 24 * time.Hour,
    80  				SupplyCap:          720 * units.MegaAvax,
    81  			},
    82  		},
    83  	}
    84  )
    85  
    86  func init() {
    87  	errs := wrappers.Errs{}
    88  	vmrqBytes, err := cb58.Decode(VMRQKeyStr)
    89  	errs.Add(err)
    90  	ewoqBytes, err := cb58.Decode(EWOQKeyStr)
    91  	errs.Add(err)
    92  
    93  	VMRQKey, err = secp256k1.ToPrivateKey(vmrqBytes)
    94  	errs.Add(err)
    95  	EWOQKey, err = secp256k1.ToPrivateKey(ewoqBytes)
    96  	errs.Add(err)
    97  
    98  	if errs.Err != nil {
    99  		panic(errs.Err)
   100  	}
   101  }