Stake Wars will be on hold until the implementation of Doomslug is fully finalized and our internal testing becomes all green, meaning we hit what we call a “Release Candidate” (code named Sky Breaker).
We will restart the Stake Wars after that, discontinuing Tatooine and inviting participants to validate official TestNet (continues state since last April 2019).
You can read the full blog post "We’re pausing Stake Wars" here. If you want to be the first to know when Stake Wars is back, join our Telegram validator channel here.
The first leg of Stake Wars led to us learning a ton. We made some mistakes, and we iterated based on your feedback. For that reason, we changed how points work. If you earned points for reporting bugs, you keep the points that you earned.
Moving forward, the way to earn points is to:
- run test scenarios found in scenarios.md
- submit the scenario that you ran as an issue
- participate by running a validating node each week
Soon, we will merge the Stake Wars network into TestNet. At that point, you can run all of the scenarios there for the same amounts of points.
In order to get more tokens on TestNet:
- Generate keys (don't delete or regenerate these!)
- Send us the associated account id and public key
- Stake each week using that account
- Get sweet points for staking
Before you start, please make sure that you have or setup a machine with a publicly routable ip address. Also please make sure you have docker installed on your machine, or--if you prefer to run your node without docker--follow the instructions here to install the required packages.
Read the guidelines document first. It's not just legal mumbo-jumbo, it actually explains how this competition will be run and how to submit tests and bugs
To start, checkout nearcore repository:
git clone https://github.com/nearprotocol/nearcore.git
cd nearcore
Next, generate node key and validator key by
./scripts/start_stakewars.py --init --account-id=<your_account_id>
Here for account id, enter the account id you want to use for staking.
Observe that node_key.json
and validator_key.json
are
generated in ~/.near
.
Please note that if you would like to generate key pairs for your account, you can also do it using the following command:
./scripts/start_stakewars.py --init --signer-keys --account-id=<your_account_id>
It will by default generate three key pairs in files signer0_key.json
, signer1_key.json
, and
signer2_key.json
.
- Make sure to clear out the ~/.near folder every week no matter what.
- Run
scripts/start_stakewars.py --signer-keys --init --account-id=<YOUR_ACCOUNT_ID>
- Move accounts.csv into your ~/.near folder
- Run
scripts/start_stakewars.py
cd
into a directory you'd like to work in- Download
near-shell
withnpm install -g near-shell
- Run
npx create-near-app staking
cd
intostaking
- Set your NODE_ENV to tatooine. You can do this in
bash
withexport NODE_ENV=tatooine
- Run
near login
and follow the instructions that take you to the wallet. - Once you're logged in, you can stake. This is the command to stake:
near stake <YOUR_ACCOUNT_ID> <VALIDATOR_KEYS_PUBLIC_KEY> <AMOUNT>
NOTE: <AMOUNT>
can be set in NEAR
- After running the command, you should see a transaction receipt that contains
status: { SuccessValue: '' }
. (As long as it is empty or contains a string you're good) - After two epochs, if you've staked enough, you will see the logs of your node appear with a
V/n
to tell you you're validating. - Run
near state <YOUR_ACCOUNT_ID>
and see if the amount you've staked is marked as locked.
You might wonder why there are three different types of keys and how they can be used. Here is a short explanation:
node_key
is used to sign messages sent between nodes and you don't need to worry about them.validator_key
is the key that your validating node will use to sign the blocks that they produce, as well as approvals of other blocks. Notice that this key is not stored in state and cannot be used to sign transactions.signer_key
is used to sign transactions originated from your account. They are not related to running a validating node per se, but if you want to do anything with your account on the network, you need to have the corresponding private key(s) to send transactions.
We will be using a different genesis every week. Fill your information in the typeform found at near.ai/genesis. You will be asked for:
account_id
: the account id you used in the previous step.full_pks
: the public keys you want to use for your account. If you enter multiple keys here, please make sure that they are comma separated. Please make sure that your have the corresponding private keys.- If, in the initialization step, you generated signer keys this is where you should put the public keys.
- If you would like to use near-shell, make sure that your have your keys in the proper place (
~/neardev/default
for example).
amount
: please enter10000000000000000000
.is_treasury
: please enterfalse
.validator_stake
: please enter10000000000000000000
.validator_key
: enter the public key fromvalidator_key.json
.peer_info
: it should be of the form<public_key>@<your_ip_address>:24567
wherepublic_key
is the public key fromnode_key.json
.
For other fields, please leave the blank.
When everyone who wants to participate finishes filling in their information,
download the spreadsheet as a csv file and upload to ~/.near/accounts.csv
on your node.
We will host the three csv for you to download during the calls.
If you are running a node on gcloud, the following command might be useful:
gcloud beta compute scp <csv file you downloaded> <your node name>:/home/<your user name>/.near/accounts.csv
Note: due to how docker interacts with linux systems, editing ~/.near
might
require root privilege. In that case you can first copy the csv file to some location
on your node and then transfer it to ~/.near
.
Finally, to start your node, run:
./scripts/start_stakewars.py
To stop your node, run:
./scripts/stop.py