Files
bip39/src/index.html
2024-11-01 12:00:39 +08:00

1529 lines
87 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="antialiased">
<head lang="en">
<meta charset="utf-8" />
<title>OneKey BIP39 Recovery Phrase</title>
<meta
content="Recovery Phrase for generating deterministic keys"
name="description"
/>
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<meta content="bitcoin mnemonic converter" name="description" />
<meta content="OneKey Team" name="author" />
<link
type="image/x-icon"
rel="icon"
href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII="
/>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" href="/favicon.ico" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#00b812">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="css/styles.css" />
</head>
<body>
<!-- Container -->
<div class="ok-container">
<!-- Header -->
<header class="ok-header">
<div>
<a
href="https://onekey.so/"
class="inline-flex md:ml-0.5"
>
<img
class="w-10 h-10"
src="/logo_green_vector.png"
alt="Logo"
>
</a>
</div>
<div>
<div class="dropdown js-dropdown">
<button id="languagePopoverBtn" class="inline-flex justify-center w-full px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-full shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-green-600" type="button" aria-expanded="false" aria-haspopup="true">
English
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 ml-2 -mr-1" aria-hidden="true"><path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg>
</button>
<div id="languagePopoverContent" class="dropdown__menu min-w-[120px]">
<a class="block p-2 text-sm text-left text-gray-700 transition rounded-md cursor-pointer hover:bg-gray-100 hover:text-gray-900" href="./index-zh.html">
中文
</a>
<a class="block p-2 text-sm text-left text-gray-700 transition rounded-md cursor-pointer hover:bg-gray-100 hover:text-gray-900">
English
</a>
</div>
</div>
</div>
</header>
<!-- Title -->
<div class="pb-4 mb-2 border-b border-gray-200 md:pb-8 md:mb-8 md:flex md:items-baseline">
<h1 class="mb-2 text-3xl font-bold md:text-4xl md:mb-0">Recovery Phrase Converter</h1>
<label class="flex items-center flex-shrink-0 p-2 -ml-2 transition rounded-md cursor-pointer md:ml-auto md:-mr-2 hover:bg-gray-100">
<input type="checkbox" class="w-5 h-5 privacy-screen-toggle ok-checkbox" />
<span class="font-medium text-gray-700">Hide private info</span>
</label>
</div>
<!-- Content -->
<div class="-mx-4 md:grid md:gap-4 md:grid-cols-12 md:mx-0">
<!-- Navigation -->
<div class="sticky top-0 self-start px-1 py-2 overflow-auto bg-white bg-opacity-70 backdrop-filter backdrop-saturate-150 backdrop-blur-lg md:px-0 md:py-0 md:col-span-4 md:top-8 lg:col-span-3">
<nav class="md:max-w-[240px] mr-8 space-x-2 md:space-x-0 md:space-y-2 text-gray-600 flex md:flex-col" aria-label="Sidebar">
<!-- Current: "bg-gray-100 text-gray-900", Default: "text-gray-600 hover:bg-gray-50 hover:text-gray-900" -->
<a href="#section-1" class="flex items-center px-3 py-2 text-sm font-medium rounded-md js-anchor-link hover:bg-gray-50 hover:text-gray-900">
<svg viewBox="0 0 24 24" height="24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="hidden w-5 h-5 mr-3 text-gray-400 md:block">
<g transform="matrix(1,0,0,1,0,0)"><path d="M23.5,0h-1a.5.5,0,0,0-.431.247l-4.16,7.072a.5.5,0,0,0,.077.607l3.921,3.921a.5.5,0,0,0,.666.036l1.239-.992A.5.5,0,0,0,24,10.5V.5A.5.5,0,0,0,23.5,0Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M16.868,8.929a.5.5,0,0,0-.491-.127l-2.9.827a2.484,2.484,0,0,0-1.717,1.717L9.488,19.312a.069.069,0,0,0,.116.068l5.63-5.631A.75.75,0,1,1,16.3,14.81l-5.632,5.632a.062.062,0,0,0-.01.077.064.064,0,0,0,.072.028l7.965-2.276a2.488,2.488,0,0,0,1.72-1.726l.778-2.945a.5.5,0,0,0-.13-.481Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M8.3,21.283A3.464,3.464,0,0,1,6,22a3.175,3.175,0,0,1-2.644-1.045c-.636-.965-.441-2.714.564-5.059,2.017-4.709,4.134-8.436,2.8-11.62C5.969,2.5,4.264,1.156,1.351.065a1,1,0,1,0-.7,1.871C2.978,2.81,4.36,3.828,4.872,5.05c.955,2.277-.9,5.646-2.791,10.059-1.3,3.036-1.434,5.373-.4,6.947A5.057,5.057,0,0,0,6,24,5.3,5.3,0,0,0,9.7,22.707a.991.991,0,0,0,.006-1.395A1.009,1.009,0,0,0,8.3,21.283Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path></g>
</svg>
<span class="truncate">
Recovery Phrase
</span>
</a>
<a href="#section-2" class="flex items-center px-3 py-2 text-sm font-medium rounded-md js-anchor-link hover:bg-gray-50 hover:text-gray-900">
<svg viewBox="0 0 24 24" height="24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="hidden w-5 h-5 mr-3 text-gray-400 md:block"><g transform="matrix(1,0,0,1,0,0)"><path d="M10.5,23.02a.98.98,0,0,0-.98-.979H7.562a.98.98,0,1,0,0,1.959H9.521A.98.98,0,0,0,10.5,23.02Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M4.294,21.4a4.434,4.434,0,0,1-1.625-1.736.98.98,0,1,0-1.738.906,6.4,6.4,0,0,0,2.343,2.5.968.968,0,0,0,.509.143A.979.979,0,0,0,4.294,21.4Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M2.115,13.1A6.361,6.361,0,0,0,.408,16.072a.979.979,0,0,0,.711,1.189.945.945,0,0,0,.24.03.98.98,0,0,0,.949-.74A4.4,4.4,0,0,1,3.49,14.492a.98.98,0,1,0-1.375-1.4Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M17.358,13.224a.98.98,0,0,0,0-1.959h-1.47a.98.98,0,0,0,0,1.959Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M22.5,8.74a.979.979,0,0,0-1.342.347,4.383,4.383,0,0,1-1.171,1.307.98.98,0,1,0,1.173,1.57,6.387,6.387,0,0,0,1.688-1.883A.981.981,0,0,0,22.5,8.74Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M23.622,5.807a1.075,1.075,0,0,0-.018-.193,6.362,6.362,0,0,0-1.554-3.06.98.98,0,1,0-1.444,1.324,4.393,4.393,0,0,1,1.075,2.116.981.981,0,0,0,.96.79.9.9,0,0,0,.191-.019A.979.979,0,0,0,23.622,5.807Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M18.823,1.578A.978.978,0,0,0,17.935.516C17.744.5,17.553.49,17.358.49h-.98a.98.98,0,0,0,0,1.959h.98c.136,0,.27.007.4.018.03,0,.06,0,.088,0A.979.979,0,0,0,18.823,1.578Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M8.579,9a.487.487,0,0,0,.452.3h1.225a.245.245,0,0,1,.245.245v9.8a1.469,1.469,0,0,0,2.938,0v-9.8a.245.245,0,0,1,.245-.245h1.225a.49.49,0,0,0,.346-.836L12.316,5.531a.489.489,0,0,0-.692,0L8.685,8.47A.49.49,0,0,0,8.579,9Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M10.011 1.959 A1.959 1.959 0 1 0 13.929 1.959 A1.959 1.959 0 1 0 10.011 1.959 Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M6.582,11.265a.98.98,0,0,0,0,1.959h1.47a.98.98,0,0,0,0-1.959Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path></g></svg>
<span class="truncate">
Derivation Path
</span>
</a>
<a href="#section-3" class="flex items-center px-3 py-2 text-sm font-medium rounded-md js-anchor-link hover:bg-gray-50 hover:text-gray-900">
<svg viewBox="0 0 24 24" height="24" width="24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="hidden w-5 h-5 mr-3 text-gray-400 md:block"><g transform="matrix(1,0,0,1,0,0)"><path d="M21,0H3A3,3,0,0,0,0,3V18a3,3,0,0,0,3,3H9.5a1,1,0,0,0,0-2H3a1,1,0,0,1-1-1V7.5A.5.5,0,0,1,2.5,7h19a.5.5,0,0,1,.5.5V9a1,1,0,0,0,2,0V3A3,3,0,0,0,21,0ZM11,3.5a1,1,0,1,1-1-1A1,1,0,0,1,11,3.5Zm-3,0a1,1,0,1,1-1-1A1,1,0,0,1,8,3.5Zm-3,0a1,1,0,1,1-1-1A1,1,0,0,1,5,3.5Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M11.942,9.913a1,1,0,0,0-1.414.03L7.118,13.5a.25.25,0,0,1-.181.077.246.246,0,0,1-.18-.077l-.535-.558a1,1,0,0,0-1.444,1.384l1.438,1.5a1,1,0,0,0,1.443,0l4.313-4.5A1,1,0,0,0,11.942,9.913Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M17.382,16.118a.25.25,0,0,1-.25.063A3.853,3.853,0,0,0,16,16a4,4,0,1,0,4,4,3.841,3.841,0,0,0-.181-1.131.249.249,0,0,1,.063-.25l4.045-4.046A.248.248,0,0,0,24,14.4V12.25a.25.25,0,0,0-.25-.25H21.6a.249.249,0,0,0-.177.073ZM16,21.5A1.5,1.5,0,1,1,17.5,20,1.5,1.5,0,0,1,16,21.5Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path></g></svg>
<span class="truncate">
Derived Addresses
</span>
</a>
<a href="#section-4" class="flex items-center px-3 py-2 text-sm font-medium rounded-md js-anchor-link hover:bg-gray-50 hover:text-gray-900">
<svg viewBox="0 0 24 24" height="24" width="24" fill="currentColor" class="hidden w-5 h-5 mr-3 text-gray-400 md:block" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(1,0,0,1,0,0)"><path d="M24,3.517a2.018,2.018,0,0,0-.609-1.441,1.915,1.915,0,0,0-1.438-.56c-.29.008-.58.021-.87.037A.554.554,0,0,1,20.5,1a.5.5,0,0,0-.547-.5,25.167,25.167,0,0,0-4.081.7.5.5,0,0,0-.372.484V8a.5.5,0,0,0,.854.354l1.292-1.293a.5.5,0,0,1,.708,0l1.293,1.293A.5.5,0,0,0,20.5,8V4.065a.5.5,0,0,1,.467-.5c.168-.011.337-.02.51-.029a.5.5,0,0,1,.525.5l-.013,13.5a.5.5,0,0,1-.479.5A22.909,22.909,0,0,0,13.7,19.543a.5.5,0,0,1-.7-.458V6c0-.19.256-.46.753-.752A.5.5,0,0,0,14,4.816V3.688a.5.5,0,0,0-.722-.448,6.686,6.686,0,0,0-.982.585.5.5,0,0,1-.592,0C9.755,2.383,5.889,1.63,2.047,1.516a1.927,1.927,0,0,0-1.438.56A2.018,2.018,0,0,0,0,3.517v14.5a2,2,0,0,0,1.956,2C7.923,20.186,11,21.834,11,22.5a1,1,0,0,0,2,0c0-.666,3.077-2.314,9.044-2.486a2,2,0,0,0,1.956-2ZM2.478,18.033a.5.5,0,0,1-.478-.5l-.012-13.5a.5.5,0,0,1,.523-.5C8.113,3.789,11,5.357,11,6V19.086a.5.5,0,0,1-.7.457A22.937,22.937,0,0,0,2.478,18.033Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M9.257,7.443a24.06,24.06,0,0,0-5.184-1.02.75.75,0,1,0-.146,1.493,22.661,22.661,0,0,1,4.853.949.75.75,0,1,0,.477-1.422Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M9.257,11.616A24.036,24.036,0,0,0,4.073,10.6a.75.75,0,1,0-.146,1.493,22.635,22.635,0,0,1,4.853.949.75.75,0,0,0,.477-1.422Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M9.257,15.789a24.06,24.06,0,0,0-5.184-1.02.75.75,0,1,0-.146,1.493,22.538,22.538,0,0,1,4.853.949.75.75,0,0,0,.477-1.422Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M15.22,13.038a22.635,22.635,0,0,1,4.853-.949.75.75,0,1,0-.146-1.493,24.036,24.036,0,0,0-5.184,1.02.75.75,0,0,0,.477,1.422Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path><path d="M15.22,17.211a22.538,22.538,0,0,1,4.853-.949.75.75,0,1,0-.146-1.493,24.06,24.06,0,0,0-5.184,1.02.75.75,0,0,0,.477,1.422Z" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"></path></g></svg>
<span class="truncate">
More info
</span>
</a>
</nav>
</div>
<!-- Main -->
<div class="space-y-8 md:col-span-8 lg:col-span-9">
<!-- Card Mnemonic -->
<div id="section-1" class="ok-card js-section">
<!-- Card / Header -->
<div class="ok-card__header">
<!-- Card / Header / Title & Descriptions -->
<div class="mr-4">
<h2 class="ok-card__header-title">Recovery Phrase</h2>
<p class="max-w-2xl mt-1 text-sm text-gray-500">
You can enter an existing BIP39 recovery phrase, or generate a new random one.
</p>
</div>
<!-- Card / Header / Controls -->
<div class="dropdown js-dropdown">
<button id="recoveryPhrasePopoverBtn" type="button" class="inline-flex items-center justify-center flex-shrink-0 w-8 h-8 text-gray-400 bg-white rounded-full hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500" aria-expanded="false" aria-haspopup="true">
<span class="sr-only">Open options</span>
<!-- Heroicon name: solid/dots-vertical -->
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
</svg>
</button>
<div id="recoveryPhrasePopoverContent" class="dropdown__menu">
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input type="checkbox" class="use-entropy ok-checkbox" />
<span class="text-sm text-gray-700 whitespace-nowrap">Show entropy details</span>
</label>
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input type="checkbox" class="showSplitMnemonic ok-checkbox" />
<span class="text-sm text-gray-700 whitespace-nowrap">Show split recovery phrase cards</span>
</label>
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input type="checkbox" class="showBip85 ok-checkbox" />
<span class="text-sm text-gray-700 whitespace-nowrap">Show BIP85</span>
</label>
</div>
</div>
</div>
<!-- Card / Body -->
<div class="ok-card__body">
<!-- Entropy Details -->
<div class="hidden entropy-container">
<div class="insert-card">
<!-- Warning -->
<p class="flex p-2 text-sm text-yellow-600 border border-yellow-200 rounded-md bg-yellow-50">
<svg xmlns="http://www.w3.org/2000/svg" class="flex-shrink-0 w-5 h-5 mr-2 text-yellow-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>
</svg>
<span>Entropy is an advanced feature. Your recovery phrase may be insecure if this feature is used incorrectly. <a class="underline" href="#entropy-notes">Read more</a></span>
</p>
<!-- Valid entropy values -->
<div>
<p class="mb-1 ok-label">Valid entropy values include:</p>
<ul class="flex flex-wrap -mx-2.5 -mb-1.5">
<li class="mx-1">
<label class="flex items-start p-1.5 transition rounded-md cursor-pointer hover:bg-gray-200">
<div class="flex items-center h-5">
<input class="ok-radio" type="radio" name="entropy-type" value="binary" />
</div>
<div class="ml-2 text-sm">
<p class="font-medium text-gray-700">Binary <span class="font-normal">[0-1]</span></p>
<p class="text-gray-500">101010011</p>
</div>
</label>
</li>
<li class="mx-1">
<label class="flex items-start p-1.5 transition rounded-md cursor-pointer hover:bg-gray-200">
<div class="flex items-center h-5">
<input class="ok-radio" type="radio" name="entropy-type" value="base 6" />
</div>
<div class="ml-2 text-sm">
<p class="font-medium text-gray-700">Base 6 <span class="font-normal">[0-5]</span></p>
<p class="text-gray-500">123434014</p>
</div>
</label>
</li>
<li class="mx-1">
<label class="flex items-start p-1.5 transition rounded-md cursor-pointer hover:bg-gray-200">
<div class="flex items-center h-5">
<input class="ok-radio" type="radio" name="entropy-type" value="dice" />
</div>
<div class="ml-2 text-sm">
<p class="font-medium text-gray-700">Dice <span class="font-normal">[1-6]</span></p>
<p class="text-gray-500">62535634</p>
</div>
</label>
</li>
<li class="mx-1">
<label class="flex items-start p-1.5 transition rounded-md cursor-pointer hover:bg-gray-200">
<div class="flex items-center h-5">
<input class="ok-radio" type="radio" name="entropy-type" value="base 10" />
</div>
<div class="ml-2 text-sm">
<p class="font-medium text-gray-700">Base 10 <span class="font-normal">[0-9]</span></p>
<p class="text-gray-500">90834528</p>
</div>
</label>
</li>
<li class="mx-1">
<label class="flex items-start p-1.5 transition rounded-md cursor-pointer hover:bg-gray-200">
<div class="flex items-center h-5">
<input class="ok-radio"
type="radio"
name="entropy-type"
value="hexadecimal"
checked
/>
</div>
<div class="ml-2 text-sm">
<p class="font-medium text-gray-700">Hex <span class="font-normal">[0-9A-F]</span></p>
<p class="text-gray-500">4187a8bfd9</p>
</div>
</label>
</li>
<li class="mx-1">
<label class="flex items-start p-1.5 transition rounded-md cursor-pointer hover:bg-gray-200">
<div class="flex items-center h-5">
<input class="ok-radio" type="radio" name="entropy-type" value="card" />
</div>
<div class="ml-2 text-sm">
<p class="font-medium text-gray-700">Card <span class="font-normal">[A2-9TJQK][CDHS]</span></p>
<p class="text-gray-500">ahqs9dtc</p>
</div>
</label>
</li>
</ul>
</div>
<!-- Entropy -->
<div>
<label for="entropy" class="mb-1 ok-label">Entropy</label>
<textarea
id="entropy"
rows="2"
class="entropy private-data ok-textarea"
placeholder="Accepts either binary, base 6, 6-sided dice, base 10, hexadecimal or cards"
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
<div class="hidden row filter-warning">
<p class="mt-2 text-sm text-red-600">Some characters have been discarded.</p>
</div>
</div>
<!-- Description list -->
<div class="grid grid-cols-2 gap-6">
<div>
<p class="mb-1 ok-label cursor-help" title="Based on estimates from zxcvbn using Filtered Entropy">Time To Crack</p>
<div class="text-sm text-gray-900">
<span class="crack-time"></span>
</div>
</div>
<div>
<p class="mb-1 ok-label">Event Count</p>
<div class="text-sm text-gray-900">
<span class="event-count"></span>
</div>
</div>
<div>
<p class="mb-1 ok-label">Entropy Type</p>
<div class="text-sm text-gray-900">
<span class="type"></span>
</div>
</div>
<div>
<p class="mb-1 ok-label">Avg Bits Per Event</p>
<div class="text-sm text-gray-900">
<span class="bits-per-event"></span>
</div>
</div>
<div>
<p class="mb-1 ok-label">Raw Entropy Words</p>
<div class="text-sm text-gray-900">
<span class="word-count"></span>
</div>
</div>
<div>
<p class="mb-1 ok-label">Total Bits</p>
<div class="text-sm text-gray-900">
<span class="bits"></span>
</div>
</div>
<div class="col-span-full">
<p class="mb-1 ok-label">Filtered Entropy</p>
<div class="text-sm text-gray-900">
<span class="filtered private-data"></span>
</div>
</div>
<div class="col-span-full">
<p class="mb-1 ok-label">Raw Binary</p>
<div class="text-sm text-gray-900">
<span class="binary private-data"></span>
</div>
</div>
<div class="col-span-full md:col-span-1">
<p class="mb-1 ok-label">Recovery Phrase Length</p>
<select class="w-full mnemonic-length ok-select">
<option value="raw" selected>
Use Raw Entropy (3 words per 32 bits)
</option>
<option value="12">12 <span>Words</span></option>
<option value="15">15 <span>Words</span></option>
<option value="18">18 <span>Words</span></option>
<option value="21">21 <span>Words</span></option>
<option value="24">24 <span>Words</span></option>
</select>
<p class="hidden weak-entropy-override-warning">
<span class="ok-helper-text ok-helper-text--danger">
The recovery phrase will appear more secure than it really is.
</span>
</p>
</div>
<div class="col-span-full md:col-span-1">
<p class="mb-1 ok-label">Binary Checksum</p>
<div class="text-sm text-gray-900">
<span class="checksum private-data">&nbsp;</span>
</div>
</div>
<div class="col-span-full">
<p class="mb-1 ok-label">Word Indexes</p>
<div class="text-sm text-gray-900">
<span class="word-indexes private-data">&nbsp;</span>
</div>
</div>
</div>
</div>
</div>
<!-- Generate Code -->
<div class="insert-card">
<div class="generate-container">
<div class="sm:flex sm:justify-between sm:space-x-2">
<!-- Mnemonic Language Selector -->
<select id="strength" class="w-full mb-2 sm:mb-0 strength ok-select sm:w-auto">
<option value="12" selected>12 words</option>
<option value="18">18 words</option>
<option value="24">24 words</option>
<option class="text-black" disabled>──────────</option>
<option value="3">3 words</option>
<option value="6">6 words</option>
<option value="9">9 words</option>
<option value="15">15 words</option>
<option value="21">21 words</option>
</select>
<!-- Generate Button -->
<button type="button" class="inline-flex items-center justify-center w-full px-4 py-2 text-sm font-medium text-white transition bg-green-600 border border-transparent rounded-md shadow-sm generate hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500 sm:w-auto">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 mr-2 -ml-1" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z" clip-rule="evenodd" />
</svg>
GENERATE
</button>
</div>
<!-- Warning Text -->
<p class="flex hidden p-2 mt-4 text-sm text-yellow-600 border border-yellow-200 rounded-md warning help-block bg-yellow-50">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 mr-2 text-yellow-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
Recovery phrase with less than 12 words have low entropy and may be guessed by an attacker.
</p>
</div>
<!-- Recovery Code -->
<div>
<textarea
id="phrase"
class="w-full shadow phrase private-data ok-textarea sm:text-lg"
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
placeholder="Typing or generate Recovery Phrase"
rows="3"
></textarea>
<p class="ok-helper-text">Typing your own words will probably not work how you expect, since the words require a particular structure (the last word contains a checksum).</p>
</div>
<div class="flex flex-wrap -m-1 text-gray-600 languages">
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#english">English</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#japanese" title="Japanese">日本語</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#spanish" title="Spanish">Español</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#chinese_simplified" title="Chinese (Simplified)"
>中文(简体)</a
>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#chinese_traditional" title="Chinese (Traditional)"
>中文(繁體)</a
>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#french" title="French">Français</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#italian" title="Italian">Italiano</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#korean" title="Korean">한국어</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#czech" title="Czech">Čeština</a>
<a class="py-1 px-1.5 text-sm border border-gray-300 rounded-md hover:bg-gray-100 hover:text-gray-900 transition m-1" href="#portuguese" title="Portuguese">Português</a>
</div>
</div>
<!-- BIP39 Split Mnemonic -->
<div class="hidden splitMnemonic">
<div class="insert-card">
<div>
<label for="phrase" class="mb-1 ok-label"
>BIP39 Split Recovery Phrase</label
>
<div>
<textarea
id="phraseSplit"
class="phraseSplit private-data ok-textarea"
title="Only 2 of 3 cards needed to recover."
rows="4"
></textarea>
<p class="help-block ok-helper-text ok-helper-text--danger">
<span id="phraseSplitWarn" class="phraseSplitWarn"></span>
</p>
</div>
</div>
</div>
</div>
<!-- BIP39 Passphrase -->
<div>
<div class="flex justify-between mb-1">
<label for="passphrase" class="ok-label">BIP39 Passphrase</label>
<span class="text-sm text-gray-500" id="email-optional">Optional</span>
</div>
<textarea
id="passphrase"
class="passphrase private-data ok-textarea"
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
<!-- BIP39 Seed -->
<div>
<label for="seed" class="mb-1 ok-label">BIP39 Seed</label>
<textarea
id="seed"
class="seed private-data ok-textarea"
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
<!-- Coin -->
<div>
<label for="network-phrase" class="mb-1 ok-label">Coin</label>
<select id="network-phrase" class="max-w-full network ok-select">
<!-- populated by javascript -->
</select>
</div>
<!-- BIP32 Root Key -->
<div>
<label for="root-key" class="mb-1 ok-label">BIP32 Root Key</label>
<textarea
id="root-key"
class="root-key private-data ok-textarea"
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
<!-- BIP85 -->
<div class="hidden bip85">
<div class="space-y-4 md:space-y-6 insert-card">
<!-- Warning -->
<p class="flex p-2 text-sm text-yellow-600 border border-yellow-200 rounded-md bg-yellow-50">
<svg xmlns="http://www.w3.org/2000/svg" class="flex-shrink-0 w-5 h-5 mr-2 text-yellow-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>
</svg>
<span>This is an advanced feature and should only be used if you understand what it does. Please read the <a class="underline" href="https://github.com/bitcoin/bips/blob/master/bip-0085.mediawiki" target="_blank">BIP85 spec</a> for more information.</span>
</p>
<!-- Form -->
<div class="grid gap-6 md:grid-cols-2">
<!-- BIP85 Application -->
<div>
<label for="bip85-application" class="mb-1 ok-label">BIP85 Application</label>
<div>
<select id="bip85-application" class="w-full ok-select">
<option value="bip39" selected>BIP39</option>
<option value="wif">WIF</option>
<option value="xprv">Xprv</option>
<option value="hex">Hex</option>
</select>
</div>
</div>
<!-- BIP85 Mnemonic Language -->
<div class="bip85-mnemonic-language-input">
<label for="bip85-mnemonic-language" class="mb-1 ok-label">BIP85 Recovery Phrase Language</label>
<div class="col-sm-10 languages">
<select
id="bip85-mnemonic-language"
class="w-full strength ok-select"
>
<option value="0" selected>English</option>
<!--<option value="1">日本語</option>
<option value="2">한국어</option>
<option value="3">Español</option>
<option value="4">中文(简体)</option>
<option value="5">中文(繁體)</option>
<option value="6">Français</option>
<option value="7">Italiano</option>
<option value="8">Čeština</option>
<option value="9">Português</option>-->
</select>
</div>
</div>
<!-- BIP85 Mnemonic Length -->
<div class="bip85-mnemonic-length-input">
<label for="bip85-mnemonic-length" class="mb-1 ok-label">BIP85 Recovery Phrase Length</label>
<select id="bip85-mnemonic-length" class="w-full strength ok-select">
<option value="12" selected>12</option>
<option value="18">18</option>
<option value="24">24</option>
</select>
</div>
<!-- BIP85 Bytes -->
<div class="bip85-bytes-input">
<label for="bip85-bytes" class="mb-1 ok-label">BIP85 Bytes</label>
<input
id="bip85-bytes"
type="text"
class="change ok-input"
value="64"
/>
</div>
<!-- BIP85 Index -->
<div class="bip85-index-input">
<label for="bip85-index" class="mb-1 ok-label">BIP85 Index</label>
<input
id="bip85-index"
type="text"
class="change ok-input"
value="0"
/>
</div>
<!-- BIP85 Child Key -->
<div class="col-span-full">
<label for="phrase" class="mb-1 ok-label">BIP85 Child Key</label>
<textarea
id="bip85Field"
data-show-qr
class="bip85Field private-data ok-textarea"
title="BIP85 Child Key"
rows="3"
></textarea>
<p class="ok-helper-text">
The value of this field is not used elsewhere on this page. It can be used as a new key. In case of the BIP39 application, you can paste it into the "BIP39 Recovery Phrase" field to use it as a new recovery phrase.
</p>
</div>
</div>
</div>
</div>
<!-- Prefixes show when Coin is LTC - Litecoin -->
<div class="hidden form-group litecoin-ltub-container">
<label for="litecoin-use-ltub" class="mb-1 col-sm-2 control-label ok-label"
>Prefixes</label
>
<div class="col-sm-10 checkbox">
<label class="flex items-center p-2 -ml-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input
type="checkbox"
id="litecoin-use-ltub"
class="litecoin-use-ltub ok-checkbox"
checked="checked"
/>
<div class="text-sm text-gray-700">
Use <code>Ltpv / Ltub</code> instead of
<code>xprv / xpub</code>
</div>
</label>
</div>
</div>
</div>
</div>
<!-- Card Derivation Path -->
<div id="section-2" class="ok-card js-section">
<div class="flex-col pb-0 ok-card__header">
<h2 class="ok-card__header-title">Derivation Path</h2>
<!-- Tabs -->
<ul class="flex mt-2 -mb-px -mr-4 space-x-8 overflow-auto derivation-type nav nav-tabs" role="tablist">
<li id="bip32-tab">
<a href="#bip32" role="tab" data-toggle="tab" class="ok-tab">BIP32</a>
</li>
<li id="bip44-tab" class="active">
<a href="#bip44" role="tab" data-toggle="tab" class="ok-tab">BIP44</a>
</li>
<li id="bip49-tab">
<a href="#bip49" role="tab" data-toggle="tab" class="ok-tab">BIP49</a>
</li>
<li id="bip84-tab">
<a href="#bip84" role="tab" data-toggle="tab" class="ok-tab">BIP84</a>
</li>
<li id="bip141-tab">
<a href="#bip141" role="tab" data-toggle="tab" class="ok-tab">BIP141</a>
</li>
</ul>
</div>
<div class="ok-card__body">
<div class="derivation-type tab-content">
<div id="bip44" class="tab-pane active">
<div class="grid grid-cols-2 gap-6">
<div class="form-group">
<label for="purpose-bip44" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose"
target="_blank"
>Purpose</a
>
</label>
<input
id="purpose-bip44"
type="text"
class="purpose form-control ok-input"
value="44"
readonly
/>
</div>
<div class="form-group">
<label for="coin-bip44" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types"
target="_blank"
>Coin</a
>
</label>
<div class="col-sm-10">
<input
id="coin-bip44"
type="text"
class="coin form-control ok-input"
value="0"
readonly
/>
</div>
</div>
<div class="form-group">
<label for="account-bip44" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account"
target="_blank"
>Account</a
>
</label>
<div class="col-sm-10">
<input
id="account-bip44"
type="text"
class="account form-control ok-input"
value="0"
/>
</div>
</div>
<div class="form-group">
<label for="change-bip44" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change"
target="_blank"
>External / Internal</a
>
</label>
<div class="col-sm-10">
<input
id="change-bip44"
type="text"
class="change form-control ok-input"
value="0"
/>
</div>
</div>
<div class="insert-card col-span-full">
<div>
<h3 class="font-medium text-gray-900">Account extended keys</h3>
<p class="mt-1 text-sm text-gray-500">The account extended keys can be used for importing to most BIP44 compatible wallets, such as mycelium or electrum.</p>
</div>
<div class="form-group">
<label for="account-xprv" class="mb-1 col-sm-2 control-label ok-label">
<span>Private Key</span>
</label>
<div class="col-sm-10">
<textarea
id="account-xprv-bip44"
type="text"
class="account-xprv private-data form-control ok-textarea"
readonly
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
<div class="form-group">
<label for="account-xpub" class="mb-1 col-sm-2 control-label ok-label">
<span>Public Key</span>
</label>
<div class="col-sm-10">
<textarea
id="account-xpub-bip44"
type="text"
class="account-xpub form-control ok-textarea"
readonly
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
</div>
<div class="form-group col-span-full">
<label for="bip44-path" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Derivation Path</label
>
<input
id="bip44-path"
type="text"
class="path form-control ok-input"
value="m/44'/0'/0'/0"
readonly="readonly"
/>
<p class="ok-helper-text">
The BIP32 derivation path and extended keys are the basis for the derived addresses.
</p>
</div>
</div>
</div>
<div id="bip32" class="tab-pane">
<div class="grid grid-cols-2 gap-6">
<div class="form-group">
<label for="bip32-client" class="mb-1 col-sm-2 control-label ok-label"
>Client</label
>
<div class="col-sm-10">
<select id="bip32-client" class="w-full client form-control ok-select">
<option value="custom">Custom derivation path</option>
<!-- populated by javascript -->
</select>
</div>
</div>
<div class="form-group col-span-full">
<label for="bip32-path" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Derivation Path</label
>
<div class="col-sm-10">
<input
id="bip32-path"
type="text"
class="path form-control ok-input"
value="m/0"
/>
</div>
</div>
<div class="form-group">
<label for="core-path" class="mb-1 col-sm-2 control-label ok-label"
>Bitcoin Core</label
>
<div class="col-sm-10">
<p class="text-sm text-gray-900 form-control no-border">
Use path <code>m/0'/0'</code> with hardened addresses.
</p>
<p class="form-control no-border ok-helper-text">
For more info see the
<a
href="https://github.com/bitcoin/bitcoin/pull/8035"
target="_blank" class="underline"
>Bitcoin Core BIP32 implementation</a
>
</p>
</div>
</div>
<div class="form-group">
<label for="core-path" class="mb-1 col-sm-2 control-label ok-label"
>Multibit</label
>
<div class="col-sm-10">
<p class="text-sm text-gray-900 form-control no-border">
<span>Use path <code>m/0'/0</code>.</span>
<span
>For change addresses use path
<code>m/0'/1</code>.</span
>
</p>
<p class="form-control no-border ok-helper-text">
<span>For more info see</span>
<a href="https://multibit.org/" target="_blank" class="underline"
>MultiBit HD</a
>
</p>
</div>
</div>
<div class="form-group col-span-full">
<label class="mb-1 col-sm-2 control-label ok-label">Block Explorers</label>
<div class="col-sm-10">
<p class="text-sm text-gray-900 form-control no-border">
<span>Use path <code>m/44'/0'/0'</code>.</span>
<span
>Only enter the <code>xpub</code> extended key into
block explorer search fields, never the
<code>xprv</code> key.</span
>
</p>
<p class="form-control no-border ok-helper-text">
<span>Can be used with</span>:
<a href="https://blockchain.info/" target="_blank" class="underline"
>blockchain.info</a
>
</p>
</div>
</div>
</div>
</div>
<div id="bip49" class="tab-pane">
<div class="hidden unavailable">
<p>BIP49 is unavailable for this coin.</p>
</div>
<div class="available">
<div class="grid grid-cols-2 gap-6">
<div class="form-group">
<label for="purpose-bip49" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose"
target="_blank"
>Purpose</a
>
</label>
<div class="col-sm-10">
<input
id="purpose-bip49"
type="text"
class="purpose form-control ok-input"
value="49"
readonly
/>
</div>
</div>
<div class="form-group">
<label for="coin-bip49" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types"
target="_blank"
>Coin</a
>
</label>
<div class="col-sm-10">
<input
id="coin-bip49"
type="text"
class="coin form-control ok-input"
value="0"
readonly
/>
</div>
</div>
<div class="form-group">
<label for="account-bip49" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account"
target="_blank"
>Account</a
>
</label>
<div class="col-sm-10">
<input
id="account-bip49"
type="text"
class="account form-control ok-input"
value="0"
/>
</div>
</div>
<div class="form-group">
<label for="change-bip49" class="mb-1 col-sm-2 control-label ok-label">
<a
href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change"
target="_blank"
>External / Internal</a
>
</label>
<div class="col-sm-10">
<input
id="change-bip49"
type="text"
class="change form-control ok-input"
value="0"
/>
</div>
</div>
<div class="insert-card col-span-full">
<div>
<h3 class="font-medium text-gray-900">Account extended keys</h3>
<p class="mt-1 text-sm text-gray-500">The account extended keys can be used for importing to most BIP49 compatible wallets.</p>
</div>
<div class="form-group">
<label for="account-xprv" class="mb-1 col-sm-2 control-label ok-label">
<span>Private Key</span>
</label>
<div class="col-sm-10">
<textarea
id="account-xprv-bip49"
type="text"
class="account-xprv private-data form-control ok-textarea"
readonly
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
<div class="form-group">
<label for="account-xpub" class="mb-1 col-sm-2 control-label ok-label">
<span>Public Key</span>
</label>
<div class="col-sm-10">
<textarea
id="account-xpub-bip49"
type="text"
class="account-xpub form-control ok-textarea"
readonly
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
</div>
<div class="form-group col-span-full">
<label for="bip49-path" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Derivation Path</label
>
<div class="col-sm-10">
<input
id="bip49-path"
type="text"
class="path form-control ok-input"
value="m/49'/0'/0'/0"
readonly="readonly"
/>
<p class="ok-helper-text">
The BIP32 derivation path and extended keys are the basis for the derived addresses.
</p>
</div>
</div>
</div>
</div>
</div>
<div id="bip141" class="tab-pane">
<div class="hidden unavailable">
<p>BIP141 is unavailable for this coin.</p>
</div>
<div class="available">
<div class="grid grid-cols-2 gap-6">
<div class="form-group">
<label for="bip141-path" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Derivation Path</label
>
<div class="col-sm-10">
<input
id="bip141-path"
type="text"
class="bip141-path form-control ok-input"
value="m/0"
/>
</div>
</div>
<div class="form-group">
<label class="mb-1 col-sm-2 control-label ok-label"
>Script Semantics</label
>
<div class="col-sm-10">
<select class="w-full form-control bip141-semantics ok-select">
<option value="p2wpkh">P2WPKH</option>
<option value="p2wpkh-p2sh" selected>
P2WPKH nested in P2SH
</option>
<option value="p2wsh">P2WSH (1-of-1 multisig)</option>
<option value="p2wsh-p2sh">
P2WSH nested in P2SH (1-of-1 multisig)
</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div id="bip84" class="tab-pane">
<div class="hidden unavailable">
<div class="form-group">
<div class="col-sm-2"></div>
<div class="col-sm-10">
<p>BIP84 is unavailable for this coin.</p>
</div>
</div>
</div>
<div class="available">
<div class="grid grid-cols-2 gap-6">
<div class="form-group">
<label for="purpose-bip84" class="mb-1 col-sm-2 control-label ok-label">
Purpose
</label>
<div class="col-sm-10">
<input
id="purpose-bip84"
type="text"
class="purpose form-control ok-input"
value="84"
readonly
/>
</div>
</div>
<div class="form-group">
<label for="coin-bip84" class="mb-1 col-sm-2 control-label ok-label">
Coin
</label>
<div class="col-sm-10">
<input
id="coin-bip84"
type="text"
class="coin form-control ok-input"
value="0"
readonly
/>
</div>
</div>
<div class="form-group">
<label for="account-bip84" class="mb-1 col-sm-2 control-label ok-label">
Account
</label>
<div class="col-sm-10">
<input
id="account-bip84"
type="text"
class="account form-control ok-input"
value="0"
/>
</div>
</div>
<div class="form-group">
<label for="change-bip84" class="mb-1 col-sm-2 control-label ok-label">
External / Internal
</label>
<div class="col-sm-10">
<input
id="change-bip84"
type="text"
class="change form-control ok-input"
value="0"
/>
</div>
</div>
<div class="insert-card col-span-full">
<div>
<h3 class="font-medium text-gray-900">Account extended keys</h3>
<p class="mt-1 text-sm text-gray-500">The account extended keys can be used for importing to most BIP84 compatible wallets.</p>
</div>
<div class="form-group">
<label for="account-xprv" class="mb-1 col-sm-2 control-label ok-label">
<span>Private Key</span>
</label>
<div class="col-sm-10">
<textarea
id="account-xprv-bip84"
type="text"
class="account-xprv private-data form-control ok-textarea"
readonly
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
<div class="form-group">
<label for="account-xpub" class="mb-1 col-sm-2 control-label ok-label">
<span>Public Key</span>
</label>
<div class="col-sm-10">
<textarea
id="account-xpub-bip84"
type="text"
class="account-xpub form-control ok-textarea"
readonly
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
</div>
<div class="form-group col-span-full">
<label for="bip84-path" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Derivation Path</label
>
<div class="col-sm-10">
<input
id="bip84-path"
type="text"
class="path form-control ok-textarea"
value="m/84'/0'/0'/0"
readonly="readonly"
/>
<p class="ok-helper-text">The BIP32 derivation path and extended keys are the basis for the derived addresses.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label for="extended-priv-key" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Extended Private Key</label
>
<div class="col-sm-10">
<textarea
id="extended-priv-key"
class="extended-priv-key private-data form-control ok-textarea"
readonly="readonly"
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
<div class="form-group">
<label for="extended-pub-key" class="mb-1 col-sm-2 control-label ok-label"
>BIP32 Extended Public Key</label
>
<div class="col-sm-10">
<textarea
id="extended-pub-key"
class="extended-pub-key form-control ok-textarea"
readonly="readonly"
data-show-qr
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
</div>
</div>
<!-- Card Derived Addresses -->
<div id="section-3" class="ok-card js-section">
<div class="pb-0 ok-card__header">
<div class="mr-6">
<div>
<div class="ok-card__header-title">Derived Addresses</div>
<p class="max-w-2xl mt-1 text-sm text-gray-500">Note these addresses are derived from the BIP32 Extended Key.</p>
</div>
<ul class="flex mt-2 -mb-px space-x-8 addresses-type nav nav-tabs" role="tablist">
<li id="table-tab" class="active">
<a href="#table" role="tab" data-toggle="tab" class="ok-tab">Table</a>
</li>
<li id="csv-tab">
<a href="#csv" role="tab" data-toggle="tab" class="ok-tab">CSV</a>
</li>
</ul>
</div>
<div class="dropdown js-dropdown">
<button id="derivedAddressesPopoverBtn" type="button" class="inline-flex items-center justify-center flex-shrink-0 w-8 h-8 text-gray-400 bg-white rounded-full hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500" aria-expanded="false" aria-haspopup="true">
<span class="sr-only">Open options</span>
<!-- Heroicon name: solid/dots-vertical -->
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path d="M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" />
</svg>
</button>
<div id="derivedAddressesPopoverContent" class="dropdown__menu w-72">
<div class="hidden col-md-12 bch-addr-type-container">
<div class="radio">
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input
type="radio"
value="cashaddr"
name="bch-addr-type"
class="use-bch-cashaddr-addresses ok-radio"
checked="checked"
/>
<span class="text-sm text-gray-700"
>Use CashAddr addresses for Bitcoin Cash (ie starting with 'q'
instead of '1')</span
>
</label>
</div>
<div class="radio">
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input
type="radio"
value="bitpay"
name="bch-addr-type"
class="use-bch-bitpay-addresses ok-radio"
/>
<span class="text-sm text-gray-700"
>Use BitPay-style addresses for Bitcoin Cash (ie starting with
'C' instead of '1')</span
>
</label>
</div>
<div class="radio">
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input
type="radio"
value="legacy"
name="bch-addr-type"
class="use-bch-legacy-addresses ok-radio"
/>
<span class="text-sm text-gray-700"
>Use legacy addresses for Bitcoin Cash (ie starting with
'1')</span
>
</label>
</div>
</div>
<div>
<div class="p-2 text-left">
<div>
<p class="mb-1 ok-label">Encrypt private keys using BIP38</p>
<div class="relative">
<input
type="text"
class="pl-[38px] bip38-password private-data ok-input"
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
placeholder="Password (Optional)"
/>
<input type="checkbox" class="absolute left-[11px] top-[11px] use-bip38 ok-checkbox" />
</div>
<p class="ok-helper-text">Enabling BIP38 means each key will take several minutes to generate.</p>
</div>
</div>
<div class="mt-2 checkbox">
<label class="flex items-center p-2 transition rounded-md cursor-pointer hover:bg-gray-100">
<input class="hardened-addresses ok-checkbox" type="checkbox" />
<span class="text-sm text-gray-700">Use hardened addresses</span>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="p-0 ok-card__body">
<div class="addresses-type tab-content">
<div id="table" class="overflow-auto max-h-[520px] tab-pane active">
<table class="table min-w-full divide-y divide-gray-200 table-striped">
<thead class="bg-gray-50">
<th scope="col" class="px-6 py-3 text-xs font-medium tracking-wider text-left text-gray-500 uppercase">
<div class="flex items-center input-group">
<span class="whitespace-nowrap">Path</span>&nbsp;&nbsp;
<button class="px-1 text-gray-700 bg-white border border-gray-300 rounded shadow-sm index-toggle py-0.5 -my-0.5 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500">Show/Hide</button>
</div>
</th>
<th scope="col" class="px-6 py-3 text-xs font-medium tracking-wider text-left text-gray-500 uppercase">
<div class="flex items-center input-group">
<span class="whitespace-nowrap">Address</span>&nbsp;&nbsp;
<button class="px-1 text-gray-700 bg-white border border-gray-300 rounded shadow-sm address-toggle py-0.5 -my-0.5 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500">Show/Hide</button>
</div>
</th>
<th scope="col" class="px-6 py-3 text-xs font-medium tracking-wider text-left text-gray-500 uppercase">
<div class="flex items-center input-group">
<span class="whitespace-nowrap">Public Key</span>&nbsp;&nbsp;
<button class="px-1 text-gray-700 bg-white border border-gray-300 rounded shadow-sm public-key-toggle py-0.5 -my-0.5 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500">Show/Hide</button>
</div>
</th>
<th scope="col" class="px-6 py-3 text-xs font-medium tracking-wider text-left text-gray-500 uppercase">
<div class="flex items-center input-group">
<span class="whitespace-nowrap">Private Key</span>&nbsp;&nbsp;
<button class="px-1 text-gray-700 bg-white border border-gray-300 rounded shadow-sm private-key-toggle py-0.5 -my-0.5 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500">Show/Hide</button>
</div>
</th>
</thead>
<tbody class="addresses monospace">
<tr class="bg-white">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="bg-white">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="bg-white">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="bg-white">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr class="bg-white">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
</div>
<div id="csv" class="p-6 border-b border-gray-200 tab-pane">
<textarea
class="csv form-control ok-textarea"
rows="25"
readonly
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
></textarea>
</div>
</div>
<div class="px-4 md:px-6 py-4 !mb-0 sm:flex sm:justify-between sm:items-center border-t border-gray-200 space-y-4 sm:space-y-0">
<div class="flex items-center space-x-2">
<input type="number" class="w-14 sm:w-20 rows-to-add ok-input" value="20" />
<span class="text-sm text-gray-700">more row starting from index</span>
<input type="number" class="w-14 sm:w-20 more-rows-start-index ok-input" />
</div>
<button type="button" class="inline-flex items-center justify-center w-full px-4 py-2 text-sm font-medium text-white bg-green-600 border border-transparent rounded-md shadow-sm more hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500 sm:w-auto">
Show More
</button>
</div>
</div>
</div>
<!-- More Info -->
<div id="section-4" class="px-4 pt-8 js-section md:px-0 md:pt-16">
<div class="prose">
<h2>More Info</h2>
<h3>BIP39</h3>
<p>Recovery phrase for generating deterministic keys. Read more at the <a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec</a>.</p>
<h3>BIP32</h3>
<p>Hierarchical Deterministic Wallets. Read more at the <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target="_blank">official BIP32 spec</a>. See the demo at <a href="http://bip32.org/" target="_blank">bip32.org</a>.</p>
<h3>BIP44</h3>
<p>Multi-Account Hierarchy for Deterministic Wallets. Read more at the <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target="_blank">official BIP44 spec</a>.</p>
<h3>BIP49</h3>
<p>Derivation scheme for P2WPKH-nested-in-P2SH based accounts. Read more at the <a href="https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki" target="_blank">official BIP49 spec</a>.</p>
<h3>BIP85</h3>
<p> Deterministic Entropy From BIP32 Keychains. Read more at the <a href="https://github.com/bitcoin/bips/blob/master/bip-0085.mediawiki" target="_blank">official BIP85 spec</a>.</p>
<h3 id="entropy-notes">Entropy</h3>
<p>Entropy values should not include the BIP39 checksum. This is automatically added by the tool.</p>
<p>Entropy values must be sourced from a <a href="https://en.wikipedia.org/wiki/Random_number_generation" target="_blank">strong source of randomness</a>. This means flipping a fair coin, rolling a fair dice, noise
measurements etc. Do <strong>NOT</strong> use phrases from books, lyrics from songs, your birthday or street address, keyboard mashing, or anything you <i>think</i> is random, because chances are overwhelming it isn't random enough for the needs of this tool.</p>
<p><strong><span>Do not store entropy.</span></strong></p>
<p>Storing entropy (such as keeping a deck of cards in a specific shuffled order) is unreliable compared to storing a recovery phrase. Instead of storing entropy, store the recovery phrase generated from the entropy. <a href="https://en.wikipedia.org/wiki/Steganography#Physical" target="_blank">Steganography</a> may be beneficial when storing the recovery phrase.</p>
<p>The random recovery phrase generator on this page uses a <a href="https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues" target="_blank">cryptographically secure random number generator</a>. The built in random generator can generally be trusted more than your own intuition about randomness. If cryptographic randomness isn't available in your browser, this page will show a warning and the generate button will not work. In that case you might choose to use your own source of entropy.</p>
<p><a href="https://bitcointalk.org/index.php?topic=311000.msg3345309#msg3345309" target="_blank">You are not a good source of entropy.</a></p>
<p>Card entropy has been implemented assuming cards are replaced, not drawn one after another. A full deck with replacement generates 232 bits of entropy (21 words). A full deck without replacement generates 225 bits of entropy (21 words).</p>
<h3>License</h3>
<p>
Please refer to <a href="https://github.com/OneKeyHQ/bip39/blob/master/LICENSE" target="_blank">the software license</a> for more detail.
</p>
<p>
The software is provided "as is", without warranty of any kind,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose and
noninfringement. In no event shall the authors or copyright holders
be liable for any claim, damages or other liability, whether in an
action of contract, tort or otherwise, arising from, out of or in
connection with the software or the use or other dealings in the
software.
</p>
<h3>Alternative Tools</h3>
<p>This tool is interoperable with any BIP39 wallet. Some similar tools to this one (ie not consumer wallets) are <a href="https://bip32jp.github.io/english/">https://bip32jp.github.io/english/</a>.</p>
<h3>Offline Usage</h3>
<p>You can use this tool without having to be online.</p>
<ol>
<li>In your browser, select file save-as, and save this page as a file.</li>
<li>Double-click that file to open it in a browser on any offline computer.</li>
</ol>
<h3>This project is 100% open-source code</h3>
<p>Get the source code from the repository - <a href="https://github.com/OneKeyHQ/bip39" target="_blank">https://github.com/OneKeyHQ/bip39</a>
</p>
<h3>Libraries</h3>
<ul>
<li>BitcoinJS - <a href="https://github.com/bitcoinjs/bitcoinjs-lib" target="_blank"> https://github.com/bitcoinjs/bitcoinjs-lib</a></li>
<li>jsBIP39 - <a href="https://github.com/iancoleman/jsbip39" target="_blank">https://github.com/iancoleman/jsbip39</a></li>
<li>sjcl - <a href="https://github.com/bitwiseshiftleft/sjcl" target="_blank">https://github.com/bitwiseshiftleft/sjcl</a></li>
<li>jQuery - <a href="https://jquery.com/" target="_blank">https://jquery.com/</a></li>
<li>
Twitter Bootstrap - <a href="http://getbootstrap.com/" target="_blank">http://getbootstrap.com/</a>
</li>
<li>Tailwind CSS - <a href="https://tailwindcss.com/" target="_blank">https://tailwindcss.com/</a></li>
<li>Tippy.js - <a href="https://kabbouchi.github.io/tippyjs-v4-docs/" target="_blank">https://kabbouchi.github.io/tippyjs-v4-docs/</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- QR Code -->
<div class="fixed hidden qr-container top-4 right-4">
<div class="hidden qr-hint">
<div class="ok-notification">
<div class="flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 mr-4 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21" />
</svg>
<span>Click field to <span class="font-bold"> hide </span> QR</span>
</div>
</div>
</div>
<div class="qr-hint">
<div class="ok-notification">
<div class="flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 mr-4 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z" />
</svg>
<span>Click field to <span class="font-bold"> show </span> QR</span>
</div>
</div>
</div>
<div class="hidden mt-4 qr-hider">
<div class="flex flex-col items-center ok-notification">
<div class="qr-image"></div>
<div class="text-sm qr-warning">
<div class="flex items-center mt-2 text-yellow-600">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5 mr-2 text-yellow-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
Scanner may keep history
</div>
</div>
</div>
</div>
</div>
<div class="feedback-container">
<div class="fixed max-w-full px-4 py-2 text-white -translate-x-1/2 bg-gray-800 rounded-md shadow-lg feedback left-1/2 bottom-4">Loading...</div>
</div>
</div>
<div id="onekey-portal-footer">
</div>
<script src="js/footer.js"></script>
<script type="text/template" id="address-row-template">
<tr>
<td class="index"><span></span></td>
<td class="address"><span data-show-qr></span></td>
<td class="pubkey"><span data-show-qr></span></td>
<td class="privkey private-data"><span data-show-qr></span></td>
</tr>
</script>
<!-- Google Analytic -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-187315652-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-187315652-1');
</script>
<script src="js/jquery-3.2.1.js"></script>
<script src="js/bootstrap.js"></script>
<script src="js/bip39-libs.js"></script>
<script src="js/bitcoinjs-extensions.js"></script>
<script src="js/segwit-parameters.js"></script>
<script src="js/ripple-util.js"></script>
<script src="js/jingtum-util.js"></script>
<script src="js/casinocoin-util.js"></script>
<script src="js/cosmos-util.js"></script>
<script src="js/eos-util.js"></script>
<script src="js/fio-util.js"></script>
<script src="js/xwc-util.js"></script>
<script src="js/sjcl-bip39.js"></script>
<script src="js/wordlist_english.js"></script>
<script src="js/wordlist_japanese.js"></script>
<script src="js/wordlist_spanish.js"></script>
<script src="js/wordlist_chinese_simplified.js"></script>
<script src="js/wordlist_chinese_traditional.js"></script>
<script src="js/wordlist_french.js"></script>
<script src="js/wordlist_italian.js"></script>
<script src="js/wordlist_korean.js"></script>
<script src="js/wordlist_czech.js"></script>
<script src="js/wordlist_portuguese.js"></script>
<script src="js/jsbip39.js"></script>
<script src="js/entropy.js"></script>
<script src="js/index.js"></script>
<!-- Customizing JS -->
<script src="js/extend.js"></script>
</body>
</html>