Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

axonweb3/axon-hardfork-test

Open more actions menu

Repository files navigation

Axon Hardfork Test

This project implements a testing process from the state of hardfork being disabled to being enabled.

  1. Build Axon from source code

    cd $your_workspace
    git clone https://github.com/axonweb3/axon.git
    cd axon
    cargo build
  2. Start multiple Axon nodes
    reset.sh is used to clear data and start axon nodes. You can also use it for the first-time startup.

    cd axon-hardfork-test
    bash reset.sh $your_workspace/axon

    You should see an output similar to this following:

    No process found listening on port 8001
    No process found listening on port 8002
    No process found listening on port 8003
    No process found listening on port 8004
    hardforks = ["None"]
    node_1 height: 6
    node_2 height: 6
    node_3 height: 6
    node_4 height: 6
    {
      "jsonrpc": "2.0",
      "result": {},
      "id": 1
    }
    {
      "jsonrpc": "2.0",
      "result": {},
      "id": 2
    }
    {
      "jsonrpc": "2.0",
      "result": {},
      "id": 3
    }
    {
      "jsonrpc": "2.0",
      "result": {},
      "id": 4
    }
    
  3. Enable hardfork
    hardfork.sh enables the hardfork by default after 30 blocks.

    bash hardfork.sh $your_workspace/axon

    You should see an output similar to this following:

    axon_path: /Users/sunchengzhu/tmp/axon
    hardfork-start-number: 694
    Killing processes on port 8001: 9285
    Killing processes on port 8002: 9286
    Killing processes on port 8003: 9287
    Killing processes on port 8004: 9288
    node_1 height: 670
    node_2 height: 670
    node_3 height: 670
    node_4 height: 670
    {
      "jsonrpc": "2.0",
      "result": {
        "Andromeda": "determined"
      },
      "id": 1
    }
    {
      "jsonrpc": "2.0",
      "result": {
        "Andromeda": "determined"
      },
      "id": 2
    }
    {
      "jsonrpc": "2.0",
      "result": {
        "Andromeda": "determined"
      },
      "id": 3
    }
    {
      "jsonrpc": "2.0",
      "result": {
        "Andromeda": "determined"
      },
      "id": 4
    }
    
  4. Get the nodes' hardfork info again
    Until you see the return of "Andromeda": "enabled".

    node_ids=(1 2 3 4)
    for id in "${node_ids[@]}"; do
      port=$((8000 + id))
      url="http://127.0.0.1:${port}"
      curl_command="curl -sS -X POST ${url} -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"method\":\"axon_getHardforkInfo\",\"params\":[],\"id\":"$id"}' | jq"
      eval "${curl_command}"
    done
  5. Get the nodes' current metadata

    for id in "${node_ids[@]}"; do
      port=$((8000 + id))
      url="http://localhost:${port}"
      curl_command="curl -sS -X POST ${url} -H 'Content-Type: application/json' --data '{\"jsonrpc\":\"2.0\",\"method\":\"axon_getCurrentMetadata\",\"params\":[],\"id\":"$id"}' | jq '.result.consensus_config.max_contract_limit'"
      eval "${curl_command}"
    done
  6. Verify max_contract_limit configuration: 0x6000(24576)

    npx hardhat test --grep "deploy a big contract larger than max_contract_limit"
  7. Select a node, for example node_2, to update the max_contract_limit

    npx hardhat test --grep "update max_contract_limit"
  8. Get the nodes' current metadata again
    You'll see that max_contract_limit has been changed to 0x8000.

  9. Verify max_contract_limit configuration: 0x8000(32768)

    npx hardhat test --grep "deploy a big contract smaller than max_contract_limit"
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.