Alpha: adds a command to get the storage of a contract

This commit is contained in:
Benjamin Canou 2017-07-24 15:57:03 +02:00
parent a8e984c1af
commit 26a5338b86
5 changed files with 26 additions and 0 deletions

View File

@ -17,6 +17,9 @@ module Ed25519 = Environment.Ed25519
let get_balance cctxt block contract = let get_balance cctxt block contract =
Client_proto_rpcs.Context.Contract.balance cctxt block contract Client_proto_rpcs.Context.Contract.balance cctxt block contract
let get_storage cctxt block contract =
Client_proto_rpcs.Context.Contract.storage cctxt block contract
let rec find_predecessor rpc_config h n = let rec find_predecessor rpc_config h n =
if n <= 0 then if n <= 0 then
return (`Hash h) return (`Hash h)
@ -260,6 +263,19 @@ let commands () =
return () return ()
end ; end ;
command ~group ~desc: "get the storage of a contract" begin
prefixes [ "get" ; "storage" ; "for" ]
@@ ContractAlias.destination_param ~name:"src" ~desc:"source contract"
@@ stop
end begin fun (_, contract) cctxt ->
get_storage cctxt.rpc_config cctxt.config.block contract >>=? function
| None ->
cctxt.error "This is not a smart contract."
| Some storage ->
cctxt.answer "%a" Client_proto_programs.print_storage storage >>= fun () ->
return ()
end ;
command ~group ~desc: "get the manager of a contract" begin command ~group ~desc: "get the manager of a contract" begin
prefixes [ "get" ; "manager" ; "for" ] prefixes [ "get" ; "manager" ; "for" ]
@@ ContractAlias.destination_param ~name:"src" ~desc:"source contract" @@ ContractAlias.destination_param ~name:"src" ~desc:"source contract"

View File

@ -83,6 +83,9 @@ and print_expr locations ppf = function
Format.fprintf ppf "(%a)" (print_expr_unwrapped locations) expr Format.fprintf ppf "(%a)" (print_expr_unwrapped locations) expr
| expr -> print_expr_unwrapped locations ppf expr | expr -> print_expr_unwrapped locations ppf expr
let print_storage ppf ({ storage } : Script.storage) =
print_expr no_locations ppf storage
let print_stack ppf = function let print_stack ppf = function
| [] -> Format.fprintf ppf "[]" | [] -> Format.fprintf ppf "[]"
| more -> | more ->

View File

@ -16,6 +16,8 @@ val parse_program: string -> Script.code parsed tzresult Lwt.t
val parse_data: string -> Script.expr parsed tzresult Lwt.t val parse_data: string -> Script.expr parsed tzresult Lwt.t
val parse_data_type: string -> Script.expr parsed tzresult Lwt.t val parse_data_type: string -> Script.expr parsed tzresult Lwt.t
val print_storage: Format.formatter -> Script.storage -> unit
module Program : Client_aliases.Alias with type t = Script.code parsed module Program : Client_aliases.Alias with type t = Script.code parsed
val commands: unit -> Client_commands.command list val commands: unit -> Client_commands.command list

View File

@ -132,6 +132,8 @@ module Context = struct
call_error_service2 cctxt Services.Context.Contract.delegatable b c () call_error_service2 cctxt Services.Context.Contract.delegatable b c ()
let script cctxt b c = let script cctxt b c =
call_error_service2 cctxt Services.Context.Contract.script b c () call_error_service2 cctxt Services.Context.Contract.script b c ()
let storage cctxt b c =
call_error_service2 cctxt Services.Context.Contract.storage b c ()
end end
end end

View File

@ -135,6 +135,9 @@ module Context : sig
val script: val script:
Client_rpcs.config -> Client_rpcs.config ->
block -> Contract.t -> Script.t option tzresult Lwt.t block -> Contract.t -> Script.t option tzresult Lwt.t
val storage:
Client_rpcs.config ->
block -> Contract.t -> Script.storage option tzresult Lwt.t
end end
end end