From 1d75ff1871decbed2081132d86b143c2a04b5be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Henry?= Date: Tue, 29 May 2018 12:02:14 +0200 Subject: [PATCH] Alpha: simplify the metadata encoding for balance update --- .../src/apply_operation_result.ml | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/proto_alpha/lib_protocol/src/apply_operation_result.ml b/src/proto_alpha/lib_protocol/src/apply_operation_result.ml index 9a930e1e2..87d30a2e6 100644 --- a/src/proto_alpha/lib_protocol/src/apply_operation_result.ml +++ b/src/proto_alpha/lib_protocol/src/apply_operation_result.ml @@ -69,15 +69,23 @@ type balance_update = let balance_update_encoding = def "operation_metadata.alpha.balance_update" @@ - union - [ case (Tag 0) - (obj1 (req "credited" Tez.encoding)) - (function Credited v -> Some v | Debited _ -> None) - (fun v -> Credited v) ; - case (Tag 1) - (obj1 (req "debited" Tez.encoding)) - (function Debited v -> Some v | Credited _ -> None) - (fun v -> Debited v) ] + obj1 + (req "change" + (conv + (function + | Credited v -> Tez.to_mutez v + | Debited v -> Int64.neg (Tez.to_mutez v)) + (Json.wrap_error @@ + fun v -> + if Compare.Int64.(v < 0L) then + match Tez.of_mutez (Int64.neg v) with + | Some v -> Debited v + | None -> failwith "Qty.of_mutez" + else + match Tez.of_mutez v with + | Some v -> Credited v + | None -> failwith "Qty.of_mutez") + int64)) type balance_updates = (balance * balance_update) list