Commit Graph

2053 Commits

Author SHA1 Message Date
Grégoire Henry
84a2f1ee29 Shell: enforce the maximum number of operation per block 2017-11-20 05:03:00 +01:00
Grégoire Henry
3c06879deb Shell: add Error_monad.{iter2_p,iteri2_p} 2017-11-20 04:57:09 +01:00
Grégoire Henry
06a6cf5b9a Proto: allow to update 'max_number_of_operations'
The constant is now defined per block and not per protocol.
Also allows to set a limit per validation pass.
2017-11-20 04:57:09 +01:00
Grégoire Henry
13dd470d06 More renaming: 'mine' -> 'bake' 2017-11-20 04:27:27 +01:00
Grégoire Henry
42681dfea5 Jbuilder: better error reporting 2017-11-20 01:21:54 +01:00
Benjamin Canou
ac62538eb6 Alpha: remove some fixme and assert false 2017-11-17 15:54:36 +01:00
Grégoire Henry
17644e0fa3 Proto: reimplements Storage_functors with iterable indexes
The new `Storage_functors` is now a "functional" equivalent of the
"imperative" `Store_helpers` used in the shell.
2017-11-17 15:54:36 +01:00
Grégoire Henry
b6b59be5fd Jbuilder: minor improvement in error reporting. 2017-11-17 15:54:36 +01:00
Grégoire Henry
a7364f0ed5 Proto_env: remove Context.list
This was a reminder of old-time (before irmin-1.0). It is now replaced
with: `Context.{fold,keys}`.
2017-11-17 15:54:36 +01:00
Grégoire Henry
49b7db258d Move Persist from the shell to the protocol.
It is not used anymore in the shell.
2017-11-17 15:54:36 +01:00
Benjamin Canou
1d357587d0 Node: register error Validator.Inactive_network 2017-11-17 14:13:55 +01:00
Grégoire Henry
659d1aa63a Shell: remove unrequired net_id from network messages 2017-11-17 14:13:55 +01:00
Grégoire Henry
178d839ee1 Shell: remove net_id from the block header. 2017-11-17 14:13:55 +01:00
Grégoire Henry
b7deebaf42 Shell: Remove net_id from the operation header.
The `branch` of the operation contains enough information to induce
the `net_id`, and the code of the validator/prevalidator is now mature
enough to efficiently determine the `net_id` of an incoming operation.
2017-11-17 14:13:55 +01:00
Grégoire Henry
4d2bc49960 Shell: memorize the current list of live blocks and operations 2017-11-17 14:13:55 +01:00
Grégoire Henry
1d71ea5718 Fix docstring attachment 2017-11-17 14:13:55 +01:00
Grégoire Henry
6a00c55c4e Shell: add docstrings for the validator. 2017-11-17 14:13:55 +01:00
Grégoire Henry
119f724e64 Mempool: also broadcast 'branch_{delayed,refused}' operations 2017-11-17 14:13:55 +01:00
Grégoire Henry
3e39f82bee Shell/baker: inline full operation contents in RPC. 2017-11-17 14:13:55 +01:00
Grégoire Henry
1163c19213 Shell: add configuration variable for various timeouts. 2017-11-17 14:13:55 +01:00
Grégoire Henry
910b43726b Shell: add CLI options for bootstrap_threshold 2017-11-17 14:13:55 +01:00
Grégoire Henry
f3555488c7 Shell: use one 'validation worker' per peer.
The single validation module is split in multiple (simpler)
modules. In the process, we introduce one "validation worker" per
peer. This worker handle all the `New_head` and `New_branch`
advertised by a given peer. For so, it sends "fetching request" and
"validation request" to respectively the `Distributed_db` and and the
`Block_validator`. These two global workers are responsible of the
'fair' allocation of network and CPU ressources amongst the connected
'peers'.
2017-11-17 14:13:55 +01:00
Grégoire Henry
c5b5a87ab7
P2p: add regression test for oversized message 2017-11-17 13:46:27 +01:00
Grégoire Henry
529795efd7
Reset the chain 2017-11-17 02:51:39 +01:00
Grégoire Henry
72c414aaeb
P2p: fix bound checks
Credit to `tomjack` on freenode.
2017-11-17 01:58:41 +01:00
Pietro Abate
472f1d53d1 Some docstrings in src/proto/alpha 2017-11-15 13:14:37 +01:00
Pietro Abate
3e1c4008c3 Add docstrings in src/environment/v1/ 2017-11-15 13:14:16 +01:00
Grégoire Henry
1429a6c8e6 Almost too late for copyright update. 2017-11-15 13:13:16 +01:00
Grégoire Henry
b810b360ea Add missing copyright headers. 2017-11-15 13:11:11 +01:00
Benjamin Canou
94295fa281 Micheline: resilient parser for better error reporting 2017-11-15 11:57:37 +00:00
Pietro Abate
102ba49149 Proto: Rename Public_key to Delegates_pubkey 2017-11-14 16:56:15 +01:00
Pietro Abate
de8967540f Proto: store the public key of the manager in the contract 2017-11-14 16:56:15 +01:00
jevonearth
e37974c64f Spelling and consistency fixes
From doing a quick grep, the rest of the code-base tends to hyphenate
the term 'hard-coded'.
2017-11-14 00:22:19 +01:00
jevonearth
e9d1dbcce1 Spelling fixes and grammar improvements 2017-11-14 00:22:19 +01:00
jevonearth
f4937fd8ef Change data dir error messages to use present tense 2017-11-14 00:22:19 +01:00
Grégoire Henry
44364295ee Jbuilder: use --dev for running test and other minor improvments 2017-11-14 00:12:40 +01:00
Pietro Abate
6ecfca9396 Reindent all files
Now `make test` fails when sources are not indented correctly, the
indentation test is also executed in the CI.
2017-11-13 23:13:34 +01:00
Milo Davis
32a466556e Jbuilder: use --dev option 2017-11-13 22:30:35 +01:00
Benjamin Canou
6a38f76956 Reset the chain. 2017-11-13 22:18:17 +01:00
Benjamin Canou
42734ee4a2 Node: Make sure fatal errors are properly printed 2017-11-13 22:18:16 +01:00
Benjamin Canou
602a10651c Prevalidator: log_debug canceled operation fetches 2017-11-13 22:18:16 +01:00
Benjamin Canou
d5a2bd9604 Distributed_db: register new internal errors 2017-11-13 22:17:56 +01:00
Grégoire Henry
6cb428c1a2 Utils/Data_encoding: add missing case in merge_objs. 2017-11-13 11:04:17 +00:00
Grégoire Henry
5beb62c83e P2p: more debug in P2p_connection. 2017-11-13 11:04:17 +00:00
Grégoire Henry
d866b1bfa5 Distributed_db: add primitive for sending 'message'. 2017-11-13 11:04:17 +00:00
Grégoire Henry
e98e175c21 Lwt_pipe: do not force the size function to count bytes.
For now, we were always bounding a queue size by the total amount of
allocated bytes. We might want to use ather kind of bounds (e.g. the
total number of elements).
2017-11-13 11:04:16 +00:00
Grégoire Henry
2d08ba778f Utils: fix Lwt_utils.with_timeout
The function will never fail with `Timeout`, if the concurrent
computation terminates at the same "time".
2017-11-13 11:04:16 +00:00
Grégoire Henry
f0acd2e4da Utils: introduce Lwt_dropbox.
This is a blocking "dropbox" containing a single element. Writing in
the dropbox is a non-blocking operation, that might overwrite the
current element. Reading in the dropbox is blocking while the
'dropbox' is empty.
2017-11-13 11:04:16 +00:00
Grégoire Henry
f63c5acbf5 Distributed_db: inline the header when broadcasting a new block.
This adds a small size overhead in the network message, but in most
cases it will avoid a subsequent 'fetch' of the header.
2017-11-13 11:04:15 +00:00
Grégoire Henry
06873da197 Distributed_db: add an argument timeout to 'prefetch`. 2017-11-13 11:04:15 +00:00
Grégoire Henry
e5c931c6a3 Shell: rename Distributed_db.state -> net_state 2017-11-13 11:04:14 +00:00
Grégoire Henry
16cc5b7ec8 Shell: add more timeout in the prevalidator 2017-11-13 11:04:14 +00:00
Grégoire Henry
f4c045b126 Shell: reintroduce lost call to 'git repack'.
When updating to 'irmin-1.3' we merged the branch too quickly and we
incidentally removed the support for 'git repack'. This induced heavy
usage of inodes.

This is still a temporary hack, while waiting for a proper backend for
irmin (e.g. based LevelDB).
2017-11-13 11:31:09 +01:00
Pietro Abate
b25f35e2b5 Rename last occurences of miner into baker 2017-11-10 13:41:52 +01:00
Grégoire Henry
ed75bc5acd Distributed_db: handle timeout in fetch. 2017-11-10 09:52:35 +00:00
Grégoire Henry
a8a906b1ae Distributed_db: use the error monad for fetch. 2017-11-10 09:52:34 +00:00
Grégoire Henry
f40c418d0f Distributed_db: remove the last "lol-object". 2017-11-10 09:52:33 +00:00
Grégoire Henry
41c82d7481 Distributed_db: handle cancelation of call to fetch.
We properly count the number of waiters and cleanup the table when the
count drops to zero.
2017-11-10 09:52:33 +00:00
Grégoire Henry
2b4e898407 Distributed_db: use a record instead of a tuple. 2017-11-10 09:52:30 +00:00
Grégoire Henry
f3abee1fdf Utils: add Lwt_pipe.pop_all. 2017-11-10 09:52:29 +00:00
Grégoire Henry
1a10504959 Shell: fixme broken invariant in Distributed_db_functors.
The invariant of the `clear` function was not properly inforced by the
module interface. This patch remove the inappropriate invariant and
properly rename the function.
2017-11-10 09:52:29 +00:00
Milo Davis
673f70c5d0 Client Keys: Vanity keys 2017-11-09 12:57:18 +00:00
Benjamin Canou
6de9c68e81 Remove reminiscent trace of Sha256 2017-11-08 23:30:34 +00:00
Grégoire Henry
cb1e5cc396 P2p: missing Lwt_utils.protect in the reader worker. 2017-11-08 23:30:33 +00:00
Grégoire Henry
c9fe53eb10 P2p: reduce the default value of "expected connections". 2017-11-08 23:30:33 +00:00
Grégoire Henry
6f5c51f050 Client: ignore empty files 2017-11-08 23:30:32 +00:00
Grégoire Henry
0e2a751408 P2p: better logging on read timeout. 2017-11-08 23:30:32 +00:00
Grégoire Henry
dad0793353 P2p: better logging on failing "Swap". 2017-11-08 23:30:31 +00:00
Grégoire Henry
ee2cb59731 Remove reminiscent trace of Base48.
A long time ago we were using a custom Base48 encoding instead of the
standard Base58.
2017-11-08 23:30:31 +00:00
Milo Davis
f83e0fd7c0 Node: adds version to data directory 2017-11-08 17:49:19 +01:00
Milo Davis
5109db2813 Node: adds error for directory parsing failure 2017-11-08 17:41:54 +01:00
Alex Coventry
14597b8f7e Utils: OcamlDoc for Data_encoding module.
This patch is coathored with @milodavis, @abate,
and @klakplok.
2017-11-08 16:42:35 +01:00
Pietro Abate
48d7ba29e8 Generate html API documentation
- add a new targert "make doc-html" to generate the html doc via
  jbuilder
