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 }