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

core: reduce gc.collect calls during bitcon sign_tx

This commit is contained in:
Martin Milata 2020-07-24 01:02:16 +02:00 committed by Tomas Susanka
parent c3a61998cb
commit 03f2dab6bc
4 changed files with 0 additions and 13 deletions

View File

@ -1,4 +1,3 @@
import gc
from micropython import const from micropython import const
from trezor import wire from trezor import wire
@ -438,7 +437,6 @@ class Bitcoin:
signature = ecdsa_sign(node, tx_digest) signature = ecdsa_sign(node, tx_digest)
# serialize input with correct signature # serialize input with correct signature
gc.collect()
script_sig = self.input_derive_script(txi, node.public_key(), signature) script_sig = self.input_derive_script(txi, node.public_key(), signature)
self.write_tx_input(self.serialized_tx, txi, script_sig) self.write_tx_input(self.serialized_tx, txi, script_sig)
self.set_serialized_signature(i, signature) self.set_serialized_signature(i, signature)

View File

@ -1,4 +1,3 @@
import gc
from micropython import const from micropython import const
from trezor import wire from trezor import wire
@ -31,7 +30,6 @@ class Bitcoinlike(Bitcoin):
multisig.multisig_pubkey_index(txi.multisig, public_key) multisig.multisig_pubkey_index(txi.multisig, public_key)
# serialize input with correct signature # serialize input with correct signature
gc.collect()
script_sig = self.input_derive_script(txi, public_key, signature) script_sig = self.input_derive_script(txi, public_key, signature)
self.write_tx_input(self.serialized_tx, txi, script_sig) self.write_tx_input(self.serialized_tx, txi, script_sig)
self.set_serialized_signature(i_sign, signature) self.set_serialized_signature(i_sign, signature)

View File

@ -1,4 +1,3 @@
import gc
from micropython import const from micropython import const
from trezor import wire from trezor import wire
@ -123,7 +122,6 @@ class Decred(Bitcoin):
signature = ecdsa_sign(key_sign, sig_hash) signature = ecdsa_sign(key_sign, sig_hash)
# serialize input with correct signature # serialize input with correct signature
gc.collect()
script_sig = self.input_derive_script(txi_sign, key_sign_pub, signature) script_sig = self.input_derive_script(txi_sign, key_sign_pub, signature)
self.write_tx_input_witness(self.serialized_tx, txi_sign, script_sig) self.write_tx_input_witness(self.serialized_tx, txi_sign, script_sig)
self.set_serialized_signature(i_sign, signature) self.set_serialized_signature(i_sign, signature)

View File

@ -1,5 +1,3 @@
import gc
from trezor import utils, wire from trezor import utils, wire
from trezor.messages import InputScriptType, OutputScriptType from trezor.messages import InputScriptType, OutputScriptType
from trezor.messages.RequestType import ( from trezor.messages.RequestType import (
@ -117,7 +115,6 @@ def request_tx_meta(tx_req: TxRequest, coin: CoinInfo, tx_hash: bytes = None) ->
tx_req.details.tx_hash = tx_hash tx_req.details.tx_hash = tx_hash
ack = yield tx_req ack = yield tx_req
_clear_tx_request(tx_req) _clear_tx_request(tx_req)
gc.collect()
return sanitize_tx_meta(ack.tx, coin) return sanitize_tx_meta(ack.tx, coin)
@ -130,7 +127,6 @@ def request_tx_extra_data( # type: ignore
tx_req.details.tx_hash = tx_hash tx_req.details.tx_hash = tx_hash
ack = yield tx_req ack = yield tx_req
_clear_tx_request(tx_req) _clear_tx_request(tx_req)
gc.collect()
return ack.tx.extra_data return ack.tx.extra_data
@ -140,7 +136,6 @@ def request_tx_input(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes =
tx_req.details.tx_hash = tx_hash tx_req.details.tx_hash = tx_hash
ack = yield tx_req ack = yield tx_req
_clear_tx_request(tx_req) _clear_tx_request(tx_req)
gc.collect()
return sanitize_tx_input(ack.tx, coin) return sanitize_tx_input(ack.tx, coin)
@ -150,7 +145,6 @@ def request_tx_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes
tx_req.details.tx_hash = tx_hash tx_req.details.tx_hash = tx_hash
ack = yield tx_req ack = yield tx_req
_clear_tx_request(tx_req) _clear_tx_request(tx_req)
gc.collect()
if tx_hash is None: if tx_hash is None:
return sanitize_tx_output(ack.tx, coin) return sanitize_tx_output(ack.tx, coin)
else: else:
@ -161,7 +155,6 @@ def request_tx_finish(tx_req: TxRequest) -> Awaitable[Any]: # type: ignore
tx_req.request_type = TXFINISHED tx_req.request_type = TXFINISHED
yield tx_req yield tx_req
_clear_tx_request(tx_req) _clear_tx_request(tx_req)
gc.collect()
def _clear_tx_request(tx_req: TxRequest) -> None: def _clear_tx_request(tx_req: TxRequest) -> None: