mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-22 23:48:12 +00:00
refactor fee computation, but keep ceil logic
This commit is contained in:
parent
c8dc17341c
commit
391e3940e5
@ -153,9 +153,8 @@ void layoutConfirmTx(const CoinType *coin, uint64_t amount_out, uint64_t amount_
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void layoutFeeOverThreshold(const CoinType *coin, uint64_t fee, uint32_t kb)
|
void layoutFeeOverThreshold(const CoinType *coin, uint64_t fee)
|
||||||
{
|
{
|
||||||
(void)kb;
|
|
||||||
const char *str_out = str_amount(fee, coin->has_coin_shortcut ? coin->coin_shortcut : NULL, buf_out, sizeof(buf_out));
|
const char *str_out = str_amount(fee, coin->has_coin_shortcut ? coin->coin_shortcut : NULL, buf_out, sizeof(buf_out));
|
||||||
layoutDialogSwipe(&bmp_icon_question,
|
layoutDialogSwipe(&bmp_icon_question,
|
||||||
"Cancel",
|
"Cancel",
|
||||||
|
@ -33,7 +33,7 @@ void layoutScreensaver(void);
|
|||||||
void layoutHome(void);
|
void layoutHome(void);
|
||||||
void layoutConfirmOutput(const CoinType *coin, const TxOutputType *out);
|
void layoutConfirmOutput(const CoinType *coin, const TxOutputType *out);
|
||||||
void layoutConfirmTx(const CoinType *coin, uint64_t amount_out, uint64_t amount_fee);
|
void layoutConfirmTx(const CoinType *coin, uint64_t amount_out, uint64_t amount_fee);
|
||||||
void layoutFeeOverThreshold(const CoinType *coin, uint64_t fee, uint32_t kb);
|
void layoutFeeOverThreshold(const CoinType *coin, uint64_t fee);
|
||||||
void layoutSignMessage(const uint8_t *msg, uint32_t len);
|
void layoutSignMessage(const uint8_t *msg, uint32_t len);
|
||||||
void layoutVerifyAddress(const char *address);
|
void layoutVerifyAddress(const char *address);
|
||||||
void layoutVerifyMessage(const uint8_t *msg, uint32_t len);
|
void layoutVerifyMessage(const uint8_t *msg, uint32_t len);
|
||||||
|
@ -566,9 +566,9 @@ static bool signing_check_fee(void) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
uint64_t fee = to_spend - spending;
|
uint64_t fee = to_spend - spending;
|
||||||
uint32_t tx_est_size = transactionEstimateSizeKb(inputs_count, outputs_count);
|
uint64_t tx_est_size_kb = (transactionEstimateSize(inputs_count, outputs_count) + 999) / 1000;
|
||||||
if (fee > (uint64_t)tx_est_size * coin->maxfee_kb) {
|
if (fee > tx_est_size_kb * coin->maxfee_kb) {
|
||||||
layoutFeeOverThreshold(coin, fee, tx_est_size);
|
layoutFeeOverThreshold(coin, fee);
|
||||||
if (!protectButton(ButtonRequestType_ButtonRequest_FeeOverThreshold, false)) {
|
if (!protectButton(ButtonRequestType_ButtonRequest_FeeOverThreshold, false)) {
|
||||||
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Fee over threshold. Signing cancelled.");
|
fsm_sendFailure(FailureType_Failure_ActionCancelled, "Fee over threshold. Signing cancelled.");
|
||||||
signing_abort();
|
signing_abort();
|
||||||
|
@ -570,8 +570,3 @@ uint32_t transactionEstimateSize(uint32_t inputs, uint32_t outputs)
|
|||||||
{
|
{
|
||||||
return 10 + inputs * 149 + outputs * 35;
|
return 10 + inputs * 149 + outputs * 35;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t transactionEstimateSizeKb(uint32_t inputs, uint32_t outputs)
|
|
||||||
{
|
|
||||||
return (transactionEstimateSize(inputs, outputs) + 999) / 1000;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user