@@ -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}>