Intead of providing a `fitness` function, an economic protocol should
now call `Context.set_fitness`.
This simplify the shell's code and avoid complexity on protocol
change. Previously the fitness of a context produced by the old protocol
had to be read by the new protocol. Now, the shell read the context
without requesting the help of the economic protocol.
This refactors `src/node/shell/state.ml` in order to trace the source of
blocks and operations. This prepares the node for the three-pass
validator.
In the procces, it adds an in-memory overlay for blocks and operations.
- fix the semantics of `--base-dir` and `--sandbox`:
- `--sandbox path` becomes : `--base-dir path --sandbox`
- `--sandbox path --sandbox-param file.json` becomes `--base-dir path --sandbox=file.json`
- added `--generate-identity` for generating the node cryptographic identity and the associated stamp of proof-of-work. The amount of required work can be adjusted with `--expected-pow f` where `f` is float value such as the 256-bit stamp should be below `2^(256-f)`. For instance `--expected-pow 16` requires 16 zero-bits.
- added all the new p2p parameters: queue size, buffer size, ...
And minor fix:
- introduce configuration file for OCaml and alpine versions
- add missing `libssl1.0` in docker image
- remove the split call to `install_build_deps` (not required anymore)
- rename scripts
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