Skip to content

Commit

Permalink
Update vault-wallet-toolkit dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
chriselly committed Sep 13, 2024
1 parent 17ba8a9 commit 7a8ead0
Show file tree
Hide file tree
Showing 10 changed files with 84 additions and 76 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"react-native": "0.72.3",
"react-native-reanimated": "3.3.0",
"react-native-web": "0.19.1",
"vault-wallet-toolkit": "https://github.com/uphold/vault-wallet-toolkit.git#1.1.1",
"vault-wallet-toolkit": "https://github.com/uphold/vault-wallet-toolkit.git#1.1.2",
"webpack": "5.76.3",
"xrpl": "2.9.0",
"yup": "0.28.5"
Expand Down
8 changes: 3 additions & 5 deletions src/lib/vault/btc-provider.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/* eslint-disable import/no-unresolved */
import './constants';
import * as bitcoin from 'bitcoinjs-lib';
import { Blockchain, WalletService } from 'vault-wallet-toolkit';
import { Blockchain, signTransaction } from 'vault-wallet-toolkit';
import { Electrum } from './clients/electrum/electrum-client';
import { NetworkUtil } from './network';
import { coinSelection } from './clients/coin-selection/coin-selection';
import { getNetwork } from './network';
import { getRedeemScript, satsToBtc, signatureValidator } from './clients/utils/bitcoin-utils';
import { txhexToElectrumTransaction } from './clients/utils/electrum-utils';

Expand All @@ -18,11 +18,9 @@ const SEQUENCE_RBF_ENABLED = 0xffffffff - 2;
// Network fee always set to fast
const BTC_FEE_RATE = 1;

export const { signTransaction } = WalletService;

