Crunch is a command-line interface (CLI) to claim staking rewards every X hours for Substrate-based chains

Overview

crunch · latest release

crunch is a command-line interface (CLI) to claim staking rewards every X hours for Substrate-based chains.

Why use crunch

To automate payout of staking rewards for just one or a list of Validators every X hours.

To get notified about the amount and rate of the total staking rewards each Validator and their Nominators got

To be informed about era stats for each Validator, e.g. inclusion rate, claimed rewards rate, era points trend, active for current era

To easily inspect about any unclaimed eras for a given Validator stash

To promote Validators by publicly publish their automated staking rewards to a public Crunch Bot room

For Nominators in private or public rooms check their chosen Validators rewards performance

Installation

#!/bin/bash
# create `crunch-bot` directory
$ mkdir ~/crunch-bot
# download `crunch` latest version
$ wget -P ~/crunch-bot https://github.com/turboflakes/crunch/releases/download/v0.1.12/crunch
# make `crunch` binary file executable
chmod +x ~/crunch-bot/crunch

Configuration

Create a configuration file .env inside crunch-bot folder and copy the default variables from .env.example (Note: .env is the default name and a hidden file, if you want something different you can adjust it later with the option crunch --config-path ~/crunch-bot/config_kusama.env )

#!/bin/bash
# create/open a file with a file editor (Vim in this case) and add/change the configuration
# variables with your own personal values
$ vi ~/crunch-bot/.env
# when ready write and quit (:wq!)

Configuration file example: .env.example

# crunch CLI configuration variables 
#
# [CRUNCH_STASHES] Validator stash addresses for which 'crunch flakes', 'crunch rewards'
# or 'crunch view' will be applied. 
# If needed specify more than one (e.g. stash_1,stash_2,stash_3).
CRUNCH_STASHES=5GTD7ZeD823BjpmZBCSzBQp7cvHR1Gunq7oDkurZr9zUev2n
#
# [CRUNCH_SUBSTRATE_WS_URL] Substrate websocket endpoint for which 'crunch' will try to
# connect. (e.g. wss://kusama-rpc.polkadot.io) (NOTE: substrate_ws_url takes precedence
# than  argument) 
#CRUNCH_SUBSTRATE_WS_URL=wss://westend-rpc.polkadot.io
#
# [CRUNCH_MAXIMUM_PAYOUTS] Maximum number of unclaimed eras for which an extrinsic payout
# will be submitted. (e.g. a value of 4 means that if there are unclaimed eras in the last
# 84 the maximum unclaimed payout calls for each stash address will be 4). [default: 4]
CRUNCH_MAXIMUM_PAYOUTS=4
#
# [CRUNCH_SEED_PATH] File path containing the private seed phrase to Sign the extrinsic 
# payout call. [default: .private.seed]
#CRUNCH_SEED_PATH=.private.seed.example
#
# Crunch Bot (matrix) configuration variables
CRUNCH_MATRIX_USER=@your-regular-matrix-account:matrix.org
CRUNCH_MATRIX_BOT_USER=@your-own-crunch-bot-account:matrix.org
CRUNCH_MATRIX_BOT_PASSWORD=anotthateasypassword

Create a seed private file .private.seed inside crunch-bot folder and write the private seed phrase of the account responsible to sign the extrinsic payout call as in .private.seed.example (Note: .private.seed is the default name and a hidden file, if you want something different you can adjust it later with the option crunch flakes --seed-path ~/crunch-bot/.kusama.private.seed )

#!/bin/bash
# create a file with a file editor (Vim in this case) and write the private seed phrase 
# of the account responsible to sign the extrinsic payout call
$ vi ~/crunch-bot/.private.seed
# when ready write and quit (:wq!)

Crunch Bot (Matrix)

If you set up crunch on your server with a matrix user 👉 you get your own Crunch Bot.

To enable Crunch Bot you will need to create a specific account on Element or similar and copy the values to the respective environment variables CRUNCH_MATRIX_BOT_USER and CRUNCH_MATRIX_BOT_PASSWORD like in the configuration example file .env.example. You may also want to set your regular matrix user to the environment variable CRUNCH_MATRIX_USER. So that Crunch Bot could create a private room and send in messages. By default Crunch Bot will automatically invite your regular matrix user to a private room. Also by default Crunch Bot will send a copy of the messages to the respective network public room for which is connected to.

Public Rooms available

