Testnet v3.

This commit is contained in:
muzam1l
2023-02-06 21:09:11 +05:30
parent d2033c8035
commit 76871a8041
13 changed files with 3060 additions and 1676 deletions

View File

@@ -5,7 +5,8 @@ GITHUB_ID=""
NEXT_PUBLIC_COMPILE_API_ENDPOINT="http://localhost:9000/api/build" NEXT_PUBLIC_COMPILE_API_ENDPOINT="http://localhost:9000/api/build"
NEXT_PUBLIC_COMPILE_API_BASE_URL="http://localhost:9000" NEXT_PUBLIC_COMPILE_API_BASE_URL="http://localhost:9000"
NEXT_PUBLIC_LANGUAGE_SERVER_API_ENDPOINT="ws://localhost:9000/language-server/c" NEXT_PUBLIC_LANGUAGE_SERVER_API_ENDPOINT="ws://localhost:9000/language-server/c"
NEXT_PUBLIC_TESTNET_URL="hooks-testnet-v2.xrpl-labs.com" NEXT_PUBLIC_TESTNET_URL="hooks-testnet-v3.xrpl-labs.com"
NEXT_PUBLIC_DEBUG_STREAM_URL="hooks-testnet-v2-debugstream.xrpl-labs.com" NEXT_PUBLIC_DEBUG_STREAM_URL="hooks-testnet-v3-debugstream.xrpl-labs.com"
NEXT_PUBLIC_EXPLORER_URL="hooks-testnet-v2-explorer.xrpl-labs.com" NEXT_PUBLIC_EXPLORER_URL="hooks-testnet-v3-explorer.xrpl-labs.com"
NEXT_PUBLIC_SITE_URL=http://localhost:3000 NEXT_PUBLIC_NETWORK_ID="21338"
NEXT_PUBLIC_SITE_URL="http://localhost:3000"

4
.gitignore vendored
View File

@@ -33,3 +33,7 @@ yarn-error.log*
# vercel # vercel
.vercel .vercel
.vscode .vscode
# yarn
.yarnrc.yml
.yarn/

View File

