feat(wallet): add P2PKH, P2SH-P2WPKH, and P2TR (Taproot/BIP86) address types
- ScriptKind.Taproot (BIP86, purpose 86', P2WPKH → witness v1 bech32m plm1p) derivation wired in DerivationPaths and ChainProfiles (xprv/xpub headers, no SLIP-132 standard for P2TR); NBitcoin ScriptPubKeyType.TaprootBIP86 - Wizard step StepScriptType inserted between passphrase and password: 4 radio buttons (Legacy / Wrapped SegWit / Native SegWit★ / Taproot), localized in 6 languages; CreateOrRestore now uses SelectedScriptKind instead of hardcoded NativeSegwit; back navigation updated accordingly - BIP86 golden-vector tests (Bip86TaprootTests): output key verified against official Bitcoin BIP86 addresses, plm1p prefix asserted
This commit is contained in:
@@ -171,6 +171,54 @@
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Passo: scelta del tipo di script/indirizzi -->
|
||||
<StackPanel IsVisible="{Binding IsStepScriptType}" Spacing="12">
|
||||
<TextBlock Text="{Binding Loc[wiz.scripttype.title]}" FontSize="18" FontWeight="Bold"/>
|
||||
<TextBlock Text="{Binding Loc[wiz.scripttype.hint]}" TextWrapping="Wrap" Foreground="Gray"/>
|
||||
|
||||
<RadioButton GroupName="ScriptType"
|
||||
IsChecked="{Binding IsLegacySelected, Mode=OneWay}"
|
||||
Command="{Binding SelectLegacyCommand}">
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock Text="Legacy (P2PKH)" FontWeight="SemiBold"/>
|
||||
<TextBlock Text="{Binding Loc[wiz.scripttype.legacy.desc]}" Foreground="Gray" FontSize="12"/>
|
||||
</StackPanel>
|
||||
</RadioButton>
|
||||
|
||||
<RadioButton GroupName="ScriptType"
|
||||
IsChecked="{Binding IsWrappedSegwitSelected, Mode=OneWay}"
|
||||
Command="{Binding SelectWrappedSegwitCommand}">
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock Text="Wrapped SegWit (P2SH-P2WPKH)" FontWeight="SemiBold"/>
|
||||
<TextBlock Text="{Binding Loc[wiz.scripttype.wrapped.desc]}" Foreground="Gray" FontSize="12"/>
|
||||
</StackPanel>
|
||||
</RadioButton>
|
||||
|
||||
<RadioButton GroupName="ScriptType"
|
||||
IsChecked="{Binding IsNativeSegwitSelected, Mode=OneWay}"
|
||||
Command="{Binding SelectNativeSegwitCommand}">
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock Text="Native SegWit (P2WPKH)" FontWeight="SemiBold"/>
|
||||
<TextBlock Text="{Binding Loc[wiz.scripttype.native.desc]}" Foreground="Gray" FontSize="12"/>
|
||||
</StackPanel>
|
||||
</RadioButton>
|
||||
|
||||
<RadioButton GroupName="ScriptType"
|
||||
IsChecked="{Binding IsTaprootSelected, Mode=OneWay}"
|
||||
Command="{Binding SelectTaprootCommand}">
|
||||
<StackPanel Spacing="2">
|
||||
<TextBlock Text="Taproot (P2TR)" FontWeight="SemiBold"/>
|
||||
<TextBlock Text="{Binding Loc[wiz.scripttype.taproot.desc]}" Foreground="Gray" FontSize="12"/>
|
||||
</StackPanel>
|
||||
</RadioButton>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Spacing="10">
|
||||
<Button Content="{Binding Loc[wiz.back]}" Command="{Binding WizardBackCommand}"/>
|
||||
<Button Content="{Binding Loc[wiz.next]}" Classes="accent"
|
||||
Command="{Binding WizardNextFromScriptTypeCommand}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Passo finale: password del file (cifratura, stile Electrum) -->
|
||||
<StackPanel IsVisible="{Binding IsStepPassword}" Spacing="12">
|
||||
<TextBlock Text="{Binding Loc[wiz.password.title]}" FontSize="18" FontWeight="Bold"/>
|
||||
|
||||
Reference in New Issue
Block a user