@@ -17,10 +17,18 @@ import BridgeForm from 'form/BridgeForm';
18import * as need from 'lib/need';
18import * as need from 'lib/need';
19import * as bitcoin from 'bitcoinjs-lib';
19import * as bitcoin from 'bitcoinjs-lib';
20+import * as bs58check from 'bs58check';
20import ob from 'urbit-ob';
21import ob from 'urbit-ob';
21import { Buffer } from 'buffer';
22import { Buffer } from 'buffer';
22import { composeValidator, buildPsbtValidator } from 'form/validators';
23import { composeValidator, buildPsbtValidator } from 'form/validators';
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);
24export default function Bitcoin() {
32export default function Bitcoin() {
25 const { pop } = useLocalRouter();
33 const { pop } = useLocalRouter();
26 const { urbitWallet } = useWallet();
34 const { urbitWallet } = useWallet();
@@ -45,13 +53,15 @@ export default function Bitcoin() {
45 bitcoin.networks.bitcoin
53 bitcoin.networks.bitcoin
56+ const zPub = xpubToYpub(
48− const xPub = bitcoin.bip32
57+ bitcoin.bip32
49− .fromPublicKey(
58+ .fromPublicKey(
50− Buffer.from(pubKey, 'hex'),
59+ Buffer.from(pubKey, 'hex'),
51− Buffer.from(chain, 'hex'),
60+ Buffer.from(chain, 'hex'),
52− bitcoin.networks.bitcoin
61+ bitcoin.networks.bitcoin
54− .toBase58();
63+ .toBase58()
56 const validate = composeValidator({
66 const validate = composeValidator({
57 unsignedTransaction: buildPsbtValidator(hd),
67 unsignedTransaction: buildPsbtValidator(hd),
@@ -97,7 +107,7 @@ export default function Bitcoin() {
97 </Grid.Item>
107 </Grid.Item>
98 <Grid.Item full className="mt4" as={Text}>
108 <Grid.Item full className="mt4" as={Text}>
99 <Highlighted>
109 <Highlighted>
100− <CopiableAddressWrap>{xPub}</CopiableAddressWrap>
110+ <CopiableAddressWrap>{zPub}</CopiableAddressWrap>
101 </Highlighted>
111 </Highlighted>
102 </Grid.Item>
112 </Grid.Item>
103 <Grid.Item full className="mt4" as={Text}>
113 <Grid.Item full className="mt4" as={Text}>