ligo/src/proto_alpha/lib_protocol/test/helpers/helpers_script.ml

37 lines
1.6 KiB
OCaml

(**************************************************************************)
(* *)
(* Copyright (c) 2014 - 2016. *)
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
(* *)
(* All rights reserved. No warranty, explicit or implicit, provided. *)
(* *)
(**************************************************************************)
open Proto_alpha.Error_monad
open Proto_alpha.Tezos_context
let init_amount = 20000
let execute_code_pred
?tc (pred : Helpers_block.result) (script : Script.t) (argument : Script.expr) =
let op = List.nth Helpers_account.bootstrap_accounts 0 in
let tc = Option.unopt ~default:pred.tezos_context tc in
Helpers_apply.script_origination_pred ~tc ~pred (script, op, init_amount)
>>=? fun ((dst, _), tc) ->
let dst = List.hd dst in
let ctxt = Helpers_cast.ctxt_of_tc tc in
Helpers_operation.transaction_full op dst Tez.zero ctxt
>>=? fun dummy_protop ->
let op_header = Helpers_block.get_op_header_res pred in
let apply_op = Helpers_operation.apply_of_proto
(Some op) op_header dummy_protop in
let dummy_nonce = Contract.initial_origination_nonce apply_op.hash in
let amount = Tez.zero in
let gaz = Gas.of_int (Tezos_context.Constants.max_gas tc) in
let return = Script_interpreter.execute
dummy_nonce op.contract dst
tc script amount argument gaz in
return