npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eosiac

v1.4.2

Published

eosiac is an IaC-tool to manage EOS accounts for complex dapps

Downloads

68

Readme

⚠️ eosiac is currently under active development and a beta release. It is not yet recommended for production use. If you want to get involved, see the Contributing guidelines.

eosiac

eosiac (EOS Infrastructure-as-code) is an Infrastructure-as-code tool to manage EOS accounts for complex dapps. Dapps involve many accounts that require non-trivial setup (permissions, code, tokens, RAM, CPU, NET) often in multiple environments (mainnet, testnet, dev). eosiac automates the whole process by defining these environments in a declarative way through human-readable files that are easy to understand even for non-developers.

Features

  • configured through simple-to-read configuration files
  • support for several environments
  • create accounts
  • create/update permissions including keys, accounts, and weights
  • stake CPU/NET
  • buy RAM
  • link permissions (only on EOS Mainnet, Jungle, and Kylin environmnets)
  • upload code / abi
  • distribute any token
  • sign with hard-coded private keys or Scatter
  • use ONLY_BILL_FIRST_AUTHORIZER to pay for transactions (see cpu_payer object)
  • fully idempotent: only runs actions that are necessary to bring the environment to the specified setup - making it safe to script abortions, re-runs, running in CI

Additional features:

  • scaffold contract actions through the create-actions command
  • create vanity EOS public keys (eosiac create-keys --help)
  • get public key for a private key (eosiac key-to-public --help)

Configuration Example

Configurations are stored in an eosiac.yml YAML-file and define environments and accounts in a declarative way by specifying the desired state of the accounts.

---
dev:
  chain_id: cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f
  node_endpoint: http://localhost:7777
  accounts_manager: eosio # account signing the new_account actions (needed when creating the accounts for the first time)
  funds_manager: eosio # account distributing tokens to accounts (liquid ones but also for staking)
  ram_manager: eosio # account buying RAM for accounts

  accounts:
    eosio:
      signature:
        type: key
        private_keys:
          - 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    account123:
      signature:
        type: key
        private_keys:
          - 5JxfmGBJkKqHhcfmbGnwuhjrzxg3bd7D46hEpT8V634L2G7ptLr # active
          - 5K5stUB6Do1XKvNCKv4Qh7JtPWzGd6sm12bBnRSD5gaA76a8TFE # owner, for _updateauth_
      auth:
        owner:
          permissions:
            - EOS8ktnmUMpc5GLFwBa5bp3n2djwBUuV7BcZR3fS1dxQ7RFzQLf6v
        active:
          # parent: owner # implicit for active
          threshold: 2
          permissions:
            - EOS7RTtzjKfoTBt4WR6ZMVgCfuM51fj4AbyzexhCqFWUk8BbK2EG7 2
            - [email protected] 1
            - wait@600 1
        ops:
          parent: owner
          threshold: 1
          permissions:
            - EOS62mKPAN7T48aPdi8ZYRcPFWURgw9JMjz52yxijDAwRV8GwCzmY
      tokens:
        - account: eosio.token
          amount: 1.0000 EOS
      code: examples/contracts/hello/hello.wasm
      abi: examples/contracts/hello/hello.abi

kylin:
  chain_id: 5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191
  node_endpoint: https://api-kylin.eoslaomao.com
  accounts_manager: eosiactester # account signing the new_account actions (needed when creating the accounts for the first time)
  funds_manager: eosiactester # account distributing tokens to accounts (liquid ones but also for staking)
  ram_manager: eosiactester # account buying RAM for accounts

  # if you want to use the OBFA feature to pay for CPU/NET
  cpu_payer:
    account: cmichelkylin
    permission: payforcpu
    key: 5KMMoB5yStEbHsWNTaCie55rN2ZswnxqDiWuta2nG88AfEPo3X4
    action: cmichelkylin@payforcpu # the noop action to insert as first action of the tx

  accounts:
    eosiactester:
      signature:
        type: scatter
      cpu:
        - delegate_to: eosiactester
          amount: 100000
        - delegate_to: eosiactestxx
          amount: 100000
      net:
        - delegate_to: eosiactester
          amount: 10000
        - delegate_to: eosiactestxx
          amount: 10000
      auth:
        owner:
          permissions:
            - EOS7dbJSQxad9BwYVBSugD4J9fBWEkZXYLuVjhQTPUTRqmmpQDzqq
        active:
          permissions:
            - EOS7dbJSQxad9BwYVBSugD4J9fBWEkZXYLuVjhQTPUTRqmmpQDzqq

    eosiactestxx:
      signature:
        type: scatter
      auth:
        owner:
          permissions:
            - EOS7hf99wqEqmibs9VC5Tvmv94ym6JaRgbjGVLGFkffdZZYxLrweR
        active:
          permissions:
            - EOS7hf99wqEqmibs9VC5Tvmv94ym6JaRgbjGVLGFkffdZZYxLrweR
        xtransfer:
          parent: active
          permissions:
            - EOS6TJmDVcHe94P4i3rtRMRS8rveE4oG7Zqxz2s1zj9sL5ekvLtkH
          links:
            - eosio.token@transfer
            - eosio.token@issue
      ram: 100000
      tokens:
        - account: eosio.token
          amount: 0.1337 EOS
      code: examples/contracts/hello/hello.wasm
      abi: examples/contracts/hello/hello.abi


jungle:
  chain_id: e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473
  node_endpoint: https://jungle2.cryptolions.io:443
  accounts_manager: someaccnt
  funds_manager: someaccnt
  ram_manager: someaccnt

waxtest:
  chain_id: f16b1833c747c43682f4386fca9cbb327929334a762755ebec17f6f23c9b8a12
  system_contract: eosio.token
  system_symbol: 8,WAX
  node_endpoint: https://waxtestnet.greymass.com
  accounts_manager: someaccnt
  funds_manager: someaccnt
  ram_manager: someaccnt

wax:
  chain_id: 1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4
  system_contract: eosio.token
  system_symbol: 8,WAX
  node_endpoint: https://chain.wax.io:443
  accounts_manager: someaccnt
  funds_manager: someaccnt
  ram_manager: someaccnt

mainnet:
  chain_id: aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906
  node_endpoint: https://public.eosinfra.io
  accounts_manager: someaccnt
  funds_manager: someaccnt
  ram_manager: someaccnt

Usage

eosiac apply <environment> [--config path]

eosiac apply dev # will look for an `eosiac.yml` file in current directory
eosiac apply mainnet --config 'configs/eos_config.yml'

Upon running the tool on a configuration, it will determine the actions that need to be run to bring the accounts to the desired state. To sign the transactions, signatures need to be configured on the *_manager accounts.

Currently supported signature providers are:

  1. directly providing the private-keys (recommened for dev environments only)
  2. Scatter

The tool's execution is idempotent - meaning if the blockchain is already in the desired state, it will do nothing.

Scaffolding actions

eosiac create-actions <environment> <account>

Contributing

To get involved please join or create a discussion in the GitHub issues.

Sponsors

Learn EOS Development