123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)(* *)(* Permission is hereby granted, free of charge, to any person obtaining a *)(* copy of this software and associated documentation files (the "Software"),*)(* to deal in the Software without restriction, including without limitation *)(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *)(* and/or sell copies of the Software, and to permit persons to whom the *)(* Software is furnished to do so, subject to the following conditions: *)(* *)(* The above copyright notice and this permission notice shall be included *)(* in all copies or substantial portions of the Software. *)(* *)(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)(* DEALINGS IN THE SOFTWARE. *)(* *)(*****************************************************************************)openProtocolopenAlpha_contextopenAlpha_client_contextopenClient_proto_contractsopenClient_keys_v0letget_balance(rpc:#Alpha_client_context.rpc_context)~chain~blockcontract=Alpha_services.Contract.balancerpc(chain,block)contractletget_storage(rpc:#Alpha_client_context.rpc_context)~chain~blockcontract=Alpha_services.Contract.storage_optrpc(chain,block)contractletget_big_map_value(rpc:#Alpha_client_context.rpc_context)~chain~blockcontractkey=Alpha_services.Contract.big_map_get_optrpc(chain,block)contractkeyletget_script(rpc:#Alpha_client_context.rpc_context)~chain~blockcontract=Alpha_services.Contract.script_optrpc(chain,block)contractletlist_contract_labels(cctxt:#Alpha_client_context.full)~chain~block=Alpha_services.Contract.listcctxt(chain,block)>>=?funcontracts->List.map_es(funh->(matchContract.is_implicithwith|Somem->(Public_key_hash.rev_findcctxtm>>=?function|None->return""|Somenm->(Raw_contract_alias.find_optcctxtnm>>=?function|None->return(" (known as "^nm^")")|Some_->return(" (known as key:"^nm^")")))|None->(Raw_contract_alias.rev_findcctxth>>=?function|None->return""|Somenm->return(" (known as "^nm^")")))>>=?funnm->letkind=matchContract.is_implicithwithSome_->" (implicit)"|None->""inleth_b58=Contract.to_b58checkhinreturn(nm,h_b58,kind))contractsletget_manager(cctxt:#Alpha_client_context.full)~chain~blocksource=Client_proto_contracts.get_managercctxt~chain~blocksource>>=?funsrc_pkh->Client_keys_v0.get_keycctxtsrc_pkh>>=?fun(src_name,src_pk,src_sk)->return(src_name,src_pkh,src_pk,src_sk)letpp_operationformatter(a:Alpha_block_services.operation)=match(a.receipt,a.protocol_data)with|Receipt(Apply_results.Operation_metadataomd),Operation_dataod->(matchApply_results.kind_equal_listod.contentsomd.contentswith|SomeApply_results.Eq->Operation_result.pp_operation_resultformatter(od.contents,omd.contents)|None->Stdlib.failwith"Unexpected result.")|Empty,_->Stdlib.failwith"Pruned metadata: the operation receipt was removed accordingly to the \
node's history mode."|Too_large,_->Stdlib.failwith"Too large metadata."|_->Stdlib.failwith"Unexpected result."letget_operation_from_block(cctxt:#Client_context.full)~chainpredecessorsoperation_hash=Client_confirmations.lookup_operation_in_previous_blockscctxt~chain~predecessorsoperation_hash>>=?function|None->return_none|Some(block,i,j)->cctxt#message"Operation found in block: %a (pass: %d, offset: %d)"Block_hash.ppblockij>>=fun()->Alpha_client_context.Alpha_block_services.Operations.operationcctxt~chain~block:(`Hash(block,0))ij>>=?funop'->return_someop'letdisplay_receipt_for_operation(cctxt:#Alpha_client_context.full)~chain?(predecessors=10)operation_hash=get_operation_from_blockcctxt~chainpredecessorsoperation_hash>>=?function|None->cctxt#message"Couldn't find operation">>=fun()->return_unit|Someop->cctxt#message"%a"pp_operationop>>=fun()->return_unit