FAQs
Last updated
Was this helpful?
Last updated
Was this helpful?
Significantly updated by @Thaseus in August 2024
This document includes some of the common issues mentioned in the Arweave Miners discord server. This will be a living document, and as new issues can arise, it may be updated. The ultimate goal of this document is to set you on the right direction in solving your issue, even if your exact issue is not listed. Please note, profitability is left out intentionally as it is very dynamic.
Yes, if you do not provide a wallet address on the command line when starting the miner, a new wallet will be created for you and stored in the ‘wallets’ directory. When you run the miner again, you will want to pass the generated wallet address on the command line. Any valid Arweave wallet address will work for mining. For example, you can use a wallet that was generated in the Arweave web extension for mining purposes -- you just need the wallet address. If you want to install the web extension you can do that here: , , or .
Your mining address is not a private key - it is a public address. But it is paired with a private key (stored in your wallets
directory with a name like arweave_keyfile_MININGADDRESS.json
) which you will need to sign any blocks you mine. When mining, only nodes that will sign blocks need to have a private key / wallet.json stored locally
Yes, and no. It is certainly best, as the more data you store, the higher your hashrate. The increase in hashrate is not linear, and rises faster with the more data you have stored. For more information on this, see the .
However, if you choose to not store a full weave, I would suggest using (). It is the only Arweave pool which uses the standard client at this time and will help you earn AR faster than solo mining.
When you run your miner it will periodically print a Mining Performance Report to the console. You can read more about the Mining Performance Report . If your node is syncing the weave it will display 0 h/s but will go up over time.
At the moment we have a Linux client available, but we will be making mining more accessible on other operating systems in the future. Windows WSL may be possible but is not recommended.
It is still possible to force the installation:
Arweave also requires Erlang R24. Homebrew always define by default the latest version of Erlang, not compatible at this time with Arweave. To fix this issue, a version must be pinned:
When installing a custom version, some additional configuration are required:
Few directories need to be added into the default path.
In some situation, LDFLAGS
, CFLAGS
and CCFLAGS
environment variables need to be modified. This is not a mandatory requirement, but it can help to fix a failing build.
Don't forget to pin
the version on homebrew.
ext4
with the noatime
option enabled on mounted drives is recommended.
Yes, but it will add a lot of complexity and overhead for potentially small gains.
We recommend starting the miner in a screen session, you can then safely disconnect from the screen
session and close your terminal with the miner still running
Yes - but there are some caveats:
Miners benefit by getting the latest set of blocks and transactions as fast as possible to limit the time wasted mining against a stale chain tip. Miners can get blocks 2 ways:
By polling their peers for new blocks and transactions
By being notified of new blocks and transactions by other miners
If you have a dynamic IP you may not get notified by your peers as quickly as a miner with a static IP. However your miner will continue to poll, so the lag will be minimal.
A slightly bigger issue is your "peer reputation". All peers in the network maintain a rating for all other peers based on past activity. It basically boils down to the amount of valid data exchanged. As your node sends valid data to peers, your reputation increases. Reputation is currently tracked by IP:PORT, so whenever your IP changes, your reputation will be reset.
Reputation primarily comes into play when you mine a solution, Peers will process the solutions of higher reputation peers first. So if you have a low reputation and mine a block at about the same time as a miner with a higher reputation, there's a greater chance that your block will be processed later and potentially orphaned.
Yes, and no. Currently, consumer level hardware makes this very difficult due to PCIe bandwidth and overall processing power. However, higher core Threadrippers and Epyc processors are capable of this, depending on your processor version, due to their increased PCIe bandwidth and computational power.
No, Arweave uses Randomx for packing and mining. RandomX is an ASIC and GPU resistant algorithm.
All packing formats provide the same maximum hashrate. A miner who has packed a full replica to spora_2_6
will have the same hashrate as a miner who has packed a full replica to replica_2_9
- provided both miners are able to read the packed data and perform all hashes at the required rate.
spora_2_6
is deprecated and will stop being usable toward the end of 2028. For all new packs we recommend using the replica_2_9
format. The lower read rates that a replica_2_9
packing allows will reduce the hardware resources used during mining (larger disks, lower disk read rate, lower CPU and RAM utilization).
data_dir
?Ideally you want the bare minimum to be 200GB, however it is far better to have at least 500GB.
You could certainly pack over a NAS, but the bandwidth required to mine over a NAS would be very cost prohibitive and difficult to achieve
No, it is inefficient to mine while packing, and will take far longer to pack than if you simply devote all of your processing power to packing.
Yes, you can read your metrics manually by going to localhost:port/metrics
It should be as low as possible. The network targets an average VDF speed of 1 second and you want to be as close to that as possible (or lower).
No. Avoid killing the arweave process if at all possible. I.e. don't do kill -9 arweave
or kill -9 beam
or kill -9 erl
. To stop the arweave process, use ./bin/stop
and then wait for as long as you can for the node to shutdown gracefully. Sometimes if can take a while for the node to shutdown, which we realize is frustrating, but if you kill the node abruptly it can cause rocksdb
corruption that can be difficult to recover from. In the worst case you may need to resync and repack a partition.
The new Arweave entry-point located in bin/arweave
is an updated
version of the old one, integrating all required functions in one
place. To print the help page, simple execute the script:
It is also possible to have a more detailed help of one particular
subcommand by passing it after the help
one.
Arweave can be started in many different ways depending of the needs
and all these methods can be used with ./bin/arweave
entry-point. Most of the users are using ./bin/start
to start an
arweave node, this script is equivalent to:
To have access to Arweave output directly from the terminal (without
the Erlang console) the following command can be used. It could be
used with any process manager like systemd
, because the VM will not
fork.
To have access to Arweave output directly from the terminal with an Erlang console:
Arweave can also be started as an Unix daemon (in background) by executing the following command:
To reattach a daemon (and having access to the Erlang console), one
can execute the subcommand daemon_attach
.
To ensure a node is correctly running, one can ping it using./bin/arweave
entry-point. The script will return the string pong
if the node is up.
The same information can be available by using the subcommandstatus
, except nothing will be printed. The command will return 0
if the node is up and 1
if the node is down. Useful for monitoring
scripts.
Finally, to see if the node is reachable, it is also possible to use
external software like curl
:
An Erlang shell can be invoked to control the Erlang VM where Arweave
is running. The ./bin/console
script can be used and it is
equivalent to execute this command:
The shell can be ended by pressing Ctrl
+ C
.
An Arweave node can be stopped by using the script ./bin/stop
or by
executing the following command:
An arweave node is identified by its ip address and a TCP port
(default to 1984). So, more than one node can be started in parallel,
listening to another TCP port. The first step is to create a new
arweave configuratoin with an isolated data_dir
parameter and set a
new value for port
parameter. It can be configured from a JSON
configuration file or directly from the command line. Then, two
environment variables need to be set, ARNODE
defining the Erlang
node name and ARCOOKIE
, defining the cookie used for this node.
To control the default node, unset ARNODE
and ARCOOKIE
.
The first - and easiest - method is to pass the new argument directly
from the command line, all arguments before --
will be used to
overwrite the default VM parameters of the Erlang VM. All arguments
after --
will be used for Arweave.
The second method is to modifyrel/arweave/releases/${arweave_release}/vm.args.src
file. This file
contains all default parameters used by Arweave with some links to the
official documentation to help anyone wanting to optimize the Erlang
VM.
The developer mode can be used by setting the environment variableARWEAVE_DEV
to any kind of value or (when using the sources from
git) by executing the script bin/arweave-dev
. The developer mode
will automatically recompile a release and required file everytime the
script is executed.
The most likely cause of this issue is that your router is not forwarding messages for port 1984 to your machine. You can address this by configuring port forwarding on your router and ensuring that port 1984 is not blocked by your firewall
Assuming you are using the Team’s VDF server, it is normal. VDF servers can only compute VDF, anything else running on the server will slow down the compute and increase your VDF time (and slow down your hashrate).
If your VDF changes often, and also shows Undefined frequently, you may have a network congestion issue.
They are held for 30 days in reserve. After 30 days they are unlocked to your account. You can check the amount of reserved rewards on one of your nodes by going to… localhost:PORT/wallet/[your-wallet-address]/reserved_rewards_total
SAS expanders will likely reach bandwidth capacity with 12 drives attached, you may require more expanders,
event: failed_to_update_block_index
Stop your node, navigate to your data_dir
folder and rename the following folder rocksdb/block_index_db
It will rebuild the folder during the next restart
You can also use Prometheus and Grafana as described in the .
We have not validated mining or packing on MacOS, but as of May, 2024 the M2 provides the fastest known VDF implementation and so makes a good candidate for VDF Servers. See the for instructions on setting up a VDF Server.
Arweave is using OpenSSL 1.1+ for its SHA2 implementation. This version has been deprecated by the OpenSSL team on . On MacOS, the Homebrew team deprecated OpenSSL 1.1.1w on October 24, 2023, and disabled its full support on . This last commit will generate this error when trying to install this OpenSSL version on MacOS:
We recommend
You will need to utilize more servers and/or higher core counts and faster CPU’s to pack the weave faster. See the for more information.
The best way is to sync as many modules from the network at the same time as you can. Many miners max out bandwidth or CPU capacity packing at least three modules at a time. See the for more information.
Any enterprise level hard drive that can sustain the read rates required for your configuration. See for the read speeds required per partition of packed data. Storing more partitions on a single disk will require a higher sustained read rate.In general an SSD will not be cost effective.
See the and the for more information.
Not at this time, but some contain more data than others, so if you have a limited amount of hard drives available, pack the fullest storage modules first. For more information on storage module sizes, see the
As of Arweave 2.9 there are two main packing formats available, spora_2_6
and replica_2_9
. See the section of the Mining Guide for more information.
You can also (and should), set up Grafana and Prometheus to give you a very nice interface. See the for more information.
See the for more information.
The storage module is likely full. Some partitions can never be filled - especially modules below 10, and in the early 30’s. See the for more information.
See the for more information.