@@ -33,6 +33,7 @@ import { addFunds } from '../state/actions/addFaucetAccount'
import { deleteHook } from '../state/actions/deployHook' import { deleteHook } from '../state/actions/deployHook'
import { capitalize } from '../utils/helpers' import { capitalize } from '../utils/helpers'
import { deleteAccount } from '../state/actions/deleteAccount' import { deleteAccount } from '../state/actions/deleteAccount'
import { xrplSend } from '../state/actions/xrpl-client'
export const AccountDialog = ({ export const AccountDialog = ({
activeAccountAddress, activeAccountAddress,
@@ -301,7 +302,7 @@ const Accounts: FC<AccountProps> = props => {
const fetchAccInfo = async () => { const fetchAccInfo = async () => {
if (snap.clientStatus === 'online') { if (snap.clientStatus === 'online') {
const requests = snap.accounts.map(acc => const requests = snap.accounts.map(acc =>
snap.client?.send({ xrplSend({
id: `hooks-builder-req-info-${acc.address}`, id: `hooks-builder-req-info-${acc.address}`,
command: 'account_info', command: 'account_info',
account: acc.address account: acc.address
@@ -329,7 +330,7 @@ const Accounts: FC<AccountProps> = props => {
} }
}) })
const objectRequests = snap.accounts.map(acc => { const objectRequests = snap.accounts.map(acc => {
return snap.client?.send({ return xrplSend({
id: `hooks-builder-req-objects-${acc.address}`, id: `hooks-builder-req-objects-${acc.address}`,
command: 'account_objects', command: 'account_objects',
account: acc.address account: acc.address

View File

@@ -65,8 +65,8 @@
"vscode-languageserver": "^7.0.0", "vscode-languageserver": "^7.0.0",
"vscode-uri": "^3.0.2", "vscode-uri": "^3.0.2",
"wabt": "^1.0.30", "wabt": "^1.0.30",
"xrpl-accountlib": "^1.5.2", "xrpl-accountlib": "^1.6.1",
"xrpl-client": "^1.9.4" "xrpl-client": "^2.0.2"
}, },
"devDependencies": { "devDependencies": {
"@types/dinero.js": "^1.9.0", "@types/dinero.js": "^1.9.0",

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,7 @@ import { ref } from 'valtio'
import estimateFee from '../../utils/estimateFee' import estimateFee from '../../utils/estimateFee'
import { SetHookData } from '../../utils/setHook' import { SetHookData } from '../../utils/setHook'
import ResultLink from '../../components/ResultLink' import ResultLink from '../../components/ResultLink'
import { xrplSend } from './xrpl-client'
export const sha256 = async (string: string) => { export const sha256 = async (string: string) => {
const utf8 = new TextEncoder().encode(string) const utf8 = new TextEncoder().encode(string)
@@ -64,9 +65,6 @@ export const prepareDeployHookTx = async (
if (!activeFile?.compiledContent) { if (!activeFile?.compiledContent) {
return return
} }
if (!state.client) {
return
}
const HookNamespace = (await sha256(data.HookNamespace)).toUpperCase() const HookNamespace = (await sha256(data.HookNamespace)).toUpperCase()
const hookOnValues: (keyof TTS)[] = data.Invoke.map(tt => tt.value) const hookOnValues: (keyof TTS)[] = data.Invoke.map(tt => tt.value)
const { HookParameters } = data const { HookParameters } = data
@@ -87,30 +85,30 @@ export const prepareDeployHookTx = async (
// } // }
// } // }
// }); // });
if (typeof window !== 'undefined') { if (typeof window === 'undefined') return;
const tx = { const tx = {
Account: account.address, Account: account.address,
TransactionType: 'SetHook', TransactionType: 'SetHook',
Sequence: account.sequence, Sequence: account.sequence,
Fee: data.Fee, Fee: data.Fee,
Hooks: [ NetworkID: process.env.NEXT_PUBLIC_NETWORK_ID || state.client.getState().server.networkId,
{ Hooks: [
Hook: { {
CreateCode: arrayBufferToHex(activeFile?.compiledContent).toUpperCase(), Hook: {
HookOn: calculateHookOn(hookOnValues), CreateCode: arrayBufferToHex(activeFile?.compiledContent).toUpperCase(),
HookNamespace, HookOn: calculateHookOn(hookOnValues),
HookApiVersion: 0, HookNamespace,
Flags: 1, HookApiVersion: 0,
// ...(filteredHookGrants.length > 0 && { HookGrants: filteredHookGrants }), Flags: 1,
...(filteredHookParameters.length > 0 && { // ...(filteredHookGrants.length > 0 && { HookGrants: filteredHookGrants }),
HookParameters: filteredHookParameters ...(filteredHookParameters.length > 0 && {
}) HookParameters: filteredHookParameters
} })
} }
] }
} ]
return tx
} }
return tx
} }
/* deployHook function turns the wasm binary into /* deployHook function turns the wasm binary into
@@ -127,9 +125,6 @@ export const deployHook = async (account: IAccount & { name?: string }, data: Se
if (!tx) { if (!tx) {
return return
} }
if (!state.client) {
return
}
const keypair = derive.familySeed(account.secret) const keypair = derive.familySeed(account.secret)
const { signedTransaction } = sign(tx, keypair) const { signedTransaction } = sign(tx, keypair)
@@ -140,7 +135,7 @@ export const deployHook = async (account: IAccount & { name?: string }, data: Se
let submitRes let submitRes
try { try {
submitRes = await state.client?.send({ submitRes = await xrplSend({
command: 'submit', command: 'submit',
tx_blob: signedTransaction tx_blob: signedTransaction
}) })
@@ -199,9 +194,6 @@ export const deployHook = async (account: IAccount & { name?: string }, data: Se
} }
export const deleteHook = async (account: IAccount & { name?: string }) => { export const deleteHook = async (account: IAccount & { name?: string }) => {
if (!state.client) {
return
}
const currentAccount = state.accounts.find(acc => acc.address === account.address) const currentAccount = state.accounts.find(acc => acc.address === account.address)
if (currentAccount?.isLoading || !currentAccount?.hooks.length) { if (currentAccount?.isLoading || !currentAccount?.hooks.length) {
return return
@@ -239,7 +231,7 @@ export const deleteHook = async (account: IAccount & { name?: string }) => {
let submitRes let submitRes
const toastId = toast.loading('Deleting hook...') const toastId = toast.loading('Deleting hook...')
try { try {
submitRes = await state.client.send({ submitRes = await xrplSend({
command: 'submit', command: 'submit',
tx_blob: signedTransaction tx_blob: signedTransaction
}) })

View File

@@ -1,66 +0,0 @@
import { derive, sign } from 'xrpl-accountlib'
import state from '..'
import type { IAccount } from '..'
interface TransactionOptions {
TransactionType: string
Account?: string
Fee?: string
Destination?: string
[index: string]: any
}
interface OtherOptions {
logPrefix?: string
}
export const sendTransaction = async (
account: IAccount,
txOptions: TransactionOptions,
options?: OtherOptions
) => {
if (!state.client) throw Error('XRPL client not initalized')
const { Fee = '1000', ...opts } = txOptions
const tx: TransactionOptions = {
Account: account.address,
Sequence: account.sequence,
Fee, // TODO auto-fillable default
...opts
}
const { logPrefix = '' } = options || {}
try {
const signedAccount = derive.familySeed(account.secret)
const { signedTransaction } = sign(tx, signedAccount)
const response = await state.client.send({
command: 'submit',
tx_blob: signedTransaction
})
if (response.engine_result === 'tesSUCCESS') {
state.transactionLogs.push({
type: 'success',
message: `${logPrefix}[${response.engine_result}] ${response.engine_result_message}`
})
} else {
state.transactionLogs.push({
type: 'error',
message: `${logPrefix}[${response.error || response.engine_result}] ${
response.error_exception || response.engine_result_message
}`
})
}
const currAcc = state.accounts.find(acc => acc.address === account.address)
if (currAcc && response.account_sequence_next) {
currAcc.sequence = response.account_sequence_next
}
} catch (err) {
console.error(err)
state.transactionLogs.push({
type: 'error',
message:
err instanceof Error
? `${logPrefix}Error: ${err.message}`
: `${logPrefix}Something went wrong, try again later`
})
}
}

View File

@@ -4,6 +4,7 @@ import state from '..'
import type { IAccount } from '..' import type { IAccount } from '..'
import ResultLink from '../../components/ResultLink' import ResultLink from '../../components/ResultLink'
import { ref } from 'valtio' import { ref } from 'valtio'
import { xrplSend } from './xrpl-client'
interface TransactionOptions { interface TransactionOptions {
TransactionType: string TransactionType: string
@@ -21,20 +22,19 @@ export const sendTransaction = async (
txOptions: TransactionOptions, txOptions: TransactionOptions,
options?: OtherOptions options?: OtherOptions
) => { ) => {
if (!state.client) throw Error('XRPL client not initalized')
const { Fee = '1000', ...opts } = txOptions const { Fee = '1000', ...opts } = txOptions
const tx: TransactionOptions = { const tx: TransactionOptions = {
Account: account.address, Account: account.address,
Sequence: account.sequence, Sequence: account.sequence,
Fee, // TODO auto-fillable default Fee,
NetworkID: process.env.NEXT_PUBLIC_NETWORK_ID || state.client.getState().server.networkId,
...opts ...opts
} }
const { logPrefix = '' } = options || {} const { logPrefix = '' } = options || {}
try { try {
const signedAccount = derive.familySeed(account.secret) const signedAccount = derive.familySeed(account.secret)
const { signedTransaction } = sign(tx, signedAccount) const { signedTransaction } = sign(tx, signedAccount)
const response = await state.client.send({ const response = await xrplSend({
command: 'submit', command: 'submit',
tx_blob: signedTransaction tx_blob: signedTransaction
}) })

View File

@@ -0,0 +1,7 @@
import { XrplClient } from 'xrpl-client';
import state from '..';
export const xrplSend = async(...params: Parameters<XrplClient['send']>) => {
const client = await state.client.ready()
return client.send(...params);
}

View File

@@ -78,7 +78,7 @@ export interface IState {
splits: { splits: {
[id: string]: SplitSize [id: string]: SplitSize
} }
client: XrplClient | null client: XrplClient
clientStatus: 'offline' | 'online' clientStatus: 'offline' | 'online'
mainModalOpen: boolean mainModalOpen: boolean
mainModalShowed: boolean mainModalShowed: boolean
@@ -113,7 +113,7 @@ let initialState: IState = {
tabSize: 2 tabSize: 2
}, },
splits: {}, splits: {},
client: null, client: undefined!, // set below only.
clientStatus: 'offline' as 'offline', clientStatus: 'offline' as 'offline',
mainModalOpen: false, mainModalOpen: false,
mainModalShowed: false, mainModalShowed: false,
@@ -153,9 +153,9 @@ const state = proxy<IState>({
}) })
// Initialize socket connection // Initialize socket connection
const client = new XrplClient(`wss://${process.env.NEXT_PUBLIC_TESTNET_URL}`) const client = new XrplClient(`wss://${process.env.NEXT_PUBLIC_TESTNET_URL}`)
state.client = ref(client);
client.on('online', () => { client.on('online', () => {
state.client = ref(client)
state.clientStatus = 'online' state.clientStatus = 'online'
}) })

View File

@@ -1,6 +1,7 @@
import toast from 'react-hot-toast' import toast from 'react-hot-toast'
import { derive, sign } from 'xrpl-accountlib' import { derive, sign } from 'xrpl-accountlib'
import state, { IAccount } from '../state' import { IAccount } from '../state'
import { xrplSend } from '../state/actions/xrpl-client'
const estimateFee = async ( const estimateFee = async (
tx: Record<string, unknown>, tx: Record<string, unknown>,
@@ -22,7 +23,7 @@ const estimateFee = async (
const keypair = derive.familySeed(account.secret) const keypair = derive.familySeed(account.secret)
const { signedTransaction } = sign(copyTx, keypair) const { signedTransaction } = sign(copyTx, keypair)
const res = await state.client?.send({ command: 'fee', tx_blob: signedTransaction }) const res = await xrplSend({ command: 'fee', tx_blob: signedTransaction })
if (res && res.drops) { if (res && res.drops) {
return res.drops return res.drops
} }

View File

@@ -29,17 +29,15 @@ export const tts = {
export type TTS = typeof tts export type TTS = typeof tts
const calculateHookOn = (arr: (keyof TTS)[]) => { const calculateHookOn = (arr: (keyof TTS)[]) => {
let start = '0x000000003e3ff5bf' let s = '0x3e3ff5bf'
arr.forEach(n => { arr.forEach(n => {
let v = BigInt(start) let v = BigInt(s)
v ^= BigInt(1) << BigInt(tts[n as keyof TTS]) v ^= BigInt(1) << BigInt(tts[n as keyof TTS])
let s = v.toString(16) s = "0x" + v.toString(16)
let l = s.length
if (l < 16) s = '0'.repeat(16 - l) + s
s = '0x' + s
start = s
}) })
return start.substring(2) s = s.replace('0x', '')
s = s.padStart(64, '0')
return s
} }
export default calculateHookOn export default calculateHookOn

143
yarn.lock
View File

@@ -1343,13 +1343,6 @@ balanced-match@^1.0.0:
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base-x@3.0.4:
version "3.0.4"
resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.4.tgz"
integrity sha512-UYOadoSIkEI/VrRGSG6qp93rp2WdokiAiNYDfGW5qURAY8GiAQkvMbwNNSDYiVJopqv4gCna7xqf4rrNGp+5AA==
dependencies:
safe-buffer "^5.0.1"
base-x@3.0.9, base-x@^3.0.2, base-x@^3.0.3: base-x@3.0.9, base-x@^3.0.2, base-x@^3.0.3:
version "3.0.9" version "3.0.9"
resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz"
@@ -1367,7 +1360,7 @@ before-after-hook@^2.2.0:
resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz"
integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
big-integer@^1.6.48, big-integer@latest: big-integer@^1.6.48, big-integer@^1.6.51:
version "1.6.51" version "1.6.51"
resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz"
integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
@@ -1377,11 +1370,6 @@ big.js@^5.2.2:
resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
bignumber.js@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz"
integrity sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==
bignumber.js@^5.0.0: bignumber.js@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-5.0.0.tgz" resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-5.0.0.tgz"
@@ -1399,9 +1387,9 @@ bindings@^1.3.0:
dependencies: dependencies:
file-uri-to-path "1.0.0" file-uri-to-path "1.0.0"
bip32@^2.0.5: bip32@^2.0.6:
version "2.0.6" version "2.0.6"
resolved "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz" resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134"
integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==
dependencies: dependencies:
"@types/node" "10.12.18" "@types/node" "10.12.18"
@@ -1412,9 +1400,9 @@ bip32@^2.0.5:
typeforce "^1.11.5" typeforce "^1.11.5"
wif "^2.0.6" wif "^2.0.6"
bip39@^3.0.2: bip39@^3.0.4:
version "3.0.4" version "3.0.4"
resolved "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz" resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0"
integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==
dependencies: dependencies:
"@types/node" "11.11.6" "@types/node" "11.11.6"
@@ -1432,6 +1420,11 @@ bn.js@^5.1.1:
resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz"
integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
bn.js@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
bottleneck@^2.15.3: bottleneck@^2.15.3:
version "2.19.5" version "2.19.5"
resolved "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz" resolved "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz"
@@ -4045,15 +4038,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0" hash-base "^3.0.0"
inherits "^2.0.1" inherits "^2.0.1"
ripple-address-codec@^3.0.4: ripple-address-codec@^4.1.1, ripple-address-codec@^4.2.3:
version "3.0.4"
resolved "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-3.0.4.tgz"
integrity sha512-GFk1BgavW+9oy5Z1Cp6YAGMfB51QdbeuhOo0Zir+s+S40F5vHtVZYu6zZE1eOAX92A5kygPuBRX4APH2v8Yhmg==
dependencies:
base-x "3.0.4"
create-hash "^1.1.2"
ripple-address-codec@^4.1.0, ripple-address-codec@^4.1.1, ripple-address-codec@^4.2.3:
version "4.2.3" version "4.2.3"
resolved "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.3.tgz" resolved "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.3.tgz"
integrity sha512-9Nd0hQmKoJEhSTzYR9kYjKmSWlH6HaVosNVAM7mIIVlzcNlQCPfKXj7CfvXcRiHl3C6XUZj7RFLqzVaPjq2ufA== integrity sha512-9Nd0hQmKoJEhSTzYR9kYjKmSWlH6HaVosNVAM7mIIVlzcNlQCPfKXj7CfvXcRiHl3C6XUZj7RFLqzVaPjq2ufA==
@@ -4069,7 +4054,7 @@ ripple-address-codec@^4.2.4:
base-x "3.0.9" base-x "3.0.9"
create-hash "^1.1.2" create-hash "^1.1.2"
ripple-binary-codec@=1.4.2, ripple-binary-codec@^0.2.4, ripple-binary-codec@^1.1.3, ripple-binary-codec@^1.4.2: ripple-binary-codec@=1.4.2, ripple-binary-codec@^1.1.3, ripple-binary-codec@^1.4.2, ripple-binary-codec@^1.5.0-beta.2:
version "1.4.2" version "1.4.2"
resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-1.4.2.tgz#cdc35353e4bc7c3a704719247c82b4c4d0b57dd3" resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-1.4.2.tgz#cdc35353e4bc7c3a704719247c82b4c4d0b57dd3"
integrity sha512-EDKIyZMa/6Ay/oNgCwjD9b9CJv0zmBreeHVQeG4BYwy+9GPnIQjNeT5e/aB6OjAnhcmpgbPeBmzwmNVwzxlt0w== integrity sha512-EDKIyZMa/6Ay/oNgCwjD9b9CJv0zmBreeHVQeG4BYwy+9GPnIQjNeT5e/aB6OjAnhcmpgbPeBmzwmNVwzxlt0w==
@@ -4081,32 +4066,7 @@ ripple-binary-codec@=1.4.2, ripple-binary-codec@^0.2.4, ripple-binary-codec@^1.1
decimal.js "^10.2.0" decimal.js "^10.2.0"
ripple-address-codec "^4.2.4" ripple-address-codec "^4.2.4"
ripple-bs58@^4.0.0: ripple-keypairs@^1.0.3:
version "4.0.1"
resolved "https://registry.npmjs.org/ripple-bs58/-/ripple-bs58-4.0.1.tgz"
integrity sha512-qV88Ls19OIcTt5e70Helj9aLfuFA1f9HLv1EfUGqMXOLgJhpotzfdcn+rXo9oYHd31BvPT/q64BuRKP5IEM+AA==
dependencies:
base-x "^3.0.2"
ripple-bs58check@latest:
version "2.0.2"
resolved "https://registry.yarnpkg.com/ripple-bs58check/-/ripple-bs58check-2.0.2.tgz#f270dbcd81630b26a21901c3ce27b7d62a4e9c91"
integrity sha512-clZI2ytGYs3st8yz66EFfyXs5ZpHQjL/Y2txXUPkzj5bjwgODXFO7Ms0tuUj6aFek/NKk8dsqxUmQsPjmsBrwg==
dependencies:
create-hash "^1.1.0"
ripple-bs58 "^4.0.0"
ripple-hashes@^0.3.4, ripple-hashes@latest:
version "0.3.4"
resolved "https://registry.npmjs.org/ripple-hashes/-/ripple-hashes-0.3.4.tgz"
integrity sha512-u2kgg9Yu9D44HWnC9R2lNg+amVLllJkMQmXZEEM2DAMFXigr4+ph1O8LLxLv+k0fbdjAjos4aUyWwcw6cxzYMw==
dependencies:
bignumber.js "^4.1.0"
create-hash "^1.1.2"
ripple-address-codec "^3.0.4"
ripple-binary-codec "^0.2.4"
ripple-keypairs@^1.0.3, ripple-keypairs@latest:
version "1.1.3" version "1.1.3"
resolved "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.3.tgz" resolved "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.3.tgz"
integrity sha512-y74Y3c0g652BgpDhWsf0x98GnUyY2D9eO2ay2exienUfbIe00TeIiFhYXQhCGVnliGsxeV9WTpU+YuEWuIxuhw== integrity sha512-y74Y3c0g652BgpDhWsf0x98GnUyY2D9eO2ay2exienUfbIe00TeIiFhYXQhCGVnliGsxeV9WTpU+YuEWuIxuhw==
@@ -4117,6 +4077,17 @@ ripple-keypairs@^1.0.3, ripple-keypairs@latest:
hash.js "^1.0.3" hash.js "^1.0.3"
ripple-address-codec "^4.2.3" ripple-address-codec "^4.2.3"
ripple-keypairs@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/ripple-keypairs/-/ripple-keypairs-1.1.4.tgz#4486fca703b8a2fc4f30cfd568478f3d12c1a911"
integrity sha512-PMMjTOxZmCSBOvHPj6bA+V/HGx7oFgDtGGI8VcZYuaFO2H87UX0X0jhfHy+LA2Xy31WYlD7GaDIDDt2QO+AMtw==
dependencies:
bn.js "^5.1.1"
brorand "^1.0.5"
elliptic "^6.5.4"
hash.js "^1.0.3"
ripple-address-codec "^4.2.4"
ripple-lib-transactionparser@0.8.2: ripple-lib-transactionparser@0.8.2:
version "0.8.2" version "0.8.2"
resolved "https://registry.npmjs.org/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz" resolved "https://registry.npmjs.org/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz"
@@ -4125,10 +4096,10 @@ ripple-lib-transactionparser@0.8.2:
bignumber.js "^9.0.0" bignumber.js "^9.0.0"
lodash "^4.17.15" lodash "^4.17.15"
ripple-lib@^1.6.4: ripple-lib@^1.10.1:
version "1.10.0" version "1.10.1"
resolved "https://registry.npmjs.org/ripple-lib/-/ripple-lib-1.10.0.tgz" resolved "https://registry.yarnpkg.com/ripple-lib/-/ripple-lib-1.10.1.tgz#9c353702792b25465cdb269265d6f5bb27b1471b"
integrity sha512-Cg2u73UybfM1PnzcuLt5flvLKZn35ovdIp+1eLrReVB4swuRuUF/SskJG9hf5wMosbvh+E+jZu8A6IbYJoyFIA== integrity sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA==
dependencies: dependencies:
"@types/lodash" "^4.14.136" "@types/lodash" "^4.14.136"
"@types/ws" "^7.2.0" "@types/ws" "^7.2.0"
@@ -4142,10 +4113,10 @@ ripple-lib@^1.6.4:
ripple-lib-transactionparser "0.8.2" ripple-lib-transactionparser "0.8.2"
ws "^7.2.0" ws "^7.2.0"
ripple-secret-codec@^1.0.2: ripple-secret-codec@^1.0.3:
version "1.0.2" version "1.0.3"
resolved "https://registry.npmjs.org/ripple-secret-codec/-/ripple-secret-codec-1.0.2.tgz" resolved "https://registry.yarnpkg.com/ripple-secret-codec/-/ripple-secret-codec-1.0.3.tgz#dbc27bf18f09fb5cfe2aa8f814ee378e7731d001"
integrity sha512-BgI49rBThZm/Y01EE8vTdDh0iTFffvHzyc3M4K5kS33+od7lww/9+n/DaSCGkIbz0mZxsghlkQx0Z7GAt7Chlg== integrity sha512-vYcHlJx1p+5uH4ORda2dlvbgCy68m/Ib2kn+Np6PMmRoBenf9pKHa4vzaWmp2SjJKPi1921lQjdeAWoXdm7E0g==
dependencies: dependencies:
base-x "^3.0.3" base-x "^3.0.3"
bignumber.js "^5.0.0" bignumber.js "^5.0.0"
@@ -4854,30 +4825,29 @@ ws@^7.2.0:
resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz" resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz"
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
xrpl-accountlib@^1.5.2: xrpl-accountlib@^1.6.1:
version "1.5.2" version "1.6.1"
resolved "https://registry.yarnpkg.com/xrpl-accountlib/-/xrpl-accountlib-1.5.2.tgz#8f16abe449fd60ba9ed75597f6ce3f0c45dfff43" resolved "https://registry.yarnpkg.com/xrpl-accountlib/-/xrpl-accountlib-1.6.1.tgz#97a027e1c774246c536593e7c3d689ac58bfc0e8"
integrity sha512-lieY2/5G9DySqdtgQ0AD/aMMG5Sy/MLAmbIsmsCaF06scM5DpR8s4SsEzgHni7dOG68Wjnb2Uz6tf5aV+l4/Kg== integrity sha512-H7hvrbIFfO1N6XkTZVFtO8LntlLfNpNByH2Cqov1ZNocJLSvqAClVpVdHIwU9K9cW1koiP/7o2ww++PksfmbIQ==
dependencies: dependencies:
assert "^2.0.0" assert "^2.0.0"
bip32 "^2.0.5" bip32 "^2.0.6"
bip39 "^3.0.2" bip39 "^3.0.4"
bn.js "^5.1.1" bn.js "^5.2.1"
elliptic "6.5.4" elliptic "6.5.4"
hash.js "^1.1.7" hash.js "^1.1.7"
ripple-address-codec "^4.1.0" ripple-address-codec "^4.2.4"
ripple-binary-codec "^1.4.2" ripple-binary-codec "^1.4.2"
ripple-hashes "^0.3.4" ripple-keypairs "^1.1.4"
ripple-keypairs "^1.0.3" ripple-lib "^1.10.1"
ripple-lib "^1.6.4" ripple-secret-codec "^1.0.3"
ripple-secret-codec "^1.0.2"
xrpl-secret-numbers "^0.3.3" xrpl-secret-numbers "^0.3.3"
xrpl-sign-keypairs "^2.1.1" xrpl-sign-keypairs "^2.1.2"
xrpl-client@^1.9.4: xrpl-client@^2.0.2:
version "1.9.4" version "2.0.2"
resolved "https://registry.npmjs.org/xrpl-client/-/xrpl-client-1.9.4.tgz" resolved "https://registry.yarnpkg.com/xrpl-client/-/xrpl-client-2.0.2.tgz#f24c7fb38fe0de3b1d45cd8c3a5e9f5ef1a0c439"
integrity sha512-0+O5TbJB4GBAuZVvIrZje8VMSTTQKU8pyvuOggSmX9fhqed5c7+GGOSmKD7RWNmyQ1dZT2I70tDpzocZybtYyg== integrity sha512-ujquoaRn4U0FTm3jEAISr9VS+FMwPVVjWTLqBrQL1MiYypShUSje17R721dHa5ZebxWRwz6SG3BBZsKgcx6egw==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
websocket "^1.0.34" websocket "^1.0.34"
@@ -4891,16 +4861,15 @@ xrpl-secret-numbers@^0.3.3:
brorand "^1.1.0" brorand "^1.1.0"
ripple-keypairs "^1.0.3" ripple-keypairs "^1.0.3"
xrpl-sign-keypairs@^2.1.1: xrpl-sign-keypairs@^2.1.2:
version "2.1.1" version "2.1.2"
resolved "https://registry.yarnpkg.com/xrpl-sign-keypairs/-/xrpl-sign-keypairs-2.1.1.tgz#2f7f2855799c5d4ba091007963825eef1db21a4e" resolved "https://registry.yarnpkg.com/xrpl-sign-keypairs/-/xrpl-sign-keypairs-2.1.2.tgz#dbe1543c4ded5fa2ffab763c31c26bff895cbf3b"
integrity sha512-rKQmUCx+x7gjjJ5zv/Z7bOYR+8I36JwUCFlpuD9UzYD4w2msGQDG0rmxVENyZSfThDBVQ1kEArVn6SMDMe9LUQ== integrity sha512-4QieWblhpL3upnUw7lJ0lgyDSY8Q/KT35HP7xhHk03o5fcqMo0FU5b8Aa6YUXhDZIlQoy8ssjCYB9rRQO4DSWg==
dependencies: dependencies:
big-integer latest big-integer "^1.6.51"
ripple-binary-codec "^1.4.2" ripple-address-codec "^4.2.4"
ripple-bs58check latest ripple-binary-codec "^1.5.0-beta.2"
ripple-hashes latest ripple-keypairs "^1.1.4"
ripple-keypairs latest
yaeti@^0.0.6: yaeti@^0.0.6:
version "0.0.6" version "0.0.6"