mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
parent
e1b2195cf7
commit
c9c8b7656d
4 changed files with 21 additions and 7 deletions
|
@ -26,7 +26,9 @@
|
||||||
|
|
||||||
from electrum.plugin import BasePlugin, hook
|
from electrum.plugin import BasePlugin, hook
|
||||||
from electrum.i18n import _
|
from electrum.i18n import _
|
||||||
from electrum.bitcoin import is_address
|
from electrum.bitcoin import is_address, TYPE_SCRIPT
|
||||||
|
from electrum.util import bfh
|
||||||
|
from electrum.transaction import opcodes
|
||||||
|
|
||||||
|
|
||||||
class HW_PluginBase(BasePlugin):
|
class HW_PluginBase(BasePlugin):
|
||||||
|
@ -87,3 +89,15 @@ def is_any_tx_output_on_change_branch(tx):
|
||||||
if index[0] == 1:
|
if index[0] == 1:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def trezor_validate_op_return_output_and_get_data(_type, address, amount):
|
||||||
|
if _type != TYPE_SCRIPT:
|
||||||
|
raise Exception("Unexpected output type: {}".format(_type))
|
||||||
|
script = bfh(address)
|
||||||
|
if not (script[0] == opcodes.OP_RETURN and
|
||||||
|
script[1] == len(script) - 2 and script[1] <= 75):
|
||||||
|
raise Exception(_("Only OP_RETURN scripts, with one constant push, are supported."))
|
||||||
|
if amount != 0:
|
||||||
|
raise Exception(_("Amount for OP_RETURN output must be zero."))
|
||||||
|
return script[2:]
|
||||||
|
|
|
@ -15,7 +15,7 @@ from electrum.wallet import Standard_Wallet
|
||||||
from electrum.base_wizard import ScriptTypeNotSupported
|
from electrum.base_wizard import ScriptTypeNotSupported
|
||||||
|
|
||||||
from ..hw_wallet import HW_PluginBase
|
from ..hw_wallet import HW_PluginBase
|
||||||
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch
|
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch, trezor_validate_op_return_output_and_get_data
|
||||||
|
|
||||||
|
|
||||||
# TREZOR initialization methods
|
# TREZOR initialization methods
|
||||||
|
@ -382,7 +382,7 @@ class KeepKeyPlugin(HW_PluginBase):
|
||||||
txoutputtype.amount = amount
|
txoutputtype.amount = amount
|
||||||
if _type == TYPE_SCRIPT:
|
if _type == TYPE_SCRIPT:
|
||||||
txoutputtype.script_type = self.types.PAYTOOPRETURN
|
txoutputtype.script_type = self.types.PAYTOOPRETURN
|
||||||
txoutputtype.op_return_data = bfh(address)[2:]
|
txoutputtype.op_return_data = trezor_validate_op_return_output_and_get_data(_type, address, amount)
|
||||||
elif _type == TYPE_ADDRESS:
|
elif _type == TYPE_ADDRESS:
|
||||||
if is_segwit_address(address):
|
if is_segwit_address(address):
|
||||||
txoutputtype.script_type = self.types.PAYTOWITNESS
|
txoutputtype.script_type = self.types.PAYTOWITNESS
|
||||||
|
|
|
@ -13,7 +13,7 @@ from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey, xtyp
|
||||||
from electrum.base_wizard import ScriptTypeNotSupported
|
from electrum.base_wizard import ScriptTypeNotSupported
|
||||||
|
|
||||||
from ..hw_wallet import HW_PluginBase
|
from ..hw_wallet import HW_PluginBase
|
||||||
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch
|
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch, trezor_validate_op_return_output_and_get_data
|
||||||
|
|
||||||
|
|
||||||
# Safe-T mini initialization methods
|
# Safe-T mini initialization methods
|
||||||
|
@ -453,7 +453,7 @@ class SafeTPlugin(HW_PluginBase):
|
||||||
txoutputtype.amount = amount
|
txoutputtype.amount = amount
|
||||||
if _type == TYPE_SCRIPT:
|
if _type == TYPE_SCRIPT:
|
||||||
txoutputtype.script_type = self.types.OutputScriptType.PAYTOOPRETURN
|
txoutputtype.script_type = self.types.OutputScriptType.PAYTOOPRETURN
|
||||||
txoutputtype.op_return_data = bfh(address)[2:]
|
txoutputtype.op_return_data = trezor_validate_op_return_output_and_get_data(_type, address, amount)
|
||||||
elif _type == TYPE_ADDRESS:
|
elif _type == TYPE_ADDRESS:
|
||||||
txoutputtype.script_type = self.types.OutputScriptType.PAYTOADDRESS
|
txoutputtype.script_type = self.types.OutputScriptType.PAYTOADDRESS
|
||||||
txoutputtype.address = address
|
txoutputtype.address = address
|
||||||
|
|
|
@ -13,7 +13,7 @@ from electrum.keystore import Hardware_KeyStore, is_xpubkey, parse_xpubkey, xtyp
|
||||||
from electrum.base_wizard import ScriptTypeNotSupported
|
from electrum.base_wizard import ScriptTypeNotSupported
|
||||||
|
|
||||||
from ..hw_wallet import HW_PluginBase
|
from ..hw_wallet import HW_PluginBase
|
||||||
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch
|
from ..hw_wallet.plugin import is_any_tx_output_on_change_branch, trezor_validate_op_return_output_and_get_data
|
||||||
|
|
||||||
|
|
||||||
# TREZOR initialization methods
|
# TREZOR initialization methods
|
||||||
|
@ -464,7 +464,7 @@ class TrezorPlugin(HW_PluginBase):
|
||||||
txoutputtype.amount = amount
|
txoutputtype.amount = amount
|
||||||
if _type == TYPE_SCRIPT:
|
if _type == TYPE_SCRIPT:
|
||||||
txoutputtype.script_type = self.types.OutputScriptType.PAYTOOPRETURN
|
txoutputtype.script_type = self.types.OutputScriptType.PAYTOOPRETURN
|
||||||
txoutputtype.op_return_data = bfh(address)[2:]
|
txoutputtype.op_return_data = trezor_validate_op_return_output_and_get_data(_type, address, amount)
|
||||||
elif _type == TYPE_ADDRESS:
|
elif _type == TYPE_ADDRESS:
|
||||||
txoutputtype.script_type = self.types.OutputScriptType.PAYTOADDRESS
|
txoutputtype.script_type = self.types.OutputScriptType.PAYTOADDRESS
|
||||||
txoutputtype.address = address
|
txoutputtype.address = address
|
||||||
|
|
Loading…
Add table
Reference in a new issue