mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-06 14:52:33 +00:00
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
from trezor import ui
|
|
from trezor.crypto import nem
|
|
from trezor.messages import (
|
|
ButtonRequestType,
|
|
NEMAggregateModification,
|
|
NEMModificationType,
|
|
NEMSignTx,
|
|
NEMTransactionCommon,
|
|
)
|
|
from trezor.ui.text import Text
|
|
|
|
from ..layout import (
|
|
require_confirm,
|
|
require_confirm_fee,
|
|
require_confirm_final,
|
|
require_confirm_text,
|
|
split_address,
|
|
)
|
|
|
|
|
|
async def ask_multisig(ctx, msg: NEMSignTx):
|
|
address = nem.compute_address(msg.multisig.signer, msg.transaction.network)
|
|
if msg.cosigning:
|
|
await _require_confirm_address(ctx, 'Cosign transaction for', address)
|
|
else:
|
|
await _require_confirm_address(ctx, 'Initiate transaction for', address)
|
|
await require_confirm_fee(ctx, 'Confirm multisig fee', msg.transaction.fee)
|
|
|
|
|
|
async def ask_aggregate_modification(ctx, common: NEMTransactionCommon, mod: NEMAggregateModification, multisig: bool):
|
|
if not multisig:
|
|
await require_confirm_text(ctx, 'Convert account to multisig account?')
|
|
|
|
for m in mod.modifications:
|
|
if m.type == NEMModificationType.CosignatoryModification_Add:
|
|
action = 'Add'
|
|
else:
|
|
action = 'Remove'
|
|
address = nem.compute_address(m.public_key, common.network)
|
|
await _require_confirm_address(ctx, action + ' cosignatory', address)
|
|
|
|
if mod.relative_change:
|
|
if multisig:
|
|
action = 'Modify the number of cosignatories by '
|
|
else:
|
|
action = 'Set minimum cosignatories to '
|
|
await require_confirm_text(ctx, action + str(mod.relative_change) + '?')
|
|
|
|
await require_confirm_final(ctx, common.fee)
|
|
|
|
|
|
async def _require_confirm_address(ctx, action: str, address: str):
|
|
text = Text('Confirm address', ui.ICON_SEND, icon_color=ui.GREEN)
|
|
text.normal(action)
|
|
text.mono(*split_address(address))
|
|
await require_confirm(ctx, text, ButtonRequestType.ConfirmOutput)
|