a55f31bc9b
Implement a minimal "completion" service. The use of Base48 encoding allows to efficiently implement a "completion" mechanism for blocks, operations, public key and contract identifiers. For instance: ``` > ./tezos-client complete eeHfgnr9QeDN eeHfgnr9QeDNvcMgSfATNeDeec4KG4CkHHkNNJt5B9xdVmsxhsHNR ``` This command returns all the identifiers matching the given prefix. Adding the option `-unique` let the command fails when there more than one possible completion. This completion mechanism should probably never be used implicitly, but it might still be useful to display a small completion popup in a GUI, or during manual testing on the CLI. See merge request !101 |
||
---|---|---|
docs | ||
scripts | ||
src | ||
test | ||
.gitignore | ||
.gitlab-ci.yml | ||
.ocp-indent | ||
Makefile | ||
README.md |
TEZOS
See https://www.tezos.com/ for more information about the project.
Build instructions
To compile Tezos, you need an OCaml compiler (version 4.03.0) and all the
libraries listed in src/tezos-deps.opam
. To install all the required
dependencies, we strongly recommand to install
OPAM, the OCaml package manager, and then to
run the following command:
make build-deps
Then, to compile the project, simply run:
make
This should produce three binaries:
tezos-node
: the tezos daemon itself;tezos-client
: a minimal command-line client;tezos-protocol-compiler
: a protocol compiler used for developing new version of the economical protocol.
Currently Tezos is developped/tested under Linux only. It should work on mac OS, but this has not been tested recently. The Windows port is in progress.
Running the node in a sandbox
To run a single instance of a Tezos node in a sandbox mode:
./tezos-node -sandbox /path/to/a/custom/data/dir -rpc-port 8732
This "sandboxed" node will not participate to the P2P network, but it accepts RPC from the local host on port 8732. See below from more details on the RPC interface.
Running the node
There is not an official running Tezos network yet. But you might run a local test network. To run a node that accept incoming connections, simply run:
./tezos-node
It will listen to incoming connection on 0.0.0.0:9732
(and [::]:9732
).
All useful data are stored into ${HOME}/.tezos-node/
, e.g. a default
configuration file was generated: ${HOME}/.tezos-node/config
.
To create multiple nodes on the same machine, it is possible to
duplicate and edit ${HOME}/.tezos-node/config
while taking care not to
share paths for accessing the database or any other data file
(cf. options db.store
; db.context
; net.peers
and protocol.dir
).
Another possibility is to let Tezos generate a config file by specifying
options on the command line. For instance, if ${DIR}/config
does not
exist, the following command will generate it and replace the default values
with the values from the command line arguments:
./tezos-node -base-dir ${DIR} -net-port 9733 -net-addr 127.0.0.1
The Tezos server has a built-in mechanism to discover peers on the local net (using UDP packets broadcasted on port 7732).
If this mechanism is not sufficient, one can provide Tezos with a list of
initial peers, either by editing the option net.bootstrap.peers
in the
config
file, or by specifying a command line parameter:
./tezos-node -base-dir ${DIR} -net-port 2023 -net-addr 127.0.0.1 \
-net-bootstrap-peers '[("127.0.0.1", 2021);("127.0.0.1", 2022)]'
If ${DIR}/config
exists, the command line options override those read
in the config file. Tezos never modifies the content of an existing
${DIR}/config
file.
./tezos-node -config-file ${DIR}/config
JSON/RPC interface
The tezos node provides a JSON/RPC interface. Note that it is an RPC,
and it is JSON based, but it does not follow the "JSON-RPC" protocol.
It is not active by default and it should be explicitely activated with
the rpc-port
option. Typically, if you are not trying to run a local
network and just want to explore the RPC, you should run:
./tezos-node -sandbox /path/to/a/custom/data/dir -rpc-port 8732
The RPC interface is self-documented and the tezos-client
is able to pretty-print the list of available RPCs. For instance, for
the list of RPC provided by the Shell:
./tezos-client rpc list
And, for the list of RPC attached to the "genesis" bloc, including the RPC provided by the associated economical-protocol version:
./tezos-client rpc list /blocks/genesis/
You might also get the JSON schema describing the expected input and output of a RPC. For instance:
./tezos-client rpc schema /block/genesis/hash
Note: you might get the same information, but as a raw JSON object, with a simple HTTP request:
wget --post-data '{ "recursive": true }' -O - http://127.0.0.1:8732/describe
wget --post-data '{ "recursive": true }' -O - http://127.0.0.1:8732/describe/blocks/genesis
wget -O - http://127.0.0.1:8732/describe/blocks/genesis/hash
The minimal CLI client
Work in progress.
See ./tezos-client -help
for the current list of available commands.