class BitcoinProvider {
constructor() {
this.network = NetworkUtil.getNetwork(blockchain);
this.network = getNetwork(blockchain);
this.instance = new Electrum(this.network);
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib/vault/clients/utils/electrum-utils.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/* eslint-disable id-length */
import { Blockchain, NetworkUtil } from '../../network';
import { Blockchain, getNetwork } from '../../network';
import * as bitcoin from 'bitcoinjs-lib';
import BigNumber from 'bignumber.js';
import reverse from 'buffer-reverse';

const network = NetworkUtil.getNetwork(Blockchain.BTC) as bitcoin.Network;
const network = getNetwork(Blockchain.BTC) as bitcoin.Network;

export interface TransactionOutput {
address: string;
Expand Down
60 changes: 60 additions & 0 deletions src/lib/vault/clients/xrpl/xrpl-client.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { Blockchain, Network, getNetwork } from 'vault-wallet-toolkit';
import { Client } from 'xrpl';

const xrplPeersMap = {
[Network.PRODUCTION]: ['wss://xrplcluster.com', 'wss://s1.ripple.com', 'wss://s2.ripple.com'],
[Network.DEVELOPMENT]: ['wss://testnet.xrpl-labs.com', 'wss://s.altnet.rippletest.net:51233'],
[Network.LOCAL]: []
};

export class XrplProvider {
instance!: Client;
peers: string[] = xrplPeersMap[getNetwork<Network>(Blockchain.XRPL)];

constructor() {
this.createInstanceWithRandomPeer();
}

async connect(): Promise<void> {
try {
await this.instance.connect();
} catch (err: any) {
this.createInstanceWithRandomPeer();
await this.connect();
}
}

private createInstanceWithRandomPeer() {
if (this.peers.length === 0) {
this.peers = xrplPeersMap[getNetwork<Network>(Blockchain.XRPL)];
throw new Error('Cannot connect to provider');
}
const randomPeerIndex = Math.floor(Math.random() * this.peers.length);
const randomPeer = this.peers[randomPeerIndex];

this.peers.splice(randomPeerIndex, 1);
this.instance = new Client(randomPeer);
}

async disconnect(): Promise<void> {
await this.instance.disconnect();
}

get isConnected(): boolean {
return this.instance.isConnected();
}
}

let xrplProvider: XrplProvider;

export const getXrplProvider = async () => {
if (!xrplProvider) {
xrplProvider = new XrplProvider();
}

if (!xrplProvider.isConnected) {
await xrplProvider.connect();
}

return xrplProvider;
};
4 changes: 2 additions & 2 deletions src/lib/vault/constants.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import { NetworkUtil, getNetworkEnv } from './network';
import { getNetworkEnv, setNetwork } from './network';

NetworkUtil.setNetwork(getNetworkEnv());
setNetwork(getNetworkEnv());
7 changes: 3 additions & 4 deletions src/lib/vault/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import './constants';
import { Network, getNetworkEnv } from './network';
import { ValidationUtils, Blockchain as VaultBlockchain, WalletService } from 'vault-wallet-toolkit';
import { Blockchain as VaultBlockchain, validateAddress as validateVaultAddress } from 'vault-wallet-toolkit';
import { Wallet } from 'vault-wallet-toolkit/lib/core/Wallet';
import { bitcoinProvider } from './btc-provider';
import {
Expand All @@ -19,18 +19,17 @@ import {
import { translate } from '../../lib/i18n';
import { tokens as xrplMainnetTokens } from './xrpl-tokenlist-mainnet.json';
import { tokens as xrplTestnetTokens } from './xrpl-tokenlist-testnet.json';
export { validateMnemonic, signTransaction } from 'vault-wallet-toolkit';
export { DEFAULT_MULTISIG_SIGNERS_REQUIRED } from './network';

export const Blockchain = VaultBlockchain;
export const { validateMnemonic } = ValidationUtils;
export const { signTransaction } = WalletService;
export const transactionTypes = Object.freeze({
[Blockchain.XRPL]: xrplTransactionTypes,
[Blockchain.BTC]: {}
});

export const validateAddress = (network, address) => {
return ValidationUtils.validateAddress(network, address, getNetworkEnv());
return validateVaultAddress(network, address, getNetworkEnv());
};

export const validateDescriptor = descriptor => {
Expand Down
4 changes: 2 additions & 2 deletions src/lib/vault/network.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Blockchain, Network, NetworkUtil } from 'vault-wallet-toolkit';
export { Blockchain, Network, NetworkUtil };
import { Blockchain, Network, getNetwork, setNetwork } from 'vault-wallet-toolkit';
export { Blockchain, Network, getNetwork, setNetwork };

// eslint-disable-next-line no-process-env
const { NET } = process.env;
Expand Down
7 changes: 3 additions & 4 deletions src/lib/vault/xrpl-provider.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/* eslint-disable import/no-unresolved */
import './constants';
import { Blockchain, WalletService } from 'vault-wallet-toolkit';
import { Blockchain, signTransaction } from 'vault-wallet-toolkit';
import { DEFAULT_MULTISIG_ENTRIES, DEFAULT_MULTISIG_SIGNERS_REQUIRED } from './network';
import { dropsToXrp, encode, multisign, xrpToDrops } from 'xrpl';
import { getXrplProvider } from 'vault-wallet-toolkit/lib/core/Xrpledger/XrplProvider';
import { getXrplProvider } from './clients/xrpl/xrpl-client';
export { convertHexToString } from 'xrpl';
import BigNumber from 'bignumber.js';

Expand All @@ -14,8 +15,6 @@ export const transactionTypes = Object.freeze({
TrustSet: 'TrustSet'
});

export const { signTransaction } = WalletService;

const signer = (key, tx) => signTransaction(blockchain, key, tx, { multisig: true });

export const multisigner = (tx, keys) => multisign(keys.map(key => signer(key, tx)));
Expand Down
11 changes: 6 additions & 5 deletions test/cypress/support/helpers/vault.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
import { Blockchain, WalletService } from 'vault-wallet-toolkit';
import { Network, NetworkUtil } from '../../../../src/lib/vault/network';
/*eslint-disable import/no-unresolved */
import { Blockchain, createWallet } from 'vault-wallet-toolkit';
import { Network, setNetwork } from '../../../../src/lib/vault/network';
import {
getAccountReserve,
getAccountTrustlines,
getBalance,
getLedgerReserve
} from '../../../../src/lib/vault/xrpl-provider';
import { getAddress } from '../../../../src/lib/vault';
import { getXrplProvider } from 'vault-wallet-toolkit/lib/core/Xrpledger/XrplProvider';
import { getXrplProvider } from '../../../../src/lib/vault/clients/xrpl/xrpl-client';

const defaultBlockchain = Blockchain.XRPL;

NetworkUtil.setNetwork(Network.DEVELOPMENT);
setNetwork(Network.DEVELOPMENT);

const createWallets = numberOfWallets => {
return [...Array(numberOfWallets)].map(() => {
return WalletService.createWalletMinimal();
return createWallet();
});
};

Expand Down
53 changes: 2 additions & 51 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@
resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==

"@adraffy/ens-normalize@1.9.2":
version "1.9.2"
resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz#60111a5d9db45b2e5cbb6231b0bb8d97e8659316"
integrity sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==

"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
Expand Down Expand Up @@ -1720,21 +1715,11 @@
dependencies:
eslint-scope "5.1.1"

"@noble/hashes@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183"
integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==

"@noble/hashes@^1.2.0":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39"
integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==

"@noble/secp256k1@1.7.1":
version "1.7.1"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c"
integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==

"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
Expand Down Expand Up @@ -2321,11 +2306,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==

"@types/node@18.15.13":
version "18.15.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469"
integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==

"@types/node@^14.14.31":
version "14.18.63"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b"
Expand Down Expand Up @@ -2668,11 +2648,6 @@ add-filename-increment@^1.0.0:
dependencies:
strip-filename-increment "^2.0.1"

aes-js@4.0.0-beta.5:
version "4.0.0-beta.5"
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873"
integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==

agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
Expand Down Expand Up @@ -5140,19 +5115,6 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==

ethers@6.6.1:
version "6.6.1"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.6.1.tgz#c3c80cdc10190fa5457d5eced25aa16940e73f6b"
integrity sha512-bjNPf/EU4l1jQlAslOmOlyHqjOnM0W7LRPuSf0Kt0tYV4RpUEZsdGWDhvFXfogIhfzXJ/v2tPz4HqXwBt5T8mA==
dependencies:
"@adraffy/ens-normalize" "1.9.2"
"@noble/hashes" "1.1.2"
"@noble/secp256k1" "1.7.1"
"@types/node" "18.15.13"
aes-js "4.0.0-beta.5"
tslib "2.4.0"
ws "8.5.0"

event-emitter@^0.3.5:
version "0.3.5"
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
Expand Down Expand Up @@ -10234,11 +10196,6 @@ tsconfig-paths@^3.14.1:
minimist "^1.2.6"
strip-bom "^3.0.0"

tslib@2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==

tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
Expand Down Expand Up @@ -10585,14 +10542,13 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==

"vault-wallet-toolkit@https://github.com/uphold/vault-wallet-toolkit.git#1.1.1":
"vault-wallet-toolkit@https://github.com/uphold/vault-wallet-toolkit.git#1.1.2":
version "1.0.0"
resolved "https://github.com/uphold/vault-wallet-toolkit.git#3224b969c6438d212a93f55058356f4645f1f8d4"
resolved "https://github.com/uphold/vault-wallet-toolkit.git#edfdb90ca170fdf87d06bb7751bf9feb34bf9ddf"
dependencies:
bip32 "4.0.0"
bitcoinjs-lib "6.1.3"
ecpair "2.0.1"
ethers "6.6.1"
tiny-secp256k1 "1.1.6"
xrpl "2.9.0"

Expand Down Expand Up @@ -10924,11 +10880,6 @@ write@2.0.0:
dependencies:
add-filename-increment "^1.0.0"

ws@8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==

ws@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
Expand Down

0 comments on commit 7a8ead0

Please sign in to comment.