github MinaProtocol/mina 1.2.0beta1
Mainnet Beta Release 1.2.0beta1

latest releases: 3.0.2-alpha1, 3.0.1, 3.0.1-beta1...
pre-release3 years ago

As usual, the team at O(1) Labs has been making tons of changes behind the scenes to further test and improve the functionality of the Mina Daemon. To test all of these changes properly, we are releasing this beta build to allow for a slow roll-out of upgrades across the network and more thorough testing before upgrading mainnet everywhere. All of these changes have been tested in internally and/or included in previous public alphas. We still need your help to properly test how reliable the changes are on non-critical mainnet nodes. Please notify us with new github issues or on discord if you encounter any regressions since 1.1.5, we want to get them resolved for you ASAP so the stable release of 1.2.0 can be perfect!

We DO NOT recommend upgrading critical mainnet infrastructure over to this version all at once. For production use, please wait for the upcoming stable release of 1.2.0. Anyone who is running more than 3 nodes should upgrade up to 1/3rd of them to the beta channel, to slowly rollout the new changes, but continue to run 1.1.5 on enough nodes to fall back on just in case. 1.2.0 will graduate to stable soon enough!

This release includes a variety of new features that the community has been hoping or asking for, as well as major reliability improvements as we track down each crash and stuck node. The team even added 57 improvements for CI/CD to ensure all new changes are properly tested! Docker images no longer need to be baked, the genesis proof is not generated or required after the first few blocks of a network, and snark keys are only downloaded on first use!

From now on builds will be packaged and released to the debian repo based on debian release codenames (stretch for Debian 9/Ubuntu 18.04 and soon buster for Debian 10 / Ubuntu 20.04), and a release channel (alpha, beta, stable, unstable).

To move your machine to the beta channel and install this build you must first execute the following:

echo "deb [trusted=yes] http://packages.o1test.net stretch beta" | sudo tee /etc/apt/sources.list.d/mina-beta.list
sudo apt-get update

This creates a file, /etc/apt/sources.list.d/mina-beta.list which configures the stretch/beta repository.
Delete this file and reinstall mina if you want/need to downgrade back to 1.1.5.

New Features:

GraphQL:

  • Match GraphQL sync status with the daemonStatus #8255
  • Allows the pooledUserCommands query to select transactions by hash or ID, to make it more consistent with transactionStatus #8293
  • Adds new GraphQL endpoint stagedLedgerProofEmitted to indicate that a new staged ledger proof was formed #8658

CLI Commands:

  • Improved handling of locally-generated transactions to allow re-sending transactions and give the user more control over rebroadcasting transactions. No more already saw this errors! #8973
  • mina advanced vrf is a set of new advanced commands for generating and evaluating VRF witnesses to prove that your key has won a slot #8814
  • mina advanced hash-transaction is a new command for hashing transactions #8294
  • mina ledger export snarked-ledger is a new command for exporting snarked ledgers with proven balances #8844
  • Show the coinbase-receiver in mina client status if it is set, and adds a new command mina advanced set-coinbase-reciever to change the coinbase receiver at runtime #8127
  • mina advanced chain-id-inputs is a new command for displaying the inputs to the ChainID #8264
  • mina advanced send-rosetta-transaction now immediately sends the transaction instead of waiting for the command to exit #8186
  • mina accounts commands now support retrieving/uploading keys and account information over a remote graphQL interface instead of just local files #7282
  • Return exit code 1 when mina ledger export commands fail #8720
  • New flag --minimum-block-reward to mina daemon that allows a block producer to set the minimum net reward from producing a block. #8605
    • Addresses concerns from #8576 and block producers who have overpaid for snark work. If paying the fees for a given snark would drop the resulting profit below the given value, an empty block with no transactions is produced instead.

Other:

  • More coda->mina changes #8238
  • Allow passing peers-list-url parameter as part of the daemon.json or other config file #8295
  • Quieter logging and improved messaging during daemon startup #8261 #8203 #8146 #8260 #8488 #8503

Stability Improvements and Bug Fixes:

  • Guard against underflow when calculating balances via GraphQL #8096
  • More thorough fix for nodes getting stuck at old block heights #8352 #8358 #8419 #8506
  • Don't add "extra" snark work even if there is space and budget #8098
  • Check that keys are valid before adding transaction to the pool #8442
  • Fix edge case where transactions were dropped from the mempool #8473
  • Check the validity of keys when they are provided as arguments to the CLI #8447
  • Catch errors when the chain runs out of available accounts in the ledger #7258
  • More verbose logging around long async cycles to help debug their source #8809
  • Rebroadcast snark work until it is included in a block #8793
  • Prevent crashes caused by short forks off of the root of the transition frontier #8952
  • Rebroadcast transactions in chunks to better support reliable transaction broadcasts #8965
  • Make calls to the verifier async to avoid lockups and bottlenecks in verifying transactions #8961
  • Improves logic for communicating between rust and ocaml processes to prevent some memory corruption and segfaults #8998
  • Limit snark work broadcasts to a safe rate below the libp2p rate limit to avoid getting throttled by peers #9011
  • Revert the changes to staged ledger diff application #9068
  • Fix super-catchup cache invalidation to allow re-downloading failed state hashes #9132