Join and read the messages history of all the Public Rooms for which Crunch Bots are sending messages:

Westend Crunch Bot (Public)
Kusama Crunch Bot (Public)
Polkadot Crunch Bot (Public)

Crunch Bot messages

crunch bot notification messages example

Usage

If you have been doing crunch configuration as described in previous steps (assuming .env and .private.seed defined inside ~/crunch-bot folder), run crunch when ~/crunch-bot folder is your current working directory. Otherwise you will have to specify .env and .private.seed custom paths.

#!/bin/bash
# set ~/crunch-bot your current working directory
$ cd ~/crunch-bot

By default crunch tries to connect to your local substrate node on the default websocket port ws://127.0.0.1:9944. This can be changed by typing one of polkadot main chains - westend, kusama or polkadot. Or by changing the substrate websocket url with the option --substrate-ws-url.

crunch default sub command is flakes, there are fun messages if you stick with it, or you can choose the regular sub command rewards rather than flakes. As you prefer. Both sub commands are identical in terms of job execution. But logs, messages/notifications differ.

Essentially crunch motto is enjoy Crunch Bot while crunch flakes :)

If all has been set as previously described crunch should be ready with just the following options:

#!/bin/bash
# and than simple run crunch with default options to connect to your local node
$ crunch flakes
# or specify directly which network crunch will try to connect
$ crunch westend flakes
# or for Kusama network and claiming rewards every 6 hours
$ crunch kusama flakes turbo
# or for Polkadot network and claiming rewards once a day
$ crunch polkadot flakes daily
# or run crunch a bit more boring for Westend network
$ crunch westend rewards turbo
# or for Kusama network and claiming rewards once a day
$ crunch kusama rewards daily
# or for Polkadot network and claiming rewards once a day
$ crunch polkadot rewards daily

If you need more customization run help to check all sub commands, flags and options.

Note: All flags and options are also available through environment variables if defined in .env configuration file. You can choose which way you want to configure crunch. Take in consideration that if the same variable is defined on both sides e.g. defined in .env and through CLI flag/option, crunch will take the value defined by CLI.

#!/bin/bash
# if you need a custom crunch check all the options and flags available
$ crunch help
#!/bin/bash
# or help for any subcommand like
$ crunch rewards --help

USAGE:
    crunch rewards [FLAGS] [OPTIONS] [MODE]

FLAGS:
        --debug                              Prints debug information verbosely.
        --disable-matrix                     Disable matrix bot for 'crunch rewards'. (e.g. with this flag active
                                             'crunch rewards' will not send messages/notifications about claimed or
                                             unclaimed staking rewards to your private or public 'Crunch Bot' rooms)
                                             (https://matrix.org/)
        --disable-matrix-bot-display-name    Disable matrix bot display name update for 'crunch rewards'. (e.g. with
                                             this flag active 'crunch rewards' will not change the matrix bot user
                                             display name)
        --disable-public-matrix-room         Disable notifications to matrix public rooms for 'crunch rewards'. (e.g.
                                             with this flag active 'crunch rewards' will not send messages/notifications
                                             about claimed or unclaimed staking rewards to any public 'Crunch Bot' room)
    -h, --help                               Prints help information
    -V, --version                            Prints version information

OPTIONS:
        --matrix-bot-password <matrix-bot-password>    Password for the 'Crunch Bot' matrix user sign in.
        --matrix-bot-user <matrix-bot-user>
            Your new 'Crunch Bot' matrix user. e.g. '@your-own-crunch-bot-account:matrix.org' this user account will be
            your 'Crunch Bot' which will be responsible to send messages/notifications to your private or public 'Crunch
            Bot' rooms.
        --matrix-user <matrix-user>
            Your regular matrix user. e.g. '@your-regular-matrix-account:matrix.org' this user account will receive
            notifications from your other 'Crunch Bot' matrix account.
    -m, --maximum-payouts <maximum-payouts>
            Maximum number of unclaimed eras for which an extrinsic payout will be submitted. (e.g. a value of 4 means
            that if there are unclaimed eras in the last 84 the maximum unclaimed payout calls for each stash address
            will be 4). [default: 4]
    -f, --seed-path <FILE>
            Sets a custom seed file path. The seed file contains the private seed phrase to Sign the extrinsic payout
            call. [default: .private.seed]

ARGS:
    <MODE>    Sets how often staking rewards should be claimed from unclaimed eras. (e.g. the option 'daily' sets
              'crunch' task to be repeated every 24 hours; option 'turbo' sets 'crunch' task to be repeated every 6
              hours) [default: turbo]  [possible values: daily, turbo]

Also if you just want to know for the stash accounts defined in the confguration file (.env), which eras from the last 84 have already been claimed or unclaimed, you can simply run crunch view

Note: This option only logs information on the terminal

#!/bin/bash
# run crunch for Westend network and claiming rewards every 6 hours
$ crunch westend view
# or for Kusama network
$ crunch kusama view
# or for Polkadot network
$ crunch polkadot view

Note: You can run crunch inside a tmux session and leave it, or using something like systemd to run crunch on server restarts for example. By default crunch will wake up every X hours to claim rewards if there are any to claim.

Development

Clone the repository and compile the package with Cargo

#!/bin/bash
$ git clone http://github.com/turboflakes/crunch

Compile the crunch binary

#!/bin/bash
$ cargo build

And then run it

#!/bin/bash
$ ./target/debug/crunch westend flakes daily

Otherwise, recompile the code on changes and run the binary

#!/bin/bash
$ cargo watch -x 'run --bin crunch'

Inspiration

Similar projects that had influence in crunch design.

  • staking-payouts - CLI to make staking payout transactions for Substrate FRAME-based chains.
  • substrate-payctl - Simple command line application to control the payouts of Substrate validators (Polkadot and Kusama among others).
  • Jetpacks and Rollerskates - Illustration work heavily inspired Crunch Bot logo.

Collaboration

Have an idea for a new feature, a fix or you found a bug, please open an issue or submit a pull request.

Any feedback is welcome.

About

crunch was made by TurboFlakes.

TurboFlakes is also an independent validator in the Kusama Network and eligible in the Kusama's Thousand Validators Programme, aka 1KV.

If you like this project ✌️ Share our work and support us with your nomination or tip 💙

  • Polkadot: 12gPFmRqnsDhc9C5DuXyXBFA23io5fSGtKTSAimQtAWgueD2
  • Kusama: FZsMKYHoQG1dAVhXBMyC7aYFYpASoBrrMYsAn1gJJUAueZX

You could also Star the Github project :)

License

crunch is MIT licensed.

Quote

"Study hard what interests you the most in the most undisciplined, irreverent and original manner possible." ― Richard Feynmann

__

Enjoy crunch

