{"id":63643,"date":"2024-05-25T17:32:44","date_gmt":"2024-05-25T14:02:44","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/generating-taproot-wallet-address-using-bitcoinjs-lib-54f4\/"},"modified":"2024-05-25T17:32:44","modified_gmt":"2024-05-25T14:02:44","slug":"generating-taproot-wallet-address-using-bitcoinjs-lib-54f4","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/generating-taproot-wallet-address-using-bitcoinjs-lib-54f4\/","title":{"rendered":"\u0627\u06cc\u062c\u0627\u062f \u0622\u062f\u0631\u0633 \u06a9\u06cc\u0641 \u067e\u0648\u0644 Taproot \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 bitcoinjs-lib"},"content":{"rendered":"<div data-article-id=\"1864830\" id=\"article-body\">\n<p>\u062a\u0648\u0644\u06cc\u062f \u0622\u062f\u0631\u0633 \u06a9\u06cc\u0641 \u067e\u0648\u0644 Taproot \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>const ecc = require('tiny-secp256k1')\nconst { BIP32Factory } = require('bip32')\nconst bip32 = BIP32Factory(ecc)\nconst bip39 = require('bip39')\nconst bitcoin = require('bitcoinjs-lib')\n\nconst path = `m\/86'\/0'\/0'\/0\/0`; \/\/ Path to first child of receiving wallet on first account\nbitcoin.initEccLib(ecc);\n\nlet mnemonic = bip39.generateMnemonic()\nconst seed = bip39.mnemonicToSeedSync(mnemonic)\nlet rootKey = bip32.fromSeed(seed)\n\nconst childNode = rootKey.derivePath(path);\nlet node = childNode.derive(0).derive(0);\n\nconst toXOnly = pubKey =&gt; (pubKey.length === 32 ? pubKey : pubKey.slice(1, 33));\n\nconst childNodeXOnlyPubkey = toXOnly(childNode.publicKey);\n\nconst internalPubkey = childNodeXOnlyPubkey;\n\nconst { address, output } = bitcoin.payments.p2tr({\n    internalPubkey\n});\n\nconsole.log(`\nWallet generated:\n- Taproot Address: ${address},\n- Key: ${node.toWIF()}, \n- Mnemonic: ${mnemonic}    \n`)\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062c\u0639 |  \u06a9\u062f \u062f\u0631 Github<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062a\u0648\u0644\u06cc\u062f \u0622\u062f\u0631\u0633 \u06a9\u06cc\u0641 \u067e\u0648\u0644 Taproot \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js. const ecc = require(&#8216;tiny-secp256k1&#8217;) const { BIP32Factory } = require(&#8216;bip32&#8217;) const bip32 = BIP32Factory(ecc) const bip39 = require(&#8216;bip39&#8217;) const bitcoin = require(&#8216;bitcoinjs-lib&#8217;) const path = `m\/86&#8217;\/0&#8217;\/0&#8217;\/0\/0`; \/\/ Path to first child of receiving wallet on first account bitcoin.initEccLib(ecc); let mnemonic = bip39.generateMnemonic() const seed = bip39.mnemonicToSeedSync(mnemonic) &hellip;<\/p>\n","protected":false},"author":2,"featured_media":63644,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-63643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/63643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=63643"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/63643\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/63644"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=63643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=63643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=63643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}