Improved Packaging and CI:

  • Use the mina-mainnet package in docker #8239
  • Terraform for mainnet and devnet2 #8225 #8179 #8250 #8248
  • Attempted fix of clientSDK publish CI job #8325
  • Optional Genesis Proof, Prover/Verifier Keys, and other network-specific artifacts at build-time and at startup #8497 #8584 #8672 #8764 #8947
  • New tool for managing generated/downloaded keys, snark_keys/gen_keys.exe, which takes in a config-file and downloads or generates the appropriate artifacts #8554
  • Refactor docker entrypoint script to be more flexible and allow for arbitrary scripts to execute in /entrypoints.d/ #8263
  • Enable Alpha Builds #8876
    • coda->mina across CI/CD, scripts, and docker/debian tags
    • consolidate mainnet, devnet, and archive-node builds into a single job
    • migrate Ubuntu 18.04 containers to debian:stretch-slim for lightness
    • lay groundwork for Ubuntu 20.04 and Debian Buster support
    • remove legacy code including circle-ci
    • adds dockerfiles/Dockerfile-deb-builder which can build complete .deb packages for all mina packages
    • remove debugging symbols from dune builds
    • remove unused dependencies from debian packages

Improvements to ancillary tools (rosetta, archive-node, sidecar, etc.)

Rosetta:

  • Add minimum transaction fee to Rosetta #8170
  • New functions in the ClientSDK for supporting Rosetta-formatted keypairs #8324
  • Add locked_ and total_ balance metadata to Rosetta account and balance responses #8141
  • Add support for network=mainnet to Rosetta #8877

Libraries:

  • New version of ppx_version #8435 #8734
  • New version of snarky #8908
  • Additional utility library for managing Pickles_types #8075

Archive-node and related tools:

  • Canonical representation for "extensional blocks" for backing up and restoring archive node data #8312
  • mina-extract-blocks tool for restoring archive node data from an existing archive node #8343
  • mina-replayer improvements #8329 #8717 #8739 #8751
  • Tools for patching bad balances from before the 1.1.5 archive node release #8583 #8611 #8732 #8815

Delegation Compliance App:

Sidecar:

  • New mina-bp-stats sidecar application and package #8122 #8750 (already released as v1.1.6)

Documentation:

  • #8374 Blockchain proof verification
  • #8486 Child Processes
  • #8428 bin_io Serialization Format
  • #8670 Fix link to the CONTRIBUTING doc
  • #8678 Improved README-dev.md

Monitoring, Testing, Alerting:

And 57 separate PRs to improve our monitoring, testing, and alerting infrastructure:
#8077 #8050 #8099 #8241 #8249 #8214 #8216 #8182 #8259 #8300 #8313 #8302 #8328 #8342 #8360 #7842 #8258 #8240 #8237 #8332 #8414 #8427 #8361 #8341 #8458 #8233 #8455 #8530 #8596 #8606 #8535 #8637 #8631 #8645 #8622 #8582 #8691 #8676 #8689 #8640 #8664 #8707 #8688 #8683 #8768 #8752 #8740 #8783 #7884 #8758 #8810 #8861 #8871 #8869 #8850 #8909 #8926

Complete Changelog:

Linked below is the full git history between 1.1.5 and 1.1.6alpha2. Split into 4 chunks as github will only display 250 commits at a time:

It may also be useful to read the changes from each alpha release individually to understand how we got to this result.
1.1.6alpha4
1.1.6alpha5
1.2.0alpha1
1.2.0beta1

Upgrading & Connecting

Daemon Release Artifacts:

Docker Image:
gcr.io/o1labs-192920/mina-daemon:1.2.0beta1-c856692-mainnet
Debian Package:
To allow for installation of mina beta builds:

echo "deb [trusted=yes] http://packages.o1test.net stretch beta" | sudo tee /etc/apt/sources.list.d/mina-beta.list
sudo apt-get update
sudo apt-get install -y mina-mainnet=1.2.0beta1-c856692

Archive Node Release Artifacts:

Docker Image:
gcr.io/o1labs-192920/mina-archive:1.2.0beta1-c856692-mainnet
Debian Package:
sudo apt-get install -y mina-archive-mainnet=1.2.0beta1-c856692
Schema for initializing postgres:
create_schema.sql

Sandbox Node: For testing in an isolated, single-node network without snarks

As of 1.2.0, the demo functionality is built into the standard daemon container, via the environment variable RUN_DEMO=true.
Just docker run -it --name mina-demo -e RUN_DEMO=true gcr.io/o1labs-192920/mina-daemon:1.2.0beta1-c856692-devnet and go!

Devnet:

To use any of the above packages or docker images on devnet instead of mainnet, with testnet signatures, you can simply replace mainnet with devnet in either the name of the package or the docker image tag.

Block Producer Stats Sidecar:

The block producer sidecar has been upgraded to be more stable and resilient when nodes are in bootstrap/catchup. The :latest docker tag has been updated, or you can pull minaprotocol/mina-bp-stats-sidecar:1.1.6-386c5ac to ensure you are using the newest version.
Docker Image
minaprotocol/mina-bp-stats-sidecar:latest
Debian Package
sudo apt-get install -y mina-bp-stats-sidecar=1.2.0beta1-c856692

Step by Step Guide:

Check out our documentation for complete instructions on using this version to connect to Mainnet. Make sure to run with --peer-list-url https://storage.googleapis.com/mina-seed-lists/mainnet_seeds.txt.

If you are running the correct version on the correct network, mina client status will show:

Chain id:     5f704cc0c82e0ed70e873f0893d7e06f148524e3f0bdae2afb02e7819a0c24d1
Git SHA-1:    c856692fddc525a673ba075f714811b5c50bd3a7

Don't miss a new mina release

NewReleases is sending notifications on new releases.