Comments
  • Validator reward daily flag not respected

    Validator reward daily flag not respected

    I'm trying to pay out KSM rewards daily for multiple stash addresses. Despite the daily flag, the payout was triggered every era. After increasing the batch size to 100, the payments don't happen after 24 hours. What am I misunderstanding?

    Sep 21 11:28:28 crunch[1174245]: [2022-09-21T11:28:28Z INFO  crunch::report] 💯 Payout for era <del>4228</del> finalized at block #14547497
    Sep 21 17:31:40 crunch[1312875]: [2022-09-21T17:31:40Z INFO  crunch::report] 💯 Payout for era <del>4229</del> finalized at block #14551089
    Sep 21 23:32:11 crunch[1312875]: [2022-09-21T23:32:11Z INFO  crunch::report] 💯 Payout for era <del>4230</del> finalized at block #14554653
    

    arguments:

    ExecStart=/home/payment/crunch/target/release/crunch \
      --config-path /home/payment/stuffs/.env.kusama \
      --substrate-ws-url ws://127.0.0.1:9944 \
      rewards --short -f /home/payment/stuffs/.private_file \
     --disable-public-matrix-room \
     --disable-matrix daily
    

    latest config

    CRUNCH_SUBSTRATE_WS_URL=ws://127.0.0.1:9944
    CRUNCH_MAXIMUM_PAYOUTS=84
    CRUNCH_MAXIMUM_HISTORY_ERAS=84
    CRUNCH_MAXIMUM_CALLS=100
    
    opened by ScepticMatt 3
  • Run the tool as systemd service

    Run the tool as systemd service

    I try to run the tool as a systemd service, here is my try:

    [Unit]
    Description=Kusama Autopayout
    
    [Service]
    ExecStart=/home/tw/crunch-bot/crunch rewards --seed-path '/home/tw/crunch-bot/.private.seed' --disable-matrix
    Restart=always
    RestartSec=15
    
    [Install]
    WantedBy=multi-user.target
    

    What I do wrong? How to pass also config file? Where I do mistake?

    opened by TomaszWaszczyk 2
  • Subxt functions failing for Aleph Zero mainnet

    Subxt functions failing for Aleph Zero mainnet

    Dear Paulo, I hope this case finds you well,

    For your kind consideration, this is the issue we are facing with the mainnet of Aleph Zero, this network is implementing the runtime version aleph-node/46 and both, the local ws:// endpoint, and Crunch's metadata, are up to date with the appropriate versions.

    The first symptom are shown in the logs as:

    [WARN  crunch::runtimes::aleph_zero] Crunch upgrade might be required soon. Local static metadata differs from current chain runtime version.
    [INFO  crunch::report] <details><summary>Next era expect <b>NO</b> rewards 🙁</summary>
    

    (apart of the WARN, please note the absence of the Earlier claimed comment in the INFO block.

    After which the bot runs without apparent problems and even hooks OK with the paidEras() event, but it fails to retrieve the pending payments and process no payouts at all.

    Thus, with the help of another community member, it was determined that at least two functions seem to be failing in the aleph_zero.rs file:

    • node_runtime::validate_codegen
    • node_runtime::storage().staking().history_depth(), and/or
    • crunch.client().clone().storage().fetch() for the above history_depth_addr

    Do you have an idea were to start looking for a solution?

    Please advise!

    Best regards...

    Milos

    opened by miloskriz 1
  • Update to aleph-node r-8.0

    Update to aleph-node r-8.0

    Dear @paulormart, hello,

    For your kind consideration, this is the new metadada file for the Aleph Node Testnet r-8.0.

    Many thanks!!

    Best regards...

    Milos

    opened by miloskriz 1
  • Authentification for stashes from remote url (Feature request)

    Authentification for stashes from remote url (Feature request)

    in this function for remote url

    pub async fn try_fetch_stashes_from_remote_url(
    ) -> Result<Option<Vec<String>>, CrunchError> {
        let config = CONFIG.clone();
        if config.stashes_url.len() == 0 {
            return Ok(None);
        }
        let response = reqwest::get(&config.stashes_url).await?.text().await?;
        let v: Vec<String> = response.split('\n').map(|s| s.to_string()).collect();
        if v.is_empty() {
            return Ok(None);
        }
        info!("{} stashes loaded from {}", v.len(), config.stashes_url);
        Ok(Some(v))
    }
    

    I would like to use some kind of authorization with this feature

    e.g.

        [...]
        let client = Client::new();
    
        let user: Option<String> = &config.stashes_url_user;
        let password: Option<String> = &config.stashes_url_password;
    
        let response = client
            .get(&config.stashes_url)
            .basic_auth(user, password)
            .send();
       [...]
    
    opened by ScepticMatt 1
  • add Tidechain's testnet

    add Tidechain's testnet "Lagoon"

    Hey!

    I added our new substrate Testnet chain to the list, called Lagoon. At this time I did not add Mainnet and the URLs to the config.rs, but when the mainnet will be announced, I will do so :)

    Many Thanks!

    More information about us, if interested: https://www.tidelabs.org/docs/resources https://tidefi.com/faq

    opened by Mikopet 1
  • Fails to run in Ubuntu 22.04 LTS

    Fails to run in Ubuntu 22.04 LTS

    Hello @paulormart !!

    Due to Ubuntu 22.04 LTS migrating from OpenSSL 1.1 to 3.0, when trying to run the current release in those systems, it returns:

    crunch: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

    Greetings!

    opened by miloskriz 1
  • Aleph Zero mainnet workaround

    Aleph Zero mainnet workaround

    Dear Paulo, hello !

    As a temporal workaround for issue #22 , and with the help of another user, the following pull request with the following commits for the aleph-network branch:

    • Catches up with your commits up to Crunch 0.8.0.
    • Dismisses the use of node_runtime::storage().staking().history_depth() for the retrieval of on-chain information.
    • Cleans up some previous comments and workarounds for previous lack of Identity pallets (resolved now)

    These changes were fully tested and work OK in Aleph Zero mainnet.

    Many thanks for considering it for merging into the next release!

    Best regards

    Milos

    opened by miloskriz 0
  • Aleph network upgrades

    Aleph network upgrades

    Dear Paulo, hello,

    Aleph Zero networks (testnet & mainnet) have both received new runtime metadata, so this request aims to update the aleph-network branch with the following changes:

    • All the commits in your mainbranch until today are now included in aleph-network.
    • The metadata files for the testnet and mainnet are updated.
    • The runtime programs are reworked now to restore the get_display_name funcionality now that Aleph Zero implemented the Identity pallet.
    • The README_AZERO file was updated with important configuration information.

    These changes were tested OK in production now...

    Thanks very much for considering this request at your earliest convenience..

    Warm regards!!

    Milos

    opened by miloskriz 0
  • Aleph network

    Aleph network

    Dear Paulo,

    Please consider the following changes to this branch:

    1. Added metadata for Aleph Zero mainnet.
    2. Commented out all functions in aleph_zero.rs referring to the Identity pallet (not implemented yet)
    3. Added some short recommendations to the users in AZERO.md (feel free to provide a link from your README.md if convenient).

    Many thanks!!

    Milos

    opened by miloskriz 0
  • Aleph network

    Aleph network

    Dear Paulo,

    My changes only include:

    1. upgrade of metadata to Aleph Zero testnet r-7.1
    2. preparation works for a future Aleph Zero mainnet functionality

    Many thanks for considering these for merging into your aleph-network branch!

    Have a great Friday!

    Milos

    opened by miloskriz 0
  • Crunch suddenly doesn't work - Rpc error

    Crunch suddenly doesn't work - Rpc error

    I've been encountering this error lately:

    INFO crunch::runtimes::kusama] Inspect and `crunch` unclaimed payout rewards
    WARN crunch::runtimes::kusama] batch call indexes [0 : 2]
    ERROR crunch::crunch] Subxt error: Rpc error: RPC error
    INFOcrunch::crunch] Connected to Kusama network using ws://127.0.0.1:9944 * Substrate node Parity Polkadot v0.9.36-dc25abc712e
    INFO crunch::matrix] The 'Crunch Bot' user @......t:matrix.org has been authenticated at matrix.org
    INFO crunch::matrix] Messages will be sent to room #Y3J1bmNoL.............
    INFOcrunch::runtimes::kusama] Inspect and `crunch` unclaimed payout rewards
    WARN  crunch::runtimes::kusama] batch call indexes [0 : 2]
    ERROR crunch::crunch] Subxt error: Rpc error: RPC error
    

    Some discord member sugested to replace the RPC with CRUNCH_SUBSTRATE_WS_URL=wss://ksm-rpc.stakeworld.io:443which I did, but the error is still there and it is quite the same.

    I was hoping that reinstalling the node will solve the issue so I reinstalled on a fresh Ubuntu. For some reason I decided to use 20.0.4 LTS, not 22.0.4 like I did before which seems to be a not very inspired choice: now I have another issue: the OpenSSL version is OpenSSL 1.1.1f which looks like it doesn't support crunch. In the meantime I tried to upgrade my Openssl to 3.1.0, some errors occurred and I just gave up for now as it's Christmas Eve, lol. I'll be back with a new report after OpenSSL will be upgraded to 3.1.0.

    opened by TheCrazyStaker 14
  • Trying to use crunch with Polkadex substrate chain fails with Invalid Metadata error

    Trying to use crunch with Polkadex substrate chain fails with Invalid Metadata error

    Hi,

    We are trying to use crunch (latest crunch version, built from source, tried the binary too) with Polkadex chain and it fails with following error:

    $ crunch --config-path /home/user/.env.pdex --substrate-ws-url ws://127.0.0.1:9945/ view [2022-02-11T12:31:56Z INFO crunch] crunch v0.4.1 * Crunch is a command-line interface (CLI) to claim staking rewards (flakes) every X hours for Substrate-based chains [2022-02-11T12:31:56Z ERROR crunch::crunch] Invalid Metadata: Invalid version [2022-02-11T12:31:56Z INFO crunch::crunch] Awaiting for connection using ws://127.0.0.1:9945/


    We also tried to save polkadex metadata using subxt to metadata/polkadex_metadata.scale and compiled crunch again, but no go. Attaching polkadex_metadata.scale polkadex_metadata.txt

    We are currently using crunch successfully for kusama chain. Any help is appreciated.

    enhancement question 
    opened by radiumb 1
