offline tool: add wire-fee cmd

This commit is contained in:
swrup 2026-02-03 22:03:25 +01:00
parent 6ee1a994ad
commit b14fe2ea95
5 changed files with 111 additions and 21 deletions

View file

@ -2,24 +2,43 @@
set -e
file1="tmp_file1.json"
file2="tmp_file2.json"
file3="tmp_file3.json"
file4="tmp_file4.json"
a="tmp_a.json"
b="tmp_b.json"
auditor_pub=$(<"./data/auditor_public_key")
dune exec offline -- download --output $file1
dune exec offline -- sign --input $file1 --output $file2
dune exec offline -- upload --input $file2 --url "/management/keys"
dune exec offline -- download --output $a
dune exec offline -- sign --input $a --output $b
dune exec offline -- upload --input $b --url "/management/keys"
dune exec offline -- enable-auditor --output $file3 --auditor_url "auditor.example.com" --auditor_name "auditor example" --auditor_pub $auditor_pub --validity_start "0.0"
dune exec offline -- upload --input $file3 --url "/management/auditors"
dune exec offline -- enable-auditor \
--output $b \
--auditor_url "auditor.example.com" \
--auditor_name "auditor example" \
--auditor_pub $auditor_pub \
--validity_start "0.0"
dune exec offline -- upload --input $b --url "/management/auditors"
dune exec offline -- global-fees --output $file4 --start_date "0.0" --end_date "99999999.9" --history_fee "EUR:0.0" --account_fee "EUR:0.0" --purse_fee "EUR:0.0" --history_expiration "9999999.0" --purse_account_limit 1 --purse_timeout "9999999.0"
dune exec offline -- upload --input $file4 --url "/management/global-fees"
dune exec offline -- wire-fee \
--output $b \
--wire_method "magic" \
--fee_start "0.0" \
--fee_end "99999999.9" \
--closing_fee "EUR:0.0" \
--wire_fee "EUR:0.0"
dune exec offline -- upload --input $b --url "/management/wire-fee"
rm $file1
rm $file2
rm $file3
rm $file4
dune exec offline -- global-fees \
--output $b \
--start_date "0.0" \
--end_date "99999999.9" \
--history_fee "EUR:0.0" \
--account_fee "EUR:0.0" \
--purse_fee "EUR:0.0" \
--history_expiration "9999999.0" \
--purse_account_limit 1 \
--purse_timeout "9999999.0"
dune exec offline -- upload --input $b --url "/management/global-fees"
rm $a
rm $b

View file

@ -152,6 +152,35 @@ let disable_auditor_cmd =
and+ validity_end = validity_end in
disable_auditor ~output ~master_key ~auditor_pub ~validity_end
let wire_fee_cmd =
let doc = "Provides wire fee configuration." in
let wire_method =
Arg.(required & opt (some string) None & info [ "wire_method" ])
in
let fee_start =
Arg.(required & opt (some timestamp) None & info [ "fee_start" ])
in
let fee_end =
Arg.(required & opt (some timestamp) None & info [ "fee_end" ])
in
let closing_fee =
Arg.(required & opt (some amount) None & info [ "closing_fee" ])
in
let wire_fee =
Arg.(required & opt (some amount) None & info [ "wire_fee" ])
in
Cmd.make (Cmd.info "wire-fee" ~doc)
@@
let+ output = output
and+ master_key = master_key
and+ wire_method = wire_method
and+ fee_start = fee_start
and+ fee_end = fee_end
and+ closing_fee = closing_fee
and+ wire_fee = wire_fee in
Offline_impl.wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end
~closing_fee ~wire_fee
let global_fees_cmd =
let doc = "Provides global fee configuration." in
let start_date =
@ -210,14 +239,18 @@ let cli =
revoke_signkey_cmd;
enable_auditor_cmd;
disable_auditor_cmd;
wire_fee_cmd;
global_fees_cmd;
]
let main () = Cmd.eval_result cli
let () = if !Sys.interactive then () else exit (main ())
(* TODO all management operations:
/management/wire-fee
(* TODO
? argument name use "foo-bar" instead of "foo_bar"
all management operations:
/management/wire
/management/wire/disable
/management/drain

View file

@ -167,3 +167,33 @@ let disable_auditor ~output ~master_key ~auditor_pub ~validity_end =
let* s = Api.encode Api.AuditorTeardownMessage.jsont v in
let* () = write_file output s in
Ok ()
let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee
~wire_fee =
let open Crypto in
let* key = read_master_key_file master_key in
let master_sig_wire =
let open Bin_sig.MasterWireFee in
sign_f ~f:(EddsaSignature.sign ~key)
{
h_wire_method= Bin_type.Hash_64_cstr.hash wire_method;
start_date= fee_start;
end_date= fee_end;
closing_fee;
wire_fee;
}
in
let v =
Api.WireFeeSetupMessage.
{
wire_method;
fee_start;
fee_end;
closing_fee;
wire_fee;
master_sig_wire;
}
in
let* s = Api.encode Api.WireFeeSetupMessage.jsont v in
let* () = write_file output s in
Ok ()