Skip to content

Release N.1.7.0.0

Compare
Choose a tag to compare
@martin-torhage martin-torhage released this 05 Jul 13:55
· 1034 commits to master since this release
We're very happy to announce the N.1.7.0.0 release of the Arweave node!

N.1.7.0.0 includes a lot of changes since the last release, N.1.6.3.1,
from three months ago. This release enables a hard fork scheduled to
activate at 2019-07-08 UTC. Please make sure to upgrade all your nodes
before the fork happens.

New features

   1. RandomX proof-of-work algorithm

      RandomX is a PoW algorithm that is optimized for general-purpose
      CPUs. RandomX uses random code execution together with several
      memory-hard techniques to maximize the efficiency of
      general-purpose CPUs and therefore make GPU accelerated miners
      and ASIC based miners less likely to be advantageous.

      The switch is a hard fork and will be effective from block
      height 235200 which will happen already around 2019-07-08 UTC.
      Please test and upgrade your miners well in advance before the
      fork happens.

      The mining benchmark is updated with a new argument for choosing
      RandomX hashing or the previous SHA-384 hashing. E.g.
      `./arweave-server benchmark randomx max_miners 4`. A bug was
      also fixed which halved all the performance numbers.

      More information available in commit 5148a682
      (https://github.com/ArweaveTeam/arweave/commit/5148a6826db98c49c59ef3eaff17f2c657851939).

   2. Two-way integration with IPFS

      Arweave is launching an IPFS incentivisation layer, providing
      permanent storage for the IPFS network. Read more about it here:
      https://medium.com/@arweave/arweave-ipfs-persistence-for-the-interplanetary-file-system-9f12981c36c3

      Uploading Arweave transactions to IPFS

         All Arweave transactions with the tag "IPFS-Add" will be
         uploaded and pinned to your local IPFS node, if this feature
         is enabled. This will help you make your transactions
         available on IPFS with minimal effort. See
         doc/ar-ipfs-howto.md
         (https://github.com/ArweaveTeam/arweave/blob/N.1.7.0.0/doc/ar-ipfs-howto.md)
         for how to enable this.

      Import IPFS objects to Arweave

         New API endpoints are available where IPFS CIDs can be posted.
         The Arweave node then downloads the object from IPFS and
         uploads it to Arweave using your wallet. This makes IPFS
         objects permanently stored. See doc/ipfs-ar-daemon.md
         (https://github.com/ArweaveTeam/arweave/blob/N.1.7.0.0/doc/ipfs-ar-daemon.md)
         for how to enable and use this feature.

      We have been running this IPFS integration for quite some time
      but it's still in the early stage, especially on the
      documentation side which is far from finished. We're happy to
      help you with the IPFS integration in the mining channel on our
      Discord server (see below).

   3. Content policy improvements

      The content policy feature (see the `content_policy` and
      `transaction_blacklist` startup arguments) is improved. Content
      denied by your policy will not be stored on your node.

    See content_policy_docs.md
    (https://github.com/ArweaveTeam/arweave/blob/N.1.7.0.0/content_policy_docs.md)

   4. Custom data directory

      There is a new startup argument called `data_dir` which gives
      the possibility to store the data (blocks, transactions and
      metadata) in any other directory instead of having it the
      application directory.

   5. Config file

      All startup arguments can be put in a JSON based config file and
      be loaded with the new startup argument `config_file`.

      E.g. `arweave-server config_file my-config-file.json`

   6. Export block and transaction metadata

      Metadata for all blocks and transactions can be exported to CSV
      files. See the `app_block_tx_export` module
      (src/apps/app_block_tx_export.erl
      (https://github.com/ArweaveTeam/arweave/blob/N.1.7.0.0/src/apps/app_block_tx_export.erl)).

Reliability and operations improvements

   1. Cowboy

      The HTTP server Elli is replaced with Cowboy.

   2. Reduced memory consumption

      Several improvements are made to reduce the memory consumption
      and keep it more even and less 'spiky'.

   3. Mixed improvements to logging, reduced disk operations, tweaked
      timeouts, overall fault-tolerance.

Bug fixes

   1. Polling mode stalls when a certain block doesn't exist on disk.

   2. The price endpoint is not pessimistic regarding future price,
      resulting in transactions becoming invalid before they are mined
      (due to the price increasing).

Upgrade instructions

   Please make sure to upgrade all of your nodes well in advance
   before the fork happens on 2019-07-08, but test upgrading only one
   node to begin with.

   1. Shut down arweave-server. To make sure the shutdown was
      successful, run `ps aux | grep beam | grep -v grep`. The output
      should be empty.

   2. Run `git fetch --all --tags && git checkout N.1.7.0.0 && git
      reset --hard N.1.7.0.0`

   3. Start arweave-server again with the same arguments as before.

   For more details on how to run the node, please see our mining
   guide - https://docs.arweave.org/info/mining/mining-guide.

   Pay attention to the recommended list of trusted peers (the `peer`
   startup argument). The list has been updated in the mining guide
   since the previous release. Only add peers you trust as this
   argument.

   If you get GCC compile errors, make sure you’re using GCC version 7
   or later.

The best way to get support for upgrading and running this release is
in the "mining" channel on our "Arweave Dev Talk" Discord server
(https://discord.gg/RZN9ab). You can also email to team@arweave.org.