Releases(v0.8.1)
  • v0.8.1(Dec 19, 2022)

  • v0.8.0(Dec 15, 2022)

  • v0.6.2(Dec 6, 2022)

  • v0.6.1(Nov 11, 2022)

  • v0.6.0(Nov 1, 2022)

    Note: This release was built using rustc 1.64.0 (a55dd71d5 2022-09-19)

    ✨ New

    • Add optional environment variable CRUNCH_EXISTENTIAL_DEPOSIT_FACTOR_WARNING. The factor allows the existential warning message to be configurable per chain. Default value is 2. The recommended values based on the existential deposits are: for Polkadot CRUNCH_EXISTENTIAL_DEPOSIT_FACTOR_WARNING=2 and for Kusama CRUNCH_EXISTENTIAL_DEPOSIT_FACTOR_WARNING=1000.

    🔧 Changes

    • Support subxt v0.24.0. Note: with this change, unless there are breaking changes on storage, constants or extrinsics used by crunch, the local static metadata file no longer need to be mandatory upgraded as soon as a chain runtime upgrade is enacted.

    📦️ Additional builtin runtime metadata

    • Westend/9310
    Source code(tar.gz)
    Source code(zip)
    crunch(17.99 MB)
    crunch.sha256(73 bytes)
  • v0.5.15(Oct 26, 2022)

  • v0.5.14(Oct 18, 2022)

  • v0.5.13(Sep 28, 2022)

  • v0.5.11(Sep 26, 2022)

  • v0.5.10(Sep 13, 2022)

  • v0.5.9(Sep 7, 2022)

  • v0.5.8(Aug 31, 2022)

  • v0.5.7(Aug 9, 2022)

  • v0.5.6(Aug 6, 2022)

  • v0.5.5(Jul 26, 2022)

  • v0.5.4(Jul 22, 2022)

  • v0.5.3(Jul 21, 2022)

  • v0.5.2(Mar 17, 2022)

    Note: This release was built using rustc 1.59.0 (9d1b2106e 2022-02-23)

    🔧 Changes

    • Fixes skipped finalised blocks by update subxt crate dependency to the latest commit 8b19549 - version 0.18.1
    • Review summary description, with the addition of the number of stashes that had the previous era claimed earlier.

    📦️ Builtin runtimes metadata

    • Polkadot/9170
    • Kusama/9170
    • Westend/9170
    Source code(tar.gz)
    Source code(zip)
    crunch(16.07 MB)
    crunch.sha256(73 bytes)
  • v0.5.1(Feb 28, 2022)

  • v0.5.0(Feb 22, 2022)

    Note: This release was built using rustc 1.58.1 (db9d1b20b 2022-01-20)

    ✨ New

    • Collapsible section to show/hide details with a brief summary highlighting crunch actions. Closes #3
    • Optional flag 'stashes-url'. This flag allows stashes to be loaded into crunch from a remote endpoint. Payouts are triggered for these stashes without the need of a service restart or a local file configuration change. Closes #6
    • Added a random waiting period (up to a maximum of 120 seconds) before triggering the procedure to execute the batch calls. This aims to prevent a block race from all crunch bots at the beginning of each era.

    🔧 Changes

    • Fixes #4 Already claimed rewards issue
    • Fixes default endpoints by setting the default :443 port number

    📦️ Builtin runtimes metadata

    • Polkadot/9151
    • Kusama/9160
    • Westend/9160
    Source code(tar.gz)
    Source code(zip)
    crunch(18.92 MB)
    crunch.sha256(73 bytes)
  • v0.4.1(Jan 15, 2022)

  • v0.4.0(Jan 12, 2022)

    Note: This release was built using rustc 1.57.0 (f1edd0429 2021-11-29)

    ✨ New

    • New maximum-calls flag with default value of 8. By default crunch collects all the outstanding payouts from previous eras and group all the extrinsic payout calls in group of 8 (or whatever value defined by this flag) so that a single batch call per group can be made. Note 1: Using batch calls rather than single payouts we could expect a significant drop in transaction fees and a significant increase on crunch performance. Note 2: The collection of all outstanding payouts from previous eras is limited by two other flags. The first being maximum-payouts which default value is 4 - this flag limits the number of payouts per stash. The other one is the maximum-history-eras flag, which default value is also 4 - this flag limits the number of past eras crunch will look for unclaimed rewards - but this flag is only executed if short flag is also used in the configuration. This is done so that crunch can run efficiently every era.

    🔧 Changes

    • Changed single payouts for batch calls.
    • Update subxt dependency to revision 41bd8cc

    📦️ Builtin runtimes metadata

    • Polkadot/9140
    • Kusama/9130
    • Westend/9130
    Source code(tar.gz)
    Source code(zip)
    crunch(18.56 MB)
    crunch.sha256(73 bytes)
  • v0.3.2(Nov 3, 2021)

  • v0.3.0(Oct 17, 2021)

    Note: This release was built using rustc 1.55.0 (c8dfcfe04 2021-09-06)

    💥 Breaking changes

    • Fix subxt dependency for metadata V14 and support Polkadot/Kusama 9110 runtime

    🔧 Changes

    • Currently batch calls are no longer supported on this version only single payouts -> fix will be available soon
    Source code(tar.gz)
    Source code(zip)
    crunch(16.28 MB)
    crunch.sha256(73 bytes)
  • v0.2.2(Oct 9, 2021)

    Note: This release was built using rustc 1.55.0 (c8dfcfe04 2021-09-06)

    ✨ New

    • Add optional --maximum_history_eras flag with default value of 4. Note 1: This flag is only valid if --short flag is also present. By default crunch will only check for unclaimed rewards in the last 4 eras rather than the value specified in constant history_depth (usually 84) as in previous versions. This will just speed up crunch by avoiding repeated checks every era. Note 2: If running crunch in verbose mode the check in the last 84 eras is enforced by default since Inclusion and Crunched stats are relevant only with all eras history available on-chain.

    🐛 Bugfix

    • Fix loading configuration variables like CRUNCH_SEED_PATH, CRUNCH_MAXIMUM_PAYOUTS specified in .env configuration file.
    • Fix issue when new chains have potentially a current_era value lower than the history_depth constant.
    Source code(tar.gz)
    Source code(zip)
    crunch(16.47 MB)
    crunch.sha256(73 bytes)
  • v0.1.19(Oct 9, 2021)

    Note: This release was built using rustc 1.55.0 (c8dfcfe04 2021-09-06)

    To keep older versions of crunch still running, this pre-release may be useful for chains that do not implement the Utility pallet where batch transactions are not yet supported.

    🐛 Bugfix

    • Fix issue when new chains have potentially a current_era value lower than the history_depth constant.
    Source code(tar.gz)
    Source code(zip)
    crunch(16.46 MB)
  • v0.2.1(Sep 29, 2021)

    Note: This release was built using rustc 1.55.0 (c8dfcfe04 2021-09-06)

    ✨ New

    • Bash script crunch-update.sh for easier install or crunch update

    🔧 Changes

    • Identify an excellence performance by using Interquartile Range(IQR)
    • Update substrate-subxt dependency

    🐛 Bugfix

    • Substrate_subxt error: Scale codec error: Could not decode 'Outcome', variant doesn't exist
    Source code(tar.gz)
    Source code(zip)
    crunch(16.44 MB)
    crunch.sha256(73 bytes)
  • v0.2.0(Sep 25, 2021)

    Note: This release was built using rustc 1.55.0 (c8dfcfe04 2021-09-06)

    ✨ New

    • Support a batch of payout calls by default
    • Additional 99.9% confidence interval for performance reaction
    • Additional randomness on emojis and flakes messages

    🔧 Changes

    • Fix typos
    • Improve identity
    • Notification message refactored
    • Minor message changes
    • Update substrate-subxt dependency
    • Multilingual hello message
    Source code(tar.gz)
    Source code(zip)
    crunch(16.45 MB)
  • v0.1.18(Sep 14, 2021)

    Note: This release was built using rustc 1.55.0 (c8dfcfe04 2021-09-06)

    ✨ New

    • Optional flag --error-interval to adjust restart waiting time on crunch error
    • Additional value era for option MODE - subscribe to on-chain EraPaidEvent to trigger the PayoutStakersCall

    🔧 Changes

    • Good performance reaction when points >= 99% Confidence Interval
    • Update substrate-subxt dependency
    • Fix optional flag --debug
    Source code(tar.gz)
    Source code(zip)
    crunch(16.44 MB)
  • v0.1.17(Sep 7, 2021)

    Note: This release was built using rustc 1.54.0 (a178d0322 2021-07-26)

    ✨ New

    • Notification warning when signer account have free funds lower than 2x Existential Deposit
    • Hyperlink Validator identity to subscan.io
    • Always show points and total reward amount
    • Good performance reaction when points >= 95% Confidence Interval

    🔧 Changes

    • Remove nothing to crunch this time message when --short flag is present
    • Fix substrate-subxt dependency by commit hash
    • Change hyperlink of finalized block to subscan.io
    Source code(tar.gz)
    Source code(zip)
    crunch(16.33 MB)