- this patch adds public_name to jbuild files for all libraries
2017-11-08 15:55:40 +01:00
Grégoire Henry
0c3a54c2f9 Distributed_db: export disconnect 2017-11-03 15:12:09 +00:00
Grégoire Henry
06e4ec4d9b Distributed_db: proper logging
New category:

- node.distributed_db.p2p_reader

    log all incoming message, from any peer (debug)

- node.distributed_db.scheduler.*

    log the request scheduler of the given ressources (notice/debug),
    where '*' might be:

    - Operation_hash   (individual operation)
    - Block_hash       (block header)
    - operation_hashes (aggregated operation_hashes of a block)
    - operations       (aggregated operations of a block)
    - Protocol_hash    (protocol)
2017-11-03 15:12:08 +00:00
Grégoire Henry
616ca33498 Distributed_db: randomly selecting peer 2017-11-03 15:12:08 +00:00
Grégoire Henry
c05c739475 Distributed_db: reset next_request delay
When registring a new peer as a provider for a ressource,
reset the next request delay.
2017-11-03 15:12:07 +00:00
Grégoire Henry
79ae54625d Distributed_db: fix concurency issue
Some `events` might be lost in case of the timeout happens before
concomitantly. We avoid this by storing the `events` promise into the
worker state.
2017-11-03 15:12:07 +00:00
Grégoire Henry
5c03d92457 Distributed_db: fix concurency issue
Concurent request of the same ressource might insert multiple 'Pending
request' in the request tracking table. Resulting, only one of them
will ever be satisfied and some worker might be stuck for ever. We
avoid this be removing any cooperation between lookup and insertion in
the table.
2017-11-03 15:12:07 +00:00
Grégoire Henry
5c1f96f3a1 Shell: add the number of validation passes in the block header. 2017-11-03 15:12:06 +00:00
Grégoire Henry
f7aed9d45d Shell: keep a reference to 'State.t' in 'State.Net.t' 2017-11-03 15:12:05 +00:00
Grégoire Henry
3909baaedc Raw_store: document the Missing_key error 2017-11-03 15:12:05 +00:00
Grégoire Henry
900f16228b Distributed_db: properly reexport the error Missing_data 2017-11-03 15:12:04 +00:00
Grégoire Henry
54a21fdb46 Shell: properly reexport P2p_types.Peer_id. 2017-11-03 15:12:04 +00:00
Grégoire Henry
d4ac1389e3 Shell: add comparison operators to Tezos_data 2017-11-03 15:12:04 +00:00
Grégoire Henry
a7a4564670 Node: add an explicit type for Block_locator.t 2017-11-03 15:12:03 +00:00
Grégoire Henry
201b851f69 Node: store the mempool in State.
This simplifies the interaction between the `validator` and the
`distributed_db` by removing some "callbacks".
2017-11-03 15:12:03 +00:00
Grégoire Henry
57109435d5 Node/Validator: minor renaming 2017-11-03 15:12:02 +00:00
Grégoire Henry
22fd758239 Node/Validator: minor renaming 2017-11-03 15:12:01 +00:00
Milo Davis
79cdb9d023 CLI: No print source flag for large programs 2017-11-03 15:51:11 +01:00
Benjamin Canou
54dd73e28b Michelson: Update the documentation 2017-11-03 15:51:11 +01:00
Benjamin Canou
cdfd7ddcad Michelson: Propagate more annotations 2017-11-03 15:51:11 +01:00
Milo Davis
6c992b58df Michelson: adds LOOP_LEFT, ITER, MAP body 2017-11-03 15:51:11 +01:00
Milo Davis
c387ed823a Michelson: Propagate and check annotations 2017-11-03 15:51:11 +01:00
Benjamin Canou
b22f02868f Michelson: Switch parser/printer/representation to Micheline 2017-11-03 15:51:11 +01:00
Benjamin Canou
e18802b32e Introducing Micheline, the IR of Michelson 2017-11-03 15:39:04 +01:00
Milo Davis
a63ab3b77b Client: makes contracts non-spendable by default 2017-11-03 12:49:29 +00:00
Milo Davis
466831c179 CLI: Autocomplete 2017-11-03 10:59:02 +01:00
Milo Davis
7d20da9a7b CLI: Show existing alias in error message 2017-11-01 21:02:36 +01:00
Arthur Breitman
1bdae93ffd Mining -> Baking 2017-11-01 08:42:37 -07:00
Arthur Breitman
6dd9f2289a mining -> baking, continued 2017-11-01 04:13:23 -07:00
Arthur Breitman
4fb3874fea mining -> baking 2017-11-01 04:07:33 -07:00
Grégoire Henry
108fe7799f Jbuilder: Wrap Tezos_protocol_environment_sigs 2017-10-31 20:33:57 +00:00
Grégoire Henry
05da5a73b8 Jbuilder: Wrap the Tezos_protocol_compiler 2017-10-31 20:33:57 +00:00
Milo Davis
0a7f9a39a9 Switch to Jbuilder
This is a rewrite of the build system with `jbuilder`, with just a
minimal toplevel Makefile for backward compatibility.

This first patch preserves the project architecture, we only gain
proper dependencies handling and always up-to-date `.merlin` files.
A latter patch may split the project in smaller "sub-package",
i.e. multiple `.opam` files.

The embedded versions of the economic protocol are now compiled with
`jbuilder` instead of `tezos-protocol-compiler`, potentially allowing
proper inlining at the cost of slightly-less-stricter
sandboxing. Nevertheless, dynamically loaded protocol are still
compiled with the `tezos-protocol-compiler` and thus strictly
sandboxed ; and a CI rule also checks the proper sandboxing of
embedded protocols.

