Skip to content

repeatable EVM based deployment and execution runner for smart contracts and its dependencies

Notifications You must be signed in to change notification settings

0xfourzerofour/deployer-of-worlds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

deployer-of-worlds

A config driven smart contract deployment and execution framework for repeatable and deterministic actions.

Example Config

[
  {
    "id": "read_entrypoint_deposit_info",
    "action_data": {
      "type": "read",
      "content": {
        "address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
        "function": {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "getDepositInfo",
          "outputs": [
            {
              "components": [
                {
                  "internalType": "uint112",
                  "name": "deposit",
                  "type": "uint112"
                },
                {
                  "internalType": "bool",
                  "name": "staked",
                  "type": "bool"
                },
                {
                  "internalType": "uint112",
                  "name": "stake",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "unstakeDelaySec",
                  "type": "uint32"
                },
                {
                  "internalType": "uint48",
                  "name": "withdrawTime",
                  "type": "uint48"
                }
              ],
              "internalType": "struct IStakeManager.DepositInfo",
              "name": "info",
              "type": "tuple"
            }
          ],
          "stateMutability": "view"
        },
        "args": [
          "0x4f84a207A80c39E9e8BaE717c1F25bA7AD1fB08F"
        ]
      }
    }
  },
  {
    "id": "read_entrypoint_get_balance",
    "depends_on": ["read_entrypoint_deposit_info"],
    "action_data": {
      "type": "read",
      "content": {
        "address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
        "function": {
          "inputs": [
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        "args": [
          "0x4f84a207A80c39E9e8BaE717c1F25bA7AD1fB08F"
        ]
      }
    }
  }
]

TODO

  • Input validation based on id's and output schema based on jq queries
  • Generate init code based on input abi and constructor args
  • Conditional Execution logic based on on-chain read funcitonality
  • CREATE2 Deployer implementation for contract deployment
  • CLI tool to allow for arbitrary json inputs to be executed
  • Use Create2 deployer factory and bind rust types to it (here)[https://github.com/pcaversaccio/createx]

About

repeatable EVM based deployment and execution runner for smart contracts and its dependencies

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages