Proto: move back max_operation_data_length as a constants

This commit is contained in:
Grégoire Henry 2018-06-02 14:58:08 +02:00 committed by Benjamin Canou
parent 39ca91cd57
commit a5cec8fca0
25 changed files with 64 additions and 87 deletions

View File

@ -36,6 +36,7 @@ type operation = {
} }
let max_block_length = 42 let max_block_length = 42
let max_operation_data_length = 42
let validation_passes = [] let validation_passes = []
let acceptable_passes _op = [] let acceptable_passes _op = []
@ -80,7 +81,8 @@ end
let precheck_block let precheck_block
~ancestor_context:_ ~ancestor_context:_
~ancestor_timestamp:_ ~ancestor_timestamp:_
(_raw_block : block_header) = (raw_block: block_header) =
Fitness.to_int64 raw_block.shell.fitness >>=? fun _ ->
return () return ()
let begin_application let begin_application
@ -111,8 +113,7 @@ let finalize_block ctxt =
let message = Some (Format.asprintf "fitness <- %Ld" fitness) in let message = Some (Format.asprintf "fitness <- %Ld" fitness) in
let fitness = Fitness.from_int64 fitness in let fitness = Fitness.from_int64 fitness in
return ({ Updater.message ; context = ctxt.context ; fitness ; return ({ Updater.message ; context = ctxt.context ; fitness ;
max_operations_ttl = 0 ; max_operation_data_length = 0 ; max_operations_ttl = 0 ; last_allowed_fork_level = 0l ;
last_allowed_fork_level = 0l ;
}, ()) }, ())
let rpc_services = RPC_directory.empty let rpc_services = RPC_directory.empty
@ -121,6 +122,5 @@ let init ctxt block_header =
let fitness = block_header.Block_header.fitness in let fitness = block_header.Block_header.fitness in
let message = None in let message = None in
return { Updater.message ; context = ctxt ; fitness ; return { Updater.message ; context = ctxt ; fitness ;
max_operations_ttl = 0 ; max_operation_data_length = 0 ; max_operations_ttl = 0 ; last_allowed_fork_level = 0l ;
last_allowed_fork_level = 0l ;
} }

View File

@ -0,0 +1,10 @@
(**************************************************************************)
(* *)
(* Copyright (c) 2014 - 2018. *)
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
(* *)
(* All rights reserved. No warranty, explicit or implicit, provided. *)
(* *)
(**************************************************************************)
include Updater.PROTOCOL

View File

@ -31,7 +31,7 @@ done
sleep 2 sleep 2
# autogenerated from the demo source # autogenerated from the demo source
protocol_version="PsgZ1PB2h82sTKznNbmZxtbsU432eKDv1W6cf1cJFhCFmGYSiJs" protocol_version="PrqKneMJTqCkD5bXFb4w3nidsW9kem1DjmmchwFTHqztK7V3QRq"
$admin_client inject protocol "$test_dir/demo" $admin_client inject protocol "$test_dir/demo"
$admin_client list protocols $admin_client list protocols

View File

@ -24,9 +24,6 @@ type validation_result = {
(** An optional informative message to be used as in the 'git (** An optional informative message to be used as in the 'git
commit' of the block's context. *) commit' of the block's context. *)
max_operation_data_length: int ;
(** The maximum size of operations in bytes. *)
max_operations_ttl: int ; max_operations_ttl: int ;
(** The "time-to-live" of operation for the next block: any (** The "time-to-live" of operation for the next block: any
operations whose 'branch' is older than 'ttl' blocks in the operations whose 'branch' is older than 'ttl' blocks in the
@ -58,9 +55,12 @@ type rpc_context = {
access to the standard library and the Environment module. *) access to the standard library and the Environment module. *)
module type PROTOCOL = sig module type PROTOCOL = sig
(** The maximum size of block headers in bytes. *) (** The maximum size of a block header in bytes. *)
val max_block_length: int val max_block_length: int
(** The maximum size of an operation in bytes. *)
val max_operation_data_length: int
(** The number of validation passes (length of the list) and the (** The number of validation passes (length of the list) and the
operation's quota for each pass. *) operation's quota for each pass. *)
val validation_passes: quota list val validation_passes: quota list

View File

@ -35,7 +35,6 @@ module Make (Context : CONTEXT) = struct
context: Context.t ; context: Context.t ;
fitness: Fitness.t ; fitness: Fitness.t ;
message: string option ; message: string option ;
max_operation_data_length: int ;
max_operations_ttl: int ; max_operations_ttl: int ;
last_allowed_fork_level: Int32.t ; last_allowed_fork_level: Int32.t ;
} }
@ -58,6 +57,7 @@ module Make (Context : CONTEXT) = struct
type rpc_context type rpc_context
type 'a tzresult type 'a tzresult
val max_block_length: int val max_block_length: int
val max_operation_data_length: int
val validation_passes: quota list val validation_passes: quota list
type block_header_data type block_header_data
val block_header_data_encoding: block_header_data Data_encoding.t val block_header_data_encoding: block_header_data Data_encoding.t
@ -578,7 +578,6 @@ module Make (Context : CONTEXT) = struct
context: Context.t ; context: Context.t ;
fitness: Fitness.t ; fitness: Fitness.t ;
message: string option ; message: string option ;
max_operation_data_length: int ;
max_operations_ttl: int ; max_operations_ttl: int ;
last_allowed_fork_level: Int32.t ; last_allowed_fork_level: Int32.t ;
} }

View File

@ -28,7 +28,6 @@ module Make (Context : CONTEXT) : sig
context: Context.t ; context: Context.t ;
fitness: Fitness.t ; fitness: Fitness.t ;
message: string option ; message: string option ;
max_operation_data_length: int ;
max_operations_ttl: int ; max_operations_ttl: int ;
last_allowed_fork_level: Int32.t ; last_allowed_fork_level: Int32.t ;
} }
@ -51,6 +50,7 @@ module Make (Context : CONTEXT) : sig
type rpc_context type rpc_context
type 'a tzresult type 'a tzresult
val max_block_length: int val max_block_length: int
val max_operation_data_length: int
val validation_passes: quota list val validation_passes: quota list
type block_header_data type block_header_data
val block_header_data_encoding: block_header_data Data_encoding.t val block_header_data_encoding: block_header_data Data_encoding.t

View File

@ -98,7 +98,7 @@ let build_raw_rpc_directory
Block_services.protocol_data ; Block_services.protocol_data ;
test_chain_status ; test_chain_status ;
max_operations_ttl = State.Block.max_operations_ttl block ; max_operations_ttl = State.Block.max_operations_ttl block ;
max_operation_data_length = State.Block.max_operation_data_length block ; max_operation_data_length = Next_proto.max_operation_data_length ;
max_block_header_length = Next_proto.max_block_length ; max_block_header_length = Next_proto.max_block_length ;
operation_list_quota = operation_list_quota =
List.map List.map

View File

@ -129,15 +129,14 @@ let apply_block
invalid_block hash @@ invalid_block hash @@
Too_many_operations Too_many_operations
{ pass = i + 1 ; found = List.length ops ; max }) >>=? fun () -> { pass = i + 1 ; found = List.length ops ; max }) >>=? fun () ->
let max_size = State.Block.max_operation_data_length pred in
iter_p (fun op -> iter_p (fun op ->
let size = Data_encoding.Binary.length Operation.encoding op in let size = Data_encoding.Binary.length Operation.encoding op in
fail_unless fail_unless
(size <= max_size) (size <= Proto.max_operation_data_length)
(invalid_block hash @@ (invalid_block hash @@
Oversized_operation Oversized_operation
{ operation = Operation.hash op ; { operation = Operation.hash op ;
size ; max = max_size })) ops >>=? fun () -> size ; max = Proto.max_operation_data_length })) ops >>=? fun () ->
return ()) return ())
operations Proto.validation_passes >>=? fun () -> operations Proto.validation_passes >>=? fun () ->
let operation_hashes = List.map (List.map Operation.hash) operations in let operation_hashes = List.map (List.map Operation.hash) operations in

View File

@ -49,8 +49,7 @@ let rec apply_operations apply_operation state r max_ops ~sort ops =
type prevalidation_state = type prevalidation_state =
State : { proto : 'a proto ; state : 'a ; State : { proto : 'a proto ; state : 'a ;
max_number_of_operations : int ; max_number_of_operations : int }
max_operation_data_length : int }
-> prevalidation_state -> prevalidation_state
and 'a proto = and 'a proto =
@ -64,8 +63,6 @@ let start_prevalidation
timestamp = predecessor_timestamp ; timestamp = predecessor_timestamp ;
level = predecessor_level } } = level = predecessor_level } } =
State.Block.header predecessor in State.Block.header predecessor in
let max_operation_data_length =
State.Block.max_operation_data_length predecessor in
State.Block.context predecessor >>= fun predecessor_context -> State.Block.context predecessor >>= fun predecessor_context ->
Context.get_protocol predecessor_context >>= fun protocol -> Context.get_protocol predecessor_context >>= fun protocol ->
let predecessor = State.Block.hash predecessor in let predecessor = State.Block.hash predecessor in
@ -107,12 +104,12 @@ let start_prevalidation
(* FIXME arbitrary value, to be customisable *) (* FIXME arbitrary value, to be customisable *)
let max_number_of_operations = 1000 in let max_number_of_operations = 1000 in
return (State { proto = (module Proto) ; state ; return (State { proto = (module Proto) ; state ;
max_number_of_operations ; max_operation_data_length }) max_number_of_operations })
let prevalidate let prevalidate
(State { proto = (module Proto) ; state ; (State { proto = (module Proto) ; state ;
max_number_of_operations ; max_operation_data_length }) max_number_of_operations })
~sort (ops : (Operation_hash.t * Operation.t) list)= ~sort (ops : (Operation_hash.t * Operation.t) list)=
let ops = let ops =
List.map List.map
@ -145,8 +142,8 @@ let prevalidate
let size = Data_encoding.Binary.length Operation.encoding op in let size = Data_encoding.Binary.length Operation.encoding op in
if max_ops <= 0 then if max_ops <= 0 then
fail Too_many_operations fail Too_many_operations
else if size > max_operation_data_length then else if size > Proto.max_operation_data_length then
fail (Oversized_operation { size ; max = max_operation_data_length }) fail (Oversized_operation { size ; max = Proto.max_operation_data_length })
else else
Proto.apply_operation state parse_op >>=? fun (state, receipt) -> Proto.apply_operation state parse_op >>=? fun (state, receipt) ->
return (state, receipt) in return (state, receipt) in
@ -162,7 +159,7 @@ let prevalidate
(fun map (h, op, err) -> Operation_hash.Map.add h (op, err) map) (fun map (h, op, err) -> Operation_hash.Map.add h (op, err) map)
r.branch_refused invalid_ops } in r.branch_refused invalid_ops } in
Lwt.return (State { proto = (module Proto) ; state ; Lwt.return (State { proto = (module Proto) ; state ;
max_number_of_operations ; max_operation_data_length }, max_number_of_operations },
r) r)
let end_prevalidation (State { proto = (module Proto) ; state }) = let end_prevalidation (State { proto = (module Proto) ; state }) =

View File

@ -221,9 +221,8 @@ module Locked_block = struct
let header : Block_header.t = { shell ; protocol_data = MBytes.create 0 } in let header : Block_header.t = { shell ; protocol_data = MBytes.create 0 } in
Store.Block.Contents.store (store, genesis.block) Store.Block.Contents.store (store, genesis.block)
{ Store.Block.header ; message = Some "Genesis" ; { Store.Block.header ; message = Some "Genesis" ;
max_operations_ttl = 0 ; context ; max_operations_ttl = 0 ;
max_operation_data_length = 0 ; context ; metadata = MBytes.create 0 ;
metadata = MBytes.create 0 ;
} >>= fun () -> } >>= fun () ->
Lwt.return header Lwt.return header
@ -443,8 +442,6 @@ module Block = struct
let message { contents = { message } } = message let message { contents = { message } } = message
let max_operations_ttl { contents = { max_operations_ttl } } = let max_operations_ttl { contents = { max_operations_ttl } } =
max_operations_ttl max_operations_ttl
let max_operation_data_length { contents = { max_operation_data_length } } =
max_operation_data_length
let is_genesis b = Block_hash.equal b.hash b.chain_state.genesis.block let is_genesis b = Block_hash.equal b.hash b.chain_state.genesis.block
@ -543,7 +540,7 @@ module Block = struct
chain_state block_header block_header_metadata chain_state block_header block_header_metadata
operations operations_metadata operations operations_metadata
{ Tezos_protocol_environment_shell.context ; message ; { Tezos_protocol_environment_shell.context ; message ;
max_operations_ttl ; max_operation_data_length } = max_operations_ttl } =
let bytes = Block_header.to_bytes block_header in let bytes = Block_header.to_bytes block_header in
let hash = Block_header.hash_raw bytes in let hash = Block_header.hash_raw bytes in
fail_unless fail_unless
@ -580,7 +577,6 @@ module Block = struct
block_header ; block_header ;
message ; message ;
max_operations_ttl ; max_operations_ttl ;
max_operation_data_length ;
context = commit ; context = commit ;
metadata = block_header_metadata ; metadata = block_header_metadata ;
} in } in

View File

