Commit Graph

227 Commits

Author SHA1 Message Date
Victor Allombert
60a6b76229 RPC: add a hash+N and a hash-N notations 2018-10-24 21:41:08 +00:00
Victor Allombert
2352a78301 RPC: add a way to access a given block using its level 2018-10-24 21:41:08 +00:00
Vincent Botbol
bb6983590f
Shell: fix notification of new operations in the mempool 2018-10-24 18:02:38 +02:00
Mathias Bourgoin
1272b11ea2
Shell: first batch of statistics in the DistributedDB
Co-authored-by: Pietro Abate <pietro.abate@tezcore.com>
Co-authored-by: Mathias Bourgoin <mathias.bourgoin@tezcore.com>
2018-10-24 11:48:12 +02:00
Victor Allombert
ee640c8653
Shell: Extract the block-application function into a separate module 2018-10-24 10:51:33 +02:00
Raphaël Proust
7cbfcfa608
Shell: simplify the signature of Prevalidation
Co-authored-by: Raphaël Proust <code@bnwr.net>
Co-authored-by: Pietro Abate <pietro.abate@tezcore.com>
Co-authored-by: Grégoire Henry <gregoire@tezcore.com>
2018-10-22 14:46:37 +02:00
Raphaël Proust
bd116f3db7
Prevalidator: move Prevalidation RPCs in Prevalidator 2018-10-17 17:06:08 +08:00
Grégoire Henry
45a07d534f
Shell: fix error messages 2018-10-17 17:02:05 +08:00
Raphaël Proust
c4e65879fc
Prevalidator/Prevalidation: move existential
Note that now, the chain_validator is responsible for swapping the
prevalidator when a new protocol arrives.

Co-authored-by: Raphaël Proust <code@bnwr.net>
Co-authored-by: Pietro Abate <pietro.abate@tezcore.com>
Co-authored-by: Grégoire Henry <gregoire.henry@tezos.com>
2018-10-17 17:01:44 +08:00
Raphaël Proust
129caccf4e
Shell/worker: export functor result signature 2018-10-17 10:32:37 +02:00
Pietro Abate
c87b6c533d
Prevalidator: Add doc string to prevalidator/ion. 2018-08-30 16:24:17 +02:00
Thomas Blanc
952dacac82 Adding Block.Header module to State, letting Chain_traversal.live_blocks use that module 2018-08-29 18:26:40 +00:00
Thomas Blanc
c723869f65 Getting the block_header out of contents in Store (no change in State interface) 2018-08-29 18:26:40 +00:00
Vincent Botbol
9f5a521188
Shell: preapply should hash instead of commit 2018-08-29 11:03:56 +02:00
Pierre Boutillier
b5fc7f582e
Update license in opam files 2018-08-22 14:50:13 +02:00
Vincent Botbol
94451e1e62
Fix style 2018-08-20 11:04:55 +02:00
Vincent Botbol
e5b2927310
Shell/Prevalidation: add the streaming of the newly validated operations 2018-08-20 11:04:54 +02:00
Grégoire Henry
87e0de9826 Dune: use the new syntax 2018-08-01 10:52:24 +02:00
Grégoire Henry
5362b321d9 Dune: rename s/jbuild/dune/ 2018-08-01 10:32:12 +02:00
Pietro
b89682e441 Build: Jbuilder -> Dune 1.0.1 2018-07-24 19:15:04 +02:00
Grégoire Henry
f9dd92d6b4 Shell/RPC: fix filtering of next_protocols in GET /monitor/heads 2018-07-18 22:34:13 +02:00
Grégoire Henry
122a2421a6 Client/Test: fix sandbox detection 2018-07-17 13:51:53 +02:00
Vincent Bernardoff
41f6757ef8 Everywhere: exception Not_found -> _opt 2018-07-13 01:31:04 +02:00
Grégoire Henry
359f858c3e
CI: fix opam dependencies 2018-07-11 23:27:04 +02:00
Vincent Botbol
6909f0b3bc
Shell: benchmark for the context storage
Co-authored-by: Quyen <kim.quyen.ly@tezos.com>
Co-authored-by: Grégoire Henry <gregoire.henry@tezos.com>
Signed-off-by: Grégoire Henry <gregoire.henry@tezos.com>
2018-07-11 21:02:14 +02:00
Benjamin Canou
74732d7711 Sync with betanet 2018-07-02 10:53:20 +02:00
Pierre Boutillier
140bd6b1ca Tezos is now Open Source 2018-06-30 17:41:32 +02:00
Vincent Botbol
c479c65cdf Shell: add rpc to retrieve live blocks 2018-06-30 04:43:16 +02:00
Benjamin Canou
79b4767370 RPCs: better errors when querying out of bound operations 2018-06-30 01:40:33 +02:00
Vincent Botbol
d8805ede7b Shell: comment typo 2018-06-29 17:50:17 +02:00
dbornside
e7dba18980 semantic logging for client baking
AMENDED: Syn has always been DSL, Semantic has always been
Make_semantic.
2018-06-29 14:52:46 +02:00
Benjamin Canou
f6606c5f2b Shell: add some temporary message limits 2018-06-28 19:39:35 +00:00
Pierre Boutillier
f99789b255 Shell: Fix block_*_cache initialization 2018-06-28 19:39:35 +00:00
Benjamin Canou
44ca820944 Genesis/Alpha: include chain id in signature for blocks and endorsements 2018-06-27 21:38:52 +02:00
Raphaël Proust
1c2a771832 Everywhere: return_{none,some,nil,true,false} 2018-06-27 10:57:21 +02:00
Raphaël Proust
103d5355f2 Everywhere: return_unit 2018-06-27 10:57:21 +02:00
Pierre Chambart
7fcd986b93 Shell: Avoid recomputing rpc_directory for each flush 2018-06-27 10:54:41 +02:00
Pierre Chambart
892c91e3ac Fix some more logging name leak
The section list is only useful for functor instantiated before command
line argument parsing.
2018-06-27 02:06:09 +02:00
Pierre Chambart
dcc0f7011d Shell: Fix Logging names leak 2018-06-27 01:35:55 +02:00
Pierre Chambart
3dd4d61b71 Shell: indentation 2018-06-26 20:37:11 +02:00
Pierre Chambart
3da1e56133 Shell: Avoid leak in distributed_db_functor worker loop 2018-06-26 20:35:03 +02:00
Chris Martin
2f4c002acf Fix "bootstrapping" typos 2018-06-25 15:15:19 +02:00
Benjamin Canou
bba88743df Shell: fix checkpoint checks in bootstrap pipeline 2018-06-24 01:25:09 +02:00
Pierre Chambart
47039ba9d1 Shell: fix merge problem in test 2018-06-19 12:15:27 +00:00
Pierre Chambart
8370b8fd69 Shell: Simplify early failure in case of locator incompatible with the checkpoint 2018-06-19 12:15:27 +00:00
Pierre Chambart
a7ef80fa34 Shell: Time error printing with more details 2018-06-19 12:15:27 +00:00
Pierre Chambart
2aeba212a7 Shell: Quick and dirty allowance of time shift
The right solution being to wait for the messages to be valid.
2018-06-19 12:15:27 +00:00
Grégoire Henry
fc0af4a55f Shell: add option --checkpoint to tezos-node run 2018-06-19 12:15:27 +00:00
Grégoire Henry
c16129a02d Shell: early detection of branches that forks before the checkpoint. 2018-06-19 12:15:27 +00:00
Grégoire Henry
6170ae2246 Shell: early detection of incompatible new heads and branches. 2018-06-19 12:15:27 +00:00
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