2018-02-20 12:58:51 +04:00
|
|
|
|
.. _alphanet:
|
|
|
|
|
|
2018-05-18 02:50:45 +04:00
|
|
|
|
Alphanet
|
|
|
|
|
========
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
Welcome to the Tezos alphanet, which is a pre-release network for the
|
|
|
|
|
Tezos blockchain. Currently, the chain is reset every few weeks.
|
|
|
|
|
|
2018-05-17 12:56:39 +04:00
|
|
|
|
For news and support about the alphanet, please join IRC (*#tezos*
|
|
|
|
|
on freenode). Please, report bugs related to the alphanet on the IRC
|
|
|
|
|
channel before filling `GitLab issues
|
|
|
|
|
<https://gitlab.com/tezos/tezos/issues>`_.
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
For more information about the project in general, see:
|
|
|
|
|
|
2018-05-17 13:36:11 +04:00
|
|
|
|
https://tezos.com/
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
How to join the alphanet ?
|
|
|
|
|
--------------------------
|
|
|
|
|
|
|
|
|
|
We provide two ways of joining the alphanet :
|
|
|
|
|
|
|
|
|
|
- use ``docker`` and prebuilt binaries (recommended way, tested on
|
|
|
|
|
windows/mac/linux)
|
|
|
|
|
- manual compilation and installation (linux and mac only)
|
|
|
|
|
|
|
|
|
|
The ``alphanet.sh`` script
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
The recommended way for running an up-to-date Tezos node connected to
|
|
|
|
|
the alphanet is to use ``scripts/alphanet.sh``. Its only requirement is
|
2018-03-01 17:15:25 +04:00
|
|
|
|
a working installation of `Docker <https://www.docker.com/>`_.
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
First, you need to download the script:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
wget https://raw.githubusercontent.com/tezos/tezos/alphanet/scripts/alphanet.sh
|
|
|
|
|
chmod +x alphanet.sh
|
|
|
|
|
|
|
|
|
|
You are now one step away from a working node:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh start
|
|
|
|
|
|
|
|
|
|
This will launch a docker container running the various daemons that
|
|
|
|
|
form a working tezos node. The first launch might take a few minutes to
|
|
|
|
|
synchronize the chain.
|
|
|
|
|
|
|
|
|
|
On first launch the script will also create a cryptographic identity
|
|
|
|
|
(nicknamed ``my_identity``) and provide you with free tezzies on a fresh
|
|
|
|
|
account (nicknamed ``my_account``). You might check your balance with:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh client get balance for my_account
|
|
|
|
|
|
|
|
|
|
On some circumstances the account creation might fail. If so, see
|
|
|
|
|
section “Known issues” below on how to force the account creation.
|
|
|
|
|
|
|
|
|
|
See ``./alphanet.sh --help`` for more informations about the script. In
|
|
|
|
|
particular see ``./alphanet.sh client --help`` and
|
|
|
|
|
``scripts/README.master`` for more information about the client.
|
|
|
|
|
|
|
|
|
|
Every call to ``alphanet.sh`` will check for updates of the node and
|
|
|
|
|
will fail if your node is not up-to-date. For updating the node, simply
|
|
|
|
|
run:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh restart
|
|
|
|
|
|
|
|
|
|
If you prefer to temporarily disable automatic updates, you just have to
|
|
|
|
|
set an environment variable:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
export TEZOS_ALPHANET_DO_NOT_PULL=yes
|
|
|
|
|
|
|
|
|
|
Compilation from sources
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
2018-05-18 02:50:45 +04:00
|
|
|
|
Please refer to the :ref:`instructions<howto>`.
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
2018-05-18 02:50:45 +04:00
|
|
|
|
For the rest of the document, to execute the example commands, you
|
|
|
|
|
will have to replace ``./alphanet.sh client`` by ``./tezos-client``.
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
How to observe the network ?
|
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
|
|
The alphanet script provides a basic command ``./alphanet.sh head`` that
|
|
|
|
|
allows you to see if your own node is synchronized.
|
|
|
|
|
|
|
|
|
|
The Tezos client also offers a lot of commands to introspect the state
|
|
|
|
|
of the node, and also to list and call the RPCs of the nodes.
|
|
|
|
|
|
|
|
|
|
Enthusiastic Tezos adopter fredcy has also developed a nice block
|
|
|
|
|
explorer for the alphanet. See https://github.com/fredcy/tezos-client.
|
|
|
|
|
|
|
|
|
|
In an upcoming version, we will also provide an opt-in tool for node
|
|
|
|
|
runners that will allow us to provide a global monitoring panel of the
|
|
|
|
|
alphanet.
|
|
|
|
|
|
2018-05-18 02:50:45 +04:00
|
|
|
|
How to obtain free Tezzies
|
|
|
|
|
--------------------------
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
2018-05-18 02:50:45 +04:00
|
|
|
|
See :ref:`this page<faucet>`.
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
How to play with smart-contracts ?
|
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
|
|
An advanced documentation of the smart contract language is in
|
|
|
|
|
|
|
|
|
|
``/docs/language.md``
|
|
|
|
|
|
|
|
|
|
Some test contracts are in
|
|
|
|
|
|
|
|
|
|
``/tests/contracts/``
|
|
|
|
|
|
|
|
|
|
For details and examples, see:
|
|
|
|
|
|
2018-05-18 02:50:45 +04:00
|
|
|
|
https://www.michelson-lang.com/
|
2017-11-11 14:40:20 +04:00
|
|
|
|
|
|
|
|
|
How to stake on the alphanet ?
|
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
|
|
By default, the faucet of the alphanet (the one behind
|
|
|
|
|
``./alphanet.sh originate free account "my_account" for "my_identity"``)
|
|
|
|
|
creates contracts which are managed by ``my_identity`` but whose staking
|
|
|
|
|
rights are delegated to the baker of the block including the
|
|
|
|
|
origination. That way we are sure that staking rights are attributed to
|
|
|
|
|
an active baker.
|
|
|
|
|
|
|
|
|
|
But, nonetheless, you might claim your staking rights!
|
|
|
|
|
|
|
|
|
|
The following command returns the current delegate of a contract:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh client get delegate for "my_account"
|
|
|
|
|
|
|
|
|
|
If it is one the following, it is indeed one of our “bootstrap”
|
|
|
|
|
contracts!
|
|
|
|
|
|
|
|
|
|
- ``tz1YLtLqD1fWHthSVHPD116oYvsd4PTAHUoc``
|
|
|
|
|
- ``tz1irovm9SKduvL3npv8kDM54PSWY5VJXoyz``
|
|
|
|
|
- ``tz1UsgSSdRwwhYrqq7iVp2jMbYvNsGbWTozp``
|
|
|
|
|
- ``tz1TwYbKYYJxw7AyubY4A9BUm2BMCPq7moaC``
|
|
|
|
|
- ``tz1QWft73Zhj5VSA1sCuEi9HhDDJqywE6BtC``
|
|
|
|
|
|
|
|
|
|
You might change the delegate of a contract with a single command:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh client set delegate for "my_account" to "my_identity"
|
|
|
|
|
|
|
|
|
|
You now have staking rights!
|
|
|
|
|
|
|
|
|
|
Well, almost.
|
|
|
|
|
|
|
|
|
|
You should wait.
|
|
|
|
|
|
|
|
|
|
A little bit.
|
|
|
|
|
|
|
|
|
|
At most two cycles. Which, on the alphanet is 128 blocks (something
|
|
|
|
|
around 2 hours). On the mainnet, this will be between 2 weeks and a
|
|
|
|
|
month.
|
|
|
|
|
|
|
|
|
|
But, to enforce your right a last step is required. When baking or
|
|
|
|
|
endorsing a block, a bond is taken out of the default account associated
|
|
|
|
|
to the public key of the delegate. Hence, in order to stake, you must be
|
|
|
|
|
provisioning for bond deposit.
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh client transfer 50,000.00 from "my_account" to "my_identity"
|
|
|
|
|
|
|
|
|
|
On the alphanet, a bond is ꜩ1000. Hence, with the previous command you
|
|
|
|
|
provisioned 50 bonds. If you want more, see section “How to obtain free
|
|
|
|
|
Tez from the faucet contract ?”.
|
|
|
|
|
|
|
|
|
|
Now, you are settled. The ``alphanet`` docker image runs a baker daemon
|
|
|
|
|
and a endorser daemon, by default for all your keys.
|
|
|
|
|
|
|
|
|
|
To know if you staked, just run:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh baker log
|
|
|
|
|
./alphanet.sh endorser log
|
|
|
|
|
|
|
|
|
|
You should see lines such as:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
Injected block BLxzbB7PBW1axq for bootstrap5 after BLSrg4dXzL2aqq (level 1381, slot 0, fitness 00::0000000000005441, operations 21)
|
|
|
|
|
|
|
|
|
|
Or:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
Injected endorsement for block 'BLSrg4dXzL2aqq' (level 1381, slot 3, contract bootstrap5) 'oo524wKiEWBoPD'
|
|
|
|
|
|
|
|
|
|
On the alphanet, rewards for staking are credited after 24 hours. The
|
|
|
|
|
reward for baking or endorsing a block is ꜩ150. The safety bond is
|
|
|
|
|
returned together with the reward.
|
|
|
|
|
|
|
|
|
|
To know when you will be allowed to stake in the current cycle, you
|
|
|
|
|
might try the following RPCs, where you replaced ``tz1iFY8ads...`` by
|
|
|
|
|
the appropriate value:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
$ ./alphanet.sh client list known identities
|
|
|
|
|
my_identity: tz1iFY8aDskx9QGbgBy68SNAGgkc7AE2iG9H (public key known) (secret key known)
|
|
|
|
|
$ ./alphanet.sh client rpc call /blocks/head/proto/helpers/rights/baking/delegate/tz1iFY8aDskx9QGbgBy68SNAGgkc7AE2iG9H with '{}'
|
|
|
|
|
{ "ok":
|
|
|
|
|
[ { "level": 1400.000000, "priority": 2.000000,
|
|
|
|
|
"timestamp": "2017-05-19T03:21:52Z" },
|
|
|
|
|
... ] }
|
|
|
|
|
|
|
|
|
|
Known issues
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
Missing account ``my_account``
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
The chain synchronization has not been optimized yet and the
|
|
|
|
|
``alphanet.sh`` script might mis-detect the end of the synchronization
|
|
|
|
|
step. If so, it will try to create your free account in an outdated
|
|
|
|
|
context and your new account will never be included in the chain.
|
|
|
|
|
|
|
|
|
|
To fix this, just wait for your node to be synchronized: for that run
|
|
|
|
|
the following command, in the middle of a (raw) json object, it should
|
|
|
|
|
display the date of the last block (which should not be too far in the
|
|
|
|
|
past):
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh head
|
|
|
|
|
|
|
|
|
|
Please note that the printed date is GMT, don’t forget the time shift.
|
|
|
|
|
|
|
|
|
|
Then, you need to remove from the client state the non-existent contract
|
|
|
|
|
and regenerate a new one:
|
|
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
./alphanet.sh client forget contract "my_account"
|
|
|
|
|
./alphanet.sh client originate free account "my_account" for "my_identity"
|
2018-05-18 02:50:45 +04:00
|
|
|
|
|
|
|
|
|
.. include:: alphanet_changes.rst
|