@ -119,7 +119,6 @@ module Block : sig
val level: t -> Int32.t val level: t -> Int32.t
val message: t -> string option val message: t -> string option
val max_operations_ttl: t -> int val max_operations_ttl: t -> int
val max_operation_data_length: t -> int
val metadata: t -> MBytes.t val metadata: t -> MBytes.t
val is_genesis: t -> bool val is_genesis: t -> bool

View File

@ -84,7 +84,6 @@ module Block = struct
header: Block_header.t ; header: Block_header.t ;
message: string option ; message: string option ;
max_operations_ttl: int ; max_operations_ttl: int ;
max_operation_data_length: int;
context: Context_hash.t ; context: Context_hash.t ;
metadata: MBytes.t ; metadata: MBytes.t ;
} }
@ -99,18 +98,16 @@ module Block = struct
let open Data_encoding in let open Data_encoding in
conv conv
(fun { header ; message ; max_operations_ttl ; (fun { header ; message ; max_operations_ttl ;
max_operation_data_length ; context ; metadata } -> context ; metadata } ->
(message, max_operations_ttl, (message, max_operations_ttl,
max_operation_data_length, context, metadata, header )) context, metadata, header ))
(fun (message, max_operations_ttl, (fun (message, max_operations_ttl,
max_operation_data_length, context, metadata, header ) -> context, metadata, header ) ->
{ header ; message ; max_operations_ttl ; { header ; message ; max_operations_ttl ;
max_operation_data_length ;
context ; metadata }) context ; metadata })
(obj6 (obj5
(opt "message" string) (opt "message" string)
(req "max_operations_ttl" uint16) (req "max_operations_ttl" uint16)
(req "max_operation_data_length" uint16)
(req "context" Context_hash.encoding) (req "context" Context_hash.encoding)
(req "metadata" bytes) (req "metadata" bytes)
(req "header" Block_header.encoding)) (req "header" Block_header.encoding))

View File

@ -88,7 +88,6 @@ module Block : sig
header: Block_header.t ; header: Block_header.t ;
message: string option ; message: string option ;
max_operations_ttl: int ; max_operations_ttl: int ;
max_operation_data_length: int;
context: Context_hash.t ; context: Context_hash.t ;
metadata: MBytes.t ; metadata: MBytes.t ;
} }

View File

@ -96,7 +96,6 @@ let make_empty_chain (chain:State.Chain.t) n : Block_hash.t Lwt.t =
context = empty_context ; context = empty_context ;
fitness = [] ; fitness = [] ;
message = None ; message = None ;
max_operation_data_length = 0 ;
max_operations_ttl = 0 ; max_operations_ttl = 0 ;
last_allowed_fork_level = 0l ; last_allowed_fork_level = 0l ;
} in } in

View File

@ -89,7 +89,6 @@ let lolblock ?(operations = []) header =
max_operations_ttl = 0 ; max_operations_ttl = 0 ;
message = None ; message = None ;
context = Context_hash.zero ; context = Context_hash.zero ;
max_operation_data_length = 0 ;
} }
let b1 = lolblock "Blop !" let b1 = lolblock "Blop !"

View File

@ -129,9 +129,7 @@ let prepare = Init_storage.prepare
let finalize ?commit_message:message c = let finalize ?commit_message:message c =
let fitness = Fitness.from_int64 (Fitness.current c) in let fitness = Fitness.from_int64 (Fitness.current c) in
let context = Raw_context.recover c in let context = Raw_context.recover c in
let constants = Raw_context.constants c in
{ Updater.context ; fitness ; message ; max_operations_ttl = 60 ; { Updater.context ; fitness ; message ; max_operations_ttl = 60 ;
max_operation_data_length = constants.max_operation_data_length ;
last_allowed_fork_level = last_allowed_fork_level =
Raw_level.to_int32 @@ Level.last_allowed_fork_level c; Raw_level.to_int32 @@ Level.last_allowed_fork_level c;
} }

View File

