https://gitlab.com/tezos/tezos
Raw File
Tip revision: 41916669412ac0a8571c9da6a7788678e307360e authored by Gauthier SEBILLE on 16 October 2023, 09:44:20 UTC
RBT: generic reset_block_section function for profilers
Tip revision: 4191666
contracts.ml
(*****************************************************************************)
(*                                                                           *)
(* SPDX-License-Identifier: MIT                                              *)
(* Copyright (c) 2023 Marigold <contact@marigold.dev>                        *)
(*                                                                           *)
(*****************************************************************************)

open Tezos_protocol_alpha.Protocol

let prepare_mint_and_deposit_contract client protocol =
  let* _, mint_and_deposit_contract =
    Client.originate_contract_at
      ~amount:Tez.zero
      ~src:Constant.bootstrap1.alias
      ~init:"Unit"
      ~burn_cap:Tez.(of_int 1)
      client
      ["mini_scenarios"; "smart_rollup_mint_and_deposit_ticket"]
      protocol
  in
  let* () = Client.bake_for_and_wait client in
  return Contract_hash.(of_b58check_exn mint_and_deposit_contract)

let prepare_receive_withdrawn_tickets_contract client protocol =
  let* _, receive_tickets_contract =
    Client.originate_contract_at
      ~amount:Tez.zero
      ~src:Constant.bootstrap1.alias
      ~init:"{}"
      ~burn_cap:Tez.(of_int 1)
      client
      ["mini_scenarios"; "smart_rollup_receive_tickets"]
      protocol
  in
  let* () = Client.bake_for_and_wait client in
  return Contract_hash.(of_b58check_exn receive_tickets_contract)

let deposit_string_tickets client ~mint_and_deposit_contract ~sc_rollup_address
    ~destination_l2_addr ~ticket_content ~amount =
  let* () =
    let arg =
      sf
        {|Pair (Pair %S %S) (Pair %d %S)|}
        sc_rollup_address
        destination_l2_addr
        amount
        ticket_content
    in
    Client.transfer
      client
      ~amount:Tez.zero
      ~giver:Constant.bootstrap1.alias
      ~receiver:mint_and_deposit_contract
      ~arg
      ~burn_cap:(Tez.of_int 1000)
  in
  let* () = Client.bake_for_and_wait client in
  Lwt.return ()
back to top