1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-22 22:38:08 +00:00

fix(solana): round up transaction fee

If `unit_price * unit_limit / 1000000` didn't result in an integer `int()` would round the number down. However on the blockchain the resulting fee was be rounded up.
This commit is contained in:
gabrielkerekes 2024-03-22 10:57:09 +01:00 committed by matejcik
parent 9b84ecf833
commit b61ed7c02a

View File

@ -113,6 +113,8 @@ async def confirm_instructions(
def calculate_fee(transaction: Transaction) -> int: def calculate_fee(transaction: Transaction) -> int:
import math
from .constants import SOLANA_BASE_FEE_LAMPORTS, SOLANA_COMPUTE_UNIT_LIMIT from .constants import SOLANA_BASE_FEE_LAMPORTS, SOLANA_COMPUTE_UNIT_LIMIT
from .transaction.instructions import ( from .transaction.instructions import (
COMPUTE_BUDGET_PROGRAM_ID, COMPUTE_BUDGET_PROGRAM_ID,
@ -150,4 +152,4 @@ def calculate_fee(transaction: Transaction) -> int:
unit_price = instruction.lamports unit_price = instruction.lamports
is_unit_price_set = True is_unit_price_set = True
return int(base_fee + unit_price * unit_limit / 1000000) return int(base_fee + math.ceil(unit_price * unit_limit / 1000000))