btcpayserver/BTCPayServer/Views/Stores/ImportWallet/Xpub.cshtml
d11n f4fa7c927c
Wallet setup redesign (#2164)
* Prepare existing layouts and views

* Add icon view component and sprite svg

* Add wallet setup basics

* Add import method view basics

* Use external sprite file instead of inline svg

* Refactor hardware wallet setup flow

* Manually enter an xpub

* Prepare other views

* Update views and models

* Finalize wallet setup flow

* Updat tests, part 1

* Update tests, part 2

* Vaul: Fix missing retry button

* Add better Scan QR subtext

Still tbd.

* Make wallet account an advanced setting

* Prevent empty xpub

* Use textarea for seed input

* Remove redundant error message for missing file upload

* Confirm store updates after generating a new wallet

* Update wording

* Modify existing wallets

* Fix proposed method name

* Suggest using ColdCard Electrum export option only

Advise the user to use the electrum export of the coldcard instead of saying either electrum or wasabi export file … the electurm one contains more info, e.g. the wasabi one doesn't include the account key path.

* More concise WalletSetupMethod setting

* Test fix

* Update wallet removal code

* Fix back navigation quirk in change wallet case

* Fix behaviour on wallet enable/disable

* Fix initial wallet setup

* Improve modify view and messages

* Test fixes

* Seed import fix

Uses the correct form url for confirming addresses

* Quickfixes from design meeting

* Add enable toggle switch on modify page

* Confirm wallet removal

* Update setup view

* Update import view

* Icon finetuning

* Improve import options page

* Refactor QR code scanner

Allow for usage with and without modal

* Update copy and instructions on import pages

* Split generate options: Hot wallet and watch-only

* Implement hot wallet options correctly

* Minor test changes

* Navbar improvements

* Fix tables

* Fix badge color

* Routing related updates

Thanks @kukks for the suggestions!

* Wording updates

Thanks @kukks for the suggestions!

* Extend address types table for xpub import

Thanks @kukks for the suggestions!

* Rename controller

* Unify precondition checks

* Improve removal warning for hot wallets

* Add tooltip on why seed import is not recommended

* Add tooltip icon

* Add Specter import info
2021-02-11 19:48:54 +09:00

107 lines
3.5 KiB
Text

@model WalletSetupViewModel
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = $"Enter your extended public key";
}
@section Navbar {
<a asp-controller="Stores" asp-action="ImportWallet" asp-route-storeId="@Model.StoreId" asp-route-cryptoCode="@Model.CryptoCode" asp-route-method="">
<vc:icon symbol="back" />
</a>
}
<header class="text-center">
<h1>@ViewData["Title"]</h1>
<p class="lead text-secondary mt-3">
This key, also called "xpub", is used to generate individual destination addresses for your invoices.
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Wallet/#what-is-a-derivation-scheme" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
</p>
</header>
<form method="post" class="my-5">
<input asp-for="Config" type="hidden" />
<input asp-for="CryptoCode" type="hidden" />
<input asp-for="DerivationSchemeFormat" type="hidden" />
<input asp-for="AccountKey" type="hidden" />
<div class="form-group">
<label asp-for="DerivationScheme">Extended public key</label>
<textarea asp-for="DerivationScheme" class="form-control store-derivation-scheme text-monospace py-2" rows="2"></textarea>
<span asp-validation-for="DerivationScheme" class="text-danger"></span>
</div>
<button name="command" type="submit" class="btn btn-primary" value="save" id="Continue">Continue</button>
</form>
<table class="table table-sm">
<thead>
<tr>
<th>Address type</th>
<th>Example</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">P2WPKH</td>
<td class="text-monospace">xpub…</td>
</tr>
<tr>
<td class="text-monospace">zpub…</td>
</tr>
<tr>
<td class="text-monospace">wpkh(xpub…/0/*)</td>
</tr>
<tr>
<td class="text-monospace">wpkh([…/84'/0'/0']xpub…/0/*)</td>
</tr>
<tr>
<td rowspan="4">P2SH-P2WPKH</td>
<td class="text-monospace">xpub…-[p2sh]</td>
</tr>
<tr>
<td class="text-monospace">ypub…</td>
</tr>
<tr>
<td class="text-monospace">sh(wpkh(xpub…/0/*)</td>
</tr>
<tr>
<td class="text-monospace">sh(wpkh([…/49'/0'/0']xpub…/0/*)</td>
</tr>
<tr>
<td rowspan="3">P2PKH</td>
<td class="text-monospace">xpub…-[legacy]</td>
</tr>
<tr>
<td class="text-monospace">pkh([…/44'/0'/0']xpub…/0/*)</td>
</tr>
<tr>
<td class="text-monospace">pkh(xpub…/0/*)</td>
</tr>
<tr>
<td class="text-nowrap" rowspan="2">Multi-sig P2WSH</td>
<td class="text-monospace">2-of-xpub1…-xpub2…</td>
</tr>
<tr>
<td class="text-monospace">wsh(multi(2,<br>[…/48'/0'/0'/2']xpub…/0/*,<br>[…/48'/0'/0'/2']xpub…/0/*))</td>
</tr>
<tr>
<td class="text-nowrap" rowspan="2">Multi-sig P2SH-P2WSH</td>
<td class="text-monospace">2-of-xpub1…-xpub2…-[p2sh]</td>
</tr>
<tr>
<td class="text-monospace">sh(wsh(multi(2,<br>[…/48'/0'/0'/1']xpub…/0/*,<br>[…/48'/0'/0'/1']xpub…/0/*)))</td>
</tr>
<tr>
<td class="text-nowrap" rowspan="2">Multi-sig P2SH</td>
<td class="text-monospace">2-of-xpub1…-xpub2…-[legacy]</td>
</tr>
<tr>
<td class="text-monospace">sh(multi(2,<br>[…/45'/0]xpub…/0/*,<br>[…/45'/0]xpub…/0/*))</td>
</tr>
</tbody>
</table>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
}