From 6a7fd241eb696f1c970cd4cde0e5e99d43f04ea3 Mon Sep 17 00:00:00 2001 From: j-berman <justinberman@protonmail.com> Date: Mon, 21 Feb 2022 08:17:30 -0500 Subject: [PATCH 1/4] per_kb_fee -> per_byte_fee (#25) --- src/rest_server.cpp | 10 +++++----- src/rpc/light_wallet.cpp | 2 +- src/rpc/light_wallet.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rest_server.cpp b/src/rest_server.cpp index e5ad1c5..834569c 100644 --- a/src/rest_server.cpp +++ b/src/rest_server.cpp @@ -540,12 +540,12 @@ namespace lws if (resp->size_scale == 0 || 1024 < resp->size_scale || resp->fee_mask == 0) return {lws::error::bad_daemon_response}; - const std::uint64_t per_kb_fee = - resp->estimated_base_fee * (1024 / resp->size_scale); - const std::uint64_t per_kb_fee_masked = - ((per_kb_fee + (resp->fee_mask - 1)) / resp->fee_mask) * resp->fee_mask; + const std::uint64_t per_byte_fee = + resp->estimated_base_fee / resp->size_scale; + const std::uint64_t per_byte_fee_masked = + ((per_byte_fee + (resp->fee_mask - 1)) / resp->fee_mask) * resp->fee_mask; - return response{per_kb_fee_masked, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key)}; + return response{per_byte_fee_masked, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key)}; } }; diff --git a/src/rpc/light_wallet.cpp b/src/rpc/light_wallet.cpp index c0fa33e..1007136 100644 --- a/src/rpc/light_wallet.cpp +++ b/src/rpc/light_wallet.cpp @@ -294,7 +294,7 @@ namespace lws return expand_outputs{src, self.user_key}; }; wire::object(dest, - WIRE_FIELD_COPY(per_kb_fee), + WIRE_FIELD_COPY(per_byte_fee), WIRE_FIELD_COPY(fee_mask), WIRE_FIELD_COPY(amount), wire::field("outputs", wire::as_array(std::cref(self.outputs), expand)) diff --git a/src/rpc/light_wallet.h b/src/rpc/light_wallet.h index 21468b0..c38a6f7 100644 --- a/src/rpc/light_wallet.h +++ b/src/rpc/light_wallet.h @@ -155,7 +155,7 @@ namespace rpc struct get_unspent_outs_response { get_unspent_outs_response() = delete; - std::uint64_t per_kb_fee; + std::uint64_t per_byte_fee; std::uint64_t fee_mask; safe_uint64 amount; std::vector<std::pair<db::output, std::vector<crypto::key_image>>> outputs; From 1e326561521eb8460d03aed49883d9a3bf7785dd Mon Sep 17 00:00:00 2001 From: j-berman <justinberman@protonmail.com> Date: Mon, 21 Feb 2022 20:12:25 -0500 Subject: [PATCH 2/4] keep old usage of per_kb_fee functional --- src/rest_server.cpp | 12 ++++++------ src/rpc/light_wallet.cpp | 2 +- src/rpc/light_wallet.h | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/rest_server.cpp b/src/rest_server.cpp index 834569c..2bae619 100644 --- a/src/rest_server.cpp +++ b/src/rest_server.cpp @@ -537,15 +537,15 @@ namespace lws if (!resp) return resp.error(); - if (resp->size_scale == 0 || 1024 < resp->size_scale || resp->fee_mask == 0) + if ((resp->size_scale != 1 && resp->size_scale != 1024) || resp->fee_mask == 0) return {lws::error::bad_daemon_response}; - const std::uint64_t per_byte_fee = - resp->estimated_base_fee / resp->size_scale; - const std::uint64_t per_byte_fee_masked = - ((per_byte_fee + (resp->fee_mask - 1)) / resp->fee_mask) * resp->fee_mask; + const bool use_per_byte_fee = resp->size_scale == 1; + const std::uint64_t base_fee = resp->estimated_base_fee; + const std::uint64_t base_fee_masked = + ((base_fee + (resp->fee_mask - 1)) / resp->fee_mask) * resp->fee_mask; - return response{per_byte_fee_masked, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key)}; + return response{base_fee_masked, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key), use_per_byte_fee}; } }; diff --git a/src/rpc/light_wallet.cpp b/src/rpc/light_wallet.cpp index 1007136..a410cf9 100644 --- a/src/rpc/light_wallet.cpp +++ b/src/rpc/light_wallet.cpp @@ -294,7 +294,7 @@ namespace lws return expand_outputs{src, self.user_key}; }; wire::object(dest, - WIRE_FIELD_COPY(per_byte_fee), + wire::field(self.use_per_byte_fee ? "per_byte_fee" : "per_kb_fee", self.base_fee), WIRE_FIELD_COPY(fee_mask), WIRE_FIELD_COPY(amount), wire::field("outputs", wire::as_array(std::cref(self.outputs), expand)) diff --git a/src/rpc/light_wallet.h b/src/rpc/light_wallet.h index c38a6f7..06961d6 100644 --- a/src/rpc/light_wallet.h +++ b/src/rpc/light_wallet.h @@ -155,11 +155,12 @@ namespace rpc struct get_unspent_outs_response { get_unspent_outs_response() = delete; - std::uint64_t per_byte_fee; + std::uint64_t base_fee; // either per_byte_fee or per_kb_fee std::uint64_t fee_mask; safe_uint64 amount; std::vector<std::pair<db::output, std::vector<crypto::key_image>>> outputs; crypto::secret_key user_key; + bool use_per_byte_fee; }; void write_bytes(wire::json_writer&, const get_unspent_outs_response&); From e007e6f5057d6e1cc544a25650079fac863a2d5a Mon Sep 17 00:00:00 2001 From: j-berman <justinberman@protonmail.com> Date: Tue, 22 Feb 2022 02:03:14 -0500 Subject: [PATCH 3/4] Remove server-side masking --- src/rest_server.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/rest_server.cpp b/src/rest_server.cpp index 2bae619..2030ef5 100644 --- a/src/rest_server.cpp +++ b/src/rest_server.cpp @@ -541,11 +541,8 @@ namespace lws return {lws::error::bad_daemon_response}; const bool use_per_byte_fee = resp->size_scale == 1; - const std::uint64_t base_fee = resp->estimated_base_fee; - const std::uint64_t base_fee_masked = - ((base_fee + (resp->fee_mask - 1)) / resp->fee_mask) * resp->fee_mask; - return response{base_fee_masked, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key), use_per_byte_fee}; + return response{resp->estimated_base_fee, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key), use_per_byte_fee}; } }; From 1f3265b541a6b3b27b5a0e423174ef6e1ea09549 Mon Sep 17 00:00:00 2001 From: j-berman <justinberman@protonmail.com> Date: Sat, 28 May 2022 18:56:26 -0700 Subject: [PATCH 4/4] remove per_kb_fee --- src/rest_server.cpp | 7 ++++--- src/rpc/light_wallet.cpp | 2 +- src/rpc/light_wallet.h | 3 +-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rest_server.cpp b/src/rest_server.cpp index 2030ef5..ea197f2 100644 --- a/src/rest_server.cpp +++ b/src/rest_server.cpp @@ -537,12 +537,13 @@ namespace lws if (!resp) return resp.error(); - if ((resp->size_scale != 1 && resp->size_scale != 1024) || resp->fee_mask == 0) + if (resp->size_scale == 0 || 1024 < resp->size_scale || resp->fee_mask == 0) return {lws::error::bad_daemon_response}; - const bool use_per_byte_fee = resp->size_scale == 1; + const std::uint64_t per_byte_fee = + resp->estimated_base_fee / resp->size_scale; - return response{resp->estimated_base_fee, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key), use_per_byte_fee}; + return response{per_byte_fee, resp->fee_mask, rpc::safe_uint64(received), std::move(unspent), std::move(req.creds.key)}; } }; diff --git a/src/rpc/light_wallet.cpp b/src/rpc/light_wallet.cpp index a410cf9..1007136 100644 --- a/src/rpc/light_wallet.cpp +++ b/src/rpc/light_wallet.cpp @@ -294,7 +294,7 @@ namespace lws return expand_outputs{src, self.user_key}; }; wire::object(dest, - wire::field(self.use_per_byte_fee ? "per_byte_fee" : "per_kb_fee", self.base_fee), + WIRE_FIELD_COPY(per_byte_fee), WIRE_FIELD_COPY(fee_mask), WIRE_FIELD_COPY(amount), wire::field("outputs", wire::as_array(std::cref(self.outputs), expand)) diff --git a/src/rpc/light_wallet.h b/src/rpc/light_wallet.h index 06961d6..c38a6f7 100644 --- a/src/rpc/light_wallet.h +++ b/src/rpc/light_wallet.h @@ -155,12 +155,11 @@ namespace rpc struct get_unspent_outs_response { get_unspent_outs_response() = delete; - std::uint64_t base_fee; // either per_byte_fee or per_kb_fee + std::uint64_t per_byte_fee; std::uint64_t fee_mask; safe_uint64 amount; std::vector<std::pair<db::output, std::vector<crypto::key_image>>> outputs; crypto::secret_key user_key; - bool use_per_byte_fee; }; void write_bytes(wire::json_writer&, const get_unspent_outs_response&);