Skip to content

Commit

Permalink
Merge pull request #669 from kdmukai/verify_p2tr_addresses_v2
Browse files Browse the repository at this point in the history
[New Feature] Enable basic p2tr address verification
  • Loading branch information
newtonick authored Jan 23, 2025
2 parents 8679461 + b541112 commit 1e9caa5
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
8 changes: 2 additions & 6 deletions src/seedsigner/views/seed_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1722,8 +1722,8 @@ def run(self):
destination = Destination(SeedSelectSeedView, view_args=dict(flow=Controller.FLOW__VERIFY_SINGLESIG_ADDR), skip_current_view=True)

elif self.controller.unverified_address["script_type"] == SettingsConstants.TAPROOT:
# TODO: add Taproot support
return Destination(NotYetImplementedView)
sig_type = SettingsConstants.SINGLE_SIG
destination = Destination(SeedSelectSeedView, view_args=dict(flow=Controller.FLOW__VERIFY_SINGLESIG_ADDR), skip_current_view=True)

derivation_path = embit_utils.get_standard_derivation_path(
network=self.controller.unverified_address["network"],
Expand Down Expand Up @@ -1816,10 +1816,6 @@ def __init__(self, seed_num: int = None):
self.sig_type = self.controller.unverified_address["sig_type"]
self.network = self.controller.unverified_address["network"]

if self.script_type == SettingsConstants.TAPROOT:
# TODO: Taproot addr verification
return Destination(NotYetImplementedView)

# TODO: This should be in `Seed` or `PSBT` utility class
embit_network = SettingsConstants.map_network_to_embit(self.network)

Expand Down
31 changes: 20 additions & 11 deletions tests/test_flows_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,16 +257,25 @@ def test__verify_address__singlesig__flow(self):
settings = controller.settings
settings.set_value(SettingsConstants.SETTING__NETWORK, SettingsConstants.REGTEST)

def load_address_into_decoder(view: scan_views.ScanView):
addrs = [
# Native segwit regtest receive addr @ index 6
view.decoder.add_data("bcrt1q4e9q5taxnsvc6m0uxv6h75mkzvnkxeqk6l90u2")
"bcrt1q4e9q5taxnsvc6m0uxv6h75mkzvnkxeqk6l90u2",

self.run_sequence([
FlowStep(MainMenuView, button_data_selection=MainMenuView.TOOLS),
FlowStep(tools_views.ToolsMenuView, button_data_selection=tools_views.ToolsMenuView.VERIFY_ADDRESS),
FlowStep(scan_views.ScanAddressView, before_run=load_address_into_decoder), # simulate read address QR
FlowStep(seed_views.AddressVerificationStartView, is_redirect=True),
FlowStep(seed_views.SeedSelectSeedView, screen_return_value=0),
FlowStep(seed_views.SeedAddressVerificationView),
FlowStep(seed_views.SeedAddressVerificationSuccessView),
])
# Taproot regtest change addr @ index 48
"bcrt1pj5v8ean2hc5lh2djsgfx4j9uc0n67942ngv6q9r49qv88ex5mrwsn3u4f7",
]

for test_addr in addrs:
def load_address_into_decoder(view: scan_views.ScanView):
# Native segwit regtest receive addr @ index 6
view.decoder.add_data(test_addr)

self.run_sequence([
FlowStep(MainMenuView, button_data_selection=MainMenuView.TOOLS),
FlowStep(tools_views.ToolsMenuView, button_data_selection=tools_views.ToolsMenuView.VERIFY_ADDRESS),
FlowStep(scan_views.ScanAddressView, before_run=load_address_into_decoder), # simulate read address QR
FlowStep(seed_views.AddressVerificationStartView, is_redirect=True),
FlowStep(seed_views.SeedSelectSeedView, screen_return_value=0),
FlowStep(seed_views.SeedAddressVerificationView),
FlowStep(seed_views.SeedAddressVerificationSuccessView),
])

0 comments on commit 1e9caa5

Please sign in to comment.