@ -300,6 +300,7 @@ module Constants : sig
proof_of_work_nonce_size : int ; proof_of_work_nonce_size : int ;
nonce_length : int ; nonce_length : int ;
max_revelations_per_block : int ; max_revelations_per_block : int ;
max_operation_data_length : int ;
} }
val fixed_encoding: fixed Data_encoding.t val fixed_encoding: fixed Data_encoding.t
val fixed: fixed val fixed: fixed
@ -307,7 +308,7 @@ module Constants : sig
val proof_of_work_nonce_size: int val proof_of_work_nonce_size: int
val nonce_length: int val nonce_length: int
val max_revelations_per_block: int val max_revelations_per_block: int
val max_operation_data_length: int
(** Constants parameterized by context *) (** Constants parameterized by context *)
type parametric = { type parametric = {
@ -322,7 +323,6 @@ module Constants : sig
hard_gas_limit_per_block: Z.t ; hard_gas_limit_per_block: Z.t ;
proof_of_work_threshold: int64 ; proof_of_work_threshold: int64 ;
dictator_pubkey: Signature.Public_key.t ; dictator_pubkey: Signature.Public_key.t ;
max_operation_data_length: int ;
tokens_per_roll: Tez.t ; tokens_per_roll: Tez.t ;
michelson_maximum_type_size: int; michelson_maximum_type_size: int;
seed_nonce_revelation_tip: Tez.t ; seed_nonce_revelation_tip: Tez.t ;
@ -351,7 +351,6 @@ module Constants : sig
val hard_storage_limit_per_block: context -> Int64.t val hard_storage_limit_per_block: context -> Int64.t
val proof_of_work_threshold: context -> int64 val proof_of_work_threshold: context -> int64
val dictator_pubkey: context -> Signature.Public_key.t val dictator_pubkey: context -> Signature.Public_key.t
val max_operation_data_length: context -> int
val tokens_per_roll: context -> Tez.t val tokens_per_roll: context -> Tez.t
val michelson_maximum_type_size: context -> int val michelson_maximum_type_size: context -> int
val block_reward: context -> Tez.t val block_reward: context -> Tez.t

View File

@ -11,11 +11,13 @@ let version_number = "\000"
let proof_of_work_nonce_size = 8 let proof_of_work_nonce_size = 8
let nonce_length = 32 let nonce_length = 32
let max_revelations_per_block = 32 let max_revelations_per_block = 32
let max_operation_data_length = 16 * 1024 ; (* 16kB *)
type fixed = { type fixed = {
proof_of_work_nonce_size : int ; proof_of_work_nonce_size : int ;
nonce_length : int ; nonce_length : int ;
max_revelations_per_block : int ; max_revelations_per_block : int ;
max_operation_data_length : int ;
} }
let fixed_encoding = let fixed_encoding =
@ -24,23 +26,28 @@ let fixed_encoding =
(fun c -> (fun c ->
(c.proof_of_work_nonce_size, (c.proof_of_work_nonce_size,
c.nonce_length, c.nonce_length,
c.max_revelations_per_block )) c.max_revelations_per_block,
c.max_operation_data_length))
(fun (proof_of_work_nonce_size, (fun (proof_of_work_nonce_size,
nonce_length, nonce_length,
max_revelations_per_block ) -> max_revelations_per_block,
max_operation_data_length) ->
{ proof_of_work_nonce_size ; { proof_of_work_nonce_size ;
nonce_length ; nonce_length ;
max_revelations_per_block ; max_revelations_per_block ;
max_operation_data_length ;
} ) } )
(obj3 (obj4
(req "proof_of_work_nonce_size" uint8) (req "proof_of_work_nonce_size" uint8)
(req "nonce_length" uint8) (req "nonce_length" uint8)
(req "max_revelations_per_block" uint8)) (req "max_revelations_per_block" uint8)
(req "max_operation_data_length" int31))
let fixed = { let fixed = {
proof_of_work_nonce_size ; proof_of_work_nonce_size ;
nonce_length ; nonce_length ;
max_revelations_per_block ; max_revelations_per_block ;
max_operation_data_length ;
} }
type parametric = { type parametric = {
@ -55,7 +62,6 @@ type parametric = {
hard_gas_limit_per_block: Z.t ; hard_gas_limit_per_block: Z.t ;
proof_of_work_threshold: int64 ; proof_of_work_threshold: int64 ;
dictator_pubkey: Signature.Public_key.t ; dictator_pubkey: Signature.Public_key.t ;
max_operation_data_length: int ;
tokens_per_roll: Tez_repr.t ; tokens_per_roll: Tez_repr.t ;
michelson_maximum_type_size: int; michelson_maximum_type_size: int;
seed_nonce_revelation_tip: Tez_repr.t ; seed_nonce_revelation_tip: Tez_repr.t ;
@ -85,8 +91,6 @@ let default = {
dictator_pubkey = dictator_pubkey =
Signature.Public_key.of_b58check_exn Signature.Public_key.of_b58check_exn
"edpkugeDwmwuwyyD3Q5enapgEYDxZLtEUFFSrvVwXASQMVEqsvTqWu" ; "edpkugeDwmwuwyyD3Q5enapgEYDxZLtEUFFSrvVwXASQMVEqsvTqWu" ;
max_operation_data_length =
16 * 1024 ; (* 16kB *)
tokens_per_roll = tokens_per_roll =
Tez_repr.(mul_exn one 10_000) ; Tez_repr.(mul_exn one 10_000) ;
michelson_maximum_type_size = 1000 ; michelson_maximum_type_size = 1000 ;
@ -122,7 +126,6 @@ let parametric_encoding =
c.hard_gas_limit_per_block), c.hard_gas_limit_per_block),
((c.proof_of_work_threshold, ((c.proof_of_work_threshold,
c.dictator_pubkey, c.dictator_pubkey,
c.max_operation_data_length,
c.tokens_per_roll, c.tokens_per_roll,
c.michelson_maximum_type_size, c.michelson_maximum_type_size,
c.seed_nonce_revelation_tip, c.seed_nonce_revelation_tip,
@ -145,7 +148,6 @@ let parametric_encoding =
hard_gas_limit_per_block), hard_gas_limit_per_block),
((proof_of_work_threshold, ((proof_of_work_threshold,
dictator_pubkey, dictator_pubkey,
max_operation_data_length,
tokens_per_roll, tokens_per_roll,
michelson_maximum_type_size, michelson_maximum_type_size,
seed_nonce_revelation_tip, seed_nonce_revelation_tip,
@ -168,7 +170,6 @@ let parametric_encoding =
hard_gas_limit_per_block ; hard_gas_limit_per_block ;
proof_of_work_threshold ; proof_of_work_threshold ;
dictator_pubkey ; dictator_pubkey ;
max_operation_data_length ;
tokens_per_roll ; tokens_per_roll ;
michelson_maximum_type_size ; michelson_maximum_type_size ;
seed_nonce_revelation_tip ; seed_nonce_revelation_tip ;
@ -193,10 +194,9 @@ let parametric_encoding =
(req "hard_gas_limit_per_operation" z) (req "hard_gas_limit_per_operation" z)
(req "hard_gas_limit_per_block" z)) (req "hard_gas_limit_per_block" z))
(merge_objs (merge_objs
(obj10 (obj9
(req "proof_of_work_threshold" int64) (req "proof_of_work_threshold" int64)
(req "dictator_pubkey" Signature.Public_key.encoding) (req "dictator_pubkey" Signature.Public_key.encoding)
(req "max_operation_data_length" int31)
(req "tokens_per_roll" Tez_repr.encoding) (req "tokens_per_roll" Tez_repr.encoding)
(req "michelson_maximum_type_size" uint16) (req "michelson_maximum_type_size" uint16)
(req "seed_nonce_revelation_tip" Tez_repr.encoding) (req "seed_nonce_revelation_tip" Tez_repr.encoding)

View File

@ -49,9 +49,6 @@ let proof_of_work_threshold c =
let dictator_pubkey c = let dictator_pubkey c =
let constants = Raw_context.constants c in let constants = Raw_context.constants c in
constants.dictator_pubkey constants.dictator_pubkey
let max_operation_data_length c =
let constants = Raw_context.constants c in
constants.max_operation_data_length
let tokens_per_roll c = let tokens_per_roll c =
let constants = Raw_context.constants c in let constants = Raw_context.constants c in
constants.tokens_per_roll constants.tokens_per_roll

View File

@ -43,6 +43,9 @@ let acceptable_passes = Alpha_context.Operation.acceptable_passes
let max_block_length = let max_block_length =
Alpha_context.Block_header.max_header_length Alpha_context.Block_header.max_header_length
let max_operation_data_length =
Alpha_context.Constants.max_operation_data_length
let validation_passes = let validation_passes =
Updater.[ { max_size = 32 * 1024 ; max_op = Some 32 } ; (* 32kB FIXME *) Updater.[ { max_size = 32 * 1024 ; max_op = Some 32 } ; (* 32kB FIXME *)
{ max_size = 32 * 1024 ; max_op = None } ; (* 32kB FIXME *) { max_size = 32 * 1024 ; max_op = None } ; (* 32kB FIXME *)

View File

@ -72,9 +72,6 @@ let constants_encoding =
and dictator_pubkey = and dictator_pubkey =
opt Signature.Public_key.(=) opt Signature.Public_key.(=)
default.dictator_pubkey c.dictator_pubkey default.dictator_pubkey c.dictator_pubkey
and max_operation_data_length =
opt Compare.Int.(=)
default.max_operation_data_length c.max_operation_data_length
and tokens_per_roll = and tokens_per_roll =
opt Tez_repr.(=) opt Tez_repr.(=)
default.tokens_per_roll c.tokens_per_roll default.tokens_per_roll c.tokens_per_roll
@ -120,7 +117,6 @@ let constants_encoding =
hard_gas_limit_per_block), hard_gas_limit_per_block),
((proof_of_work_threshold, ((proof_of_work_threshold,
dictator_pubkey, dictator_pubkey,
max_operation_data_length,
tokens_per_roll, tokens_per_roll,
michelson_maximum_type_size, michelson_maximum_type_size,
seed_nonce_revelation_tip, seed_nonce_revelation_tip,
@ -143,7 +139,6 @@ let constants_encoding =
hard_gas_limit_per_block), hard_gas_limit_per_block),
((proof_of_work_threshold, ((proof_of_work_threshold,
dictator_pubkey, dictator_pubkey,
max_operation_data_length,
tokens_per_roll, tokens_per_roll,
michelson_maximum_type_size, michelson_maximum_type_size,
seed_nonce_revelation_tip, seed_nonce_revelation_tip,
@ -180,8 +175,6 @@ let constants_encoding =
unopt default.proof_of_work_threshold proof_of_work_threshold ; unopt default.proof_of_work_threshold proof_of_work_threshold ;
dictator_pubkey = dictator_pubkey =
unopt default.dictator_pubkey dictator_pubkey ; unopt default.dictator_pubkey dictator_pubkey ;
max_operation_data_length =
unopt default.max_operation_data_length max_operation_data_length ;
tokens_per_roll = tokens_per_roll =
unopt default.tokens_per_roll tokens_per_roll ; unopt default.tokens_per_roll tokens_per_roll ;
michelson_maximum_type_size = michelson_maximum_type_size =
@ -217,10 +210,9 @@ let constants_encoding =
(opt "hard_gas_limit_per_operation" z) (opt "hard_gas_limit_per_operation" z)
(opt "hard_gas_limit_per_block" z)) (opt "hard_gas_limit_per_block" z))
(merge_objs (merge_objs
(obj10 (obj9
(opt "proof_of_work_threshold" int64) (opt "proof_of_work_threshold" int64)
(opt "dictator_pubkey" Signature.Public_key.encoding) (opt "dictator_pubkey" Signature.Public_key.encoding)
(opt "max_operation_data_length" int31)
(opt "tokens_per_roll" Tez_repr.encoding) (opt "tokens_per_roll" Tez_repr.encoding)
(opt "michelson_maximum_type_size" uint16) (opt "michelson_maximum_type_size" uint16)
(opt "seed_nonce_revelation_tip" Tez_repr.encoding) (opt "seed_nonce_revelation_tip" Tez_repr.encoding)

View File

@ -234,7 +234,6 @@ let genesis
?(hard_gas_limit_per_block = Constants_repr.default.hard_gas_limit_per_block) ?(hard_gas_limit_per_block = Constants_repr.default.hard_gas_limit_per_block)
?(proof_of_work_threshold = Int64.(neg one)) ?(proof_of_work_threshold = Int64.(neg one))
?(dictator_pubkey = Constants_repr.default.dictator_pubkey) ?(dictator_pubkey = Constants_repr.default.dictator_pubkey)
?(max_operation_data_length = Constants_repr.default.max_operation_data_length)
?(tokens_per_roll = Constants_repr.default.tokens_per_roll) ?(tokens_per_roll = Constants_repr.default.tokens_per_roll)
?(michelson_maximum_type_size = Constants_repr.default.michelson_maximum_type_size) ?(michelson_maximum_type_size = Constants_repr.default.michelson_maximum_type_size)
?(seed_nonce_revelation_tip = Constants_repr.default.seed_nonce_revelation_tip) ?(seed_nonce_revelation_tip = Constants_repr.default.seed_nonce_revelation_tip)
@ -280,7 +279,6 @@ let genesis
hard_gas_limit_per_block ; hard_gas_limit_per_block ;
proof_of_work_threshold ; proof_of_work_threshold ;
dictator_pubkey ; dictator_pubkey ;
max_operation_data_length ;
tokens_per_roll ; tokens_per_roll ;
michelson_maximum_type_size ; michelson_maximum_type_size ;
seed_nonce_revelation_tip ; seed_nonce_revelation_tip ;

View File

@ -72,7 +72,6 @@ val genesis:
?hard_gas_limit_per_block:Z.t -> ?hard_gas_limit_per_block:Z.t ->
?proof_of_work_threshold:int64 -> ?proof_of_work_threshold:int64 ->
?dictator_pubkey:public_key -> ?dictator_pubkey:public_key ->
?max_operation_data_length:int ->
?tokens_per_roll:Tez_repr.tez -> ?tokens_per_roll:Tez_repr.tez ->
?michelson_maximum_type_size:int -> ?michelson_maximum_type_size:int ->
?seed_nonce_revelation_tip:Tez_repr.tez -> ?seed_nonce_revelation_tip:Tez_repr.tez ->

View File

@ -38,6 +38,7 @@ type operation = {
} }
let max_block_length = 42 let max_block_length = 42
let max_operation_data_length = 0
let validation_passes = [] let validation_passes = []
let acceptable_passes _op = [] let acceptable_passes _op = []
@ -114,8 +115,7 @@ let finalize_block ctxt =
let message = Some (Format.asprintf "fitness <- %Ld" fitness) in let message = Some (Format.asprintf "fitness <- %Ld" fitness) in
let fitness = Fitness.from_int64 fitness in let fitness = Fitness.from_int64 fitness in
return ({ Updater.message ; context = ctxt.context ; fitness ; return ({ Updater.message ; context = ctxt.context ; fitness ;
max_operations_ttl = 0 ; max_operation_data_length = 0 ; max_operations_ttl = 0 ; last_allowed_fork_level = 0l ;
last_allowed_fork_level = 0l ;
}, ()) }, ())
let rpc_services = Services.rpc_services let rpc_services = Services.rpc_services
@ -124,6 +124,5 @@ let init context block_header =
return { Updater.message = None ; context ; return { Updater.message = None ; context ;
fitness = block_header.Block_header.fitness ; fitness = block_header.Block_header.fitness ;
max_operations_ttl = 0 ; max_operations_ttl = 0 ;
max_operation_data_length = 0 ;
last_allowed_fork_level = block_header.level ; last_allowed_fork_level = block_header.level ;
} }

View File

@ -78,6 +78,8 @@ let max_block_length =
delay = 0L }) delay = 0L })
+ Signature.size + Signature.size
let max_operation_data_length = 0
let check_signature ctxt { shell ; protocol_data = { command ; signature } } = let check_signature ctxt { shell ; protocol_data = { command ; signature } } =
let bytes = Data.Command.forge shell command in let bytes = Data.Command.forge shell command in
Data.Pubkey.get_pubkey ctxt >>= fun public_key -> Data.Pubkey.get_pubkey ctxt >>= fun public_key ->
@ -107,7 +109,6 @@ let prepare_application ctxt command level timestamp fitness =
Updater.activate ctxt hash >>= fun ctxt -> Updater.activate ctxt hash >>= fun ctxt ->
return { Updater.message ; context = ctxt ; return { Updater.message ; context = ctxt ;
fitness ; max_operations_ttl = 0 ; fitness ; max_operations_ttl = 0 ;
max_operation_data_length = 0 ;
last_allowed_fork_level = level ; last_allowed_fork_level = level ;
} }
| Activate_testchain { protocol = hash ; delay } -> | Activate_testchain { protocol = hash ; delay } ->
@ -117,7 +118,6 @@ let prepare_application ctxt command level timestamp fitness =
Updater.fork_test_chain ctxt ~protocol:hash ~expiration >>= fun ctxt -> Updater.fork_test_chain ctxt ~protocol:hash ~expiration >>= fun ctxt ->
return { Updater.message ; context = ctxt ; fitness ; return { Updater.message ; context = ctxt ; fitness ;
max_operations_ttl = 0 ; max_operations_ttl = 0 ;
max_operation_data_length = 0 ;
last_allowed_fork_level = Int32.succ level ; last_allowed_fork_level = Int32.succ level ;
} }
@ -145,7 +145,6 @@ let begin_construction
(* Dummy result. *) (* Dummy result. *)
return { Updater.message = None ; context = ctxt ; return { Updater.message = None ; context = ctxt ;
fitness ; max_operations_ttl = 0 ; fitness ; max_operations_ttl = 0 ;
max_operation_data_length = 0 ;
last_allowed_fork_level = 0l ; last_allowed_fork_level = 0l ;
} }
| Some { command ; _ }-> | Some { command ; _ }->
@ -183,6 +182,5 @@ let init ctxt block_header =
return { Updater.message = None ; context = ctxt ; return { Updater.message = None ; context = ctxt ;
fitness = block_header.Block_header.fitness ; fitness = block_header.Block_header.fitness ;
max_operations_ttl = 0 ; max_operations_ttl = 0 ;
max_operation_data_length = 0 ;
last_allowed_fork_level = block_header.level ; last_allowed_fork_level = block_header.level ;
} }