on master help sign in
bitcoin: use zPub instead of xPub
commit42d3e0bc7bf6d0b66b1a464bd42ce8ef56af995a authorpkova <pyry.kovanen@gmail.com> dateTue 29 Dec 2020, 21:53 (6 years ago) parent1926a63
2 files changed+19−8
package.json+1 src/views/Bitcoin.js+18−8
package.json+1
@@ -53,6 +53,7 @@
5353 "react-scripts": "3.0.1",
5454 "react-teleporter": "^1.1.0",
5555 "secp256k1": "^3.5.2",
56+ "bs58check": "^2.1.2",
5657 "trezor-connect": "^8.1.14",
5758 "urbit-key-generation": "^0.18.0",
5859 "urbit-ob": "^4.1.4",
src/views/Bitcoin.js+18−8
@@ -17,10 +17,18 @@ import BridgeForm from 'form/BridgeForm';
1717
1818import * as need from 'lib/need';
1919import * as bitcoin from 'bitcoinjs-lib';
20+import * as bs58check from 'bs58check';
2021import ob from 'urbit-ob';
2122import { Buffer } from 'buffer';
2223import { composeValidator, buildPsbtValidator } from 'form/validators';
2324
25+function xpubToYpub(xpub) {
26+ var data = bs58check.decode(xpub);
27+ data = data.slice(4);
28+ data = Buffer.concat([Buffer.from('04b24746', 'hex'), data]);
29+ return bs58check.encode(data);
30+}
31+
2432export default function Bitcoin() {
2533 const { pop } = useLocalRouter();
2634 const { urbitWallet } = useWallet();
@@ -45,13 +53,15 @@ export default function Bitcoin() {
4553 bitcoin.networks.bitcoin
4654 );
4755
48− const xPub = bitcoin.bip32
49− .fromPublicKey(
50− Buffer.from(pubKey, 'hex'),
51− Buffer.from(chain, 'hex'),
52− bitcoin.networks.bitcoin
53− )
54− .toBase58();
56+ const zPub = xpubToYpub(
57+ bitcoin.bip32
58+ .fromPublicKey(
59+ Buffer.from(pubKey, 'hex'),
60+ Buffer.from(chain, 'hex'),
61+ bitcoin.networks.bitcoin
62+ )
63+ .toBase58()
64+ );
5565
5666 const validate = composeValidator({
5767 unsignedTransaction: buildPsbtValidator(hd),
@@ -97,7 +107,7 @@ export default function Bitcoin() {
97107 </Grid.Item>
98108 <Grid.Item full className="mt4" as={Text}>
99109 <Highlighted>
100− <CopiableAddressWrap>{xPub}</CopiableAddressWrap>
110+ <CopiableAddressWrap>{zPub}</CopiableAddressWrap>
101111 </Highlighted>
102112 </Grid.Item>
103113 <Grid.Item full className="mt4" as={Text}>