Cost saving K8s controller to scale down and up of resources during non-business hours

Kube-Saver Motivation Scale down cluster nodes by scaling down Deployments, StatefulSet, CronJob, Hpa during non-business hours and save $$, but if yo

Mahesh Rayas 5 Aug 15, 2022
Railway CLI - This is the command line interface for Railway.

Railway CLI This is the command line interface for Railway. Use it to connect your code to Railways infrastructure without needing to worry about envi

Nebula 4 Mar 20, 2022
Gix is a command-line interface (CLI) to access git repositories

gix is a command-line interface (CLI) to access git repositories. It's written to optimize the user-experience, and perform as good or better than the

Sebastian Thiel 5.2k Jan 5, 2023
SKYULL is a command-line interface (CLI) in development that creates REST API project structure templates with the aim of making it easy and fast to start a new project.

SKYULL is a command-line interface (CLI) in development that creates REST API project structure templates with the aim of making it easy and fast to start a new project. With just a few primary configurations, such as project name, you can get started quickly.

Gabriel Michaliszen 4 May 9, 2023
tpp (Tera Pre-Processor) is a versatile CLI (Command Line Interface) tool crafted for preprocessing files using the Tera templating engine.

tpp (Tera Pre-Processor) is a versatile CLI (Command Line Interface) tool crafted for preprocessing files using the Tera templating engine. Drawing inspiration from pre-processors like cpp and gpp, tpp is the next evolution with its powerful expressive toolset.

