2018-01-16 01:09:25 +04:00
|
|
|
(**************************************************************************)
|
|
|
|
(* *)
|
|
|
|
(* Copyright (c) 2014 - 2016. *)
|
|
|
|
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
|
|
|
|
(* *)
|
|
|
|
(* All rights reserved. No warranty, explicit or implicit, provided. *)
|
|
|
|
(* *)
|
|
|
|
(**************************************************************************)
|
|
|
|
|
|
|
|
open Tezos_shell
|
|
|
|
|
|
|
|
exception Unknown_protocol
|
|
|
|
|
|
|
|
let no_ops_hash =
|
|
|
|
Operation_list_list_hash.compute
|
|
|
|
[Operation_list_hash.empty]
|
|
|
|
|
|
|
|
|
2018-02-05 22:40:16 +04:00
|
|
|
let get_protocol hash : (module Registred_protocol.T) =
|
|
|
|
let (module Protocol): (module Registred_protocol.T) =
|
2018-01-16 01:09:25 +04:00
|
|
|
Option.unopt_exn
|
|
|
|
Unknown_protocol
|
2018-02-05 22:40:16 +04:00
|
|
|
@@ Registred_protocol.get hash
|
2018-01-16 01:09:25 +04:00
|
|
|
in
|
|
|
|
(module Protocol)
|
|
|
|
|
|
|
|
|
|
|
|
let get_shell_header head =
|
|
|
|
let shell_header : Operation.shell_header = {
|
|
|
|
branch = State.Block.hash head
|
|
|
|
} in
|
|
|
|
shell_header
|
|
|
|
|
|
|
|
|
|
|
|
let get_block_header pred operations_hash fitness context timestamp =
|
|
|
|
let pred_header = State.Block.header pred in
|
|
|
|
let pred_hash = State.Block.hash pred in
|
|
|
|
let shell_header : Block_header.shell_header = {
|
|
|
|
level = Int32.succ pred_header.shell.level ;
|
|
|
|
proto_level = 0 ;
|
|
|
|
predecessor = pred_hash ;
|
|
|
|
timestamp ;
|
|
|
|
validation_passes = 1 ;
|
|
|
|
operations_hash ;
|
|
|
|
context ;
|
|
|
|
fitness
|
|
|
|
} in
|
|
|
|
shell_header
|
|
|
|
|
|
|
|
|
|
|
|
let find_account accounts hpub =
|
|
|
|
let hpub_pred (x : Helpers_account.t) =
|
|
|
|
Ed25519.Public_key_hash.equal x.hpub hpub in
|
|
|
|
List.find hpub_pred accounts
|
|
|
|
|
|
|
|
|
|
|
|
let get_dummy_tezos_context context =
|
|
|
|
Proto_alpha.Tezos_context.init
|
|
|
|
context
|
|
|
|
~level: Int32.one
|
|
|
|
~timestamp:(Time.now ())
|
|
|
|
~fitness:([])
|
|
|
|
|
|
|
|
|
|
|
|
let read_file path =
|
|
|
|
let (//) = Filename.concat in
|
|
|
|
let executable_path = Sys.getcwd () in
|
|
|
|
let path =
|
|
|
|
if Filename.is_relative path
|
|
|
|
then executable_path // path
|
|
|
|
else path
|
|
|
|
in
|
|
|
|
let ic = open_in path in
|
|
|
|
let n = in_channel_length ic in
|
|
|
|
let s = Bytes.create n in
|
|
|
|
really_input ic s 0 n ;
|
|
|
|
close_in ic ;
|
|
|
|
(Bytes.to_string s)
|