github.com/platonnetwork/platon-go@v0.7.6/cases/tests/lib/genesis.py (about) 1 from dataclasses import dataclass 2 from dacite import from_dict 3 from typing import Optional 4 import json 5 6 7 @dataclass 8 class Cbft: 9 initialNodes: list 10 amount: int 11 validatorMode: str 12 period: int 13 14 15 @dataclass 16 class Config: 17 chainId: int 18 eip155Block: int 19 cbft: Cbft 20 genesisVersion: int 21 22 23 @dataclass 24 class Common: 25 maxEpochMinutes: int 26 maxConsensusVals: int 27 additionalCycleTime: int 28 29 30 @dataclass 31 class Staking: 32 stakeThreshold: int 33 operatingThreshold: int 34 maxValidators: int 35 unStakeFreezeDuration: int 36 37 38 @dataclass 39 class Slashing: 40 slashFractionDuplicateSign: int 41 duplicateSignReportReward: int 42 slashBlocksReward: int 43 maxEvidenceAge: int 44 45 46 @dataclass 47 class Gov: 48 versionProposalVoteDurationSeconds: int 49 versionProposalSupportRate: float 50 textProposalVoteDurationSeconds: int 51 textProposalVoteRate: float 52 textProposalSupportRate: float 53 cancelProposalVoteRate: float 54 cancelProposalSupportRate: float 55 paramProposalVoteDurationSeconds: int 56 paramProposalVoteRate: float 57 paramProposalSupportRate: float 58 59 60 @dataclass 61 class Reward: 62 newBlockRate: int 63 platONFoundationYear: int 64 65 66 @dataclass 67 class InnerAcc: 68 platonFundAccount: str 69 platonFundBalance: int 70 cdfAccount: str 71 cdfBalance: int 72 73 74 @dataclass 75 class EconomicModel: 76 common: Common 77 staking: Staking 78 slashing: Slashing 79 gov: Gov 80 reward: Reward 81 innerAcc: InnerAcc 82 83 84 @dataclass 85 class Genesis: 86 config: Config 87 economicModel: EconomicModel 88 nonce: str 89 timestamp: str 90 extraData: str 91 gasLimit: str 92 alloc: dict 93 number: str 94 gasUsed: str 95 parentHash: str 96 97 def to_dict(self): 98 from copy import copy 99 data = copy(self.__dict__) 100 data["config"] = copy(self.config.__dict__) 101 data["config"]["cbft"] = copy(self.config.cbft.__dict__) 102 data["economicModel"] = copy(self.economicModel.__dict__) 103 data["economicModel"]["common"] = copy(self.economicModel.common.__dict__) 104 data["economicModel"]["staking"] = copy(self.economicModel.staking.__dict__) 105 data["economicModel"]["slashing"] = copy(self.economicModel.slashing.__dict__) 106 data["economicModel"]["gov"] = copy(self.economicModel.gov.__dict__) 107 data["economicModel"]["reward"] = copy(self.economicModel.reward.__dict__) 108 data["economicModel"]["innerAcc"] = copy(self.economicModel.innerAcc.__dict__) 109 return data 110 111 def to_file(self, file): 112 data = self.to_dict() 113 with open(file, "w") as f: 114 f.write(json.dumps(data, indent=4)) 115 116 117 def to_genesis(genesis_conf) -> Genesis: 118 return from_dict(Genesis, genesis_conf) 119 120 121 if __name__ == "__main__": 122 # from common.load_file import LoadFile 123 # from conf.settings import GENESIS_FILE 124 # import json 125 # genesis_data = LoadFile(GENESIS_FILE).get_data() 126 # genesis = from_dict(data_class=Genesis, data=genesis_data) 127 # genesis.config.chainId = 1 128 # # print(genesis_to_dict(genesis)) 129 # print(genesis.to_dict()) 130 131 pass