github.com/Finschia/finschia-sdk@v0.48.1/contrib/migrate/v0.33.x-to-v0.34.0.py (about)

     1  #!/usr/bin/env python3
     2  
     3  import lib
     4  
     5  
     6  def process_raw_genesis(genesis, parsed_args):
     7      # update genesis with breaking changes
     8      if 'block_size' in genesis['consensus_params']:
     9          genesis['consensus_params']['block'] = genesis['consensus_params']['block_size']
    10          del genesis['consensus_params']['block_size']
    11  
    12      genesis['app_state']['crisis'] = {
    13          'constant_fee': {
    14              'amount': '1333000000',  # ~$5,000 worth of uatoms
    15              'denom': 'uatom',
    16          },
    17      }
    18  
    19      # migrate governance state as the internal structure of proposals has changed
    20      migrate_gov_data(genesis['app_state']['gov'])
    21  
    22      # default Tendermint block time (ms)
    23      genesis['consensus_params']['block']['time_iota_ms'] = '1000'
    24  
    25      # proposal #1 updates
    26      genesis['app_state']['mint']['params']['blocks_per_year'] = '4855015'
    27  
    28      # proposal #2 updates
    29      genesis['consensus_params']['block']['max_gas'] = '2000000'
    30      genesis['consensus_params']['block']['max_bytes'] = '200000'
    31  
    32      # enable transfers
    33      genesis['app_state']['bank']['send_enabled'] = True
    34      genesis['app_state']['distr']['withdraw_addr_enabled'] = True
    35  
    36      # Set new chain ID and genesis start time
    37      genesis['chain_id'] = parsed_args.chain_id.strip()
    38      genesis['genesis_time'] = parsed_args.start_time
    39  
    40      return genesis
    41  
    42  
    43  def migrate_gov_data(gov_data):
    44      for p in gov_data['proposals']:
    45          # get Amino type and value
    46          t = p['type']
    47          v = p['value']
    48  
    49          del p['type']
    50          del p['value']
    51  
    52          assert t == 'gov/TextProposal', 'invalid proposal type: {t}'
    53          assert p == {}, 'expected proposal to be empty after deleting contents'
    54  
    55          p['proposal_content'] = {
    56              'type': t,
    57              'value': {
    58                  'title': v['title'],
    59                  'description': v['description']
    60              }
    61          }
    62  
    63          p['proposal_id'] = v['proposal_id']
    64          p['proposal_status'] = v['proposal_status']
    65          p['final_tally_result'] = v['final_tally_result']
    66          p['submit_time'] = v['submit_time']
    67          p['deposit_end_time'] = v['deposit_end_time']
    68          p['total_deposit'] = v['total_deposit']
    69          p['voting_start_time'] = v['voting_start_time']
    70          p['voting_end_time'] = v['voting_end_time']
    71  
    72  
    73  if __name__ == '__main__':
    74      parser = lib.init_default_argument_parser(
    75          prog_desc='Convert genesis.json from v0.33.x to v0.34.0',
    76          default_chain_id='cosmoshub-n',
    77          default_start_time='2019-02-11T12:00:00Z',
    78      )
    79      lib.main(parser, process_raw_genesis)