Skip to content

Python module for tinkering with Cosmos Network Genesis files

License

Notifications You must be signed in to change notification settings

agoric-labs/cosmos-genesis-tinkerer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agoric mainnet fork maker

This repo is forked from hyphacoop/cosmos-genesis-tinkerer and added agoric specific scripts to create a mainnet fork snapshot from the latest mainnet height ready for deployment.

The Python code to tinker with the genesis file is in agoric_genesis.py. The scripts folder contains scripts to do the following.

  1. Create a new mainnet follower using state-sync.
  2. Export a genesis file from the follower's state.
  3. Tinker the exported genesis file for two mainfork validators.
  4. Export the artifacts for creating mainfork cluster.

Run the following script to perform all these steps.

./scripts/run_all.sh

Cosmos Genesis Tinker

A Python module for modifying Cosmos genesis files.

Use this tool to test how the network reacts to a given scenario. The available operations include (but are not limited to):

  • Swapping validators
  • Swapping delegators
  • Increasing balance
  • Increasing validator power
  • Increasing delegator stake to a validator

⚠️ This project is in active development.

Setup

Requirements

  • Python 3.10
  1. Clone from github: git clone [email protected]:hyphacoop/cosmos-genesis-tinkerer.git
  2. Change directory: cd cosmos-genesis-tinkerer
  3. Create a python virtual environment: python -m venv .env
  4. Source env shell vars: source .env/bin/activate
  5. Install requirements: pip install -r requirements.txt

Running a tinker file

You can run an example genesis tinker file like this:

./example_fresh_genesis.py

It will read the fresh_genesis.json file from the tests folder and generate tinkered_genesis.json.

Usage

Access full module documentation with pydoc cosmos_genesis_tinker.

Example:

from cosmos_genesis_tinker import GenesisTinker, Delegator

tinker = cosmos_genesis_tinker.GenesisTinker(
    input_file='input.json',
    output_file='output.json')

old_del = Delegator()
old_del.address = 'cosmos123'
old_del.public_key = 'abcxyz'

new_del = Delegator()
new_del.address = 'cosmos456'
new_del.public_key = 'defuvw'

tinker.add_task(tinker.replace_delegator,
    old_delegator=old_del,
    new_delegator=new_del)
    
tinker.add_task(tinker.increase_balance,
    address=new_delegator.address,
    amount=9000000000,
    denom='uatom')

tinker.run_tasks()

Exported genesis files

We export the cosmoshub-4 genesis bi-weekly and modify the exported genesis with example_mainnet_genesis.py:

  • A set of exported cosmoshub-4 genesis files can be found here.
  • A set of tinkered cosmoshub-4 genesis files can be found here.

About

Python module for tinkering with Cosmos Network Genesis files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 88.8%
  • Shell 11.2%