This patch is coauthored with @hnrgrgr
2017-10-31 20:33:56 +00:00
Milo Davis
a3aa8b60bb Remove Makefiles 2017-10-31 20:33:54 +00:00
Milo Davis
490ce840f9 Remove all .merlin 2017-10-31 20:33:54 +00:00
Milo Davis
47d77acfd7 Rename client_alpha.cmx into client_embedded_alpha.cmx 2017-10-31 20:33:52 +00:00
Grégoire Henry
c40d6f0a55 Rename tezos_protocol_sigs_packer 2017-10-31 20:33:52 +00:00
Grégoire Henry
9c90e2e514 Merge node_compiler_main.ml into node_main.ml 2017-10-31 20:33:51 +00:00
Grégoire Henry
3d21245959 Rename tezos_compiler.ml 2017-10-31 20:33:51 +00:00
Grégoire Henry
dc5c4910cf Rename tezos_compiler_embedded_cmis.ml 2017-10-31 20:33:50 +00:00
Grégoire Henry
2e477ebb26 Rename tezos_protocol_registerer.ml 2017-10-31 20:33:50 +00:00
Grégoire Henry
0afb67dd10 Remove tezos_protocol_packer 2017-10-31 20:33:50 +00:00
Milo Davis
1cb48bbb3a Rename store_sigs.mli into store_sigs.ml 2017-10-31 20:33:49 +00:00
Milo Davis
9a056eef23 Improved error message 2017-10-31 20:33:49 +00:00
Grégoire Henry
dd9e5f5c95 Updater: simplify signature and error registration.
In particular, register the `Ecoproto_error` at the same time the
functor `Environment.Make` is applied.
2017-10-31 20:33:48 +00:00
Milo Davis
90f9f51421 Merge src/client/embedded/alpha/baker/* into src/client/embedded/alpha/ 2017-10-31 20:33:47 +00:00
Milo Davis
ceeb3f7eac Remove dead code 2017-10-31 20:33:46 +00:00
Grégoire Henry
dc2cd4db1c Utils: add Data_encoding.delayed
This allows a better representation for `Error_monad.error_encoding`,
capturing the side-effect of new error registration.
2017-10-31 20:33:45 +00:00
Grégoire Henry
79f2dca33a Shell: fix possible stack overflow in validation.
Ouch! That was a subtle Lwt misuse.

With the current (very-old) validator code, when the validation of
block is waiting to the validation of its predecessor, a "pending" Lwt
thread is created. The validation of the predecessor might also wait
on its own predecessor, potentially creating a very long chain of
pending validation"... If in the process one of the block is tagged
invalid, all the pending "successors" in the chain are 'wakeuped'
immediatly and in sequence, potentially blowing the stack in the
process.

A quick fix is to add an `Lwt_unix.yield` to break the recursion.

A better fix is to not create such long chain of "pending" validations.
See merge request !59.
2017-10-31 17:59:14 +01:00
Milo Davis
93b1f69418 Michelson: Timestamp operations 2017-10-20 08:30:54 +00:00
Benjamin Canou
1344e69934 Michelson: Add documentation for SIZE on lists 2017-10-20 10:08:28 +02:00
Fabrice Le Fessant
26c9047349 Michelson: Implement SIZE on lists 2017-10-20 10:08:03 +02:00
Milo Davis
ecd861ca70 Michelson: Add typechecking context 2017-10-11 17:48:40 +02:00
Grégoire Henry
370112f9b8 Makefile: simplify the compilation process.
This patch is co-authored with: cagdas.bozman@ocamlpro.com

With this patch the economic protocol is now compiled as as
"functor-pack", parameterized over the environment. This will ease the
protocol reusability outside of the tezos source tree (e.g. for a
michelson Web IDE) and will allow proper unit testing of the economic
protocol.

This functorization allows to break the dependency of the
'tezos-protocol-compiler' on various '.mli' of the node, and hence
we don't need anymore the unusual compilation schema:

  a.mli -> b.mli -> b.ml -> a.ml

where 'A' is linked after 'B' but 'a.mli' should still be compiled
before 'b.mli'. This will simplify a switch to 'ocp-build' or 'jbuiler'.
2017-10-11 13:44:09 +00:00
Milo Davis
dc74acba56 Validator: better error message for operations that exceed max size 2017-10-10 14:03:44 +02:00
Milo Davis
b5e53191e2 CLI: New argument parsing and help messages 2017-10-04 15:27:56 +02:00
Milo Davis
5028c8a845 Build: fix dependencies to synchronize irmin and irmin-unix 2017-09-28 11:31:28 +02:00
Grégoire Henry
c2fd13f3ab Reset the chain 2017-09-22 19:11:21 +02:00
Grégoire Henry
76bf007660 Shell/Irmin: tag the commit of the head as the "git branch" 2017-09-22 19:07:54 +02:00
Grégoire Henry
1384253447 Proto: cleanup nonces once the seed is computed 2017-09-22 19:07:54 +02:00
Grégoire Henry
8da6c1cbf4 Client/Nonce: also reveal the last block of cycle.
Fix small delay in nonce revelations when the current head is the last
block of a cycle.
2017-09-22 17:36:43 +02:00
Grégoire Henry
1af2885d72 Proto: fix level_in_cycle.
It was missing the initial 'hop' by `Storage.first_level`.
2017-09-22 17:35:12 +02:00
Milo Davis
e440dfea18 Michelson: adds key_hash type 2017-09-22 15:17:45 +02:00
Milo Davis
46cec6fe76 CLI: adds show identity command 2017-09-22 15:17:43 +02:00
Grégoire Henry
b49491587f Reset the chain. 2017-09-22 11:37:57 +02:00
venator
99d8357115 Storage: store rolls in subpathes named after their first 2 bytes 2017-09-22 11:37:48 +02:00
Benjamin Canou
8b4c94de67 Michelson: add tests and doc for SET_CADDAADR and MAP_CADDAADR 2017-09-21 15:55:39 +02:00
Benjamin Canou
7512f2df0b Michelson: update the documentation to the new syntax. 2017-09-21 15:55:39 +02:00
Milo Davis
f1c6a01a0e Michelson: Adds macros section to docs 2017-09-21 15:55:39 +02:00
Milo Davis
abee4a8e52 Michelson: tests for new parser and macro expander 2017-09-21 15:55:39 +02:00
Benjamin Canou
f50a37e6f4 Michelson: new parser and macro expander. 2017-09-21 15:55:39 +02:00
Milo Davis
d644c32676 Removes webclient 2017-09-13 15:06:48 +02:00
Milo Davis
f184be8ddc Logging of RPCs 2017-08-29 13:12:06 +00:00
Milo Davis
f2f4682606 Contracts: makes origination balance check inclusive 2017-08-29 13:09:43 +00:00
Grégoire Henry
d2ad611c3d Node/Sandbox: allow 'private' address
Allows any kind of 'private' listening address (as defined by IANA)
rather than only allowing `[::1]`.

Also document the error.
2017-08-28 21:25:19 +02:00
Milo Davis
5bf5f09fbc Emacs: vertical stack printing and suggestions 2017-08-24 21:07:58 +02:00
Milo Davis
62a10de372 Michelson: adds SIZE for sets and maps 2017-08-24 16:02:23 +02:00
Grégoire Henry
2c8b46a835 Utils: fix Utils.take_n in presence of duplicates 2017-08-22 22:07:29 +02:00
Zhenya Roubinchtein
662cc6a8ee Michelson: small documentation fix-up. 2017-08-22 20:40:26 +02:00
Alex Coventry
04ce0c1f5d Utils: various doc improvements 2017-08-22 20:39:59 +02:00
Alex Coventry
59b5b2df49 Utils: fix list_rev complexity.
Using fold_left here iterates over the entire list, whereas you only
need to iterate over the first `n` elements.
2017-08-22 20:22:27 +02:00
Grégoire Henry
4c7d4a8348 P2p: comment out dead code 2017-08-22 14:56:15 +02:00
Grégoire Henry
90f9ab4200 Makefile: fix node.top 2017-08-19 12:45:09 +02:00
Grégoire Henry
777ff19dcd Michelson: remove a spurious rule
This should have been removed when floats were removed from the
language.
2017-08-19 12:13:13 +02:00
Bayle Shanks
1436286fd6 doc typo set::MEM (again)
This pull request is identical to recently closed #19, but applied to the current head. I think #19 may have been closed erroneously. If MEM takes as an input a set of elements of type 'elt, then if it also takes another input which is an element to test for membership, clearly that other input must be of type 'elt.

If #19 was not closed erroneously, then please explain, and i will stop reopening this issue.
2017-08-19 10:55:09 +02:00
Milo Davis
8d852993ff Michelson: Add LAMBDA to the language spec 2017-08-18 19:09:46 +00:00
Milo Davis
804c3a4886 Michelson: Enforces ordering on data 2017-08-18 18:20:13 +02:00
Milo Davis
fe871e9ecd Michelson: Fixes reversed list bug 2017-08-18 18:14:17 +02:00
Benjamin Canou
7c586aaf25 Reset the chain (on-disk storage updated) 2017-08-17 14:54:34 +02:00
Grégoire Henry
a01f786de4 Update to irmin.1.3 2017-08-16 11:12:51 +02:00
Grégoire Henry
571e87dacb Update to mtime.1.0 2017-08-16 10:53:43 +02:00
Grégoire Henry
b8ccfeb0cf Makefile: fix utop rules 2017-08-16 10:52:36 +02:00
Benjamin Canou
9ae9f3f4b7 Node: fix misplaced logging message 2017-08-11 15:24:38 +02:00
Milo Davis
299ebe3865 Testing: Tests multiple nodes 2017-08-11 13:01:46 +00:00
Milo Davis
4c31d084e1 Improves error messages and defaults for transfer -arg 2017-08-10 09:03:28 +00:00
Grégoire Henry
30b2cd3e0e Update protocol version 2017-08-08 16:49:56 +02:00
OCamlPro-Iguernlala
fbacfff9e6 P2p: use incremental encoding/decoding 2017-08-08 11:22:05 +02:00
Grégoire Henry
32fa712e13 Prevalidation: minor bugfix. 2017-08-07 08:29:52 +02:00
Benjamin Canou
31a2728909 Michelson: fix typo in runtime error message 2017-07-28 15:05:23 +02:00
Milo Davis
98c96be749 Michelson: updates spec to use int and nat 2017-07-27 18:24:08 +02:00
Fabrice Le Fessant
ed04fc3d01 Michelson: add the .mli of the typechecker 2017-07-26 15:19:05 +02:00
Fabrice Le Fessant
4dd1ef9988 Michelson: replace all numbers with only int and nat 2017-07-26 15:19:05 +02:00
Milo Davis
efdf8c74eb Michelson: better propagation and printing of errors to the client 2017-07-26 14:08:49 +02:00
Justin Carter
df2d6713b5 Alpha: fix spelling of substraction 2017-07-25 17:46:36 +02:00
Justin Carter
8ba1130ee3 Client: derive the public key from the secret key when adding to wallet
That way we do not need to require the public key be added before hand
making the workflow nicer.
2017-07-25 17:46:25 +02:00
Wyatt Sullivan
cca69e409d Node: fix typo in config variable name 2017-07-25 17:46:05 +02:00
Wyatt Sullivan
9b2d0882b1 Node: fix typos in help pages 2017-07-25 17:46:05 +02:00
Milo Davis
7bfaf2fe9b Michelson: removes amount from calling convention 2017-07-25 11:18:43 +02:00
Milo Davis
110e0206e7 Michelson: allow CREATE_CONTRACT to set the spendable flag 2017-07-24 15:57:10 +02:00
Milo Davis
98424be5be Michelson: TRANSFER_TOKENS no longer takes a burn 2017-07-24 15:57:10 +02:00
Milo Davis
74f23b238d Alpha: fix error message for origination amount too low. 2017-07-24 15:57:10 +02:00
Benjamin Canou
26a5338b86 Alpha: adds a command to get the storage of a contract 2017-07-24 15:57:03 +02:00
Milo Davis
a8e984c1af Alpha: adds an RPC to get the storage of a contract 2017-07-24 15:04:46 +02:00
Milo Davis
733be3fa17 Michelson: adds missing instructions from language BNF 2017-07-24 14:42:52 +02:00
Milo Davis
9e1ec0c159 Doc: fixes incorrect usage example 2017-07-24 14:42:16 +02:00
Benjamin Canou
4a9fee3f11 Michelson: also display types inside lambdas. 2017-07-22 23:00:49 +02:00
Benjamin Canou
6e215b7d3b Michelson: Quick and Dirty Emacs mode. 2017-07-22 22:54:36 +02:00
Benjamin Canou
d083add61f Michelson: pretty print typechecking errors when using run program 2017-07-22 00:14:40 +02:00
Milo Davis
77433a5f15 Michelson: show type_map for programs with type errors 2017-07-22 00:14:40 +02:00
Benjamin Canou
4bd9a864cf Shell: document internal distributed_db error, 2017-07-21 16:16:39 +02:00
Milo Davis
23c814c783 Michelson: Adds DEFAULT_ACCOUNT instruction 2017-07-21 10:45:57 +02:00
Milo Davis
b320d43259 Michelson: removes NOP instruction from surface syntax 2017-07-21 10:34:22 +02:00
Milo Davis
b52d4a78d9 Michelson: adds -amount flag to run program 2017-07-19 18:13:03 +02:00
Benjamin Canou
800f4b555d Alpha: fix contract deletion. 2017-07-19 15:39:59 +02:00
Grégoire Henry
5d33b2ce22 Revert "Alpha: add a faucet counter to prevent replay."
This reverts commit 512fde82e4.
2017-06-12 11:08:41 +02:00
Grégoire Henry
2bc63854a8 Shell: Liveness of operations
Operations now include a block hash in their header. Such an operation
could only be included in a successor of this block.

Furthermore, when validating a block, the economic protocol now
returns---together with the context---an integer `max_operations_ttl`.
Then, when validating a successor, the shell will fail if it contains
an operation whose header's block hash is not one the
`max_operations_ttl` predecessors of the block.

As a bonus, the shell is now able to detect and forbid replayed
operations. Then, we might decide to remove some replay
detection-mechanism that we previously implemented in the economic
protocol.
2017-06-12 11:07:37 +02:00
Grégoire Henry
329c8b185a Shell: implements Chain.live_blocks 2017-06-12 11:07:37 +02:00
Grégoire Henry
8d5155cf32 Proto: return the maximum TTL for operations 2017-06-12 11:07:37 +02:00
Grégoire Henry
747cdb1963 Shell: export Distributed_db.*.clear 2017-06-12 11:07:37 +02:00
Grégoire Henry
90780f3374 Shell: minor renaming
Let's be consistent with Lwt (and ourselves).
2017-06-12 11:07:37 +02:00
Grégoire Henry
4bbc97aeb6 Shell: rework the preapply RPC
It now takes a `proto_header` in parameter, and it returns a full
`shell_header`. This prepares the inclusion of the context's hash in the
`shell_header`.
2017-06-12 11:07:35 +02:00
Grégoire Henry
3b7a314669 Shell/Proto: more complete "begin_construction".
The `begin_construction` function now accepts an optional argument
`proto_header`. This is to be used by a new RPC that ease forging the
shell header of a block (i.e. it will compute the fitness and, in a
near future, the hash of the resulting context).
2017-06-12 11:05:49 +02:00
Grégoire Henry
89814a3d4e Proto/Alpha: more RPCs 2017-06-12 11:05:48 +02:00
Grégoire Henry
d06fcebd1f Proto/Alpha: minor renaming 2017-06-12 11:05:48 +02:00
Grégoire Henry
565654a242 Client: minor renaming 2017-06-12 11:05:48 +02:00
Grégoire Henry
f96ecbf667 Test: inject operation and block atomically 2017-06-12 11:05:46 +02:00
Grégoire Henry
f39eca214a Shell: remove the on-disk index of operations
Let's get serious. The full index of operations is not sustainable in
the production code. We now only keep the index of operations not yet
in the chain (i.e. the mempool/prevalidation). Operations from the
chain are now only accesible through a block. For instance, see the
RPC:

   /blocks/<hash>/proto/operations
2017-06-12 11:04:43 +02:00
Grégoire Henry
4995864316 Shell: regroups basic data types in Tezos_data 2017-06-12 11:04:43 +02:00
Grégoire Henry
61eb67cbca Shell: do not keep tracks of 'invalid_successors' 2017-06-12 11:04:43 +02:00
Guillem Rieu
58587258dc Proto/Alpha: add a RPC /context/voting_period_kind 2017-06-12 09:48:02 +02:00
OCamlPro-Iguernlala
4ded0660d6 p2p: check values of some options in P2p.create 2017-06-12 09:39:36 +02:00
Benjamin Canou
afda65fef1 Alpha: fix pre-execution typechecking. 2017-06-11 21:39:55 +02:00
Grégoire Henry
68f9851bce Client: add option for forcing free mining. 2017-06-07 16:41:46 +02:00
Grégoire Henry
3b38720fb6 Minor fix in contract deletion 2017-06-07 16:41:41 +02:00
Grégoire Henry
81b720fee0 Add: tezos-client set delegate ... 2017-06-07 16:38:59 +02:00
Vincent Bernardoff
3b3428ddad Shell: experimental leveldb backend 2017-06-06 23:12:33 +02:00
Benjamin Canou
e69662efa5 Alpha: consistent typechecking of contract storage initialization. 2017-06-06 19:39:46 +02:00
Vincent Bernardoff
35792ccc37 RPCs: fix node crash on SSL write error 2017-06-06 18:58:03 +02:00
Benjamin Canou
90f87bec4a Alpha: update bootstrap parameters. 2017-06-01 01:53:54 +02:00
Benjamin Canou
512fde82e4 Alpha: add a faucet counter to prevent replay. 2017-05-31 16:36:12 +02:00
Benjamin Canou
d351bb1608 Shell: small bugfix preventing mempool cleanup. 2017-05-31 16:36:07 +02:00
Grégoire Henry
443cee2bb3 Fix compilation with lwt.3.0.0 2017-05-07 12:26:27 +02:00
arthur.breitman@gmail.com
d2a2052a2e transfering -> transferring typo fix 2017-05-06 20:53:09 -07:00
Benjamin Canou
442f2d00a0 RPCs: fix missing CORS headers. 2017-04-19 17:27:45 +02:00
Grégoire Henry
9480d411a2 Proto: add an RPC that return all the 'parsed' operations of a block 2017-04-17 00:49:49 +02:00
Grégoire Henry
8a20ec8b0f Shell/Proto: export more information to the RPC handler 2017-04-17 00:49:49 +02:00
Grégoire Henry
fb04fc1c17 Shell: lazy access to all the operations of a block
This prepares the node to the new on-disk storage.
2017-04-17 00:49:49 +02:00
Grégoire Henry
729ca9887d Shell/Protocol: minor renaming 2017-04-17 00:49:49 +02:00
Grégoire Henry
c316dc00a8 Minor improvement in the docker image. 2017-04-14 20:54:43 +02:00
Guillem Rieu
b861d45b14 Proto/Alpha: fix proposal checking location in Amendment.record_ballot 2017-04-14 20:54:43 +02:00
Guillem Rieu
76b9cedcef Tests: add test for switching unanimously to 'demo' protocol 2017-04-14 20:54:43 +02:00
Guillem Rieu
3c44f1dfba Proto/Alpha: replace Vote.set_current_proposal by init_current_proposal 2017-04-14 20:54:43 +02:00
Alain Mebsout
8777349a19 A few fixes to make things more posix compliant in build/test scripts 2017-04-14 17:41:18 +02:00
Grégoire Henry
42a4e4ecc0 Merge branch 'stream-binary-decoding' into 'master'
[data_encoding] add facilities to decode a stream of Mbytes.t incrementally

See merge request !173
2017-04-14 00:08:51 +02:00
OCamlPro-Iguernlala
7d214a19f7 data_encoding: read streams of Mbytes.t, tests, remove dead code (debug functions), expose a function that checks without reading the data 2017-04-13 18:05:41 +02:00
Grégoire Henry
0f247adea6 Shell: add the protocol level in the header of block 2017-04-12 18:29:12 +02:00
Grégoire Henry
2b0df39115 Context: simplify the storage of 'test_network'.
This prepares the context to the inclusion the hash of the context in
the block header. By "looking" into the resulting context of a block,
we are now know able to determine whether:

- no testnet is currently associated to the branch;
- a testnet must be forked after the block;
- a previously forked testnet is running.
2017-04-12 12:43:34 +02:00
Grégoire Henry
495e887538 RPC: minor improvements in naming consistency 2017-04-12 12:41:35 +02:00
Grégoire Henry
1b6ecbfc81 Shell/RPC: simplify block-watcher signature 2017-04-12 12:41:35 +02:00
Grégoire Henry
f805507702 Shell: move level in th shell part of block. 2017-04-12 12:41:32 +02:00
Grégoire Henry
2480bfd216 Shell: remove dead code 2017-04-12 12:39:41 +02:00
Grégoire Henry
ab76b8fbf5 Shell/State: consistent use of pred vs. predecessor. 2017-04-12 12:39:41 +02:00
Grégoire Henry
6212af55f1 Proto/Alpha: use uint16 for mining priority. 2017-04-12 12:39:08 +02:00
Grégoire Henry
a731a47d3c Proto: explicit fitness/timestamp in the signature
This remove the data fomr the context where they "duplicate" the
block header.
2017-04-12 12:39:04 +02:00
Grégoire Henry
3b5a3eb509 Client: minor fix in the daemon. 2017-04-10 23:30:43 +02:00
Benjamin Canou
5a21f3c159 Reengineer the PROTOCOL signature to prepare for the multi-step validator. 2017-04-10 23:30:43 +02:00
Grégoire Henry
e11e9c9ac5 Shell/P2p: Split the unit tests in smaller atom.
And use more `Error_monad`...
2017-04-10 23:14:31 +02:00
Grégoire Henry
413bddcd96 Shell/P2p: propagate all errors to {raw_,}write_sync.
Those functions are only used in the testsuite.
2017-04-10 23:08:16 +02:00
Grégoire Henry
c187a0b792 Shell/P2p: implements raw_write_sync.
For testing only: it allows to send 'gardled' messages to a peer.
2017-04-10 23:08:16 +02:00
Grégoire Henry
c2a4db2d81 Shell/P2p: propagate disconnection errors through the pool. 2017-04-10 23:08:16 +02:00
Grégoire Henry
4523a67e7d Shell/P2p: fix connection close on read error 2017-04-10 23:08:16 +02:00
Grégoire Henry
4537c8780e Shell: introduce Error_monad._assert. 2017-04-10 23:08:16 +02:00
Benjamin Canou
18e2edf6f4 Client: minor client output fixes and enhancements. 2017-04-10 18:31:37 +02:00
Grégoire Henry
dbdcca7dbb Client/Alpha: simplify Client_proto_context 2017-04-10 18:31:37 +02:00
Grégoire Henry
a6c7f355cc Test: simplify Makefile 2017-04-10 18:31:37 +02:00
Grégoire Henry
166801fc77 Client: more Error_monad in Cli_entries. 2017-04-10 18:31:37 +02:00
Grégoire Henry
cfb7e35914 Client: a bit of Error_monad in Hash 2017-04-10 18:31:37 +02:00
Grégoire Henry
f5e2f7b481 Client: more Error_monad in Client_aliases 2017-04-10 18:31:37 +02:00
Grégoire Henry
3226565b39 Client: more Error_monad in Client_{node,proto}_rpcs 2017-04-10 18:31:37 +02:00
Benjamin Canou
f26dfdbe8e RPC: fix CORS preflight. 2017-04-10 18:23:24 +02:00
Vincent Bernardoff
329b72d1aa RPC: batch operation parsing/retrieval 2017-04-04 16:11:18 +02:00
OCamlPro-Iguernlala
cb2aa6ea2b [Data_encoding.Binary] add a function 'to_bytes_list' to encode a given data as a list of 'small' blocks 2017-04-02 16:29:19 +02:00
Grégoire Henry
5449cbbfe6 Proto/Alpha: use record for mining slot. 2017-04-02 16:18:44 +02:00
Grégoire Henry
ef3180c561 Shell: Smaller Net_id. 2017-04-02 15:40:04 +02:00
Grégoire Henry
ffc8fa0383 RPC: rebind 'complete' for blocks and operations. 2017-04-02 15:33:32 +02:00
OCamlPro-Iguernlala
a330f3bcc5 [data_encoding] use MBytes.{get/set}_char to read/write binary data instead of int8 2017-03-31 17:46:44 +02:00
Guillem Rieu
9b3cde5df9 Client: add Client_proto_context.delegate_contract function 2017-03-31 17:26:04 +02:00
Benjamin Canou
5bfe8f90f2 Alpha: document and classify more errors. 2017-03-31 17:03:02 +02:00
Benjamin Canou
62ed003957 Alpha: remove assets. 2017-03-31 17:02:52 +02:00
Benjamin Canou
2ed66ea569 Alpha: take origination burn from source and not destination. 2017-03-31 17:02:36 +02:00
Benjamin Canou
02a67a7976 Alpha: fix typo in error registration. 2017-03-31 17:02:20 +02:00
Grégoire Henry
24b5290a74 Opam: use the libev backend of Lwt. 2017-03-31 16:58:59 +02:00
Grégoire Henry
852ba95a3c Client: do no pat parse the config file and Sys.argv twice. 2017-03-31 16:49:40 +02:00
Grégoire Henry
1879c4359f Merge remote-tracking branch 'ocp/bugfix-in-data-encoding' 2017-03-31 16:48:07 +02:00
Grégoire Henry
c2bf738079 Merge branch 'merkle' 2017-03-31 16:47:32 +02:00
Vincent Bernardoff
0a48a2e14a alpha: expose to_int32 for some types 2017-03-31 16:46:55 +02:00
Grégoire Henry
245fa66140 Shell: Split the operations list out of the (minimal) block header.
The minimal header now (classically) contains the root of a Merkle tree,
wrapping a list of lists of operations. Currently, the validator only
accept a single list of operations, but the 3+pass validator will
requires at least two lists.
2017-03-31 01:19:34 +02:00
Grégoire Henry
618fb64129 Client/RPC: rename wait into async 2017-03-31 01:19:34 +02:00
Grégoire Henry
e273cfa07f Shell/Distributed_db: allow to precheck data. 2017-03-31 01:19:34 +02:00
Grégoire Henry
a6307c40cf Shell: add unit tests for Merkle tree 2017-03-31 01:19:33 +02:00
Grégoire Henry
9097809589 Shell: Merkle tree of operations 2017-03-31 01:19:33 +02:00
OCamlPro-Iguernlala
669a0249ca add some asserts in data_encoding 2017-03-29 18:33:39 +02:00
OCamlPro-Iguernlala
dc32decd05 [bugfix in data_encoding] When writing a float (to binary format), MBytes.set_double should be used instead of MBytes.set_float (Float _ encodes doubles in the encoding, not singles) 2017-03-29 18:32:46 +02:00
OCamlPro-Iguernlala
f96fbe7d31 [bugfix in data_encoding] When reading a float (from binary format), MBytes.get_double should be used instead of MBytes.get_float (Float _ encodes doubles in the encoding, not singles) 2017-03-29 18:30:15 +02:00
Benjamin Canou
66cb6a8567 Alpha: remove unused storage key. 2017-03-28 14:37:26 +02:00
Benjamin Canou
31bc331063 Switch to OCaml version 4.04.0. 2017-03-28 14:37:26 +02:00
Benjamin Canou
ed6e91a47d RPCs: make the result of [/blocks/X] compatible with Alpha's [/helpers/parse/block]. 2017-03-28 14:37:26 +02:00
Benjamin Canou
9872ff8b36 RPCs: make the result of [/operations/X] compatible with Alpha's [/helpers/parse/operation].
fixes #160
2017-03-28 14:37:26 +02:00
Grégoire Henry
7e1cc171cc Shell: fix unhandled exception in io_scheduler. 2017-03-28 14:37:15 +02:00
Benjamin Canou
c46950b903 Shell: repack the context every 10 commits. 2017-03-16 18:49:31 +01:00
Benjamin Canou
d99d8f88a1 Utils: add [Lwt_utils.Idle_waiter]. 2017-03-16 18:49:31 +01:00
Benjamin Canou
70e31054d1 Alpha: classified public key revelation error. 2017-03-16 18:49:31 +01:00
Guillem Rieu
4e82e94ef4 Client: add tags to aliases (enabled for contracts). 2017-03-16 18:49:31 +01:00
Guillem Rieu
9c2564391c Client: lift some commands into functions. 2017-03-16 18:49:31 +01:00
Guillem Rieu
83f2e0dcd3 Client: switch to JSON config file and remove config-file dependency. 2017-03-16 18:49:31 +01:00
Guillem Rieu
04ef832ad3 Client: add optional seed argument to Client_keys.gen_keys 2017-03-16 18:49:31 +01:00
Guillem Rieu
c6c81345a8 RPC: add answer functions with HTTP code argument to RPC interface. 2017-03-16 18:49:31 +01:00
Guillem Rieu
cc44053229 RPC: add HTTP methods and Content-Type headers. 2017-03-16 18:49:31 +01:00
Guillem Rieu
a2758253ea Utils: add [merge_list2] function 2017-03-16 18:49:31 +01:00
Benjamin Canou
967075f49a CLient: fix endorse for command. 2017-03-16 18:49:31 +01:00
Vincent Bernardoff
8962f324d4 Client: a bit of doc. 2017-03-16 18:49:31 +01:00
Vincent Bernardoff
215bd0e2d2 Alpha: simplify mining/endorsement slots RPCs. 2017-03-16 18:49:31 +01:00
Vincent Bernardoff
b48187d43b Client: fix .merlin file. 2017-03-16 18:49:31 +01:00
Arthur Breitman
76fad5a3db Economic = economique
Economical = econome
2017-03-15 08:00:53 -07:00
Grégoire Henry
826f2ea4ba P2p: implements peer swapping 2017-03-14 11:56:42 +01:00
Grégoire Henry
cf0d6d2580 Typo 2017-03-14 11:56:42 +01:00
Benjamin Canou
b5f0021016 Shell: add RPC to list network protocol versions. 2017-03-13 19:08:08 +01:00
Grégoire Henry
16bae53015 Makefile: do not compile the (old) webclient 2017-03-13 19:08:08 +01:00
Grégoire Henry
2d828060d5 Client: do not fail when the protocol is unknown... 2017-03-13 19:08:08 +01:00
Benjamin Canou
7ba73a5955 Alpha: classify and document mining errors. 2017-03-10 18:33:46 +01:00
Benjamin Canou
259972a3dd Alpha: classify and document qty errors. 2017-03-10 18:33:46 +01:00
Benjamin Canou
9caef6fae4 Alpha: classify and document contract errors. 2017-03-10 18:33:46 +01:00
Vincent Bernardoff
d845dc9740 Alpha: documentation of RPC wrappers. 2017-03-10 18:33:46 +01:00
Grégoire Henry
c2ae0b278a OPAM: more version contraint 2017-03-10 16:27:21 +01:00
Grégoire Henry
82628a6ca2 Client: avoid unrequired monitor 2017-03-09 14:38:39 +01:00
Vincent Bernardoff
556c965af7 RPC server: use ~on_exn 2017-03-09 14:38:39 +01:00
Grégoire Henry
ab4015b189 Shell: fix (part of) the memory leak in validator 2017-03-09 14:38:39 +01:00
Grégoire Henry
ec12edeb91 Proto/Alpha: fix mining right timestamp 2017-03-09 14:38:38 +01:00
Grégoire Henry
39403e243e Shell: avoid operation leaks 2017-03-09 14:38:38 +01:00
Benjamin Canou
3b483811f5 Client/genesis: option to set the timestamp of the activation block. 2017-03-09 14:38:38 +01:00
Grégoire Henry
ccfdaa6bd0 FunView: fix recursive removal. 2017-03-09 14:38:38 +01:00
Grégoire Henry
534dc6af9d Shell: the genesis block should not flag the node as 'bootstraped' 2017-03-09 14:38:38 +01:00
Grégoire Henry
8453a69e0b Shell: no duplicates in Prevalidation 2017-03-09 14:38:38 +01:00
Grégoire Henry
9dd2e4963f Makefile: add --warn-error 8 (incomplete pattern-matching) 2017-03-07 13:12:23 +01:00
Vincent Bernardoff
63e5ea5e79 Client: Add "network stat" command. 2017-03-07 13:07:18 +01:00
Vincent Bernardoff
9e823c7dfb typo 2017-03-07 13:04:14 +01:00
Grégoire Henry
ee870722cf Shell: fix Utils.read_file 2017-03-03 18:20:38 +01:00
Grégoire Henry
49392afd73 Validation: fetch new protocol on demand. 2017-03-03 18:20:38 +01:00
Benjamin Canou
1d13908152 Alphanet: dictator in the alpha protocol 2017-03-03 18:20:38 +01:00
Benjamin Canou
7187f2d879 Proto: classify and document some errors. 2017-03-03 18:20:38 +01:00
Benjamin Canou
015f3edff3 Shell-level commit messages and timestamps. 2017-03-03 18:20:38 +01:00
Benjamin Canou
2e96a1377e Genesis: unused error. 2017-03-03 18:20:37 +01:00
Grégoire Henry
bed575d506 Baker: fix operation ordering... 2017-03-02 16:19:22 +01:00
Grégoire Henry
257a3972df Shell: do not forbid to restart the node. 2017-03-02 16:19:19 +01:00
Benjamin Canou
23869991ca Alpha: update .merlin. 2017-03-02 16:19:12 +01:00
Grégoire Henry
b087042d83 Shell: do not split the validation scheduler... 2017-03-02 16:19:06 +01:00
Benjamin Canou
85055aace6 Shell: do not validate blocks that don't increase the timestamp or fitness. 2017-03-02 16:18:51 +01:00
Grégoire Henry
cb90e3e5c5 Lwt: temporary Hack (waiting for Pierre's expertise) 2017-03-02 16:18:44 +01:00
Grégoire Henry
3f5bd7ea5b Client: allow the baker te re-read keys.
Is a new key is added, the baker will start baking for this key.
No need to relauch the baker anymore.
2017-03-02 16:18:16 +01:00
Grégoire Henry
22e3aee362 Alphanet: remove the secret bootstrap keys 2017-03-02 16:18:09 +01:00
Grégoire Henry
2b938802f3 Alphanet: trivial faucet 2017-03-02 16:18:02 +01:00
Grégoire Henry
768cf91cd6 Client: implements ./tezos-client bootstrapped
It wait for the node to be synchronized with the network. The heuristic
is currently:

- the timestamp of current head is less than 1 minute old ;
- there was a period of 30 seconds without new block discovered.
2017-03-02 16:17:58 +01:00
Grégoire Henry
de050bfee1 Shell: tezos-node identity should read the configuration file 2017-02-27 22:29:06 +01:00
Grégoire Henry
0b27503f30 Shell: exit properly on SIGTERM. 2017-02-27 22:28:59 +01:00
Grégoire Henry
348aec3d10 Makefile: more fixes...
Sigh!
2017-02-27 17:21:37 +01:00
Grégoire Henry
3edace2720 Makefile: fix various dependencies errors 2017-02-27 09:49:03 +01:00
Grégoire Henry
eb89877d58 Shell: fix propagation of error in inject_block 2017-02-26 02:03:06 +01:00
Grégoire Henry
05ed4e7557 Error_monad: allow binary serialization of error. 2017-02-26 02:02:33 +01:00
Grégoire Henry
b461b6c0c6 Shell: protection against serialisation error. 2017-02-26 01:25:47 +01:00
Grégoire Henry
20057079c6 Client/Revelation: reduce the size of RPC requests 2017-02-26 00:24:02 +01:00
Grégoire Henry
2f6863da89 Client/Endorser: do not send endorsement for old blocks 2017-02-26 00:23:54 +01:00
Grégoire Henry
0b33e5a6da Shell/RPC: Implements `/block/<hash>/predecessors 2017-02-26 00:23:52 +01:00
Grégoire Henry
fc7e4e56a6 Client/Baker: do not monitor endorsement while baking. 2017-02-25 18:25:00 +01:00
Grégoire Henry
285427bcba Client: minor stylistic issue. 2017-02-25 18:24:58 +01:00
Benjamin Canou
c66db98bfa Baker: don't bake over old loafs during the bootstrap stage. 2017-02-25 18:24:33 +01:00
Grégoire Henry
863869eb40 Proto/Env: remove Bytes.unsafe_of_string 2017-02-25 18:18:35 +01:00
Grégoire Henry
c277b5b56d Proto: let genesis be agnostic on fitness 2017-02-25 18:14:06 +01:00
Grégoire Henry
e88e4b0848 Shell: Proto.fitness -> Context.set_fitness.
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.
2017-02-25 18:14:06 +01:00
Grégoire Henry
3c035da25c Proto: unit testing for the genesis protocol
- Let the `sandbox` change the public key
- Adapt `test_basic.ml` and `test_basic.sh`
- Do not duplicate the fitness in the block header

Client:
- allow the `bootstrap` command to lookup keys in the `head` rather than
  in `genesis`.
2017-02-25 18:14:06 +01:00
Grégoire Henry
639b4c0c5c Shell: add Data_encoding.unit 2017-02-25 18:14:06 +01:00
Grégoire Henry
a2f1b6c889 Client: introduce Client_blocks 2017-02-25 18:14:06 +01:00
Vincent Bernardoff
8f5f5a2106 Genesis protocol 2017-02-25 18:14:06 +01:00
Grégoire Henry
d5d5cc7c09 Proto: rename bootstrap into alpha 2017-02-25 18:14:05 +01:00
Grégoire Henry
b674c538b2 Shell: refactor the distributed DB.
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.
2017-02-25 18:14:05 +01:00
Grégoire Henry
26ce119072 Alphanet: bootstrap accounts should always have 1/2 of the mining rights 2017-02-25 18:14:05 +01:00
Grégoire Henry
300dd5ea6d Makefile: praise the return of utop.
The Makefile is really hackish...
2017-02-25 18:14:05 +01:00
Benjamin Canou
d0e9d0d584 Proto: allow decreasing baking slot durations. 2017-02-25 18:05:17 +01:00
Grégoire Henry
09dcb59c14 Makefile: praise the return of utop.
The Makefile is really hackish...
2017-02-24 18:02:24 +01:00
Benjamin Canou
bc16b027c2 Proto: allow origination of two contract with the same properties.
fixes #124
2017-02-24 16:24:27 +01:00
Grégoire Henry
69ebe7d0cc Shell: minor doc improvement in RPC. 2017-02-24 16:22:56 +01:00
Grégoire Henry
bda80bf613 Shell: rename gid into peer_id 2017-02-24 16:22:56 +01:00
Vincent Bernardoff
b0ed3cefac Shell: Add RPCs for introspecting the state of the P2P layer 2017-02-24 16:22:55 +01:00
Pierre Chambart
a23d718515 Add utils/Watcher 2017-02-24 16:20:59 +01:00
Vincent Bernardoff
70491aea8c Utils: Moving_average: use int64 for total 2017-02-24 16:20:59 +01:00
Vincent Bernardoff
92c339f732 P2P: more types 2017-02-24 16:20:59 +01:00
Grégoire Henry
fc53f3b233 Switch to Base58.
Base48 was fun but... hell yeah... let's stay standard.

Public encoding of hash:

```
  Block:      "B..." (len: 51)
  Operation:  "o..." (len: 51)
  Protocol:   "P..." (len: 51)

  Ed25519:    "tz1.." (len: 36)
  Contract:   "TZ1.." (len: 36)

  NetworkdId: "id.." (len: 30)
```

Other internal prefixes (in the RPC):

```
  Hash of Michelson's expression: "expr..." (len: 54)

  Ed25519 public key: "edpk..." (len: 54)
  Ed25519 secret key: "edsk..." (len: 98)
  Ed25519 signature:  "edsig.." (len: 99)

  Hash of a random seed nonce: "nce...." (len: 53)
  Random seed:                 "rng...." (len: 53)
```
2017-02-24 15:44:21 +01:00
Vincent Bernardoff
efc6d285c6 Shell: limit known points table size
* Gc events still need to be recorded
2017-02-16 13:23:01 +01:00
Grégoire Henry
0a3ad7de53 Client: add rpc call ... with '{json}' 2017-02-15 15:26:39 +01:00
Grégoire Henry
9a0ac6b837 Client/Baker: improve logging. 2017-02-15 15:26:39 +01:00
Benjamin Canou
f77a2544cc Client/Baker: fix baking of the first block. 2017-02-15 15:26:39 +01:00
Grégoire Henry
34e1764bce Client/Baker: let the baking daemon reveal nonces 2017-02-15 15:26:39 +01:00
Benjamin Canou
f7a70f355c Node: shutdown on an RPC server error. 2017-02-15 15:26:39 +01:00
Benjamin Canou
8f618a0f94 Proto: remove voting proposal cleanup when there is none. 2017-02-15 15:26:39 +01:00
Cagdas Bozman
a7c8975ec6 Proto: check the 'delegatable-ity' before to remove a delegate key.
We use the `remove` function instead of `delete` to check the
delegatable-ity to avoid a storage error (`remove` does nothing if the
bucket does not exist).
2017-02-15 15:26:39 +01:00
Grégoire Henry
d475d1ac29 Proto: fix freeze_rolls_for_cycle
That's what happen when no-one review the code...
2017-02-15 15:26:39 +01:00
Pierre Chambart
90c5314c4f Proto: Initialize a nonce for the genesis block 2017-02-15 15:26:39 +01:00
Grégoire Henry
c8376198c8 Proto: refill bootstrap contracts at the end of a cycle 2017-02-15 15:26:39 +01:00
Grégoire Henry
55e2429758 P2p: more debug traces. 2017-02-15 15:26:39 +01:00
Grégoire Henry
48da8299a6 P2p: various small fixes.
* fix bad "locking" in `p2p_io_scheduler.shutdown`
* add missing exception handler in `P2p_io_scheduler`
* wake-up `P2p.recv_any` when a new connection is established
* reintroduce version negotiation
* fix typo in greylisting
2017-02-15 15:26:39 +01:00
Vincent Bernardoff
6d41b3d38c Shell: Improve the CLI of tezos-node
* Use subcommands:
  * `tezos_node run`
  * `tezos_node config`
  * `tezos_node identity`
* Regroup all on-disk data in `--data-dir`
* Split `Node_main` in multiple files.
* Add DNS resolution for `--net-addr` and `--rpc-addr`
* Hardcode `bootstrap.tezos.com` as bootstrap peer(s)
* Add `--no-bootstrap-peers`
* Rename `--expected-connections` -> `--connections`
2017-02-15 15:26:17 +01:00
Grégoire Henry
42f118f486 Publish some baker's code. 2017-01-26 13:38:25 +01:00
Vincent Bernardoff
9090559510 Node: typo 2017-01-25 00:18:11 +01:00
Grégoire Henry
ec0e7d4d48 Merge branch 'lwt_pipes_limit' into 'master'
Lwt_pipe: limit by content size in bytes

See merge request !137
2017-01-24 00:05:07 +01:00
Grégoire Henry
0820744619 Lwt_pipe: minor style issue 2017-01-23 23:59:16 +01:00
Grégoire Henry
854e2f0697 Merge branch 'work-on-script'. 2017-01-23 23:24:16 +01:00
Grégoire Henry
c194045f6e Shell: Add missing CLI arguments.
- 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, ...
2017-01-23 22:28:44 +01:00
Grégoire Henry
b228904bc7 Node: more CLI argument 2017-01-23 22:15:36 +01:00
Grégoire Henry
2da0c83b5a P2p: postpone the first maintenance step. 2017-01-23 22:01:35 +01:00
Grégoire Henry
5ee3581d60 P2p: fix in P2p_maintenance 2017-01-23 22:01:35 +01:00
Grégoire Henry
c87e88d84d Shell: minor fix in RPC description 2017-01-23 22:01:35 +01:00
Grégoire Henry
197ac28f0b Shell: Add Cryptobox.target_of_float
[target_of_float f] is `2 ^ (256 - f)`.
2017-01-23 21:33:01 +01:00
Grégoire Henry
3a70d88fe6 Shell: animated generation of P2p.Identity 2017-01-23 21:31:30 +01:00
Grégoire Henry
5e1eddf681 Shell: Use Error_monad in Data_encoding_ezjsonm 2017-01-23 21:31:30 +01:00
Grégoire Henry
a65ad52620 Shell: improve Lwt_utils 2017-01-23 21:31:30 +01:00
Grégoire Henry
31872eb1b1 Shell: Improve Logging 2017-01-23 21:31:30 +01:00
Grégoire Henry
866e7add2f Shell: improve Utils 2017-01-23 21:31:30 +01:00
Vincent Bernardoff
1e4d090e2c Lwt_pipe: limit by content size in bytes 2017-01-23 18:03:00 +01:00
Grégoire Henry
d87a6cd556 Docker: integration in CI
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
2017-01-23 11:28:04 +01:00
Grégoire Henry
52fab9528c P2p: add error for invalid authentification 2017-01-23 09:18:56 +01:00
Vincent Bernardoff
ce986c4a9c Shell: sign Ack message 2017-01-23 09:13:41 +01:00
Benjamin Canou
d72746c990 Michelson (docs): fixed forward example. 2017-01-20 13:25:28 +01:00
Benjamin Canou
52ec257e1d Michelson (docs): fixed scrutable reservoir example. 2017-01-20 13:25:28 +01:00
Benjamin Canou
5e06b9c719 Michelson (docs): fixed reservoir example. 2017-01-20 13:25:28 +01:00
Benjamin Canou
3a149af667 Utils: include error id in the default error pretty printer. 2017-01-20 13:25:28 +01:00
Benjamin Canou
c472dbdfa4 Michelson: towards better typechecking error reports. 2017-01-20 13:25:28 +01:00
Benjamin Canou
3cce0f3d1d Michelson: fix and extend macro expansion.
fixes #114
fixes #115
2017-01-20 13:25:14 +01:00
Benjamin Canou
507c46bbcb Michelson: get rid of tagged data notation. 2017-01-20 13:25:14 +01:00
Benjamin Canou
26e1adc143 Michelson: rename void into unit. 2017-01-20 13:25:14 +01:00
Benjamin Canou
98859dbf30 Michelson (docs): rewrite intro + doc fixes. 2017-01-20 13:25:09 +01:00
Benjamin Canou
6bfbb0d300 Michelson: enforce case sensitivity. 2017-01-20 13:24:46 +01:00
Benjamin Canou
8b8ce63590 Michelson: fix missing type equality.
fixes #111
2017-01-20 13:24:24 +01:00
Grégoire Henry
26ce72bc18 P2p: remove functors and rename recv into recv_any.
This allows to export the underlying `P2p_connection_pool.recv`
that will be used in the refactored distributed DB.
2017-01-19 10:26:45 +01:00
Vincent Bernardoff
e1692ed9bf Shell: use the new P2P backend 2017-01-19 10:26:45 +01:00
Grégoire Henry
d9fc93a5c0 Shell: implement P2p_{maintenance,discovery}. 2017-01-19 10:26:45 +01:00
Grégoire Henry
b694a62810 Shell: implement P2p_{connection_pool,welcome} 2017-01-19 10:26:45 +01:00
Grégoire Henry
6d47cb2c8f Shell: implement P2p_connection 2017-01-19 10:21:21 +01:00
Grégoire Henry
2ed8bf2cfa Shell: implement P2p_io_scheduler 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
7f091b38b9 Shell: add Crypto_box.Public_key_hash 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
0b6aa16ca7 Shell: improve logging (prepend the current time) 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
5eb8d0077a Shell: add Data_encoding.Binary.fixed_length 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
22ae4dbf45 Shell: simplify the signature of Hash.Hash_table 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
1f7f9b369d Shell: improve Lwt_pipe 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
6b3e002285 Shell: improve Lwt_utils 2017-01-19 10:21:21 +01:00
Vincent Bernardoff
0027d70158 Shell: improve Error_monad 2017-01-19 10:21:17 +01:00
Vincent Bernardoff
98fd45ab9f Shell: add Ring 2017-01-19 10:21:17 +01:00
Vincent Bernardoff
ad035d7679 Shell: add Time.{Map,Set,Table} 2017-01-19 10:21:17 +01:00
Vincent Bernardoff
a891e23741 Shell: improve Utils
- unopt_map
- list_{sub,rev_sub}
- take_n
- Bounded
2017-01-19 10:21:17 +01:00
Grégoire Henry
df81d95614 Shell: update to lwt.2.7.0 2017-01-14 13:12:55 +01:00
Grégoire Henry
7689021810 CI: less build artifacts 2017-01-02 14:49:56 +01:00
Eitan Chatav
28b4c8e6ef Minimal attacker node. 2017-01-02 13:33:11 +01:00
Grégoire Henry
61bea21033 Merge branch 'rpc-tls' into 'master'
Rpc tls

See merge request !128
2017-01-02 09:36:39 +01:00
Grégoire Henry
77ba592448 Opam: depends on ssl. 2017-01-02 09:21:36 +01:00
Arthur Breitman
86039e5d88 typo left/right in language description 2016-12-25 08:39:49 -08:00
Benjamin Canou
63aeab5bb9 RPC: use the external TLS implementation. 2016-12-14 16:45:37 +01:00
Benjamin Canou
8360b4e407 RPC: fixes some comments. 2016-12-14 16:40:42 +01:00
Benjamin Canou
8264ec111a Client: do not eat some error messages. 2016-12-14 16:39:42 +01:00
Vincent Bernardoff
cdb34ca7d3 RPC: TLS bugfixes 2016-12-13 01:52:55 +01:00
Vincent Bernardoff
59881cde32 RPC: Add TLS on the client 2016-12-13 00:47:23 +01:00
Vincent Bernardoff
77506ac4b5 RPC: Fix doc 2016-12-13 00:45:46 +01:00
Vincent Bernardoff
42b30f7bd2 RPC: Add TLS 2016-12-13 00:45:46 +01:00
Vincent Bernardoff
01fe34bc4b Node: catch correct P2P exn 2016-12-09 18:18:59 +01:00
Grégoire Henry
5c428a5ea3 CI: avoids broken packages
Otherwise:

```
The actions to process have cyclic dependencies:
  - install bos.0.1.4 -> install base64.2.1.2 -> install js_of_ocaml.2.8.3 -> install mtime.0.8.3 -> install bos.0.1.4
  - install bos.0.1.4 -> install base64.2.1.2 -> install js_of_ocaml.2.8.3 -> install logs.0.6.2 -> install bos.0.1.4
```
2016-12-09 11:19:24 +01:00
Grégoire Henry
f7f5f21e46 Fix make build-deps
The amended script is now able to handle new dependency in the opam file.
It also abloe to handle `test` attributes.
2016-12-08 16:33:01 +01:00
Vincent Bernardoff
224e5d8c73 P2P: Add counters in peer_info 2016-12-06 14:12:18 +01:00
Vincent Bernardoff
92f78b29e4 P2P: recv: return size read 2016-12-06 14:12:18 +01:00
Vincent Bernardoff
2b27a1ffbe P2P: Discovery: avoid unneeded connections 2016-12-06 14:12:18 +01:00
Vincent Bernardoff
c2249056d7 P2P: Do not send unauthenticated Advertise msgs 2016-12-06 14:12:18 +01:00
Vincent Bernardoff
6a1265255f P2P: refactor for less indenting 2016-12-06 14:12:18 +01:00
damian
517893f707 RPC: Add CORS headers 2016-12-06 13:58:21 +01:00
Vincent Bernardoff
4e9c54efa9 node_main: do not override cfg file values 2016-12-06 13:54:20 +01:00
Benjamin Canou
923d061d72 Client: help generation fixes. 2016-12-05 13:18:12 +01:00
Benjamin Canou
a098d25a55 Client: add a context to command evaluation. 2016-12-03 13:05:02 +01:00
Benjamin Canou
dc64f9b6fb Webclient: first draft. 2016-12-02 20:06:29 +01:00
Benjamin Canou
e7c39578b4 Extract the js_of_ocaml compatible part of utils. 2016-12-01 18:27:53 +01:00
Benjamin Canou
69f682357f Add hooks to the RPC server to handle static files. 2016-12-01 15:52:31 +01:00
Guillem Rieu
5b1244648c Client: remove compilation warnings due to Cli_entries.log returning 'unit Lwt.t' 2016-12-01 15:52:31 +01:00
Guillem Rieu
69adc115be Client: fix typo 'litteral' -> 'literal' 2016-12-01 15:52:31 +01:00
Guillem Rieu
a48d8c0026 Client: replace (e)printfs with Cli_entries.{error,warning,message} equivalent 2016-12-01 15:52:31 +01:00
Guillem Rieu
3c2453f00d Client: catch Failure exceptions in Client_main 2016-12-01 15:52:31 +01:00
Guillem Rieu
80e1b0f312 Client: add Cli_entries.warning to log a message on stderr without raising exception 2016-12-01 15:52:31 +01:00
Benjamin Canou
087a097cf7 Client: cli_entries module refactoring. 2016-12-01 15:52:31 +01:00
Vincent Bernardoff
1ffe2db277 P2P: Minor changes 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
bdb2d20f05 P2P: Introduce a worker dedicated to user events 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
a832c2069f P2P: Do not log ``ordinary'' errors 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
e1d6df6e99 P2P: Do not accept unauthenticated Advertise msgs 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
5f8b74e96c P2P: Cancel MA computations on client disconnect 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
158447416b Shell: Count sent and received bytes in P2p. 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
56a58cc962 Shell: use bounded Lwt_pipe in P2p 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
dc2084d993 Shell: export P2p.gid 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
41d5bbe989 Shell: Use some Error_monad in P2p 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
d41c05a066 Shell: minor rewording in P2p 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
16a3c88b1f Shell: introduce Moving_average 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
26c84de550 Shell: introduce Lwt_pipe 2016-12-01 13:52:05 +01:00
Vincent Bernardoff
fdff344989 Shell: minor cosmetics in p2p.ml 2016-12-01 13:52:05 +01:00
damian
4ca4367190 Doc polish 2016-12-01 00:18:35 +01:00
Vincent Bernardoff
17b23d827e Node_main: replace Config_file by Cmdliner 2016-11-30 23:41:18 +01:00
Vincent Bernardoff
bc7f4b48e2 RPC: launch: remove unused argument 2016-11-29 16:41:17 +01:00
Vincent Bernardoff
199bd93696 Lwt_utils: add may 2016-11-29 16:39:53 +01:00
Vincent Bernardoff
ec922f6821 Utils: add first_some 2016-11-29 14:51:36 +01:00
Grégoire Henry
62a1be15b7 Shell: still allow usage of LWT_LOG
Commit b869c264aa introdude `-v level`, which should be equivalent to
setting `LWT_LOG="* -> level`, but it inadvertently drop the support for
`LWT_LOG`. This commit reintroduces support for ` LWT_LOG` which allows
to setup distinct verbosity levels to distinct part of the node :

  LWT_LOG="net -> debug ; rpc -> notice"
2016-11-26 11:52:14 +01:00
Grégoire Henry
2a43eeaa7f P2P: properly handle End_of_file. 2016-11-26 11:49:07 +01:00
Grégoire Henry
ebcc63aefb Shell: typo in P2P identity proof-of-work 2016-11-25 23:07:05 +01:00
Grégoire Henry
2d61ded08b Merge branch 'crypto-box' into 'master'
Crypto box

Requesting code review for proof-of-work code

See merge request !115
2016-11-25 19:56:07 +01:00
Grégoire Henry
17475aa743 Shell: switch to Blake2b (closes #87 #89)
Also drop the dependencies on Cryptokit.
2016-11-25 19:46:50 +01:00
Grégoire Henry
daf3343dc1 Shell: reduce difficulty for P2P identity...
... until we properly store the nonce in the configuration file,
together with the expected difficulty.
2016-11-25 18:03:57 +01:00
Grégoire Henry
8d37369f27 Client: random json template : fix random integers 2016-11-22 11:18:49 +01:00
Eitan Chatav
710e3e755a Merge branch 'master' into crypto-box 2016-11-21 12:55:13 -08:00
Grégoire Henry
46cca127a6 Merge branch 'uint64_comparison_in_proof_of_work' into 'master'
Use unsigned comparison in proof of work

See merge request !114
2016-11-21 09:55:46 +01:00
Grégoire Henry
40a078a202 Update tezos-deps.opam to irmin.0.12.0 2016-11-21 09:52:04 +01:00
Arthur Breitman
39ea223e5b add comment for checksum in base48 encoding 2016-11-21 09:46:05 +01:00
Eitan Chatav
c52146cb71 debug string 2016-11-18 15:59:56 -08:00
Eitan Chatav
abb9e19260 integrate proof of work in p2p
* check proof of work when connecting to peers
* I’m not sure how to get the debug statement on line 418 to work, keep
getting syntax errors
2016-11-18 15:47:32 -08:00
Eitan Chatav
7cb8a42629 lower default target
takes about 2 minutes on my laptop
2016-11-18 14:28:01 -08:00
Eitan Chatav
aca0c380cf Merge branch 'master' into crypto-box 2016-11-18 14:07:45 -08:00
Eitan Chatav
ffc0189f19 default target
takes a couple seconds on my laptop to generate a proof of work with
this target
2016-11-18 14:07:27 -08:00
Eitan Chatav
2864152e15 use 256 bit target for proof of work
* SHA256 produces 256 bits pseudo-randomly uniformly, so you may
compare to a 256 bit target to get a proof of work
* If you pretend that the hash and targets are both integers between 0
and 2^256 - 1, then the target partitions the range into passing and
failing segments.
* In order to match the use of the `get_uint16` function from
`ocplib-endian`, the easiest way to encode `target` is as a `int list`
which works if not ideal
* This seems like the same thing bitcoin does; difficulty there is
actually not a primary notion but is calculated from a 256 bit target,
which is what gets adjusted over time
2016-11-17 12:02:32 -08:00
Grégoire Henry
b9c3d95406 Proto: use integer comparison while checking proof-of-work. 2016-11-17 14:58:09 +01:00
Grégoire Henry
c842140f74 Shell: introduce Compare.Uint{32,64} 2016-11-17 14:58:09 +01:00
Benjamin Canou
3b071cac46 Merge branch 'work-on-script' into 'master'
Tracing interpreter and type checker

Implements:
  * a typechecker that optionally dumps the types of each instruction
  * an interpreter that drops the stack at each execution step

Incidentally:
  * adds some RPCs to pretty print the traces
  * drops floats and imperative structures from the language
  * fixes the typing of `FAIL`
2016-11-17 14:57:54 +01:00
Eitan Chatav
65795dba2c Merge branch 'master' into crypto-box 2016-11-16 17:09:24 -08:00
Eitan Chatav
0edfae4621 bitmask
use bit mask to check proof of work
2016-11-16 17:09:01 -08:00
Grégoire Henry
938ff6404b Shell: export Bytes.{get,set}_intXX to the proto 2016-11-17 02:06:50 +01:00
Grégoire Henry
a55f31bc9b Merge branch 'resolve_prefix' into 'master'
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
2016-11-17 01:50:49 +01:00
Benjamin Canou
8edfc84ae6 Proto: tracing interpreter, RPCs and command line. 2016-11-16 17:38:53 +01:00
Benjamin Canou
db6a68a08f Proto: RPC to run an arbitrary program on arbitrary data. 2016-11-16 17:38:53 +01:00
Benjamin Canou
6eda849ce9 Proto: drop imperative constructs and instructions from the language. 2016-11-16 17:38:53 +01:00
Benjamin Canou
8602e5b0a0 Client: unexpand some macros when pretty printing programs. 2016-11-16 17:38:53 +01:00
Benjamin Canou
1e2911dd94 Proto: tracing script translator. 2016-11-16 17:38:53 +01:00
Benjamin Canou
0f91192769 Proto: script translator code indentation cleanup. 2016-11-16 17:38:53 +01:00
Benjamin Canou
472258b1bf Proto: Fix typechecking of FAIL. 2016-11-16 17:38:53 +01:00
Benjamin Canou
f284714fba Proto: drop floats in the contract language. 2016-11-16 17:38:53 +01:00
Benjamin Canou
b4b3aece97 Dropped unnecessary script_typed_ir.mli (duplicate of .ml). 2016-11-16 17:38:53 +01:00
Eitan Chatav
ee5aec87ad check proof of work 2016-11-16 17:36:14 +01:00
Eitan Chatav
0398a66423 proof of work start 2016-11-16 17:33:11 +01:00
Vincent Bernardoff
ba014261dc P2p: bugfix 2016-11-16 17:21:56 +01:00
Vincent Bernardoff
2680bf7efb P2p: fix logging 2016-11-16 17:16:01 +01:00
Vincent Bernardoff
f7e73a6dc5 P2p: force IPv6 in discovery 2016-11-16 17:16:01 +01:00
Grégoire Henry
3c55c72abf Merge remote-tracking branch 'ocp/crypto-box' 2016-11-16 01:19:13 +01:00
Grégoire Henry
719b54ac1d Client: use contextual completion 2016-11-16 00:53:40 +01:00
Grégoire Henry
d61220f4f9 Compiler: use explicit functor in Environment
Previously, the functor applications were hidden in a module generated
by `tezos-protocol-compiler`.
2016-11-16 00:53:40 +01:00
Grégoire Henry
b16a644e55 Proto: Completion of Base48-encoded public keys and contracts
This required some modifications in the Base48 module, in order not to
share the 'resolver' between distinct version of the economical protocol.
2016-11-16 00:53:40 +01:00
Grégoire Henry
1805a1d816 Shell: inline Ed25519 into Environment
This interface is not used in the shell, only in the protocol.  It is
just a (documented) wrapper over a fragment of sodium.
2016-11-16 00:53:40 +01:00
Grégoire Henry
9062c405ad Proto: minor fix in Storage.Key 2016-11-16 00:53:40 +01:00
Grégoire Henry
b82ad19806 Shell: Consistently use Ed25519.Public_key_hash 2016-11-16 00:53:40 +01:00
Grégoire Henry
69261aa542 Client: add command "complete". 2016-11-16 00:52:48 +01:00
Grégoire Henry
3f864ae113 Shell: display 12 characters for short Base48.
A full block/operation identifier is around 53 characters.
2016-11-16 00:52:48 +01:00
Grégoire Henry
1ce2643dc7 Shell: add Base48.decode_partial 2016-11-16 00:52:48 +01:00
Grégoire Henry
07ba685b8d Base48: encode the "data" before its "hash" 2016-11-16 00:52:48 +01:00
Vincent Bernardoff
f7b149c9ed Lwt_utils: fix read_mbytes 2016-11-16 00:45:52 +01:00
Vincent Bernardoff
8680d98ecd P2p: force IPv6 in discovery 2016-11-16 00:45:52 +01:00
Vincent Bernardoff
23968b53e3 P2p: fix logging 2016-11-16 00:45:52 +01:00
Grégoire Henry
6121c518d4 Shell/P2p: do not read the tag twice... 2016-11-16 00:45:52 +01:00
Grégoire Henry
9d67c1fea5 Shell/P2p: remove Ping/Pong 2016-11-16 00:45:51 +01:00
Grégoire Henry
cfba0d9cb7 Shell/P2p: Use `Lwt_utils.{read/write} 2016-11-16 00:45:51 +01:00
Grégoire Henry
6afcc1ecdd Shell/P2p: minor renaming. 2016-11-16 00:45:51 +01:00
Grégoire Henry
cbfab86f25 Shell: replace missing Netparams with Tezos_p2p 2016-11-16 00:45:51 +01:00
Grégoire Henry
450a0fec15 Shell: replace Netbits by Data_encoding 2016-11-16 00:45:51 +01:00
Grégoire Henry
5e26e1b9df Shell: Introduce Lwt_utils.{read,write}_mbytes 2016-11-16 00:45:17 +01:00
Vincent Bernardoff
ff1c08f876 P2p: refactor the mli 2016-11-16 00:44:51 +01:00
Grégoire Henry
cbca39d4ea Shell: proper handling of uint{8,16} in Data_encoding 2016-11-16 00:38:58 +01:00
Eitan Chatav
4cd86b7ca8 check proof of work 2016-11-09 18:29:57 -08:00
Eitan Chatav
e9ff110d08 proof of work start 2016-11-08 18:18:09 -08:00
Benjamin Canou
6f2c880627 Update to the latest ocplib-json-typed. 2016-11-08 16:35:53 +01:00
Grégoire Henry
5cea09bcb5 Merge remote-tracking branch 'ocp/protocol-db' 2016-11-08 12:53:00 +01:00
Vincent Bernardoff
b869c264aa tezos_node: add -verbosity 2016-11-08 12:45:14 +01:00
Eitan Chatav
56e5fc3213 encrypt arbitrary net frames 2016-11-07 14:50:22 -08:00
Eitan Chatav
1733cd499a handle decryption exceptions 2016-11-07 14:38:02 -08:00
Eitan Chatav
001ba994a8 negotiate nonce during peer connection 2016-11-07 11:30:13 -08:00
Vincent Bernardoff
f2e581c168 rolls: improve mli 2016-11-07 15:27:06 +01:00
Vincent Bernardoff
96b55369e4 typo: froze -> freeze 2016-11-07 15:26:54 +01:00
Vincent Bernardoff
668ebd7c5f fix net-local-discovery 2016-11-07 15:25:44 +01:00
Eitan Chatav
b3efe1ad0a testing code 2016-11-05 14:32:13 -07:00
Eitan Chatav
69bc2a33e2 encryption and decryption
I don’t think this is secure since the receiver decrypts the message
and then sends the clear message as a `Recv` event
2016-11-05 12:16:48 -07:00
Eitan Chatav
bdab9b6c05 peer public keys
add peer public keys to known peers in peers file
2016-11-05 09:32:32 -07:00
Eitan Chatav
3a5368434c add secret key to peer file 2016-11-05 09:12:25 -07:00
Eitan Chatav
b8b93651af composition operator
added composition operator to utils module
2016-11-04 12:22:22 -07:00
Eitan Chatav
438281f1e1 include a public key in peer record type
* include a public key in peer record type
* include public key in `Connect` packet
* receive/send public keys in `Connect` packet
* include public key in `connect_to_peer`
* json encode/decode public key
* include public key in peer file encode/decode
* include public key in bootstrapping
2016-11-04 12:07:03 -07:00
Eitan Chatav
dc0061c5d9 crypto box
initial utility functions for encrypted communication using crypto box
(X25519/XSalsa20-Poly1305)
2016-11-03 11:15:31 -07:00
Vincent Bernardoff
7a1712756f add protocol client commands 2016-10-25 19:03:14 +02:00
Vincent Bernardoff
0af5f6e7c3 tezos_compiler: changes
* Read TEZOS_PROTOCOL in json format
* Define Protocol module here
* Fix dependent modules to use Protocol defined here
* Compute hash of protocol if absent in TEZOS_PROTOCOL
2016-10-25 19:03:14 +02:00
Vincent Bernardoff
ccf6ed4a9d TEZOS_PROTOCOL: use json syntax 2016-10-25 19:03:14 +02:00
Vincent Bernardoff
4fa77b1278 + Utils.{finalize,read_file,write_file} 2016-10-25 19:03:14 +02:00
Vincent Bernardoff
f3b7299662 tezos-compiler: better arguments, add doc 2016-10-25 19:03:13 +02:00
Vincent Bernardoff
ec79241adb reject invalid protocols 2016-10-25 19:03:13 +02:00
Vincent Bernardoff
488373551b add protocol store + rpcs 2016-10-25 19:03:13 +02:00
Vincent Bernardoff
d11e44dead hex_decode: better error reporting 2016-10-25 19:03:13 +02:00
Çağdaş Bozman
9834aa9d6c Testsuite/Coverage: initial commit for code coverage 2016-10-24 14:05:24 +02:00
Vincent Bernardoff
ce54c5bc3d netbits: read len as a uint16 2016-10-24 13:40:41 +02:00
Grégoire Henry
026007e7f1 Rename "block_header" into "block". 2016-10-19 20:47:04 +02:00
Grégoire Henry
6c9cfde9be Update to the latest ocplib-resto. 2016-10-16 21:59:44 +02:00
Grégoire Henry
cbee2ecfe7 Test: improve report 2016-10-12 15:33:32 +02:00
Vincent Bernardoff
7dfb68b50a create correct socket family given ip addr type 2016-10-10 19:11:59 +02:00
Vincent Bernardoff
8e02ddb1f6 do not crash on exns arising from network input 2016-10-10 15:37:33 +02:00
Vincent Bernardoff
cc83d8444b add a safe mode for workers 2016-10-10 15:37:01 +02:00
Vincent Bernardoff
9748ffcda6 do not raise any exn in an async_exn_hook body 2016-10-10 15:35:36 +02:00
Vincent Bernardoff
4374b1725e use name for signal instead of numerical value 2016-10-10 14:25:24 +02:00
Vincent Bernardoff
17cb9ccc4a do not accept negative buffer length 2016-10-10 14:25:09 +02:00
Çağdaş Bozman
4a7eb60631 Client/Shell: filter heads by date 2016-10-10 14:23:23 +02:00
Çağdaş Bozman
03d37bfdeb Update test framework
We now use Kaputt for our tests.
2016-10-10 11:30:06 +02:00
Vincent Bernardoff
d0f78a5662 Node: Dual stack networking 2016-10-06 13:43:38 +02:00
Vincent Bernardoff
2064af36c9 typo 2016-10-06 13:41:30 +02:00
Grégoire Henry
a2363ebd5b Shell: Add `State.{Block,Valid_block}.iter_predecessors 2016-09-22 16:42:10 +02:00
Benjamin Canou
20d78e70e9 Shell: fix warnings in p2p.ml. 2016-09-15 15:47:27 +02:00
Benjamin Canou
e0c039e244 Proto+client: add RPCs and CLI entries to typecheck / hash / sign data. 2016-09-12 14:06:23 +02:00
Benjamin Canou
18d33ff6ca Expand macro instructions in the parser. 2016-09-09 18:44:30 +02:00
Benjamin Canou
7044576b3f Docs: add language documentation. 2016-09-09 18:17:31 +02:00
Benjamin Canou
c9efaa2a64 Proto: fix interpretation of tez constants. 2016-09-09 18:05:23 +02:00
Benjamin Canou
e262a334dc Proto: transfer_funds is now transfer_tokens. 2016-09-09 17:12:28 +02:00
Benjamin Canou
d2d78dc8d6 Proto: Implement new JSON structure for script expressions. 2016-09-09 17:04:55 +02:00
Benjamin Canou
e80ce1e8d5 Shell: add assoc combinator to Data_encoding. 2016-09-09 17:02:43 +02:00
Tezos
f42e9d12ac First public release 2016-09-08 19:29:33 -07:00