null 3 Nov 23, 2023
KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, configuring, and running different versions of Shinkai Node

KAIVM - Shinkai Version Manager KAIVM is a multiplatform Command Line Interface (CLI) designed to simplify the process of downloading, managing, confi

Alfredo Gallardo 7 May 1, 2024
CLI for ERC-5564 compliant stealth address management on evm chains

stealthereum-cli This is a bare bones CLI written in rust for ERC-5564 compliant stealth address management on evm chains It's currently the easiest w

κασσάνδρα.eth 6 Oct 11, 2023
A Rust CLI that makes mechanical keyboard sound effects on every key press

Rustyvibes A Rust CLI that makes mechanical keyboard sound effects on every key press Rustyvibes.mp4 Installation macOS: brew install kb24x7/rustyvibe

Kunal Bagaria 95 Dec 14, 2022
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
A diff-based data management language to implement unlimited undo, auto-save for games, and cloud-apps which needs to retain every change.

Docchi is a diff-based data management language to implement unlimited undo, auto-save for games, and cloud-apps which needs to save very often. User'

juzy 21 Sep 19, 2022
A Rust-based shell script to create a folder structure to use for a single class every semester. Mostly an excuse to use Rust.

A Rust Course Folder Shell Script PROJECT IN PROGRESS (Spring 2022) When completed, script will create a folder structure of the following schema: [ro

Sebastián Romero Cruz 1 Apr 10, 2022
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 47 Nov 25, 2022
Command line interface for Solana Metaplex programs.

Metaplex Command Line Interface This is a command line interface for creating and managing non-fungible tokens on the Solana blockchain through the Me

Caleb Everett 26 Jul 12, 2022
Command line interface as a function.

Command line interface as a function. fncmd fncmd is an opinionated command line parser frontend that wraps around clap. The functionality is mostly i

Yu Shimura 67 Dec 7, 2022
A silly program written in Rust to output nonsensical sentences in the command line interface.

A silly program written in Rust to output nonsensical sentences in the command line interface.

Rachael Ava 1 Dec 13, 2021
A standalone Command Line Interface debugging tool for The Witcher 3 written in Rust

A standalone Command Line Interface debugging tool for The Witcher 3 written in Rust. This tool is intended for Witcher 3 modders who make mainly scri

Przemysław Cedro 5 Apr 20, 2022
A command line interface meant to bridge the gap between Rust and shell scripting

clawbang A command line interface meant to bridge the gap between Rust and shell scripting. Intended for use with HEREDOCs and shebangs: $ clawbang <<

Chris Dickinson 52 Mar 25, 2022
The official command-line interface for the makedeb Package Repository

mpr-cli This is the repository for the MPR CLI, the official command-line interface for the makedeb Package Repository. Installation Users have a few

makedeb 38 Jan 2, 2023