Grégoire Henry
96dd65e36d
Shell: early detection of incompatible injected blocks
2018-06-19 12:15:27 +00:00
Grégoire Henry
a08d6b8cd9
Shell: update the checkpoint when updating the head
...
The new checkpoint is the current `last_allowed_fork_level` of the new
head.
When updating the checkpoint the shell tags as invalid all blocks with
a level strictly higher to the new checkpoint that are inconstant with
it. And it removes from the disk all the block with a level lower or
equal to the new checkpoint that do not belongs to the current
chain. Though, the shell removes nothing from the disk when the
current head is below the current checkpoint: this will allow to
configure an expected checkpoint when bootstraping a node.
The first patch is very conservative and only detects new incompatible
blocks when they are stored on disk (i.e. after the validation).
Fiture patches try to detect earlier such incompatible block.
2018-06-19 12:15:27 +00:00
Grégoire Henry
d552c611c5
Shell: allow to store the current checkpoint of a chain
...
Currently initialized with the chain genesis.
2018-06-19 12:15:27 +00:00
Grégoire Henry
d02892b810
Shell: store the last allowed fork level
2018-06-19 12:15:27 +00:00
Grégoire Henry
b1d70d576c
Shell: stricter fitness check on block injection
2018-06-19 12:15:27 +00:00
Grégoire Henry
ccad901f33
Shell: fix test network creation
2018-06-19 12:15:27 +00:00
Grégoire Henry
a0a2d6b004
Shell: filter out future block
2018-06-19 12:15:27 +00:00
Grégoire Henry
67566c271c
Shell: forced upgrades
2018-06-18 15:58:00 +02:00
Grégoire Henry
f615459200
Shell/RPC: /chains/<id>/mempool
new returned parsed operations
2018-06-14 22:57:04 +00:00
Grégoire Henry
c2517a0432
Shell: minor renaming
2018-06-14 22:57:04 +00:00
Vincent Bernardoff
a6bc6333da
Shell: use lmdb
for disk storage
2018-06-13 00:55:37 +02:00
Grégoire Henry
6f4a98f6fd
P2P: allow to limit the size of mempool
2018-06-12 21:27:55 +02:00
Grégoire Henry
fed04d4b8f
P2P: allow to limit the size of protocols
2018-06-12 21:27:55 +02:00
Grégoire Henry
99f6e40471
P2P: allow to limit the size of operations and operations list
2018-06-12 21:27:55 +02:00
Grégoire Henry
8072d413fc
P2P: allow to limit the size of block header
2018-06-12 21:27:55 +02:00
Grégoire Henry
85a25e200d
P2P: allow ti limit the length of list in requests
2018-06-12 21:27:55 +02:00
Grégoire Henry
a5cec8fca0
Proto: move back max_operation_data_length
as a constants
2018-06-12 21:27:55 +02:00
Grégoire Henry
22bf535d68
Shell: faster propagation of protocols
2018-06-11 09:24:41 +00:00
Grégoire Henry
5fd5c1c5f7
Dune: upgrade to 1.0+beta20
2018-06-08 15:27:23 +00:00
Grégoire Henry
ca1d4158a7
Shell/RPC: add raw block header in monitoring RPCs
2018-06-06 15:24:05 +02:00
Grégoire Henry
5aa65ee71f
Shell/RPC: allow to fetch raw Block_header
2018-06-06 15:24:05 +02:00
Benjamin Canou
23e1486564
RPC: add missing error registration
2018-06-06 10:54:33 +02:00
Grégoire Henry
030630ec0f
Data_encoding: mandatory title
to case
2018-06-06 10:54:33 +02:00
Grégoire Henry
632144b689
RPC: remove subfield accessors
...
This is painful to maintain and `jq` works well.
2018-06-06 10:54:33 +02:00
Grégoire Henry
420986b45b
Alpha: simplify the operation datatype
2018-06-06 10:54:33 +02:00
Grégoire Henry
33c3d1fcbd
Alpha/RPC: add a low-level but typed RPC for context introspection
...
Example:
```
> tezos-client rpc get /chains/main/blocks/head/context/raw/json/\?depth\=1 | jq
{
"commitments": [],
"contracts": {
"global_counter": 0,
"index": []
},
"cycle": [
4,
3,
2,
1,
0
],
"delegates": [
"tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN",
"tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUzU",
"tz1ddb9NMYHZi5UzPdzTZMYQQZoMub195zgv",
"tz1b7tUupMgCNw2cCLpKTkSD1NZzB5TkP2sv",
"tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx"
],
"last_block_priority": 0,
"rolls": {
"index": [],
"next": 2000,
"owner": {}
},
"votes": {
"ballots": [],
"current_period_kind": "proposal",
"current_quorum": 8000,
"listings": [],
"proposals": []
}
}
> tezos-client rpc get /chains/main/blocks/head/context/raw/json/cycle/4\?depth\=2 | jq
{
"last_roll": [
[
0,
2000
]
],
"nonces": [],
"random_seed": "97d50852c159ada8e9f107e98f693b059ba28336c723e6cd0f6353eb3c0cb415",
"roll_snapshot": 0
}
> tezos-client rpc get /chains/main/blocks/head/context/raw/json/cycle/5\?depth\=2 | jq
{
"last_roll": [
[
1,
2000
],
[
0,
2000
]
],
"nonces": [],
"roll_snapshot": 2
}
```
2018-06-06 10:54:33 +02:00
Grégoire Henry
f5e3fb17c0
Resto: lift the lwt monad into Resto.
2018-06-06 10:54:33 +02:00
Grégoire Henry
89cbe0f8fa
Docs/RPC: fix doc generation
...
The current doc generator does not handles path were multiple method
are registred. The fix remove the intermediate (compilation) tree.
2018-06-06 10:54:33 +02:00
Grégoire Henry
0a78bbe33b
Shell/RPC: use GET request for /workers
2018-06-06 10:54:33 +02:00
Grégoire Henry
64c464a73f
Shell/RPC: some module renaming/aliasing
2018-06-06 10:54:33 +02:00
Grégoire Henry
2a93a336aa
Shell/RPC: use query parameters in /injection
2018-06-06 10:54:33 +02:00
Grégoire Henry
9bc7b1e573
Shell/RPC: also list embedded protocols
2018-06-06 10:54:33 +02:00
Grégoire Henry
04c920df29
Shell/RPC: use query parameters in /protocols
2018-06-06 10:54:33 +02:00
Grégoire Henry
bbf5c7408b
Shell/RPC: split out Monitor_services
2018-06-06 10:54:33 +02:00
Grégoire Henry
0b08dce3e8
Shell/RPC: move preapply_operation
into Block_services
2018-06-06 10:54:33 +02:00
Grégoire Henry
d6f79edae2
Shell/RPC: rework /blocks
...
- start using `GET` and query parameters instead of `POST` when
meaningful
- inline parsed protocol data and metadata in block headers
- inline parsed protocol data and metadata in operations
- split the RPC in four categories:
- static data, available explicitly in block headers and operations
- static "metadata", information that were computed while validating
a block or an operation, but which are not explicit in the block
header (e.g. the baker of a block, the list of internal
transfer... (currently not implemented, but that's WIP))
- "context" all the static data we may read in the context
(contracts balance, list of delegates, ...)
- "helpers" are some RPC that may perform some computation.
2018-06-06 10:54:33 +02:00
Grégoire Henry
95a56753df
P2p: store connection_local_metadata
in P2p_connection.Info.t
2018-06-05 13:51:25 +02:00
Grégoire Henry
e610fcaade
P2p: read connection metadata before to accept connections
...
This will allow to decide whether to accept a connection or not
depending on its actual metadata.
2018-06-05 13:51:20 +02:00
OCamlPro-Iguernlala
4a16b3ef0b
P2p: add "private node" information in Connection_metadata.
...
Add private_node flag in Connection_metadata.t and update Node,
Distributed_db, P2p and P2p_pool to propagate the information
2018-06-05 13:40:00 +02:00
michael
aedf867e4a
RPC: Add conn_metadata to peer_info rpcs
2018-06-04 15:55:41 +02:00
michael
df4e474577
Shell: disable prevalidator if disable-mempool is used
2018-06-04 15:39:42 +02:00
michael
d5925f088c
P2p: Add option to disable the mempool
...
This allows a node to specify that it doesn't want to receive operations
that are not included in a block. To do so, one should use the new
--disable-mempool option.
A disabled mempool node announce its configuration during the ACK exchange.
This configuration should be easily expandable with other options.
Node will keep track of the ack exchange configuration for each nodes it
is connected to and will not propagate its mempool to disabled mempool
nodes.
A disabled mempool node will ignore non-empty mempool received.
In the future, this incident should be punish by a decrement of its score
and / or ban.
2018-06-04 15:35:22 +02:00
michael
a8e607a5a9
Shell: preliminary work for ack_cfg exchange
2018-06-01 16:25:43 +00:00
Grégoire Henry
d7e5ca81e4
Shell: store metadata for block header and operations
2018-06-01 16:20:10 +02:00
Grégoire Henry
fc26022cd2
Proto: associate metadata
to valid block headers and operations
2018-06-01 16:20:10 +02:00
Grégoire Henry
c85e27605b
Proto: export Data_encoding.t
for block headers and operationss
...
Previously we were only exporting parsing function. This will allow
to move out of the protocol some `helpers` RPCs.
2018-06-01 16:20:10 +02:00
James Deikun
afa335ff48
move module-specific logging to the modules that use it
2018-05-31 17:05:00 -04:00
Grégoire Henry
0d8990887c
Jbuilder: fix the target @runtest_indent
2018-05-26 20:08:03 +02:00
michael
3f1363b9ba
P2P/Shell: Split metadata into peer_metadata and conn_metadata
...
Peer_metadata is meant to keep track of peer's score.
Conn_metadata is meant to keep track of connection configuration given
during Ack exchange.
2018-05-25 11:39:22 +02:00
Grégoire Henry
5023e1a261
Data_encoding: rename Binary.to_bytes
into to_bytes_exn
2018-05-24 15:43:15 +00:00
Vincent Bernardoff
b3df4e63c8
[P2P] ACLs: cosmetics, renamings, comments
2018-05-03 16:03:01 +02:00
Pietro
02838a4cbc
p2p,node,client: Add Greylists
...
- add admin commands to ban and unban ips and peers
- add greylist_timeout option to configuration file (node)
- Add greylist modules + RPC
2018-05-03 16:03:01 +02:00
Grégoire Henry
c9eab8689a
Shell/Distributed_db: tune requests delay
2018-05-03 11:51:29 +02:00
Grégoire Henry
f2db5ffde3
Shell/Bootstrap: improve network paralellism
2018-05-03 11:51:29 +02:00
Grégoire Henry
6e4b2eab47
Shell: reduce default logging a little bit
2018-05-03 11:51:29 +02:00
Grégoire Henry
c3eda23b45
Shell: add a global watcher for new valid blocks in State
2018-04-22 13:46:31 +02:00
Grégoire Henry
bc9179094f
Shell: store mainchain and testchain in State
2018-04-22 13:41:26 +02:00
Grégoire Henry
dbe4a20d4a
Reset the chain
2018-04-17 13:46:23 +02:00
Pietro
80cdf6d0b3
Shell: A bit of randomization for gap in block locators.
...
The random seed is computed from the sender and receiver `peer_id`.
2018-04-07 18:29:02 +02:00
Grégoire Henry
9ffead02d2
Shell: simplify hash signatures
2018-04-06 11:56:32 +02:00
Arthur B
21efb2dc9d
Jbuilder: update to beta.19.1
2018-04-06 11:47:22 +02:00
Grégoire Henry
bf32659a6b
Proto/Env: Replace configure_sandbox
by proper init
2018-04-06 11:40:34 +02:00
Grégoire Henry
38c7453edf
Shell/RPC: allow /blocks/<hash>~n/...
...
This allows to query the `n`-th predecessor of block `<hash>`.
2018-03-30 00:45:22 +02:00
Mathias Bourgoin
fcdf36acd4
Shell/RPC: remove the fake block /blocks/prevalidation
...
Add a `/mempool/pending_operations`
2018-03-30 00:44:58 +02:00
bruno
bdf6a5e564
General: update jbuilder to 1.0+beta19
2018-03-20 06:49:52 +01:00
Grégoire Henry
c5792cd7f0
Shell: remove outdated operation on new blocks
2018-03-20 06:49:52 +01:00
Benjamin Canou
dabf4c1578
Fix alphanet_constants.patch
and reset the chain
2018-03-18 18:36:56 +01:00
Grégoire Henry
5ac629f335
More renaming registred
-> registered
2018-03-16 18:38:41 +01:00
Grégoire Henry
4e9fd509b3
Proto: export the 'last_allowed_fork_level'.
...
The should ignore all branch forking at a block whose level
is lower than the 'last_allowed_fork_level' of the current head.
2018-03-15 21:48:16 +01:00
bruno
8713ae36f6
General: s/registred/registered/
2018-03-13 16:29:02 +00:00
Benjamin Canou
d00724ea13
Fix alphanet_constant.patch and reset the chain
2018-03-09 14:17:18 +01:00
Grégoire Henry
76a59af376
Opam: use jbuilder.1.0.0-beta18
2018-03-08 14:38:57 +01:00
Grégoire Henry
f926cfc0ac
Reset the chain
2018-03-08 07:08:24 +01:00
Grégoire Henry
cdeff6d3ca
Fix 'script/reset_chain.sh'
2018-03-08 07:07:59 +01:00
Grégoire Henry
5d99c7c0ae
Reset the chain
2018-03-07 18:39:23 +01:00
Grégoire Henry
ad330db7e1
Opam: require jbuilder = 1.0.0-beta17
2018-03-07 18:12:12 +01:00
Benjamin Canou
8a6deca8a0
Shell: simplify operation injecion error handling
2018-03-01 10:33:42 +01:00
Benjamin Canou
8eee1c7a9c
Node: cleanup logging of shell workers
2018-02-26 16:08:04 +01:00
Benjamin Canou
40a26759fc
Node: fix error handling in block validator
2018-02-26 16:08:04 +01:00
bruno
1171340a9f
Shell: move shell errors into shell services
...
Allows the client to display shell errors properly.
Also adds some missing registrations, documentation and comments.
2018-02-26 15:52:36 +01:00
Marco Stronati
d1c1ced970
Shell: added rpc to inspect context of a block
...
Added a block_service and corresponding handler in the node to perform
queries of the form '/blocks/<id>/raw_context/<path>?depth=<n>'
returning the sub-tree corresponding to <path> inside the context of
block <id>. The parameter <depth> controls the size of the tree,
default is 1.
2018-02-23 15:09:44 +00:00
Marco Stronati
f9ffb21e74
Node: removed duplicated export.
2018-02-23 15:09:43 +00:00
Grégoire Henry
697b291782
Merge `tezos-protocol-environment-{sigs,client}
2018-02-18 17:11:16 +00:00
Grégoire Henry
0e79a65158
Shell: rename Block_header.proto/data
into protocol_data
2018-02-18 17:11:13 +00:00
Grégoire Henry
6fa1283240
Shell: Rename net_id
into chain_id
2018-02-16 02:57:25 +01:00
bruno
227232e6c7
Shell: delete duplicated functor
2018-02-15 17:38:19 +01:00
Grégoire Henry
322fc1e353
RPC: move p2p services registration in tezos-p2p
2018-02-15 00:29:15 +01:00
Grégoire Henry
515765926f
Shell/test: minor fix in Test_locator
2018-02-13 13:25:49 +01:00
Grégoire Henry
77bd0af3d1
Shell/test: add option to not enforce context hash in block header
2018-02-12 16:59:59 +01:00
Grégoire Henry
e4cde4c196
Client: introduce an alternative context alpha's commands
2018-02-12 16:56:59 +01:00
Grégoire Henry
91143452e3
Proto/env: allow some Lwt
in the construction of rpc_context
2018-02-12 16:54:08 +01:00
Grégoire Henry
66c2a60530
Client refactor: use the error_monad for all RPC services
2018-02-12 16:54:08 +01:00
Grégoire Henry
a70a0788d3
Test: quick and dirty port to alcotest
2018-02-12 02:09:00 +01:00
Grégoire Henry
0e675c2d16
Client refactor: add calling function in Worker_services
2018-02-08 17:23:30 +01:00
Grégoire Henry
1858bdd852
Client refactor: Move Client_node_rpcs
into Shell_services
2018-02-08 17:23:30 +01:00
Grégoire Henry
21789be756
Client refactor: Move Client_node_rpcs.Protocols
into Protocols_services
2018-02-08 17:23:30 +01:00
Grégoire Henry
37e65d93e7
Client refactor: Move Client_node_rpcs.Network
into P2p_services
2018-02-08 17:23:30 +01:00
Grégoire Henry
02c2035e93
Client refactor: Move Client_node_rpcs.Block
into Block_services
2018-02-08 17:23:30 +01:00
Grégoire Henry
24c6f4ea98
Client refactor: Move Lwt_utils_unix.protect
into Error_monad
2018-02-08 17:23:30 +01:00
Grégoire Henry
8c58d7a610
Client refactor: Move non-unix part of Data_Encoding_Ezjsonm
into Data_Encoding.Json
2018-02-08 17:23:30 +01:00
Grégoire Henry
154b932713
Client refactor: Remove usage of Lwt_unix
from Lwt_dropbox
2018-02-08 17:23:29 +01:00
Grégoire Henry
8f7f205031
Client refactor: Remove usage of Lwt_unix
from Lwt_pipe
2018-02-08 17:23:29 +01:00
Grégoire Henry
f61eed1a67
Client refactor: move part of Lwt_utils
in Lwt_utils_unix
2018-02-08 17:23:29 +01:00
Grégoire Henry
f22b3576d2
Client refactor: simpler dependencies in tezos-crypto
2018-02-08 17:23:29 +01:00
Marco Stronati
3ca9a081f9
Locator: added extended test with benchmark
2018-02-08 15:18:11 +00:00
Marco Stronati
d05dceb0b0
State: export predecessor_n
2018-02-08 15:18:10 +00:00
Marco Stronati
f8e69ac8f5
Locator: added test for size 0 and size larger than chain
2018-02-08 15:18:09 +00:00
Marco Stronati
0890034575
State: removed old linear predecessor
2018-02-08 15:18:09 +00:00
Marco Stronati
f62ce16e5c
Locator: rewrote compute to use efficient predecessor from state
2018-02-08 15:18:09 +00:00
Marco Stronati
95a4ede273
State: added function to get predecessor at any distance
2018-02-08 15:18:08 +00:00
Marco Stronati
738310df62
State: added a function to populate the predecessors storage
2018-02-08 15:18:08 +00:00
Grégoire Henry
acffadafae
Jbuilder: fix warning
2018-02-07 11:16:39 +01:00
Grégoire Henry
575e367026
Update copyright notice (2018)
2018-02-05 23:34:05 +01:00
Grégoire Henry
e28219ad60
Opam: update to jbuilder.1.0+beta17
2018-02-05 23:34:05 +01:00
Grégoire Henry
971c3c4b21
Refactor: move Registred_protocol
from State
to Tezos_updater
2018-02-05 23:34:05 +01:00
Grégoire Henry
2498da2815
Protocol_environment: more sharing between node and client
2018-02-05 23:34:05 +01:00
Grégoire Henry
dffa65f648
Test: add test dependencies into *.opam
and fix .gitlab-ci.yml
2018-02-05 23:34:05 +01:00
Grégoire Henry
4d5e55595b
Test: split test/shell
into src/lib_{storage,shell}
2018-02-05 23:34:05 +01:00
Grégoire Henry
a1122f2083
Baking: handle validation passes
2018-02-02 11:56:57 +01:00
Grégoire Henry
09a7e98f9d
Shell: enforce the allowed passes
of an operation
2018-02-02 11:56:57 +01:00
Grégoire Henry
ae3ff0503b
Proto: the number of validation is now a protocol constant
2018-02-02 10:27:58 +01:00
Grégoire Henry
de80f0150b
Compiler: allow bytecode compilation
2018-01-31 14:45:32 +00:00
Grégoire Henry
0c2acd2d48
RPC: simplify Worker.EVENT
2018-01-30 10:13:40 +01:00
Grégoire Henry
1d5b4c1e3b
Refactor: merge lib_p2p_services
into lib_shell_services
...
Also split the module `Shell_services` in smaller modules.
2018-01-30 10:13:40 +01:00
Grégoire Henry
7277c9889b
Refactor: Move/split P2p_types
into lib_base
2018-01-30 10:13:40 +01:00
Grégoire Henry
96e493006c
Refactor: Rename lib_node_updater
-> lib_protocol_updater
2018-01-30 10:13:40 +01:00
Grégoire Henry
96fe5239c9
Refactor: Rename lib_node_shell
-> lib_shell
2018-01-30 10:13:40 +01:00