diff --git a/.changeset/rude-tables-share.md b/.changeset/rude-tables-share.md new file mode 100644 index 000000000000..246db374c269 --- /dev/null +++ b/.changeset/rude-tables-share.md @@ -0,0 +1,22 @@ +--- +"@ledgerhq/types-live": patch +"@ledgerhq/coin-algorand": patch +"@ledgerhq/coin-polkadot": patch +"@ledgerhq/coin-bitcoin": patch +"@ledgerhq/coin-evm": patch +"@actions/build-checks": patch +"@ledgerhq/native-modules-tools": patch +"ledger-live-desktop": patch +"live-mobile": patch +"@ledgerhq/live-common": patch +"@ledgerhq/ethereum-provider": patch +"@ledgerhq/dummy-wallet-app": patch +"@ledgerhq/wallet-api-exchange-module": patch +"@ledgerhq/coin-framework": patch +"@ledgerhq/live-nft-react": patch +"@ledgerhq/live-wallet": patch +"@ledgerhq/live-cli": patch +"@ledgerhq/live-env": patch +--- + +Drop technical Account#name and Account#starred fields and replace it with a new architecture: a wallet store that contains all user's data. diff --git a/apps/cli/package.json b/apps/cli/package.json index af23db169d22..7298fd8f24e2 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -41,6 +41,7 @@ "@ledgerhq/live-config": "workspace:^", "@ledgerhq/live-countervalues": "workspace:^", "@ledgerhq/live-env": "workspace:^", + "@ledgerhq/live-wallet": "workspace:^", "@ledgerhq/live-network": "workspace:^", "@ledgerhq/logs": "workspace:^", "@ledgerhq/types-devices": "workspace:^", diff --git a/apps/cli/src/commands/blockchain/derivation.ts b/apps/cli/src/commands/blockchain/derivation.ts index 597e33d9aa09..09cc81c5484d 100644 --- a/apps/cli/src/commands/blockchain/derivation.ts +++ b/apps/cli/src/commands/blockchain/derivation.ts @@ -6,7 +6,8 @@ import { getDerivationScheme, } from "@ledgerhq/coin-framework/derivation"; import { setEnv, getEnv } from "@ledgerhq/live-env"; -import { getAccountPlaceholderName } from "@ledgerhq/live-common/account/index"; +import { getDefaultAccountNameForCurrencyIndex } from "@ledgerhq/live-wallet/accountName"; + export default { args: [], job: () => @@ -32,11 +33,7 @@ export default { " " + (derivationMode || "default") + ": " + - getAccountPlaceholderName({ - currency, - index: 0, - derivationMode, - }) + + getDefaultAccountNameForCurrencyIndex({ currency, index: 0 }) + ": " + path ); diff --git a/apps/cli/src/commands/blockchain/estimateMaxSpendable.ts b/apps/cli/src/commands/blockchain/estimateMaxSpendable.ts index 51f747ea06c2..52e6362cf624 100644 --- a/apps/cli/src/commands/blockchain/estimateMaxSpendable.ts +++ b/apps/cli/src/commands/blockchain/estimateMaxSpendable.ts @@ -1,14 +1,15 @@ import { concat, from } from "rxjs"; import { concatMap } from "rxjs/operators"; import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; -import { getAccountUnit, getAccountName } from "@ledgerhq/live-common/account/index"; +import { getAccountUnit } from "@ledgerhq/live-common/account/index"; import { formatCurrencyUnit } from "@ledgerhq/live-common/currencies/index"; import { scan, scanCommonOpts } from "../../scan"; import type { ScanCommonOpts } from "../../scan"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const format = (account, value) => { const unit = getAccountUnit(account); - const name = getAccountName(account); + const name = getDefaultAccountName(account); const amount = formatCurrencyUnit(unit, value, { showCode: true, disableRounding: true, diff --git a/apps/cli/src/commands/blockchain/generateTestTransaction.ts b/apps/cli/src/commands/blockchain/generateTestTransaction.ts index bfe79dca71bf..504b33a76248 100644 --- a/apps/cli/src/commands/blockchain/generateTestTransaction.ts +++ b/apps/cli/src/commands/blockchain/generateTestTransaction.ts @@ -10,6 +10,7 @@ import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; import type { InferTransactionsOpts } from "../../transaction"; import { inferTransactions, inferTransactionsOpts } from "../../transaction"; import type { SignedOperation } from "@ledgerhq/types-live"; +import { getDefaultAccountNameForCurrencyIndex } from "@ledgerhq/live-wallet/accountName"; const toJS = obj => { if (typeof obj === "object" && obj) { @@ -118,7 +119,7 @@ ${apdus.map(a => " " + a).join("\n")} reduce((jsCodes, code) => jsCodes.concat(code), []), map( codes => `{ - name: "${account.name}", + name: "${getDefaultAccountNameForCurrencyIndex(account)}", raw: ${JSON.stringify( toAccountRaw({ ...account, diff --git a/apps/cli/src/commands/live/balanceHistory.ts b/apps/cli/src/commands/live/balanceHistory.ts index 5656eb4f4962..a90f05cdb3cc 100644 --- a/apps/cli/src/commands/live/balanceHistory.ts +++ b/apps/cli/src/commands/live/balanceHistory.ts @@ -12,6 +12,8 @@ import { formatCurrencyUnit } from "@ledgerhq/live-common/currencies/index"; import { scan, scanCommonOpts } from "../../scan"; import type { ScanCommonOpts } from "../../scan"; import type { PortfolioRange } from "@ledgerhq/types-live"; +import { getDefaultAccountNameForCurrencyIndex } from "@ledgerhq/live-wallet/accountName"; + const histoFormatters = { default: (histo, account) => histo @@ -29,7 +31,7 @@ const histoFormatters = { asciichart: (history, account) => "\n" + "".padStart(22) + - account.name + + getDefaultAccountNameForCurrencyIndex(account) + ": " + formatCurrencyUnit(account.unit, account.balance, { showCode: true, diff --git a/apps/cli/src/commands/live/exportAccounts.ts b/apps/cli/src/commands/live/exportAccounts.ts index 4a35aa8cac91..e64feb8d99b8 100644 --- a/apps/cli/src/commands/live/exportAccounts.ts +++ b/apps/cli/src/commands/live/exportAccounts.ts @@ -1,11 +1,12 @@ import { of, interval } from "rxjs"; import { reduce, mergeMap, shareReplay, tap } from "rxjs/operators"; import { dataToFrames } from "qrloop"; -import { encode } from "@ledgerhq/live-common/cross"; +import { encode } from "@ledgerhq/live-wallet/liveqr/cross"; import { asQR } from "../../qr"; import { scan, scanCommonOpts } from "../../scan"; import type { ScanCommonOpts } from "../../scan"; import { Account } from "@ledgerhq/types-live"; +import { initialState } from "@ledgerhq/live-wallet/store"; export default { description: "Export given accounts to Live QR or console for importing", args: [ @@ -27,6 +28,7 @@ export default { reduce((accounts, account) => accounts.concat(account), []), mergeMap(accounts => { const data = encode({ + walletState: initialState, accounts, settings: { pairExchanges: {}, diff --git a/apps/cli/src/commands/live/portfolio.ts b/apps/cli/src/commands/live/portfolio.ts index 3e613e9b6b08..76018283dd80 100644 --- a/apps/cli/src/commands/live/portfolio.ts +++ b/apps/cli/src/commands/live/portfolio.ts @@ -5,7 +5,7 @@ import { from } from "rxjs"; import { reduce, concatMap, map } from "rxjs/operators"; import type { Account, PortfolioRange } from "@ledgerhq/types-live"; import type { Currency } from "@ledgerhq/types-cryptoassets"; -import { flattenAccounts, getAccountName } from "@ledgerhq/live-common/account/index"; +import { flattenAccounts } from "@ledgerhq/live-common/account/index"; import { getPortfolio, getRanges } from "@ledgerhq/live-countervalues/portfolio"; import { formatCurrencyUnit, findCurrencyByTicker } from "@ledgerhq/live-common/currencies/index"; import { scan, scanCommonOpts } from "../../scan"; @@ -15,6 +15,7 @@ import { loadCountervalues, inferTrackingPairForAccounts, } from "@ledgerhq/live-countervalues/logic"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; function asPortfolioRange(period: string): PortfolioRange { const ranges = getRanges(); @@ -114,14 +115,15 @@ export default { let str = ""; accounts.forEach(top => { - str += render("Account " + getAccountName(top), [top]); + str += render("Account " + getDefaultAccountName(top), [top]); str += "\n"; if (top.subAccounts) { top.subAccounts.forEach(sub => { - str += render("Account " + getAccountName(top) + " > " + getAccountName(sub), [ - sub, - ]).replace(/\n/s, " \n"); + str += render( + "Account " + getDefaultAccountName(top) + " > " + getDefaultAccountName(sub), + [sub], + ).replace(/\n/s, " \n"); str += "\n"; }); } diff --git a/apps/cli/src/scan.ts b/apps/cli/src/scan.ts index b2bf2a3bf715..5cc2acbf3b8a 100644 --- a/apps/cli/src/scan.ts +++ b/apps/cli/src/scan.ts @@ -19,8 +19,8 @@ import getAppAndVersion from "@ledgerhq/live-common/hw/getAppAndVersion"; import { withDevice } from "@ledgerhq/live-common/hw/deviceAccess"; import { delay } from "@ledgerhq/live-common/promise"; import { jsonFromFile } from "./stream"; -import { shortAddressPreview } from "@ledgerhq/live-common/account/helpers"; import fs from "fs"; + export const deviceOpt = { name: "device", alias: "d", @@ -317,15 +317,8 @@ export function scan(arg: ScanCommonOpts): Observable { }); const account: Account = { type: "Account", - name: - currency.name + - " " + - (derivationMode || "legacy") + - " " + - shortAddressPreview(xpubOrAddress), xpub: xpubOrAddress, seedIdentifier: xpubOrAddress, - starred: true, used: true, swapHistory: [], id, diff --git a/apps/ledger-live-desktop/package.json b/apps/ledger-live-desktop/package.json index 567587dd9cde..a6ca3e63c3e8 100644 --- a/apps/ledger-live-desktop/package.json +++ b/apps/ledger-live-desktop/package.json @@ -69,6 +69,7 @@ "@ledgerhq/live-network": "workspace:^", "@ledgerhq/live-nft": "workspace:^", "@ledgerhq/live-nft-react": "workspace:^", + "@ledgerhq/live-wallet": "workspace:^", "@ledgerhq/logs": "workspace:^", "@ledgerhq/react-ui": "workspace:^", "@ledgerhq/types-cryptoassets": "workspace:^", diff --git a/apps/ledger-live-desktop/src/helpers/accountModel.ts b/apps/ledger-live-desktop/src/helpers/accountModel.ts index 2ee2f25f6d11..f0c4245675b6 100644 --- a/apps/ledger-live-desktop/src/helpers/accountModel.ts +++ b/apps/ledger-live-desktop/src/helpers/accountModel.ts @@ -3,7 +3,8 @@ */ import { createDataModel, DataModel } from "@ledgerhq/live-common/DataModel"; import { fromAccountRaw, toAccountRaw } from "@ledgerhq/live-common/account/index"; -import { Account, AccountRaw, Operation } from "@ledgerhq/types-live"; +import { Account, AccountRaw, Operation, AccountUserData } from "@ledgerhq/types-live"; +import { accountRawToAccountUserData } from "@ledgerhq/live-wallet/store"; /** * @memberof models/account @@ -15,7 +16,7 @@ export const opRetentionStategy = const opRetentionFilter = opRetentionStategy(366, 500); -const accountModel: DataModel = createDataModel({ +const accountModel: DataModel = createDataModel({ migrations: [ // 2018-10-10: change of the account id format to include the derivationMode and seedIdentifier in Account raw => { @@ -78,11 +79,15 @@ const accountModel: DataModel = createDataModel({ // ^- Each time a modification is brought to the model, add here a migration function here ], - decode: fromAccountRaw, - encode: (account: Account): AccountRaw => - toAccountRaw({ - ...account, - operations: account.operations.filter(opRetentionFilter), - }), + decode: (raw: AccountRaw) => [fromAccountRaw(raw), accountRawToAccountUserData(raw)], + encode: ([account, userData]: [Account, AccountUserData]): AccountRaw => + toAccountRaw( + { + ...account, + operations: account.operations.filter(opRetentionFilter), + }, + userData, + ), }); + export default accountModel; diff --git a/apps/ledger-live-desktop/src/renderer/actions/accounts.ts b/apps/ledger-live-desktop/src/renderer/actions/accounts.ts index 92d8d90fb12e..1db7ea27f1f8 100644 --- a/apps/ledger-live-desktop/src/renderer/actions/accounts.ts +++ b/apps/ledger-live-desktop/src/renderer/actions/accounts.ts @@ -1,27 +1,24 @@ import { Dispatch } from "redux"; -import { Account, SubAccount } from "@ledgerhq/types-live"; -import { AccountComparator } from "@ledgerhq/live-common/account/index"; +import { Account, AccountUserData } from "@ledgerhq/types-live"; +import { AccountComparator } from "@ledgerhq/live-wallet/ordering"; import { getKey } from "~/renderer/storage"; -export const replaceAccounts = (payload: Account[]) => ({ - type: "DB:REPLACE_ACCOUNTS", - payload, -}); - -export const addAccount = (payload: Account) => ({ - type: "DB:ADD_ACCOUNT", - payload, -}); - export const removeAccount = (payload: Account) => ({ type: "DB:REMOVE_ACCOUNT", payload, }); -export const setAccounts = (payload: Account[]) => ({ - type: "SET_ACCOUNTS", - payload, -}); +export const initAccounts = (data: [Account, AccountUserData][]) => { + const accounts = data.map(data => data[0]); + const accountsUserData = data.map(data => data[1]); + return { + type: "INIT_ACCOUNTS", + payload: { + accounts, + accountsUserData, + }, + }; +}; export const reorderAccounts = (comparator: AccountComparator) => (dispatch: Dispatch) => dispatch({ @@ -30,11 +27,8 @@ export const reorderAccounts = (comparator: AccountComparator) => (dispatch: Dis }); export const fetchAccounts = () => async (dispatch: Dispatch) => { - const accounts = await getKey("app", "accounts", []); - return dispatch({ - type: "SET_ACCOUNTS", - payload: accounts, - }); + const data: [Account, AccountUserData][] = await getKey("app", "accounts", []); + return dispatch(initAccounts(data)); }; type UpdateAccountAction = { @@ -61,24 +55,6 @@ export const updateAccount: UpdateAccount = payload => ({ }, }); -export const toggleStarAction = (id: string, parentId?: string): UpdateAccountAction => { - return { - type: "DB:UPDATE_ACCOUNT", - payload: { - updater: (account: Account) => { - if (parentId && account.subAccounts) { - const subAccounts: SubAccount[] = account.subAccounts.map(sa => - sa.id === id ? { ...sa, starred: !sa.starred } : sa, - ); - return { ...account, subAccounts }; - } - return { ...account, starred: !account.starred }; - }, - accountId: parentId || id, - }, - }; -}; - export const cleanAccountsCache = () => ({ type: "DB:CLEAN_ACCOUNTS_CACHE" }); export const cleanFullNodeDisconnect = () => ({ type: "DB:CLEAN_FULLNODE_DISCONNECT", diff --git a/apps/ledger-live-desktop/src/renderer/actions/general.ts b/apps/ledger-live-desktop/src/renderer/actions/general.ts index b222b564b376..bf8abbc64372 100644 --- a/apps/ledger-live-desktop/src/renderer/actions/general.ts +++ b/apps/ledger-live-desktop/src/renderer/actions/general.ts @@ -4,11 +4,7 @@ import { createSelector } from "reselect"; // TODO make a generic way to implement this for each family // eslint-disable-next-line no-restricted-imports import { isAccountDelegating } from "@ledgerhq/live-common/families/tezos/bakers"; -import { - flattenSortAccounts, - sortAccountsComparatorFromOrder, - FlattenAccountsOptions, -} from "@ledgerhq/live-common/account/index"; +import { flattenSortAccounts } from "@ledgerhq/live-wallet/ordering"; import { reorderAccounts } from "~/renderer/actions/accounts"; import { useCalculateCountervalueCallback as useCalculateCountervalueCallbackCommon, @@ -26,6 +22,9 @@ import { import { resolveTrackingPairs } from "@ledgerhq/live-countervalues/logic"; import { useExtraSessionTrackingPair } from "./deprecated/ondemand-countervalues"; import { useMarketPerformanceTrackingPairs } from "./marketperformance"; +import { walletSelector } from "../reducers/wallet"; +import { sortAccountsComparatorFromOrder } from "@ledgerhq/live-wallet/ordering"; +import { FlattenAccountsOptions } from "@ledgerhq/live-common/account/index"; // provide redux states via custom hook wrapper @@ -47,9 +46,10 @@ export function useCalculateCountervalueCallback() { }); } export function useSortAccountsComparator() { - const accounts = useSelector(getOrderAccounts); + const orderAccounts = useSelector(getOrderAccounts); const calc = useCalculateCountervalueCallback(); - return sortAccountsComparatorFromOrder(accounts, calc); + const walletState = useSelector(walletSelector); + return sortAccountsComparatorFromOrder(orderAccounts, walletState, calc); } export function useFlattenSortAccounts(options?: FlattenAccountsOptions) { const accounts = useSelector(accountsSelector); diff --git a/apps/ledger-live-desktop/src/renderer/actions/wallet.ts b/apps/ledger-live-desktop/src/renderer/actions/wallet.ts new file mode 100644 index 000000000000..806628353d7b --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/actions/wallet.ts @@ -0,0 +1,7 @@ +import { setAccountStarred } from "@ledgerhq/live-wallet/store"; + +export const toggleStarAction = (id: string, value: boolean) => { + const action = setAccountStarred(id, value); + action.type = "DB:" + action.type; + return action; +}; diff --git a/apps/ledger-live-desktop/src/renderer/analytics/segment.ts b/apps/ledger-live-desktop/src/renderer/analytics/segment.ts index c180960f6b8a..b2a749e67026 100644 --- a/apps/ledger-live-desktop/src/renderer/analytics/segment.ts +++ b/apps/ledger-live-desktop/src/renderer/analytics/segment.ts @@ -19,7 +19,6 @@ import { } from "~/renderer/reducers/settings"; import { State } from "~/renderer/reducers"; import { AccountLike, Feature, FeatureId, Features, idsToLanguage } from "@ledgerhq/types-live"; -import { getAccountName } from "@ledgerhq/live-common/account/index"; import { accountsSelector } from "../reducers/accounts"; import { GENESIS_PASS_COLLECTION_CONTRACT, @@ -30,6 +29,7 @@ import createStore from "../createStore"; import { currentRouteNameRef, previousRouteNameRef } from "./screenRefs"; import { useCallback, useContext } from "react"; import { analyticsDrawerContext } from "../drawers/Provider"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; invariant(typeof window !== "undefined", "analytics/segment must be called on renderer thread"); // eslint-disable-next-line @typescript-eslint/no-var-requires const os = require("os"); @@ -224,13 +224,16 @@ function sendTrack(event: string, properties: object | undefined | null) { const confidentialityFilter = (properties?: Record | null) => { const { account, parentAccount } = properties || {}; const filterAccount = account - ? { account: typeof account === "object" ? getAccountName(account as AccountLike) : account } + ? { + account: + typeof account === "object" ? getDefaultAccountName(account as AccountLike) : account, + } : {}; const filterParentAccount = parentAccount ? { parentAccount: typeof parentAccount === "object" - ? getAccountName(parentAccount as AccountLike) + ? getDefaultAccountName(parentAccount as AccountLike) : parentAccount, } : {}; diff --git a/apps/ledger-live-desktop/src/renderer/components/AccountsList/AccountRow.tsx b/apps/ledger-live-desktop/src/renderer/components/AccountsList/AccountRow.tsx index ad1e652997d7..387ed04b33de 100644 --- a/apps/ledger-live-desktop/src/renderer/components/AccountsList/AccountRow.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/AccountsList/AccountRow.tsx @@ -9,6 +9,7 @@ import CryptoCurrencyIconWithCount from "~/renderer/components/CryptoCurrencyIco import FormattedVal from "~/renderer/components/FormattedVal"; import Input from "~/renderer/components/Input"; import AccountTagDerivationMode from "../AccountTagDerivationMode"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const InputWrapper = styled.div` margin-left: 4px; width: 100%; @@ -59,7 +60,7 @@ export default class AccountRow extends PureComponent { const { value } = e.target; if (!value && onEditName) { // don't leave an empty input on blur - onEditName(account, account.name); + onEditName(account, getDefaultAccountName(account)); } }; diff --git a/apps/ledger-live-desktop/src/renderer/components/AccountsList/index.tsx b/apps/ledger-live-desktop/src/renderer/components/AccountsList/index.tsx index 9f7c325e92e7..e608704c9c68 100644 --- a/apps/ledger-live-desktop/src/renderer/components/AccountsList/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/AccountsList/index.tsx @@ -1,6 +1,6 @@ -import React, { Component } from "react"; +import React, { useState } from "react"; import { TFunction } from "i18next"; -import { withTranslation } from "react-i18next"; +import { useTranslation } from "react-i18next"; import { Account } from "@ledgerhq/types-live"; import Box from "~/renderer/components/Box"; import LinkWithExternalIcon from "~/renderer/components/LinkWithExternalIcon"; @@ -8,11 +8,14 @@ import FakeLink from "~/renderer/components/FakeLink"; import { SpoilerIcon } from "~/renderer/components/Spoiler"; import { openURL } from "~/renderer/linking"; import AccountRow from "./AccountRow"; +import { useSelector } from "react-redux"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; export type AccountListProps = { accounts: Account[]; checkedIds?: string[]; - editedNames: { + editedNames?: { [accountId: string]: string; }; setAccountName?: (b: Account, a: string) => void; @@ -28,136 +31,114 @@ export type AccountListProps = { id: string; url: string; }; - t: TFunction; ToggleAllComponent?: React.ReactNode; }; -class AccountsList extends Component< - AccountListProps, - { - collapsed: boolean; - } -> { - static defaultProps = { - editedNames: {}, +function AccountsList({ + accounts, + checkedIds, + editedNames = {}, + setAccountName, + onToggleAccount, + onSelectAll, + onUnselectAll, + title, + emptyText, + autoFocusFirstInput, + collapsible, + hideAmount, + supportLink, + ToggleAllComponent, +}: AccountListProps) { + const { t } = useTranslation(); + const [collapsed, setCollapsed] = useState(!!collapsible); + const toggleCollapse = () => { + setCollapsed(!collapsed); }; - - state = { - collapsed: !!this.props.collapsible, - }; - - toggleCollapse = () => { - this.setState(({ collapsed }) => ({ - collapsed: !collapsed, - })); - }; - - onSelectAll = () => { - const { accounts, onSelectAll } = this.props; + const onSelectAllCb = () => { if (onSelectAll) onSelectAll(accounts); }; - - onUnselectAll = () => { - const { accounts, onUnselectAll } = this.props; + const onUnselectAllCb = () => { if (onUnselectAll) onUnselectAll(accounts); }; - - render() { - const { - accounts, - checkedIds, - onToggleAccount, - editedNames, - setAccountName, - onSelectAll, - onUnselectAll, - title, - emptyText, - autoFocusFirstInput, - collapsible, - hideAmount, - supportLink, - t, - ToggleAllComponent, - } = this.props; - const { collapsed } = this.state; - const withToggleAll = !!onSelectAll && !!onUnselectAll && accounts.length > 1; - const isAllSelected = - !checkedIds || accounts.every(acc => !!checkedIds.find(id => acc.id === id)); - return ( - - {(title || withToggleAll) && ( - - {title && ( - 1; + const isAllSelected = + !checkedIds || accounts.every(acc => !!checkedIds.find(id => acc.id === id)); + return ( + + {(title || withToggleAll) && ( + + {title && ( + + {collapsible ? : null} + {title} + + )} + {supportLink ? ( + openURL(supportLink.url)} + label={t("addAccounts.supportLinks." + supportLink.id)} + /> + ) : null} + {ToggleAllComponent || + (withToggleAll && ( + - {collapsible ? : null} - {title} - - )} - {supportLink ? ( - openURL(supportLink.url)} - label={t("addAccounts.supportLinks." + supportLink.id)} - /> - ) : null} - {ToggleAllComponent || - (withToggleAll && ( - - {isAllSelected - ? t("addAccounts.unselectAll", { - count: accounts.length, - }) - : t("addAccounts.selectAll", { - count: accounts.length, - })} - - ))} - - )} - {collapsed ? null : accounts.length ? ( - - {accounts.map((account, i) => ( - id === account.id) !== undefined} - onToggleAccount={onToggleAccount} - onEditName={setAccountName} - hideAmount={hideAmount} - accountName={ - typeof editedNames[account.id] === "string" - ? editedNames[account.id] - : account.name - } - /> + {isAllSelected + ? t("addAccounts.unselectAll", { + count: accounts.length, + }) + : t("addAccounts.selectAll", { + count: accounts.length, + })} + ))} - - ) : emptyText ? ( - - {emptyText} - - ) : null} - - ); - } + + )} + {collapsed ? null : accounts.length ? ( + + {accounts.map((account, i) => ( + id === account.id) !== undefined} + onToggleAccount={onToggleAccount} + onEditName={setAccountName} + hideAmount={hideAmount} + accountName={ + typeof editedNames[account.id] === "string" + ? editedNames[account.id] + : accountNameWithDefaultSelector(walletState, account) + } + /> + ))} + + ) : emptyText ? ( + + {emptyText} + + ) : null} + + ); } -export default withTranslation()(AccountsList); + +export default AccountsList; diff --git a/apps/ledger-live-desktop/src/renderer/components/Breadcrumb/AccountCrumb.tsx b/apps/ledger-live-desktop/src/renderer/components/Breadcrumb/AccountCrumb.tsx index 684835bf35ee..cd1ecdc0562c 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Breadcrumb/AccountCrumb.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/Breadcrumb/AccountCrumb.tsx @@ -7,7 +7,6 @@ import { listSubAccounts, getAccountCurrency, findSubAccountById, - getAccountName, } from "@ledgerhq/live-common/account/index"; import { Account, AccountLike, SubAccount } from "@ledgerhq/types-live"; import { accountsSelector } from "~/renderer/reducers/accounts"; @@ -20,6 +19,8 @@ import Ellipsis from "~/renderer/components/Ellipsis"; import CryptoCurrencyIcon from "~/renderer/components/CryptoCurrencyIcon"; import { Separator, Item, TextLink, AngleDown, Check } from "./common"; import { setTrackingSource } from "~/renderer/analytics/TrackPage"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; type ItemShape = { key: string; @@ -59,22 +60,28 @@ const AccountCrumb = () => { [parentId, account, accounts], ); - const renderItem = useCallback(({ item, isActive }: { item: ItemShape; isActive: boolean }) => { - const currency = getAccountCurrency(item.account); - return ( - - - - {getAccountName(item.account)} - - {isActive && ( - - - - )} - - ); - }, []); + const walletState = useSelector(walletSelector); + + const renderItem = useCallback( + ({ item, isActive }: { item: ItemShape; isActive: boolean }) => { + const currency = getAccountCurrency(item.account); + const name = accountNameWithDefaultSelector(walletState, item.account); + return ( + + + + {name} + + {isActive && ( + + + + )} + + ); + }, + [walletState], + ); const onAccountSelected = useCallback( (item: ItemShape) => { @@ -120,10 +127,10 @@ const AccountCrumb = () => { (items: (Account | SubAccount)[]) => items.map(item => ({ key: item.id, - label: getAccountName(item), + label: accountNameWithDefaultSelector(walletState, item), account: item, })), - [], + [walletState], ); const processedItems = useMemo( diff --git a/apps/ledger-live-desktop/src/renderer/components/ContextMenu/AccountContextMenu.tsx b/apps/ledger-live-desktop/src/renderer/components/ContextMenu/AccountContextMenu.tsx index 40ccc2c65a60..42f57cfd4190 100644 --- a/apps/ledger-live-desktop/src/renderer/components/ContextMenu/AccountContextMenu.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/ContextMenu/AccountContextMenu.tsx @@ -11,13 +11,15 @@ import IconBuy from "~/renderer/icons/Exchange"; import IconSwap from "~/renderer/icons/Swap"; import IconAccountSettings from "~/renderer/icons/AccountSettings"; import ContextMenuItem from "./ContextMenuItem"; -import { toggleStarAction } from "~/renderer/actions/accounts"; +import { toggleStarAction } from "~/renderer/actions/wallet"; import { useRefreshAccountsOrdering } from "~/renderer/actions/general"; import { swapSelectableCurrenciesSelector } from "~/renderer/reducers/settings"; import { isCurrencySupported } from "~/renderer/screens/exchange/config"; import { setTrackingSource } from "~/renderer/analytics/TrackPage"; import { ContextMenuItemType } from "./ContextMenuWrapper"; import { IconsLegacy } from "@ledgerhq/react-ui"; +import { accountStarredSelector } from "~/renderer/reducers/wallet"; +import { State } from "~/renderer/reducers"; type Props = { account: AccountLike; @@ -26,6 +28,7 @@ type Props = { children: React.ReactNode; withStar?: boolean; }; + export default function AccountContextMenu({ leftClick, children, @@ -38,6 +41,10 @@ export default function AccountContextMenu({ const refreshAccountsOrdering = useRefreshAccountsOrdering(); const swapSelectableCurrencies = useSelector(swapSelectableCurrenciesSelector); + const isStarred = useSelector((state: State) => + accountStarredSelector(state, { accountId: account.id }), + ); + const menuItems = useMemo(() => { const currency = getAccountCurrency(account); const mainAccount = getMainAccount(account, parentAccount); @@ -124,9 +131,7 @@ export default function AccountContextMenu({ label: "accounts.contextMenu.star", Icon: IconStar, callback: () => { - dispatch( - toggleStarAction(account.id, account.type !== "Account" ? account.parentId : undefined), - ); + dispatch(toggleStarAction(account.id, !isStarred)); refreshAccountsOrdering(); }, }); @@ -165,6 +170,7 @@ export default function AccountContextMenu({ dispatch, history, refreshAccountsOrdering, + isStarred, ]); const currency = getAccountCurrency(account); return ( diff --git a/apps/ledger-live-desktop/src/renderer/components/DeviceAction/index.tsx b/apps/ledger-live-desktop/src/renderer/components/DeviceAction/index.tsx index fcec5fb1e7c1..1c706d0b0dec 100644 --- a/apps/ledger-live-desktop/src/renderer/components/DeviceAction/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/DeviceAction/index.tsx @@ -75,6 +75,7 @@ import { LedgerErrorConstructor } from "@ledgerhq/errors/lib/helpers"; import { TokenCurrency } from "@ledgerhq/types-cryptoassets"; import { isDeviceNotOnboardedError } from "./utils"; import { useKeepScreenAwake } from "~/renderer/hooks/useKeepScreenAwake"; +import { walletSelector } from "~/renderer/reducers/wallet"; type LedgerError = InstanceType>; @@ -227,6 +228,7 @@ export const DeviceActionDefaultRendering = ({ const dispatch = useDispatch(); const preferredDeviceModel = useSelector(preferredDeviceModelSelector); const swapDefaultTrack = useGetSwapTrackingProperties(); + const walletState = useSelector(walletSelector); const type = useTheme().colors.palette.type; @@ -363,6 +365,7 @@ export const DeviceActionDefaultRendering = ({ swapDefaultTrack, amountExpectedTo: amountExpectedTo.toString() ?? undefined, estimatedFees: estimatedFees?.toString() ?? undefined, + walletState, }); } @@ -395,6 +398,7 @@ export const DeviceActionDefaultRendering = ({ amountExpectedTo: amountExpectedTo ?? undefined, estimatedFees: estimatedFees ?? undefined, swapDefaultTrack, + walletState, }); } @@ -413,11 +417,7 @@ export const DeviceActionDefaultRendering = ({ } if (inWrongDeviceForAccount) { - return renderInWrongAppForAccount({ - t, - onRetry, - accountName: inWrongDeviceForAccount.accountName, - }); + return renderInWrongAppForAccount({ t, onRetry }); } if (unresponsive || error instanceof TransportPendingOperation) { diff --git a/apps/ledger-live-desktop/src/renderer/components/DeviceAction/rendering.tsx b/apps/ledger-live-desktop/src/renderer/components/DeviceAction/rendering.tsx index c5bd0bed83ce..7fda3be40b86 100644 --- a/apps/ledger-live-desktop/src/renderer/components/DeviceAction/rendering.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/DeviceAction/rendering.tsx @@ -27,7 +27,6 @@ import { Device } from "@ledgerhq/live-common/hw/actions/types"; import { getAccountUnit, getMainAccount, - getAccountName, getAccountCurrency, } from "@ledgerhq/live-common/account/index"; import { closeAllModal } from "~/renderer/actions/modals"; @@ -72,6 +71,7 @@ import { ErrorBody } from "../ErrorBody"; import LinkWithExternalIcon from "../LinkWithExternalIcon"; import { closePlatformAppDrawer } from "~/renderer/actions/UI"; import { CompleteExchangeError } from "@ledgerhq/live-common/exchange/error"; +import { WalletState, accountNameSelector } from "@ledgerhq/live-wallet/store"; export const AnimationWrapper = styled.div` width: 600px; @@ -828,15 +828,13 @@ export const renderError = ({ export const renderInWrongAppForAccount = ({ t, onRetry, - accountName, }: { t: TFunction; onRetry?: (() => void) | null | undefined; - accountName: string; }) => renderError({ t, - error: new WrongDeviceForAccount("", { accountName }), + error: new WrongDeviceForAccount(""), withExportLogs: true, onRetry, }); @@ -950,6 +948,7 @@ export const renderSwapDeviceConfirmation = ({ amountExpectedTo, estimatedFees, swapDefaultTrack, + walletState, }: { modelId: DeviceModelId; type: Theme["theme"]; @@ -959,15 +958,17 @@ export const renderSwapDeviceConfirmation = ({ amountExpectedTo?: string; estimatedFees?: string; swapDefaultTrack: Record; + walletState: WalletState; }) => { - const [sourceAccountName, sourceAccountCurrency] = [ - getAccountName(exchange.fromAccount), - getAccountCurrency(exchange.fromAccount), - ]; - const [targetAccountName, targetAccountCurrency] = [ - getAccountName(exchange.toAccount), - getAccountCurrency(exchange.toAccount), - ]; + const sourceAccountCurrency = getAccountCurrency(exchange.fromAccount); + const targetAccountCurrency = getAccountCurrency(exchange.toAccount); + const sourceAccountName = accountNameSelector(walletState, { + accountId: exchange.fromAccount.id, + }); + const targetAccountName = accountNameSelector(walletState, { + accountId: exchange.toAccount.id, + }); + const providerName = getProviderName(exchangeRate.provider); const noticeType = getNoticeType(exchangeRate.provider); const alertProperties = noticeType.learnMore ? { learnMoreUrl: urls.swap.learnMore } : {}; diff --git a/apps/ledger-live-desktop/src/renderer/components/Exporter/QRCodeExporter.tsx b/apps/ledger-live-desktop/src/renderer/components/Exporter/QRCodeExporter.tsx index 6c6971aa217b..85f3f684d434 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Exporter/QRCodeExporter.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/Exporter/QRCodeExporter.tsx @@ -6,7 +6,7 @@ import { createStructuredSelector } from "reselect"; import { connect } from "react-redux"; import styled from "styled-components"; import { dataToFrames } from "qrloop"; -import { Settings, encode } from "@ledgerhq/live-common/cross"; +import { Settings, encode } from "@ledgerhq/live-wallet/liveqr/cross"; import { activeAccountsSelector } from "~/renderer/reducers/accounts"; import { exportSettingsSelector, @@ -16,8 +16,11 @@ import { import QRCode from "~/renderer/components/QRCode"; import { Account } from "@ledgerhq/types-live"; +import { WalletState } from "@ledgerhq/live-wallet/store"; +import { walletSelector } from "~/renderer/reducers/wallet"; const mapStateToProps = createStructuredSelector({ + walletState: state => walletSelector(state), accounts: (state, props) => props.accounts || activeAccountsSelector(state), settings: exportSettingsSelector, device: state => lastSeenDeviceSelector(state) || null, @@ -37,6 +40,7 @@ type OwnProps = { accounts?: Account[]; }; type Props = OwnProps & { + walletState: WalletState; accounts: Account[]; settings: Settings; devices: DeviceModelId[]; @@ -56,8 +60,9 @@ class QRCodeExporter extends PureComponent< constructor(props: Props) { super(props); - const { accounts, settings, device, devices } = props; + const { accounts, settings, device, devices, walletState } = props; const data = encode({ + walletState, accounts, settings, modelId: device?.modelId, diff --git a/apps/ledger-live-desktop/src/renderer/components/OperationsList/Operation.tsx b/apps/ledger-live-desktop/src/renderer/components/OperationsList/Operation.tsx index 25d6cc57feed..91fa00249b6a 100644 --- a/apps/ledger-live-desktop/src/renderer/components/OperationsList/Operation.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/OperationsList/Operation.tsx @@ -8,7 +8,6 @@ import { TFunction } from "i18next"; import { AccountLike, Account, Operation } from "@ledgerhq/types-live"; import { getAccountCurrency, - getAccountName, getAccountUnit, getMainAccount, } from "@ledgerhq/live-common/account/index"; @@ -19,7 +18,14 @@ import AddressCell from "./AddressCell"; import AmountCell from "./AmountCell"; import { confirmationsNbForCurrencySelector } from "~/renderer/reducers/settings"; import { isConfirmedOperation } from "@ledgerhq/live-common/operation"; +import { accountNameSelector } from "@ledgerhq/live-wallet/store"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; + const mapStateToProps = createStructuredSelector({ + accountName: (state, { account }) => + accountNameSelector(walletSelector(state), { accountId: account.id }) || + getDefaultAccountName(account), confirmationsNb: (state, { account, parentAccount }) => confirmationsNbForCurrencySelector(state, { currency: getMainAccount(account, parentAccount).currency, @@ -51,6 +57,7 @@ type OwnProps = { }; type Props = { confirmationsNb: number; + accountName: string; } & OwnProps; class OperationComponent extends PureComponent { static defaultProps = { @@ -73,6 +80,7 @@ class OperationComponent extends PureComponent { text, withAddress, confirmationsNb, + accountName, editable, } = this.props; const isOptimistic = operation.blockHeight === null; @@ -100,7 +108,7 @@ class OperationComponent extends PureComponent { editable={editable} t={t} /> - {withAccount && } + {withAccount && } {withAddress ? : } { ); } } + const ConnectedOperationComponent: React.ComponentType = connect(mapStateToProps)(OperationComponent); export default ConnectedOperationComponent; diff --git a/apps/ledger-live-desktop/src/renderer/components/SelectAccount.tsx b/apps/ledger-live-desktop/src/renderer/components/SelectAccount.tsx index ff6976cc5f15..a10d07a194ff 100644 --- a/apps/ledger-live-desktop/src/renderer/components/SelectAccount.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/SelectAccount.tsx @@ -2,7 +2,6 @@ import { flattenAccounts, getAccountCurrency, getAccountUnit, - getAccountName, listSubAccounts, } from "@ledgerhq/live-common/account/index"; import { TFunction } from "i18next"; @@ -10,9 +9,8 @@ import { Trans, withTranslation } from "react-i18next"; import { AccountLike, Account } from "@ledgerhq/types-live"; import styled from "styled-components"; import React, { useCallback, useState, useMemo } from "react"; -import { connect, useDispatch } from "react-redux"; +import { connect, useDispatch, useSelector } from "react-redux"; import { createFilter, components, MenuListComponentProps } from "react-select"; -import { Option as ReactSelectOption } from "react-select/src/filters"; import { createStructuredSelector } from "reselect"; import { shallowAccountsSelector } from "~/renderer/reducers/accounts"; import Box from "~/renderer/components/Box"; @@ -25,6 +23,8 @@ import Button from "~/renderer/components/Button"; import Plus from "~/renderer/icons/Plus"; import Text from "./Text"; import { openModal } from "../actions/modals"; +import { WalletState, accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; +import { useAccountName, walletSelector } from "../reducers/wallet"; const mapStateToProps = createStructuredSelector({ accounts: shallowAccountsSelector, @@ -48,24 +48,40 @@ const tokenTick = ( export type Option = { matched?: boolean; account?: AccountLike; + accountName?: string; }; + const getOptionValue = (option: Option): string => (option.account && option.account.id) || ""; + +type CustomOption = { + label: string; + value: string; + data: { + account: AccountLike; + accountName: string; + }; +}; + const defaultFilter = createFilter({ - stringify: ({ data: account }) => { + stringify: ({ data: { account, accountName } }: CustomOption) => { const currency = getAccountCurrency(account); - const name = getAccountName(account); - return `${currency.ticker}|${currency.name}|${name}`; + return `${currency.ticker}|${currency.name}|${accountName}`; }, }); + const filterOption = - (o: { withSubAccounts?: boolean; enforceHideEmptySubAccounts?: boolean }) => - (candidate: ReactSelectOption, input: string) => { + (o: { + withSubAccounts?: boolean; + enforceHideEmptySubAccounts?: boolean; + walletState: WalletState; + }) => + (candidate: CustomOption, input: string) => { const selfMatches = defaultFilter(candidate, input); if (selfMatches) return [selfMatches, true]; - if (candidate.data.type === "Account" && o.withSubAccounts) { + if (candidate.data.account.type === "Account" && o.withSubAccounts) { const subAccounts = o.enforceHideEmptySubAccounts - ? listSubAccounts(candidate.data) - : candidate.data.subAccounts; + ? listSubAccounts(candidate.data.account) + : candidate.data.account.subAccounts; if (subAccounts) { for (let i = 0; i < subAccounts.length; i++) { const ta = subAccounts[i]; @@ -74,7 +90,10 @@ const filterOption = { label: ta.id, // might cause UI regression :dogkek: value: ta.id, - data: ta, + data: { + account: ta, + accountName: accountNameWithDefaultSelector(o.walletState, ta), + }, }, input, ) @@ -105,7 +124,7 @@ export const AccountOption = React.memo(function AccountOpti }: AccountOptionProps) { const currency = getAccountCurrency(account); const unit = getAccountUnit(account); - const name = getAccountName(account); + const name = useAccountName(account); const nested = "TokenAccount" === account.type; const balance = account.spendableBalance || account.balance; const textContents = singleLineLayout ? ( @@ -242,6 +261,8 @@ export const RawSelectAccount = ({ }: Props & { t: TFunction; }) => { + const walletState = useSelector(walletSelector); + const [searchInputValue, setSearchInputValue] = useState(""); const filtered: Account[] = filter ? accounts.filter(filter) : accounts; const all = withSubAccounts @@ -272,14 +293,19 @@ export const RawSelectAccount = ({ const manualFilter = useCallback( () => all.reduce((result, option) => { + const accountName = accountNameWithDefaultSelector(walletState, option); const [display, match] = filterOption({ withSubAccounts, enforceHideEmptySubAccounts, + walletState, })( { - data: option, value: option.id, label: option.id, + data: { + accountName, + account: option, + }, }, searchInputValue, ); @@ -287,11 +313,12 @@ export const RawSelectAccount = ({ result.push({ matched: match && !isDisabledOption(option as { disabled?: boolean }), account: option, + accountName, }); } return result; }, [] as Option[]), - [searchInputValue, all, withSubAccounts, enforceHideEmptySubAccounts], + [searchInputValue, all, withSubAccounts, enforceHideEmptySubAccounts, walletState], ); const extraRenderers = useMemo(() => { let extraProps = {}; diff --git a/apps/ledger-live-desktop/src/renderer/components/Stars/Item.tsx b/apps/ledger-live-desktop/src/renderer/components/Stars/Item.tsx index ebef62648de9..a1213990483b 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Stars/Item.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/Stars/Item.tsx @@ -1,11 +1,7 @@ import React, { useCallback } from "react"; import { useHistory } from "react-router-dom"; import styled from "styled-components"; -import { - getAccountCurrency, - getAccountUnit, - getAccountName, -} from "@ledgerhq/live-common/account/helpers"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/helpers"; import { AccountLike } from "@ledgerhq/types-live"; import Hide from "~/renderer/components/MainSideBar/Hide"; import FormattedVal from "~/renderer/components/FormattedVal"; @@ -13,6 +9,7 @@ import Box from "~/renderer/components/Box"; import Ellipsis from "~/renderer/components/Ellipsis"; import ParentCryptoCurrencyIcon from "~/renderer/components/ParentCryptoCurrencyIcon"; import { setTrackingSource } from "~/renderer/analytics/TrackPage"; +import { useAccountName } from "~/renderer/reducers/wallet"; const ParentCryptoCurrencyIconWrapper = styled.div` width: 20px; `; @@ -50,6 +47,7 @@ type Props = { collapsed?: boolean; }; const Item = ({ account, pathname, collapsed }: Props) => { + const accountName = useAccountName(account); const history = useHistory(); const active = pathname.endsWith(account.id); const onAccountClick = useCallback(() => { @@ -70,7 +68,7 @@ const Item = ({ account, pathname, collapsed }: Props) => { - {getAccountName(account)} + {accountName} - isStarredAccountSelector(state, { - accountId, - }), + accountStarredSelector(state, { accountId }), ); + const dispatch = useDispatch(); const refreshAccountsOrdering = useRefreshAccountsOrdering(); const toggleStar: React.MouseEventHandler = useCallback( e => { track(isAccountStarred ? "Account Unstar" : "Account Star"); e.stopPropagation(); - dispatch(toggleStarAction(accountId, parentId)); + dispatch(toggleStarAction(accountId, !isAccountStarred)); refreshAccountsOrdering(); }, - [isAccountStarred, dispatch, accountId, parentId, refreshAccountsOrdering], + [dispatch, accountId, refreshAccountsOrdering, isAccountStarred], ); const MaybeButtonWrapper = yellow ? ButtonWrapper : FloatingWrapper; return ( diff --git a/apps/ledger-live-desktop/src/renderer/components/Stars/index.tsx b/apps/ledger-live-desktop/src/renderer/components/Stars/index.tsx index 03f8ad256f97..7daf48c623f5 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Stars/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/Stars/index.tsx @@ -11,6 +11,9 @@ import emptyBookmarksDark from "~/renderer/images/dark-empty-bookmarks.png"; import emptyBookmarksLight from "~/renderer/images/light-empty-bookmarks.png"; import Item from "./Item"; import { starredAccountsSelector } from "~/renderer/reducers/accounts"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { accountNameSelector } from "@ledgerhq/live-wallet/store"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const Container = styled.div` display: flex; @@ -34,12 +37,18 @@ type Props = { collapsed: boolean; }; const Stars = ({ pathname, collapsed }: Props) => { + const walletState = useSelector(walletSelector); const starredAccounts = useSelector(starredAccountsSelector); return starredAccounts && starredAccounts.length ? ( {starredAccounts.map((account, i) => ( { - + ); } diff --git a/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/LiveAppSDKLogic.ts b/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/LiveAppSDKLogic.ts index 19023971ef10..3744ccffb1de 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/LiveAppSDKLogic.ts +++ b/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/LiveAppSDKLogic.ts @@ -16,6 +16,7 @@ import { selectAccountAndCurrency } from "../../drawers/DataSelector/logic"; import { OperationDetails } from "~/renderer/drawers/OperationDetails"; import { setDrawer } from "~/renderer/drawers/Provider"; import { track } from "~/renderer/analytics/segment"; +import { WalletState } from "@ledgerhq/live-wallet/store"; const trackingLiveAppSDKLogic = trackingWrapper(track); @@ -32,6 +33,7 @@ export type RequestAccountParams = { includeTokens?: boolean; }; export const requestAccountLogic = async ( + walletState: WalletState, { manifest }: Omit, { currencies, includeTokens }: RequestAccountParams, ) => { @@ -47,7 +49,7 @@ export const requestAccountLogic = async ( const { account, parentAccount } = await selectAccountAndCurrency(safeCurrencies, includeTokens); - return serializePlatformAccount(accountToPlatformAccount(account, parentAccount)); + return serializePlatformAccount(accountToPlatformAccount(walletState, account, parentAccount)); }; export const broadcastTransactionLogic = ( diff --git a/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/PlatformAPIWebview.tsx b/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/PlatformAPIWebview.tsx index 3ff3a419edf8..d5edaad0efe0 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/PlatformAPIWebview.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/PlatformAPIWebview.tsx @@ -37,6 +37,7 @@ import { Loader } from "./styled"; import { WebviewAPI, WebviewProps } from "./types"; import { useWebviewState } from "./helpers"; import { currentRouteNameRef } from "~/renderer/analytics/screenRefs"; +import { walletSelector } from "~/renderer/reducers/wallet"; export const PlatformAPIWebview = forwardRef( ({ manifest, inputs = {}, onStateChange }, ref) => { @@ -78,19 +79,21 @@ export const PlatformAPIWebview = forwardRef( const [widgetLoaded, setWidgetLoaded] = useState(false); - const listAccounts = useListPlatformAccounts(accounts); + const walletState = useSelector(walletSelector); + const listAccounts = useListPlatformAccounts(walletState, accounts); const listCurrencies = useListPlatformCurrencies(); const requestAccount = useCallback( (request: RequestAccountParams) => { - return requestAccountLogic({ manifest }, request); + return requestAccountLogic(walletState, { manifest }, request); }, - [manifest], + [walletState, manifest], ); const receiveOnAccount = useCallback( ({ accountId }: { accountId: string }) => receiveOnAccountLogic( + walletState, { manifest, accounts, tracking }, accountId, (account, parentAccount, accountAddress) => { @@ -114,7 +117,7 @@ export const PlatformAPIWebview = forwardRef( ); }, ), - [manifest, accounts, dispatch, tracking], + [walletState, manifest, accounts, dispatch, tracking], ); const signTransaction = useCallback( diff --git a/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/WalletAPIWebview.tsx b/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/WalletAPIWebview.tsx index d8c2b76b093c..1399a89ff688 100644 --- a/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/WalletAPIWebview.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/Web3AppWebview/WalletAPIWebview.tsx @@ -43,6 +43,7 @@ import { TrackFunction } from "@ledgerhq/live-common/platform/tracking"; import { useDappLogic } from "@ledgerhq/live-common/wallet-api/useDappLogic"; import { NoAccountOverlay } from "./NoAccountOverlay"; import { ipcRenderer } from "electron"; +import { walletSelector } from "~/renderer/reducers/wallet"; const wallet = { name: "ledger-live-desktop", version: __APP_VERSION__ }; @@ -259,7 +260,10 @@ function useWebView( // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + const walletState = useSelector(walletSelector); + const { widgetLoaded, onLoad, onReload, onMessage, server } = useWalletAPIServer({ + walletState, manifest, accounts, tracking, diff --git a/apps/ledger-live-desktop/src/renderer/components/WebPlatformPlayer/TopBar.tsx b/apps/ledger-live-desktop/src/renderer/components/WebPlatformPlayer/TopBar.tsx index bc6120cc0364..fe86480314f9 100644 --- a/apps/ledger-live-desktop/src/renderer/components/WebPlatformPlayer/TopBar.tsx +++ b/apps/ledger-live-desktop/src/renderer/components/WebPlatformPlayer/TopBar.tsx @@ -16,11 +16,12 @@ import { openPlatformAppInfoDrawer } from "~/renderer/actions/UI"; import { useSelectAccount } from "../Web3AppWebview/helpers"; import { WebviewAPI, WebviewState } from "../Web3AppWebview/types"; import Spinner from "../Spinner"; -import { getAccountName, getAccountCurrency } from "@ledgerhq/live-common/account/helpers"; +import { getAccountCurrency } from "@ledgerhq/live-common/account/helpers"; import { useDebounce } from "@ledgerhq/live-common/hooks/useDebounce"; import { useDappCurrentAccount } from "@ledgerhq/live-common/wallet-api/useDappLogic"; import { CurrentAccountHistDB, safeGetRefValue } from "@ledgerhq/live-common/wallet-api/react"; import Wallet from "~/renderer/icons/Wallet"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; import CryptoCurrencyIcon from "../CryptoCurrencyIcon"; const Container = styled(Box).attrs(() => ({ @@ -249,7 +250,7 @@ export const TopBar = ({ currency={getAccountCurrency(currentAccount)} size={16} /> - {getAccountName(currentAccount)} + {getDefaultAccountName(currentAccount)} )} diff --git a/apps/ledger-live-desktop/src/renderer/drawers/DataSelector/AccountList.tsx b/apps/ledger-live-desktop/src/renderer/drawers/DataSelector/AccountList.tsx index 6f5be6ff4eb1..e95672dc7a76 100644 --- a/apps/ledger-live-desktop/src/renderer/drawers/DataSelector/AccountList.tsx +++ b/apps/ledger-live-desktop/src/renderer/drawers/DataSelector/AccountList.tsx @@ -1,7 +1,7 @@ import React, { useMemo, useCallback } from "react"; import Text from "~/renderer/components/Text"; import CryptoCurrencyIcon from "~/renderer/components/CryptoCurrencyIcon"; -import { Account, AccountLike } from "@ledgerhq/types-live"; +import { Account, AccountLike, TokenAccount } from "@ledgerhq/types-live"; import { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; import { useGetAccountIds } from "@ledgerhq/live-common/wallet-api/react"; import { useSelector, useDispatch } from "react-redux"; @@ -19,6 +19,7 @@ import { darken } from "~/renderer/styles/helpers"; import { Observable } from "rxjs"; import { WalletAPIAccount } from "@ledgerhq/live-common/wallet-api/types"; import { useTranslation } from "react-i18next"; +import { useAccountName } from "~/renderer/reducers/wallet"; const AddIconContainer = styled.div` border-radius: 50%; @@ -77,57 +78,80 @@ export function AccountList({ currency, onAccountSelect, accounts$ }: Props) { {accountTuples.map((accountTuple, index) => { const { account, subAccount } = accountTuple; - const accountCurrency = getAccountCurrency(subAccount || account); return ( - { - if (subAccount) { - onAccountSelect(subAccount, account); - } else { - onAccountSelect(account); - } - }} - > - - - - - {`${subAccount ? `${account.name} (${accountCurrency.ticker})` : account.name}`} - - - - - - - - + /> ); })} ); } + +function Row({ + account, + subAccount, + index, + onAccountSelect, +}: { + account: Account; + subAccount: TokenAccount | null | undefined; + index: number; + onAccountSelect: (account: AccountLike, parentAccount?: Account) => void; +}) { + const accountCurrency = getAccountCurrency(subAccount || account); + const accountName = useAccountName(account); + + return ( + { + if (subAccount) { + onAccountSelect(subAccount, account); + } else { + onAccountSelect(account); + } + }} + > + + + + + {`${subAccount ? `${accountName} (${accountCurrency.ticker})` : accountName}`} + + + + + + + + + ); +} diff --git a/apps/ledger-live-desktop/src/renderer/drawers/OperationDetails/index.tsx b/apps/ledger-live-desktop/src/renderer/drawers/OperationDetails/index.tsx index cc4174880186..0b6429feb99f 100644 --- a/apps/ledger-live-desktop/src/renderer/drawers/OperationDetails/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/drawers/OperationDetails/index.tsx @@ -79,6 +79,7 @@ import { TextEllipsis, } from "./styledComponents"; import { dayAndHourFormat, useDateFormatted } from "~/renderer/hooks/useDateFormatter"; +import { useAccountName } from "~/renderer/reducers/wallet"; const mapStateToProps = ( state: State, @@ -150,7 +151,7 @@ const OperationD = (props: Props) => { const dateFormatted = useDateFormatted(date, dayAndHourFormat); const uniqueSenders = uniq(senders); const recipients = _recipients.filter(Boolean); - const { name } = mainAccount; + const name = useAccountName(mainAccount); const isNftOperation = ["NFT_IN", "NFT_OUT"].includes(operation.type); const currency = getAccountCurrency(account); const mainCurrency = getAccountCurrency(mainAccount); diff --git a/apps/ledger-live-desktop/src/renderer/drawers/SwapOperationDetails/index.tsx b/apps/ledger-live-desktop/src/renderer/drawers/SwapOperationDetails/index.tsx index 14afb3999da5..457beaa03a74 100644 --- a/apps/ledger-live-desktop/src/renderer/drawers/SwapOperationDetails/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/drawers/SwapOperationDetails/index.tsx @@ -1,6 +1,5 @@ import { getAccountCurrency, - getAccountName, getAccountUnit, getMainAccount, } from "@ledgerhq/live-common/account/index"; @@ -43,6 +42,7 @@ import IconSwap from "~/renderer/icons/Swap"; import { openURL } from "~/renderer/linking"; import { shallowAccountsSelector } from "~/renderer/reducers/accounts"; import { languageSelector } from "~/renderer/reducers/settings"; +import { useAccountName } from "~/renderer/reducers/wallet"; import { getStatusColor } from "~/renderer/screens/exchange/Swap2/History/OperationRow"; import { rgba } from "~/renderer/styles/helpers"; @@ -113,6 +113,8 @@ const SwapOperationDetails = ({ }) => { const { fromAccount, toAccount, operation, provider, swapId, status, fromAmount, toAmount } = mappedSwapOperation; + const fromAccountName = useAccountName(fromAccount); + const toAccountName = useAccountName(toAccount); const dateFormatted = useDateFormatted(operation.date, dayFormat); const language = useSelector(languageSelector); const history = useHistory(); @@ -307,7 +309,7 @@ const SwapOperationDetails = ({ - openAccount(fromAccount)}>{getAccountName(fromAccount)} + openAccount(fromAccount)}>{fromAccountName} @@ -349,7 +351,7 @@ const SwapOperationDetails = ({ - openAccount(toAccount)}>{getAccountName(toAccount)} + openAccount(toAccount)}>{toAccountName} diff --git a/apps/ledger-live-desktop/src/renderer/families/bitcoin/FullNode/steps/StepAccounts.tsx b/apps/ledger-live-desktop/src/renderer/families/bitcoin/FullNode/steps/StepAccounts.tsx index 46821b346af4..6b9edc0e9173 100644 --- a/apps/ledger-live-desktop/src/renderer/families/bitcoin/FullNode/steps/StepAccounts.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/bitcoin/FullNode/steps/StepAccounts.tsx @@ -15,6 +15,9 @@ import InfoCircle from "~/renderer/icons/InfoCircle"; import ToolTip from "~/renderer/components/Tooltip"; import { FullNodeSteps } from ".."; import styled from "styled-components"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; + const Row = styled(Box).attrs(() => ({ horizontal: true, alignItems: "center", @@ -33,6 +36,8 @@ const Accounts = ({ numberOfAccountsToScan: number | undefined | null; setNumberOfAccountsToScan: (a?: number | null) => void; }) => { + const walletState = useSelector(walletSelector); + // FIXME Not using the AccountList component because styles differ quite a bit, we should unify. const accounts = useSelector(accountsSelector); const currency = getCryptoCurrencyById("bitcoin"); @@ -117,7 +122,7 @@ const Accounts = ({ color="palette.text.shade40" fontSize={3} > - {account.name} + {accountNameWithDefaultSelector(walletState, account)} { const mainAccount = account ? getMainAccount(account, parentAccount) : null; invariant(account && mainAccount, "No account given"); - const name = token ? token.name : getAccountName(account); + const name = useAccountName(account); const initialDevice = useRef(device); const address = mainAccount.freshAddress; const [modalVisible, setModalVisible] = useState(false); diff --git a/apps/ledger-live-desktop/src/renderer/families/tezos/DelegateFlowModal/steps/StepSummary.tsx b/apps/ledger-live-desktop/src/renderer/families/tezos/DelegateFlowModal/steps/StepSummary.tsx index c68b55ea6787..2501b9067398 100644 --- a/apps/ledger-live-desktop/src/renderer/families/tezos/DelegateFlowModal/steps/StepSummary.tsx +++ b/apps/ledger-live-desktop/src/renderer/families/tezos/DelegateFlowModal/steps/StepSummary.tsx @@ -1,11 +1,7 @@ import invariant from "invariant"; import React from "react"; import styled from "styled-components"; -import { - getAccountCurrency, - getAccountName, - getAccountUnit, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import { useBaker, useDelegation } from "@ledgerhq/live-common/families/tezos/bakers"; import { Baker } from "@ledgerhq/live-common/families/tezos/types"; import { Trans } from "react-i18next"; @@ -24,6 +20,7 @@ import InfoCircle from "~/renderer/icons/InfoCircle"; import BakerImage from "../../BakerImage"; import DelegationContainer from "../DelegationContainer"; import { StepProps } from "../types"; +import { useAccountName } from "~/renderer/reducers/wallet"; const urlDelegationHelp = "https://support.ledger.com/hc/en-us/articles/360010653260"; @@ -54,6 +51,7 @@ const StepSummary = ({ account, transaction, eventType, transitionTo }: StepProp account && transaction && transaction.family === "tezos", "step summary requires account and transaction settled", ); + const accountName = useAccountName(account); const delegation = useDelegation(account); const baker = useBaker(transaction.recipient); const currency = getAccountCurrency(account); @@ -86,7 +84,7 @@ const StepSummary = ({ account, transaction, eventType, transitionTo }: StepProp - {getAccountName(account)} + {accountName} { return unit && BigNumber(formatCurrencyUnit(unit, swapTransaction.status.estimatedFees)); }, [mainFromAccount, swapTransaction.status.estimatedFees]); + const walletState = useSelector(walletSelector); + useEffect(() => { if (isSwapLiveAppEnabled) { const providerRedirectURLSearch = getProviderRedirectURLSearch(); const { parentAccount: fromParentAccount } = swapTransaction.swap.from; const fromParentAccountId = fromParentAccount - ? accountToWalletAPIAccount(fromParentAccount)?.id + ? accountToWalletAPIAccount(walletState, fromParentAccount)?.id : undefined; const providerRedirectURL = `ledgerlive://discover/${getProviderName( provider ?? "", @@ -90,6 +93,7 @@ export const useSwapLiveAppHook = (props: UseSwapLiveAppHookProps) => { } } }, [ + walletState, provider, manifestID, isSwapLiveAppEnabled, diff --git a/apps/ledger-live-desktop/src/renderer/init.tsx b/apps/ledger-live-desktop/src/renderer/init.tsx index 7b64d41a7b39..fd22c4df8d77 100644 --- a/apps/ledger-live-desktop/src/renderer/init.tsx +++ b/apps/ledger-live-desktop/src/renderer/init.tsx @@ -31,7 +31,7 @@ import { setEnvOnAllThreads } from "~/helpers/env"; import dbMiddleware from "~/renderer/middlewares/db"; import createStore from "~/renderer/createStore"; import events from "~/renderer/events"; -import { setAccounts } from "~/renderer/actions/accounts"; +import { initAccounts } from "~/renderer/actions/accounts"; import { fetchSettings, setDeepLinkUrl } from "~/renderer/actions/settings"; import { lock, setOSDarkMode } from "~/renderer/actions/application"; import { @@ -152,12 +152,13 @@ async function init() { return currency ? hydrateCurrency(currency) : null; }), ); - const accounts = await getKey("app", "accounts", []); - if (accounts) { - store.dispatch(setAccounts(accounts)); + const accountData = await getKey("app", "accounts", []); + if (accountData) { + const e = initAccounts(accountData); + store.dispatch(e); // preload currency that's not in accounts list - if (accounts.some(a => a.currency.id !== "ethereum")) { + if (e.payload.accounts.some(a => a.currency.id !== "ethereum")) { prepareCurrency(getCryptoCurrencyById("ethereum")); } } else { diff --git a/apps/ledger-live-desktop/src/renderer/logger/summarize.ts b/apps/ledger-live-desktop/src/renderer/logger/summarize.ts index 9e58e1c56b06..49ef15d30025 100644 --- a/apps/ledger-live-desktop/src/renderer/logger/summarize.ts +++ b/apps/ledger-live-desktop/src/renderer/logger/summarize.ts @@ -1,15 +1,15 @@ +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; import { Account, SubAccount } from "@ledgerhq/types-live"; function summarizeAccount(argument: Account | SubAccount) { const { type, balance, id, operations, pendingOperations } = argument; - let index, freshAddress, freshAddressPath, name, subAccounts; + let index, freshAddress, freshAddressPath, subAccounts; if (argument.type === "Account") { index = argument.index; freshAddress = argument.freshAddress; freshAddressPath = argument.freshAddressPath; - name = argument.name; subAccounts = argument.subAccounts; } @@ -17,7 +17,7 @@ function summarizeAccount(argument: Account | SubAccount) { type, balance, id, - name, + name: getDefaultAccountName(argument), index, freshAddress, freshAddressPath, diff --git a/apps/ledger-live-desktop/src/renderer/middlewares/db.ts b/apps/ledger-live-desktop/src/renderer/middlewares/db.ts index 4a1e482562f5..fd4fa58683c6 100644 --- a/apps/ledger-live-desktop/src/renderer/middlewares/db.ts +++ b/apps/ledger-live-desktop/src/renderer/middlewares/db.ts @@ -3,9 +3,11 @@ import { Middleware } from "redux"; import { setKey } from "~/renderer/storage"; import { postOnboardingSelector } from "@ledgerhq/live-common/postOnboarding/reducer"; import { actionTypePrefix as postOnboardingActionTypePrefix } from "@ledgerhq/live-common/postOnboarding/actions"; -import { accountsSelector } from "./../reducers/accounts"; + import { settingsExportSelector, areSettingsLoaded } from "./../reducers/settings"; import { State } from "../reducers"; +import { Account, AccountUserData } from "@ledgerhq/types-live"; +import { accountUserDataExportSelector } from "@ledgerhq/live-wallet/store"; let DB_MIDDLEWARE_ENABLED = true; // ability to temporary disable the db middleware from outside @@ -14,6 +16,17 @@ export const disable = (ms = 1000) => { setTimeout(() => (DB_MIDDLEWARE_ENABLED = true), ms); }; +function accountsExportSelector(state: State) { + const all: [Account, AccountUserData][] = []; + for (const account of state.accounts) { + const accountUserData = accountUserDataExportSelector(state.wallet, { account }); + if (accountUserData) { + all.push([account, accountUserData]); + } + } + return all; +} + const DBMiddleware: Middleware<{}, State> = store => next => action => { if (DB_MIDDLEWARE_ENABLED && action.type.startsWith("DB:")) { const [, type] = action.type.split(":"); @@ -22,7 +35,7 @@ const DBMiddleware: Middleware<{}, State> = store => next => action => { payload: action.payload, }); const state = store.getState(); - setKey("app", "accounts", accountsSelector(state)); + setKey("app", "accounts", accountsExportSelector(state)); // ^ TODO ultimately we'll do same for accounts to drop DB: pattern } else if (DB_MIDDLEWARE_ENABLED && action.type.startsWith(postOnboardingActionTypePrefix)) { next(action); diff --git a/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/index.tsx b/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/index.tsx index 40d9f3c8e643..2fd8b28193aa 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/index.tsx @@ -6,12 +6,10 @@ import { compose } from "redux"; import { createStructuredSelector } from "reselect"; import { Account } from "@ledgerhq/types-live"; import { CryptoCurrency, CryptoOrTokenCurrency } from "@ledgerhq/types-cryptoassets"; -import { addAccounts } from "@ledgerhq/live-common/account/index"; import logger from "~/renderer/logger"; import { Device } from "@ledgerhq/live-common/hw/actions/types"; import { getCurrentDevice } from "~/renderer/reducers/devices"; import { accountsSelector } from "~/renderer/reducers/accounts"; -import { replaceAccounts } from "~/renderer/actions/accounts"; import { closeModal } from "~/renderer/actions/modals"; import Track from "~/renderer/analytics/Track"; import Stepper, { Step } from "~/renderer/components/Stepper"; @@ -22,13 +20,14 @@ import StepConnectDevice from "./steps/StepConnectDevice"; import StepImport, { StepImportFooter } from "./steps/StepImport"; import StepFinish, { StepFinishFooter } from "./steps/StepFinish"; import { blacklistedTokenIdsSelector } from "~/renderer/reducers/settings"; +import { addAccountsAction } from "@ledgerhq/live-wallet/addAccounts"; export type Props = { // props from redux device: Device | undefined | null; existingAccounts: Account[]; closeModal: (a: string) => void; - replaceAccounts: (a: Account[]) => void; + addAccountsAction: typeof addAccountsAction; blacklistedTokenIds?: string[]; } & UserProps; @@ -132,7 +131,7 @@ const mapStateToProps = createStructuredSelector({ blacklistedTokenIds: blacklistedTokenIdsSelector, }); const mapDispatchToProps = { - replaceAccounts, + addAccountsAction, closeModal, }; const INITIAL_STATE: State = { @@ -149,16 +148,14 @@ class AddAccounts extends PureComponent { state = INITIAL_STATE; STEPS = createSteps(this.props.currency && !this.props.preventSkippingCurrencySelection); handleClickAdd = async () => { - const { replaceAccounts, existingAccounts } = this.props; + const { addAccountsAction, existingAccounts } = this.props; const { scannedAccounts, checkedAccountsIds, editedNames } = this.state; - replaceAccounts( - addAccounts({ - scannedAccounts, - existingAccounts, - selectedIds: checkedAccountsIds, - renamings: editedNames, - }), - ); + addAccountsAction({ + scannedAccounts, + existingAccounts, + selectedIds: checkedAccountsIds, + renamings: editedNames, + }); }; handleStepChange = (step: St) => diff --git a/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/steps/StepImport.tsx b/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/steps/StepImport.tsx index 7854db759449..27575715977c 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/steps/StepImport.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/AddAccounts/steps/StepImport.tsx @@ -5,7 +5,7 @@ import { Trans } from "react-i18next"; import { concat, from, Subscription } from "rxjs"; import { ignoreElements, filter, map } from "rxjs/operators"; import { Account } from "@ledgerhq/types-live"; -import { isAccountEmpty, groupAddAccounts } from "@ledgerhq/live-common/account/index"; +import { isAccountEmpty } from "@ledgerhq/live-common/account/index"; import { openModal } from "~/renderer/actions/modals"; import { DeviceShouldStayInApp } from "@ledgerhq/errors"; import { getCurrencyBridge } from "@ledgerhq/live-common/bridge/index"; @@ -28,6 +28,8 @@ import InfoCircle from "~/renderer/icons/InfoCircle"; import ToolTip from "~/renderer/components/Tooltip"; import { CryptoOrTokenCurrency } from "@ledgerhq/types-cryptoassets"; import { getLLDCoinFamily } from "~/renderer/families"; +import { groupAddAccounts } from "@ledgerhq/live-wallet/addAccounts"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; type Props = AccountListProps & { defaultSelected: boolean; @@ -295,7 +297,7 @@ class StepImport extends PureComponent< {" "} - {alreadyEmptyAccount.name} + {getDefaultAccountName(alreadyEmptyAccount)} {" "} ); diff --git a/apps/ledger-live-desktop/src/renderer/modals/ExchangeDeviceConfirm/index.tsx b/apps/ledger-live-desktop/src/renderer/modals/ExchangeDeviceConfirm/index.tsx index e8d458187c26..17ca6091a059 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/ExchangeDeviceConfirm/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/ExchangeDeviceConfirm/index.tsx @@ -4,7 +4,7 @@ import styled from "styled-components"; import { Account, AccountLike } from "@ledgerhq/types-live"; import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; import { getEnv } from "@ledgerhq/live-env"; -import { getAccountName, getMainAccount } from "@ledgerhq/live-common/account/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; import { AppResult, createAction } from "@ledgerhq/live-common/hw/actions/app"; import { urls } from "~/config/urls"; import DeviceAction from "~/renderer/components/DeviceAction"; @@ -26,6 +26,7 @@ import Alert from "~/renderer/components/Alert"; import TrackPage from "~/renderer/analytics/TrackPage"; import Receive2NoDevice from "~/renderer/components/Receive2NoDevice"; import { firstValueFrom } from "rxjs"; +import { useAccountName } from "~/renderer/reducers/wallet"; export const Separator = styled.div` &::after { @@ -76,7 +77,7 @@ const VerifyOnDevice = ({ device, skipDevice, }: VerifyOnDeviceProps) => { - const name = getAccountName(mainAccount); + const name = useAccountName(mainAccount); const address = mainAccount.freshAddress; const confirmAddress = useCallback(async () => { if (!device || skipDevice) return null; diff --git a/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveFunds.tsx b/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveFunds.tsx index dd5523035a3f..6f8c1a3a7803 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveFunds.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveFunds.tsx @@ -1,7 +1,7 @@ import invariant from "invariant"; import React, { useEffect, useRef, useCallback, useState } from "react"; import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; -import { getMainAccount, getAccountName } from "@ledgerhq/live-common/account/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; import TrackPage from "~/renderer/analytics/TrackPage"; import ErrorDisplay from "~/renderer/components/ErrorDisplay"; import { DisconnectedDevice } from "@ledgerhq/errors"; @@ -37,6 +37,7 @@ import { Device } from "@ledgerhq/live-common/hw/actions/types"; import { getLLDCoinFamily } from "~/renderer/families"; import { firstValueFrom } from "rxjs"; import { useCompleteActionCallback } from "~/renderer/components/PostOnboardingHub/logic/useCompleteAction"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const Separator = styled.div` border-top: 1px solid #99999933; @@ -170,7 +171,7 @@ const StepReceiveFunds = (props: StepProps) => { const mainAccount = account ? getMainAccount(account, parentAccount) : null; invariant(account && mainAccount, "No account given"); - const name = token ? token.name : getAccountName(account); + const name = token ? token.name : getDefaultAccountName(account); const initialDevice = useRef(device); const address = mainAccount.freshAddress; const [modalVisible, setModalVisible] = useState(false); diff --git a/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveStakingFlow.tsx b/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveStakingFlow.tsx index a48f57635fc7..66e9aa8f10b7 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveStakingFlow.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/Receive/steps/StepReceiveStakingFlow.tsx @@ -10,10 +10,10 @@ import { openURL } from "~/renderer/linking"; import { withV3StyleProvider } from "~/renderer/styles/StyleProviderV3"; import Button from "~/renderer/components/ButtonV3"; import CheckBox from "~/renderer/components/CheckBox"; -import { getAccountName } from "@ledgerhq/live-common/account/index"; import { Account } from "@ledgerhq/types-live"; import { getLLDCoinFamily } from "~/renderer/families"; import { ManageAction } from "~/renderer/families/types"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; export const LOCAL_STORAGE_KEY_PREFIX = "receive_staking_"; @@ -130,7 +130,7 @@ export const StepReceiveStakingFooter = (props: StepProps) => { currency: account && "currency" in account ? account?.currency?.name : undefined, provider: providerName, modal: "receive", - account: account && getAccountName(account), + account: account && getDefaultAccountName(account), }; }, [account]); diff --git a/apps/ledger-live-desktop/src/renderer/modals/Send/fields/RecipientField.react.test.tsx b/apps/ledger-live-desktop/src/renderer/modals/Send/fields/RecipientField.react.test.tsx index a0332e16aa46..8f853d109a47 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/Send/fields/RecipientField.react.test.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/Send/fields/RecipientField.react.test.tsx @@ -39,7 +39,6 @@ const polygon = getCryptoCurrencyById("polygon"); const ethMockAccount: Account = { type: "Account", id: "js:2:ethereum:0x66c4371aE8FFeD2ec1c2EBbbcCfb7E494181E1E3:", - starred: false, used: true, seedIdentifier: "0441996d9ce858d8fd6304dd790e645500fc6cee7ae0fccfee8c8fa884dfa8ccf1f6f8cc82cc0aa71fc659c895a8a43b69f918b08a22b3a6145a0bbd93c5cb9308", @@ -53,7 +52,6 @@ const ethMockAccount: Account = { derivationPath: "44'/60'/0'/0/0", }, ], - name: "Ethereum 1", blockHeight: 16626551, creationDate: new Date("2021-03-23T14:17:07.001Z"), balance: new BigNumber("22913015427119498"), @@ -80,7 +78,6 @@ const ethMockAccount: Account = { const polygonMockAccount: Account = { type: "Account", id: "js:2:polygon:0x66c4371aE8FFeD2ec1c2EBbbcCfb7E494181E1E3:", - starred: false, used: true, seedIdentifier: "0441996d9ce858d8fd6304dd790e645500fc6cee7ae0fccfee8c8fa884dfa8ccf1f6f8cc82cc0aa71fc659c895a8a43b69f918b08a22b3a6145a0bbd93c5cb9308", @@ -94,7 +91,6 @@ const polygonMockAccount: Account = { derivationPath: "44'/60'/0'/0/0", }, ], - name: "Polygon 1", blockHeight: 16626551, creationDate: new Date("2021-03-23T14:17:07.001Z"), balance: new BigNumber("22913015427119498"), diff --git a/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx b/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx index 24b07e697ab3..8040c1ecde8a 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx @@ -2,7 +2,6 @@ import React from "react"; import { Trans } from "react-i18next"; import styled from "styled-components"; import { - getAccountName, getAccountCurrency, getAccountUnit, getFeesCurrency, @@ -27,6 +26,7 @@ import NFTSummary from "~/renderer/screens/nft/Send/Summary"; import { StepProps } from "../types"; import AccountTagDerivationMode from "~/renderer/components/AccountTagDerivationMode"; import { getLLDCoinFamily } from "~/renderer/families"; +import { useMaybeAccountName } from "~/renderer/reducers/wallet"; const FromToWrapper = styled.div``; const Circle = styled.div` @@ -57,6 +57,8 @@ const WARN_FROM_UTXO_COUNT = 50; const StepSummary = (props: StepProps) => { const { account, parentAccount, transaction, status, currencyName, isNFTSend } = props; + const accountName = useMaybeAccountName(account); + if (!account) { return null; } @@ -133,7 +135,7 @@ const StepSummary = (props: StepProps) => { flex: 1, }} > - {getAccountName(account)} + {accountName} diff --git a/apps/ledger-live-desktop/src/renderer/modals/SettingsAccount/AccountSettingRenderBody.tsx b/apps/ledger-live-desktop/src/renderer/modals/SettingsAccount/AccountSettingRenderBody.tsx index 0f24ec382e55..830a438531a5 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/SettingsAccount/AccountSettingRenderBody.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/SettingsAccount/AccountSettingRenderBody.tsx @@ -7,7 +7,7 @@ import { TFunction } from "i18next"; import { Trans, withTranslation } from "react-i18next"; import type { Account, DerivationMode } from "@ledgerhq/types-live"; import { Unit } from "@ledgerhq/types-cryptoassets"; -import { validateNameEdition } from "@ledgerhq/live-common/account/index"; +import { validateNameEdition } from "@ledgerhq/live-wallet/accountName"; import { AccountNameRequiredError } from "@ledgerhq/errors"; import { getEnv } from "@ledgerhq/live-env"; import { urls } from "~/config/urls"; @@ -24,6 +24,14 @@ import ConfirmModal from "~/renderer/modals/ConfirmModal"; import Space from "~/renderer/components/Space"; import Button from "~/renderer/components/Button"; import { getTagDerivationMode } from "@ledgerhq/coin-framework/derivation"; +import { + WalletState, + accountNameWithDefaultSelector, + setAccountName, +} from "@ledgerhq/live-wallet/store"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { State as ReduxState } from "~/renderer/reducers"; + type State = { accountName: string | undefined | null; accountUnit: Unit | undefined | null; @@ -35,19 +43,25 @@ type OwnProps = { data: unknown; }; type Props = { + walletState: WalletState; setDataModal: Function; + setAccountName: (accountId: string, name: string) => void; updateAccount: Function; removeAccount: Function; t: TFunction; } & OwnProps; const unitGetOptionValue = (unit: Unit) => unit.magnitude + ""; const renderUnitItemCode = (item: { data: Unit }) => item.data.code; +const mapStateToProps = (state: ReduxState) => ({ + walletState: walletSelector(state), +}); const mapDispatchToProps = { setDataModal, updateAccount, + setAccountName, removeAccount, }; -const defaultState = { +const defaultState: State = { accountName: null, accountUnit: null, accountNameError: null, @@ -80,9 +94,9 @@ class AccountSettingRenderBody extends PureComponent { (account: Account, onClose: () => void) => (e: React.SyntheticEvent) => { e.preventDefault(); - const { updateAccount, setDataModal } = this.props; + const { updateAccount, setDataModal, setAccountName } = this.props; const { accountName, accountUnit } = this.state; - if (!account.name.length) { + if (!accountName || !accountName.length) { this.setState({ accountNameError: new AccountNameRequiredError(), }); @@ -91,12 +105,10 @@ class AccountSettingRenderBody extends PureComponent { account = { ...account, unit: accountUnit || account.unit, - name, }; updateAccount(account); - setDataModal("MODAL_SETTINGS_ACCOUNT", { - account, - }); + setAccountName(account.id, name); + setDataModal("MODAL_SETTINGS_ACCOUNT", { account }); onClose(); } }; @@ -141,9 +153,13 @@ class AccountSettingRenderBody extends PureComponent { render() { const { accountUnit, accountNameError, isRemoveAccountModalOpen } = this.state; - const { t, onClose, data } = this.props; + const { t, onClose, data, walletState } = this.props; if (!data) return null; const account = this.getAccount(data); + const accountName = + this.state.accountName === null + ? accountNameWithDefaultSelector(walletState, account) + : this.state.accountName; const usefulData = { xpub: account.xpub || undefined, index: account.index, @@ -176,7 +192,7 @@ class AccountSettingRenderBody extends PureComponent { width: 230, }, }} - value={account.name} + value={accountName} maxLength={getEnv("MAX_ACCOUNT_NAME_SIZE")} onChange={this.handleChangeName} onEnter={onSubmit} @@ -277,7 +293,7 @@ const AdvancedLogsContainer = styled.div` user-select: text; `; const ConnectedAccountSettingRenderBody = compose( - connect(null, mapDispatchToProps), + connect(mapStateToProps, mapDispatchToProps), withTranslation(), )(AccountSettingRenderBody) as React.ComponentType; export default ConnectedAccountSettingRenderBody; diff --git a/apps/ledger-live-desktop/src/renderer/modals/SignMessage/steps/StepSummary.tsx b/apps/ledger-live-desktop/src/renderer/modals/SignMessage/steps/StepSummary.tsx index 6e6c251f4110..4db3830204f3 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/SignMessage/steps/StepSummary.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/SignMessage/steps/StepSummary.tsx @@ -11,6 +11,7 @@ import { getLLDCoinFamily } from "~/renderer/families"; import IconWallet from "~/renderer/icons/Wallet"; import { rgba } from "~/renderer/styles/helpers"; import { StepProps } from "../types"; +import { useAccountName } from "~/renderer/reducers/wallet"; const Circle = styled.div` height: 32px; @@ -104,6 +105,8 @@ export default function StepSummary({ account, message: messageData }: StepProps const mainAccount = getMainAccount(account, null); const [messageFields, setMessageFields] = useState(null); + const accountName = useAccountName(account); + useEffect(() => { if (messageData.standard === "EIP712") { const specific = getLLDCoinFamily(mainAccount.currency.family); @@ -126,7 +129,7 @@ export default function StepSummary({ account, message: messageData }: StepProps - {account.name} + {accountName} diff --git a/apps/ledger-live-desktop/src/renderer/modals/SignTransaction/steps/StepSummary.tsx b/apps/ledger-live-desktop/src/renderer/modals/SignTransaction/steps/StepSummary.tsx index adbcfe864440..23634a0a1297 100644 --- a/apps/ledger-live-desktop/src/renderer/modals/SignTransaction/steps/StepSummary.tsx +++ b/apps/ledger-live-desktop/src/renderer/modals/SignTransaction/steps/StepSummary.tsx @@ -4,7 +4,6 @@ import React from "react"; import { Trans } from "react-i18next"; import styled from "styled-components"; import { - getAccountName, getAccountCurrency, getAccountUnit, getFeesCurrency, @@ -28,6 +27,7 @@ import Alert from "~/renderer/components/Alert"; import { StepProps } from "../types"; import AccountTagDerivationMode from "~/renderer/components/AccountTagDerivationMode"; import { getLLDCoinFamily } from "~/renderer/families"; +import { useMaybeAccountName } from "~/renderer/reducers/wallet"; const FromToWrapper = styled.div``; const Circle = styled.div` @@ -57,6 +57,7 @@ const WARN_FROM_UTXO_COUNT = 50; const StepSummary = (props: StepProps) => { const { account, parentAccount, transaction, status } = props; + const accountName = useMaybeAccountName(account); if (!account) { return null; @@ -136,7 +137,7 @@ const StepSummary = (props: StepProps) => { flex: 1, }} > - {getAccountName(account)} + {accountName} diff --git a/apps/ledger-live-desktop/src/renderer/reducers/accounts.ts b/apps/ledger-live-desktop/src/renderer/reducers/accounts.ts index ee7f3508cddc..2b982d189ea5 100644 --- a/apps/ledger-live-desktop/src/renderer/reducers/accounts.ts +++ b/apps/ledger-live-desktop/src/renderer/reducers/accounts.ts @@ -1,50 +1,52 @@ import { createSelector, createSelectorCreator, defaultMemoize } from "reselect"; import { handleActions } from "redux-actions"; -import { Account, AccountLike } from "@ledgerhq/types-live"; +import { Account, AccountUserData, AccountLike } from "@ledgerhq/types-live"; import { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; import { flattenAccounts, clearAccount, getAccountCurrency, isUpToDateAccount, - nestedSortAccounts, - AccountComparator, } from "@ledgerhq/live-common/account/index"; import { decodeNftId } from "@ledgerhq/coin-framework/nft/nftId"; import { orderByLastReceived } from "@ledgerhq/live-nft"; import { getEnv } from "@ledgerhq/live-env"; import isEqual from "lodash/isEqual"; -import logger from "../logger"; import { State } from "."; import { hiddenNftCollectionsSelector } from "./settings"; import { Handlers } from "./types"; +import { walletSelector } from "./wallet"; +import { isStarredAccountSelector } from "@ledgerhq/live-wallet/store"; +import { nestedSortAccounts, AccountComparator } from "@ledgerhq/live-wallet/ordering"; +import { AddAccountsAction } from "@ledgerhq/live-wallet/addAccounts"; + +/* +FIXME +where is the accounts ordering source of truth? +we could go => Map accounts +but we can't because nestedSortAccounts +*/ + export type AccountsState = Account[]; const state: AccountsState = []; type HandlersPayloads = { REORDER_ACCOUNTS: { comparator: AccountComparator }; - SET_ACCOUNTS: Account[]; - ADD_ACCOUNT: Account; - REPLACE_ACCOUNTS: Account[]; + INIT_ACCOUNTS: { accounts: Account[]; accountsUserData: AccountUserData[] }; + ADD_ACCOUNTS: AddAccountsAction["payload"]; UPDATE_ACCOUNT: { accountId: string; updater: (a: Account) => Account }; REMOVE_ACCOUNT: Account; CLEAN_FULLNODE_DISCONNECT: never; CLEAN_ACCOUNTS_CACHE: never; DEBUG_TICK: never; }; + type AccountsHandlers = Handlers; const handlers: AccountsHandlers = { REORDER_ACCOUNTS: (state, { payload: { comparator } }) => nestedSortAccounts(state, comparator), - SET_ACCOUNTS: (_, { payload: accounts }) => accounts, - ADD_ACCOUNT: (state, { payload: account }) => { - if (state.some(a => a.id === account.id)) { - logger.warn("ADD_ACCOUNT attempt for an account that already exists!", account.id); - return state; - } - return [...state, account]; - }, - REPLACE_ACCOUNTS: (_, { payload }) => payload, + INIT_ACCOUNTS: (_, { payload: { accounts } }) => accounts, + ADD_ACCOUNTS: (_, { payload }) => payload.allAccounts, UPDATE_ACCOUNT: (state, { payload: { accountId, updater } }) => state.map(existingAccount => { if (existingAccount.id !== accountId) { @@ -71,9 +73,7 @@ export const accountsSelector = (state: { accounts: AccountsState }): Account[] // NB some components don't need to refresh every time an account is updated, usually it's only // when the balance/name/length/starred/swapHistory of accounts changes. const accountHash = (a: AccountLike) => - `${a.type === "Account" ? a.name : ""}-${a.id}${ - a.starred ? "-*" : "" - }-${a.balance.toString()}-swapHistory(${a.swapHistory?.length || "0"})`; + `${a.id}-${a.balance.toString()}-swapHistory(${a.swapHistory?.length || "0"})`; const shallowAccountsSelectorCreator = createSelectorCreator(defaultMemoize, (a, b) => isEqual(flattenAccounts(a).map(accountHash), flattenAccounts(b).map(accountHash)), ); @@ -128,6 +128,7 @@ export const isUpToDateSelector = createSelector(activeAccountsSelector, account return !outdated; }), ); + export const hasAccountsSelector = createSelector( shallowAccountsSelector, accounts => accounts.length > 0, @@ -164,17 +165,12 @@ export const getAccountById = createSelector( accounts => (accountId: string) => accounts.find(a => a.id === accountId), ); -export const starredAccountsSelector = createSelector(shallowAccountsSelector, accounts => - flattenAccounts(accounts).filter(a => a.starred), +export const starredAccountsSelector = createSelector( + shallowAccountsSelector, + walletSelector, + (accounts, wallet) => + flattenAccounts(accounts).filter(a => isStarredAccountSelector(wallet, { accountId: a.id })), ); -export const isStarredAccountSelector = ( - s: State, - { - accountId, - }: { - accountId: string; - }, -): boolean => flattenAccounts(s.accounts).some(a => a.id === accountId && a.starred); export const isUpToDateAccountSelector = createSelector(accountSelector, isUpToDateAccount); export const getAllNFTs = createSelector(accountsSelector, accounts => diff --git a/apps/ledger-live-desktop/src/renderer/reducers/index.ts b/apps/ledger-live-desktop/src/renderer/reducers/index.ts index 81f998e0107a..37d05b3ad5c3 100644 --- a/apps/ledger-live-desktop/src/renderer/reducers/index.ts +++ b/apps/ledger-live-desktop/src/renderer/reducers/index.ts @@ -10,6 +10,8 @@ import swap, { SwapStateType } from "./swap"; import { PostOnboardingState } from "@ledgerhq/types-live"; import postOnboarding from "@ledgerhq/live-common/postOnboarding/reducer"; import market, { MarketState } from "./market"; +import wallet from "./wallet"; +import { WalletState } from "@ledgerhq/live-wallet/store"; export type State = { accounts: AccountsState; @@ -22,6 +24,7 @@ export type State = { swap: SwapStateType; postOnboarding: PostOnboardingState; market: MarketState; + wallet: WalletState; }; export default combineReducers({ @@ -35,4 +38,5 @@ export default combineReducers({ postOnboarding, swap, market, + wallet, }); diff --git a/apps/ledger-live-desktop/src/renderer/reducers/wallet.ts b/apps/ledger-live-desktop/src/renderer/reducers/wallet.ts new file mode 100644 index 000000000000..32520ca7fdef --- /dev/null +++ b/apps/ledger-live-desktop/src/renderer/reducers/wallet.ts @@ -0,0 +1,39 @@ +import { + HandlersPayloads, + WalletHandlers, + initialState, + WalletState, + handlers, + isStarredAccountSelector, + accountNameWithDefaultSelector, +} from "@ledgerhq/live-wallet/store"; +import { handleActions } from "redux-actions"; +import { State } from "."; +import { createSelector } from "reselect"; +import { useSelector } from "react-redux"; +import { AccountLike } from "@ledgerhq/types-live"; + +export const walletSelector = (state: State): WalletState => state.wallet; + +export const accountStarredSelector = createSelector( + walletSelector, + (_: State, { accountId }: { accountId: string }) => accountId, + (wallet, accountId) => isStarredAccountSelector(wallet, { accountId }), +); + +export const useMaybeAccountName = ( + account: AccountLike | null | undefined, +): string | undefined => { + return useSelector((state: State) => + !account ? undefined : accountNameWithDefaultSelector(state.wallet, account), + ); +}; + +export const useAccountName = (account: AccountLike) => { + return useSelector((state: State) => accountNameWithDefaultSelector(state.wallet, account)); +}; + +export default handleActions( + handlers as unknown as WalletHandlers, + initialState, +); diff --git a/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeader.tsx b/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeader.tsx index 5ab26e034e44..78b389af7a1c 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeader.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeader.tsx @@ -20,7 +20,6 @@ import { getAccountCurrency, getMainAccount, shortAddressPreview, - getAccountName, } from "@ledgerhq/live-common/account/index"; import Box, { Tabbable } from "~/renderer/components/Box"; import Text from "~/renderer/components/Text"; @@ -32,8 +31,9 @@ import ParentCryptoCurrencyIcon from "~/renderer/components/ParentCryptoCurrency import IconPen from "~/renderer/icons/Pen"; import IconCross from "~/renderer/icons/Cross"; import IconCheck from "~/renderer/icons/Check"; -import { updateAccount } from "~/renderer/actions/accounts"; import AccountTagDerivationMode from "~/renderer/components/AccountTagDerivationMode"; +import { setAccountName } from "@ledgerhq/live-wallet/store"; +import { useAccountName } from "~/renderer/reducers/wallet"; type BaseComponentProps = BaseProps & { ff?: string }; @@ -164,7 +164,9 @@ const AccountHeader: React.ComponentType = React.memo(function AccountHea parentAccount, }: Props) { const dispatch = useDispatch(); - const [name, setName] = useState(getAccountName(account)); + const storeAccountName = useAccountName(account); + // local state of the name + const [name, setName] = useState(storeAccountName); const [editingName, setEditingName] = useState(false); const currency = getAccountCurrency(account); const mainAccount = getMainAccount(account, parentAccount); @@ -175,11 +177,7 @@ const AccountHeader: React.ComponentType = React.memo(function AccountHea : null; const submitNameChange = () => { if (account.type === "Account") { - const updatedAccount: Account = { - ...account, - name, - }; - dispatch(updateAccount(updatedAccount)); + dispatch(setAccountName(account.id, name)); } }; @@ -197,10 +195,9 @@ const AccountHeader: React.ComponentType = React.memo(function AccountHea }, [contract]); useEffect(() => { if (!editingName) { - setName(getAccountName(account)); + setName(storeAccountName); } - }, [editingName, account]); - + }, [editingName, storeAccountName]); return ( diff --git a/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeaderActions.tsx b/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeaderActions.tsx index 4895a04843d7..8b267a8f2ecb 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeaderActions.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/account/AccountHeaderActions.tsx @@ -147,12 +147,7 @@ const AccountHeaderSettingsButtonComponent = ({ account, parentAccount, openModa return ( - + {isWalletConnectActionDisplayable ? ( diff --git a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountGridItem/Header.tsx b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountGridItem/Header.tsx index ccdfd8270109..3df5ee9b179a 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountGridItem/Header.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountGridItem/Header.tsx @@ -1,10 +1,6 @@ import React, { PureComponent } from "react"; import { Account, AccountLike } from "@ledgerhq/types-live"; -import { - getAccountCurrency, - getAccountUnit, - getAccountName, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import Box from "~/renderer/components/Box"; import Ellipsis from "~/renderer/components/Ellipsis"; import Bar from "~/renderer/components/Bar"; @@ -15,6 +11,8 @@ import Star from "~/renderer/components/Stars/Star"; import Tooltip from "~/renderer/components/Tooltip"; import AccountSyncStatusIndicator from "../AccountSyncStatusIndicator"; import AccountTagDerivationMode from "~/renderer/components/AccountTagDerivationMode"; +import { useAccountName } from "~/renderer/reducers/wallet"; + class HeadText extends PureComponent<{ account: AccountLike; title: string; @@ -52,54 +50,53 @@ class HeadText extends PureComponent<{ ); } } -class Header extends PureComponent<{ + +const Header = ({ + account, + parentAccount, +}: { account: AccountLike; parentAccount: Account | undefined | null; -}> { - render() { - const { account, parentAccount } = this.props; - const currency = getAccountCurrency(account); - const unit = getAccountUnit(account); - const name = getAccountName(account); - let title; - switch (account.type) { - case "Account": - title = currency.name; - break; - case "TokenAccount": - title = "token"; - break; - default: - title = ""; - } - return ( - - - - - - - - - - - - - ); +}) => { + const currency = getAccountCurrency(account); + const unit = getAccountUnit(account); + const name = useAccountName(account); + let title; + switch (account.type) { + case "Account": + title = currency.name; + break; + case "TokenAccount": + title = "token"; + break; + default: + title = ""; } -} -export default Header; + return ( + + + + + + + + + + + + + ); +}; + +export default React.memo(Header); diff --git a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/ListBody.tsx b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/ListBody.tsx index 381aa4574728..c6251a44a53e 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/ListBody.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/ListBody.tsx @@ -11,7 +11,6 @@ type Props = { range: PortfolioRange; showNewAccount: boolean; horizontal: boolean; - blacklistedTokenIds: string[]; search?: string; }; const ListBody = ({ @@ -22,7 +21,6 @@ const ListBody = ({ onAccountClick, lookupParentAccount, search, - blacklistedTokenIds, }: Props) => ( {[...visibleAccounts, ...(showNewAccount ? [null] : []), ...hiddenAccounts].map((account, i) => @@ -37,7 +35,6 @@ const ListBody = ({ parentAccount={account.type !== "Account" ? lookupParentAccount(account.parentId) : null} range={range} onClick={onAccountClick} - blacklistedTokenIds={blacklistedTokenIds} /> ), )} diff --git a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/index.tsx b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/index.tsx index 67bf770104c8..7fe7e9615985 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountList/index.tsx @@ -1,10 +1,6 @@ import React, { useState, useCallback, SyntheticEvent } from "react"; import { useTranslation } from "react-i18next"; -import { - getAccountCurrency, - getAccountName, - listSubAccounts, -} from "@ledgerhq/live-common/account/helpers"; +import { getAccountCurrency, listSubAccounts } from "@ledgerhq/live-common/account/helpers"; import { Account, AccountLike, AccountLikeArray, PortfolioRange } from "@ledgerhq/types-live"; import Text from "~/renderer/components/Text"; @@ -15,6 +11,9 @@ import GridBody from "./GridBody"; import ListBody from "./ListBody"; import { useSelector } from "react-redux"; import { blacklistedTokenIdsSelector } from "~/renderer/reducers/settings"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { WalletState, accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; + type Props = { accounts: AccountLikeArray; mode: "card" | "list"; @@ -48,12 +47,14 @@ export default function AccountList({ accounts, range, onAccountClick, mode }: P setSearch(evt.currentTarget.value); }, []); + const walletState = useSelector(walletSelector); + const Body = BodyByMode[mode]; const visibleAccounts = []; const hiddenAccounts = []; for (let i = 0; i < accounts.length; i++) { const account = accounts[i]; - if (matchesSearch(search, account, mode === "list")) { + if (matchesSearch(walletState, search, account, mode === "list")) { visibleAccounts.push(account); } else { hiddenAccounts.push(account); @@ -101,21 +102,23 @@ export default function AccountList({ accounts, range, onAccountClick, mode }: P } export const matchesSearch = ( + walletState: WalletState, search: string | undefined | null, account: AccountLike, subMatch = false, ): boolean => { if (!search) return true; let match; + const accountName = accountNameWithDefaultSelector(walletState, account); if (account.type === "Account") { - match = `${account.currency.ticker}|${account.currency.name}|${getAccountName(account)}`; + match = `${account.currency.ticker}|${account.currency.name}|${accountName}`; subMatch = subMatch && !!account.subAccounts && - listSubAccounts(account).some(token => matchesSearch(search, token)); + listSubAccounts(account).some(token => matchesSearch(walletState, search, token)); } else { const c = getAccountCurrency(account); - match = `${c.ticker}|${c.name}|${getAccountName(account)}`; + match = `${c.ticker}|${c.name}|${accountName}`; } return match.toLowerCase().includes(search.toLowerCase()) || subMatch; }; diff --git a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/Header.tsx b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/Header.tsx index 3f1f62160ac8..646542899f36 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/Header.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/Header.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { getAccountCurrency, getAccountName } from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency } from "@ledgerhq/live-common/account/index"; import { AccountLike } from "@ledgerhq/types-live"; import styled from "styled-components"; import useTheme from "~/renderer/hooks/useTheme"; @@ -8,6 +8,7 @@ import Ellipsis from "~/renderer/components/Ellipsis"; import Tooltip from "~/renderer/components/Tooltip"; import CryptoCurrencyIcon from "~/renderer/components/CryptoCurrencyIcon"; import AccountTagDerivationMode from "~/renderer/components/AccountTagDerivationMode"; +import { useAccountName } from "~/renderer/reducers/wallet"; type Props = { account: AccountLike; nested?: boolean; @@ -21,7 +22,7 @@ const NestedIndicator = styled.div` const Header = ({ account, nested }: Props) => { const theme = useTheme(); const currency = getAccountCurrency(account); - const name = getAccountName(account); + const name = useAccountName(account); const color = currency.type === "CryptoCurrency" ? currency.color : theme.colors.palette.text.shade60; const title = currency.type === "CryptoCurrency" ? currency.name : "token"; diff --git a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/index.tsx b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/index.tsx index 1ee5fcfc0695..2e8b98d8fcf9 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/accounts/AccountRowItem/index.tsx @@ -18,12 +18,12 @@ import Countervalue from "./Countervalue"; import Delta from "./Delta"; import Header from "./Header"; import Star from "~/renderer/components/Stars/Star"; -import { - blacklistedTokenIdsSelector, - hideEmptyTokenAccountsSelector, -} from "~/renderer/reducers/settings"; +import { blacklistedTokenIdsSelector } from "~/renderer/reducers/settings"; import Button from "~/renderer/components/Button"; import { getLLDCoinFamily } from "~/renderer/families"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; +import { walletSelector } from "~/renderer/reducers/wallet"; +import { WalletState, accountNameSelector } from "@ledgerhq/live-wallet/store"; const Row = styled(Box)` background: ${p => p.theme.colors.palette.background.paper}; @@ -118,17 +118,19 @@ const IconAngleDown = styled.div<{ justify-content: center; transform: ${p => (p.expanded ? "rotate(180deg)" : "rotate(0deg)")}; `; -type Props = { +type OwnProps = { account: TokenAccount | Account; parentAccount?: Account | null; disableRounding?: boolean; - hideEmptyTokens?: boolean; - blacklistedTokenIds: string[]; onClick: (b: AccountLike, a?: Account | null) => void; hidden?: boolean; range: PortfolioRange; search?: string; }; +type Props = OwnProps & { + blacklistedTokenIds: string[]; + walletState: WalletState; +}; type State = { expanded: boolean; }; @@ -191,8 +193,8 @@ class AccountRowItem extends PureComponent { onClick, disableRounding, search, - hideEmptyTokens, blacklistedTokenIds, + walletState, } = this.props; const { expanded } = this.state; let currency; @@ -214,9 +216,9 @@ class AccountRowItem extends PureComponent { tokens = listSubAccounts(account).filter( subAccount => !blacklistedTokenIds.includes(getAccountCurrency(subAccount).id), ); - disabled = !matchesSearch(search, account); + disabled = !matchesSearch(walletState, search, account); isToken = listTokenTypesForCryptoCurrency(currency).length > 0; - if (tokens) tokens = tokens.filter(t => matchesSearch(search, t)); + if (tokens) tokens = tokens.filter(t => matchesSearch(walletState, search, t)); } const showTokensIndicator = Boolean(tokens && tokens.length > 0 && !hidden); const specific = mainAccount ? getLLDCoinFamily(mainAccount.currency.family).tokenList : null; @@ -234,7 +236,9 @@ class AccountRowItem extends PureComponent { see: "subAccounts.seeSubAccounts", hide: "subAccounts.hideSubAccounts", }; - const key = `${account.id}_${hideEmptyTokens ? "hide_empty_tokens" : ""}`; + const key = `${account.id}`; + const accountName = + accountNameSelector(walletState, { accountId: account.id }) || getDefaultAccountName(account); return (
0 ? "has-tokens" : ""}`} @@ -258,7 +262,7 @@ class AccountRowItem extends PureComponent { className="accounts-account-row-item-content" isSubAccountsExpanded={showTokensIndicator && expanded} onClick={this.onClick} - data-test-id={account.type === "Account" && `account-component-${account.name}`} + data-test-id={`account-component-${accountName}`} >
@@ -269,10 +273,7 @@ class AccountRowItem extends PureComponent { - + {showTokensIndicator && expanded ? ( @@ -330,9 +331,9 @@ class AccountRowItem extends PureComponent { } } const mapStateToProps = createStructuredSelector({ - hideEmptyTokenAccounts: hideEmptyTokenAccountsSelector, blacklistedTokenIds: blacklistedTokenIdsSelector, + walletState: walletSelector, }); -const ConnectedAccountRowItem: React.ComponentType = +const ConnectedAccountRowItem: React.ComponentType = connect(mapStateToProps)(AccountRowItem); export default ConnectedAccountRowItem; diff --git a/apps/ledger-live-desktop/src/renderer/screens/asset/AccountDistribution/Row.tsx b/apps/ledger-live-desktop/src/renderer/screens/asset/AccountDistribution/Row.tsx index bf9dca59bb30..1a43297e4600 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/asset/AccountDistribution/Row.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/asset/AccountDistribution/Row.tsx @@ -3,7 +3,6 @@ import { useHistory } from "react-router-dom"; import { BigNumber } from "bignumber.js"; import { useSelector } from "react-redux"; import styled from "styled-components"; -import { getAccountName } from "@ledgerhq/live-common/account/index"; import { Account, AccountLike, SubAccount } from "@ledgerhq/types-live"; import { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; import { useCurrencyColor } from "~/renderer/getCurrencyColor"; @@ -20,6 +19,7 @@ import ToolTip from "~/renderer/components/Tooltip"; import useTheme from "~/renderer/hooks/useTheme"; import { setTrackingSource } from "~/renderer/analytics/TrackPage"; import { IconsLegacy } from "@ledgerhq/react-ui"; +import { useAccountName, useMaybeAccountName } from "~/renderer/reducers/wallet"; export type AccountDistributionItem = { account: AccountLike; distribution: number; @@ -53,7 +53,8 @@ export default function Row({ const parentAccount = account.type !== "Account" ? accounts.find(a => a.id === account.parentId) : null; const color = useCurrencyColor(currency, theme.colors.palette.background.paper); - const displayName = getAccountName(account); + const displayName = useAccountName(account); + const parentDisplayName = useMaybeAccountName(parentAccount); const percentage = Math.floor(distribution * 10000) / 100; const icon = ; return ( @@ -64,7 +65,7 @@ export default function Row({ {parentAccount ? ( - {parentAccount.name} + {parentDisplayName} ) : null} diff --git a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSelectors/FromRow.tsx b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSelectors/FromRow.tsx index 5811db745cec..fe30915419f7 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSelectors/FromRow.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSelectors/FromRow.tsx @@ -1,11 +1,7 @@ import React, { useEffect } from "react"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; -import { - getAccountUnit, - getAccountCurrency, - getAccountName, -} from "@ledgerhq/live-common/account/index"; +import { getAccountUnit, getAccountCurrency } from "@ledgerhq/live-common/account/index"; import Box from "~/renderer/components/Box"; import InputCurrency from "~/renderer/components/InputCurrency"; import { ErrorContainer } from "~/renderer/components/Input"; @@ -30,6 +26,7 @@ import { WarningSolidMedium } from "@ledgerhq/react-ui/assets/icons"; import { useSwapableAccounts } from "@ledgerhq/live-common/exchange/swap/hooks/index"; import { useSelector } from "react-redux"; import { flattenAccountsSelector } from "~/renderer/reducers/accounts"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const SwapStatusContainer = styled.div<{ isError: boolean }>( ({ theme: { space, colors }, isError }) => ` @@ -139,7 +136,7 @@ function FromRow({ const setAccountAndTrack = (account: AccountLike) => { updateSelectedRate(); - const name = account ? getAccountName(account) : undefined; + const name = account ? getDefaultAccountName(account) : undefined; track("button_clicked2", { button: "New source account", page: "Page Swap Form", diff --git a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSummary/SectionTarget.tsx b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSummary/SectionTarget.tsx index 0d751a814773..c30a05b959b7 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSummary/SectionTarget.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/FormSummary/SectionTarget.tsx @@ -6,7 +6,6 @@ import SectionInformative from "./SectionInformative"; import SummaryValue, { NoValuePlaceholder } from "./SummaryValue"; import { useTranslation } from "react-i18next"; import CryptoCurrencyIcon from "~/renderer/components/CryptoCurrencyIcon"; -import { getAccountName } from "@ledgerhq/live-common/account/index"; import { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; import SummarySection from "./SummarySection"; import { openModal } from "~/renderer/actions/modals"; @@ -18,6 +17,7 @@ import { } from "@ledgerhq/live-common/exchange/swap/types"; import TargetAccountDrawer from "../TargetAccountDrawer"; import { AccountLike } from "@ledgerhq/types-live"; +import { useMaybeAccountName } from "~/renderer/reducers/wallet"; const AccountSection = ({ account, @@ -29,7 +29,8 @@ const AccountSection = ({ handleChange?: () => void; }) => { const { t } = useTranslation(); - const accountName = account ? getAccountName(account) : undefined; + const accountName = useMaybeAccountName(account); + const swapDefaultTrack = useGetSwapTrackingProperties(); const handleChangeAndTrack = useCallback(() => { diff --git a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/TargetAccountDrawer/index.tsx b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/TargetAccountDrawer/index.tsx index 3c650bf062b8..8300cf6664cd 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/TargetAccountDrawer/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/TargetAccountDrawer/index.tsx @@ -7,11 +7,7 @@ import Text from "~/renderer/components/Text"; import FormattedVal from "~/renderer/components/FormattedVal"; import CryptoCurrencyIcon from "~/renderer/components/CryptoCurrencyIcon"; import { AccountLike } from "@ledgerhq/types-live"; -import { - getAccountCurrency, - getAccountUnit, - getAccountName, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import Check from "~/renderer/icons/Check"; import { SwapTransactionType } from "@ledgerhq/live-common/exchange/swap/types"; import Tabbable from "~/renderer/components/Box/Tabbable"; @@ -23,6 +19,8 @@ import { shallowAccountsSelector } from "~/renderer/reducers/accounts"; import { context } from "~/renderer/drawers/Provider"; import { track } from "~/renderer/analytics/segment"; import { useGetSwapTrackingProperties } from "../../utils/index"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; +import { useAccountName, useMaybeAccountName } from "~/renderer/reducers/wallet"; const AccountWrapper = styled(Tabbable)<{ selected?: boolean }>` cursor: pointer; @@ -67,10 +65,10 @@ const TargetAccount = memo(function TargetAccount({ const theme = useTheme(); const currency = getAccountCurrency(account); const unit = getAccountUnit(account); - const name = getAccountName(account); + const name = useAccountName(account); const parentAccount = - account?.type !== "Account" ? allAccounts?.find(a => a.id === account?.parentId) : null; - const parentName = parentAccount ? getAccountName(parentAccount) : undefined; + account?.type !== "Account" ? allAccounts?.find(a => a.id === account?.parentId) : undefined; + const parentName = useMaybeAccountName(parentAccount); const balance = account.spendableBalance || account.balance; const onClick = useCallback(() => { @@ -96,7 +94,7 @@ const TargetAccount = memo(function TargetAccount({ justifyContent="space-between" selected={selected} onClick={onClick} - data-test-id={`target-account-container-${("name" in account && account.name) || ""}`} + data-test-id={`target-account-container-${getDefaultAccountName(account) || ""}`} > {isChild && ( diff --git a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/index.tsx b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/index.tsx index 577bc72f36c8..f7e7370938c4 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/Form/index.tsx @@ -38,6 +38,7 @@ import SwapFormSummary from "./FormSummary"; import { useLocalLiveAppManifest } from "@ledgerhq/live-common/platform/providers/LocalLiveAppProvider/index"; import { useRemoteLiveAppManifest } from "@ledgerhq/live-common/platform/providers/RemoteLiveAppProvider/index"; import { languageSelector } from "~/renderer/reducers/settings"; +import { walletSelector } from "~/renderer/reducers/wallet"; const DAPP_PROVIDERS = ["paraswap", "oneinch", "moonpay"]; @@ -115,6 +116,7 @@ const SwapForm = () => { undefined, ); const { setDrawer } = React.useContext(context); + const walletState = useSelector(walletSelector); const getExchangeSDKParams = useCallback(() => { const { swap, transaction } = swapTransaction; @@ -126,10 +128,10 @@ const SwapForm = () => { const isToAccountValid = totalListedAccounts.some(account => account.id === toAccount?.id); const fromAccountId = - fromAccount && accountToWalletAPIAccount(fromAccount, fromParentAccount)?.id; + fromAccount && accountToWalletAPIAccount(walletState, fromAccount, fromParentAccount)?.id; const toAccountId = isToAccountValid - ? toAccount && accountToWalletAPIAccount(toAccount, toParentAccount)?.id - : toParentAccount && accountToWalletAPIAccount(toParentAccount, undefined)?.id; + ? toAccount && accountToWalletAPIAccount(walletState, toAccount, toParentAccount)?.id + : toParentAccount && accountToWalletAPIAccount(walletState, toParentAccount, undefined)?.id; const toNewTokenId = !isToAccountValid && toAccount?.type === "TokenAccount" ? toAccount.token?.id : undefined; const fromAmount = @@ -197,7 +199,7 @@ const SwapForm = () => { provider && walletApiPartnerList?.enabled && walletApiPartnerList?.params?.list.includes(provider) - ? accountToWalletAPIAccount(fromAccount, fromParentAccount)?.id + ? accountToWalletAPIAccount(walletState, fromAccount, fromParentAccount)?.id : fromAccount?.id; const providerRedirectURLSearch = new URLSearchParams(); @@ -220,6 +222,7 @@ const SwapForm = () => { providerRedirectURLSearch.set("returnTo", "/swap"); return providerRedirectURLSearch; }, [ + walletState, provider, swapTransaction.swap.from, exchangeRate?.providerURL, @@ -253,7 +256,7 @@ const SwapForm = () => { const accountId = walletApiPartnerList?.enabled && walletApiPartnerList?.params?.list.includes(provider) - ? accountToWalletAPIAccount(account, parentAccount)?.id + ? accountToWalletAPIAccount(walletState, account, parentAccount)?.id : fromAccountId; const state: { @@ -283,6 +286,7 @@ const SwapForm = () => { }); }, [ + walletState, accounts, exchangeRate, generateMoonpayUrl, diff --git a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/History/OperationRow.tsx b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/History/OperationRow.tsx index 9850ee37c3b4..3ee575a6b928 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/History/OperationRow.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/exchange/Swap2/History/OperationRow.tsx @@ -1,8 +1,4 @@ -import { - getAccountCurrency, - getAccountName, - getAccountUnit, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import { isSwapOperationPending, operationStatusList, @@ -23,6 +19,7 @@ import IconClock from "~/renderer/icons/Clock"; import IconSwap from "~/renderer/icons/Swap"; import { rgba } from "~/renderer/styles/helpers"; import { hourFormat, useDateFormatted } from "~/renderer/hooks/useDateFormatter"; +import { useAccountName } from "~/renderer/reducers/wallet"; export const getStatusColor = (status: string, theme: DefaultTheme) => { if (isSwapOperationPending(status)) { @@ -105,6 +102,9 @@ const OperationRow = ({ const dateFormatted = useDateFormatted(operation.date, hourFormat); const { t } = useTranslation(); + const fromAccountName = useAccountName(fromAccount); + const toAccountName = useAccountName(toAccount); + return ( - + - {getAccountName(fromAccount)} + {fromAccountName} @@ -149,9 +149,9 @@ const OperationRow = ({ - + - {getAccountName(toAccount)} + {toAccountName} diff --git a/apps/ledger-live-desktop/src/renderer/screens/exchange/index.tsx b/apps/ledger-live-desktop/src/renderer/screens/exchange/index.tsx index a9bb1deeabf5..82b9b568c588 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/exchange/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/exchange/index.tsx @@ -20,6 +20,7 @@ import { } from "@ledgerhq/live-common/wallet-api/constants"; import { useInternalAppIds } from "@ledgerhq/live-common/hooks/useInternalAppIds"; import { useFeature } from "@ledgerhq/live-common/featureFlags/index"; +import { walletSelector } from "~/renderer/reducers/wallet"; export type DProps = { defaultCurrencyId?: string | null; @@ -44,6 +45,7 @@ const LiveAppExchange = ({ appId }: { appId: string }) => { const manifest = localManifest || mockManifest || remoteManifest; const themeType = useTheme().colors.palette.type; const internalAppIds = useInternalAppIds() || INTERNAL_APP_IDS; + const walletState = useSelector(walletSelector); /** * Pass correct account ID @@ -61,11 +63,11 @@ const LiveAppExchange = ({ appId }: { appId: string }) => { const parentAccount = isTokenAccount(account) ? getParentAccount(account, accounts) : undefined; - urlParams.account = accountToWalletAPIAccount(account, parentAccount).id; + urlParams.account = accountToWalletAPIAccount(walletState, account, parentAccount).id; } } return urlParams; - }, [accounts, manifest?.apiVersion, urlParams]); + }, [accounts, manifest?.apiVersion, urlParams, walletState]); /** * Given the user is on an internal app (webview url is owned by LL) we must reset the session diff --git a/apps/ledger-live-desktop/src/renderer/screens/stake/index.tsx b/apps/ledger-live-desktop/src/renderer/screens/stake/index.tsx index c9485b72a8a7..aa1d754ca43b 100644 --- a/apps/ledger-live-desktop/src/renderer/screens/stake/index.tsx +++ b/apps/ledger-live-desktop/src/renderer/screens/stake/index.tsx @@ -8,7 +8,7 @@ import { stakeDefaultTrack } from "./constants"; import { track, trackPage } from "~/renderer/analytics/segment"; import { useDispatch } from "react-redux"; import { openModal } from "~/renderer/actions/modals"; -import { getAccountName } from "@ledgerhq/live-common/account/index"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; type Props = { currencies?: string[]; @@ -51,8 +51,8 @@ const useStakeFlow = () => { button: "asset", page: history.location.pathname, currency: account.type === "Account" && account?.currency?.family, - account: account ? getAccountName(account) : undefined, - parentAccount: parentAccount ? getAccountName(parentAccount) : undefined, + account: account ? getDefaultAccountName(account) : undefined, + parentAccount: parentAccount ? getDefaultAccountName(parentAccount) : undefined, drawer: "Select Account And Currency Drawer", }); setDrawer(); diff --git a/apps/ledger-live-desktop/src/renderer/storage.ts b/apps/ledger-live-desktop/src/renderer/storage.ts index 0e21b764e7c9..38fc1b144aa9 100644 --- a/apps/ledger-live-desktop/src/renderer/storage.ts +++ b/apps/ledger-live-desktop/src/renderer/storage.ts @@ -15,7 +15,7 @@ import { parseSatStackConfig, SatStackConfig, } from "@ledgerhq/live-common/families/bitcoin/satstack"; -import { Account, AccountRaw } from "@ledgerhq/types-live"; +import { Account, AccountRaw, AccountUserData } from "@ledgerhq/types-live"; import { DataModel } from "@ledgerhq/live-common/DataModel"; import { Announcement } from "@ledgerhq/live-common/notifications/AnnouncementProvider/types"; import { CounterValuesStatus, RateMapRaw } from "@ledgerhq/live-countervalues/types"; @@ -82,7 +82,7 @@ type Transform = { // A map of transformers. type Transforms = { - accounts: Transform; + accounts: Transform; }; const transforms: Transforms = { @@ -90,11 +90,11 @@ const transforms: Transforms = { get: raws => { // NB to prevent parsing encrypted string as JSON if (typeof raws === "string") return null; - const accounts = []; + const accounts: Array<[Account, AccountUserData]> = []; if (raws) { - for (const row of raws) { + for (const raw of raws) { try { - accounts.push(accountModel.decode(row)); + accounts.push(accountModel.decode(raw)); } catch (e) { logger.critical(e); } diff --git a/apps/ledger-live-mobile/__tests__/test-renderer.tsx b/apps/ledger-live-mobile/__tests__/test-renderer.tsx index 567cbabd3edb..ac61604b0fd5 100644 --- a/apps/ledger-live-mobile/__tests__/test-renderer.tsx +++ b/apps/ledger-live-mobile/__tests__/test-renderer.tsx @@ -25,6 +25,7 @@ import { INITIAL_STATE as DYNAMIC_CONTENT_INITIAL_STATE } from "~/reducers/dynam import { INITIAL_STATE as WALLET_CONNECT_INITIAL_STATE } from "~/reducers/walletconnect"; import { INITIAL_STATE as PROTECT_INITIAL_STATE } from "~/reducers/protect"; import { INITIAL_STATE as NFT_INITIAL_STATE } from "~/reducers/nft"; +import { initialState as WALLET_INITIAL_STATE } from "@ledgerhq/live-wallet/store"; const initialState = { accounts: ACCOUNTS_INITIAL_STATE, @@ -40,6 +41,7 @@ const initialState = { postOnboarding: POST_ONBOARDING_INITIAL_STATE, protect: PROTECT_INITIAL_STATE, nft: NFT_INITIAL_STATE, + wallet: WALLET_INITIAL_STATE, }; type ExtraOptions = RenderOptions & { diff --git a/apps/ledger-live-mobile/e2e/bridge/client.ts b/apps/ledger-live-mobile/e2e/bridge/client.ts index e240c1d8b2e4..810cf9c4c7cc 100644 --- a/apps/ledger-live-mobile/e2e/bridge/client.ts +++ b/apps/ledger-live-mobile/e2e/bridge/client.ts @@ -3,7 +3,7 @@ import invariant from "invariant"; import { Subject } from "rxjs"; import { store } from "~/context/store"; import { importSettings } from "~/actions/settings"; -import { importStore as importAccounts } from "~/actions/accounts"; +import { importStore as importAccountsRaw } from "~/actions/accounts"; import { acceptGeneralTerms } from "~/logic/terms"; import { navigate } from "~/rootnavigation"; import { importBle } from "~/actions/ble"; @@ -71,7 +71,7 @@ function onMessage(event: WebSocketMessageEvent) { acceptGeneralTerms(store); break; case "importAccounts": { - store.dispatch(importAccounts({ active: msg.payload })); + store.dispatch(importAccountsRaw({ active: msg.payload })); break; } case "mockDeviceEvent": { diff --git a/apps/ledger-live-mobile/e2e/specs/send/currencies.spec.ts b/apps/ledger-live-mobile/e2e/specs/send/currencies.spec.ts index 9a8c4f18f081..2df193a05ea1 100644 --- a/apps/ledger-live-mobile/e2e/specs/send/currencies.spec.ts +++ b/apps/ledger-live-mobile/e2e/specs/send/currencies.spec.ts @@ -15,6 +15,7 @@ import { tapByElement } from "../../helpers"; import { Account } from "@ledgerhq/types-live"; import { CryptoCurrencyId } from "@ledgerhq/types-cryptoassets"; import Common, { formattedAmount } from "../../models/common"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; let portfolioPage: PortfolioPage; let sendPage: SendPage; @@ -69,7 +70,7 @@ describe("Send flow", () => { await portfolioPage.openViaDeeplink(); await sendPage.openViaDeeplink(); - await common.performSearch(account.name); + await common.performSearch(getDefaultAccountName(account)); await sendPage.selectAccount(account.id); await sendPage.setRecipient(account.freshAddress); await sendPage.recipientContinue(); @@ -91,7 +92,7 @@ describe("Send flow", () => { await expect(lastTransaction).toHaveText(`-${amountWithCode}`); await tapByElement(lastTransaction); await operationDetailsPage.isOpened(); - await operationDetailsPage.checkAccount(account.name); + await operationDetailsPage.checkAccount(getDefaultAccountName(account)); await operationDetailsPage.checkAmount(`-${amountWithCode}`); }, ); diff --git a/apps/ledger-live-mobile/package.json b/apps/ledger-live-mobile/package.json index ee13f0a6d740..84b85cb4fa41 100644 --- a/apps/ledger-live-mobile/package.json +++ b/apps/ledger-live-mobile/package.json @@ -88,6 +88,7 @@ "@ledgerhq/live-env": "workspace:^", "@ledgerhq/live-nft": "workspace:^", "@ledgerhq/live-nft-react": "workspace:^", + "@ledgerhq/live-wallet": "workspace:^", "@ledgerhq/logs": "workspace:^", "@ledgerhq/native-ui": "workspace:^", "@ledgerhq/react-native-hid": "workspace:^", diff --git a/apps/ledger-live-mobile/src/actions/accounts.ts b/apps/ledger-live-mobile/src/actions/accounts.ts index 23fc6df68f65..47f266e63044 100644 --- a/apps/ledger-live-mobile/src/actions/accounts.ts +++ b/apps/ledger-live-mobile/src/actions/accounts.ts @@ -1,48 +1,42 @@ -import type { Account, AccountRaw } from "@ledgerhq/types-live"; +import type { Account, AccountRaw, AccountUserData } from "@ledgerhq/types-live"; import { createAction } from "redux-actions"; import accountModel from "../logic/accountModel"; import type { AccountsDeleteAccountPayload, AccountsImportAccountsPayload, - AccountsImportStorePayload, AccountsReorderPayload, - AccountsReplaceAccountsPayload, - AccountsSetAccountsPayload, AccountsUpdateAccountWithUpdaterPayload, } from "./types"; import { AccountsActionTypes } from "./types"; import logger from "../logger"; +import { initAccounts } from "@ledgerhq/live-wallet/store"; const version = 0; // FIXME this needs to come from user data -const importStoreAction = createAction( - AccountsActionTypes.ACCOUNTS_IMPORT, -); export const importStore = (rawAccounts: { active: { data: AccountRaw }[] }) => { - const accounts = []; + const tuples: Array<[Account, AccountUserData]> = []; if (rawAccounts && Array.isArray(rawAccounts.active)) { for (const { data } of rawAccounts.active) { try { - accounts.push(accountModel.decode({ data, version })); + tuples.push(accountModel.decode({ data, version })); } catch (e) { if (e instanceof Error) logger.critical(e); } } } - return importStoreAction(accounts); + const accounts = tuples.map(([account]) => account); + const accountsUserData = tuples.map(([, userData]) => userData); + return initAccounts(accounts, accountsUserData); }; export const reorderAccounts = createAction( AccountsActionTypes.REORDER_ACCOUNTS, ); -export const importAccounts = createAction( +export const addOneAccount = createAction(AccountsActionTypes.ADD_ACCOUNT); + +export const importAccountsLiveQR = createAction( AccountsActionTypes.ACCOUNTS_USER_IMPORT, ); -export const replaceAccounts = createAction( - AccountsActionTypes.ACCOUNTS_ADD, -); -export const setAccounts = createAction( - AccountsActionTypes.SET_ACCOUNTS, -); + export const updateAccountWithUpdater = createAction( AccountsActionTypes.UPDATE_ACCOUNT, ); diff --git a/apps/ledger-live-mobile/src/actions/general.ts b/apps/ledger-live-mobile/src/actions/general.ts index a6aaa6193af5..01924dd7e7f5 100644 --- a/apps/ledger-live-mobile/src/actions/general.ts +++ b/apps/ledger-live-mobile/src/actions/general.ts @@ -3,7 +3,7 @@ import { useSelector, useDispatch } from "react-redux"; import { flattenSortAccounts, sortAccountsComparatorFromOrder, -} from "@ledgerhq/live-common/account/index"; +} from "@ledgerhq/live-wallet/ordering"; import type { FlattenAccountsOptions } from "@ledgerhq/live-common/account/index"; import type { TrackingPair } from "@ledgerhq/live-countervalues/types"; import { @@ -18,6 +18,7 @@ import { accountsSelector } from "../reducers/accounts"; import { counterValueCurrencySelector, orderAccountsSelector } from "../reducers/settings"; import { clearBridgeCache } from "../bridge/cache"; import { flushAll } from "../components/DBSave"; +import { walletSelector } from "~/reducers/wallet"; const extraSessionTrackingPairsChanges: BehaviorSubject = new BehaviorSubject< TrackingPair[] @@ -38,7 +39,8 @@ export function useCalculateCountervalueCallback() { export function useSortAccountsComparator() { const accounts = useSelector(orderAccountsSelector); const calc = useCalculateCountervalueCallback(); - return sortAccountsComparatorFromOrder(accounts, calc); + const walletState = useSelector(walletSelector); + return sortAccountsComparatorFromOrder(accounts, walletState, calc); } export function useFlattenSortAccounts(options?: FlattenAccountsOptions) { const accounts = useSelector(accountsSelector); diff --git a/apps/ledger-live-mobile/src/actions/types.ts b/apps/ledger-live-mobile/src/actions/types.ts index f88d75cac85a..1d05e05364f7 100644 --- a/apps/ledger-live-mobile/src/actions/types.ts +++ b/apps/ledger-live-mobile/src/actions/types.ts @@ -1,9 +1,5 @@ import type { Action } from "redux-actions"; -import type { - AccountComparator, - AddAccountsProps, - ImportAccountsReduceInput, -} from "@ledgerhq/live-common/account/index"; +import type { AccountComparator } from "@ledgerhq/live-wallet/ordering"; import { Device } from "@ledgerhq/live-common/hw/actions/types"; import type { Account, @@ -37,14 +33,16 @@ import type { NftState, } from "../reducers/types"; import type { Unpacked } from "../types/helpers"; +import { HandlersPayloads } from "@ledgerhq/live-wallet/store"; +import { ImportAccountsReduceInput } from "@ledgerhq/live-wallet/liveqr/importAccounts"; // === ACCOUNTS ACTIONS === export enum AccountsActionTypes { ACCOUNTS_IMPORT = "ACCOUNTS_IMPORT", ACCOUNTS_USER_IMPORT = "ACCOUNTS_USER_IMPORT", + ADD_ACCOUNT = "ADD_ACCOUNT", REORDER_ACCOUNTS = "REORDER_ACCOUNTS", - ACCOUNTS_ADD = "ACCOUNTS_ADD", SET_ACCOUNTS = "SET_ACCOUNTS", UPDATE_ACCOUNT = "UPDATE_ACCOUNT", DELETE_ACCOUNT = "DELETE_ACCOUNT", @@ -52,28 +50,20 @@ export enum AccountsActionTypes { DANGEROUSLY_OVERRIDE_STATE = "DANGEROUSLY_OVERRIDE_STATE", } -export type AccountsImportStorePayload = Account[]; export type AccountsReorderPayload = AccountComparator; export type AccountsImportAccountsPayload = ImportAccountsReduceInput; -export type AccountsReplaceAccountsPayload = Pick< - AddAccountsProps, - "scannedAccounts" | "selectedIds" | "renamings" -> & - Partial; -export type AccountsSetAccountsPayload = Account[]; export type AccountsUpdateAccountWithUpdaterPayload = { accountId: string; updater: (arg0: Account) => Account; }; export type AccountsDeleteAccountPayload = Account; export type AccountsPayload = - | AccountsImportStorePayload + | HandlersPayloads["INIT_ACCOUNTS"] | AccountsReorderPayload | AccountsImportAccountsPayload - | AccountsReplaceAccountsPayload - | AccountsSetAccountsPayload | AccountsUpdateAccountWithUpdaterPayload - | AccountsDeleteAccountPayload; + | AccountsDeleteAccountPayload + | Account; // === APPSTATE ACTIONS === diff --git a/apps/ledger-live-mobile/src/components/AccountCard.tsx b/apps/ledger-live-mobile/src/components/AccountCard.tsx index 490feed48b03..9ffe52b6fd28 100644 --- a/apps/ledger-live-mobile/src/components/AccountCard.tsx +++ b/apps/ledger-live-mobile/src/components/AccountCard.tsx @@ -12,6 +12,7 @@ import Card, { Props as CardProps } from "./Card"; import CurrencyIcon from "./CurrencyIcon"; import CurrencyUnitValue from "./CurrencyUnitValue"; import CounterValue from "./CounterValue"; +import { useMaybeAccountName } from "~/reducers/wallet"; export type Props = CardProps & { account?: AccountLike | null; @@ -21,6 +22,7 @@ export type Props = CardProps & { useFullBalance?: boolean; AccountSubTitle?: ReactNode; iconSize?: number; + overridesName?: string; }; const AccountCard = ({ @@ -31,10 +33,14 @@ const AccountCard = ({ disabled, useFullBalance, AccountSubTitle, + overridesName, iconSize = 48, ...props }: Props) => { const { colors } = useTheme(); + const accountNameFromStore = useMaybeAccountName(account); + const accountName = overridesName || accountNameFromStore; + const parentName = useMaybeAccountName(parentAccount); if (!account) return null; const currency = getAccountCurrency(account); const unit = getAccountUnit(account); @@ -47,9 +53,9 @@ const AccountCard = ({ const name = account.type === "TokenAccount" ? parentAccount - ? `${parentAccount!.name} (${currency.ticker})` + ? `${parentName} (${currency.ticker})` : currency.ticker - : account.name; + : accountName; return ( >(); @@ -251,6 +248,9 @@ const GraphCardHeader = ({ }); }, [account.id, currency, navigation, parentAccount?.id]); + const accountName = useAccountName(account); + const parentAccountName = useMaybeAccountName(parentAccount); + return ( - {getAccountName(account)} + {accountName} {isToken && ( - {getAccountName(parentAccount)} + {parentAccountName} )} diff --git a/apps/ledger-live-mobile/src/components/AccountSelector.tsx b/apps/ledger-live-mobile/src/components/AccountSelector.tsx index 40cc71dac2fc..443b3de88401 100644 --- a/apps/ledger-live-mobile/src/components/AccountSelector.tsx +++ b/apps/ledger-live-mobile/src/components/AccountSelector.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from "react"; +import React, { useCallback, useMemo } from "react"; import { useSelector } from "react-redux"; import { AccountLike } from "@ledgerhq/types-live"; import { Flex, Text } from "@ledgerhq/native-ui"; @@ -8,8 +8,10 @@ import AccountList from "./AccountList"; import FilteredSearchBar from "./FilteredSearchBar"; import { formatSearchResults } from "~/helpers/formatAccountSearchResults"; import { accountsSelector } from "~/reducers/accounts"; +import { walletSelector } from "~/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; -const SEARCH_KEYS = ["name", "unit.code", "token.name", "token.ticker"]; +const SEARCH_KEYS = ["name", "account.unit.code", "account.token.name", "account.token.ticker"]; type Props = { list: AccountLike[]; @@ -28,6 +30,14 @@ const AccountSelector = ({ }: Props) => { const { t } = useTranslation(); const accounts = useSelector(accountsSelector); + const walletState = useSelector(walletSelector); + + const items = useMemo(() => { + return list.map(account => ({ + account, + name: accountNameWithDefaultSelector(walletState, account), + })); + }, [list, walletState]); const renderEmptySearch = useCallback( () => ( @@ -47,9 +57,11 @@ const AccountSelector = ({ ); const renderList = useCallback( - (items: AccountLike[]) => { - const formatedList = formatSearchResults(items, accounts); - + (items: { account: AccountLike }[]) => { + const formatedList = formatSearchResults( + items.map(a => a.account), + accounts, + ); return ( >; @@ -231,6 +232,8 @@ export function DeviceActionDefaultRendering({ } }, [error, onError]); + const walletState = useSelector(walletSelector); + if (displayUpgradeWarning && appAndVersion) { return renderWarningOutdated({ t, @@ -399,6 +402,7 @@ export function DeviceActionDefaultRendering({ exchange: req?.exchange, amountExpectedTo: status.amountExpectedTo, estimatedFees: status.estimatedFees, + walletState, }); } diff --git a/apps/ledger-live-mobile/src/components/DeviceAction/rendering.tsx b/apps/ledger-live-mobile/src/components/DeviceAction/rendering.tsx index f058a7c9ac4a..647bcd247bc7 100644 --- a/apps/ledger-live-mobile/src/components/DeviceAction/rendering.tsx +++ b/apps/ledger-live-mobile/src/components/DeviceAction/rendering.tsx @@ -31,7 +31,6 @@ import { ExchangeRate, ExchangeSwap } from "@ledgerhq/live-common/exchange/swap/ import { getAccountUnit, getMainAccount, - getAccountName, getAccountCurrency, getFeesCurrency, getFeesUnit, @@ -62,6 +61,7 @@ import TermsFooter, { TermsProviders } from "../TermsFooter"; import CurrencyIcon from "../CurrencyIcon"; import ModalLock from "../ModalLock"; import Config from "react-native-config"; +import { WalletState, accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; export const Wrapper = styled(Flex).attrs({ flex: 1, @@ -241,6 +241,7 @@ export function renderConfirmSwap({ exchange, amountExpectedTo, estimatedFees, + walletState, }: RawProps & { device: Device; transaction: Transaction; @@ -248,10 +249,13 @@ export function renderConfirmSwap({ exchange: ExchangeSwap; amountExpectedTo?: string | null; estimatedFees?: string | null; + walletState: WalletState; }) { const providerName = getProviderName(exchangeRate.provider); const noticeType = getNoticeType(exchangeRate.provider); const alertProperties = noticeType.learnMore ? { learnMoreUrl: urls.swap.learnMore } : {}; + const fromAccountName = accountNameWithDefaultSelector(walletState, exchange.fromAccount); + const toAccountName = accountNameWithDefaultSelector(walletState, exchange.toAccount); return ( @@ -317,14 +321,14 @@ export function renderConfirmSwap({ - {getAccountName(exchange.fromAccount)} + {fromAccountName} - {getAccountName(exchange.toAccount)} + {toAccountName} diff --git a/apps/ledger-live-mobile/src/components/OperationRow/index.tsx b/apps/ledger-live-mobile/src/components/OperationRow/index.tsx index 6a850eadc3d3..c8d138e85b0c 100644 --- a/apps/ledger-live-mobile/src/components/OperationRow/index.tsx +++ b/apps/ledger-live-mobile/src/components/OperationRow/index.tsx @@ -12,7 +12,6 @@ import { import { getMainAccount, getAccountCurrency, - getAccountName, getAccountUnit, } from "@ledgerhq/live-common/account/index"; import { Account, Operation, AccountLike } from "@ledgerhq/types-live"; @@ -33,6 +32,7 @@ import { UnionToIntersection } from "~/types/helpers"; import { BaseNavigation } from "../RootNavigator/types/helpers"; import { currencySettingsForAccountSelector } from "~/reducers/settings"; import type { State } from "~/reducers/types"; +import { useAccountName } from "~/reducers/wallet"; type FamilyOperationDetailsIntersection = UnionToIntersection< (typeof perFamilyOperationDetails)[keyof typeof perFamilyOperationDetails] @@ -148,6 +148,7 @@ function OperationRow({ const amount = getOperationAmountNumber(operation); const currency = getAccountCurrency(account); const mainAccount = getMainAccount(account, parentAccount); + const accountName = useAccountName(account); const currencySettings = useSelector((s: State) => currencySettingsForAccountSelector(s, { account: mainAccount, @@ -192,7 +193,7 @@ function OperationRow({ - {multipleAccounts ? getAccountName(account) : text} + {multipleAccounts ? accountName : text} {isOptimistic ? ( diff --git a/apps/ledger-live-mobile/src/components/RootNavigator/types/ImportAccountsNavigator.ts b/apps/ledger-live-mobile/src/components/RootNavigator/types/ImportAccountsNavigator.ts index 3128eb890e83..b7362e59e02c 100644 --- a/apps/ledger-live-mobile/src/components/RootNavigator/types/ImportAccountsNavigator.ts +++ b/apps/ledger-live-mobile/src/components/RootNavigator/types/ImportAccountsNavigator.ts @@ -1,4 +1,4 @@ -import { Result as ImportAccountsResult } from "@ledgerhq/live-common/cross"; +import { Result as ImportAccountsResult } from "@ledgerhq/live-wallet/liveqr/cross"; import { ScreenName } from "~/const"; export type ImportAccountsNavigatorParamList = { diff --git a/apps/ledger-live-mobile/src/components/SubAccountRow.tsx b/apps/ledger-live-mobile/src/components/SubAccountRow.tsx index ea4c4c678b17..e3ae874462ac 100644 --- a/apps/ledger-live-mobile/src/components/SubAccountRow.tsx +++ b/apps/ledger-live-mobile/src/components/SubAccountRow.tsx @@ -1,8 +1,4 @@ -import { - getAccountCurrency, - getAccountName, - getAccountUnit, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import React, { memo } from "react"; import { RectButton, LongPressGestureHandler, State } from "react-native-gesture-handler"; import { SubAccount, TokenAccount, Account } from "@ledgerhq/types-live"; @@ -17,6 +13,7 @@ import { selectedTimeRangeSelector } from "~/reducers/settings"; import { useBalanceHistoryWithCountervalue } from "~/hooks/portfolio"; import Delta from "./Delta"; import { State as RootState } from "~/reducers/types"; +import { useAccountName } from "~/reducers/wallet"; type Props = { account: SubAccount; @@ -39,7 +36,7 @@ function SubAccountRow({ useCounterValue, }: Props) { const currency = getAccountCurrency(account); - const name = getAccountName(account); + const name = useAccountName(account); const unit = getAccountUnit(account); const range = useSelector(selectedTimeRangeSelector); const { countervalueChange, cryptoChange } = useBalanceHistoryWithCountervalue({ diff --git a/apps/ledger-live-mobile/src/components/ValidateMessageOnDevice.tsx b/apps/ledger-live-mobile/src/components/ValidateMessageOnDevice.tsx index 00486171c6fe..18e9e585f6a6 100644 --- a/apps/ledger-live-mobile/src/components/ValidateMessageOnDevice.tsx +++ b/apps/ledger-live-mobile/src/components/ValidateMessageOnDevice.tsx @@ -9,6 +9,7 @@ import { ScrollView, StyleSheet, View } from "react-native"; import { getDeviceAnimation } from "~/helpers/getDeviceAnimation"; import Animation from "./Animation"; import LText from "./LText"; +import { useAccountName } from "~/reducers/wallet"; type Props = { device: Device; @@ -40,6 +41,8 @@ export default function ValidateOnDevice({ device, message: messageData, account ); const mainAccount = getMainAccount(account, null); + const mainAccountName = useAccountName(mainAccount); + const [messageFields, setMessageFields] = useState(null); useEffect(() => { @@ -67,7 +70,7 @@ export default function ValidateOnDevice({ device, message: messageData, account {t("walletconnect.stepVerification.action")} {t("walletconnect.stepVerification.accountName")} - {mainAccount.name} + {mainAccountName} {messageData.standard === "EIP712" ? ( <> diff --git a/apps/ledger-live-mobile/src/components/Web3AppWebview/PlatformAPIWebview.tsx b/apps/ledger-live-mobile/src/components/Web3AppWebview/PlatformAPIWebview.tsx index 511caf2c75a2..723de03b3600 100644 --- a/apps/ledger-live-mobile/src/components/Web3AppWebview/PlatformAPIWebview.tsx +++ b/apps/ledger-live-mobile/src/components/Web3AppWebview/PlatformAPIWebview.tsx @@ -48,6 +48,7 @@ import { BaseNavigatorStackParamList } from "../RootNavigator/types/BaseNavigato import { WebviewAPI, WebviewProps } from "./types"; import { useWebviewState } from "./helpers"; import { currentRouteNameRef } from "~/analytics/screenRefs"; +import { walletSelector } from "~/reducers/wallet"; function renderLoading() { return ( @@ -81,13 +82,15 @@ export const PlatformAPIWebview = forwardRef( onStateChange, ); + const walletState = useSelector(walletSelector); + const accounts = useSelector(flattenAccountsSelector); const navigation = useNavigation< RootNavigationComposite> >(); const [device, setDevice] = useState(); - const listAccounts = useListPlatformAccounts(accounts); + const listAccounts = useListPlatformAccounts(walletState, accounts); const listPlatformCurrencies = useListPlatformCurrencies(); const requestAccount = useCallback( @@ -145,7 +148,11 @@ export const PlatformAPIWebview = forwardRef( const onSuccess = (account: AccountLike, parentAccount?: Account) => { tracking.platformRequestAccountSuccess(manifest); - resolve(serializePlatformAccount(accountToPlatformAccount(account, parentAccount))); + resolve( + serializePlatformAccount( + accountToPlatformAccount(walletState, account, parentAccount), + ), + ); }; const onClose = () => { @@ -186,12 +193,13 @@ export const PlatformAPIWebview = forwardRef( }); } }), - [manifest, accounts, navigation, tracking], + [manifest, accounts, walletState, navigation, tracking], ); const receiveOnAccount = useCallback( ({ accountId }: { accountId: string }) => receiveOnAccountLogic( + walletState, { manifest, accounts, tracking }, accountId, (account, parentAccount, accountAddress) => @@ -215,7 +223,7 @@ export const PlatformAPIWebview = forwardRef( }); }), ), - [manifest, accounts, navigation, tracking], + [walletState, manifest, accounts, navigation, tracking], ); const signTransaction = useCallback( diff --git a/apps/ledger-live-mobile/src/components/Web3AppWebview/helpers.ts b/apps/ledger-live-mobile/src/components/Web3AppWebview/helpers.ts index df72799d6cd7..8518a8d052e1 100644 --- a/apps/ledger-live-mobile/src/components/Web3AppWebview/helpers.ts +++ b/apps/ledger-live-mobile/src/components/Web3AppWebview/helpers.ts @@ -34,6 +34,7 @@ import getOrCreateUser from "../../user"; import * as bridge from "../../../e2e/bridge/client"; import Config from "react-native-config"; import { currentRouteNameRef } from "../../analytics/screenRefs"; +import { walletSelector } from "~/reducers/wallet"; export function useWebView( { @@ -106,11 +107,14 @@ export function useWebView( }; }, [webviewRef]); + const walletState = useSelector(walletSelector); + const { onMessage: onMessageRaw, onLoadError, server, } = useWalletAPIServer({ + walletState, manifest: manifest as AppManifest, accounts, tracking, diff --git a/apps/ledger-live-mobile/src/components/Web3AppWebview/liveSDKLogic.test.ts b/apps/ledger-live-mobile/src/components/Web3AppWebview/liveSDKLogic.test.ts index 26b99364ac3b..9cf6e5b7d6e0 100644 --- a/apps/ledger-live-mobile/src/components/Web3AppWebview/liveSDKLogic.test.ts +++ b/apps/ledger-live-mobile/src/components/Web3AppWebview/liveSDKLogic.test.ts @@ -102,8 +102,6 @@ const createAccount = (id: string, crypto: CryptoCurrency = defaultEthCryptoFami freshAddress: "0x01", freshAddressPath: "44'/60'/0'/0/0", freshAddresses: [], - name: "Ethereum 1", - starred: false, used: false, balance: new BigNumber("51281813126095913"), spendableBalance: new BigNumber("51281813126095913"), @@ -148,7 +146,6 @@ function createTokenAccount(id = "32", parentId = "whatever"): TokenAccount { operationsCount: 0, operations: [], pendingOperations: [], - starred: false, balanceHistoryCache: { WEEK: { latestDate: null, balances: [] }, HOUR: { latestDate: null, balances: [] }, diff --git a/apps/ledger-live-mobile/src/components/WebPlatformPlayer/BottomBar.tsx b/apps/ledger-live-mobile/src/components/WebPlatformPlayer/BottomBar.tsx index 95eaf134cab3..28b421601bf9 100644 --- a/apps/ledger-live-mobile/src/components/WebPlatformPlayer/BottomBar.tsx +++ b/apps/ledger-live-mobile/src/components/WebPlatformPlayer/BottomBar.tsx @@ -9,9 +9,9 @@ import { safeGetRefValue, CurrentAccountHistDB } from "@ledgerhq/live-common/wal import { WebviewAPI, WebviewState } from "../Web3AppWebview/types"; import Button from "../Button"; import { Trans } from "react-i18next"; -import { getAccountName } from "@ledgerhq/live-common/account/index"; import CircleCurrencyIcon from "../CircleCurrencyIcon"; import { useSelectAccount } from "../Web3AppWebview/helpers"; +import { useMaybeAccountName } from "~/reducers/wallet"; type BottomBarProps = { manifest: AppManifest; @@ -71,6 +71,8 @@ export function BottomBar({ const { onSelectAccount } = useSelectAccount({ manifest, currentAccountHistDb }); + const currentAccountName = useMaybeAccountName(currentAccount); + return ( @@ -106,7 +108,7 @@ export function BottomBar({ } /> - {getAccountName(currentAccount)} + {currentAccountName} )} diff --git a/apps/ledger-live-mobile/src/context/LedgerStore.tsx b/apps/ledger-live-mobile/src/context/LedgerStore.tsx index 2ee58d99bfc7..a075b56685d0 100644 --- a/apps/ledger-live-mobile/src/context/LedgerStore.tsx +++ b/apps/ledger-live-mobile/src/context/LedgerStore.tsx @@ -13,7 +13,7 @@ import { getProtect, } from "../db"; import { importSettings, setSupportedCounterValues } from "~/actions/settings"; -import { importStore as importAccounts } from "~/actions/accounts"; +import { importStore as importAccountsRaw } from "~/actions/accounts"; import { importBle } from "~/actions/ble"; import { updateProtectData, updateProtectStatus } from "~/actions/protect"; import { INITIAL_STATE as settingsState } from "~/reducers/settings"; @@ -99,7 +99,7 @@ export default class LedgerStoreProvider extends Component< this.props.store.dispatch(importSettings(settingsData)); const accountsData = await getAccounts(); - this.props.store.dispatch(importAccounts(accountsData)); + this.props.store.dispatch(importAccountsRaw(accountsData)); const postOnboardingState = await getPostOnboardingState(); if (postOnboardingState) { diff --git a/apps/ledger-live-mobile/src/families/cardano/Delegations/index.tsx b/apps/ledger-live-mobile/src/families/cardano/Delegations/index.tsx index ddfd26e09e2e..aeea5258f198 100644 --- a/apps/ledger-live-mobile/src/families/cardano/Delegations/index.tsx +++ b/apps/ledger-live-mobile/src/families/cardano/Delegations/index.tsx @@ -29,6 +29,7 @@ import UndelegateIcon from "~/icons/Undelegate"; import DelegationRow from "./Row"; import PoolImage from "../shared/PoolImage"; import CurrencyUnitValue from "~/components/CurrencyUnitValue"; +import { useAccountName } from "~/reducers/wallet"; type Props = { account: CardanoAccount; @@ -109,6 +110,8 @@ function Delegations({ account }: Props) { [account.currency], ); + const accountName = useAccountName(account); + const data = useMemo(() => { const d = delegation; @@ -154,7 +157,7 @@ function Delegations({ account }: Props) { style={[styles.valueText]} color="live" > - {account.name}{" "} + {accountName}{" "} ), }, @@ -188,7 +191,7 @@ function Delegations({ account }: Props) { : []), ] : []; - }, [delegation, t, account, onOpenExplorer, unit]); + }, [delegation, t, accountName, onOpenExplorer, unit]); const actions = useMemo(() => { return [ diff --git a/apps/ledger-live-mobile/src/families/celo/Delegations/index.tsx b/apps/ledger-live-mobile/src/families/celo/Delegations/index.tsx index c44cf940062a..37d4d7acbc5b 100644 --- a/apps/ledger-live-mobile/src/families/celo/Delegations/index.tsx +++ b/apps/ledger-live-mobile/src/families/celo/Delegations/index.tsx @@ -37,6 +37,7 @@ import ValidatorImage from "../../cosmos/shared/ValidatorImage"; import { formatAmount } from "./utils"; import CheckCircle from "~/icons/CheckCircle"; import Loader from "~/icons/Loader"; +import { useAccountName } from "~/reducers/wallet"; type Props = { account: Account; @@ -130,6 +131,8 @@ function Delegations({ account }: Props) { [account.currency], ); + const accountName = useAccountName(account); + const data = useMemo(() => { const v = vote; let status = null; @@ -182,7 +185,7 @@ function Delegations({ account }: Props) { style={[styles.valueText]} color="live" > - {account.name}{" "} + {accountName}{" "} ), }, @@ -240,6 +243,7 @@ function Delegations({ account }: Props) { vote, t, getValidatorName, + accountName, account, colors.green, colors.warning, diff --git a/apps/ledger-live-mobile/src/families/cosmos/Delegations/index.tsx b/apps/ledger-live-mobile/src/families/cosmos/Delegations/index.tsx index 1543c799e16f..d2690a290721 100644 --- a/apps/ledger-live-mobile/src/families/cosmos/Delegations/index.tsx +++ b/apps/ledger-live-mobile/src/families/cosmos/Delegations/index.tsx @@ -59,6 +59,7 @@ import AccountBanner from "~/components/AccountBanner"; import { getAccountBannerProps as getCosmosBannerProps } from "../utils"; import ValidatorImage from "../shared/ValidatorImage"; import { useCanShowStake } from "~/screens/Account/hooks/useCanShowStake"; +import { useAccountName } from "~/reducers/wallet"; type Props = { account: CosmosAccount; @@ -236,6 +237,8 @@ function Delegations({ account }: Props) { [account.currency], ); + const accountName = useAccountName(account); + const data = useMemo(() => { const d = delegation || undelegation; @@ -286,7 +289,7 @@ function Delegations({ account }: Props) { style={[styles.valueText]} color="live" > - {account.name}{" "} + {accountName}{" "} ), }, @@ -363,7 +366,7 @@ function Delegations({ account }: Props) { : []), ] : []; - }, [delegation, t, account, onOpenExplorer, undelegation]); + }, [delegation, t, account, accountName, onOpenExplorer, undelegation]); const actions = useMemo(() => { const rewardsDisabled = diff --git a/apps/ledger-live-mobile/src/families/elrond/components/Body/components/Drawer/hooks/useDrawerItems.tsx b/apps/ledger-live-mobile/src/families/elrond/components/Body/components/Drawer/hooks/useDrawerItems.tsx index 70a47e3e58bf..9764343e66c2 100644 --- a/apps/ledger-live-mobile/src/families/elrond/components/Body/components/Drawer/hooks/useDrawerItems.tsx +++ b/apps/ledger-live-mobile/src/families/elrond/components/Body/components/Drawer/hooks/useDrawerItems.tsx @@ -14,6 +14,7 @@ import LText from "~/components/LText"; import Touchable from "~/components/Touchable"; import styles from "../styles"; +import { useAccountName } from "~/reducers/wallet"; /* * Handle the hook declaration. @@ -82,6 +83,8 @@ const useDrawerItems = (data: DrawerPropsType["data"], account: ElrondAccount) = [isDelegation, claimableRewards], ); + const accountName = useAccountName(account); + /* * Compose the array of common items between the two types of drawers (validator name, validator address, account name and item status). */ @@ -128,7 +131,7 @@ const useDrawerItems = (data: DrawerPropsType["data"], account: ElrondAccount) = style={styles.valueText} color="live" > - {account.name} + {accountName} ), }, @@ -147,7 +150,7 @@ const useDrawerItems = (data: DrawerPropsType["data"], account: ElrondAccount) = ), }, ], - [validator, name, t, account.name, type, status, onExplorer], + [validator, name, t, accountName, type, status, onExplorer], ); /* diff --git a/apps/ledger-live-mobile/src/families/hedera/Confirmation.tsx b/apps/ledger-live-mobile/src/families/hedera/Confirmation.tsx index 65f98752e6a0..2bff086b25b5 100644 --- a/apps/ledger-live-mobile/src/families/hedera/Confirmation.tsx +++ b/apps/ledger-live-mobile/src/families/hedera/Confirmation.tsx @@ -6,11 +6,7 @@ import QRCode from "react-native-qrcode-svg"; import { Trans } from "react-i18next"; import ReactNativeModal from "react-native-modal"; import type { Account, TokenAccount } from "@ledgerhq/types-live"; -import { - getMainAccount, - getAccountCurrency, - getAccountName, -} from "@ledgerhq/live-common/account/index"; +import { getMainAccount, getAccountCurrency } from "@ledgerhq/live-common/account/index"; import { CompositeScreenProps, useTheme } from "@react-navigation/native"; import getWindowDimensions from "~/logic/getWindowDimensions"; import { accountScreenSelector } from "~/reducers/accounts"; @@ -38,6 +34,7 @@ import type { StackNavigatorNavigation, StackNavigatorProps, } from "~/components/RootNavigator/types/helpers"; +import { useMaybeAccountName } from "~/reducers/wallet"; type ScreenProps = CompositeScreenProps< StackNavigatorProps, @@ -84,6 +81,10 @@ export default function ReceiveConfirmation({ navigation, route }: Props) { navigation.getParent>()?.pop(); } + const accountName = useMaybeAccountName(account); + const mainAccount = account && getMainAccount(account, parentAccount); + const mainAccountName = useMaybeAccountName(mainAccount); + useEffect(() => { if (!allowNavigation) { navigation.setOptions({ @@ -101,14 +102,13 @@ export default function ReceiveConfirmation({ navigation, route }: Props) { gestureEnabled: Platform.OS === "ios", }); }, [allowNavigation, colors, navigation]); - if (!account) return null; + if (!mainAccount || !account) return null; const { width } = getWindowDimensions(); const unsafe = !route.params.device?.deviceId; const QRSize = Math.round(width / 1.8 - 16); - const mainAccount = getMainAccount(account, parentAccount); const address = mainAccount.freshAddress; const currency = getAccountCurrency(account); - const name = mainAccount.name; + const name = mainAccountName; return ( - {getAccountName(account)} + {accountName} diff --git a/apps/ledger-live-mobile/src/families/tezos/DelegationDetailsModal.tsx b/apps/ledger-live-mobile/src/families/tezos/DelegationDetailsModal.tsx index 6dd02d44b65b..39d55c4f0e49 100644 --- a/apps/ledger-live-mobile/src/families/tezos/DelegationDetailsModal.tsx +++ b/apps/ledger-live-mobile/src/families/tezos/DelegationDetailsModal.tsx @@ -14,7 +14,6 @@ import { getMainAccount, getAccountCurrency, getAccountUnit, - getAccountName, } from "@ledgerhq/live-common/account/index"; import { getCurrencyColor } from "@ledgerhq/live-common/currencies/index"; import Icon from "react-native-vector-icons/Feather"; @@ -32,6 +31,7 @@ import { rgba } from "../../colors"; import { NavigatorName, ScreenName } from "~/const"; import BakerImage from "./BakerImage"; import DelegatingContainer from "./DelegatingContainer"; +import { useAccountName } from "~/reducers/wallet"; type Props = { isOpened: boolean; @@ -204,6 +204,7 @@ export default function DelegationDetailsModal({ }); onClose(); }, [navigation, accountId, parentId, onClose]); + const accountName = useAccountName(account); const height = Math.min(getWindowDimensions().height - 400, 280); return ( // TODO use DelegationDrawer component @@ -260,7 +261,7 @@ export default function DelegationDetailsModal({ numberOfLines={1} ellipsizeMode="middle" > - {getAccountName(account)} + {accountName} }> diff --git a/apps/ledger-live-mobile/src/families/tezos/DelegationFlow/Summary.tsx b/apps/ledger-live-mobile/src/families/tezos/DelegationFlow/Summary.tsx index a5b06c536bc8..04fe9587727a 100644 --- a/apps/ledger-live-mobile/src/families/tezos/DelegationFlow/Summary.tsx +++ b/apps/ledger-live-mobile/src/families/tezos/DelegationFlow/Summary.tsx @@ -8,7 +8,6 @@ import Icon from "react-native-vector-icons/Feather"; import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; import { getAccountCurrency, - getAccountName, getAccountUnit, shortAddressPreview, } from "@ledgerhq/live-common/account/index"; @@ -35,6 +34,7 @@ import DelegatingContainer from "../DelegatingContainer"; import BakerImage from "../BakerImage"; import type { StackNavigatorProps } from "~/components/RootNavigator/types/helpers"; import type { TezosDelegationFlowParamList } from "./types"; +import { useAccountName } from "~/reducers/wallet"; type Props = StackNavigatorProps; @@ -192,7 +192,7 @@ export default function DelegationSummary({ navigation, route }: Props) { const bakerName = baker ? baker.name : shortAddressPreview(addr); const currency = getAccountCurrency(account); const color = getCurrencyColor(currency); - const accountName = getAccountName(account); + const accountName = useAccountName(account); // handle any edit screen changes useTransactionChangeFromNavigation(setTransaction); diff --git a/apps/ledger-live-mobile/src/logic/accountModel.ts b/apps/ledger-live-mobile/src/logic/accountModel.ts index 401e2de38c79..35db22b89612 100644 --- a/apps/ledger-live-mobile/src/logic/accountModel.ts +++ b/apps/ledger-live-mobile/src/logic/accountModel.ts @@ -1,7 +1,8 @@ import { createDataModel } from "@ledgerhq/live-common/DataModel"; import type { DataModel } from "@ledgerhq/live-common/DataModel"; -import type { Account, AccountRaw, Operation } from "@ledgerhq/types-live"; +import type { Account, AccountRaw, Operation, AccountUserData } from "@ledgerhq/types-live"; import { fromAccountRaw, toAccountRaw } from "@ledgerhq/live-common/account/index"; +import { accountRawToAccountUserData } from "@ledgerhq/live-wallet/store"; /** * @memberof models/account @@ -10,14 +11,20 @@ export const opRetentionStategy = (maxDaysOld: number, keepFirst: number) => (op: Operation, index: number): boolean => index < keepFirst || Date.now() - op.date.valueOf() < 1000 * 60 * 60 * 24 * maxDaysOld; + const opRetentionFilter = opRetentionStategy(366, 500); -const accountModel: DataModel = createDataModel({ + +const accountModel: DataModel = createDataModel({ migrations: [], - decode: fromAccountRaw, - encode: (account: Account): AccountRaw => - toAccountRaw({ - ...account, - operations: account.operations.filter(opRetentionFilter), - }), + decode: (raw: AccountRaw) => [fromAccountRaw(raw), accountRawToAccountUserData(raw)], + encode: ([account, userData]: [Account, AccountUserData]): AccountRaw => + toAccountRaw( + { + ...account, + operations: account.operations.filter(opRetentionFilter), + }, + userData, + ), }); + export default accountModel; diff --git a/apps/ledger-live-mobile/src/reducers/accounts.ts b/apps/ledger-live-mobile/src/reducers/accounts.ts index eea1e3c3ceaf..8dff7bccdbf7 100644 --- a/apps/ledger-live-mobile/src/reducers/accounts.ts +++ b/apps/ledger-live-mobile/src/reducers/accounts.ts @@ -2,7 +2,13 @@ import { handleActions, ReducerMap } from "redux-actions"; import type { Action } from "redux-actions"; import { createSelector, createSelectorCreator, defaultMemoize, OutputSelector } from "reselect"; import uniq from "lodash/uniq"; -import { Account, AccountLike, AccountLikeArray, SubAccount } from "@ledgerhq/types-live"; +import { + Account, + AccountLike, + AccountLikeArray, + AccountRaw, + SubAccount, +} from "@ledgerhq/types-live"; import type { CryptoCurrency, CryptoOrTokenCurrency, @@ -10,14 +16,11 @@ import type { } from "@ledgerhq/types-cryptoassets"; import isEqual from "lodash/isEqual"; import { - addAccounts, isAccountEmpty, flattenAccounts, getAccountCurrency, - importAccountsReduce, isUpToDateAccount, clearAccount, - nestedSortAccounts, makeEmptyTokenAccount, isAccountBalanceUnconfirmed, } from "@ledgerhq/live-common/account/index"; @@ -27,11 +30,8 @@ import type { AccountsState, State } from "./types"; import type { AccountsDeleteAccountPayload, AccountsImportAccountsPayload, - AccountsImportStorePayload, AccountsPayload, AccountsReorderPayload, - AccountsReplaceAccountsPayload, - AccountsSetAccountsPayload, AccountsUpdateAccountWithUpdaterPayload, SettingsBlacklistTokenPayload, DangerouslyOverrideStatePayload, @@ -40,13 +40,23 @@ import { AccountsActionTypes } from "../actions/types"; import accountModel from "../logic/accountModel"; import { blacklistedTokenIdsSelector, hiddenNftCollectionsSelector } from "./settings"; import { galleryChainFiltersSelector } from "./nft"; +import { + accountNameWithDefaultSelector, + accountUserDataExportSelector, + HandlersPayloads, + WalletHandlerType, +} from "@ledgerhq/live-wallet/store"; +import { importAccountsReduce } from "@ledgerhq/live-wallet/liveqr/importAccounts"; +import { walletSelector } from "./wallet"; +import { nestedSortAccounts } from "@ledgerhq/live-wallet/ordering"; +import { AddAccountsAction } from "@ledgerhq/live-wallet/addAccounts"; export const INITIAL_STATE: AccountsState = { active: [], }; const handlers: ReducerMap = { - [AccountsActionTypes.ACCOUNTS_IMPORT]: (_, action) => ({ - active: (action as Action).payload, + [WalletHandlerType.INIT_ACCOUNTS]: (_, action) => ({ + active: (action.payload as HandlersPayloads["INIT_ACCOUNTS"]).accounts, }), [AccountsActionTypes.ACCOUNTS_USER_IMPORT]: (s, action) => ({ @@ -56,28 +66,25 @@ const handlers: ReducerMap = { ), }), + [AccountsActionTypes.ADD_ACCOUNT]: (state, action) => { + const account = (action as Action).payload; + if (state.active.some(a => a.id === account.id)) return state; + return { + active: [...state.active, account], + }; + }, + [AccountsActionTypes.REORDER_ACCOUNTS]: (state, action) => ({ active: nestedSortAccounts(state.active, (action as Action).payload), }), - [AccountsActionTypes.ACCOUNTS_ADD]: (s, action) => { - const { - payload: { scannedAccounts, selectedIds, renamings }, - } = action as Action; + [WalletHandlerType.ADD_ACCOUNTS]: (s, action) => { + const { payload } = action as AddAccountsAction; return { - active: addAccounts({ - existingAccounts: s.active, - scannedAccounts, - selectedIds, - renamings, - }), + active: payload.allAccounts, }; }, - [AccountsActionTypes.SET_ACCOUNTS]: (_, action) => ({ - active: (action as Action).payload, - }), - [AccountsActionTypes.UPDATE_ACCOUNT]: (state, action) => { const { payload: { accountId, updater }, @@ -112,9 +119,22 @@ const handlers: ReducerMap = { }; // Selectors -export const exportSelector = (s: State) => ({ - active: s.accounts.active.map(accountModel.encode), -}); + +export function exportSelector(state: State): { + active: { + data: AccountRaw; + version: number; + }[]; +} { + const active = []; + for (const account of state.accounts.active) { + const accountUserData = accountUserDataExportSelector(state.wallet, { account }); + if (accountUserData) { + active.push(accountModel.encode([account, accountUserData])); + } + } + return { active }; +} /** * Warning: use this selector directly in `useSelector` only if you really need @@ -133,9 +153,7 @@ export const accountsSelector = (s: State): Account[] => s.accounts.active; // NB some components don't need to refresh every time an account is updated, usually it's only // when the balance/name/length/starred/swapHistory of accounts changes. const accountHash = (a: AccountLike) => - `${a.type === "Account" ? a.name : ""}-${a.id}${ - a.starred ? "-*" : "" - }-${a.balance.toString()}-swapHistory(${a.swapHistory.length})`; + `${a.id}-${a.balance.toString()}-swapHistory(${a.swapHistory.length})`; // TODO can we share with desktop in common? const shallowAccountsSelectorCreator = createSelectorCreator(defaultMemoize, (a, b): boolean => @@ -171,11 +189,17 @@ export const cryptoCurrenciesSelector = createSelector(accountsSelector, account uniq(accounts.map(a => a.currency)).sort((a, b) => a.name.localeCompare(b.name)), ); export const accountsTuplesByCurrencySelector = createSelector( + walletSelector, accountsSelector, (_: State, currency: CryptoCurrency | TokenCurrency) => currency, (_: State, currency: CryptoCurrency | TokenCurrency, accountIds?: Map) => accountIds, - (accounts, currency, accountIds): { account: AccountLike; subAccount: SubAccount | null }[] => { + ( + wallet, + accounts, + currency, + accountIds, + ): { account: AccountLike; subAccount: SubAccount | null; name: string }[] => { if (currency.type === "TokenCurrency") { return accounts .filter(account => { @@ -186,6 +210,7 @@ export const accountsTuplesByCurrencySelector = createSelector( return account.currency.id === currency.parentCurrency.id; }) .map(account => ({ + name: accountNameWithDefaultSelector(wallet, account), account, subAccount: (account.subAccounts && @@ -203,6 +228,7 @@ export const accountsTuplesByCurrencySelector = createSelector( account.currency.id === currency.id && (accountIds ? accountIds.has(account.id) : true), ) .map(account => ({ + name: accountNameWithDefaultSelector(wallet, account), account, subAccount: null, })); @@ -476,6 +502,6 @@ export const areSomeAccountsBalanceUnconfirmedSelector = createSelector( accounts => accounts.some(isAccountBalanceUnconfirmed), ); -type Payload = AccountsPayload | SettingsBlacklistTokenPayload; +type Payload = AccountsPayload | SettingsBlacklistTokenPayload | AddAccountsAction["payload"]; export default handleActions(handlers, INITIAL_STATE); diff --git a/apps/ledger-live-mobile/src/reducers/index.ts b/apps/ledger-live-mobile/src/reducers/index.ts index 9a978308f190..3b4a0c17064b 100644 --- a/apps/ledger-live-mobile/src/reducers/index.ts +++ b/apps/ledger-live-mobile/src/reducers/index.ts @@ -12,6 +12,7 @@ import dynamicContent from "./dynamicContent"; import walletconnect from "./walletconnect"; import protect from "./protect"; import nft from "./nft"; +import wallet from "./wallet"; import { State } from "./types"; import { ActionsPayload } from "../actions/types"; @@ -31,6 +32,7 @@ const appReducer = combineReducers({ postOnboarding, protect, nft, + wallet, }); // TODO: EXPORT ALL POSSIBLE ACTION TYPES AND USE ACTION diff --git a/apps/ledger-live-mobile/src/reducers/types.ts b/apps/ledger-live-mobile/src/reducers/types.ts index 90a9ec0505c1..e55e218bb81b 100644 --- a/apps/ledger-live-mobile/src/reducers/types.ts +++ b/apps/ledger-live-mobile/src/reducers/types.ts @@ -27,6 +27,7 @@ import { import { ProtectStateNumberEnum } from "../components/ServicesWidget/types"; import { ImageType } from "../components/CustomImage/types"; import { CLSSupportedDeviceModelId } from "@ledgerhq/live-common/device/use-cases/isCustomLockScreenSupported"; +import { WalletState } from "@ledgerhq/live-wallet/store"; // === ACCOUNT STATE === @@ -349,4 +350,5 @@ export type State = { postOnboarding: PostOnboardingState; protect: ProtectState; nft: NftState; + wallet: WalletState; }; diff --git a/apps/ledger-live-mobile/src/reducers/wallet.ts b/apps/ledger-live-mobile/src/reducers/wallet.ts new file mode 100644 index 000000000000..6acc91477186 --- /dev/null +++ b/apps/ledger-live-mobile/src/reducers/wallet.ts @@ -0,0 +1,39 @@ +import { + HandlersPayloads, + WalletHandlers, + initialState, + WalletState, + handlers, + isStarredAccountSelector, + accountNameWithDefaultSelector, +} from "@ledgerhq/live-wallet/store"; +import { handleActions } from "redux-actions"; +import { State } from "./types"; +import { createSelector } from "reselect"; +import { useSelector } from "react-redux"; +import { AccountLike } from "@ledgerhq/types-live"; + +export const walletSelector = (state: State): WalletState => state.wallet; + +export const accountStarredSelector = createSelector( + walletSelector, + (_: State, { accountId }: { accountId: string }) => accountId, + (wallet, accountId) => isStarredAccountSelector(wallet, { accountId }), +); + +export const useMaybeAccountName = ( + account: AccountLike | null | undefined, +): string | undefined => { + return useSelector((state: State) => + !account ? undefined : accountNameWithDefaultSelector(state.wallet, account), + ); +}; + +export const useAccountName = (account: AccountLike) => { + return useSelector((state: State) => accountNameWithDefaultSelector(state.wallet, account)); +}; + +export default handleActions( + handlers as unknown as WalletHandlers, + initialState, +); diff --git a/apps/ledger-live-mobile/src/screens/Account/AccountHeader.tsx b/apps/ledger-live-mobile/src/screens/Account/AccountHeader.tsx index 2b814724c36a..31a2c199105a 100644 --- a/apps/ledger-live-mobile/src/screens/Account/AccountHeader.tsx +++ b/apps/ledger-live-mobile/src/screens/Account/AccountHeader.tsx @@ -1,21 +1,17 @@ import React from "react"; import { Flex, Text } from "@ledgerhq/native-ui"; import { getCurrencyColor } from "@ledgerhq/live-common/currencies/index"; -import { - getAccountCurrency, - getAccountUnit, - getAccountName, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import { Currency } from "@ledgerhq/types-cryptoassets"; import { AccountLike, Account, BalanceHistoryWithCountervalue } from "@ledgerhq/types-live"; import Animated from "react-native-reanimated"; import { withDiscreetMode } from "~/context/DiscreetModeContext"; - import AccountHeaderRight from "./AccountHeaderRight"; import CurrencyHeaderLayout from "~/components/CurrencyHeaderLayout"; import CurrencyUnitValue from "~/components/CurrencyUnitValue"; import Placeholder from "~/components/Placeholder"; import AccountHeaderLeft from "./AccountHeaderLeft"; +import { useAccountName, useMaybeAccountName } from "~/reducers/wallet"; function AccountHeader({ currentPositionY, @@ -57,7 +53,10 @@ function AccountHeader({ const currency = getAccountCurrency(account); - const isToken = parentAccount && parentAccount.name !== undefined; + const isToken = parentAccount && parentAccount.type === "Account"; + + const accountName = useAccountName(account); + const parentAccountName = useMaybeAccountName(parentAccount); return ( - {getAccountName(account) + (isToken ? ` - ${getAccountName(parentAccount)}` : "")} + {accountName + (isToken ? ` - ${parentAccountName}` : "")} { - render() { - const { navigation, account } = this.props; - return ( - } - desc={} - arrowRight - onPress={() => - navigation.navigate(ScreenName.EditAccountName, { - accountId: account.id, - }) - } - > - - {account.name} - - - ); - } +function AccountNameRow({ navigation, account }: Props) { + const accountName = useAccountName(account); + const onPress = useCallback( + () => navigation.navigate(ScreenName.EditAccountName, { accountId: account.id }), + [navigation, account.id], + ); + return ( + } + desc={} + arrowRight + onPress={onPress} + > + + {accountName} + + + ); } -export default AccountNameRow; +export default React.memo(AccountNameRow); + const styles = StyleSheet.create({ accountName: { flexShrink: 1, diff --git a/apps/ledger-live-mobile/src/screens/AccountSettings/EditAccountName.tsx b/apps/ledger-live-mobile/src/screens/AccountSettings/EditAccountName.tsx index 3d49b1fc089d..f2d626b0bad7 100644 --- a/apps/ledger-live-mobile/src/screens/AccountSettings/EditAccountName.tsx +++ b/apps/ledger-live-mobile/src/screens/AccountSettings/EditAccountName.tsx @@ -8,7 +8,6 @@ import { compose } from "redux"; import { Box } from "@ledgerhq/native-ui"; import { Account } from "@ledgerhq/types-live"; import { accountScreenSelector } from "~/reducers/accounts"; -import { updateAccount } from "~/actions/accounts"; import TextInput from "~/components/TextInput"; import { getFontStyle } from "~/components/LText"; import { Theme, withTheme } from "../../colors"; @@ -18,6 +17,7 @@ import { ScreenName } from "~/const"; import { AddAccountsNavigatorParamList } from "~/components/RootNavigator/types/AddAccountsNavigator"; import { State } from "~/reducers/types"; import { AccountSettingsNavigatorParamList } from "~/components/RootNavigator/types/AccountSettingsNavigator"; +import { accountNameWithDefaultSelector, setAccountName } from "@ledgerhq/live-wallet/store"; export const MAX_ACCOUNT_NAME_LENGHT = 50; @@ -26,16 +26,20 @@ type NavigationProps = | StackNavigatorProps; type Props = { - updateAccount: typeof updateAccount; + setAccountName: typeof setAccountName; colors: Theme["colors"]; account: Account; + accountName: string; } & NavigationProps; -const mapStateToProps = (state: State, { route }: NavigationProps) => - accountScreenSelector(route)(state); +const mapStateToProps = (state: State, { route }: NavigationProps) => { + const props = accountScreenSelector(route)(state); + const accountName = props.account && accountNameWithDefaultSelector(state.wallet, props.account); + return { ...props, accountName }; +}; const mapDispatchToProps = { - updateAccount, + setAccountName, }; class EditAccountName extends PureComponent< @@ -53,7 +57,7 @@ class EditAccountName extends PureComponent< }; onNameEndEditing = () => { - const { updateAccount, account, navigation } = this.props; + const { setAccountName, account, navigation } = this.props; const { accountName } = this.state; const { onAccountNameChange, account: accountFromAdd } = this.props.route.params || {}; @@ -64,21 +68,15 @@ class EditAccountName extends PureComponent< if (isImportingAccounts) { onAccountNameChange && onAccountNameChange(cleanAccountName, accountFromAdd); } else { - updateAccount({ - ...account, - name: cleanAccountName, - }); + setAccountName(account.id, cleanAccountName); } navigation.goBack(); } }; render() { - const { account, colors } = this.props; + const { colors, accountName: storeAccountName } = this.props; const { accountName } = this.state; - const { account: accountFromAdd } = this.props.route.params || {}; - - const initialAccountName = account ? account.name : accountFromAdd?.name; return ( @@ -86,7 +84,7 @@ class EditAccountName extends PureComponent< this.setState({ accountName })} diff --git a/apps/ledger-live-mobile/src/screens/Accounts/AccountRow.tsx b/apps/ledger-live-mobile/src/screens/Accounts/AccountRow.tsx index c6a75bf38942..25ed8e070230 100644 --- a/apps/ledger-live-mobile/src/screens/Accounts/AccountRow.tsx +++ b/apps/ledger-live-mobile/src/screens/Accounts/AccountRow.tsx @@ -1,10 +1,6 @@ import React, { useCallback } from "react"; import useEnv from "@ledgerhq/live-common/hooks/useEnv"; -import { - getAccountCurrency, - getAccountName, - getAccountUnit, -} from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/live-common/account/index"; import { TokenAccount, AccountLike, DerivationMode } from "@ledgerhq/types-live"; import { getTagDerivationMode } from "@ledgerhq/coin-framework/derivation"; import { useSelector } from "react-redux"; @@ -17,6 +13,7 @@ import { parentAccountSelector } from "~/reducers/accounts"; import { track } from "~/analytics"; import { useNavigation } from "@react-navigation/native"; import { State } from "~/reducers/types"; +import { useAccountName, useMaybeAccountName } from "~/reducers/wallet"; type Props = { account: AccountLike; @@ -47,7 +44,8 @@ const AccountRow = ({ const currency = getAccountCurrency(account); const parentAccount = useSelector((state: State) => parentAccountSelector(state, { account })); - const name = getAccountName(account); + const name = useAccountName(account); + const parentName = useMaybeAccountName(parentAccount); const unit = getAccountUnit(account); const tag = @@ -116,7 +114,7 @@ const AccountRow = ({ topLink={topLink} bottomLink={bottomLink} hideDelta={hideDelta} - parentAccountName={parentAccount && getAccountName(parentAccount)} + parentAccountName={parentName} isLast={isLast} /> ); diff --git a/apps/ledger-live-mobile/src/screens/AddAccounts/03-Accounts.tsx b/apps/ledger-live-mobile/src/screens/AddAccounts/03-Accounts.tsx index d137eb562f67..567d7e6efd10 100644 --- a/apps/ledger-live-mobile/src/screens/AddAccounts/03-Accounts.tsx +++ b/apps/ledger-live-mobile/src/screens/AddAccounts/03-Accounts.tsx @@ -2,10 +2,11 @@ import React, { useEffect, useCallback, useState, useRef, memo, useMemo } from " import { StyleSheet, View, Linking, SafeAreaView } from "react-native"; import { concat, from, Subscription } from "rxjs"; import { ignoreElements } from "rxjs/operators"; -import { connect } from "react-redux"; +import { connect, useDispatch } from "react-redux"; import { compose } from "redux"; -import { isAccountEmpty, groupAddAccounts } from "@ledgerhq/live-common/account/index"; -import type { AddAccountSupportLink } from "@ledgerhq/live-common/account/index"; +import { isAccountEmpty } from "@ledgerhq/live-common/account/index"; +import type { AddAccountSupportLink } from "@ledgerhq/live-wallet/addAccounts"; +import { addAccountsAction } from "@ledgerhq/live-wallet/addAccounts"; import { createStructuredSelector } from "reselect"; import uniq from "lodash/uniq"; import { Trans } from "react-i18next"; @@ -14,7 +15,6 @@ import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; import { getCurrencyBridge } from "@ledgerhq/live-common/bridge/index"; import { isTokenCurrency } from "@ledgerhq/live-common/currencies/index"; import { useTheme } from "@react-navigation/native"; -import { replaceAccounts } from "~/actions/accounts"; import { accountsSelector } from "~/reducers/accounts"; import logger from "../../logger"; import { Theme, withTheme } from "../../colors"; @@ -48,6 +48,9 @@ import { import { AddAccountsNavigatorParamList } from "~/components/RootNavigator/types/AddAccountsNavigator"; import { BaseNavigatorStackParamList } from "~/components/RootNavigator/types/BaseNavigator"; import Config from "react-native-config"; +import { groupAddAccounts } from "@ledgerhq/live-wallet/addAccounts"; +import { useMaybeAccountName } from "~/reducers/wallet"; +import { setAccountName } from "@ledgerhq/live-wallet/store"; const SectionAccounts = ({ defaultSelected, @@ -67,15 +70,12 @@ type NavigationProps = BaseComposite< StackNavigatorProps >; type Props = { - replaceAccounts: (_: { - scannedAccounts: Account[]; - selectedIds: string[]; - renamings: Record; - }) => void; + addAccountsAction: typeof addAccountsAction; existingAccounts: Account[]; blacklistedTokenIds?: string[]; colors: Theme["colors"]; } & NavigationProps; + const mapStateToProps = createStructuredSelector< State, { existingAccounts: Account[]; blacklistedTokenIds: string[] } @@ -83,14 +83,15 @@ const mapStateToProps = createStructuredSelector< existingAccounts: accountsSelector, blacklistedTokenIds: blacklistedTokenIdsSelector, }); + const mapDispatchToProps = { - replaceAccounts, + addAccountsAction, }; function AddAccountsAccounts({ navigation, route, - replaceAccounts, + addAccountsAction, existingAccounts, blacklistedTokenIds, }: Props) { @@ -227,7 +228,8 @@ function AddAccountsAccounts({ [selectedIds], ); const importAccount = useCallback(() => { - replaceAccounts({ + addAccountsAction({ + existingAccounts, scannedAccounts, selectedIds, renamings: {}, // renaming was done in scannedAccounts directly.. (see if we want later to change this paradigm) @@ -248,7 +250,17 @@ function AddAccountsAccounts({ currency, }); } - }, [currency, inline, navigation, replaceAccounts, route.params, scannedAccounts, selectedIds]); + }, [ + currency, + inline, + navigation, + addAccountsAction, + existingAccounts, + route.params, + scannedAccounts, + selectedIds, + ]); + const onCancel = useCallback(() => { setError(null); setCancelled(true); @@ -259,15 +271,14 @@ function AddAccountsAccounts({ } }, [cancelled, navigation]); const viewAllCreatedAccounts = useCallback(() => setShowAllCreatedAccounts(true), []); + + const dispatch = useDispatch(); + const onAccountNameChange = useCallback( (name: string, changedAccount: Account) => { - setScannedAccounts( - scannedAccounts.map(account => - account.id === changedAccount.id ? { ...account, name } : account, - ), - ); + dispatch(setAccountName(changedAccount.id, name)); }, - [scannedAccounts], + [dispatch], ); const { sections, alreadyEmptyAccount } = useMemo( () => @@ -285,6 +296,7 @@ function AddAccountsAccounts({ preferredNewAccountScheme, ], ); + const alreadyEmptyAccountName = useMaybeAccountName(alreadyEmptyAccount); const cantCreateAccount = !sections.some(s => s.id === "creatable"); const noImportableAccounts = !sections.some( s => s.id === "importable" || s.id === "creatable" || s.id === "migrate", @@ -298,7 +310,7 @@ function AddAccountsAccounts({ {"PLACEHOLDER-1"} - {alreadyEmptyAccount.name} + {alreadyEmptyAccountName} {"PLACEHOLDER-2"} diff --git a/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResult.tsx b/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResult.tsx index 710abdcd9272..1ac857341967 100644 --- a/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResult.tsx +++ b/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResult.tsx @@ -7,18 +7,12 @@ import groupBy from "lodash/groupBy"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { Account } from "@ledgerhq/types-live"; -import { - ImportItem, - importAccountsMakeItems, - syncNewAccountsToImport, - ImportAccountsReduceInput, -} from "@ledgerhq/live-common/account/index"; import { Trans } from "react-i18next"; import { compose } from "redux"; import { Flex } from "@ledgerhq/native-ui"; import { importDesktopSettings } from "~/actions/settings"; -import { importAccounts } from "~/actions/accounts"; +import { importAccountsLiveQR } from "~/actions/accounts"; import { accountsSelector } from "~/reducers/accounts"; import { TrackScreen } from "~/analytics"; import { NavigatorName, ScreenName } from "~/const"; @@ -39,6 +33,14 @@ import type { } from "~/components/RootNavigator/types/helpers"; import { SettingsImportDesktopPayload } from "~/actions/types"; import { NavigationHeaderBackImage } from "~/components/NavigationHeaderBackButton"; +import { + ImportAccountsReduceInput, + ImportItem, + importAccountsMakeItems, + syncNewAccountsToImport, +} from "@ledgerhq/live-wallet/liveqr/importAccounts"; +import { getAccountBridge } from "@ledgerhq/live-common/bridge/index"; +import { setAccountNames } from "@ledgerhq/live-wallet/store"; type NavigationProps = BaseComposite< StackNavigatorProps @@ -47,13 +49,15 @@ type NavigationProps = BaseComposite< type ConnectProps = { backlistedTokenIds: string[]; accounts: Account[]; - importAccounts: (_: ImportAccountsReduceInput) => void; + importAccountsLiveQR: (_: ImportAccountsReduceInput) => void; + setAccountNames: typeof setAccountNames; importDesktopSettings: typeof importDesktopSettings; }; type Props = ConnectProps & NavigationProps; type State = { + accountNames: Map; selectedAccounts: string[]; items: ImportItem[]; importing: boolean; @@ -81,6 +85,7 @@ export function BackButton() { class DisplayResult extends Component { state = { + accountNames: new Map(), selectedAccounts: [], items: [] as ImportItem[], importSettings: true, @@ -99,7 +104,7 @@ class DisplayResult extends Component { }; static getDerivedStateFromProps(nextProps: Props, prevState: State) { - const items = importAccountsMakeItems({ + const result = importAccountsMakeItems({ result: nextProps.route.params?.result, accounts: nextProps.accounts, items: prevState.items, @@ -107,7 +112,7 @@ class DisplayResult extends Component { let selectedAccounts = prevState.selectedAccounts; if (prevState.items.length === 0) { // select all by default - selectedAccounts = items.reduce((acc, cur) => { + selectedAccounts = result.items.reduce((acc, cur) => { if (cur.mode !== "id" && cur.mode !== "unsupported") { const combined = acc.concat(cur.account.id); return combined; @@ -116,12 +121,18 @@ class DisplayResult extends Component { return acc; }, []); } - return { items, selectedAccounts }; + return { items: result.items, accountNames: result.accountNames, selectedAccounts }; } onImport = async () => { - const { importAccounts, importDesktopSettings, navigation, backlistedTokenIds } = this.props; - const { selectedAccounts, items, importSettings, importing } = this.state; + const { + importAccountsLiveQR, + setAccountNames, + importDesktopSettings, + navigation, + backlistedTokenIds, + } = this.props; + const { selectedAccounts, items, importSettings, importing, accountNames } = this.state; if (importing) return; const onFinish = this.props.route.params?.onFinish; this.setState({ importing: true }); @@ -130,10 +141,16 @@ class DisplayResult extends Component { items, selectedAccounts, }, + getAccountBridge, bridgeCache, backlistedTokenIds, ); - importAccounts({ items, selectedAccounts, syncResult }); + importAccountsLiveQR({ + items, + selectedAccounts, + syncResult, + }); + setAccountNames(accountNames); if (importSettings) { importDesktopSettings( this.props.route.params?.result.settings as SettingsImportDesktopPayload, @@ -167,6 +184,7 @@ class DisplayResult extends Component { checked={this.state.selectedAccounts.some(s => s === account.id)} onSwitch={this.onSwitchResultItem} importing={this.state.importing} + accountNames={this.state.accountNames} /> ); @@ -258,8 +276,9 @@ export default compose( backlistedTokenIds: blacklistedTokenIdsSelector, }), { - importAccounts, + importAccountsLiveQR, importDesktopSettings, + setAccountNames, }, ), )(DisplayResult); diff --git a/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResultItem.tsx b/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResultItem.tsx index 1f8367bdc4d8..baf18e65e8f8 100644 --- a/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResultItem.tsx +++ b/apps/ledger-live-mobile/src/screens/ImportAccounts/DisplayResultItem.tsx @@ -1,4 +1,4 @@ -import { ImportItem } from "@ledgerhq/live-common/account/importAccounts"; +import { ImportItem } from "@ledgerhq/live-wallet/liveqr/importAccounts"; import { Flex, InfiniteLoader } from "@ledgerhq/native-ui"; import { Account } from "@ledgerhq/types-live"; import React from "react"; @@ -26,9 +26,17 @@ type Props = { checked: boolean; importing: boolean; onSwitch: (checked: boolean, account: Account) => void; + accountNames: Map; }; -const DisplayResultItem = ({ account, mode, checked, importing, onSwitch }: Props) => { +const DisplayResultItem = ({ + account, + mode, + checked, + importing, + onSwitch, + accountNames, +}: Props) => { const handleSwitch = () => { track(checked ? "AccountSwitchOff" : "AccountSwitchOn"); onSwitch(!checked, account); @@ -42,7 +50,11 @@ const DisplayResultItem = ({ account, mode, checked, importing, onSwitch }: Prop style={[styles.root, { opacity: selectable ? 1 : 0.5 }]} > - + {!selectable ? null : ( diff --git a/apps/ledger-live-mobile/src/screens/ImportAccounts/Scan.tsx b/apps/ledger-live-mobile/src/screens/ImportAccounts/Scan.tsx index 18d30ca78307..cd5359f8f3ce 100644 --- a/apps/ledger-live-mobile/src/screens/ImportAccounts/Scan.tsx +++ b/apps/ledger-live-mobile/src/screens/ImportAccounts/Scan.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from "react"; import { StyleSheet, View } from "react-native"; import { parseFramesReducer, framesToData, areFramesComplete, progressOfFrames } from "qrloop"; -import { Result as ImportAccountsResult, decode } from "@ledgerhq/live-common/cross"; +import { Result as ImportAccountsResult, decode } from "@ledgerhq/live-wallet/liveqr/cross"; import { TrackScreen } from "~/analytics"; import { ScreenName } from "~/const"; import Scanner from "~/components/Scanner"; diff --git a/apps/ledger-live-mobile/src/screens/OperationDetails/Content.tsx b/apps/ledger-live-mobile/src/screens/OperationDetails/Content.tsx index a920251fe46f..0eee141dc415 100644 --- a/apps/ledger-live-mobile/src/screens/OperationDetails/Content.tsx +++ b/apps/ledger-live-mobile/src/screens/OperationDetails/Content.tsx @@ -5,12 +5,7 @@ import { useSelector } from "react-redux"; import { Trans, useTranslation } from "react-i18next"; import { useNavigation, useTheme } from "@react-navigation/native"; import type { Account, Operation, AccountLike, NFTMetadataResponse } from "@ledgerhq/types-live"; -import { - getAccountUnit, - getAccountName, - getFeesCurrency, - getFeesUnit, -} from "@ledgerhq/live-common/account/index"; +import { getAccountUnit, getFeesCurrency, getFeesUnit } from "@ledgerhq/live-common/account/index"; import { getOperationAmountNumber, isConfirmedOperation, @@ -47,6 +42,7 @@ import type { StackNavigatorNavigation, } from "~/components/RootNavigator/types/helpers"; import type { BaseNavigatorStackParamList } from "~/components/RootNavigator/types/BaseNavigator"; +import { useAccountName } from "~/reducers/wallet"; type HelpLinkProps = { event: string; @@ -114,6 +110,7 @@ export default function Content({ ); const isToken = currency.type === "TokenCurrency"; + const accountName = useAccountName(account); const unit = getAccountUnit(account); const feeCurrency = getFeesCurrency(mainAccount); const feeUnit = getFeesUnit(feeCurrency); @@ -338,7 +335,7 @@ export default function Content({ {!disableAllLinks ? (
diff --git a/apps/ledger-live-mobile/src/screens/PTX/BuyAndSell/index.tsx b/apps/ledger-live-mobile/src/screens/PTX/BuyAndSell/index.tsx index 9dc99f195c66..d5056e36be77 100644 --- a/apps/ledger-live-mobile/src/screens/PTX/BuyAndSell/index.tsx +++ b/apps/ledger-live-mobile/src/screens/PTX/BuyAndSell/index.tsx @@ -19,9 +19,9 @@ import { ExchangeNavigatorParamList } from "~/components/RootNavigator/types/Exc import { StackNavigatorProps } from "~/components/RootNavigator/types/helpers"; import { ScreenName } from "~/const"; import { accountsSelector } from "~/reducers/accounts"; -import { WALLET_API_VERSION } from "@ledgerhq/live-common/wallet-api/constants"; import { useInternalAppIds } from "@ledgerhq/live-common/hooks/useInternalAppIds"; -import { INTERNAL_APP_IDS } from "@ledgerhq/live-common/wallet-api/constants"; +import { INTERNAL_APP_IDS, WALLET_API_VERSION } from "@ledgerhq/live-common/wallet-api/constants"; +import { walletSelector } from "~/reducers/wallet"; export type Props = StackNavigatorProps< ExchangeNavigatorParamList, @@ -43,6 +43,7 @@ export function BuyAndSellScreen({ route }: Props) { const { locale } = useLocale(); const manifest = localManifest || remoteManifest; const internalAppIds = useInternalAppIds() || INTERNAL_APP_IDS; + const walletState = useSelector(walletSelector); /** * Pass correct account ID @@ -60,11 +61,11 @@ export function BuyAndSellScreen({ route }: Props) { const parentAccount = isTokenAccount(account) ? getParentAccount(account, accounts) : undefined; - params.account = accountToWalletAPIAccount(account, parentAccount).id; + params.account = accountToWalletAPIAccount(walletState, account, parentAccount).id; } } return params; - }, [accounts, manifest?.apiVersion, params]); + }, [walletState, accounts, manifest?.apiVersion, params]); /** * Given the user is on an internal app (webview url is owned by LL) we must reset the session diff --git a/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-AddAccount.tsx b/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-AddAccount.tsx index 52764af43b13..b04f0192d166 100644 --- a/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-AddAccount.tsx +++ b/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-AddAccount.tsx @@ -3,7 +3,7 @@ import { FlatList } from "react-native"; import { concat, from } from "rxjs"; import type { Subscription } from "rxjs"; import { ignoreElements } from "rxjs/operators"; -import { useDispatch } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; import { useTranslation } from "react-i18next"; import type { Account, TokenAccount } from "@ledgerhq/types-live"; import { Currency } from "@ledgerhq/types-cryptoassets"; @@ -11,7 +11,6 @@ import { getCurrencyBridge } from "@ledgerhq/live-common/bridge/index"; import { Flex, Text } from "@ledgerhq/native-ui"; import { makeEmptyTokenAccount } from "@ledgerhq/live-common/account/index"; -import { replaceAccounts } from "~/actions/accounts"; import logger from "../../logger"; import { ScreenName } from "~/const"; import { TrackScreen } from "~/analytics"; @@ -33,6 +32,10 @@ import Animation from "~/components/Animation"; import lottie from "./assets/lottie.json"; import GradientContainer from "~/components/GradientContainer"; import { useTheme } from "styled-components/native"; +import { walletSelector } from "~/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; +import { addAccountsAction } from "@ledgerhq/live-wallet/addAccounts"; +import { accountsSelector } from "~/reducers/accounts"; type Props = StackNavigatorProps; @@ -47,6 +50,7 @@ function AddAccountsAccounts({ navigation, route }: Props) { const [cancelled, setCancelled] = useState(false); const [selectedAccount, setSelectedAccount] = useState(null); + const existingAccounts = useSelector(accountsSelector); const scanSubscription = useRef(); const { @@ -65,7 +69,8 @@ function AddAccountsAccounts({ navigation, route }: Props) { if (!selectedAccount) { setSelectedAccount(account.id); dispatch( - replaceAccounts({ + addAccountsAction({ + existingAccounts, scannedAccounts, selectedIds: [account.id], renamings: {}, @@ -87,7 +92,7 @@ function AddAccountsAccounts({ navigation, route }: Props) { } } }, - [dispatch, navigation, route.params, scannedAccounts, selectedAccount], + [dispatch, navigation, route.params, scannedAccounts, existingAccounts, selectedAccount], ); useEffect(() => { @@ -177,6 +182,8 @@ function AddAccountsAccounts({ navigation, route }: Props) { } }, [cancelled, navigation]); + const walletState = useSelector(walletSelector); + const renderItem = useCallback( ({ item: account }: { item: Account }) => { const acc = @@ -191,14 +198,16 @@ function AddAccountsAccounts({ navigation, route }: Props) { onPress={() => selectAccount(account)} AccountSubTitle={ currency.type === "TokenCurrency" ? ( - {account.name} + + {accountNameWithDefaultSelector(walletState, account)} + ) : null } /> ) : null; }, - [currency.id, currency.type, selectAccount], + [currency.id, currency.type, selectAccount, walletState], ); const renderHeader = useCallback( diff --git a/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-SelectAccount.tsx b/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-SelectAccount.tsx index 94abb4be3612..6af84ef3d585 100644 --- a/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-SelectAccount.tsx +++ b/apps/ledger-live-mobile/src/screens/ReceiveFunds/02-SelectAccount.tsx @@ -17,6 +17,8 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { AccountsNavigatorParamList } from "~/components/RootNavigator/types/AccountsNavigator"; import { useNavigation } from "@react-navigation/core"; import { withDiscreetMode } from "~/context/DiscreetModeContext"; +import { walletSelector } from "~/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; type SubAccountEnhanced = SubAccount & { parentAccount: Account; @@ -96,6 +98,8 @@ function ReceiveSelectAccount({ [currency, navigation, route.params], ); + const walletState = useSelector(walletSelector); + const renderItem = useCallback( ({ item }: ListRenderItemInfo) => ( @@ -105,12 +109,11 @@ function ReceiveSelectAccount({ (item as SubAccountEnhanced).parentAccount || (item as TokenAccount).token?.parentCurrency ? ( - { - ( - ((item as SubAccountEnhanced).parentAccount as Account) || - (item as TokenAccount).token.parentCurrency - ).name - } + {accountNameWithDefaultSelector( + walletState, + ((item as SubAccountEnhanced).parentAccount as Account) || + (item as TokenAccount).token.parentCurrency, + )} ) : null } @@ -118,7 +121,7 @@ function ReceiveSelectAccount({ /> ), - [selectAccount], + [walletState, selectAccount], ); const createNewAccount = useCallback(() => { diff --git a/apps/ledger-live-mobile/src/screens/ReceiveFunds/03-Confirmation.tsx b/apps/ledger-live-mobile/src/screens/ReceiveFunds/03-Confirmation.tsx index ff710928574f..3fa180e43b5f 100644 --- a/apps/ledger-live-mobile/src/screens/ReceiveFunds/03-Confirmation.tsx +++ b/apps/ledger-live-mobile/src/screens/ReceiveFunds/03-Confirmation.tsx @@ -22,7 +22,7 @@ import { accountScreenSelector } from "~/reducers/accounts"; import CurrencyIcon from "~/components/CurrencyIcon"; import NavigationScrollView from "~/components/NavigationScrollView"; import ReceiveSecurityModal from "./ReceiveSecurityModal"; -import { replaceAccounts } from "~/actions/accounts"; +import { addOneAccount } from "~/actions/accounts"; import { ScreenName } from "~/const"; import { track, TrackScreen } from "~/analytics"; import byFamily from "../../generated/Confirmation"; @@ -39,6 +39,7 @@ import { hasClosedWithdrawBannerSelector } from "~/reducers/settings"; import { setCloseWithdrawBanner } from "~/actions/settings"; import * as Animatable from "react-native-animatable"; import { useCompleteActionCallback } from "~/logic/postOnboarding/useCompleteAction"; +import { useMaybeAccountName } from "~/reducers/wallet"; const AnimatedView = Animatable.View; @@ -139,14 +140,7 @@ function ReceiveConfirmationInner({ navigation, route, account, parentAccount }: ); newMainAccount.subAccounts = [...(newMainAccount.subAccounts || []), emptyTokenAccount]; - // @TODO create a new action for adding a single account at a time instead of replacing - dispatch( - replaceAccounts({ - scannedAccounts: [newMainAccount as Account], - selectedIds: [(newMainAccount as Account).id], - renamings: {}, - }), - ); + dispatch(addOneAccount(newMainAccount as Account)); setHasAddedTokenAccount(true); } } @@ -161,7 +155,6 @@ function ReceiveConfirmationInner({ navigation, route, account, parentAccount }: useEffect(() => { navigation.setOptions({ - //headerTitle: getAccountName(account as AccountLike), headerTitle: () => ( ), @@ -230,6 +223,8 @@ function ReceiveConfirmationInner({ navigation, route, account, parentAccount }: [mainAccount?.freshAddress, pushToast, t], ); + const mainAccountName = useMaybeAccountName(mainAccount); + if (!account || !currency || !mainAccount) return null; // check for coin specific UI @@ -289,9 +284,9 @@ function ReceiveConfirmationInner({ navigation, route, account, parentAccount }: fontWeight={"semiBold"} textAlign={"center"} numberOfLines={1} - testID={"receive-account-name-" + mainAccount.name} + testID={"receive-account-name-" + mainAccountName} > - {mainAccount.name} + {mainAccountName} { diff --git a/apps/ledger-live-mobile/src/screens/SendFunds/SummaryFromSection.tsx b/apps/ledger-live-mobile/src/screens/SendFunds/SummaryFromSection.tsx index 8487daec2d60..5f2b78d41af3 100644 --- a/apps/ledger-live-mobile/src/screens/SendFunds/SummaryFromSection.tsx +++ b/apps/ledger-live-mobile/src/screens/SendFunds/SummaryFromSection.tsx @@ -2,13 +2,14 @@ import React, { memo } from "react"; import { View, StyleSheet } from "react-native"; import { useTranslation } from "react-i18next"; import type { Account, AccountLike } from "@ledgerhq/types-live"; -import { getAccountCurrency, getAccountName } from "@ledgerhq/live-common/account/index"; +import { getAccountCurrency } from "@ledgerhq/live-common/account/index"; import { useTheme } from "styled-components/native"; import SummaryRowCustom from "./SummaryRowCustom"; import Circle from "~/components/Circle"; import LText from "~/components/LText"; import CurrencyIcon from "~/components/CurrencyIcon"; import Wallet from "@ledgerhq/icons-ui/native/Wallet"; +import { useAccountName } from "~/reducers/wallet"; type Props = { account: AccountLike; @@ -19,6 +20,7 @@ function SummaryFromSection({ account }: Props) { const { colors } = useTheme(); const { t } = useTranslation(); const currency = getAccountCurrency(account); + const accountName = useAccountName(account); return ( - {getAccountName(account)} + {accountName} } diff --git a/apps/ledger-live-mobile/src/screens/Settings/Debug/Features/ExportAccounts.tsx b/apps/ledger-live-mobile/src/screens/Settings/Debug/Features/ExportAccounts.tsx index 4efc816833f4..d3f4895b9cfd 100644 --- a/apps/ledger-live-mobile/src/screens/Settings/Debug/Features/ExportAccounts.tsx +++ b/apps/ledger-live-mobile/src/screens/Settings/Debug/Features/ExportAccounts.tsx @@ -5,7 +5,7 @@ import QRCode from "react-native-qrcode-svg"; import VersionNumber from "react-native-version-number"; import { Flex, Alert } from "@ledgerhq/native-ui"; import { createStructuredSelector } from "reselect"; -import { encode, Settings } from "@ledgerhq/live-common/cross"; +import { encode, Settings } from "@ledgerhq/live-wallet/liveqr/cross"; import { dataToFrames } from "qrloop"; import { Account } from "@ledgerhq/types-live"; import { accountsSelector } from "~/reducers/accounts"; @@ -13,8 +13,11 @@ import { exportSettingsSelector } from "~/reducers/settings"; import LText from "~/components/LText"; import NavigationScrollView from "~/components/NavigationScrollView"; import { State } from "~/reducers/types"; +import { walletSelector } from "~/reducers/wallet"; +import { WalletState } from "@ledgerhq/live-wallet/store"; export type Props = { + walletState: WalletState; accounts: Account[]; settings: Settings; children?: React.ReactNode; @@ -33,8 +36,9 @@ class ExportAccounts extends PureComponent< timer: NodeJS.Timeout | undefined; componentDidMount() { - const { accounts, settings } = this.props; + const { accounts, settings, walletState } = this.props; const data = encode({ + walletState, accounts, settings, exporterName: "mobile", @@ -100,10 +104,12 @@ export default connect( createStructuredSelector< State, { + walletState: WalletState; accounts: Account[]; settings: Settings; } >({ + walletState: walletSelector, accounts: accountsSelector, settings: exportSettingsSelector, }), diff --git a/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccounts.tsx b/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccounts.tsx index d0bb4c8b628c..346081802a26 100644 --- a/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccounts.tsx +++ b/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccounts.tsx @@ -8,18 +8,22 @@ import SettingsRow from "~/components/SettingsRow"; import accountModel from "~/logic/accountModel"; import { saveAccounts } from "../../../../db"; import { useReboot } from "~/context/Reboot"; +import { + initialState as liveWalletInitialState, + accountUserDataExportSelector, +} from "@ledgerhq/live-wallet/store"; async function injectMockAccountsInDB(count: number) { await saveAccounts({ active: Array(count) .fill(null) - .map(() => - accountModel.encode( - genAccount(String(Math.random()), { - currency: sample(listSupportedCurrencies()), - }), - ), - ), + .map(() => { + const account = genAccount(String(Math.random()), { + currency: sample(listSupportedCurrencies()), + }); + const userData = accountUserDataExportSelector(liveWalletInitialState, { account }); + return accountModel.encode([account, userData]); + }), }); } diff --git a/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsNFTs.tsx b/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsNFTs.tsx index 50ca6984a8a1..76edde201b60 100644 --- a/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsNFTs.tsx +++ b/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsNFTs.tsx @@ -8,6 +8,10 @@ import SettingsRow from "~/components/SettingsRow"; import accountModel from "~/logic/accountModel"; import { saveAccounts } from "../../../../db"; import { useReboot } from "~/context/Reboot"; +import { + initialState as liveWalletInitialState, + accountUserDataExportSelector, +} from "@ledgerhq/live-wallet/store"; const CURRENCIES_FOR_NFT = ["ethereum", "polygon"]; @@ -15,16 +19,16 @@ async function injectMockAccountsInDB(count: number) { await saveAccounts({ active: Array(count) .fill(null) - .map(() => - accountModel.encode( - genAccount(String(Math.random()), { - currency: sample( - listSupportedCurrencies().filter(c => CURRENCIES_FOR_NFT.includes(c.id)), - ), - withNft: true, - }), - ), - ), + .map(() => { + const account = genAccount(String(Math.random()), { + currency: sample( + listSupportedCurrencies().filter(c => CURRENCIES_FOR_NFT.includes(c.id)), + ), + withNft: true, + }); + const userData = accountUserDataExportSelector(liveWalletInitialState, { account }); + return accountModel.encode([account, userData]); + }), }); } diff --git a/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsSelect.tsx b/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsSelect.tsx index d6b94601830f..d83a7799e12e 100644 --- a/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsSelect.tsx +++ b/apps/ledger-live-mobile/src/screens/Settings/Debug/Generators/GenerateMockAccountsSelect.tsx @@ -15,18 +15,22 @@ import CurrencyIcon from "~/components/CurrencyIcon"; import { SettingsNavigatorStackParamList } from "~/components/RootNavigator/types/SettingsNavigator"; import { StackNavigatorNavigation } from "~/components/RootNavigator/types/helpers"; import TextInput from "~/components/TextInput"; +import { + initialState as liveWalletInitialState, + accountUserDataExportSelector, +} from "@ledgerhq/live-wallet/store"; async function injectMockAccountsInDB(currencies: CryptoCurrency[], tokens: string) { const tokenIds = tokens.split(",").map(t => t.toLowerCase().trim()); await saveAccounts({ - active: currencies.map(currency => - accountModel.encode( - genAccount(String(Math.random()), { - currency, - tokenIds, - }), - ), - ), + active: currencies.map(currency => { + const account = genAccount(String(Math.random()), { + currency, + tokenIds, + }); + const userData = accountUserDataExportSelector(liveWalletInitialState, { account }); + return accountModel.encode([account, userData]); + }), }); } diff --git a/apps/ledger-live-mobile/src/screens/SignMessage/01-Summary.tsx b/apps/ledger-live-mobile/src/screens/SignMessage/01-Summary.tsx index 8fdfa3d0743e..ac3dd1694b63 100644 --- a/apps/ledger-live-mobile/src/screens/SignMessage/01-Summary.tsx +++ b/apps/ledger-live-mobile/src/screens/SignMessage/01-Summary.tsx @@ -1,5 +1,5 @@ import { getMessageProperties } from "@ledgerhq/coin-evm/logic"; -import { getAccountName, getMainAccount } from "@ledgerhq/live-common/account/index"; +import { getMainAccount } from "@ledgerhq/live-common/account/index"; import type { MessageProperties } from "@ledgerhq/types-live"; import { useTheme } from "@react-navigation/native"; import invariant from "invariant"; @@ -17,6 +17,7 @@ import { StackNavigatorProps } from "~/components/RootNavigator/types/helpers"; import { ScreenName } from "~/const"; import WalletIcon from "~/icons/Wallet"; import { accountScreenSelector } from "~/reducers/accounts"; +import { useAccountName } from "~/reducers/wallet"; const MessageProperty = memo(({ label, value }: MessageProperties[0]) => { const { colors } = useTheme(); @@ -82,6 +83,7 @@ function SignSummary({ invariant(account, "account not found"); const mainAccount = getMainAccount(account, parentAccount); + const maybeAccountName = useAccountName(mainAccount); const { nextNavigation, message: messageData } = route.params; const navigateToNext = useCallback(() => { @@ -135,7 +137,7 @@ function SignSummary({ - {getAccountName(mainAccount)} + {maybeAccountName} diff --git a/apps/ledger-live-mobile/src/screens/Swap/Form/Summary/index.tsx b/apps/ledger-live-mobile/src/screens/Swap/Form/Summary/index.tsx index 603b98e0be7f..96912b16af92 100644 --- a/apps/ledger-live-mobile/src/screens/Swap/Form/Summary/index.tsx +++ b/apps/ledger-live-mobile/src/screens/Swap/Form/Summary/index.tsx @@ -4,11 +4,7 @@ import { BigNumber } from "bignumber.js"; import { Flex, Icon, Text } from "@ledgerhq/native-ui"; import { getProviderName } from "@ledgerhq/live-common/exchange/swap/utils/index"; import { SwapTransactionType } from "@ledgerhq/live-common/exchange/swap/types"; -import { - getAccountName, - getAccountUnit, - getMainAccount, -} from "@ledgerhq/live-common/account/index"; +import { getAccountUnit, getMainAccount } from "@ledgerhq/live-common/account/index"; import { CompositeScreenProps, useNavigation, useRoute } from "@react-navigation/native"; import { useSelector } from "react-redux"; import { useCalculate } from "@ledgerhq/live-countervalues-react"; @@ -31,6 +27,7 @@ import type { SwapFormNavigatorParamList } from "~/components/RootNavigator/type import { useAnalytics } from "~/analytics"; import { sharedSwapTracking } from "../../utils"; import { EDITABLE_FEE_FAMILIES } from "@ledgerhq/live-common/exchange/swap/const/blockchain"; +import { useMaybeAccountName } from "~/reducers/wallet"; interface Props { provider?: string; @@ -159,6 +156,8 @@ export function Summary({ provider, swapTx: { swap, status, transaction } }: Pro const editableFee = mainFromAccount && EDITABLE_FEE_FAMILIES.includes(mainFromAccount.currency.family); + const toAccountName = useMaybeAccountName(to.account); + if ( !provider || !fromUnit || @@ -219,7 +218,7 @@ export function Summary({ provider, swapTx: { swap, status, transaction } }: Pro {} - {getAccountName(to.account)} + {toAccountName} ) : ( diff --git a/apps/ledger-live-mobile/src/screens/Swap/Form/TxForm/From.tsx b/apps/ledger-live-mobile/src/screens/Swap/Form/TxForm/From.tsx index 3f66014f1db3..de2f25d6e3f4 100644 --- a/apps/ledger-live-mobile/src/screens/Swap/Form/TxForm/From.tsx +++ b/apps/ledger-live-mobile/src/screens/Swap/Form/TxForm/From.tsx @@ -2,11 +2,7 @@ import React, { useCallback, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useNavigation } from "@react-navigation/native"; import { Flex, Text } from "@ledgerhq/native-ui"; -import { - getAccountName, - getAccountSpendableBalance, - getAccountUnit, -} from "@ledgerhq/live-common/account/index"; +import { getAccountSpendableBalance, getAccountUnit } from "@ledgerhq/live-common/account/index"; import { formatCurrencyUnit } from "@ledgerhq/live-common/currencies/index"; import { useFetchCurrencyFrom, @@ -26,6 +22,8 @@ import { sharedSwapTracking } from "../../utils"; import { flattenAccountsSelector } from "~/reducers/accounts"; import { useSelector } from "react-redux"; import { AccountLike } from "@ledgerhq/types-live"; +import { walletSelector } from "~/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; interface Props { provider?: string; @@ -42,6 +40,7 @@ export function From({ swapTx, provider, swapError, swapWarning, isSendMaxLoadin const { data: currenciesFrom } = useFetchCurrencyFrom(); const flattenedAccounts = useSelector(flattenAccountsSelector); const accounts = useSwapableAccounts({ accounts: flattenedAccounts }); + const walletState = useSelector(walletSelector); const getAccountBalance = useCallback( (inputs: { account?: AccountLike; currency?: Currency }) => { @@ -56,13 +55,14 @@ export function From({ swapTx, provider, swapError, swapWarning, isSendMaxLoadin const { name, balance, unit } = useMemo(() => { const { currency, account } = swapTx.swap.from; + const name = account && accountNameWithDefaultSelector(walletState, account); return { account, - name: account && getAccountName(account), + name, balance: getAccountBalance({ account, currency }), unit: account && getAccountUnit(account), }; - }, [swapTx.swap.from, getAccountBalance]); + }, [swapTx.swap.from, walletState, getAccountBalance]); usePickDefaultAccount(accounts, swapTx.swap.from.account, swapTx.setFromAccount); diff --git a/apps/ledger-live-mobile/src/screens/Swap/Form/index.tsx b/apps/ledger-live-mobile/src/screens/Swap/Form/index.tsx index 86dfe56eced4..6f3e1664d2d4 100644 --- a/apps/ledger-live-mobile/src/screens/Swap/Form/index.tsx +++ b/apps/ledger-live-mobile/src/screens/Swap/Form/index.tsx @@ -43,6 +43,7 @@ import type { DetailsSwapParamList } from "../types"; import { getAvailableProviders } from "@ledgerhq/live-common/exchange/swap/index"; import { DEFAULT_SWAP_RATES_LLM_INTERVAL_MS } from "@ledgerhq/live-common/exchange/swap/const/timeout"; import { useSelectedSwapRate } from "./useSelectedSwapRate"; +import { walletSelector } from "~/reducers/wallet"; type Navigation = StackNavigatorProps; @@ -206,6 +207,8 @@ export function SwapForm({ exchangeRate && swapTransaction.swap.to.account; + const walletState = useSelector(walletSelector); + const onSubmit = useCallback(() => { if (!exchangeRate) return; const { provider, providerURL, providerType } = exchangeRate; @@ -239,7 +242,7 @@ export function SwapForm({ const parentAccount = isTokenAccount(account) ? getParentAccount(account, accounts) : undefined; - const walletApiId = accountToWalletAPIAccount(account, parentAccount)?.id; + const walletApiId = accountToWalletAPIAccount(walletState, account, parentAccount)?.id; return walletApiId || accountId; }; @@ -255,6 +258,7 @@ export function SwapForm({ setConfirmed(true); } }, [ + walletState, exchangeRate, track, swapTransaction.transaction, diff --git a/apps/ledger-live-mobile/src/screens/Swap/History/OperationRow.tsx b/apps/ledger-live-mobile/src/screens/Swap/History/OperationRow.tsx index 309d94f32517..dcac770dca6c 100644 --- a/apps/ledger-live-mobile/src/screens/Swap/History/OperationRow.tsx +++ b/apps/ledger-live-mobile/src/screens/Swap/History/OperationRow.tsx @@ -3,13 +3,14 @@ import { TouchableOpacity, StyleSheet, View } from "react-native"; import { useNavigation, useTheme } from "@react-navigation/native"; import { Icon } from "@ledgerhq/native-ui"; import type { MappedSwapOperation } from "@ledgerhq/live-common/exchange/swap/types"; -import { getAccountUnit, getAccountName } from "@ledgerhq/live-common/account/helpers"; +import { getAccountUnit } from "@ledgerhq/live-common/account/helpers"; import LText from "~/components/LText"; import CurrencyUnitValue from "~/components/CurrencyUnitValue"; import { SwapStatusIndicator } from "../SwapStatusIndicator"; import { ScreenName } from "~/const"; import type { SwapNavigatorParamList } from "~/components/RootNavigator/types/SwapNavigator"; import type { StackNavigatorNavigation } from "~/components/RootNavigator/types/helpers"; +import { useAccountName } from "~/reducers/wallet"; const OperationRow = ({ item }: { item: MappedSwapOperation }) => { const { colors } = useTheme(); @@ -27,6 +28,9 @@ const OperationRow = ({ item }: { item: MappedSwapOperation }) => { }); }, [navigation, routeParams, fromAccount, toAccount]); + const fromAccountName = useAccountName(fromAccount); + const toAccountName = useAccountName(toAccount); + return ( { - {getAccountName(fromAccount)} + {fromAccountName} @@ -46,7 +50,7 @@ const OperationRow = ({ item }: { item: MappedSwapOperation }) => { - {getAccountName(toAccount)} + {toAccountName} diff --git a/apps/ledger-live-mobile/src/screens/Swap/SubScreens/OperationDetails.tsx b/apps/ledger-live-mobile/src/screens/Swap/SubScreens/OperationDetails.tsx index 4326fc4d2736..2abcc29ef14d 100644 --- a/apps/ledger-live-mobile/src/screens/Swap/SubScreens/OperationDetails.tsx +++ b/apps/ledger-live-mobile/src/screens/Swap/SubScreens/OperationDetails.tsx @@ -6,11 +6,7 @@ import { useTheme } from "@react-navigation/native"; import Config from "react-native-config"; import { ScrollView, StyleSheet, View, Linking, TouchableOpacity } from "react-native"; import { getDefaultExplorerView, getTransactionExplorer } from "@ledgerhq/live-common/explorers"; -import { - getAccountName, - getAccountUnit, - getAccountCurrency, -} from "@ledgerhq/live-common/account/helpers"; +import { getAccountUnit, getAccountCurrency } from "@ledgerhq/live-common/account/helpers"; import { getProviderName } from "@ledgerhq/live-common/exchange/swap/utils/index"; import { flattenAccountsSelector } from "~/reducers/accounts"; import CurrencyUnitValue from "~/components/CurrencyUnitValue"; @@ -24,6 +20,7 @@ import FormatDate from "~/components/DateFormat/FormatDate"; import { SwapStatusIndicator, getStatusColor } from "../SwapStatusIndicator"; import Footer from "../../OperationDetails/Footer"; import { OperationDetailsParamList } from "../types"; +import { useMaybeAccountName } from "~/reducers/wallet"; export function OperationDetails({ route }: OperationDetailsParamList) { const { swapOperation } = route.params; @@ -61,6 +58,9 @@ export function OperationDetails({ route }: OperationDetailsParamList) { Linking.openURL(urls.swap.providers[provider as keyof typeof urls.swap.providers].main); }, [provider]); + const fromAccountName = useMaybeAccountName(fromAccount); + const toAccountName = useMaybeAccountName(toAccount); + return ( @@ -129,7 +129,7 @@ export function OperationDetails({ route }: OperationDetailsParamList) { {fromCurrency && } {fromAccount && ( - {getAccountName(fromAccount)} + {fromAccountName} )} @@ -151,7 +151,7 @@ export function OperationDetails({ route }: OperationDetailsParamList) { {toCurrency ? : null} {toAccount ? ( - {getAccountName(toAccount)} + {toAccountName} ) : null} diff --git a/apps/ledger-live-mobile/src/screens/Swap/SubScreens/SelectAccount.tsx b/apps/ledger-live-mobile/src/screens/Swap/SubScreens/SelectAccount.tsx index 6834255627ba..0ef984157250 100644 --- a/apps/ledger-live-mobile/src/screens/Swap/SubScreens/SelectAccount.tsx +++ b/apps/ledger-live-mobile/src/screens/Swap/SubScreens/SelectAccount.tsx @@ -19,6 +19,8 @@ import { SelectAccountParamList } from "../types"; import { NavigatorName, ScreenName } from "~/const"; import { accountsSelector } from "~/reducers/accounts"; import { sharedSwapTracking } from "../utils"; +import { walletSelector } from "~/reducers/wallet"; +import { accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; export function SelectAccount({ navigation, route: { params } }: SelectAccountParamList) { const { provider, target, selectableCurrencyIds, selectedCurrency } = params; @@ -50,6 +52,8 @@ export function SelectAccount({ navigation, route: { params } }: SelectAccountPa return filteredAccounts; }, [accounts, selectedCurrency]); + const walletState = useSelector(walletSelector); + const allAccounts = useMemo(() => { const accounts: AccountLike[] = flattenAccounts(enhancedAccounts); @@ -59,22 +63,30 @@ export function SelectAccount({ navigation, route: { params } }: SelectAccountPa const c = getAccountCurrency(a); return c.type === "CryptoCurrency" || c.id === selectedCurrency.id; }) - .map(a => { - const c = getAccountCurrency(a); + .map(account => { + const c = getAccountCurrency(account); return { - ...a, - disabled: - (selectedCurrency.type === "TokenCurrency" && c.type === "CryptoCurrency") || - c.id !== selectedCurrency.id, + name: accountNameWithDefaultSelector(walletState, account), + account: { + ...account, + // FIXME flatten disabled back in the top object + disabled: + (selectedCurrency.type === "TokenCurrency" && c.type === "CryptoCurrency") || + c.id !== selectedCurrency.id, + }, }; }); } return accounts.map(a => ({ - ...a, - disabled: !a.balance.gt(0) || !selectableCurrencyIds.includes(getAccountCurrency(a).id), + name: accountNameWithDefaultSelector(walletState, a), + account: { + ...a, + // FIXME flatten disabled back in the top object + disabled: !a.balance.gt(0) || !selectableCurrencyIds.includes(getAccountCurrency(a).id), + }, })); - }, [target, selectedCurrency, enhancedAccounts, selectableCurrencyIds]); + }, [target, selectedCurrency, enhancedAccounts, selectableCurrencyIds, walletState]); const { t } = useTranslation(); const { colors } = useTheme(); @@ -150,7 +162,10 @@ export function SelectAccount({ navigation, route: { params } }: SelectAccountPa const renderList = useCallback( (items: typeof allAccounts) => { - const formatedList = formatSearchResults(items, accounts); + const formatedList = formatSearchResults( + items.map(a => a.account), + accounts, + ); return ( ( diff --git a/apps/ledger-live-mobile/src/screens/VerifyAccount/SkipDeviceVerification.tsx b/apps/ledger-live-mobile/src/screens/VerifyAccount/SkipDeviceVerification.tsx index 66acdac8dc38..30ffd6d66ab2 100644 --- a/apps/ledger-live-mobile/src/screens/VerifyAccount/SkipDeviceVerification.tsx +++ b/apps/ledger-live-mobile/src/screens/VerifyAccount/SkipDeviceVerification.tsx @@ -8,6 +8,7 @@ import LText from "~/components/LText"; import CurrencyIcon from "~/components/CurrencyIcon"; import Button from "~/components/Button"; import Alert from "~/components/Alert"; +import { useAccountName } from "~/reducers/wallet"; type Props = { onCancel: () => void; @@ -22,6 +23,7 @@ type Props = { const SkipDeviceVerification = ({ onCancel, onConfirm, account }: Props) => { const currency = getAccountCurrency(account); const { colors } = useTheme(); + const accountName = useAccountName(account); return ( { - {(account as Account).name} + {accountName} { - return `${currency.name} ${index + 1}`; -}; - -export const validateNameEdition = (account: Account, name?: string | null | undefined): string => - ( - (name || account.name || "").replace(/\s+/g, " ").trim() || - account.name || - getAccountPlaceholderName(account) - ).slice(0, MAX_ACCOUNT_NAME_SIZE); diff --git a/libs/coin-framework/src/account/helpers.test.ts b/libs/coin-framework/src/account/helpers.test.ts index 7d7573c6ceae..1dfb3d2642b3 100644 --- a/libs/coin-framework/src/account/helpers.test.ts +++ b/libs/coin-framework/src/account/helpers.test.ts @@ -5,7 +5,6 @@ import { areAllOperationsLoaded, emptyHistoryCache, getAccountCurrency, - getAccountName, getAccountSpendableBalance, getAccountUnit, getFeesCurrency, @@ -133,46 +132,6 @@ describe(getFeesCurrency.name, () => { }); }); -describe(getAccountName.name, () => { - describe("given an Account", () => { - beforeEach(() => { - mockAccount.type = "Account"; - }); - it("should return the account name", () => { - const sampleAccountName = "SampleAccountName"; - mockAccount.name = sampleAccountName; - expect(getAccountName(mockAccount)).toEqual(sampleAccountName); - }); - }); - - describe("given a TokenAccount", () => { - it("should return the token account name", () => { - const sampleAccountName = "SampleAccountName"; - tokenAccount.token = { name: sampleAccountName } as TokenCurrency; - expect(getAccountName(tokenAccount)).toEqual(sampleAccountName); - }); - }); - - describe("given an unknown type Account", () => { - beforeEach(() => { - (mockAccount as any).type = "DefinitelyNotAStandardAccount"; - }); - - it("should throw an error", () => { - expect(() => getAccountName(mockAccount)).toThrow(Error); - }); - - it("should display the account type in the error message", () => { - expect.assertions(1); - try { - getAccountName(mockAccount); - } catch (e: unknown) { - expect((e as Error).message.includes(mockAccount.type)).toEqual(true); - } - }); - }); -}); - describe(getAccountSpendableBalance.name, () => { describe("given an Account", () => { beforeEach(() => { diff --git a/libs/coin-framework/src/account/helpers.ts b/libs/coin-framework/src/account/helpers.ts index 39d1b921558c..c53865666a78 100644 --- a/libs/coin-framework/src/account/helpers.ts +++ b/libs/coin-framework/src/account/helpers.ts @@ -69,19 +69,6 @@ export const getAccountUnit = (account: AccountLike): Unit => { } }; -export const getAccountName = (account: AccountLike): string => { - switch (account.type) { - case "Account": - return account.name; - - case "TokenAccount": - return account.token.name; - - default: - throw new Error("invalid account.type=" + (account as AccountLike).type); - } -}; - export const getAccountSpendableBalance = (account: AccountLike): BigNumber => account.spendableBalance; @@ -229,7 +216,6 @@ export const makeEmptyTokenAccount = (account: Account, token: TokenCurrency): T creationDate: new Date(), operations: [], pendingOperations: [], - starred: false, swapHistory: [], balanceHistoryCache: emptyHistoryCache, }); @@ -261,7 +247,6 @@ export const accountWithMandatoryTokens = ( creationDate: new Date(), operations: [], pendingOperations: [], - starred: false, swapHistory: [], balanceHistoryCache: emptyHistoryCache, })); diff --git a/libs/coin-framework/src/account/index.ts b/libs/coin-framework/src/account/index.ts index 8bd2404fbe9d..354d0b9dba38 100644 --- a/libs/coin-framework/src/account/index.ts +++ b/libs/coin-framework/src/account/index.ts @@ -1,8 +1,6 @@ export * from "./accountId"; -export * from "./accountName"; export * from "./balanceHistoryCache"; export * from "./groupOperations"; export * from "./helpers"; -export * from "./ordering"; export * from "./pending"; export * from "./support"; diff --git a/libs/coin-framework/src/bot/types.ts b/libs/coin-framework/src/bot/types.ts index aff763641d52..1f48daa23590 100644 --- a/libs/coin-framework/src/bot/types.ts +++ b/libs/coin-framework/src/bot/types.ts @@ -120,8 +120,6 @@ export type AppSpec = { scanAccountsRetries?: number; // if define, will run the mutations {multipleRuns} times in order to cover 2 txs in the same run and detect possible issues at the "second tx time" multipleRuns?: number; - // define the frequency of exporting/importing back the account to simulate mobile export - crossAccountFrequency?: number; // if the nano app depends on an app, name of this app dependency?: string; // a query to select one nano app. the most up to date version is selected when fields aren't set. diff --git a/libs/coin-framework/src/bridge/jsHelpers.ts b/libs/coin-framework/src/bridge/jsHelpers.ts index 70830882a052..82ff5ca70cba 100644 --- a/libs/coin-framework/src/bridge/jsHelpers.ts +++ b/libs/coin-framework/src/bridge/jsHelpers.ts @@ -14,7 +14,6 @@ import { getDerivationModeStartsAt, } from "../derivation"; import { - getAccountPlaceholderName, shouldRetainPendingOperation, isAccountEmpty, shouldShowNewAccount, @@ -366,8 +365,6 @@ export const makeScanAccounts = }, ], derivationMode, - name: "", - starred: false, used: false, index, currency, @@ -412,12 +409,6 @@ export const makeScanAccounts = if (!account) return; - account.name = getAccountPlaceholderName({ - currency, - index, - derivationMode, - }); - const showNewAccount = shouldShowNewAccount(currency, derivationMode); if (account.used || showNewAccount) { @@ -568,9 +559,7 @@ export function makeAccountBridgeReceive( const accountAddress = freshAddress ? freshAddress.address : account.freshAddress; if (r.address !== accountAddress) { - throw new WrongDeviceForAccount(`WrongDeviceForAccount ${account.name}`, { - accountName: account.name, - }); + throw new WrongDeviceForAccount(); } return r; diff --git a/libs/coin-framework/src/mocks/account.ts b/libs/coin-framework/src/mocks/account.ts index 073988485740..1c912f027fa8 100644 --- a/libs/coin-framework/src/mocks/account.ts +++ b/libs/coin-framework/src/mocks/account.ts @@ -258,7 +258,6 @@ export function genTokenAccount( const rng = new Prando(account.id + "|" + index); const tokenAccount: TokenAccount = { type: "TokenAccount", - starred: false, id: account.id + "|" + index, parentId: account.id, token, @@ -320,24 +319,26 @@ export function genAccount( // nb Make the third (ethereum_classic, dogecoin) account originally migratable const outdated = ["ethereum_classic", "dogecoin"].includes(currency.id) && `${id}`.endsWith("_2"); const accountId = `mock:${outdated ? 0 : 1}:${currency.id}:${id}:`; + const xpub = genHex(64, rng); + rng.nextString(rng.nextInt(4, 34)); // to not break the determinism, we will still run this code that used to generate fake account names + const blockHeight = rng.nextInt(100000, 200000); + const unit = rng.nextArrayItem(currency.units); const account: Account = { type: "Account", id: accountId, seedIdentifier: "mock", derivationMode: "", - xpub: genHex(64, rng), + xpub, index: 1, freshAddress: address, freshAddressPath: derivationPath, freshAddresses: [freshAddress], - name: rng.nextString(rng.nextInt(4, 34)), - starred: false, used: false, balance: new BigNumber(0), spendableBalance: new BigNumber(0), - blockHeight: rng.nextInt(100000, 200000), + blockHeight, currency, - unit: rng.nextArrayItem(currency.units), + unit, operationsCount: 0, operations: [], pendingOperations: [], diff --git a/libs/coin-framework/src/serialization/account.ts b/libs/coin-framework/src/serialization/account.ts index c5d6d84043cf..46934966b488 100644 --- a/libs/coin-framework/src/serialization/account.ts +++ b/libs/coin-framework/src/serialization/account.ts @@ -1,5 +1,6 @@ import { BigNumber } from "bignumber.js"; import type { + AccountUserData, Account, AccountBridge, AccountRaw, @@ -38,12 +39,10 @@ export function fromAccountRaw(rawAccount: AccountRaw, fromRaw?: FromFamiliyRaw) derivationMode, index, xpub, - starred, used, freshAddress, freshAddressPath, freshAddresses, - name, blockHeight, currencyId, feesCurrencyId, @@ -85,7 +84,6 @@ export function fromAccountRaw(rawAccount: AccountRaw, fromRaw?: FromFamiliyRaw) const res: Account = { type: "Account", id, - starred: starred || false, used: false, // filled again below seedIdentifier, @@ -100,7 +98,6 @@ export function fromAccountRaw(rawAccount: AccountRaw, fromRaw?: FromFamiliyRaw) address: freshAddress, }, ], - name, blockHeight, creationDate: new Date(creationDate || Date.now()), balance: new BigNumber(balance), @@ -150,13 +147,15 @@ export type ToFamiliyRaw = { toOperationExtraRaw?: AccountBridge["toOperationExtraRaw"]; }; -export function toAccountRaw(account: Account, toFamilyRaw?: ToFamiliyRaw): AccountRaw { +export function toAccountRaw( + account: Account, + toFamilyRaw?: ToFamiliyRaw, + userData?: AccountUserData, +): AccountRaw { const { id, seedIdentifier, xpub, - name, - starred, used, derivationMode, index, @@ -181,6 +180,13 @@ export function toAccountRaw(account: Account, toFamilyRaw?: ToFamiliyRaw): Acco nfts, } = account; + let name = ""; + let starred; + if (userData) { + name = userData.name; + starred = userData.starredIds.includes(id); + } + const convertOperation = (op: Operation) => toOperationRaw(op, undefined, toFamilyRaw?.toOperationExtraRaw); @@ -222,7 +228,9 @@ export function toAccountRaw(account: Account, toFamilyRaw?: ToFamiliyRaw): Acco } if (subAccounts) { - res.subAccounts = subAccounts.map(a => toTokenAccountRaw(a, toFamilyRaw?.toOperationExtraRaw)); + res.subAccounts = subAccounts.map(a => + toTokenAccountRaw(a, toFamilyRaw?.toOperationExtraRaw, userData), + ); } if (toFamilyRaw?.assignToAccountRaw) { @@ -283,12 +291,12 @@ function fromTokenAccountRaw( function toTokenAccountRaw( ta: TokenAccount, toOperationExtraRaw?: AccountBridge["toOperationExtraRaw"], + userData?: AccountUserData, ): TokenAccountRaw { const { id, parentId, token, - starred, operations, operationsCount, pendingOperations, @@ -299,6 +307,11 @@ function toTokenAccountRaw( approvals, } = ta; + let starred; + if (userData) { + starred = userData.starredIds.includes(id); + } + const convertOperation = (op: Operation) => toOperationRaw(op, undefined, toOperationExtraRaw); return { diff --git a/libs/coin-framework/src/test-helpers/bridge-integration-suite.ts b/libs/coin-framework/src/test-helpers/bridge-integration-suite.ts index 0b3ca2611d52..360aea0e2204 100644 --- a/libs/coin-framework/src/test-helpers/bridge-integration-suite.ts +++ b/libs/coin-framework/src/test-helpers/bridge-integration-suite.ts @@ -356,14 +356,14 @@ export function testBridge { if (accountData.FIXME_tests && accountData.FIXME_tests.some(r => name.match(r))) { - warnDev("FIXME test was skipped. " + name + " for " + initialAccount.name); + warnDev("FIXME test was skipped. " + name + " for " + initialAccount.id); return; } test(name, fn); }; - describe(impl + " bridge on account " + initialAccount.name, () => { + describe(impl + " bridge on account " + initialAccount.id, () => { describe("sync", () => { // FIXME: What is the point of this test? // testOrSkip("succeed", async () => { diff --git a/libs/coin-modules/coin-algorand/src/js-synchronization.ts b/libs/coin-modules/coin-algorand/src/js-synchronization.ts index ce52e6f7f3fc..272596c3a294 100644 --- a/libs/coin-modules/coin-algorand/src/js-synchronization.ts +++ b/libs/coin-modules/coin-algorand/src/js-synchronization.ts @@ -320,7 +320,6 @@ async function buildSubAccount({ type: "TokenAccount", id: tokenAccountId, parentId: parentAccountId, - starred: false, token, operationsCount: operations.length, operations, diff --git a/libs/coin-modules/coin-bitcoin/src/hw-signMessage.test.ts b/libs/coin-modules/coin-bitcoin/src/hw-signMessage.test.ts index 7fc7873c5283..665ce937cbf6 100644 --- a/libs/coin-modules/coin-bitcoin/src/hw-signMessage.test.ts +++ b/libs/coin-modules/coin-bitcoin/src/hw-signMessage.test.ts @@ -64,8 +64,6 @@ function createFixtureAccount(account?: Partial): BitcoinAccount freshAddress: freshAddress.address, freshAddressPath: freshAddress.derivationPath, freshAddresses: [freshAddress], - name: "bitcoin account name", - starred: false, used: true, balance: account?.balance || new BigNumber(0), spendableBalance: account?.spendableBalance || new BigNumber(0), diff --git a/libs/coin-modules/coin-evm/src/__tests__/fixtures/common.fixtures.ts b/libs/coin-modules/coin-evm/src/__tests__/fixtures/common.fixtures.ts index 6c9cea823aaf..9cac253341b4 100644 --- a/libs/coin-modules/coin-evm/src/__tests__/fixtures/common.fixtures.ts +++ b/libs/coin-modules/coin-evm/src/__tests__/fixtures/common.fixtures.ts @@ -6,7 +6,6 @@ import { decodeAccountId, decodeTokenAccountId, encodeTokenAccountId, - shortAddressPreview, } from "@ledgerhq/coin-framework/account/index"; import { encodeERC1155OperationId, @@ -44,12 +43,9 @@ export const makeAccount = ( const account: Account = { type: "Account", - name: - currency.name + " " + (derivationMode || "legacy") + " " + shortAddressPreview(xpubOrAddress), xpub: xpubOrAddress, subAccounts, seedIdentifier: xpubOrAddress, - starred: true, used: true, swapHistory: [], id, @@ -105,7 +101,6 @@ export const makeTokenAccount = (address: string, tokenCurrency: TokenCurrency): operationsCount: 0, operations: [], pendingOperations: [], - starred: false, balanceHistoryCache: { HOUR: { latestDate: null, diff --git a/libs/coin-modules/coin-evm/src/__tests__/unit/synchronization.unit.test.ts b/libs/coin-modules/coin-evm/src/__tests__/unit/synchronization.unit.test.ts index 9d1f35a16b27..c3a445c9bddf 100644 --- a/libs/coin-modules/coin-evm/src/__tests__/unit/synchronization.unit.test.ts +++ b/libs/coin-modules/coin-evm/src/__tests__/unit/synchronization.unit.test.ts @@ -555,7 +555,6 @@ describe("EVM Family", () => { spendableBalance: new BigNumber(1), operations: [tokenOperations[0], tokenOperations[1]], operationsCount: 2, - starred: undefined, swapHistory: [], }; const expectedUsdtAccount = { @@ -564,7 +563,6 @@ describe("EVM Family", () => { spendableBalance: new BigNumber(2), operations: [tokenOperations[3]], operationsCount: 1, - starred: undefined, swapHistory: [], }; @@ -588,7 +586,6 @@ describe("EVM Family", () => { spendableBalance: new BigNumber(2), operations: [tokenOperations[3]], operationsCount: 1, - starred: undefined, swapHistory: [], }; @@ -627,7 +624,6 @@ describe("EVM Family", () => { spendableBalance: new BigNumber(1), operations: [tokenOperations[0], tokenOperations[1], tokenOperations[2]], operationsCount: 3, - starred: undefined, swapHistory: [], }); }); diff --git a/libs/coin-modules/coin-polkadot/src/types/model.fixture.ts b/libs/coin-modules/coin-polkadot/src/types/model.fixture.ts index 5e14c9a48a58..a35e9b0e4210 100644 --- a/libs/coin-modules/coin-polkadot/src/types/model.fixture.ts +++ b/libs/coin-modules/coin-polkadot/src/types/model.fixture.ts @@ -26,17 +26,20 @@ export function createFixtureAccount(account?: Partial): Polkad derivationPath: "derivation_path", }; + const id = faker.string.uuid(); + const seedIdentifier = faker.string.uuid(); + const index = faker.number.int(); + faker.string.alpha(); // there used to be a name and to not break the test, we need to consume it + return { type: "Account", - id: faker.string.uuid(), - seedIdentifier: faker.string.uuid(), + id, + seedIdentifier, derivationMode: "", - index: faker.number.int(), + index, freshAddress: freshAddress.address, freshAddressPath: freshAddress.derivationPath, freshAddresses: [freshAddress], - name: faker.string.alpha(), - starred: false, used: true, balance: account?.balance || new BigNumber(0), spendableBalance: account?.spendableBalance || new BigNumber(0), diff --git a/libs/ledger-live-common/.unimportedrc.json b/libs/ledger-live-common/.unimportedrc.json index e8a514e67e26..d86eb3263a35 100644 --- a/libs/ledger-live-common/.unimportedrc.json +++ b/libs/ledger-live-common/.unimportedrc.json @@ -1,7 +1,6 @@ { "entry": [ "src/account/helpers.ts", - "src/account/importAccounts.ts", "src/account/index.ts", "src/account/serialization.ts", "src/apps/filtering.ts", diff --git a/libs/ledger-live-common/package.json b/libs/ledger-live-common/package.json index a2e261ee91a4..24f72bbf15ef 100644 --- a/libs/ledger-live-common/package.json +++ b/libs/ledger-live-common/package.json @@ -139,7 +139,6 @@ "@ledgerhq/coin-framework": "workspace:^", "@ledgerhq/coin-near": "workspace:^", "@ledgerhq/coin-polkadot": "workspace:^", - "@ledgerhq/compressjs": "github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e", "@ledgerhq/crypto-icons-ui": "workspace:^", "@ledgerhq/cryptoassets": "workspace:^", "@ledgerhq/devices": "workspace:^", @@ -171,6 +170,7 @@ "@ledgerhq/live-network": "workspace:^", "@ledgerhq/live-nft": "workspace:^", "@ledgerhq/live-promise": "workspace:^", + "@ledgerhq/live-wallet": "workspace:^", "@ledgerhq/logs": "workspace:^", "@ledgerhq/wallet-api-client": "^1.5.7", "@ledgerhq/wallet-api-core": "^1.9.0", @@ -298,4 +298,4 @@ "uuid": "^8.3.2", "ws": "7" } -} \ No newline at end of file +} diff --git a/libs/ledger-live-common/src/__tests__/__snapshots__/csvExport.ts.snap b/libs/ledger-live-common/src/__tests__/__snapshots__/csvExport.ts.snap index 342da04f2027..ab749230aef6 100644 --- a/libs/ledger-live-common/src/__tests__/__snapshots__/csvExport.ts.snap +++ b/libs/ledger-live-common/src/__tests__/__snapshots__/csvExport.ts.snap @@ -2,985 +2,985 @@ exports[`export CSV 1`] = ` "Operation Date,Status,Currency Ticker,Operation Type,Operation Amount,Operation Fees,Operation Hash,Account Name,Account xpub,Countervalue Ticker,Countervalue at Operation Date,Countervalue at CSV Export -2018-03-14T17:20:32.454Z,Confirmed,BTC,OUT,0.0067904,0.0000679,0F7CD80033E4AC2C1DB064D7B71F602F589B33D0B452426ACD90A9E1C8C41DEA,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,17.78,17.78 -2018-03-14T15:13:42.205Z,Confirmed,BTC,IN,0.00119081,0.00001191,ADCEEE94EC916B4281A2ED66111B338640E7E1A874E72B3EDCFF3D1203050160,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.11,3.11 -2018-03-14T15:04:22.979Z,Confirmed,BTC,OUT,0.01991267,0.00019913,BC322244321340447CBBFB0C1FFE9B9F6065D8120D4888CF1920314D185FE0C4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,52.16,52.16 -2018-03-14T14:51:48.237Z,Confirmed,BTC,IN,0.01893127,0.00018931,AAAD825C26D83ADB2F1ADABC87622B80BABE73232298D3AA91662288864E1A5C,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,49.58,49.58 -2018-03-14T14:48:32.740Z,Confirmed,BTC,IN,0.03015644,0.00030156,B3731DE7824E75513FFC29C0D59652CA9B816D7389234560555E11B7927ED1D3,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,78.99,78.99 -2018-03-14T14:15:26.942Z,Confirmed,BTC,OUT,0.00692454,0.00006925,8545D8D4B0BF7E8A09FA954DB85FBC33B892E9EB80C789923CAAD6A3AA1D2C20,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,18.13,18.13 -2018-03-13T23:59:44.590Z,Confirmed,BTC,IN,0.00207503,0.00002075,62BE1A831393011ABD4F3766D1BC82AC03559FDD2E09192356E2BF5182B59712,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.46,5.43 -2018-03-13T22:13:18.439Z,Confirmed,BTC,OUT,0.03874813,0.00038748,3E499F59B7D2684A0CBE0F0A95D0F184CCF1CDE79271ADD68C81BC3CF89DCA4F,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,101.99,101.49 -2018-03-13T21:51:36.522Z,Confirmed,BTC,IN,0.01257203,0.00012572,12B858070D39A22CE04FABD682325795A2FD57996DF71127EC45163E4BF34EA0,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,33.09,32.93 -2018-03-13T20:29:44.153Z,Confirmed,BTC,IN,0.00638251,0.00006383,7819F674571257970FD98C2CB19F0D2B74E9CF3F6D28A7B922955DB22C9C281C,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,16.79,16.71 -2018-03-13T17:20:32.411Z,Confirmed,BTC,IN,0.016113,0.00016113,45C3EC0F5B16B3EF289546C8116B7B04D4963ADD096D7AE7267533F9B3F87348,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,42.41,42.20 -2018-03-13T08:19:48.002Z,Confirmed,BTC,OUT,0.00159733,0.00001597,9756A3B2C280518E37D57014B77F5918FCD3107A1C70D5473C09F8DF2258C06E,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,4.20,4.18 -2018-03-13T04:58:59.353Z,Confirmed,BTC,IN,0.00936914,0.00009369,21913C798C9788E6E348F2CD29CD33DD01B1A94FF48391DE4E8295C315F87503,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,24.66,24.54 -2018-03-13T04:35:04.120Z,Confirmed,BTC,OUT,0.03019066,0.00030191,67F7ED408A889B2B2F08B339498B27D29EEC3F934385AB02440A49D6C32C4217,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,79.46,79.08 -2018-03-12T23:40:48.762Z,Confirmed,BTC,OUT,0.01907362,0.00019074,25FE97A3C320A7DF69B4407CC55972E9AD1B240D6F5D011A74842F6C4E8112EE,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,50.70,49.96 -2018-03-12T21:11:02.398Z,Confirmed,BTC,OUT,0.00223244,0.00002232,9C6478E4F1346BD4E6948E5B230B5819305C32733004F235F2D777C4B3EFBE9C,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.93,5.84 -2018-03-12T19:12:25.287Z,Confirmed,BTC,IN,0.02175775,0.00021758,F18C86E8F488AD69B5DA9295B4AF3371840BC631FC5BB266AB67094DFD62BE49,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,57.83,56.99 -2018-03-12T19:12:24.523Z,Confirmed,BTC,IN,0.02827303,0.00028273,8DC5C19C1362EE0CAABAB5061B3A9555FCD99717BDCA208AC8C70A4E90927D52,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,75.15,74.05 -2018-03-12T18:44:05.076Z,Confirmed,BTC,IN,0.00273614,0.00002736,1D5880B86D37903EBD9B7F0FDB8EBE739B78DF06DB4B460168FB256C35EDF921,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,7.27,7.16 -2018-03-12T18:27:01.604Z,Confirmed,BTC,IN,0.00001095,0.00000011,C738AA81250D4C07B0291870F7C2D39A534C256C2A3931B03B8E1E87D908CEC1,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.02,0.02 -2018-03-12T10:25:09.415Z,Confirmed,BTC,OUT,0.00063236,0.00000632,5508CC58F656F4BDB87AD18A50D10212DA863B5E9D3D02E3F6243E01128BF72D,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.68,1.65 -2018-03-12T06:26:14.252Z,Confirmed,BTC,IN,0.00642631,0.00006426,C04162CDD08972CF370284FD8D259ED4D87F1755DD1E9AB2D0BC79FF06D2D092,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,17.08,16.83 -2018-03-12T05:49:12.796Z,Confirmed,BTC,IN,0.00224202,0.00002242,606E4A240B36BD6FF901F1D1C7DC8B6341A810731CE375950AF4B76EF8543B4B,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.96,5.87 -2018-03-12T03:46:58.861Z,Confirmed,BTC,IN,0.05540316,0.00055403,D15C24D94DF37E334E5B2DD2CA99BA688E5BE450C8E2E7F69DD7215732B71D6C,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,147.28,145.12 -2018-03-11T23:31:02.310Z,Confirmed,BTC,IN,0.00450868,0.00004509,0ECF11D144DE389691038A45425BC3B239E681B09DA78272B25C3CF883847AC3,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,12.17,11.81 -2018-03-11T14:54:03.373Z,Confirmed,BTC,IN,0.00206134,0.00002061,2C05712BB11BD1B80739905A7A42B4A057797CBCBDB5493508F40F531D58BDBE,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.56,5.39 -2018-03-11T08:23:40.197Z,Confirmed,BTC,IN,0.01964713,0.00019647,AF03402CC1BFA1FFC8AA35CD6844B671216E7DAAB136220634837C36CCEEFD3F,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,53.06,51.46 -2018-03-10T23:33:16.455Z,Confirmed,BTC,OUT,0.03063414,0.00030634,5915964D39A264CDDAFEEE6BD3F102851DFC51C31734DE78B2432FABFB562B70,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,84.56,80.24 -2018-03-10T22:58:10.312Z,Confirmed,BTC,IN,0.00010676,0.00000107,6D1C35D779EC1CCC6FCE581E4B18BEE0C0561CCB32F193DFAF9B17C5B34587E1,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.29,0.27 -2018-03-10T20:29:35.168Z,Confirmed,BTC,IN,0.02859743,0.00028597,A4D6DE57872AE62912E4B271001D06253F73125E63EFA5554F89C2F8B354C9E5,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,78.94,74.90 -2018-03-10T18:07:20.271Z,Confirmed,BTC,IN,0.00066932,0.00000669,AD573CF961DC79CE335EFD5B5A250C9C3D8E0F5EA6FB69A41B76E3DF5E02F785,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.84,1.75 -2018-03-10T18:06:59.053Z,Confirmed,BTC,OUT,0.02007008,0.0002007,C159EAA29EC7C01EBF49DDE0CA2D011B627F7CA47B4D90574280083659CAB397,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,55.40,52.57 -2018-03-10T16:37:00.580Z,Confirmed,BTC,OUT,0.00429789,0.00004298,4E48224C79A80F2BFA4AEB00E58A9046BEE7BA482FCBD03B5C9F47C73C15CB41,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,11.86,11.25 -2018-03-10T16:11:30.256Z,Confirmed,BTC,IN,0.02289793,0.00022898,210F623E7284C8EC11289878E426A1B3125B1AAFC954AC70FF063695CF05A43F,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,63.20,59.97 -2018-03-10T13:36:44.132Z,Confirmed,BTC,IN,0.00443887,0.00004439,73D8067712F1D429CCB0CADB16FBAD5A2130D9DA0902C11949FDE83A0092FD7F,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,12.25,11.62 -2018-03-10T13:13:15.168Z,Confirmed,BTC,OUT,0.06711561,0.00067116,9F9D31F0EF135033273B9E2628A3F381D04D63D0BCF728C57DC2E4604872783C,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,185.26,175.80 -2018-03-10T02:57:55.377Z,Confirmed,BTC,IN,0.01033685,0.00010337,62A0F0F58CD423A788E56C20F7D3F2D4FAD39AB1891890B5224C57AD70D474E4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,28.53,27.07 -2018-03-09T11:37:02.435Z,Confirmed,BTC,IN,0.02148674,0.00021487,5FCB5907AA7636DA1ADBFE1D283EDE0ED66408A32C05EF771FD0146682DEECC9,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,60.90,56.28 -2018-03-09T11:28:38.819Z,Confirmed,BTC,IN,0.00023816,0.00000238,1828C5E23F8CAA709973A12A8FBC73315AF7F4A00181CD37146EBEB755A741C4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.67,0.62 -2018-03-09T10:31:12.290Z,Confirmed,BTC,OUT,0.00601842,0.00006018,12131152A57728F6BCBE2BE3A7A887DD94A168DA6CCBC66329960B642E245DB3,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,17.05,15.76 -2018-03-09T06:14:05.277Z,Confirmed,BTC,IN,0.03231771,0.00032318,875750ED49B4BD6C3F60C044D2BDE610F5EBFD1DF215BD0331E7D1ADA869B67A,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,91.60,84.65 -2018-03-09T04:08:35.990Z,Confirmed,BTC,OUT,0.01074474,0.00010745,672683ED02D3192EEEC9DA1AB9ACE7447066A829076F8B6736CD8F2FE3EEB329,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,30.45,28.14 -2018-03-08T19:57:00.604Z,Confirmed,BTC,IN,0.01934874,0.00019349,27010FBCA5EC740FB59BC97653D374D2743A24E396AEE3FE2B6F3AC4B1D69216,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,56.48,50.68 -2018-03-08T19:22:59.600Z,Confirmed,BTC,OUT,0.01481542,0.00014815,4A9B605C5D8C4ACFC68B828BC70CE026B3468CA76D83CC68819024AF83D4F649,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,43.25,38.80 -2018-03-08T01:17:14.244Z,Confirmed,BTC,IN,0.000026,0.00000026,9BA7E4A9B760130A1469BEA05B81CF2AEF88E17B784BEB86DB0A303AAA38B915,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.07,0.06 -2018-03-08T00:06:26.654Z,Confirmed,BTC,IN,0.00439097,0.00004391,FEBBD58479E6B30F248E4C190C4202AB1646F6AD65F83B8FFA4CFF1543FA8881,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,12.81,11.50 -2018-03-08T00:00:05.496Z,Confirmed,BTC,IN,0.02050808,0.00020508,E93FD902FF1B6590C8B04C256931AD7003D9B7C85D63AACEB2424057C837FC3F,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,59.87,53.71 -2018-03-07T22:55:27.399Z,Confirmed,BTC,IN,0.0031454,0.00003145,A38AB5A3A8659C115AB07CE667AC973EA87FE756FB4B00381DD4DC245EC22E47,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,9.46,8.23 -2018-03-07T22:33:54.060Z,Confirmed,BTC,OUT,0.02431733,0.00024317,1988322A17F96E3984FE92EF56F54301ECD60D50608F6877F727C5B7552E77D8,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,73.18,63.69 -2018-03-07T18:01:26.619Z,Confirmed,BTC,IN,0.00899273,0.00008993,75F8F696B603BE47D89695771AFE03C5C4C59329F0BDC16F10B287FD967B9FF8,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,27.06,23.55 -2018-03-07T14:41:29.128Z,Confirmed,BTC,OUT,0.00113743,0.00001137,8D5C9D73B6916E103719893AF22AB1D99355888B46431D95A4C9BAA817B45046,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.42,2.97 -2018-03-07T10:24:08.286Z,Confirmed,BTC,IN,0.00019983,0.000002,8DD0CD453F8CDDA25472B6B271845DC8F129F5701CA528A49DAEDC6918658184,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.60,0.52 -2018-03-07T09:55:52.151Z,Confirmed,BTC,IN,0.01890937,0.00018909,BAC25693F2D0DBAB8071B52C46948231E3D5F6F364D4023D00A76417541265C5,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,56.91,49.53 -2018-03-07T06:02:09.388Z,Confirmed,BTC,IN,0.05075897,0.00050759,185E55A60AC7158C6BBEFAA3593F330148316E078E944C775B9F6A05A8D38D77,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,152.77,132.96 -2018-03-07T05:40:27.122Z,Confirmed,BTC,OUT,0.02381363,0.00023814,CDDE81257BEC0B7F18666A2EB1A7C9D9ED67FA19A9F8C742A72E147C06F7AF1F,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,71.67,62.37 -2018-03-07T02:05:59.768Z,Confirmed,BTC,IN,0.04570141,0.00045701,DAC9781C36B22F8B8C19B60636126991243126EA9AB545444EB7ABCEA1169E46,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,137.55,119.71 -2018-03-06T17:36:28.439Z,Confirmed,BTC,IN,0.03627752,0.00036278,63D9665735BA39954AA6ED304BEF2FE47D4E2209C24520B7766B6C06F580BE20,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,112.43,95.02 -2018-03-06T15:25:16.489Z,Confirmed,BTC,OUT,0.01475246,0.00014752,FA5CE36EE5DDA0D3D27BAC3410A959EE1A60AC01FE46F38E6A62DD09800843F4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,45.72,38.64 -2018-03-06T12:40:03.949Z,Confirmed,BTC,OUT,0.00203534,0.00002035,080ED338FD9776CA4813E0B3B641BB0A85A4641BA0E375A4203A4BA0DF778DA4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.30,5.33 -2018-03-06T05:56:02.110Z,Confirmed,BTC,OUT,0.00113196,0.00001132,A911A1F601A4D60505BE00DF9E7DE1B2EDD860F33D8A10FD7EB1983D5F75E9E4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.50,2.96 -2018-03-05T19:32:27.083Z,Confirmed,BTC,IN,0.0080565,0.00008057,C47DF9884D35B5E2580F5743F1FC9EE4FB75C718B2125921FFE497FFCE70F1D5,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,25.62,21.10 -2018-03-05T17:08:46.304Z,Confirmed,BTC,IN,0.0481597,0.0004816,CD3E9EEE91C7DBF21DC422B13045FDE16C668B68084AF8F95F8CB76A96F09E48,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,153.18,126.15 -2018-03-05T12:42:24.451Z,Confirmed,BTC,IN,0.02818954,0.0002819,5FD0BC6A176D3D006FF58BCD8B8DBC09A70C9BC4DAA18EC0E609B571BA9C8002,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,89.66,73.84 -2018-03-05T10:32:28.390Z,Confirmed,BTC,IN,0.01170287,0.00011703,52B0216D2B7A33D50EB6C9890A9847BE1AFF0F67E94BDC7C966F7DAEB7D19CCC,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,37.22,30.65 -2018-03-05T09:07:01.377Z,Confirmed,BTC,OUT,0.05914261,0.00059143,E4B0384A6E4A092851904FC3E2E62FC5C061741EA89A02F90BB47AB502559E6E,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,188.12,154.92 -2018-03-05T08:42:47.316Z,Confirmed,BTC,OUT,0.00602663,0.00006027,C965E30E967B4F09D7511F8B1878EE6017E20A72F63C88C95237AE8B12C3A1C3,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,19.16,15.78 -2018-03-05T07:08:34.691Z,Confirmed,BTC,IN,0.01698627,0.00016986,F484FCB98A7199817B8AB4504CEF62B6D36ED0E7FCB9A618B477600F9A10070D,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,54.02,44.49 -2018-03-05T06:55:23.271Z,Confirmed,BTC,IN,0.01172203,0.00011722,6A444168893201766EA966CE92D4FC1AD8295539CFB1633EEF523E43D7FA09E4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,37.28,30.70 -2018-03-05T04:35:31.177Z,Confirmed,BTC,OUT,0.00114975,0.0000115,8B3E1B1AC9929387DE4899270903334F7B4BCB30F2B02EE23AF1D51207C166A3,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.65,3.01 -2018-03-04T22:01:01.275Z,Confirmed,BTC,IN,0.0427011,0.00042701,47B272D5541ED94CC72A9E91F9C92888CCCBCDE83696F155F492C7EF089E1611,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,138.70,111.85 -2018-03-04T05:11:56.819Z,Confirmed,BTC,OUT,0.00196964,0.0000197,6A52DC545CC104EC4A430F03F182B52AC6894E76DC85F7F5DCC6E58CFF381137,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.39,5.15 -2018-03-03T20:48:03.946Z,Confirmed,BTC,IN,0.01104312,0.00011043,4219B61CC1C5AC90BB5DC915777AFAA750D1482E88962204885E0B29E1C8404D,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,36.40,28.92 -2018-03-03T20:47:53.948Z,Confirmed,BTC,IN,0.01040802,0.00010408,6BCA154E70470E68F0A9140617C71529B263A3A544DA89CA9122B96EEB2C7485,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,34.31,27.26 -2018-03-03T19:53:54.395Z,Confirmed,BTC,IN,0.00108816,0.00001088,F2C16F8CFC5E7236CA68A0D12DE86E157C45C65D58475092CBE94C9C7D10E8EC,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.58,2.85 -2018-03-03T15:04:15.025Z,Confirmed,BTC,IN,0.00976334,0.00009763,71CBB56D9D8DF9D9FC27D32CC1DE80F667CAFF975A792BF61AE4E70298B86384,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,32.18,25.57 -2018-03-03T13:35:48.183Z,Confirmed,BTC,IN,0.03302673,0.00033027,54648A4032EC2F42892B404DD429FDA104339514E94732A9560415D77AE34E17,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,108.87,86.51 -2018-03-03T13:29:33.409Z,Confirmed,BTC,OUT,0.00006022,0.0000006,3D753ADD599DFF2673782DDEB98B20D09B955D78C22CF169072BC289C0F6A0E2,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.19,0.15 -2018-03-03T08:49:37.754Z,Confirmed,BTC,IN,0.00013413,0.00000134,68C0A42092B17F32B5104A7BEE6FFE0BDCF0187D02DC07C4A7820B305B4A11A4,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.44,0.35 -2018-03-03T06:45:27.171Z,Confirmed,BTC,IN,0.00813452,0.00008135,6B03794D670BCF85C9664DFC30E9C0571FDD3650628CB37429391F462D0BD7C7,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,26.81,21.30 -2018-03-02T22:35:31.318Z,Confirmed,BTC,OUT,0.00040788,0.00000408,A4814177790609580DA53348EF94EDA7EDE19CC7032683E0E1932B5C46C296D5,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.35,1.06 -2018-03-02T19:01:56.308Z,Confirmed,BTC,IN,0.00148646,0.00001486,3D09C10FD1E2199DBFFE01922884809868CF4A45FBE9581777AAAC27C872BED7,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,4.93,3.89 -2018-03-02T13:48:44.467Z,Confirmed,BTC,OUT,0.00033534,0.00000335,A3CB7D794D3E37F1A196DA0014A17D35BC47D1BB5B95A81880C560DA7F78ED2E,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.11,0.87 -2018-03-02T13:19:53.715Z,Confirmed,BTC,OUT,0.0162444,0.00016244,2966A7A1B21EEA4968FFB76856CA642DA201FF214ABEB2766899A4043FEFA423,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,53.96,42.55 -2018-03-02T13:16:33.584Z,Confirmed,BTC,IN,0.00778275,0.00007783,428E2260BA8556424E8D3A3AFC5CC0ABB9484E228BFA223E010AE8BB721478EE,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,25.85,20.38 -2018-03-02T06:04:08.178Z,Confirmed,BTC,OUT,0.0107242,0.00010724,ECE681EC9273BAAA92ED5DC65AE40E2CEA3C66ACFC498C19B34BC2430A04BCDD,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,35.62,28.09 -2018-03-02T02:43:39.955Z,Confirmed,BTC,IN,0.04091761,0.00040918,43CF39D2193465E96729B12B78377A4021A10B5296B657B23E0160525B25A6E0,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,135.94,107.18 -2018-03-02T00:02:52.517Z,Confirmed,BTC,OUT,0.0019231,0.00001923,80E03FF9588314769FD43B218E8874F7CF8CE9736469B99BE20927032DB81BE7,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.38,5.03 -2018-03-01T23:35:25.635Z,Confirmed,BTC,IN,0.01713957,0.0001714,EAE990BA6413A39E234458A8F9275C614288FC267BE6394009E14E56E54C51D3,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,56.98,44.89 -2018-03-01T16:07:32.725Z,Confirmed,BTC,IN,0.04838007,0.0004838,97425FA97C426B3D045BDD11AE7196DE0EF3025737DB88DCEDFF9B861DEA7910,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,160.85,126.72 -2018-03-01T11:26:07.181Z,Confirmed,BTC,IN,0.02383416,0.00023834,F099B74BB7D434894609C089B37CFAA5DC299E4FEDA4BA3E71A6A9A57814E56B,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,79.24,62.43 -2018-03-01T10:46:50.390Z,Confirmed,BTC,IN,0.00191352,0.00001914,079C72FA9945C1F7A451DEFF0B2892680AEC7CF006DB08338F42E36AE1389C15,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.36,5.01 -2018-03-01T08:58:49.268Z,Confirmed,BTC,OUT,0.0083193,0.00008319,D72B145C80C3046AE941D0F5256609C4B789B73D44DEEA6548C830B17067EA88,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,27.65,21.79 -2018-03-01T08:52:20.022Z,Confirmed,BTC,OUT,0.06395379,0.00063954,660C8C7032C82F40CE5C99729B3E265C1200BBD589992D802D1DCB1DC26A833C,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,212.63,167.52 -2018-03-01T08:19:06.480Z,Confirmed,BTC,IN,0.00830835,0.00008308,9C68D9C640C0361AEBF2361D52DD7068B6654BC17798B27B827BC696507B33AF,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,27.62,21.76 -2018-02-28T19:59:05.569Z,Confirmed,BTC,IN,0.0068999,0.000069,199535089CC9140B56293C4A3ABCEDBB10AE38B57DEDDF9AB9009DC52D24FCB5,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,22.80,18.07 -2018-02-28T16:47:58.395Z,Confirmed,BTC,IN,0.04530995,0.0004531,FD56B6AF328CDBC795AE40F9DD975B2BE9EDA4A2658DEC9F7402298FC73BDD4E,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,149.77,118.68 -2018-02-28T13:42:23.319Z,Confirmed,BTC,IN,0.03149919,0.00031499,ABC7FBF1C86782C313A430A542103DC65126305DC6E3F7B323E4850DA21611C0,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,104.12,82.51 -2018-02-28T10:35:06.560Z,Confirmed,BTC,IN,0.03673469,0.00036735,73923DFC6D23D3F3C056E94F48EBEB58929FEBA5F67A8B1E24838323568FDCDE,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,121.43,96.22 -2018-02-28T09:04:17.253Z,Confirmed,BTC,OUT,0.00878604,0.00008786,A432AAA6009CE38E780668BB94B92779F2DC43486E438A74304DE20001C03F64,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,29.04,23.01 -2018-02-28T07:41:38.850Z,Confirmed,BTC,OUT,0.00787582,0.00007876,D6BCB23D81D1256EC94B5D9B2F644CA5709C12C4A4898D5212FC88878DD8C737,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,26.03,20.63 -2018-02-28T06:12:49.371Z,Confirmed,BTC,IN,0.0424383,0.00042438,6F1A705AAC0634574AAA07E20E0E0BFA2DA0D19DB1842123787B20DE00C0D090,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,140.28,111.16 -2018-02-28T04:23:32.450Z,Confirmed,BTC,IN,0.00624016,0.0000624,6BD47434FA683B693CA56C5CA30A8FD0A309DA1EB22D4563757B748A0F56D927,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,20.62,16.34 -2018-02-28T01:51:03.147Z,Confirmed,BTC,IN,0.00001368,0.00000014,2858D6DC925EB651B6261DAAD24C452CF2C10BF344E91C926225804035CA6B75,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.04,0.03 -2018-02-27T23:09:06.600Z,Confirmed,BTC,IN,0.00273614,0.00002736,58FA5FAA047FAAFA241315B1D8770B0701FDB6E47917EFF0E30B598FC961FDA1,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,8.94,7.16 -2018-02-27T20:38:30.872Z,Confirmed,BTC,IN,0.01078306,0.00010783,043DDF576C317C4D78F7FFA58C67C1A934D3F5F1734BBB639BD951D3188CDDEC,6kiIoZlxrCvV3KOaxa80Rsyg6bdeUm3Oq,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,35.25,28.24 -2018-03-14T17:04:34.063Z,Confirmed,ETH,IN,0.000017533708554696,0.000000175337085547,A99D859EE4028FA0CF704C0456A4604CAC525F1E78D6A11148F40EE88637EDD9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,0.00,0.00 -2018-03-14T14:28:48.496Z,Confirmed,ETH,OUT,0.0857398348324654,0.000857398348324654,1BE771EBF07F2D2F37906B3C71110C07ED3075A55412AE3093F766D71F386A3B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,5.18,5.18 -2018-03-14T12:19:18.235Z,Confirmed,ETH,IN,0.524573492539407,0.00524573492539407,F044661B0283FE05F44BDE0F519BCBBFDC1753D7AAAE7739350BB1B6F6259304,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,31.70,31.70 -2018-03-14T07:28:16.721Z,Confirmed,ETH,IN,1.0460435186646327,0.010460435186646328,9EE066BFB8B6494175460061EBAECACAD0AC4F1468FD744BA4823C863BA4693C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,63.22,63.22 -2018-03-14T02:23:40.347Z,Confirmed,ETH,IN,0.14777409569898128,0.001477740956989813,D8D77D81F48A50FCDE1C8E61B1DEBD6BACE44E2DF746BAF2A2C8A836971CAE8B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,8.93,8.93 -2018-03-14T01:50:00.618Z,Confirmed,ETH,IN,0.15761050619816598,0.00157610506198166,0D1B5850ADB7C4AE9CF940BA3B8AF17C0D752ED49412DC8860D3091ABAC933E4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,9.52,9.52 -2018-03-14T00:55:43.898Z,Confirmed,ETH,IN,0.029912506794312064,0.000299125067943121,039F1848C8D85A87C15BCE74306ED0A3E99F6677997301ECD64FEED34A683EB0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,1.80,1.80 -2018-03-13T20:10:51.709Z,Confirmed,ETH,IN,0.11581014500376974,0.001158101450037698,C43BA4F8D4DD5F3977035AB5AF0F96B646A40E9A7F8B75856F19C89C2C5616B2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,,6.99 -2018-03-14T14:04:55.771Z,Confirmed,ZRX,IN,0.000000000000180265,,253B61D38A2F5B60D535DFE80E2EE06AEB257DB329F411C9D99911E8FF7791AB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T11:35:38.566Z,Confirmed,ZRX,OUT,0.000000000005104641,,0C6C36EAC29797409B05BAD1AA639B4CEC9A8D57452B9204BA80AF927EF670EC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T09:41:46.901Z,Confirmed,ZRX,IN,0.000000000000623331,,DE02AC86B200063EE0D5BDE7AC1979E5487C6872C09BA7402D4E407F03528392,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T08:46:38.002Z,Confirmed,ZRX,IN,0.000000000001138394,,E87B1B603248EC1AA528C6F0444F42756826C0A0F88565FFFA11743355B09259,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T08:36:31.245Z,Confirmed,ZRX,IN,0.000000000000291545,,46196DA0800623E4AF0B4888FB14DA7211D468A269337396FE4561F44C8C6F04,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T04:32:53.697Z,Confirmed,ZRX,IN,0.000000000006416594,,94A4C1AF09604D1374F9E42987C690AE87DB7527DA125D20FDAE68FF192E7280,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T01:45:41.339Z,Confirmed,ZRX,IN,0.00000000000109172,,6B9A5500695B1209071FFBFF0EDD13A00B5081B3CC79437E24A0C0126A0E3BBB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T01:10:09.662Z,Confirmed,ZRX,IN,0.000000000006463406,,CE0E604406B7E295CD18F5602B040C5002C8158C3EAA825A786077C7305484CD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T22:20:42.463Z,Confirmed,ZRX,IN,0.000000000000045305,,FE359DFB8B8C68B55094A68184E34B4022C32D53A42986D7B2A984A73B02EB3A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T11:01:01.848Z,Confirmed,ZRX,IN,0.000000000011284578,,BFC936B9692194C4C8036B9D60C15599F10ACD540CC95C60172A4F724A063F58,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T09:42:11.943Z,Confirmed,ZRX,OUT,0.000000000006793824,,FF620D2B20E2160CF72EC10F1EC011219EEA5399BF7C9293862DFE632256E080,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T07:07:05.873Z,Confirmed,ZRX,IN,0.000000000000855199,,A24B713CEC3CEE61C0C6B9F337CCA10C8CF4B5E4978CA1745AF49DB340C8FBB2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T21:10:21.731Z,Confirmed,ZRX,IN,0.000000000001743248,,0A93BA068D20774FC7E63C03FC81A09539BC54B463EA8B38E2691593FBF6DF5B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T13:13:16.665Z,Confirmed,ZRX,IN,0.000000000010231183,,1E5F58AAD7A6BD35E0ED08C2FF105B74711EBB8DBD83D6EFB1DBDFD0F3A37AE9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T12:19:59.015Z,Confirmed,ZRX,IN,0.000000000000251166,,298EF0A6CF72AE1785082BF6B86522A4E0D3EE83B1C871D6B61968CD677790F8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T12:16:19.121Z,Confirmed,ZRX,IN,0.000000000000001231,,E911AC3427EC507A25160025F17D2D38C2729BF711A66008A768E10EB2613865,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T11:38:37.586Z,Confirmed,ZRX,IN,0.000000000001308394,,6123C27F16317D1D6F79695C88D08BEFCA66222CD1B0F5EB6C9C3E1E67340C38,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T11:28:20.027Z,Confirmed,ZRX,IN,0.000000000001203274,,6CAE69E58B35D54A6B3BCBA5856AA5AC77969A959418017ABB40121613C3B7F6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T11:25:48.934Z,Confirmed,ZRX,IN,0.000000000000003011,,E1F32B6EEF2149DCF9175E9BCAA7225EFD8872346017E89ADF6754B921E1480E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T09:56:57.483Z,Confirmed,ZRX,OUT,0.00000000000001752,,87FFF80741D7E32E0BB0C7D1B1E1FA8183C5CCBE8C8BD544D0956146260D6B6C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T09:50:11.207Z,Confirmed,ZRX,OUT,0.000000000000315909,,165C60B785666E624625A5B488AF1C31BCFA7DA027A58FFC5CC1630FA606B50F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T08:32:24.510Z,Confirmed,ZRX,OUT,0.000000000003514282,,568BC9A875D8F0A4589AFCEAE5C01C8A9DA671C473597756F886EE3ED306984B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T07:26:25.412Z,Confirmed,ZRX,IN,0.000000000000101288,,B032B15E2AE9196C507A241AE4A627DF65DBA41DD5715C3B7403754CD608D9C5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T23:25:54.922Z,Confirmed,ZRX,IN,0.000000000000943073,,9280D8CA4BCF1F1E09F4AAC91C86F8AC9808C302E13EA495A491666580834882,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T23:21:08.975Z,Confirmed,ZRX,IN,0.000000000000647285,,DC87440D008A7C32D3CC5241674ADE8D6B2EE0CB73D3F6144E09C3F0C0E70D96,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T08:22:21.528Z,Confirmed,ZRX,OUT,0.000000000000841511,,89CA5CBC6F15D451DCB5E60F38DD7D1221DDC21D4A9BDB242960A9D1F1D6BD53,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T06:15:04.946Z,Confirmed,ZRX,IN,0.000000000002468142,,98EAC3F016C056181BA05F2C76942FEBD1D36DCC1C79E8D614FA7EE647711C5E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T03:30:32.790Z,Confirmed,ZRX,IN,0.000000000000434306,,BCB1955A1E87FDDB89F7818DE535DBAD77A9DAC83FF7130827EE99A791CAFD91,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T02:04:02.220Z,Confirmed,ZRX,IN,0.000000000001878208,,8726980FE44A3294DC76B5138CA318DBC1C75700D71DD5CE7181E9402B43F983,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T01:17:31.368Z,Confirmed,ZRX,OUT,0.000000000000756785,,2A6C2287B4F26E1E19CA28CA3CFDB8B96C80DD1C7DC329F6096F05DF833AAFBF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T15:14:59.944Z,Confirmed,ZRX,OUT,0.000000000002696313,,F031D4FD8C268F7093E28503BB44D0C900791B1865550B802E588A71690A4B72,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T12:40:55.514Z,Confirmed,ZRX,OUT,0.000000000000517663,,8D16E03FE141C1ED854EE74143DEFF5577B4A766EE3E0EBA2A3D76F42E4795CE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T10:13:18.910Z,Confirmed,ZRX,IN,0.000000000000523549,,E1E7587EC10128B4AEE3F1CD0DEE9690090101FC08DADECD6939EC739F7A6D76,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T10:02:49.296Z,Confirmed,ZRX,IN,0.000000000000097044,,ADC42CC8CA35073334D644DFD1AA128F74EC7FCE2C850324EFD813E8E5B1BFA7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T09:33:37.760Z,Confirmed,ZRX,IN,0.000000000000084178,,2986375EE32810876A18717F49402FBF3D2B9E92F15679ECA55E9EF56153EF23,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T01:38:47.138Z,Confirmed,ZRX,OUT,0.000000000001070094,,ECE39E2E96B0A842325847741467CED3B5C7AA4FC7210AF303CBB5FC0CB4BA2A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T00:38:02.785Z,Confirmed,ZRX,IN,0.000000000004241777,,922533A5A32C24242F692CA844D44694C5F99F55CCAA14FC9678E979901689C6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T00:26:24.118Z,Confirmed,ZRX,IN,0.000000000000984546,,1EE4DF1A5B002CBB8484EA29EFA8788C750D8C99C477769C4FC8A2DC99098885,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T23:23:59.315Z,Confirmed,ZRX,IN,0.000000000000664805,,92872206A10685B61E62DB46BC7CB9AE88270F837CC8C798BC945A9D5A1BA9F9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T12:06:57.032Z,Confirmed,ZRX,IN,0.000000000000071449,,34633881245EFB462A31F0998C770367DDE7C0D70CE02475ADED615D190680CB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T11:17:01.301Z,Confirmed,ZRX,IN,0.000000000000835762,,24E54C565B3636EACE90342AA914F44EF92F30AA35DCC028E63CD924B0D72119,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T04:49:52.581Z,Confirmed,ZRX,OUT,0.000000000005060841,,4B984D8C4F1566A6A25B48326BC6480855FA29BE52CFCEBF792634B9F0BE6251,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T03:11:30.575Z,Confirmed,ZRX,IN,0.000000000000222559,,697A2252EDAA266634A0FF4576D9325A8765205E2D9BD7F57E6DDA22612E69BC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T02:23:49.266Z,Confirmed,ZRX,IN,0.0000000000006685,,306059115B1A98C94361E648A9DCF6BEB280A03B8223524D520D5E4A98858A93,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T16:08:53.726Z,Confirmed,ZRX,OUT,0.000000000004553306,,87FB61CD1B1938DBF0827DAD5686003A0A11056995956ABD21D1126EDD36CA68,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T09:30:52.628Z,Confirmed,ZRX,IN,0.000000000001289916,,96432434D2C91FB4541DCD1A4619BB7CA21AE109C5B4350AF4E696B2FD84B41A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T08:56:54.897Z,Confirmed,ZRX,IN,0.000000000000416649,,FB8B68AB042B5B03B1F4FC71C59BBD8C7C73D2733D933CDCF50A64CD387ADD25,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T02:55:00.123Z,Confirmed,ZRX,OUT,0.000000000000057214,,29408C87E7B7649D46D02D4C6D62B6F4F55F069481A084EBDEA2358F08D00E1F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T02:24:22.383Z,Confirmed,ZRX,IN,0.000000000006142706,,A1E92B4CC4B7EEC2F39702B9D743E90F672359B5DD60769D319B5D076F7F000F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T00:52:54.968Z,Confirmed,ZRX,IN,0.000000000000098824,,535E6E2CE1294FF92358BB6EB1BDE79AC12D8EBF7BAF69A71B3A939492321D40,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T00:09:13.220Z,Confirmed,ZRX,IN,0.000000000000102519,,7E313723AA42EB7C1BC2FB4CC807484AE18F1A3FB78347ADF6D2508FCDE8FD98,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T23:05:14.102Z,Confirmed,ZRX,OUT,0.000000000000807018,,A55D8F7FAD4DB7882715D9B28FF9DDDE853346C45F6817D4082A0B998C3CCB18,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T22:50:23.446Z,Confirmed,ZRX,IN,0.000000000001579955,,DFD339C5D316DD894D3A69E2AC96B13AC11F516D2A154D215A06E380ECA6F9CE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T13:13:17.203Z,Confirmed,ZRX,OUT,0.000000000000269097,,A83AE16BBE3F50F2A0FBF83DB43166D7A6468C308413453B6BA08717A3AD26B9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T13:10:11.729Z,Confirmed,ZRX,IN,0.000000000001460052,,39B8FE7D8088B64D2FF99D5E2CB43EC5BFF51E799B3115B952D056A681C48BE6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T12:33:40.574Z,Confirmed,ZRX,IN,0.000000000001394352,,B3B077D5CEC788D4E3E0FA603469C789EACBF78414E7BAF5823474532F8F1677,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T03:13:11.735Z,Confirmed,ZRX,OUT,0.00000000000027334,,B70C3FC3925EA0B6972B6BC2565C10A1E128F1EBD13435897F0E24179941C2F4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T19:34:05.370Z,Confirmed,ZRX,IN,0.000000000000818927,,B1C0F34EDDA7F357226E1006F72EABB67596F328601C074400E14DAB933C2B4B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T18:29:18.856Z,Confirmed,ZRX,OUT,0.00000000000128143,,C93D0D4A8BBD28972C1DE34D23DD234941A296C6FEFFE1E896CB410E6069A08C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T18:21:51.556Z,Confirmed,ZRX,OUT,0.000000000000296472,,B9E77C57A131A0F89C9FFEB1CEDD0F752A678F8EA85EC2E7E67D75FFF3760054,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T18:14:46.727Z,Confirmed,ZRX,OUT,0.000000000002317852,,EDEB4164234F30176B4D85ED031339C4D04677705174F0B941E53C17EDD03190,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T09:00:27.442Z,Confirmed,ZRX,IN,0.00000000000042582,,5C1E5237C756E4F43C13D5519A1ADCD6A35708C9A63CFBC35855F744477317AD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T07:43:39.913Z,Confirmed,ZRX,IN,0.00000000000000479,,53A786D63C208B7EAFD064AC17C834E83F59FEA151D70F96DF678B4184C30204,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T02:43:19.006Z,Confirmed,ZRX,OUT,0.000000000002823334,,5081DB0A055564FDEA187E22505090392009AE49F99A90ACAA0682071AF712B8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T23:48:15.598Z,Confirmed,ZRX,IN,0.000000000000165619,,DF125EEDEF4ADEBA7C6C8F1822DA7C8E13C957AFA7405556811C5A88AB95DE22,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T23:47:38.731Z,Confirmed,ZRX,OUT,0.000000000004939432,,86A7429AE0D9436A3DD909AA622DB63FCDEBDD55EBD9F63D86BED1914A158448,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T19:25:27.547Z,Confirmed,ZRX,OUT,0.000000000000045853,,273EFADACED1026A8372EA92D6125F681590247EAACC97DEA425E33567BEB6AA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T19:24:31.435Z,Confirmed,ZRX,OUT,0.000000000002185767,,AFDBD59412A07F18E19EF1CA45D40DE3BF063BBFD596A016F9646B82DC9A6831,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T14:07:06.843Z,Confirmed,ZRX,IN,0.000000000002258585,,0CA5861C9D77D6DCC6459A2A050797F57383A9DCEF7F88DF261711CF9F105B50,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T11:38:02.601Z,Confirmed,ZRX,IN,0.000000000000024911,,2E3AF37DE9215883513AB68602482D2D00041712E24A4B1DC6057ABD2A1A4D86,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T10:56:09.057Z,Confirmed,ZRX,OUT,0.000000000000551745,,B059936994AE49CB563F0468D07A34D59B7FDA6081C28A7306D0C8B680434E53,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T10:10:08.592Z,Confirmed,ZRX,IN,0.000000000003518799,,7DBB848DDDD0985929B8194E48EF01A81CEB8538E1720BE29FEE589F93B14AB4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T09:04:11.594Z,Confirmed,ZRX,OUT,0.000000000000489193,,B765CDFBDCD3F23F59ECEB773872CF4ABBA6FF096CEFFC5105D1F9DA676987B4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T08:55:48.799Z,Confirmed,ZRX,IN,0.000000000001862056,,80A0DF41922982F73D2E55A20033ED8F30C9400FC3C11A4D6691350B87AEE0C8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T02:36:17.148Z,Confirmed,ZRX,IN,0.000000000000019299,,812CC486B615DAD70AA282C4C259D465A906A4CA1186FC0BA25EDB641B14914F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T22:53:41.978Z,Confirmed,ZRX,IN,0.00000000000007227,,9028C09F7C75CAF71A1F7055726919C66969A7A1CF74CF843765ACDBD9981123,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T22:51:27.705Z,Confirmed,ZRX,OUT,0.000000000002015631,,1C6021FF13D555B5DA0BBAF7C7EC36E2130A5D22349850F92210C8379203AA34,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T22:32:34.133Z,Confirmed,ZRX,IN,0.000000000001019313,,27BA83D54501E69EBA0BF5E48D30EB254A8F9EC7A6775B51EA7B144B702D0E42,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T19:58:36.127Z,Confirmed,ZRX,OUT,0.00000000000943087,,2CD39C1FF8DBC7B17EB7CE868488CC00D35E14A20735EF73D86EA63B458B1620,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T18:18:12.817Z,Confirmed,ZRX,IN,0.000000000000222012,,5492F4106BFA72B9811198523A6B226E9E471617DF9F14DCEF6785787CE5FADC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T15:01:02.255Z,Confirmed,ZRX,IN,0.000000000001142227,,1307328C475DEB04575A0ADD640E8CC56EAA24D3F66BCAB9325D14A32B84D92D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T14:05:39.065Z,Confirmed,ZRX,OUT,0.000000000000213799,,75E80B5FF5F01B2C597AD459FFB5403A106D0DBE33C669C1E319E9F03EC6C35A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T10:16:47.114Z,Confirmed,ZRX,IN,0.00000000000367429,,496A2F2A91E19245408610293EE79F106C44C1B5661563CDD584EA1853441224,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T00:12:33.761Z,Confirmed,ZRX,OUT,0.000000000001393531,,9F6F2E0E5DE28C83AC66DB43A5872115AFA449F9C899D2F5F06A28AF320C70A0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T23:06:22.599Z,Confirmed,ZRX,IN,0.000000000003252029,,439F5D36C2B9FAC22389577DB22688D606876485098B7AC84338D89FB855D47C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T22:42:40.840Z,Confirmed,ZRX,IN,0.000000000001436373,,B54FEF300E41F8B0ACE11F7E9D77AE3CCEB5688104BECCC9A96E85C607A272BE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T22:22:34.929Z,Confirmed,ZRX,OUT,0.000000000002500992,,39634F76315CB37B785E293405825DE34DD6277C1EC96107C0397D1205773B8C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T15:03:13.997Z,Confirmed,ZRX,IN,0.000000000000166577,,2532801D53180E3390E48859E05DA919AA77A8DC538D8137E6A3E5BC7F1172DC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:45:54.864Z,Confirmed,ZRX,IN,0.000000000000021215,,34C35BD626BEF8C83E4E5DC95F2258050BA8CE49E58C40AC578BBCD47A6306EC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:09:43.008Z,Confirmed,ZRX,IN,0.00000000000323752,,392882025031A0CA93C2D181ECA34E21F4192CD8104C057D8927808A051F4ADD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T12:52:55.080Z,Confirmed,ZRX,OUT,0.000000000000317277,,AA99BE8F2079685A001CB4B29240DD80AA8C191F593F157E24884686CDDB8FCD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T09:26:08.197Z,Confirmed,ZRX,IN,0.000000000003834161,,780C571DCBAABDBD05ED5F70BA1C02426AAF3E8AF505105E58E1582ED12E3615,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T09:20:04.846Z,Confirmed,ZRX,IN,0.000000000000077745,,85476436EC5F2234D7B77DF50C581B2FF4ADDA189AA31D2629595977FE873EDC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T02:09:57.260Z,Confirmed,ZRX,OUT,0.00000000000533555,,2174F911C09DD875967C4E90FAC120A20A56451376A39686EAA575355F111A0B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T21:16:41.461Z,Confirmed,ZRX,IN,0.00000000000250633,,E138885D4CECE3B137F884D96966AFEDA980E91A9EAEB88F094659B077A28998,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T19:40:24.313Z,Confirmed,ZRX,IN,0.0000000000000245,,1AF4F578341209DF7B2F4FB0D983A6397C9F2CB7EEF9E34D074CDACC9B6D8A1C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T19:02:12.838Z,Confirmed,ZRX,IN,0.0000000000027267,,81FFCC16C833C8C0359A5D1EE98933E25B0C80C7A288C7FFC3F2AFC57CC163DD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T18:00:53.041Z,Confirmed,ZRX,OUT,0.000000000002385195,,C8A32D94B6A0BCC3FF596822DA1B048F635801BE1B77391896B1509073DC1938,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T11:09:00.632Z,Confirmed,ZRX,IN,0.000000000000508493,,36D86D65916C913BE1787CC3D7C0BDE4093698D7F86DCF9347B6D80BD9DEB592,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T08:38:21.311Z,Confirmed,ZRX,IN,0.000000000000820159,,ED91F70911F2F78823DF16729D026242E12A4BA5833B7EDF60C41C17B0AFA033,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T08:10:54.513Z,Confirmed,ZRX,IN,0.000000000002185493,,D1EC0F681291A9B699F284EC90C8796B2A5310962182D3B2892BB4F9D14E66C0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T06:30:41.838Z,Confirmed,ZRX,IN,0.00000000000092131,,CF0AD043E03151644CBEC911E7D699E4C6C36CC3F071B1B320FBA3E9B3272432,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T03:14:57.545Z,Confirmed,ZRX,IN,0.000000000000628533,,2C8CC9DF280D1F18E209024A979BA098E3781C5914FB77E1A275B2C8FABFE89D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T01:11:51.552Z,Confirmed,ZRX,OUT,0.000000000004797081,,D38128B964D17A080D82CDC9C784D93FBB68F7DC91F98FD72BDB7EB37F313373,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T22:50:15.855Z,Confirmed,ZRX,IN,0.00000000000181894,,A03A173F85D7DCCC7D5CE6FCFE7C4349A6CDD429AEDD1B4829DB689ACE8CB1BE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T18:20:20.433Z,Confirmed,ZRX,OUT,0.000000000007827098,,132F0BE666DAD3B231B201AB5260C091EF5E44B228104E2467A4EBD01BCC77F6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T12:27:57.772Z,Confirmed,ZRX,IN,0.000000000000278268,,D280C3425508D0D3A3B269883194ECCEAD125A3ACE4B44BFF63B8498CAC987E5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T10:41:15.761Z,Confirmed,ZRX,OUT,0.000000000000160007,,CE745F0C56321A116938989F1387AB8E8F6C94E35709F34A67881D55550C5E98,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T10:02:01.771Z,Confirmed,ZRX,IN,0.000000000000235152,,3AA7B3C0095C09127F7533EACA11E092745011CC3893AAEDA0C988CC55ADDD03,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T09:35:48.484Z,Confirmed,ZRX,IN,0.000000000001018491,,C36721CDD505CCD78A55EE55E11752EA31334CC1F1EC216C593AB1C7DFA6E7E1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T09:32:30.931Z,Confirmed,ZRX,IN,0.000000000000023268,,019934E7827C287CEB3461D35DFC16FE91EBB3A901FABD29907B32901D0AD9A4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T09:29:48.141Z,Confirmed,ZRX,OUT,0.00000000000511518,,8596C85E0761CFDD4BA53CFEF899A1CCD66F6ADE5805B2ED13563B428A98583A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T08:57:46.301Z,Confirmed,ZRX,IN,0.000000000011704512,,7669ED328664E5486466659B2D90D537D53C7F9212B80787F3BAD71248AEDC9C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T08:56:57.474Z,Confirmed,ZRX,IN,0.000000000001849327,,D1EE01506A7DD189ABA1C5EF0695DE41A6E148ED79D86F135A62C4C8C3E96250,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T02:41:40.770Z,Confirmed,ZRX,OUT,0.000000000000002463,,8EB72C5B21419ECBC68DAA062F48F8D818C1C2B3C2C496F60CF3CC73223901B7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T20:47:29.351Z,Confirmed,ZRX,IN,0.000000000000351496,,A2019839E469F39A1C039C86B7B169A9B3E9C00FC32BA17337801C092171FF53,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T16:18:44.015Z,Confirmed,ZRX,IN,0.000000000000786213,,90A2B3AB1177B2D318303A59451DF1BAACE61144F76A7EB8C8A1131F4DA4EAB7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T13:12:30.973Z,Confirmed,ZRX,IN,0.000000000000012729,,18E2740124B565D541559E7CB9F31EBE23BB30DE6A15AD2824BD3EDE634A82ED,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T13:03:51.832Z,Confirmed,ZRX,IN,0.000000000000045579,,BB7C21A8B54AEA12B3E5BA6C0EBCA8F13F70868C60053CE0A5D1DCBFB04C21EC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T12:13:40.937Z,Confirmed,ZRX,IN,0.000000000000337535,,E1EB3490ED75A620AE1B43CED6AD33667672DC82106E30A6ABBCC542827E29CB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T02:26:38.747Z,Confirmed,ZRX,OUT,0.00000000000144746,,78A321C02B6B46AB7E0EA19AA8A426BAC465E512D20025C79DC9463C61BD3D35,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T17:36:34.118Z,Confirmed,ZRX,IN,0.000000000003857156,,8D945C08FF6B968214F6F618E6B192F153A23A625B54CCBFAD22DABA9FC9E9BB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T10:04:48.776Z,Confirmed,ZRX,IN,0.000000000001870816,,F9F34A11C02D41E6248116E5E8C8EC3DBEDCF73813ECC4F11572BF0B253EA547,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T03:30:18.581Z,Confirmed,ZRX,OUT,0.000000000000465787,,9D316248FC8953C9DDCCB562B1D29A9D735E2F72A706B95F43F531E2B0CC3684,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T16:22:01.833Z,Confirmed,ZRX,OUT,0.00000000000003983,,1FEB06AAE084AC3408CE055A0DB8FB1E0C0866F6CC074073A8A22144B9FB69F4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T15:06:45.297Z,Confirmed,ZRX,IN,0.000000000002791031,,CDD795BB7FE491B940A1A3617E9AE733818A4F9FAD33CA1EBA2C2E693A5AD94E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T14:19:26.100Z,Confirmed,ZRX,IN,0.000000000000039967,,D6D6664F6D091B9E80EAC9D28AC2E8DFB5747460C902ADFB6AFE8D59D840237E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T10:40:50.000Z,Confirmed,ZRX,IN,0.000000000003666899,,5FD191F81B07614484B5DCABA4EE1873008D3C18A017A75AAAC447A4061E5C80,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T03:46:15.514Z,Confirmed,ZRX,OUT,0.000000000004972967,,F39752DF7014DA5DD83692580043022E327E7A5EEC19F0E55CD58BA3CB3E4DF6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T20:16:13.403Z,Confirmed,ZRX,OUT,0.000000000005037846,,EB282682A90FACF73E37CF86B6285A981E75236F72D89FCF2A3BFF7302F56415,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T20:04:09.503Z,Confirmed,ZRX,IN,0.000000000000068848,,1A7167DB8C3F11888C5419AEB62FF2767FBF2BC0C1B94A906954E4DF95D67C10,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T18:56:19.968Z,Confirmed,ZRX,OUT,0.000000000003275708,,B99805CD9EE51D0614291D10B14DE1312260D1CF8BEEA9DB277FCDBE7E69FE6A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T17:06:59.240Z,Confirmed,ZRX,IN,0.000000000008477805,,FF21F28D854CACE18E451D5C0E375BF4900702DEDF6278C160AF82868E2536C9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T16:58:34.830Z,Confirmed,ZRX,IN,0.000000000002308955,,A6EA68057041426252C9DD60F5D41C4A9D0C46543D5A79E845A8A48615ED79CD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T13:32:41.289Z,Confirmed,ZRX,IN,0.000000000000011086,,7E4957FA0878688E34524A7CB23611A71FAF75A36AAB5BB632FFEBBCA97531BC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T13:15:28.946Z,Confirmed,ZRX,IN,0.000000000004599433,,0D77AFA1D2441271B34E99C5D3FD69E39EB93E2E939004A7D97B0DE8E3CA76DB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T12:30:17.437Z,Confirmed,ZRX,IN,0.000000000005740976,,5CE0CB9BC768CB38FF99999E808C5CEFEA761FE49E122B5F1ABA32B2BFA9D2CA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T12:21:02.148Z,Confirmed,ZRX,IN,0.000000000000831109,,96D10442B4D68EF0141146491B1928C68470D8177A4CCB1A055C1347C559A4A7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T05:40:27.816Z,Confirmed,ZRX,OUT,0.00000000000088011,,94152DE463F60C28202DC346DA746BEAB299FD195F3A1A5520C510ED45FC9379,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T05:09:38.914Z,Confirmed,ZRX,IN,0.000000000000332881,,C3933919BD4F2B939A15FB90EEDE328731936715F4DA7540EC0009BFA1942CDE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T04:17:08.209Z,Confirmed,ZRX,OUT,0.000000000001801147,,A521DD9B67DAE76985E13CEBCA2513637A4D6259459E531BA7E0902EF1B96E80,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T16:14:42.617Z,Confirmed,ZRX,IN,0.000000000010731463,,1ECE275691297862677104BA5503C8A04A7E34F7633E056BC727A1B68A6A5AFD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T08:48:31.340Z,Confirmed,ZRX,OUT,0.000000000001330842,,4B3B0BCDC2D47F9C4259BE253C277A29ACE12C56EA87381EBB3290024BB8A21C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T05:59:44.610Z,Confirmed,ZRX,OUT,0.00000000000005913,,6E12851578661647FC707A56ACACFFE53EB89E599994F032D552BFDF6F38767D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T05:05:41.719Z,Confirmed,ZRX,IN,0.000000000000826729,,C94B3DB159A28241E0A3867CEE6CEECCC1DF03E5AD868568382851821100AE9A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T18:26:19.309Z,Confirmed,ZRX,IN,0.000000000000209693,,DEFB73809ABCC32FEE9DBDC1BA2D51255F4B802CC11927BFE49E39DDB37F1165,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T15:25:36.662Z,Confirmed,ZRX,IN,0.00000000000308066,,580F807CAB52643C56F7E9C34857E922B8343E7F88EC261EBC6DC3A083DD47A3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T10:50:00.113Z,Confirmed,ZRX,IN,0.000000000001675768,,E9021E387B86E89FEA0E9866F24A8FF0BABA2C07CB0F23FA6B9094EBD551DA72,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T00:38:52.228Z,Confirmed,ZRX,OUT,0.000000000002005091,,F34F32E479FB10FC868FCE89BF3FDACBB831A275EDCAC309FAC677097CEDE1BC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T18:55:23.812Z,Confirmed,ZRX,IN,0.000000000002552731,,BDED71FB6C3E6E1AE5F672EF40E7A0E3D83F5E30E28668AE977E9BD02C6F83CA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T17:41:21.582Z,Confirmed,ZRX,IN,0.000000000000911728,,C8DA31624C00754B6A17FEAD30211A42CCF62F318A4080732E17102667FABA24,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T08:47:15.905Z,Confirmed,ZRX,IN,0.000000000000638935,,CBE03842CF304DB01E113D98271C9683B5A55E72E5F10785234E5E4AA52DBBDA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T06:13:34.182Z,Confirmed,ZRX,IN,0.000000000000088147,,0C73B5A6A0B084246BFEF5ED5995D73C7081E0C8ECCBDCFCB95828C22286280A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T06:03:16.496Z,Confirmed,ZRX,OUT,0.00000000000249538,,5EDFAA10A38E0A80BC84093A43FFC4BEBAA5D80F7DBF55140C069F4C5749A40B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T04:49:54.066Z,Confirmed,ZRX,OUT,0.000000000000141529,,55E75694D6D4D03DA7783B5C7E73F536D78A8966880123BBA4C6CE6AB7D569FB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T19:06:19.304Z,Confirmed,ZRX,IN,0.000000000000659877,,F6F8B41A19DED853468ABBBFDA30C094A94FD9649F9EE4C07248BF02F9703364,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T18:39:17.580Z,Confirmed,ZRX,IN,0.000000000004159514,,8297ECF616A7BAC2B0008A5CB4618BF983C2C297A3DF683BBC12388787C853C8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T16:06:59.464Z,Confirmed,ZRX,IN,0.000000000000279226,,A1A12059AF4FFC5FBD1FE5B38787DF2A3F937B8C792A7A467E1629CC0FCB0F3D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T14:26:42.776Z,Confirmed,ZRX,OUT,0.000000000000078019,,D622C6F9F283841451587FFB2D0A41D28B395998BA2D6D820180E5C0A908A155,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T10:03:33.288Z,Confirmed,ZRX,IN,0.000000000003791729,,D74E711CECE49B4F6CD308F116FACE18761A162929D050BF19C9CC41ED269331,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T09:15:26.030Z,Confirmed,ZRX,IN,0.000000000000862727,,61F5BACD1670FD44B6F481531AD493DD4087936B34515959E5A63A9E6FE4A721,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T09:10:20.958Z,Confirmed,ZRX,IN,0.000000000013024678,,0850ABB926E429F455767D31399377062B9B35EBD25AE8F25F2088D9C7AD03F9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T08:33:42.548Z,Confirmed,ZRX,IN,0.000000000000227624,,9EC3D1C273C38A793E16044F79A8F8696B3155B74244846C74D9113096ABEDFD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T03:17:34.656Z,Confirmed,ZRX,OUT,0.000000000003725345,,3537F337A6F05B0194EADF3689FCA725F5735F327F4632D73325639405EF404A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T02:36:39.503Z,Confirmed,ZRX,IN,0.000000000005513078,,30B555DF97AEE7D49967F8822CC9BEE100DBEF778286F7C9E1BABB0F12213666,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T02:36:26.215Z,Confirmed,ZRX,OUT,0.000000000000778001,,453992DE456B5975B7B0E3DC7B28E35AB6C2B2601C3FCC9EFD44136BC952E599,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T02:29:46.249Z,Confirmed,ZRX,IN,0.000000000000214621,,F66CECD6CB28CA4031C09FB6A3CA3B667E94560A1D12FC4509AEEBD16D5FD74B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T01:42:19.237Z,Confirmed,ZRX,IN,0.000000000001569005,,0AD1C7FE33F3F46E9365E08E0B62CCF959E5768EE0F1AF974694C0DABB01765C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T23:41:31.824Z,Confirmed,ZRX,IN,0.000000000000773621,,3E57EF73A33EAF8F6BA66D26962BD9631EC27E3B64A81BFD9900FA348B7CA9D0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T16:59:45.598Z,Confirmed,ZRX,IN,0.000000000000245691,,E7D9C9E5D4DC6396BEAE7DC7E1AD69E7D477203ACB9E2A8E5F8D54BC8D4BD089,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T16:56:32.467Z,Confirmed,ZRX,OUT,0.000000000001175351,,C51606835404BFE1B7B23467842D2104D73EE299AAAEF96B917BA864FDFCAD14,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T16:33:24.784Z,Confirmed,ZRX,IN,0.000000000002441862,,F52AC202B4045BEF4F33A41A4A9B01D7D64B6D5310A9E66A9294ECD5FB039EC6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T15:55:50.176Z,Confirmed,ZRX,OUT,0.000000000000228856,,338117700CEDE50C431E38218C0021264CE2EAFA92E872A728871BA8221ABD81,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T14:32:53.005Z,Confirmed,ZRX,IN,0.000000000000634145,,209885EC2DDD23DAEE82274CE255C46D3C5C024D3BB2065E119832ECC49C2316,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T10:49:10.379Z,Confirmed,ZRX,IN,0.000000000000480159,,FBD4FE592A89D54997BE0D2518D526F00B4DCA050B5D1FE3EE606CB6132DF00C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T09:09:12.916Z,Confirmed,ZRX,IN,0.000000000000562285,,5F4D620D1C379B79CBEBEF2C3EBF540EB5E864E24B864C5E74C9FA267F4023A7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T08:40:23.919Z,Confirmed,ZRX,OUT,0.000000000000029154,,D7D46FBC5D53D59A76CD4BCD51766CE134BCFE2F7350A318734506F72643974E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T07:51:36.965Z,Confirmed,ZRX,OUT,0.000000000004413966,,4070524C0B47E94561AE85AD562E547764BCD3C7883794654E7BAC38AECD12F6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T06:30:39.948Z,Confirmed,ZRX,IN,0.000000000002188915,,AA28307E8C58E58F3760A13A8B5BCB309E9DC04ED249C3D56BC9D32B6A392759,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-19T12:22:57.310Z,Confirmed,ZRX,OUT,0.000000000000976334,,680CC4DAED1EA719134A6D39EE0EDCE3892EA65A698A75A87627C5639CDBC513,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-19T08:30:47.666Z,Confirmed,ZRX,IN,0.00000000000324409,,9114F26979127A322D239E3410F6099C579ED08D9923A8BD15E53E27E5DD8DF7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-19T08:30:46.250Z,Confirmed,ZRX,IN,0.000000000002815122,,5BA853C3F4CB6524B0636C08E964C9EA530DB716A5B411443634E9C51F24BF31,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T15:40:59.576Z,Confirmed,REP,OUT,0.000000000004616269,,1308AF3BC664FB1FBC8D878172FB33C89E3CDC82A29C6AF7BB43EC035E323C0E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T09:26:27.272Z,Confirmed,REP,IN,0.000000000000113606,,9A941730CB228C7717EC95E337D99E2AC0CEE3A6BAAB87185381E18F9247F1C2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T08:59:27.969Z,Confirmed,REP,IN,0.000000000005304753,,F4F32397CB5473D748E882A44FE733B77E7542465704A973281B4A99FED59616,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T08:58:19.818Z,Confirmed,REP,IN,0.000000000002171258,,4D7FC71D861A2A79731F1614963257C77B34C6F08A34455B1F76356FF8C2F083,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T08:11:45.049Z,Confirmed,REP,IN,0.000000000000426504,,1DB3E56994A81EBC2BC7410693D953CC4F7A0D03147C221BF8D60ACB23C58DF6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T07:43:57.276Z,Confirmed,REP,IN,0.000000000000725577,,D901CFF3C3916F2D84FAEFF648087E76CB7D358CA23243A5A98D5839296D035F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T00:30:42.033Z,Confirmed,REP,OUT,0.000000000000313445,,DD45448C5906F7BE5880B07E6F39397DEAC8F47BD5E9EE9F94342D309155CABE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T12:54:17.061Z,Confirmed,REP,OUT,0.000000000000131948,,F96CAA7BE7ADFE937B6D33063D6036BA29B89EA9E9DD9A036A11D4677F30F378,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T12:45:23.786Z,Confirmed,REP,IN,0.000000000000185603,,B0BF2FF084664DD76B2727D7DFDFB41C4669C1CDCBBA2B57EB5DA8EF2CD7B040,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T11:58:12.583Z,Confirmed,REP,IN,0.000000000000076102,,8BE29DFAB8D50D8418AD133E5A8F38392E16C28F62ACAE6953C33DC41443A526,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T10:26:24.764Z,Confirmed,REP,IN,0.000000000002180977,,06F010F6C3A5CB63427BF2FEE5FFA5EEA319531C34F23CD1B21D935033E675FC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T06:54:12.603Z,Confirmed,REP,OUT,0.000000000000518074,,1C5807249B9755C36A98C6017B2942732B0E6979E9BA5CE3B0D1DE87F952CF60,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T05:31:19.827Z,Confirmed,REP,OUT,0.000000000004091898,,8190450866A5CDB6776FB2C1E39747B63648307C3B215097B98C95AE1E9A5BA6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T05:15:38.154Z,Confirmed,REP,OUT,0.000000000001430898,,1442340521D34969287FF7E7A1DF0DC355CFC9A83BB157C5F5CD199CF3DF0D2A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T03:46:14.774Z,Confirmed,REP,IN,0.000000000000604853,,478B3D5D6AD3490C70ED9F2F057C864F99E64E953641CEE37658B50983144718,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T03:24:39.642Z,Confirmed,REP,OUT,0.000000000000192447,,5A164FE025065FEC3B1CC7CC01AC537F01DF8B42D320749B55366741699F8C77,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T16:35:30.851Z,Confirmed,REP,OUT,0.000000000000339588,,0CBEC253A1C714102E401205AA68A29A8D25F5F7753C45A1CA39699EAF1C1392,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T06:56:20.687Z,Confirmed,REP,IN,0.00000000000290806,,AE309B65724A2F0CD4B96BB6D6145D24F5260CBDEA18321F2E2DB51C32744AF1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T05:57:00.171Z,Confirmed,REP,OUT,0.000000000007124105,,40A56E3554F0900EF3211C11944B0018B093C7EB73ECE46F7E0E6B98344DF984,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T02:14:00.479Z,Confirmed,REP,OUT,0.000000000001026704,,2B64B5E70FB2B62E2397B23E487A239986252EB0890448F209AF07885FDF6A44,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T01:10:41.846Z,Confirmed,REP,IN,0.000000000000011086,,58C7AD42A2ED6205DBF0A7DC10AEAB644311B18F77408871583E99F0DB82300E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T21:35:35.065Z,Confirmed,REP,IN,0.000000000009376805,,02194CA4FDE38901158D35A845B8F67F98713A42F0C1FCD267A07D17940C2CE5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T12:56:30.665Z,Confirmed,REP,IN,0.000000000000028607,,FA1C81E9E883ECEFB9DFD2E0B191E0F68B937602F39EFD16E547EF77F01DDE72,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T09:18:33.397Z,Confirmed,REP,OUT,0.000000000000451963,,C3B61DE854359B8363737ADA20064EBBB8D993DF1DD33AB4CDCBCE596EE6BF91,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T06:19:04.446Z,Confirmed,REP,IN,0.000000000000422261,,EE25AFFA3AF30F5A76BEEB3F55CE392C3CC5A7887558CF5EF5CA4745594AE558,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T06:00:34.306Z,Confirmed,REP,IN,0.000000000003591343,,F2BDEEE92ECCBEC5BE41313FE4E81991ACFA4D12D2A784AD6E5B4A277C2AC710,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T03:57:22.224Z,Confirmed,REP,OUT,0.00000000000175324,,6BABD6FF4C97FBFC5D6C30A44C5B259E80FC439383293F9D3438442D2D0B6097,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T21:15:13.426Z,Confirmed,REP,IN,0.000000000002228336,,7DACB05B7A88DE156581A2B3C665AD8C79A9495E090E7B85D516CB082A36B0F1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T20:32:36.348Z,Confirmed,REP,IN,0.000000000000170683,,3EC822D16F49F64A947058827B377B7FEEDE2C366D6EAB31CAD41CDB99A79285,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T20:28:38.903Z,Confirmed,REP,OUT,0.000000000000595272,,11557DD7CEAF43CAC2FC723BE01B783AA5E253416F74B1A6E2CF91BF85CB4660,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T18:21:36.303Z,Confirmed,REP,IN,0.000000000000721334,,D09466FD254E910EEB9035B5F65230679746690638F2C287FBCC7D904FF512CC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T14:08:47.942Z,Confirmed,REP,IN,0.000000000000376955,,7AE2DD58E8F772D6EA21BCE272C19636A2DFA62F320D04F63B8356CBA08B8181,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T23:16:31.310Z,Confirmed,REP,OUT,0.000000000000893387,,7F02B78389BB91F8BA60FEB6E462424E355B7D3D60D2EC315467C23682509E7D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T19:42:08.754Z,Confirmed,REP,OUT,0.000000000003277761,,EF4004BE168391646BE9005E52A41F703F5A80332EFE7CEA503A923ACC4F79C3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T13:21:07.153Z,Confirmed,REP,IN,0.000000000001922008,,B349E95833259AAE1BBE2071B9D0A4DC4A84166F0723DACC6CD7E9F4A173ABB4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T12:54:46.119Z,Confirmed,REP,OUT,0.000000000000474,,E17C411B6DB8780ADDBB64209A7EAF7D52F09F4A85997F7EEEBA3F8CEA1BBF9E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T06:14:12.242Z,Confirmed,REP,IN,0.000000000000524918,,4C4092442473F8CD75B890C6B219355E0A68D8FD58B655B9359390ADF8EB7C0E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T05:07:00.842Z,Confirmed,REP,OUT,0.000000000000821117,,234204C52113FCA924C7750826F2321B4E2128FB0AD6C1960FF5A2F62BFBD789,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T05:05:43.940Z,Confirmed,REP,OUT,0.000000000001621566,,EA9CA915E1876C96BE854CF2E8C89AA129EDF302EC70849B4E6BABF9351E6C45,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T03:41:20.320Z,Confirmed,REP,IN,0.000000000009316716,,52AE66F94F9024CB6A4ED74153E807451169C8C0A824826A08BBA173DC4DC87D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T02:00:01.832Z,Confirmed,REP,OUT,0.000000000002400388,,81CCA3AACF24807D8C575E2D1A0E68DEAFDBF8DDB563AE5C8E9172C3D0E086E1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T01:22:19.479Z,Confirmed,REP,OUT,0.000000000000878468,,7ED422D46D8A9430827774E166AAA8616C94C43474819D636F586D1A566E37D0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T18:36:30.669Z,Confirmed,REP,OUT,0.000000000000241311,,076FEB1CBBF1E93050050D32DB001E61726AEECF13B3ADAA0091370A34D4DC7F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T17:33:01.329Z,Confirmed,REP,IN,0.000000000000613066,,5F741FF07173F70FAAFBF121C19F54F59C8E25658D1F25328A08A25679EB7B91,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T22:39:55.599Z,Confirmed,REP,OUT,0.000000000007016657,,07AD53478BA8A29DF55794FE02DD545C38AF4B673DE7B535586EF3809815CFAF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T22:37:07.719Z,Confirmed,REP,IN,0.00000000000262199,,7C8BE76FB571BDBD1D5A8F0A268671DB8AF004672D8D03C4B4FE2D90E52D5FBD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T20:55:45.369Z,Confirmed,REP,IN,0.000000000002219165,,E274D98408B8E13DC1041A6D7D18CA0BAF9D31B1981F76672028C5EB766B9065,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T20:06:14.789Z,Confirmed,REP,OUT,0.000000000003240805,,23874C2E4122FB9BBF73C3E44517FFCD449BAA0A8C29FE929CD656D9DAF55ACE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T12:21:01.884Z,Confirmed,REP,OUT,0.000000000000710658,,8E89000BB63906AC676FEA0F26A32C02E6941A06992DEB257ED43F943E81054E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T12:09:09.131Z,Confirmed,REP,IN,0.000000000000713806,,20AEC66EC5DC4CF26A080F2C20AD910CFF77E4C1BB8CAB845C5F077BB8248E15,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T03:13:07.941Z,Confirmed,REP,OUT,0.000000000000238711,,BA66383E4BDC391E2F421DA676A5EC5797AF1BC5340460D147658A7EE877911D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T22:17:09.710Z,Confirmed,REP,IN,0.000000000000118944,,E19C7CC2AE4E3D1F8A92B3416A72DBD391FABA4ED9759BB202201205E34A634D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T22:01:53.317Z,Confirmed,REP,IN,0.000000000002049165,,4F6E16EE465E146282513581312C030CDF7AA261EBE68E146A354937CB03613E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T14:13:45.959Z,Confirmed,REP,IN,0.000000000000414185,,0558907DD3B80641934936340BC470B5BE1F701610B2919BC042CA290FD48408,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T07:39:28.453Z,Confirmed,REP,IN,0.000000000000074323,,4B142AC4CF88A7AA0ABF84D5BD151D20986A4B2727EDD09F7B465F0CA440EA77,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T11:19:44.975Z,Confirmed,REP,OUT,0.000000000005366895,,3CB07E8D14385AF7854CCB1297488E77F1E726CF688C6B813D70180D1B376060,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T11:10:22.174Z,Confirmed,REP,OUT,0.000000000005325558,,C5BAD94A5663E7FE080D860E1E20568B6E9CB6BC5466ACA8BEB752BE6C89DF8A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T11:03:50.720Z,Confirmed,REP,IN,0.00000000000112676,,7F15AFF86A784649DC855A5189333D322BDE87369F5BED0E6EA4145D1C56764C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T10:47:27.269Z,Confirmed,REP,OUT,0.000000000002358367,,E7FEF91BD0091C0E197C66142DEA4BDBE8CC1535AE0F607FBDB6BBB5D412F8F8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T08:58:12.110Z,Confirmed,REP,OUT,0.000000000002736281,,A5AB85D8AA8903EE8CE09447B0D35885424C331D3D7C82926944F77951314BAB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T08:51:00.589Z,Confirmed,REP,IN,0.000000000000011634,,0A684661B4FB264FB07CC8491D34C0A4CC3FCDE14E487BF51B534F7EB46432A9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T01:05:18.461Z,Confirmed,REP,IN,0.000000000000996318,,78E9E1DD61671604F122C34024CE1668BA4DB76B2915CA35924E3FC5296F160A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T21:18:02.843Z,Confirmed,REP,OUT,0.000000000000154122,,2420ACFDA8CA89791344CD2D79192965ACDF19C4F7A162890F46A29303B2AA45,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T20:05:09.693Z,Confirmed,REP,IN,0.000000000002850025,,E858E390BD04C2CC4EDD48D2B106FB2FF2B2B84022D78E65FDEAF6802738C8DE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T12:57:53.214Z,Confirmed,REP,IN,0.000000000000540522,,B510AF199915CC9B62FA5CE2CC93DD193ADA7B485413E34C80367E0F60DBFD1D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T07:51:39.300Z,Confirmed,REP,IN,0.000000000003142939,,21C5876B67449FFF85C83B2B3BE938634EBFE5867DE33D4EB89F984EE3DF8477,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T05:34:07.893Z,Confirmed,REP,IN,0.000000000000876551,,0ABDB92D8ED2716B1AE9A3279254C7B630091E4705543AFC00A194845D401B66,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T03:18:06.926Z,Confirmed,REP,IN,0.000000000000059404,,372F0CD3CEADFEF0DDBA4F3556A794733B12D2A648306B2F8DA7F0C323513550,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T20:15:31.817Z,Confirmed,REP,IN,0.000000000002024801,,8EA13A12647D1068FD4ABF83BFBDD9EE3779C7DC1062D57A8B52256600333778,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T18:14:10.456Z,Confirmed,REP,IN,0.000000000004360037,,073383AA23584479ED37A7BD5A8719469F6312EFA62E84E719E960636285DD1F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T13:55:58.853Z,Confirmed,REP,IN,0.00000000000025582,,774F532A3F59516ECDC13A8F57D2C8C05083FAC4B4BC9733CB050B36BD399911,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T08:39:49.110Z,Confirmed,REP,IN,0.000000000001808812,,1F3061C4B46D4142D355B79111004C4B942F982B7E51DB115DBD631FA9821665,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T07:45:10.572Z,Confirmed,REP,IN,0.000000000001295254,,6D82858295A77A8E8A50E5084873B6362356F421CE284B37B80FECA70C109E94,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T07:37:56.014Z,Confirmed,REP,OUT,0.000000000000106626,,9CD5DA44C0F6F4901E7993A08A253275A639FD136106B8531EB1C66A55C9D390,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T07:35:25.785Z,Confirmed,REP,IN,0.000000000003481843,,7674FE1E228F63D0EFDACC4469F646699EF4C91860896D580F7ADECA1AECFF7C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T02:31:46.053Z,Confirmed,REP,OUT,0.000000000003109267,,884EC2ED5878B9EA67A7854FE55F8817E4F4272C8F7AC75FFC466E2D19690700,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T23:50:59.226Z,Confirmed,REP,IN,0.000000000000038051,,9904E0A319C0B31443B6CD183816FAA4A536A7C870D3B274ED6DB006F209A7B9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T19:55:18.290Z,Confirmed,REP,IN,0.000000000000077608,,29AA977FD455C43038F7533B35C96AC9ED3598EAF2CE069F8D48D06B5DF41906,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T16:53:16.291Z,Confirmed,REP,IN,0.000000000000950875,,70A7A912EA8D6796B90CF87228225A13C2AE00405D483EDE8406222DFD3D584B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T14:51:20.622Z,Confirmed,REP,OUT,0.000000000001710535,,65E0041CC6857DA1F25332BF5A3BF01AD6661E6DB1219E435940A9FF8C18B1D7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T06:28:08.441Z,Confirmed,REP,IN,0.000000000000120313,,4A6653163BE3CBC13AC2E48F0354B2584CC114CCD3A5BAE78EED3839C3645D5D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T21:44:42.085Z,Confirmed,REP,IN,0.000000000000217632,,E20FA309AA3D55BA2F07E9946DFB75F2DDC5BF593784D908FDEA62B3761BB6CC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T20:21:00.729Z,Confirmed,REP,OUT,0.000000000000607043,,23605549FE62F7F606D3E884B0DC969DE0C15057F58A5E3F7F22ACDEEA9E1A94,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T18:28:16.506Z,Confirmed,REP,OUT,0.000000000000528887,,EF9E3FCAEA015D225B53E401D214CD1275562240C33718C189E98FB9BC3D150C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T18:05:25.586Z,Confirmed,REP,IN,0.000000000002049028,,F2513A69A98B4E80A4922CD6505F6F1C19DA46C2B4BA5AE0CFC5141C4DF1A084,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T18:05:24.788Z,Confirmed,REP,IN,0.000000000004431623,,427ADB1159B96D94B574C5A47EC93AB7BCBC63A50B67692536A7B4E97B853A65,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T14:12:51.810Z,Confirmed,REP,IN,0.000000000003099549,,9DE0DA05CD30266593F792DD4694A37BF7973DBB89B7090BA11AE8C97E52BFE5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T08:15:56.096Z,Confirmed,REP,IN,0.000000000001098974,,3D07F31200AFF7F3F4D904B5BDC91F163E6FB1B0EA1FF623F33286F63C82F0F6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T21:47:48.371Z,Confirmed,REP,IN,0.000000000004177856,,5CA8E1E8ED641AC39DB970DA8D8E377DCFD5031405F5CC9FAB862DB5AF76BDB8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T17:23:20.405Z,Confirmed,REP,IN,0.00000000000801845,,922942CF8E3EA5FB68E67A45646E47C524DDC70248DD9E80E9C014EF34C34389,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T14:24:55.405Z,Confirmed,REP,IN,0.000000000002371918,,3EBBCE6030C176E62276DE7F4498A8406E8556F724B612F610D553294F191805,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T14:07:51.695Z,Confirmed,REP,IN,0.000000000002212869,,07EB53CB708295398889C2EE3D052B26D691C66388B32A258BF38A11D06DF1C6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T14:03:40.920Z,Confirmed,REP,IN,0.000000000000317551,,A5A6CB42D343975270ACCD85053AD4B439DE7F9DC828660F376FC33364819886,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T20:05:07.628Z,Confirmed,REP,IN,0.000000000000001231,,696AB0F913C864CE7264147BD572C7751B9B72CC4B559BB468F8C55E3D77CCEF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T17:22:13.650Z,Confirmed,REP,IN,0.000000000005674865,,3A9AEBC4178C4E02D0245B2DB7FF6BD63D953EFEC5B9956D3845DE9C518FA4B1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T16:43:26.332Z,Confirmed,REP,OUT,0.000000000005164319,,CC61F2FE89ABCEE5D724A35007AEE8584153FD116BEA42FAF13A037E33ADBA8A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T09:44:41.239Z,Confirmed,REP,IN,0.00000000000000219,,56C533DDA18899C5AED1E2762C3EA029CF4D50875CC906336AA3CE784B05D25C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T09:38:09.329Z,Confirmed,REP,OUT,0.000000000000105941,,E6144EF3F7881E1DDCD59BEE48D2C3610BEC2DCEF72AFF679EFC1C04F8BFC1DA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T06:26:42.609Z,Confirmed,REP,IN,0.000000000002179745,,D8E13E45B2D3D2C9DF22758E52086E2FAEB9BB71BE301ABD9900C817B8E58591,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T05:44:18.755Z,Confirmed,REP,IN,0.000000000001064482,,56A34FBE153823B7128956CE11E42DD2232F52B74144B63972E5657651B3E101,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T22:04:13.037Z,Confirmed,REP,IN,0.000000000005647901,,0442A68876BC7C3F3BE8DBB2CEEED3CB4ADA8202957C6C9E1D57080EAC57FABC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T15:40:57.041Z,Confirmed,REP,IN,0.00000000000529832,,1DC8A698BE21CA1D940BCAD8B5EA4BFADCC61A1AEF8666E495F55F1F148E4D97,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T14:32:02.961Z,Confirmed,REP,IN,0.00000000000102205,,1B9BF0DFD9174927606DD071EE8F3DE642B8871FC10D9B8E49032930F89D3DF2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T14:30:47.734Z,Confirmed,REP,OUT,0.000000000003741907,,B51874AE89C6654600986FD750EC87955DDFF2C47EF195DB64BB128A3A87F15E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T06:47:06.537Z,Confirmed,REP,IN,0.00000000000048714,,242C1F3B9652D2E8037A71269C277F0EA0EEABB4EA92AB05D4E9EADFDDD20A45,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T05:42:06.777Z,Confirmed,REP,OUT,0.000000000002433649,,2E4FA11DEDC66F34D278DB039F8A81CC04F747AF8550BA6075423899FE83E543,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T19:35:45.658Z,Confirmed,REP,IN,0.000000000000662888,,872A46F825B57E387E859EE532F0DD2C96E1A203D52659547FCD06F3390FE835,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T18:45:53.724Z,Confirmed,REP,IN,0.000000000000847123,,6345480DC5B5514140C98FCC963FDE2ED758A5D5D4E4D3C109095916EB7BA26C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T16:08:05.705Z,Confirmed,REP,IN,0.000000000006892237,,BC7E90A3EDA970CF08E45B3DA53FB05C39BF8E08678BD31BA7CE797D3E9D8B79,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T13:07:07.616Z,Confirmed,REP,IN,0.00000000000157448,,02F5905A4209E33BB878CA5CF455EE23389E3A47CACF1EEDD1DEAA4F9C757635,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T11:51:58.013Z,Confirmed,REP,IN,0.000000000000001368,,413F82A4F2A6E023BC4D5BB36DC36005329C01103E63860E9146A66DA8F81457,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T11:21:52.307Z,Confirmed,REP,OUT,0.000000000002612135,,B3E6DBBF10934267238D876A40463E04B1BD38D8132FAAC4E7711AA4AC99FC54,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T07:48:57.232Z,Confirmed,REP,IN,0.000000000000375449,,AD6BAE1F48582128739D0CB12D97359EDA4DAAE7040093088D2B535CA98DCA34,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T07:14:35.618Z,Confirmed,REP,OUT,0.000000000006935764,,C074A3C0564F8806755E884D79673B14D0A8163586EC84345DFE17183BC690A3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T06:03:00.974Z,Confirmed,REP,IN,0.000000000000072817,,8984EDEA489F1F331DEDB5694096ECBAC28728E3CC16A8E14C9544422CF81AD7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T04:57:22.068Z,Confirmed,REP,OUT,0.000000000006936448,,DE8098DA94227DE89C7B3C4D5F23FD3BDDA6645DA95BC7F8A213846875668C05,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T04:14:11.636Z,Confirmed,REP,OUT,0.000000000000034766,,C7BAB77B26BD3CE93364C1E0E5405808471FD038718A65070846A2623E11F123,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T18:08:00.579Z,Confirmed,REP,IN,0.000000000009370645,,BF4C209E4DB5042091C10440CAB7242DDE138804A3FAED82142DB0FF6F9D5276,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T17:30:45.121Z,Confirmed,REP,IN,0.000000000000273477,,AF3BFFC8C4DD43A43AAFB331FE068C0F9A6FED56E594F545AF0F27271A7E1930,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T17:25:13.228Z,Confirmed,REP,IN,0.000000000000486045,,BCAE41ADA4D7A83F650537ACE6E13735011F96C5D7BF36591695D83842C1D940,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T16:51:31.423Z,Confirmed,REP,IN,0.000000000000006843,,61287F87525FDE15B5A075BABB9B2560FE308DDBC670142C2B26DBE714C6D898,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T07:51:58.001Z,Confirmed,REP,OUT,0.000000000000050917,,E10AEBAB5AAE660F2DB06AAB516031366E90C4729D93F0CBA39D87F2CF8EBD17,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T00:49:12.316Z,Confirmed,REP,IN,0.000000000000229403,,EA741770E8114488E96EA309B41DB03BFDF0F4460AB40DB61AAE90F61CA49036,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T21:56:18.929Z,Confirmed,REP,OUT,0.000000000000191352,,D667F68AFA0A51CB42395600801A8347A7F3D656D132EF61328E10B581FCDA92,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T20:01:58.922Z,Confirmed,REP,OUT,0.000000000002782956,,AB803935A09193B1DEBBD4E742343E5C524815D7FE73370DEA72B6A1DCCAEBA5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T17:21:24.915Z,Confirmed,REP,IN,0.000000000000003832,,EAA8D408172154F0AC3C3F7D5B7EDB12F8A9B93940161E489B3ACA6E799E0F8E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T15:11:41.865Z,Confirmed,REP,IN,0.000000000000264717,,C692AFF4D8CF321EF163E0937C8C3C6FA724B7686213024B5D9220162E497881,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T06:13:07.885Z,Confirmed,REP,IN,0.000000000004559465,,15C7A2F625505F6CEA8DC6631483D6E7DB06D14BB634464D1A8EF0AEA624A1DC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T06:00:23.528Z,Confirmed,REP,IN,0.000000000001692467,,34CED3E44275AACC4672DB9B7F9D6884C4124FBE97D378666B6B77E5C8D132AB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T02:55:03.613Z,Confirmed,REP,IN,0.00000000000091515,,2D50525206C38A0967C435FD4454E6908B624C8035A0DE21DE1827A224D832E9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-23T02:43:45.579Z,Confirmed,REP,OUT,0.000000000000447309,,04FD32A40A2F33607CAB88436458847902256E4ED5420E3C0714B3D56BB90C15,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T23:42:07.827Z,Confirmed,REP,IN,0.000000000003232045,,CFB8D7A57B2EDFDED1B73AF5A45AE146ADFF1B99B5694BA3ACC16BD34ABE989C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T23:36:37.266Z,Confirmed,REP,IN,0.000000000004275174,,4506132210805B32E4074C6F718C61A173476419F291FC293DA9033B671B4694,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T23:09:09.093Z,Confirmed,REP,OUT,0.000000000001690825,,4ABCFF96BCDDEFE34628A9065B36FAD66EEBB2BE09248F0D4ED25F34012E969C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T20:03:45.432Z,Confirmed,REP,IN,0.000000000000146867,,27CDA4A32EF363321479D70802AAF8740DCE3550CF9D21A35B74FD27D61E49F6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T19:58:33.690Z,Confirmed,REP,IN,0.000000000003668952,,61066677D3DED180C58B100BE68A7034C635C3E8FAFD976349F47FE902A09BE2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T11:49:44.474Z,Confirmed,REP,IN,0.000000000003334702,,27E3FECE2683E2F3E46F3929B029F4CECE15C29C5260678EE26690D29F07C64B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-22T09:29:46.241Z,Confirmed,REP,IN,0.000000000000613339,,9B0FF00A98FF71CFBD5C3EEE20425A3B1E5D2F2FB8C349F8B8305E31ABB8DBBC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T20:29:06.248Z,Confirmed,REP,IN,0.000000000002356041,,48A8252C0B5E20534D7EDF66A86B7E0522A9DB0861386077CE28734464811EFF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T18:35:59.568Z,Confirmed,REP,IN,0.000000000000103751,,2D7366B657A91635E95EB56B317FF4B683C779D6C5D66E56D8A3C19615579E22,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T18:27:55.172Z,Confirmed,REP,OUT,0.000000000000530393,,B12DCB47DFAE21127C1DBA6D9697987C740B8EC4B3BDF17722FD9247A43A466B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T18:19:58.012Z,Confirmed,REP,IN,0.00000000000002012,,97A5F54A73766D1974CF073F7DCF8E43B660023128703B15BD85A097C638F837,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T07:45:39.904Z,Confirmed,REP,OUT,0.000000000002706168,,ECFE2A1AA48982368C1DA98E1B04FCE7EB704D1F37093D8300F5464F504FB9B2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T07:06:46.750Z,Confirmed,REP,IN,0.000000000000497679,,7D460F9A5C80044CBF5BFB8130125505ECEA78D6BC7D4E4997B8CC70F34B3C3F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T04:52:28.785Z,Confirmed,REP,IN,0.000000000000363268,,24A2462FFAEFB65EBBDF7D9C287B95D2BE2034E12755F054CFCEF6E190C37D16,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T02:18:49.895Z,Confirmed,REP,OUT,0.000000000002452127,,1F6441AA5E2079E2A6288FF6C0C6488F9A254611877C6B9BD18FE98588B5C108,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-21T00:19:38.783Z,Confirmed,REP,IN,0.000000000000068164,,AAD44489949DA8DEB7CAAEE705CDD1D5B5F5EF3A5FA230ED77E624A187020D26,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T22:35:31.706Z,Confirmed,REP,OUT,0.000000000003991979,,3B5E19D35EB48FE91CA05643BB29921BE676D624E29835776871F76D8CE60DF5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T21:48:10.143Z,Confirmed,REP,IN,0.000000000000111416,,440DBC13EC0070442345597C3D0C5752C0395A1F930021A6B255959E93390890,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T18:38:09.182Z,Confirmed,REP,IN,0.000000000000146593,,9C4B59E9D7838FB2AAE6C42469DD2A9BF547AAE9A86A19D2C27416DEB1F7CA73,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T07:59:13.160Z,Confirmed,REP,OUT,0.000000000000217084,,F7B394211EAB0925C09C782EF17EA72223C246AEEB1CE37CE45DDBAB22498CAB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T04:13:10.770Z,Confirmed,REP,IN,0.000000000004817886,,3E897B8E56F2AF809E7AB28BB77EBEF5C21C33D519591CEC824F47BEF26ECD67,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-20T02:57:53.052Z,Confirmed,REP,IN,0.000000000006909757,,085C3DF550D83BEEB711007EE9D08297D30EEE19F972E517573428C72D0F382B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-19T22:03:05.792Z,Confirmed,REP,IN,0.0000000000001945,,DDA99D3F29BDEA5CA5FEDB25FD997B10711F28B80329446298EB92D07CC13476,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-19T14:05:28.280Z,Confirmed,REP,IN,0.000000000002707537,,925C4BADAD0FB4FCDD5F09F81B4CAEA06EA9D95D7482ED65B36B6AA1E241647D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-19T01:31:53.235Z,Confirmed,REP,IN,0.000000000000038872,,FD472BD2B249948903FC2D4AA1FC6305A946B9E5C29F0180847019DBDF4C52DD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-18T20:53:24.493Z,Confirmed,REP,OUT,0.000000000006971351,,C297B8A52C4948961BD926F82BFAF69E87E7971EF679F8830CA83CF1135D2BF5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-18T19:25:26.098Z,Confirmed,REP,IN,0.000000000000374902,,40FF3A856C19D2B7775E1C31F4C086574EE7005D9936A09F65F9C2826384B865,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-18T02:57:56.779Z,Confirmed,REP,OUT,0.0000000000033707,,24E4A1566624DDA1C115ADFA0073D19759DED619EA93FC1FA991ED4BED026C5A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T23:15:29.977Z,Confirmed,REP,IN,0.000000000003998275,,E35D1F59B28E5EB7D19711207F831DE4BF459362EAC9EA539C0E6ABB67329838,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T21:00:55.780Z,Confirmed,REP,IN,0.000000000000038598,,915B1A8D1B04F747029CD285BA7BBCAEAFAF78C7B31D5675D669DC89C95420B5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T15:23:07.080Z,Confirmed,REP,IN,0.000000000000794426,,0577B58F8216117CA33E3AE295FD29B1BD622A0902D9BA7C24759A53115BC9DD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T13:16:44.462Z,Confirmed,REP,IN,0.000000000002361789,,D595F79B5FFE2D2682C0F9AF9CC70828F88F1142E6CD45E07443800A3582F26D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T08:38:25.585Z,Confirmed,REP,IN,0.000000000005425067,,89E39315CBD3CDC8B8620546B111D1362C5AC26CFCE267E1B0152C91D25E8884,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T08:00:23.475Z,Confirmed,REP,IN,0.000000000000065152,,EB2F98E6B2CC5BC207B0FD15EC2883E8CC4620C19B69123609855EF2CAFEE2FC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T04:28:14.151Z,Confirmed,REP,IN,0.000000000000201207,,F51D71AAC9F2ABC10BCFD8B7C3BA462A3A3A8B8E0DAAAED0B01AA50389E000DA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-17T03:52:11.372Z,Confirmed,REP,IN,0.000000000001033137,,A00FDB2E2A5A931D577B8DBFCC65790360C6DCD193B2B0B59308A30652FE135D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T19:44:48.394Z,Confirmed,REP,IN,0.000000000000952244,,33DBF3B63B87B47A3DAD04FBC80E9C852678C5028DF3DBE6AC2A54E06744580A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T17:14:09.915Z,Confirmed,REP,IN,0.000000000000637977,,90F73B4E0D1682B88BECAFDC698CAE223421EA4D4409B69E91A4B7B67F629CD6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T15:45:12.929Z,Confirmed,REP,IN,0.000000000000019846,,1011AE0D9AE4AE9F094018E4423A30E6DDCE9E55DD45B4C0B092E70836C9908C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T12:58:39.651Z,Confirmed,REP,IN,0.000000000004930261,,6B250D46D5A30BB5415636A4C650C970676B95B9A3D062E75197085E15F34A3F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T04:53:55.778Z,Confirmed,REP,IN,0.000000000006190339,,BC85C279B2AA267DDB4D1A873C15432E108F9E4AEDE006973400185691061B02,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T04:51:13.795Z,Confirmed,REP,IN,0.0000000000004083,,62ECEBCC165D336D9FF8FF78A1A8A2257FA78F10D7119605A83F23BB9A09D243,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T03:27:45.868Z,Confirmed,REP,OUT,0.000000000002619663,,E3413B4526DB051232A3E1A412C8512192A1F68DE40531790379B9814553F28F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T00:33:24.186Z,Confirmed,REP,OUT,0.000000000002931603,,4128F11730FCA3EC8EA2E23D5B6C1AD00567610B68AD79A59E1CCDB3B5500AC6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-16T00:32:22.336Z,Confirmed,REP,OUT,0.000000000000122093,,C5B90B74B3D7A6CE1FC11F948DFFC3FC6E8D77354209C026FE27D9F7A020038B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T23:41:49.930Z,Confirmed,REP,IN,0.000000000003158269,,D6B4F0F41290EF422682239D6F61B16B1302E9B697689F3B4867E62BBE61AFC5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T22:41:02.881Z,Confirmed,REP,IN,0.000000000000122229,,9E2DE8E2AEEDE3410046829789A91F250AEA9165C9DA1EBE126D1C5A3313A3B4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T21:40:46.011Z,Confirmed,REP,IN,0.000000000004643781,,C7852B9550A657BA86964B239AA6869C535B540DDDA1A1387BD6A2560B21A9D0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T18:03:16.618Z,Confirmed,REP,IN,0.000000000001331526,,A5BE4B4209DC0499AA474823A4D8767C1D221C418769F337391A5D69FDAABAAC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T17:23:15.263Z,Confirmed,REP,OUT,0.000000000002245719,,C57B11A9DDC2ED84B57A53FA8FC876743397A156194BE18AAA4BAAF1FCD93859,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T16:39:58.269Z,Confirmed,REP,IN,0.000000000000350401,,F54923881D203CBF72FDF7527DC6D6F0025D80B8464420840925B8D2E25D6C9E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T02:23:10.385Z,Confirmed,REP,IN,0.000000000000181497,,6DE4872FE03D42DA771E5D43831A5B96B461C2A177B3B059EC11C627733E3F33,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T00:29:37.862Z,Confirmed,REP,OUT,0.00000000000059185,,157BDDE5A13785BDC1B5F008E554EFF07381EAEDBD780A73AF0B918A0BC943AA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-15T00:09:56.677Z,Confirmed,REP,IN,0.000000000004257654,,4482B059D191B233B0D25CE480A5E487C6F87C1E6E6EC4B0D077819CC932B068,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T15:26:40.008Z,Confirmed,AOA,IN,0.000000000000095676,,DBE92D1120D786AB70BA681EAB629464A270D543FFE51F193DC1801B961B9BDD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T13:13:15.772Z,Confirmed,AOA,IN,0.000000000000689305,,C8658D2098EF6DF69EC8C7F1A530009EBFBB6E5ECE7145AC781733D3DEB7AC3F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T22:44:37.748Z,Confirmed,AOA,IN,0.00000000000098263,,A88844E4E75D3038BDC5EB4D9766509E652E2FBD3623BC634A29314CF4D5D58B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T21:27:48.671Z,Confirmed,AOA,IN,0.000000000005297773,,FA6FC0C0420095F4F61D5AFE8C17FBCE9754969DC083B07DC07D374CC908DC8A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T20:19:37.878Z,Confirmed,AOA,IN,0.000000000000082536,,BE16311E9076592A950C5788CF1F09587D0413EAE295F06073E757D48E5E4F99,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T19:54:16.631Z,Confirmed,AOA,OUT,0.000000000000195869,,B7943F556ABE5E1DF93F8082601F1D8619C808CC3BFA03E0C98531631A3EA9ED,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T15:17:14.404Z,Confirmed,AOA,IN,0.000000000000309475,,01C98C4FD67C1D8B2D9885A725DBA51C023E7660D6CFD9FED6FC08A7E6985F9E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T15:11:49.482Z,Confirmed,AOA,IN,0.000000000000770473,,B6368866242E1C2777E016DBB88314470F56E79595035C7718AEB79C280A7D33,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T14:45:59.315Z,Confirmed,AOA,IN,0.000000000002127732,,7A64B6DCC53A6E71415337BED581B6533BD58FA20D1DDF7C09E0302AFF20EB57,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T13:16:20.988Z,Confirmed,AOA,IN,0.000000000003719048,,EF8C619C0FEA085972176614E304E562A9520FD57BEF678F04FD4438A61E2317,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T10:42:01.678Z,Confirmed,AOA,OUT,0.000000000000269781,,515510459087C745DAFDAD14B8C82FAA37E77BB2FFBDA0200D7153DEF4A69849,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T08:12:19.787Z,Confirmed,AOA,IN,0.000000000000103751,,A4FA0132422029620425A6ADEA793995370C8A7BA25D345FD66B0C7ADBE6B5BA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T07:04:28.670Z,Confirmed,AOA,IN,0.000000000000569402,,5CA8D94C26CE1B55A4870C0C91A9B649454A739F2498D2C7A80E23DD25DA64B2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T16:59:20.050Z,Confirmed,AOA,IN,0.000000000000457712,,5D08D4D93D8A842238A2582958B2C88833AF84537B48F054E8EB1ECBBE97D780,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T16:59:02.649Z,Confirmed,AOA,IN,0.000000000000449499,,ECAB98E3866E91F2D850388946EAA3D2A472151CC88073193B525DF963D40584,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T16:52:21.333Z,Confirmed,AOA,IN,0.000000000001585704,,EFB161C2307323649C322FDFF8D22CFBEFB2F2DE09F0A2F8BFE521373E140E73,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T15:54:00.748Z,Confirmed,AOA,IN,0.000000000001470044,,0E8D5899EC84F18610D5F0F1BE2D2267D18EE5D8F7425DA0623C35DF44655611,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T15:53:11.433Z,Confirmed,AOA,IN,0.000000000001102807,,4D2C4DB3E1274A5D22F9E91AB3F3FAEFD93816A5B24223A0E4B167AF5CABB77A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T15:51:40.756Z,Confirmed,AOA,OUT,0.000000000000543259,,FB4B682AFDE765A2FC6F8B6DF0000E97A5A73AB38E1339759636898078239AD0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T09:23:31.714Z,Confirmed,AOA,IN,0.000000000001507959,,1B6FC9458EF4597B99DABE0D8B1FC4DE99C88900741D5740590CA41A0C888EF0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T05:24:19.896Z,Confirmed,AOA,OUT,0.000000000002521523,,9B42D6022625CADA09A68599EF3384B485319F2F6A1A2B355638454E4722176C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T04:17:57.871Z,Confirmed,AOA,IN,0.000000000002173448,,5AF967F18162332C8289E017DA87CBE58AB6977BDDE9CFE4003A72F10D99673E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T03:16:22.913Z,Confirmed,AOA,IN,0.000000000000030386,,3021A19001729F34F96A4D2B6E2C00C9E1D642469B7E9C5057DFA77AFDE5544E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T20:09:22.252Z,Confirmed,AOA,IN,0.000000000002657714,,1A52B863B05D98F8C3C165F1667591CB2259B1B6DCCCDEABC97F9CA12E3B9127,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T17:08:27.440Z,Confirmed,AOA,IN,0.000000000000788814,,6CBDDA35BF12304FC8462798674E341495B53BF46EB9B42634063503248456A7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T11:49:36.115Z,Confirmed,AOA,IN,0.000000000000634555,,4E66AB2295E861D095CE5D1D3EE9674E14526574261ECB39D97FDB3DF4401ACF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T07:53:09.347Z,Confirmed,AOA,IN,0.000000000001986202,,9F14EECBCFF62CB110F9E9EF61E9F04729A428BC3BD2DA4EE7F39E5A191D3712,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T02:06:44.316Z,Confirmed,AOA,IN,0.000000000000885174,,7936D24C5967DEA334A30568AE5D9010094D574E7F8D53F14443391A7A320BCD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T06:02:57.541Z,Confirmed,AOA,OUT,0.000000000000036545,,150FFFBD9068F70B9238DF18B793B9AEBAC3E5769E2D3293ADF354EBA876F525,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T04:47:27.163Z,Confirmed,AOA,IN,0.000000000001144417,,1B8D9C31088ED0A6C78B4E30D29DAFC59FA5A320E3FEC3F9582EB4088130D5F1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T23:30:27.637Z,Confirmed,AOA,IN,0.00000000000437961,,D44E0244E858771A1006823EA63D986E934ED620E87FB33D4AB0EF359FBB98ED,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T22:53:21.354Z,Confirmed,AOA,OUT,0.000000000000794426,,E96CE0560D1FFFB9FC607987DC579C9A22003AD8CAA2FF1B1F9DDE7D1C517900,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T16:27:08.829Z,Confirmed,AOA,IN,0.000000000005796274,,B55A50AE5B5C27EED508DDCA96F6775B3754B3289B689D6745FAAB902D990C72,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T04:27:04.736Z,Confirmed,AOA,IN,0.000000000000126336,,AFD2B223875B3D4D3FF0205A3E3C1CD4F93956C4879C0CF28DE70EA3C5E9DA57,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T03:19:26.148Z,Confirmed,AOA,OUT,0.000000000000147962,,3CD9A04E453E5DB9080A1AA89BF0AB29E971A23C849680B28986D35EA3642C92,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T02:05:08.529Z,Confirmed,AOA,IN,0.000000000000778822,,B87EB3BB5FC5132D64EFD9D1F62D7D5D4B53B7EE89F81A852FAAB1A5376AA573,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T21:40:25.700Z,Confirmed,AOA,IN,0.000000000001000424,,FDACE7225C9CE9B75DB2237A4AC8200FCF213265F82C643FC25FDF8F09BB638B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T17:21:33.508Z,Confirmed,AOA,OUT,0.000000000003341408,,C6009908C4D95CC03B898C0C38E36D09C45E95DD8ACC97341CABB360923A6ACA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T17:09:30.492Z,Confirmed,AOA,IN,0.000000000005100945,,9257E28F5A9F4801B698DB0630D29DBCBBD6DC1582177760450CFB7F4750A51B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T15:36:14.825Z,Confirmed,AOA,OUT,0.00000000000025363,,78F0025C1E55B8C88D694CF2C6D93BFDB234EB82504D9577C230551D3D978F3F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T10:21:59.802Z,Confirmed,AOA,OUT,0.000000000003163196,,1E81E200166EDFB340621321BA0CFD8DBBBBFFB4264C36B13D5D6D739860A5EA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T08:22:14.522Z,Confirmed,AOA,OUT,0.000000000000921583,,3892257885DBF7D6B65667756BE956119CC3306E8A6978A708502B9086BFBE3B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T08:02:48.283Z,Confirmed,AOA,OUT,0.000000000000515884,,F5216AF80032C6A24C0572154BF21430684F8161933089A7D79A81EFE3856062,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T07:51:38.010Z,Confirmed,AOA,IN,0.000000000000427052,,BB6A8EA3B683C2F3C0F86F1284B5DC536D7DB3022933F0026C96D644AB0E8A9D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T01:37:41.384Z,Confirmed,AOA,IN,0.000000000000109089,,27D486292DAD9A9D2B3B25C4BAB39B14EE2217F5F6B321230C58E2294A029B2A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T01:03:31.682Z,Confirmed,AOA,IN,0.000000000003401086,,645C9AEA9E12687CF480FA8A939E46CF8FB1599595388F649ABD035D4F58DE4B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T21:38:04.612Z,Confirmed,AOA,OUT,0.000000000000592945,,434F57BA3E2390C705EB29618610844A05A457DD7CC69A8AB04CCE8F10851F73,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T19:47:46.263Z,Confirmed,AOA,OUT,0.000000000003916971,,DB117EC955AF0F8B487264D988580D71FABD5D5FAEF564D980A0D9023BF76FC5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T11:55:11.889Z,Confirmed,AOA,IN,0.000000000001275133,,20F2F0019764D68C1078EEAAEE3C715628575DA067DCD80C182AC0032B2BD150,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T11:32:21.628Z,Confirmed,AOA,IN,0.000000000001509328,,E5DBC2B2DFE1329F42ACA7DD59D53D2F17AE53B0C129318B01ECAD276C72791C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T10:25:31.188Z,Confirmed,AOA,IN,0.000000000000117439,,69093C7D6E74653B9E585C15F96D876C8C18A9735B8C87A1746774D2A7976950,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T04:02:26.640Z,Confirmed,AOA,IN,0.000000000000127978,,287D30FB6608101BB0673D6BA42696AEF8124D8BA81F33BAF2B85194F65BAD4A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T03:41:38.936Z,Confirmed,AOA,IN,0.000000000000055297,,4E89C8923E63DC3B52071BB7B14B9054682535D285F4BF394D296F5B2898C842,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T01:54:55.499Z,Confirmed,AOA,IN,0.000000000004232332,,07C508136050FCBA1E989A7FAFF739A3AEFCEA652A4E56F89D80A402E76B80AA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T01:17:22.932Z,Confirmed,AOA,IN,0.000000000000857936,,6C5D1AFE028815F4D01ABF04BBC5FC42E8DC2C07890BE71F05A8B31AED09E9EA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T00:54:50.253Z,Confirmed,AOA,OUT,0.000000000000940883,,4B48E5137F542EC7AC989DD7421DF2FB900196A44C110E9932A0FF2080D9D9FD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T22:10:17.924Z,Confirmed,AOA,IN,0.00000000000024268,,5B0D66981F0F749E22321F9461AE661A911CF9C735DDB348EE1BC2F5DFF0F744,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T21:46:46.503Z,Confirmed,AOA,IN,0.000000000002310187,,047B5D49726DBAC30AEE8428994C775212DF5223BE118529EFA320970A2D2AF5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T18:01:40.258Z,Confirmed,AOA,IN,0.000000000001363966,,F0AA8319BB25F0CFC09B57715196E45147632747E3F7E2B6CE282FE282D0C555,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T17:47:28.612Z,Confirmed,AOA,IN,0.00000000000020326,,2661CEAFDC0B0AC86BD9C6A4C7EE0CAE2F02F1191F6548C77BCA260A115920EF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T13:35:13.178Z,Confirmed,AOA,OUT,0.000000000000714217,,E1B1954C935D1E48D237EE0E9FFB670023AA22161DF9FFD17A9F4EAB2CC936F0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T04:28:41.361Z,Confirmed,AOA,OUT,0.000000000002224092,,E3D1F149C5671438BFB9A780F1ACE889CF90C3D32D7BA287FF10E8A69A7A75FE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T01:50:46.316Z,Confirmed,AOA,OUT,0.000000000002427626,,44115EF13E4429632D5C387D445C8ECA602A4EFB5CF37568F1FBEABD57A09E8B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T22:17:36.659Z,Confirmed,AOA,IN,0.000000000005035519,,F6F5C0CA3E82BF37DC6D0316CB60AEF4152E981CAC18EDCE7B717DD9CCC54302,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T21:04:25.950Z,Confirmed,AOA,IN,0.000000000006312432,,96D5E3E8BDB1B868EED672C94701EAD54EE45435D5F9BA5BAE3B6784D107152D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T17:34:24.873Z,Confirmed,AOA,IN,0.000000000008106051,,D0C0DB8009F5774602821CA53ED59E35CC5E3D4715977D966849B478B45AA378,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T15:22:03.245Z,Confirmed,AOA,IN,0.000000000000368195,,795A88C9C4AF4FCD2313F3FBE3050BD50EEE40948C3BF45D9273D7E6F8C6FE63,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T10:35:00.317Z,Confirmed,AOA,IN,0.000000000007671197,,A4F362BAE2442E44A64615E31E031910E8F55C122E2CA30B4D8CD576FDF222F6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T08:23:43.636Z,Confirmed,AOA,IN,0.000000000000234741,,2E0C306F665A8AC944210FC9F5DB19F54E823B4573343F79E81CC2C1B28E6B5D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T08:21:30.724Z,Confirmed,AOA,IN,0.000000000000676576,,DF5A9EF16732BD37F49F702184002FB86FA0477CBF9E6293FF8C5A345F24E6AE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T08:20:28.496Z,Confirmed,AOA,IN,0.000000000000134411,,55FF84DBE74C4C4E1FF503976209FE858D5E1E006220C4BCB6217E241BE99D7C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T06:15:56.146Z,Confirmed,AOA,OUT,0.00000000000023173,,AB3294BECFF8A510DC356EE7190F9E40EA63E51A8CEBD10BC95A2A71C4461AEC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T05:32:23.418Z,Confirmed,AOA,IN,0.000000000000362309,,4DF9D56589EC2FBDB5B9967D51F172FCCFA87A1A51C2748DCBC0865068DAB2D3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T22:31:13.450Z,Confirmed,AOA,OUT,0.000000000000342326,,E2396FFD7C92C19C2DE8EC7CDBA1CC973023A52C31AC8E00039035617AB9DB05,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T16:08:00.774Z,Confirmed,AOA,IN,0.000000000000759112,,65096137BFFC3BE104734976E86A755CB6977999C59B455521909E30A7D11076,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T12:17:16.071Z,Confirmed,AOA,IN,0.000000000000912276,,D43BE253EA314FBBB9C37BCA1CD5DD58F1B4B4BC1F25664193177A578DC5899D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T12:14:37.659Z,Confirmed,AOA,IN,0.000000000002356725,,73CE3FE77B7F9D89A38851F449FD42154A5780640EA2C3A154EEA180EC245400,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T11:07:15.588Z,Confirmed,AOA,OUT,0.000000000001409956,,9872ADC8CEB43BB73210F798474708A40327E1D3FC7692D8CCEC4EC75226102F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T07:38:15.310Z,Confirmed,AOA,IN,0.000000000005807087,,A61D1A1898E8BE5BB3FF8C8807C469EA725755AC469FCC48DA272D5380837F46,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T02:58:04.161Z,Confirmed,AOA,OUT,0.000000000001844673,,035C16C2E58A070237ECD6781196FE2D74B4955928EC8B82613D0703A20B4370,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T01:41:07.430Z,Confirmed,AOA,IN,0.00000000000016644,,DD5C086B884B6FE1A6149AF4C371DB53E201F29D72BBD0002C5434E0B2B64EB7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:11:45.260Z,Confirmed,AOA,OUT,0.000000000000716133,,E7FC15A79BAB7AF699F506D087B9384FD095A7BFFBF6116289702DB55354BCA9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T13:55:07.663Z,Confirmed,AOA,IN,0.000000000005756717,,DD9C10DCD6C9EE639F443505350C8848D9984B02BC749D2121C9AA8BC2B1D9E9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T05:47:51.391Z,Confirmed,AOA,IN,0.000000000001769254,,8D1AE4D7F3A5E388CF661D7D9D8B6B8A0664B93899F7CE2992BB336A6CD4FBE2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T01:29:55.575Z,Confirmed,AOA,IN,0.000000000002243939,,9DD9AE9902137F78AFD681014E3C550790E43003A788D8C38A5448A138FBE86C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T00:33:49.365Z,Confirmed,AOA,IN,0.0000000000000438,,F31A029F7022CF78F98B44753CCA28A6EE416D82293D4A732539785247B67BFF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T00:32:55.537Z,Confirmed,AOA,IN,0.000000000005831725,,CB196BA92D3ACBC667C1B4B0D293FE380CCC877522A877BF128A6913D2FE03BD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T00:19:02.557Z,Confirmed,AOA,OUT,0.000000000000515473,,AEE2C46DB6215DEA5A7955047B30442DF48CF795018B379E399A6FE6325E15F4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T07:59:31.229Z,Confirmed,AOA,OUT,0.000000000000127294,,E346EB32CA46639366F03093EA4BE41034AB761E5A77A2D52A1D1322A9112108,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T05:52:34.231Z,Confirmed,AOA,OUT,0.00000000000327913,,735F55DE14C4A83F7F1D7C5809E9D404CBC4E24B85FFEF3151A0DABA3AAE5329,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T00:38:46.559Z,Confirmed,AOA,OUT,0.000000000001282114,,7E423EB617E8A0105E1D415D4C420C9C141311D8F446398B14E4DD278B76B6F7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T00:05:15.623Z,Confirmed,AOA,IN,0.000000000000706004,,CDD9C6E97703C67E115F3DA37A5DB0E018B632F97899B913411ED47D4BD1D8E6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T23:51:59.158Z,Confirmed,AOA,OUT,0.00000000000244501,,B6D7470259B4BCB291C6FC628E4258865E77CFCAEF1504F460871383D9D8FA2C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T12:02:52.668Z,Confirmed,AOA,IN,0.000000000001306067,,EA52FC92D7D0B9694AD9B98E88FCCAAC9401F0E022677D3511E794A5AB36B00D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T22:46:26.260Z,Confirmed,AOA,IN,0.000000000000571455,,71AFD9BFBD39FEA4ADF30C9DDC8991267FA128BED1EAE15EA29D1A0BDC963737,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T19:24:15.960Z,Confirmed,AOA,IN,0.000000000001683297,,34D92F0DEB371A2333334AE5C1EB2F3C8A7737B59D840D807CDF8EF4B2CFC809,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T19:02:35.639Z,Confirmed,AOA,OUT,0.000000000001870953,,67171582E53A80DC0094C145D8DC4C40E67713CC9B28D2EB51D4F3E86075F953,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T16:18:22.469Z,Confirmed,AOA,IN,0.000000000003075048,,0EF8CAD2253A4FDE59B6831DCB1C5C877DB0FDE43DA7E824468B31222E2A6197,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T06:42:03.668Z,Confirmed,AOA,IN,0.000000000008112073,,0A8E8AF0B6F82CD89AC99349439DFA6EA3ADF09D16F5917E71E568E4BFCEB322,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T06:23:43.823Z,Confirmed,AOA,OUT,0.000000000004936284,,A3FB9787AE86B658917852895CFEAD3B928DE72ADA00B782CE937DC554BCA51D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T05:22:18.507Z,Confirmed,AOA,IN,0.000000000001576397,,0778AA8C713292F3DD60E51A6F77E3650005F052C5075768CDD22520C5A7D017,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T19:21:41.380Z,Confirmed,AOA,IN,0.000000000000762671,,24B0E752E370820B2413F092A1BFB84B70CA454241A5DC80F9CDFFAE56BBB0EE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T12:55:25.433Z,Confirmed,AOA,OUT,0.000000000001017533,,7485215EE87E4BFC757DC8CFCFA35066DE210D9D2F4C90D728C7D4F6D4FD89D6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T12:35:39.550Z,Confirmed,AOA,IN,0.00000000000367648,,DF318C9ED6470551358DE2134C9D91DC48FBC57D926D5B2EAFBD0CC647924121,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T17:55:00.769Z,Confirmed,AOA,IN,0.000000000000585554,,531561B59D7C07DA50481E046BE54ACF1269B9657CEDF18A4168945E3CCBE3B4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T15:28:53.018Z,Confirmed,AOA,OUT,0.000000000002546298,,12BFC8D80ECE9DDB853FD7F84FF64FC647AFD2102085C8224333DFBDC5D739CE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T12:36:51.642Z,Confirmed,AOA,IN,0.000000000000611149,,2C59A93B91FFF031AC26BFC2245E3D978997BEE926EB285F7D3B35F148D5997B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T08:44:30.189Z,Confirmed,AOA,OUT,0.000000000004839376,,02BDE9515C95B25F5F11AFB2D509BB6FB7E59C6B037A44A16E39AE555AF397B6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T19:54:11.491Z,Confirmed,AOA,IN,0.00000000000051123,,131F3A23F7A7CA43AC5CE08C57AB03D97C4342D6A8F63D7674EFDB15DBA7DAAB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T18:53:48.703Z,Confirmed,AOA,IN,0.000000000000242543,,4024E46EA769572766F9853C2AA1DA3B9BD460F17149C58DAF06EEA88E825773,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T09:07:29.309Z,Confirmed,AOA,IN,0.00000000000269823,,66766BCD3481635E11C16389E44A6D552C4741F1EB7FD8A8ABD047A3F00612EC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-25T03:19:52.569Z,Confirmed,AOA,IN,0.000000000002721225,,B24032F23307F6D8BE7D24D65085588A5F94BC2757B59BE3DD9BCFB5911371B2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T23:58:10.922Z,Confirmed,AOA,IN,0.000000000001172613,,A204AF2C8FF79C3DE9A997BAFCE97C8B51F4BAAF3846E92CD47169176641654E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-24T07:56:26.405Z,Confirmed,AOA,IN,0.000000000000018341,,AE3737E656E49ABA761CE2AD50404B5C338CEC3D99C5BFEC1CB14345CDACCC86,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T14:37:31.679Z,Confirmed,BNT,OUT,0.000000000005700735,,EDDAE3F96C9C26D419023077D7B747C6D7697472748D64275F1B7DF0375E3678,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T08:01:40.623Z,Confirmed,BNT,IN,0.000000000002939405,,5E9DACFA915A76C11221E8C3388A05F893EF00AF31F150B091167DCE32062D11,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T03:30:19.453Z,Confirmed,BNT,IN,0.000000000000004516,,8279CBF59E0945D115F8D40E74981ACC53270589A1BCB2504F7C3BAA0952C00F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T01:44:59.829Z,Confirmed,BNT,OUT,0.00000000000030578,,5F6B1CBDF6525397202A8A1A5E6AEE7C844690CDB23290D9251A7610647ABE50,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T01:19:50.729Z,Confirmed,BNT,OUT,0.000000000001829343,,E5BCB9D784D8647211C05E06A7D280E623AA764B9FDAA1ED75743CEBE117AD6B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T15:48:50.340Z,Confirmed,BNT,IN,0.000000000000951422,,FA313109A04F7C23093C8B5DAFD1F35E556E486743DA1D659DA601A52A7DD832,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T15:18:45.958Z,Confirmed,BNT,IN,0.000000000000373396,,B7169DC3E621F83C7207CE26443F8FC1E3A603A8CF5F741F6668E5851DC3AE9B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T09:41:43.197Z,Confirmed,BNT,IN,0.000000000001533691,,81544259C5340021C195D0BDAEE72EAD24266CB04274442E0ADF143C676E0A86,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T08:47:41.336Z,Confirmed,BNT,IN,0.000000000002379857,,34EE04D7CAD04B137AE0B6E88EBD490F5F7F633C628E72FC50141C62E8F5B02D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T21:01:59.193Z,Confirmed,BNT,IN,0.000000000000107994,,DBA7CADFDE1E9119A2B91EB7D94A88C2764E000E158A95864014368EF85BB969,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T17:05:21.382Z,Confirmed,BNT,IN,0.000000000000943347,,A8C70D9873C01A2A6FA89EE543F79B650A147B3774330E6239413EEDE5160D35,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T14:42:26.633Z,Confirmed,BNT,OUT,0.000000000011044908,,1AE9772A358B92C0AE7BD95FA69CDAEA90F656E6DC6BC9C83C4E4F4E627C8168,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T14:17:58.782Z,Confirmed,BNT,IN,0.000000000005234399,,D7AB2642CD4BA1AC140E82CE8EBF516A4ABE17577C530968F3EBA3E0C0B6E04F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T12:34:14.852Z,Confirmed,BNT,IN,0.000000000000228993,,5715B876CBFF707EF030A70C067D9E3F177EF676FD7A717EACFDD887BEEBA043,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T12:13:42.703Z,Confirmed,BNT,OUT,0.000000000002113907,,82AE551823CF76E92DB58C50FBF30739DD47B50A4F09CC2CFB13803D87B7D264,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T11:59:01.272Z,Confirmed,BNT,IN,0.000000000000019846,,5CB6821632992CF28238E836080352BC2C1FE26BCB76B66B4DBBA778E5EABA61,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T11:55:00.644Z,Confirmed,BNT,IN,0.000000000002659083,,631058B55B72988B51EC8BA89C950B1296CD320353CEEDEAC499625F8C4D49BB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T10:37:17.540Z,Confirmed,BNT,IN,0.000000000000042705,,8FB2BF331858B01B9D7B4909E08D02675B88808DCC4210C571DCC0A57D1C4A7D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T09:55:05.830Z,Confirmed,BNT,IN,0.000000000006073721,,5A1D2D714636BC70F659C9E7AEEC2CD1E8BC8F6C9DE83580375FB6A16D8F2B5A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T07:30:27.339Z,Confirmed,BNT,IN,0.000000000008049658,,B7F484A5C0910C7BB1FDCBE272841DC69C286B0E7192CAF68036C2D4755A8FD8,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T01:49:58.846Z,Confirmed,BNT,IN,0.000000000001118411,,D5D91BF701AEC6BD947387F1773233E17ADA53003AFF2CB852C7BFB13AA6926D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T14:35:14.995Z,Confirmed,BNT,IN,0.000000000007365553,,0E6BE2FD09594A89CF9E29557AFF21108F61DCFD5E7144609F1CE1D84A93D390,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T10:50:32.629Z,Confirmed,BNT,IN,0.000000000000047358,,7A0F9127C3186AB710CFBBD13B1BC7E00F9E9059BD913D7DC69B3D41DBF053F9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T09:40:53.375Z,Confirmed,BNT,IN,0.00000000001156969,,4B647D41AFA71C65A946B5E25AF527DC0288E16B2021408AA025349DC05E6634,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T08:41:57.384Z,Confirmed,BNT,IN,0.00000000000190394,,5E1F31C2856B43276D349EE655CAD3B5C25E7CB768328D6C8FC5B1B6BD29BE69,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T01:22:11.008Z,Confirmed,BNT,IN,0.000000000005168973,,35111977D4310B44F73A8A2DE2DC03CD9975EA7BBE2294B09E4438CB79BC608C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T07:28:24.362Z,Confirmed,BNT,IN,0.000000000000021763,,6C55FBC495A18155563586675B26FA32788B06E3A4820D05C731A49173674BDB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T02:00:40.151Z,Confirmed,BNT,IN,0.000000000000465651,,B82BF74D3D68FD6DD8D526568D0DE631074DC4D849743B7CB6BB6BB5C1CE46AD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T22:53:22.191Z,Confirmed,BNT,IN,0.000000000000047495,,ACE145631B6B33D5DA3E32894007DA0A95DA9E40245E4C6C16A6A1701A929E23,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T22:48:36.354Z,Confirmed,BNT,OUT,0.00000000000070532,,20B4C36172D3FD721CBD14C10E7B6F4656C72D7DF1495BA9B38E206887C13C2E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T22:46:28.769Z,Confirmed,BNT,IN,0.000000000000324121,,F4EBB0444130696468743288EB2B78C00471A43EB5D87A3A9F2418D4B944C153,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T20:34:43.225Z,Confirmed,BNT,IN,0.000000000002809236,,1E98DD3104A94C82930F2224ED48F5F9F76B3B911691F5570E23FE42929D6D4F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T13:39:44.998Z,Confirmed,BNT,OUT,0.000000000000711342,,2BBFBF5313E69EA2C18BD2B17F7AA3850B0ECFE9F360AF9B78A485D530B3FF79,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T10:19:36.130Z,Confirmed,BNT,OUT,0.00000000000020983,,ED569A555BEDAB1A60CF64DBBD32112BB28FA93985E7733C32058F71EC171C33,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T10:19:25.204Z,Confirmed,BNT,IN,0.000000000009203109,,A6167E489533D79079AC4BA66B60204A9EDE2AC172E32392400FA45F63446805,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T09:40:56.925Z,Confirmed,BNT,IN,0.000000000000551882,,B5E16C8EA4CDC3658B0CFA8578341CF3AC6482EBCB406F08C2DB3BD5D1C5A0C7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T09:08:50.707Z,Confirmed,BNT,OUT,0.00000000000164593,,23C946C3DBC3355E07639F14BC0553C500B075CD6C30257A61B4A65B61469643,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T08:40:40.962Z,Confirmed,BNT,IN,0.000000000000304959,,FBA642D7BECA8CD29BCA132DF1B9279EFF7231BF446D203E5C96B34A20C835C6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T05:59:02.202Z,Confirmed,BNT,IN,0.000000000000647421,,EA4C699C1A1EA121167F4CB26466BEB31A1C209412AF3463B7F30A1B285560A7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T23:17:10.879Z,Confirmed,BNT,OUT,0.000000000009720362,,1E3D5C24759B6745CD166B2A19463FDF7EBAE395F489336867669533F8DCC789,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T22:06:20.779Z,Confirmed,BNT,IN,0.000000000004995551,,BBA80DFC827C692402A579260916611DED4F37C3A6F358C555F0C694F8570212,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T20:48:40.326Z,Confirmed,BNT,IN,0.000000000002083658,,0DDE4A20A7440540967A5BA66685B678A5ADDDE4AC272B7B1E2E7233206FEBBA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T14:02:36.384Z,Confirmed,BNT,IN,0.000000000000771841,,9B34A3B6566909F428A08062E62B380B9D404FF0AD18F3F8A9666CC7B67FD5A1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T13:43:56.987Z,Confirmed,BNT,IN,0.000000000000140571,,D47EC8429CEAAD352962787BECF67E184373365C260F877DB4932A584A607B9F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T03:59:16.228Z,Confirmed,BNT,IN,0.000000000000110048,,A782B4A3BD1C00DB2EEECC97EEE8CF72DC9C59FB5EC1FEAB75E703C70F219EED,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T00:32:04.839Z,Confirmed,BNT,IN,0.000000000001859319,,8E9459B1F9AACA75BDC7B89AF3018C68A75BBCFB7D01B9AADAA5B87F57F135EC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T00:17:48.213Z,Confirmed,BNT,IN,0.000000000001825921,,5AB0E69532B02AF9751BCF7D3E93F3CDD64AB41FD94AD031656E6FA95E945233,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T00:12:30.439Z,Confirmed,BNT,OUT,0.0000000000001533,,D1D6BE60F33A908DB1D18A71A02D44484B79F1C1A37C1EA0C2D4BA54E9D23B14,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T17:34:10.603Z,Confirmed,BNT,IN,0.000000000003372479,,0F92DB46E5EA3EE28480061C1FDCB45BA9E01E13239145B45765A2907AD5D411,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T16:25:02.853Z,Confirmed,BNT,OUT,0.000000000001514118,,962B6AF0FB1431940BFC139FC8C54BB929F439CE010AF3A8468939C84664EA49,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T14:23:10.549Z,Confirmed,BNT,OUT,0.000000000000618678,,AD5E33608FEAB759AAD8BAFF47CF2371FA38A889D80BA0DDC5D0AE23820805D5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T09:18:43.234Z,Confirmed,BNT,OUT,0.000000000002668938,,6CBCC346650B9A8C1DE0579841AD90A3ECDBB1012E02BFDCF8B24808992D051F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T04:38:41.028Z,Confirmed,BNT,IN,0.000000000003152109,,DE34E7B9AB2B15D09D6C47D42CF122627640C6DE44077C0C7D1AC5EC0F3D50B2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T13:44:31.454Z,Confirmed,BNT,IN,0.000000000001529859,,AAA779050DD7AA092D2A547610022FC1B6A51643BEEF82583662E93C4B12221B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T04:49:31.453Z,Confirmed,BNT,IN,0.000000000002987311,,1EF1CE474D880413F55CA68F2A64DFA7CF43795935D722392C3EBAB0C88D887B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T00:24:22.744Z,Confirmed,BNT,IN,0.000000000001574207,,C448EC4BA5ABFCE4CA34ACA5E13CBB058B2D47EF307ADFED8DE4937EB461AFEA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T00:12:56.290Z,Confirmed,BNT,IN,0.000000000001998247,,29BB8011DB3233D6BD14F25829D220301EA8BE90B08F2A692FA2B45C2A38EA3A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T22:01:56.476Z,Confirmed,BNT,IN,0.000000000001489891,,CAAE01FFC5B20FDDF405CE7FE751E1D64C97263D41566F6381E67961854777F2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T14:42:09.432Z,Confirmed,BNT,IN,0.00000000000163977,,DE697748E091C456F5FAD2285FA18CC3EE0DA4B4B3076321E555D55936AB9D21,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T14:37:33.282Z,Confirmed,BNT,IN,0.000000000002123762,,3A2D3720D7B3A9DE7BA6AC52B9E05B5E47294D8A8A4708B2F4F3A48CB31E6B10,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T13:57:22.193Z,Confirmed,BNT,IN,0.000000000001326735,,0632924904E908100906A3AA81DC9E603FD3988702C5749D20293DC2757D35C9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T01:59:13.481Z,Confirmed,BNT,IN,0.000000000000172189,,C72642A36356E6C87288B1914F782237D68A7C71A2529371350B2027F4667459,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T23:00:34.401Z,Confirmed,BNT,IN,0.000000000003509492,,339674DAAAAE2B6491C891FC2A8D9347F3ACA99EFA85187721DAC36FD0D136CA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T15:20:08.474Z,Confirmed,BNT,IN,0.000000000000140297,,4E2CF85086D3190678A835E62A36C5E2C7958E157755F3072C9D095EF10A9964,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T10:29:41.310Z,Confirmed,BNT,IN,0.000000000002129511,,FCD7121CCBEEAA49F040A133A9484B4267F778D226AA0C41AF1143031A493612,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T02:51:20.300Z,Confirmed,BNT,IN,0.00000000000165469,,77A21E718E68ABD3BA932E24671110694F0A059483ADB6E55668FDA71D90A347,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T21:14:17.695Z,Confirmed,BNT,OUT,0.000000000000281416,,54D9CB3E84AC3CCCBA88BA4EA743930B2B777AAD23A3597F36F7A057C23853AF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T21:13:49.587Z,Confirmed,BNT,IN,0.000000000004906308,,3C07BBFD3E49AFAC9A62AB1C0D7080806CE1B50BB38A6832394F4E3702397F97,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T15:40:49.672Z,Confirmed,BNT,IN,0.00000000000563038,,AC088C619F504C7D7F2E2A604F6157EE0A7855458C2962DC4559F6682DAD0775,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:30:49.991Z,Confirmed,BNT,IN,0.000000000000609507,,F653EE26AD4BA1CD4892611ADCCF1BD3F0C74281FBFAAD69206040EA17BB7637,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T13:34:29.673Z,Confirmed,BNT,IN,0.000000000001828659,,92E944984CBB54EB840B3D70E5A1029046A23EA4575ED9FC7BF4BDA426934A3E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T12:34:41.047Z,Confirmed,BNT,IN,0.000000000000516021,,C9B971F7A6457C0B26D8C03840E0D3A362A7F80913C801F80B0911F1FE75463D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T12:26:36.315Z,Confirmed,BNT,IN,0.000000000001101712,,971E9D1CC098A70C6605980221F00B8057587132F305C3EB761E932D03A3ABF3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T09:07:14.135Z,Confirmed,BNT,IN,0.000000000000118534,,FE4C6AF82E4DB7FB0EBF2A7E51B7136DA6D31830936B2C1E7BB0C600A8DEE85D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T04:51:18.727Z,Confirmed,BNT,IN,0.000000000000042978,,92515BAF2B6682E6E10B07F643C5E7508165144BB494D4068CB49B9EA6297E45,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T03:35:28.730Z,Confirmed,BNT,OUT,0.000000000001294296,,CC5DE021CE3C3CA6C47B8ED08BE34C897C2934315F2B6E9A5834B8A14D349FBE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T02:10:27.902Z,Confirmed,BNT,OUT,0.00000000000071408,,F6AAFEBB716A7B283A35261BB6078E53FC6B7A8E4AE9212C9B93D9B18C2E598D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T01:49:51.551Z,Confirmed,BNT,IN,0.000000000002190968,,9662B9625FE01919B0EC5147FFBE8948A49DE7FEA8CFCF16ABDF8AE77FFF076B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T01:21:59.491Z,Confirmed,BNT,IN,0.000000000000968669,,FA692F158ABE1E7C7444BA7CAB6EFFF963A7414E1CE21DE5864FA9453835312D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T21:46:25.339Z,Confirmed,BNT,IN,0.00000000000012661,,322EE6CE48F5081A44AE7C9571C62C593C959D234652011DD71A2B8452F6087B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T21:32:40.062Z,Confirmed,BNT,OUT,0.000000000001215729,,843D69F1F4F54F24CB8C74A6A42BE5CEC06AC2825775A05E90E4187A5A56CAC7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T20:05:28.669Z,Confirmed,BNT,IN,0.000000000000453605,,701BBDF1C4663460EF883B1D15F70D871D3D1558FFB4A1AB9783A6F61B89C93F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T19:44:29.769Z,Confirmed,BNT,OUT,0.000000000000357793,,B7966ABFB94A8BD0D911CDA8BB3781C5551DDAE02FEBA0D38B6FEC4D7B6BD159,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T14:55:49.177Z,Confirmed,BNT,IN,0.00000000000126432,,FDEBF513444632293853223FEA18878DDC96D2819259041DEB38947CE2E59E4E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T14:06:16.668Z,Confirmed,BNT,IN,0.000000000000163977,,2C17C9C66921CB3A28CDFAAAAC45B2CD8FB912441AB9F8EB06A98422CD5F9C94,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T13:33:41.431Z,Confirmed,BNT,IN,0.000000000002614051,,042F36BE27DA5A5CE01E9EAFDF74BC2D9C4866A626E4EF9FBAF0497D3B913324,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T10:20:02.824Z,Confirmed,BNT,OUT,0.000000000000006433,,6F9AFEDAD1565ED88C680F59918500A0B68D9DB2B5D61FB373A9FCC8A9DB87D4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T02:07:18.490Z,Confirmed,BNT,IN,0.000000000001356848,,B6D7B762E596A42A3E44D9E826A4F2226094EEF9B819408A2C0B0CAC71CD97DE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T12:28:05.790Z,Confirmed,BNT,IN,0.000000000001920228,,8B2D510C019C8198C5071D8038E78B68F0D6BB43BA0E2EE6D61082437C049A5C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T08:07:02.785Z,Confirmed,BNT,IN,0.000000000005136807,,D85E9513CACBAD0E8439D79C8124DDE01B000991DD6E74CC31474EDF0B725A7D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T08:04:59.637Z,Confirmed,BNT,IN,0.000000000000271698,,EA604E590750BEAC7C772B909A9A795CD01A5E3089CF3E0320B9C88809B4213F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T07:58:30.319Z,Confirmed,BNT,IN,0.00000000000013578,,B23EC23FCC2BEEFA9C3BA03DFD449984A488CA10052F8368920C06424A921F35,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T03:41:49.007Z,Confirmed,BNT,IN,0.000000000000239806,,9636E87666A809D436DD4C128720971D93046A4FBD9E7FDD7EB189C743DE5C76,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T20:26:08.184Z,Confirmed,BNT,OUT,0.000000000000292777,,A24CB57A048505D2AEC1E365A74F2D7B85CCC73F1F91700793BA24CEC95066E9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T15:44:10.391Z,Confirmed,BNT,IN,0.000000000000330965,,AA0DBA26E65953174A2FD3690210551DEBB4FF5A8AFDCCBC939E9D27FABB1A1E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T15:33:53.822Z,Confirmed,BNT,OUT,0.000000000001033548,,E24C288B568EDD199F38A6051FC6615DB7BBE6131897AC378AA957461A0FF89F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T15:13:04.908Z,Confirmed,BNT,OUT,0.000000000000501923,,B02DEA498C81D1D99BDF7E2D1D6BDF8B7236C38C65691327F885925557B148D2,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T13:38:06.999Z,Confirmed,BNT,IN,0.000000000002052998,,204FA9B56412ED007A3A70D159D59B691504D194D1FA2E5B4EC67DB6A549B975,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T12:30:41.302Z,Confirmed,BNT,IN,0.000000000006207448,,E4B7D9D095476F2AA4939A04C65529A50422D33B50A84450AF5378F8DEF58321,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T12:14:40.849Z,Confirmed,BNT,IN,0.000000000010709974,,18C92F30AA4C6267A02E1235D018E2AB5088FE38187F7F64DCB204A4B5A0E42F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T04:56:30.107Z,Confirmed,BNT,OUT,0.000000000000013003,,D2D6036C151F477A7F7ABA44315149C5608C62C671F9E84459AE99D7B8BE4C6B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T04:54:45.411Z,Confirmed,BNT,IN,0.000000000000869434,,F6729189BD601972FCA6F35BF3836A556ACF339B5E520BD74CC30358F112D94B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T04:16:57.582Z,Confirmed,BNT,OUT,0.000000000000669185,,4392185E19641DC3F7191AF4B6B7CD187FE196DBFABA7CB8C3B14F0ED6DF5CB9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T04:14:47.157Z,Confirmed,BNT,OUT,0.000000000006053874,,B9A8D0893B501A1F3897400DDBF5CF76AE4CC0657D654122E0DD60FF0224830C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T03:35:44.119Z,Confirmed,BNT,IN,0.000000000001053805,,D70369B18EF909FE2E6E89DE09BE7688144AC6F838A241C7BC5A161B2F95584F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T02:07:30.122Z,Confirmed,BNT,IN,0.000000000000963057,,2FDF622385D2215D66F50D50821C0E9BAC06D10D8DC53C6651D50CF42098AB7B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T00:42:31.955Z,Confirmed,BNT,OUT,0.000000000000150152,,79F32C81E1425EDA711148AF273A0C75B26446D03D8635B4F4CDB79ABB13F6AB,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T00:18:06.280Z,Confirmed,BNT,IN,0.000000000000094581,,AF8CFE50CF12F90F76E0B8E150B1CECFEFD1AD5D8097642A00B8EA16E4846B42,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T23:47:14.165Z,Confirmed,BNT,IN,0.000000000002131017,,95C619401352B39EDBCD885B3885531731ACDD12F7EE448073E82AA4B0978CD1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T11:19:50.395Z,Confirmed,BNT,IN,0.000000000006777125,,81B655F9306578CB54D4A1353FE366F2927916774A6AFA0C27E2F520CD51C6A7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T06:15:17.773Z,Confirmed,BNT,OUT,0.00000000000284715,,26D0DD8E445BAB0146B859E9D4751BAE8F30F348D4E6E38FAAEDD35E45F4DF1F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T06:15:17.622Z,Confirmed,BNT,IN,0.000000000001023556,,8430211324F57B62D6559F42E85AC7423846EE211C9F83CA29BCEE53B712D5DC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T18:35:59.860Z,Confirmed,BNT,IN,0.000000000000496858,,7906EC0141CB585DFE52FE90FCEE9C225E856FDA2EFE7DA3AAE0ED59876273E6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T15:25:07.154Z,Confirmed,BNT,OUT,0.000000000000224339,,BFAD95766AD6C335A8E3AF0F2FB2AE0945C5B2E566F154CB1B2D909535833E75,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T09:01:57.880Z,Confirmed,BNT,IN,0.00000000000119903,,FF3EE749C865B33F08083E6EC01192B3534E843177AB2F8DC51FEE851D3DDC53,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T08:22:58.965Z,Confirmed,BNT,IN,0.000000000002873567,,A3C41D9DBCD9C698CA09AF98D82E976D752CCD4424BF000463B47C621E368E79,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T07:42:47.567Z,Confirmed,BNT,IN,0.000000000001280061,,13A62C3C90C9FE2AB584B2A5F94FD2A553503F06656498624466D273D7D4E0F5,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T14:55:13.582Z,Confirmed,BAT,OUT,0.000000000000009855,,D6B73308609A06B93FFC11600ED77B416E4CCAD60A6B1ACE07B88C592A1BF471,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T04:26:58.932Z,Confirmed,BAT,IN,0.000000000002856458,,2D0A30FA13C79DD2ECCFDDD6B6FA0826713DA3C718739FF293E7FF992DEF0A85,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T02:43:13.954Z,Confirmed,BAT,IN,0.000000000000297157,,5468182424ED3DCDB121A6F0FC48F9C2DB219FD1CAA3E8E8B83D150E1AF8AEC3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-14T02:28:26.025Z,Confirmed,BAT,IN,0.00000000000268112,,FEEA988885C79CD2F4ADF3BD0F3052C250C0BE8857838082E8F2F2507A09A801,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T23:00:41.794Z,Confirmed,BAT,IN,0.000000000000841237,,84224D0B92839FE74E6DFEB051145027711B8F826E3136D57AB9E3248262302D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T15:17:40.360Z,Confirmed,BAT,IN,0.000000000000083631,,E93719D8C5186962E78B8CF0AE476AA6704BC9A2D2715DEAC395E4EB5683A447,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T06:44:25.850Z,Confirmed,BAT,OUT,0.000000000000835215,,C7E9B4CF334706032568E7A972B7C6CB68B0DE7E67205BFB1427E2A88D6F69A7,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T06:04:38.362Z,Confirmed,BAT,IN,0.000000000000594587,,F39BA47D22839896669584AB5EF7508F9E11BE3C2A197F1537620AB2650114FD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T17:58:12.247Z,Confirmed,BAT,IN,0.00000000000091515,,C0F3FBDD67357EFDA3FC52F6A2A8C681D037922409307DF866ACC919692391DE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T12:43:25.246Z,Confirmed,BAT,IN,0.000000000000469346,,A1E8A1EE1B523E592016CCF1D031E3EC5AF7A63F664849CD528E11CB47AA9652,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T12:22:22.258Z,Confirmed,BAT,IN,0.000000000000660835,,5107EFF356571C4A05A936617BC71AC8B3AF1AB7254688BCE1A051E1018CA4F1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T09:43:30.946Z,Confirmed,BAT,IN,0.000000000004989802,,C4C3608F9F7468EEFADC3DDDD4CB79E8448B9EB29BF0BEF825E653E7FF85E78F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T07:03:41.451Z,Confirmed,BAT,IN,0.000000000003882615,,1AE21F697E99C8200AAD0BD45ED23B5E11D0C855B54349999B8514966BC6DBDD,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-12T05:03:56.280Z,Confirmed,BAT,IN,0.000000000000237889,,6CDD1084C62C078C1463B59E57463FECC0D48571C495E1FA86F3A36EF4842637,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T12:30:34.097Z,Confirmed,BAT,OUT,0.000000000002778302,,F61CC413729B5623D283E89619236ED7CD879DF08DF0814F93EEAE48B0B4EDF6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T10:13:45.303Z,Confirmed,BAT,OUT,0.000000000001889842,,C36D8347671FF96382346FC16C2674E826416B17885D9E201185FC94D5DACC87,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T08:43:01.436Z,Confirmed,BAT,IN,0.000000000003832792,,AFC6EFB42AB1A1A3D1B6F2AF6622DC89BCC2FAE0D26D787C5F9D32D978E8C554,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T06:31:07.754Z,Confirmed,BAT,OUT,0.000000000001454851,,8198F98B8D172DA9A05CBC0E0BCD01D9AA17652267EE8D64F45B5FA773CC8B2D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T06:30:48.525Z,Confirmed,BAT,IN,0.000000000001121148,,C8DE0212CE9CF12660AD7B92B7B729225E3D604DEA1B0CA4C95ABCAF8B58C621,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T04:37:36.033Z,Confirmed,BAT,OUT,0.000000000000531625,,D35351216B32DAB587B4AE0B31CFF73B3F221596044D38A3A377B88C6B4B96DE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T03:19:47.824Z,Confirmed,BAT,OUT,0.000000000000052012,,085A2687D84846FCCF796BB2255C6CA881126ED2F8EDE12E1A87C0CBA04704E6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-11T00:40:39.548Z,Confirmed,BAT,OUT,0.000000000000046263,,10B3214C51CE8CBF11A68C0CE99F9E79D3B4BE61EA651F22133C9E1CD5559ED0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T23:02:17.289Z,Confirmed,BAT,IN,0.000000000005482418,,B1BBD202917387D9B483CD89426731FCA19170D7CC7360573EBCEFFED822C1B4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T16:34:27.117Z,Confirmed,BAT,IN,0.000000000001036833,,ACC98EAF56AFC18641F95FC30505506CE88BABED091134218B6FFDA792884DEC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T09:52:02.309Z,Confirmed,BAT,OUT,0.000000000000455385,,75577559354E4FC4F724FD9F9749181B5EBFD6EDF94A5F3BFAD8B6E04420C9B9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T08:52:28.578Z,Confirmed,BAT,IN,0.000000000002523303,,5981956C6BB3AAB4DCF64A90A751C6BC12C225DD80CF46820ACB94135319552A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T08:11:19.637Z,Confirmed,BAT,IN,0.000000000001322219,,13E4299A4121C9CC4CB42A8139EE65E81B6839B4EB2E8075A0668DE893516189,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T06:23:08.083Z,Confirmed,BAT,IN,0.000000000003457068,,7301F6889142C512C6DC028738220B02F9360CBEB4C8AD1C68A653329D257229,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-10T02:37:03.980Z,Confirmed,BAT,OUT,0.000000000000109774,,CF89A6F8194AC09E727FE71D5E5404C12B66739E5C09C8F684BEE25C58098220,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T18:59:05.556Z,Confirmed,BAT,IN,0.000000000008217468,,348A7D9288AB50A8D593DDEB67CFAA6D1C41085963C12F095EB803ADEF20963B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T14:22:34.713Z,Confirmed,BAT,IN,0.000000000002133754,,B2C74200E63560351476078E196D1BE8BC873ADB189B814526214B5F4A816987,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T11:57:55.929Z,Confirmed,BAT,IN,0.000000000002432828,,80435511BA32A0E1519EA2A3F1568005BCC0251D9ED03D04A0F168505CDFF55A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T10:34:47.592Z,Confirmed,BAT,IN,0.00000000000247827,,54EA30C86C3F82ABEBAD4DB62DF1FF0C9ACD705D0851AA3C22359E713C745A57,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T07:46:45.102Z,Confirmed,BAT,OUT,0.000000000001049152,,8C21CD21E792A0D50E17AA0613D08DEC0CB5C99DC8F51974C6766852D3C2F26E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T07:11:06.445Z,Confirmed,BAT,IN,0.000000000001217372,,5860FEA2688AACD5FA833EBD6D4B74852ABF342041F7FF555527C28F4C529304,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-09T04:24:51.744Z,Confirmed,BAT,OUT,0.000000000000487003,,132CA4A1E3EAA0E3575E353C5C6E48AB43DA98C2002B13468B963D2312B5F7AE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T22:51:58.193Z,Confirmed,BAT,OUT,0.000000000000844249,,3E240E580223D543F800D02C4107C2D6E77A75AB1AD7D9F8B2CDD2AAECB72951,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T18:39:45.759Z,Confirmed,BAT,IN,0.000000000000523823,,23200C4830AF3CD58B509EDFF42D516CD4833E9191F415BC2CB63C15F842BAC0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T18:22:18.962Z,Confirmed,BAT,OUT,0.00000000000393805,,A2CC9D3D0C4BCEC07F82CCBC8EE5CE38260DF639B51D54C215ABE46954004DE4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T18:21:51.059Z,Confirmed,BAT,IN,0.000000000000110184,,1D4E5D2FE7AF880E2E28041EC523EB335811E9BFFBBC11AB675C3345756E68B6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T13:43:45.465Z,Confirmed,BAT,IN,0.000000000000165482,,D59641A41CB0E6BB5924D0BAF563BE2192ABA27218F3355D4BF91DF8939AE850,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T10:59:07.730Z,Confirmed,BAT,IN,0.000000000000333702,,63C83E0E32C459A1C77EA94516F00C549EF64732B82ACF602D908991086DB075,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T07:28:10.924Z,Confirmed,BAT,IN,0.000000000000375723,,D1ED466E1196499151B5B6A2D75C7CA41F0928F461ECC7D0850F207E4F505605,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T06:58:15.544Z,Confirmed,BAT,IN,0.000000000000081851,,6F5707511AE7CB5DCBA37825C7330A05A9964B3504392C62F3F1A8ACF887C28B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T06:58:14.736Z,Confirmed,BAT,IN,0.000000000003661971,,255C68978F8D3FEC4C87280CC19E3A681068AD7A43C448D50FA6B2819BB24D3C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-08T03:55:05.482Z,Confirmed,BAT,IN,0.000000000000250071,,8BB448ABA6D604BDFF9525C0C28DB15641BE24AA8C371D862AF7119EFC731860,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T19:40:15.791Z,Confirmed,BAT,IN,0.000000000000067069,,D2AAB78A257872CF3DBDCCDBA9E631D61D621E56B0D10BD36A1FD81F303C829A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T12:26:19.374Z,Confirmed,BAT,IN,0.000000000000104709,,0B26AB063582D6D7AA158A1106F746826D5276F02501EE85F5D1B01F6CF2330E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T11:46:24.276Z,Confirmed,BAT,IN,0.000000000000253083,,F695BC34EF47BA1DD42CA8F5D088D9F0D08178ADDDC82D0D06F6800D0282BE24,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T07:10:32.200Z,Confirmed,BAT,OUT,0.000000000003925457,,FE32133CDDEF8CA1C9E7FE71F21434439FBD25DA6C9E83E02A1FAF033C769B0F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T01:10:42.112Z,Confirmed,BAT,OUT,0.000000000001922692,,F433133018E755F36E267C1A30EFC0CDE142F184547B63658C5341206BC7E241,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-07T00:28:43.385Z,Confirmed,BAT,OUT,0.000000000000004106,,5050CA0F5349574F6653AB6AC5172A2537F8285E3DA7ED037234A3C93ADE23CF,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T22:29:34.883Z,Confirmed,BAT,IN,0.000000000000133316,,5E94B0CE31DAD52715B50AF3C217E5B4BC54972CE72FC76E98CEEB35CBA2DB4F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T19:32:01.242Z,Confirmed,BAT,OUT,0.00000000000203274,,291DF9451B8D3B3D7BFF7D70D2684FFCA6947FFDAA0AB0337793FB8A14B8FC4F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T17:30:50.810Z,Confirmed,BAT,IN,0.0000000000022553,,8783C40CA566A11721DDD6450550F7F9D1314B420C3F624BA699902C19844C76,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T15:42:17.890Z,Confirmed,BAT,OUT,0.000000000005177459,,78891CF9A60381BE6DC2E790316E007C0EDB4E7B7BC78DE54A4BC32511796464,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T15:40:17.159Z,Confirmed,BAT,IN,0.000000000000981124,,2C669A4C1BE27E0C305B93695A3EF93FF3A87AED9584D17C042A9318463E542F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T11:06:13.675Z,Confirmed,BAT,OUT,0.000000000007173517,,616F2054ECB4399228235BFC3D9152F67035CF4FB3A0E0F386721FC13DC00A7A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T11:05:32.700Z,Confirmed,BAT,IN,0.000000000000585964,,36553AFB657BA15D2DC48C27DA7F39348B39B3A2F3485F120474026DCB21010E,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T05:01:04.869Z,Confirmed,BAT,OUT,0.000000000001698353,,4CC1454D1CAB999D3A367BFE749F0BB7633C58AAFC6F7AAF3A22AFE60225FB59,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-06T00:15:24.036Z,Confirmed,BAT,IN,0.000000000009134808,,DB55F18F8595F2B39E6622F24C81BBC26622980D237E8B1EF5D095E40D97B0D3,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T21:44:27.123Z,Confirmed,BAT,IN,0.000000000000136465,,F3565A7A6DE8D03AA196EB8473DEC8141775178546C73606C3D18A372630F475,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T21:31:37.319Z,Confirmed,BAT,OUT,0.000000000001328104,,2F0B4FBCB40BAE20D5D7E8B4479EFF56737A0E7871807A6560A14229ED880735,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T07:30:08.569Z,Confirmed,BAT,OUT,0.000000000002661547,,4016FDAA8C19F3750FBF352D2CCC753E568F81CE50A8B7F9AC92342E2524974B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T07:15:00.655Z,Confirmed,BAT,IN,0.000000000005238505,,2E4A03CFC16B171F48ECD1D54EE11DD16FB2320FB1DF476C7848AFE73D949A33,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T07:11:35.327Z,Confirmed,BAT,OUT,0.000000000000369564,,7034C53B9E67745A89B138D57A7C2C14E39F8DBD9468C12EFBF3F32761487D70,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T04:56:38.190Z,Confirmed,BAT,IN,0.000000000001677411,,9D2831A8E29ABF61354C54FA547B87B57861E37E3124DF240E3ABB6E63DF872D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-05T02:03:10.251Z,Confirmed,BAT,IN,0.000000000001493313,,728C3D0825147B311FE48DBB75025FD66053C14EAAD29CB7C734736BD954C351,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T22:51:13.169Z,Confirmed,BAT,OUT,0.000000000000142076,,E6BBC027FD643647D195F043D4ED28BD19A2A41BC18B667A8253925C0CE716BA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T22:46:48.400Z,Confirmed,BAT,IN,0.000000000000050507,,CB967A0A4AC98F08BDD7E7879E45D18E449716ED09093986D19D16B4F2ACF4A4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T18:47:22.509Z,Confirmed,BAT,IN,0.000000000003382061,,1C306D208B351D9AC210C7DCFBAB11E5A8D00B46295D008517591570640D0E71,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T17:00:15.313Z,Confirmed,BAT,IN,0.000000000000086779,,1C281D29A6673726757C0EC26746FFD7BA7B967CE214250132DD9FFF1BF9CEE4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T16:28:10.112Z,Confirmed,BAT,OUT,0.000000000004440657,,FFBE3F52DC7741BC5BEBACDF1D45A5F56196DF41DFD8618F6CCCC7530D6F238A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T16:27:45.446Z,Confirmed,BAT,IN,0.000000000001223531,,9986B7F0E1F7EC6E3AB7C8E5AFF48DB18A092142284D79E25F7BDA4801121F92,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T16:27:03.215Z,Confirmed,BAT,OUT,0.000000000000793742,,8D90837BA8EA1514FD773A6958E08DCB12244959DCF00A245A7A032B90AAAF2D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T10:47:38.423Z,Confirmed,BAT,IN,0.000000000003896987,,BBE741A4925F95014246F1136B231689B1F9605ADB2956C4FB44AA7742B3F1F9,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T09:02:27.667Z,Confirmed,BAT,OUT,0.000000000003909579,,13B331E4E21E83F60BEB2A3826D22552CB27FC7D17D633D31433DC084E85D8F1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-04T06:00:04.870Z,Confirmed,BAT,IN,0.000000000001584199,,CF3B7ADD39037D0D6BC8B14D9CCD1E3BFC47F9084CEB8841FDF0D2BBA1384252,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T15:03:16.331Z,Confirmed,BAT,OUT,0.00000000000018177,,55EE4BD5177039FC0E84E057AB69DA6035CEAE36F9AD4DB9B22D8CD6733C0FBE,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:59:03.421Z,Confirmed,BAT,IN,0.000000000002383553,,F0C3F1F48C8BB6E59C032AA163416D34CFA7D84246E7768D1B0784B4C1B2A079,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:23:09.860Z,Confirmed,BAT,IN,0.000000000002582433,,2C8B62E8036C6ADEE9D27B6FFDAC4FF4EDC73749BAE0AD0F779BC83ADFFD4E9F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T14:19:01.463Z,Confirmed,BAT,OUT,0.000000000000553662,,CB812B90A15A1497BA183DA352CFFAE4D875AC4FAEA181D168E51F95D420DD64,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T09:00:42.731Z,Confirmed,BAT,IN,0.000000000000014371,,A79327332064B39AAD221F5A4A1F58F46DB465330048E94EAF530586259BC9CC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T06:38:48.007Z,Confirmed,BAT,IN,0.000000000000140297,,AAD7FB173732E0003117AE54C09C8B6FCE6469A21D440344A623CC0642E804B4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T05:25:58.684Z,Confirmed,BAT,IN,0.000000000000351633,,714F50826651C69ABA82B81282E206371707074F74C2DF879263455E78EDC57D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T04:39:31.856Z,Confirmed,BAT,IN,0.000000000000382293,,6AC309C65E393D7CD422F55A0B9A4F52B06F6E77F57BB1AFBF0961C66DC35169,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-03T01:00:48.575Z,Confirmed,BAT,IN,0.000000000000013276,,A8EA6654276B43151C4CFC26331890DAFE960D0CDFBF56519E56FBE301A562ED,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T19:06:55.686Z,Confirmed,BAT,IN,0.000000000000330691,,EC0BCDBBFCC182F8653B84FE702A5009C85759563052FEF79E75EDBBEB910402,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T18:29:26.037Z,Confirmed,BAT,OUT,0.000000000000084315,,65B35748A3F63B611691831F3E374D6A4D134FBB75D79EECBA72705054FC6055,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T18:06:40.699Z,Confirmed,BAT,IN,0.000000000000981398,,4A66AB0F1F8625E768EF47AE793B19A52105FBA3817170D914D5B44BD5B66E18,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T17:37:51.501Z,Confirmed,BAT,OUT,0.000000000004897001,,0EE54323464E1BCA4F8D80E6076E64DFC5F35210DAA3F95157CF54CB0A3C3BE4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T17:33:50.860Z,Confirmed,BAT,IN,0.000000000003253261,,C11CA740CA11A5F6185F0896960E00151B438C06F5F3AB11BD58732A6D529064,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T16:56:29.930Z,Confirmed,BAT,IN,0.000000000002252015,,82ABFF8F0CDBCD38AFCB3333F0822FCD6336573DE7A1A945C84168ACBFD2385F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T16:19:15.332Z,Confirmed,BAT,IN,0.000000000002200002,,EAB0B538D45F392ABA262EDBB1C7AA710806233F94798D10A3B9DA1BBF99FCB1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T16:18:21.840Z,Confirmed,BAT,IN,0.000000000004716325,,523699E952868494BC2CA52C8C842D7B740A26F682B0D31122DF448663118584,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T12:29:18.415Z,Confirmed,BAT,IN,0.000000000001399416,,79D048D3A0B16EBBAC7FBA39742CDF1C1E2D82E49594D0BF38958145E05E7A7A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T05:42:03.894Z,Confirmed,BAT,IN,0.000000000001147702,,BBCF369B8F4735A4249DDF64447E3CCE5396998C4CB904B041D61C097049CC7C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T04:13:30.443Z,Confirmed,BAT,IN,0.000000000000071859,,879D1C08F2420710404E5DFAA3F28D243BFD5BD3F8A737A9E4CA52948103B796,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T03:34:43.633Z,Confirmed,BAT,OUT,0.000000000001911195,,9F6B9448F80F5A0E20FD82436C5CF0F7E79F3C7F5C9176BA5BD266A6DE15F721,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T02:02:15.536Z,Confirmed,BAT,IN,0.000000000000069259,,CAC058F700B444537B905359349BBED95E4EC6460B5DCE67EF83C460D948F743,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-02T01:31:08.385Z,Confirmed,BAT,IN,0.000000000000554483,,E86E1B795FA0374C5FFED6C909B9261231E1BDCE1F7F2E04DB57559F2C568F1B,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T07:02:33.105Z,Confirmed,BAT,IN,0.000000000000075281,,AE04DC4CFF3714F60CA9C2B077C913C97C8DEC004913651549F82FE6E54789CA,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T06:38:25.087Z,Confirmed,BAT,IN,0.000000000000017383,,6508AF479FB54AF351758F4F68D41F4927D311A9964FB7DD6C7FEC6DEBC1DE86,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T05:39:32.797Z,Confirmed,BAT,IN,0.00000000000230964,,279E38026F18E365CCBF87F70CEBBA83EA95BC05FD3953DAE7EECF598C4FBB5D,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T02:23:43.419Z,Confirmed,BAT,IN,0.000000000000108816,,C4958C89C72771530F0EB936053A22B8F295D2886E421CB60D967D69D0E589D1,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T02:02:42.901Z,Confirmed,BAT,OUT,0.000000000000022584,,0892A1E8857FD9D7F0DBF4AB390A88F106DA2DF065327DEE3288382F3C1A878A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T00:46:24.478Z,Confirmed,BAT,OUT,0.0000000000004547,,D90D48BAFB7F1B58EAC9D2E3B2076A177E16A207C3CFD625DFD094835F2BB201,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-01T00:27:52.196Z,Confirmed,BAT,OUT,0.000000000000150973,,0563FCED79B59E95BBD79CB261F11404D072E097AC314C6756A08C426732CA4C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T17:16:42.102Z,Confirmed,BAT,OUT,0.00000000000002231,,5435FAA251DC0E5DB253D8DA6B69D2549C13A67B83585590B7657E90CB9602AC,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T12:30:33.602Z,Confirmed,BAT,OUT,0.000000000000470715,,97C4E84A2B5EB9A9A66735A190AF492E32B1A0A4C387D8568E259529CA6AA06A,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T06:53:12.632Z,Confirmed,BAT,IN,0.000000000001746396,,C64664A96A607A526A1D193A6B93AA298C815B09DDFA203C40CF2315550CD16C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-28T01:34:24.165Z,Confirmed,BAT,IN,0.000000000000213389,,8EC6675E08EDAA3E8434CBF7742200882920F2AB38B0A6BDF441280CC6871725,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T23:48:13.594Z,Confirmed,BAT,OUT,0.00000000000486593,,D893B810C17A665996218439123ED141BDE24D517C53D2C23852256B4E6A8735,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T21:31:30.646Z,Confirmed,BAT,IN,0.000000000000430884,,F86C83F37EBC2B1BCA5072BD2BCCA59312690783FB9FAAD2844292FD3EBC2BED,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T16:31:30.786Z,Confirmed,BAT,IN,0.000000000000635924,,D7D16D439FD7E294778CCEB2DE70900A7344AC8510F1282D61CA3F60A6016313,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T04:06:56.002Z,Confirmed,BAT,OUT,0.000000000001053805,,3AC5C7E82B29B2A205C0AAB2308766C9F1651E4071E18119E734038973119D8F,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-27T02:42:39.642Z,Confirmed,BAT,IN,0.000000000003576424,,D338EE87EFB627D254D1B385F96E0C2CD23B66B280882CAFF8992A071A6BB3C6,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T22:14:20.790Z,Confirmed,BAT,IN,0.000000000000397623,,978DCFC633A5595EC9A22CE822D63275B68A2062BFBA1C1DFC62D060D00592A0,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T11:56:24.561Z,Confirmed,BAT,IN,0.000000000000692317,,9748910E20F4B6311AFD308D96C8C115AE341F7AE9184704834FB47BC89F8E4C,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-02-26T11:24:12.038Z,Confirmed,BAT,IN,0.000000000000960456,,8BF53AAF6A8AC9FA3F7A2811BF3D062FC7A138016273BA71F85F62E2B4A2BDC4,pponmSa68ucPNBom8Xk0X63,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, -2018-03-13T15:46:10.746Z,Confirmed,XRP,OUT,2.411812,0.024118,65267F4316C1BF8E1A44E6D3C71199A039B285CD725A133592B47613BB3512AB,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,0.25 -2018-03-13T15:45:41.669Z,Confirmed,XRP,IN,720.663508,7.206635,D640F9A3E3D62111F74D2A06643C67F6E963F6D289B19DCB4549F0E04CA406A5,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,75.05 -2018-03-13T02:14:07.352Z,Confirmed,XRP,OUT,35.361685,0.353617,C117CDC56A62392626433257E141462671CA74C4F4EFAB72158D8E95140DA8ED,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,3.68 -2018-03-12T18:35:25.124Z,Confirmed,XRP,IN,111.776239,1.117762,319072CD6D5FF527B67F8ADA0351DB2A8A850A304D47E547670C3D5DDBECBC55,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,12.23,11.64 -2018-03-12T16:12:07.357Z,Confirmed,XRP,OUT,1011.000641,10.110006,823B1DBB1C0B4FCAF81051AFAD0CF2E63C6A733C6CE4CE75C679F2C77FA2445A,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,110.62,105.29 -2018-03-12T14:41:11.463Z,Confirmed,XRP,IN,25.107143,0.251071,D928245DBC44CA245DC59326433404BDD782331B1DA72C26DFBB2E8788CFD629,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.74,2.61 -2018-03-12T14:04:32.517Z,Confirmed,XRP,OUT,3.938715,0.039387,C39F4178C9D47A14C4D4765BE4B9921D088784448BCC3A929B6BA90D01AE4BCE,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.43,0.41 -2018-03-12T10:40:35.043Z,Confirmed,XRP,OUT,257.369909,2.573699,91A27EC87C4088CD9445BAD3B51C13C137CA7A174C8E9054A4E577D194413223,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,28.16,26.80 -2018-03-12T09:18:38.106Z,Confirmed,XRP,IN,530.546735,5.305467,272BCAA487F44065DDCCC430278A92C38D2AD44B6D4AAC3DF54C6BE51F377DA0,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,58.05,55.25 -2018-03-12T04:30:39.781Z,Confirmed,XRP,IN,10.53216,0.105322,FA1310DC960FD10C1F5144CD3E6DABBE363D6FEFB1BC28E2150C0112AAB91282,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.15,1.09 -2018-03-12T02:34:18.075Z,Confirmed,XRP,IN,47.073725,0.470737,D277C65E4C6FF4EC1E40BB4D8F7357414F1C4008EB838703E618F2BEF0C09E5F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.15,4.90 -2018-03-12T02:27:03.344Z,Confirmed,XRP,OUT,3.661096,0.036611,5CFF549B29C78BCD046A00DB569CF61A5201A30A9D4D92C254898199B586D419,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.40,0.38 -2018-03-12T00:11:08.193Z,Confirmed,XRP,IN,8.588829,0.085888,1558AC5E9C464D1386192632A03EE835326827659A0560F3BBB25283E86BCCBF,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.93,0.89 -2018-03-11T20:17:53.150Z,Confirmed,XRP,IN,363.159995,3.6316,749AF2CA71C539EB5EFEF8775852548FA88A8B3C5407CDA347D592892BE01D94,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,40.33,37.82 -2018-03-11T17:16:29.589Z,Confirmed,XRP,OUT,263.61633,2.636163,13DAFF97E5680A956CFE0D682057FFC325F9EF3D8E197A7571ED3819142DE05E,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,29.28,27.45 -2018-03-11T11:51:48.020Z,Confirmed,XRP,IN,167.5429,1.675429,780CB43F9E0F328E73C441A41A371D082A239A7F44150860E9914F0762EE4AAD,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,18.60,17.44 -2018-03-11T09:00:18.484Z,Confirmed,XRP,IN,172.071556,1.720716,28ABAEA3A06277404C8E172287ABE6E40900C6544DD5B019878D5CB8D2306957,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,19.11,17.92 -2018-03-11T05:43:02.605Z,Confirmed,XRP,IN,153.922232,1.539222,219B8896D8B5AC5FEE11A1A306A2665DEC58322E582B7F86179E07FEC5F33B0D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,17.09,16.03 -2018-03-11T01:02:50.305Z,Confirmed,XRP,IN,15.407839,0.154078,811118EDB8A6D3FE48673D855E33151EAB0883A677E9DA358D9831BFE78D5A1F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.71,1.60 -2018-03-10T23:20:31.984Z,Confirmed,XRP,IN,384.744851,3.847449,D1FF581547C85A754A14D193E1E4D4B5801242D077C18DDA79D7FEE24D837353,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,43.24,40.06 -2018-03-10T21:14:30.979Z,Confirmed,XRP,IN,9.265524,0.092655,7B45C0BDBCC11EACE1DA891D035A95BFA4476F9668D3B933E5036DC11E5C2854,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.04,0.96 -2018-03-10T15:04:58.667Z,Confirmed,XRP,OUT,169.590338,1.695903,47E7CD49DA15E3151D973731037D6AB094E1FE843FF698CCDC666EE086B028BD,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,19.06,17.66 -2018-03-10T11:26:28.174Z,Confirmed,XRP,IN,826.627105,8.266271,423209801542A9A9E2DA57E2D912F1C5426967619A1223E0844946B1FC0AA097,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,92.91,86.08 -2018-03-10T09:16:11.848Z,Confirmed,XRP,IN,148.335155,1.483352,A186A6D4A39F9027E38B5F673C38FF4B3C1C5BF292B48B1130115B226DC213DC,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,16.67,15.44 -2018-03-10T04:39:55.064Z,Confirmed,XRP,OUT,545.173771,5.451738,4695029228DD508A7C3ABD01B7F23F1111F2EC8BD90A6A3E90B037DAAC929438,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,61.27,56.77 -2018-03-10T03:48:11.392Z,Confirmed,XRP,OUT,37.686741,0.376867,FE0C40861163743CA4AFA113745509BDA87500F92BECAD0A741540719E84E522,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,4.23,3.92 -2018-03-10T03:41:17.247Z,Confirmed,XRP,IN,209.463328,2.094633,6FF921A3FFA5D4162EBC285CF7A09875A278ACF466A4F95B1D913A88FF5669E4,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,23.54,21.81 -2018-03-09T12:36:56.652Z,Confirmed,XRP,IN,48.617979,0.48618,B236B319CAF6681D4CF466797EE97F23E0C0F6D919C03CE0812D453EF73CFBA7,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.50,5.06 -2018-03-09T04:06:47.803Z,Confirmed,XRP,OUT,230.926726,2.309267,C9B251CB33F9F225C60610F246270DCEE202CE375289F80061BD26DDC1311678,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,26.16,24.04 -2018-03-09T01:38:57.978Z,Confirmed,XRP,IN,17.333819,0.173338,A7762B53BDE39A8D0641B843382937B299847364977124244471BAFF4FA5FE7F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.96,1.80 -2018-03-08T22:10:44.573Z,Confirmed,XRP,OUT,14.141203,0.141412,E6EF3522AF9B68003606BFA43530D6BE05D19D5E9D4C12F01DFD2D7E46D3CE0D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.60,1.47 -2018-03-08T20:18:15.418Z,Confirmed,XRP,OUT,316.572102,3.165721,6EA2E8CE2D84427253F1A34D1C69DD896B7A2EA4F58F914A8E7EA59763F54621,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,36.02,32.96 -2018-03-08T19:10:49.718Z,Confirmed,XRP,OUT,140.128051,1.401281,FC9A7B187D39CB462B2A0306ACF6EDAD05AC055FC06531261A1235BCDE80DD7E,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,15.94,14.59 -2018-03-08T17:47:25.426Z,Confirmed,XRP,IN,138.080613,1.380806,EDC698653D4A1C029AB01C45729D391C73E11268A27D5417A2A300FA9A22C4D2,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,15.71,14.38 -2018-03-08T12:09:49.832Z,Confirmed,XRP,IN,557.75337,5.577534,19B9607D5D6033791D44F07FAC9FDADF1C9FA1CF55C33E2D43F9B30E40A8A332,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,63.47,58.08 -2018-03-08T11:36:18.800Z,Confirmed,XRP,IN,136.55371,1.365537,C056E3E76E6F9E30539A7C68DC42ED80224A412BEDD43EB8CEB9E91D8C18279C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,15.53,14.22 -2018-03-08T07:07:12.336Z,Confirmed,XRP,OUT,149.272118,1.492721,4561678D47DB439D61540C6B323980BCB3709329E1BB3FBC32018DD369E4FD08,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,16.98,15.54 -2018-03-08T06:52:15.943Z,Confirmed,XRP,IN,1.457498,0.014575,EE8013FEBDA9EDEFA0CB2DAE06A092002C900C76C266B108066D850FD7EFD9E4,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.16,0.15 -2018-03-08T06:41:37.091Z,Confirmed,XRP,IN,441.51788,4.415179,85EAC9E9373A6F012F3D9F3FEE38245FBB9BC7715FE9B19F53E24BB0D12F4683,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,50.24,45.98 -2018-03-08T06:19:30.688Z,Confirmed,XRP,IN,34.077698,0.340777,BA52B65E229EEEF12E5FB321D434FC3F4FA4C5A4DE997AD2534C1A6FAB159DAD,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,3.87,3.54 -2018-03-08T05:48:28.738Z,Confirmed,XRP,IN,230.562351,2.305624,7D93C465C0215D8546E18913FC5B6EBC067CC5CEDE5C7DF542F66522975EBD88,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,26.23,24.01 -2018-03-08T05:41:52.196Z,Confirmed,XRP,IN,60.017698,0.600177,FC590175FBF1567992BB137AFC05367F3D25AF07AA4A565DBD70B6F7DF530919,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,6.82,6.25 -2018-03-08T03:04:26.903Z,Confirmed,XRP,OUT,645.237971,6.45238,14C23253B3410DEF29DBCFFFCD12A9CA2103E2A9BE4B99DA921A83A42F1F1B8A,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,73.42,67.19 -2018-03-07T21:42:40.876Z,Confirmed,XRP,IN,387.763954,3.87764,5C821E7AE86C7F145B2A137C5298E218877F955DA0B1ADE392E51DA442C09F8F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,44.14,40.38 -2018-03-07T09:35:56.183Z,Confirmed,XRP,IN,504.710842,5.047108,F166DDB8130040FF32B9EA078DC8893FF6D04FDBB0394227F53D9565AA827F63,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,57.45,52.56 -2018-03-07T07:49:20.100Z,Confirmed,XRP,IN,0.034702,0.000347,0FBE87513625682714A6783D36CBC4AA7555E3BA23DA956FC232DA855D7CA984,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.00,0.00 -2018-03-07T06:25:04.305Z,Confirmed,XRP,OUT,32.672253,0.326723,64EFCF2209831E42273E0F76F1965ADEB34EC8F9F0395C64C8757645D5F3DF75,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,3.71,3.40 -2018-03-07T05:32:07.009Z,Confirmed,XRP,IN,292.176357,2.921764,4879F10E51F86C0A94A237D1006FA58421331F0174B7AE448C103363CBB7F139,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,33.26,30.42 -2018-03-07T04:03:44.707Z,Confirmed,XRP,OUT,123.106553,1.231066,876F415C2DD5CE9E6466093404095AEA42D394ED1687FFD42B49784527EE594B,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,14.01,12.82 -2018-03-07T01:58:08.982Z,Confirmed,XRP,OUT,1253.778217,12.537782,EFD16EBBD9C685DB9A5EB5104EA8F7C01133A959F0507EC3363A1F5E3FD2C7CC,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,142.72,130.57 -2018-03-06T22:29:42.717Z,Confirmed,XRP,IN,170.041469,1.700415,62539F7615C413D7D0B9079ADC60EDC8176CD482B0B22745D275E75724EAC986,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,17.70 -2018-03-06T22:26:14.014Z,Confirmed,XRP,IN,201.690003,2.0169,05609E665A052AD318C2099C91E1DAA8AC558AA5172E87BC8319D83EF079F140,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,21.00 -2018-03-06T20:18:22.321Z,Confirmed,XRP,OUT,160.498325,1.604983,D39505093E47A49FB3D8DD3E7A51C31A85D5B12CCC8149A16FE85B4678855ABC,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,16.71 -2018-03-06T19:30:56.107Z,Confirmed,XRP,IN,19.936494,0.199365,552105F46E16F946174004C2DEEB5C965532D49E9C86D0ADD795DA18786620DA,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,2.07 -2018-03-06T18:18:03.875Z,Confirmed,XRP,IN,19.693578,0.196936,C931F529AA218A308E8CE5440D05C43862F4854CD7E7DCE1F74B1C6C8B957716,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,2.05 -2018-03-06T18:08:28.090Z,Confirmed,XRP,OUT,17.21236,0.172124,A61EB43A89B4AE0A97921CBE862E8102EB8596A346AA36D0E13B2933860CF2DA,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,1.79 -2018-03-06T16:57:41.967Z,Confirmed,XRP,IN,15.72016,0.157202,B8E346404314FB3040951A297E489215EA22F79E8F1981B3DDFD4198753B8373,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,1.63 -2018-03-06T14:39:33.275Z,Confirmed,XRP,OUT,3.921364,0.039214,BCA85E4AA0B0C3452517CC3E23D7A5C0034023B24FE28F6A52EEA46897F37E57,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,0.40 -2018-03-06T13:42:15.180Z,Confirmed,XRP,IN,8.241805,0.082418,07FBB1064C2E0079990BF717D91326CD9F5EBAF2BA7B53A737D6D9868207B569,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,0.85 -2018-03-06T11:11:17.191Z,Confirmed,XRP,IN,28.577377,0.285774,BE89F74EFE16735242067667937B62BB8FECFF39ED36A241FE9112E0C7BF2F24,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,2.97 -2018-03-06T06:44:19.261Z,Confirmed,XRP,IN,42.735932,0.427359,F95602DCD75C8CAA482EFD4246E2EFDE6FD3030C3FEF6D6AC0DF006C7EE3D6F5,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,4.45 -2018-03-06T06:18:06.678Z,Confirmed,XRP,IN,126.490031,1.2649,B41CE2A81DB41A3FA6140002CAB2797D3CA3928B858C0EF6E78D1E7068CBCF2C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,13.17 -2018-03-05T14:39:09.794Z,Confirmed,XRP,OUT,593.583537,5.935835,3C349F8ACD5FD309198C1FA9772BE370F90D76B71A85B3E4682A97DB522B018F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,66.99,61.81 -2018-03-05T12:57:44.331Z,Confirmed,XRP,IN,882.046744,8.820467,0EC0966A6BB0C6BFB9FF8B2B1F2C5FAD30C87C1DDDA63F8F02436A0AB06E8841,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,99.55,91.86 -2018-03-05T09:21:17.186Z,Confirmed,XRP,OUT,126.368573,1.263686,2984831620406154236119449C6C8D141BAB9DEAF52B4F462FD5A72390620F0A,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,14.26,13.16 -2018-03-05T02:10:31.734Z,Confirmed,XRP,OUT,1.405444,0.014054,B957AF6DD34BC354BCBD45BFABBC8AC85DADBCA998A8AF64962E06F4C9150135,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.15,0.14 -2018-03-04T23:20:18.810Z,Confirmed,XRP,IN,68.138045,0.68138,C7D093BDD162AD93F55512BD8C713DB0C364ACF109079FBCB45087F25F95B709,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.63,7.09 -2018-03-04T23:07:19.997Z,Confirmed,XRP,IN,241.701802,2.417018,5094F12E823718B7D6B7395B3F8C9C7C513DF572A0D2DDD3F7DEED0B257AA70F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,27.09,25.17 -2018-03-04T22:38:13.115Z,Confirmed,XRP,IN,276.716464,2.767165,07A1DD833D1149C8CFF12EC9FCD7B6F6E2CB1F23F6412BA2E0BDA009FAAF3B7D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,31.01,28.81 -2018-03-04T22:30:49.316Z,Confirmed,XRP,IN,1.353391,0.013534,09D099B6C71037574DBF11AC71FA7C7E5D9F96795FD6A8506FAA7D7888ED7555,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.15,0.14 -2018-03-04T21:09:59.485Z,Confirmed,XRP,IN,360.470563,3.604706,91545D8C404F9E52C39DC356021CAEE12EDBCD891562B540B53008B381072951,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,40.40,37.54 -2018-03-04T19:20:22.864Z,Confirmed,XRP,IN,16.431558,0.164316,B70A76AB21D846B7AA65E74FBA32040B43BB03843F30A168A1BE05472A616C25,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.84,1.71 -2018-03-04T18:21:28.924Z,Confirmed,XRP,IN,120.000694,1.200007,1E1DDF4A7F1DD8A6FE6F741925B885CFA78DBE39C5C1C952F106AD1311548FAE,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,13.45,12.49 -2018-03-04T12:35:37.610Z,Confirmed,XRP,IN,1421.546683,14.215467,88BAACB5524B73B364924D7A11EC53400CDD6A56EBB6F240FA28320A7ED4A87D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,159.34,148.04 -2018-03-04T07:10:21.931Z,Confirmed,XRP,IN,0.624642,0.006246,0DCAE3C4EDA5D826A21F6083B11FF74B39C91D86662268384F4D072D7D12EA42,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.07,0.06 -2018-03-04T06:47:10.355Z,Confirmed,XRP,OUT,268.006177,2.680062,649455FE0D600B8443D9BCA1EE2E43D5D1835F5FB98651F704B823B568B91989,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,30.04,27.91 -2018-03-04T04:24:53.289Z,Confirmed,XRP,OUT,67.548106,0.675481,D2454515EB7B6E154F2F341E1F28A435906AE950806BE694CD6FA393C18A726C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.57,7.03 -2018-03-04T02:34:02.297Z,Confirmed,XRP,OUT,4.736869,0.047369,1B8F79387D6E206AF246EA47BFBC8AA1BF707445D0A7ACB0BA5DFF9DBADF2354,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.53,0.49 -2018-03-03T20:03:57.050Z,Confirmed,XRP,IN,193.899328,1.938993,AF3165773F117D18E04BEB5B3678BC790EFCA8E73AC576FC2B2CBAE13F63FDA3,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,21.58,20.19 -2018-03-03T19:56:24.344Z,Confirmed,XRP,OUT,87.588707,0.875887,A0BBA1AA636ADFE6429090091AD2B113399D2C3AD599C539100CA24BAA55D502,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,9.75,9.12 -2018-03-03T13:04:51.533Z,Confirmed,XRP,IN,447.799004,4.47799,F54DB531B7AD97E87114242E49E4233DD007924A1A859DDA17C154BDC57DACF3,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,49.85,46.63 -2018-03-03T12:50:52.967Z,Confirmed,XRP,IN,2.394461,0.023945,D44FB5CF4AC073AA625D2B8491D398AD6974EEFE068619DB20DE52889B7D1D68,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.26,0.24 -2018-03-03T05:07:51.519Z,Confirmed,XRP,IN,96.507209,0.965072,83EDCAAEA987DD6AAA259BD369F9C3459A014DB7390C0523DF196826AEB30FDB,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,10.74,10.05 -2018-03-03T00:47:13.789Z,Confirmed,XRP,IN,380.719379,3.807194,A79B55A527FDE9FB07521C567503ACCDB8D4B53ADF2E9E7C9DDC80F0BF18800E,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,42.38,39.65 -2018-03-03T00:39:39.689Z,Confirmed,XRP,IN,19.068936,0.190689,856A10A89CBB8F1A5D6025F4FCA77769A497F25986A8C78A7FD2F281811952CF,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.12,1.98 -2018-03-02T23:43:13.500Z,Confirmed,XRP,OUT,12.787812,0.127878,B00EDA289F5466E709B158839512D5BEFB907E444FAD78E0B449FC056C5D90C6,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.41,1.33 -2018-03-02T12:41:01.337Z,Confirmed,XRP,OUT,825.898356,8.258984,F2273B445710BD5066B01ABF9E9ECBF03B15681561B74F72C51D5AF2CEAAC855,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,91.48,86.01 -2018-03-02T11:56:46.033Z,Confirmed,XRP,IN,361.424878,3.614249,E43C08ADE8039BD30D00972CAF906046EE65675246682A3003BD7F0F068BCB24,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,40.03,37.64 -2018-03-02T10:31:41.116Z,Confirmed,XRP,IN,48.739437,0.487394,BFDA46F681F00CB5171387F249C8DA24F2B5251101165E8555475C4C69F8A244,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.39,5.07 -2018-03-02T10:31:39.388Z,Confirmed,XRP,IN,108.930647,1.089306,A78912707DFAEBE13CDAF01EA7847A823D2B123A25B9934AD1087BB1EB7A986F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,12.06,11.34 -2018-03-02T09:24:51.523Z,Confirmed,XRP,OUT,182.881335,1.828813,DFFC4B887124B06465D0ECA609695D5DD95FD50B2CD20E097C45DB2190B2F4A8,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,20.25,19.04 -2018-03-02T02:07:14.985Z,Confirmed,XRP,IN,42.892093,0.428921,3B20490C644EA976C60CD1DA08AA37412955F63EBE10C4286AAED2075BA00E0E,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,4.75,4.46 -2018-03-01T23:24:15.176Z,Confirmed,XRP,IN,49.121163,0.491212,B2F8387DE8A264ACAA0CBBA3E288E492232DF40FE8E3C08F06DE4FE92F7B4CE2,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.42,5.11 -2018-03-01T14:47:12.582Z,Confirmed,XRP,OUT,46.605243,0.466052,0DDAD33E61AF7DEA853D28B8B118ECB47AE03DE33B3F3272EC50249627FFF7F5,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.15,4.85 -2018-03-01T09:45:52.028Z,Confirmed,XRP,OUT,50.682768,0.506828,B723214C42F1CB7426D8B7B8FD1A3C51F156E86AF2BF3C4EDE62B7F564857436,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.60,5.27 -2018-03-01T09:43:45.042Z,Confirmed,XRP,IN,5.396213,0.053962,F7EA6DA98F32D4505E46DFF02A8696631CC9207985C3131403B498AA333F5376,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.59,0.56 -2018-03-01T03:23:52.322Z,Confirmed,XRP,OUT,51.567678,0.515677,7428D0F0C26E2EAD90942F3EFB656D2B27243B16AD3C98F52DE4FB6FE7E353F4,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.70,5.37 -2018-03-01T01:12:37.701Z,Confirmed,XRP,IN,2.2383,0.022383,39FDA2CB5A76097CEF08892D58CE534FDDE9C9D98CA96F8727A512AEAF852876,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.24,0.23 -2018-02-28T18:57:21.916Z,Confirmed,XRP,OUT,459.892769,4.598928,CF9E0E63EC9C76F287031562CDB07388C772A430440B8C7BA4C50C4A9692C9AD,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,50.94,47.89 -2018-02-28T18:56:51.591Z,Confirmed,XRP,IN,731.80296,7.31803,CBEF4FCF076C6F3BF032576953C089D5BBB73E90B4C8ADB561CF44F55F283F6C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,81.07,76.21 -2018-02-28T17:21:06.012Z,Confirmed,XRP,OUT,392.188503,3.921885,514294CECD00F629E74A4BDD396F0683D7F07EFA6144FF5BB2D4CCAFCF7F816C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,43.44,40.84 -2018-02-28T13:35:43.098Z,Confirmed,XRP,OUT,117.380667,1.173807,808E4E7322C9B61C621EEDA5C5E3ADCBEE143955A49C34CD508C7FEB3B48430D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,13.00,12.22 -2018-02-28T13:14:37.988Z,Confirmed,XRP,OUT,342.963232,3.429632,0C9A692428E6B6E15E4E0B6681EDA33B23DEEF2AD4DBB199DE999B1A833E4F0F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,37.99,35.71 -2018-02-28T13:14:23.005Z,Confirmed,XRP,IN,129.023302,1.290233,BFF2726F2E0D7BC15E3975BD564773B52BFFF97AF7C26D841DADD545C6ADFB09,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,14.29,13.43 -2018-02-28T12:21:19.413Z,Confirmed,XRP,IN,74.245657,0.742457,61186759317ACE6CFDDD6CF7FAFBAF4DB28984C129E70143E0BFBDA7F7E177B6,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.22,7.73 -2018-02-28T10:22:57.338Z,Confirmed,XRP,OUT,1.873926,0.018739,63BA1F6F820949F37A4F1AAFE1B8C339CF81042122DF2A2FD86F6E0CE7F7B650,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.20,0.19 -2018-02-27T19:59:34.022Z,Confirmed,XRP,OUT,308.434403,3.084344,A8D21970588AFA66AF22210A3D7CDC70A3418D86F1D8FCF6C3DD81D2DADA42BB,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,34.41,32.12 -2018-02-27T18:34:40.674Z,Confirmed,XRP,IN,10.618916,0.106189,F0781BD8DDC81BC18C3E627D2DE434B13627F18CF2659FFC9CAD76E4E7EE4C7A,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.18,1.10 -2018-02-27T15:34:31.470Z,Confirmed,XRP,OUT,240.78219,2.407822,193151F5F1D23CEAD9C664EBB8BF5F4C4A3EC83C0EE3B1E30DEA9597611821A2,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,26.86,25.07 -2018-02-27T15:11:33.939Z,Confirmed,XRP,IN,282.025922,2.820259,F15269BE71626CE694C4A093779BAA6FBE7B78AB46F9C5281D55036FFE49F461,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,31.46,29.37 -2018-02-27T08:44:01.251Z,Confirmed,XRP,OUT,19.103638,0.191036,15C9B7B0027A7B5F6F5913664C028D542CEC4F682F5A40364BFA88A0A32DE83F,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.13,1.98 -2018-02-27T08:38:53.766Z,Confirmed,XRP,IN,266.930404,2.669304,2CE169710FDF73DF36C77A9C75B6B3359A5C6F984651D83997628F1260D67FD6,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,29.78,27.79 -2018-02-26T21:41:10.696Z,Confirmed,XRP,IN,11.989658,0.119897,F6C27F627BF4058454E0E3BD6AFF94D6DB210AD16FFC258D9D8254250C655240,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.35,1.24 -2018-02-26T21:25:35.257Z,Confirmed,XRP,OUT,313.674457,3.136745,85A31657C5F8117251F0EF65590D81096A369B363E4845DB5A3872D32DF972DC,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,35.42,32.66 -2018-02-26T20:09:14.257Z,Confirmed,XRP,IN,0.052053,0.000521,3D2E73C98929C434539CC55C4818265D55C3DB32A1CF3506D4DA638AACEFE126,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.00,0.00 -2018-02-26T19:35:39.515Z,Confirmed,XRP,IN,99.734527,0.997345,F389B0D467FF2643DCC094C66BCAAD9540A65C0BD7D8CCC985BA44FA0ADABEE9,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.26,10.38 -2018-02-26T18:39:37.853Z,Confirmed,XRP,OUT,1.578956,0.01579,BDE54B97D2D6EB11C02F9063E7168D11257276918470214414F21E839A260586,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.17,0.16 -2018-02-26T11:26:41.207Z,Confirmed,XRP,IN,67.305189,0.673052,80C2F9E1B937EC166F7C3156CB93B713D29C072722660A04C75A07293090090A,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.60,7.00 -2018-02-26T11:26:01.221Z,Confirmed,XRP,IN,803.584751,8.035848,5CBE0B3A556829C86A49AF0C191E013C63ABB68DCAF21433B69EC064760ADDC4,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,90.76,83.68 -2018-02-26T10:40:31.862Z,Confirmed,XRP,IN,225.634619,2.256346,34B90F5657A29432CE642D5F3C5FFA72AF72D5362568CF287DFA6BF39C952A19,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,25.48,23.49 -2018-02-26T10:37:41.831Z,Confirmed,XRP,OUT,51.810594,0.518106,FE6315ECBB6DC6CF4DE0A4835B8157B72FA8AEF2FABA5E10A64CA0AA2CCAAC5D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.85,5.39 -2018-02-26T09:09:42.139Z,Confirmed,XRP,OUT,928.964308,9.289643,B3FDD367EB36F6959D82197DE67414651F56765031BB0A9B905F396763800BAA,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,104.92,96.74 -2018-02-26T03:36:36.729Z,Confirmed,XRP,IN,19.676227,0.196762,E4C770D854F73072BD7630C751CF165551A079CBF9F36AC1127A3A532033BA22,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.22,2.04 -2018-02-25T15:41:24.227Z,Confirmed,XRP,IN,72.701403,0.727014,554C512A1ECE90D59FD72A01FBFE7F476B18E3F5911BC170DBBA0060085484C7,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.34,7.57 -2018-02-25T15:24:34.863Z,Confirmed,XRP,IN,148.161643,1.481616,9A96E37A6548E384E3A609BD0511178A457A79E4C663453D321689E406AF7928,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,17.01,15.43 -2018-02-25T15:23:25.181Z,Confirmed,XRP,IN,103.135356,1.031354,8706F948C400AC6A532B1DD1DDA854852376AB7AF584D6C02796051EB7522C66,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.84,10.74 -2018-02-25T15:03:24.623Z,Confirmed,XRP,OUT,118.387035,1.18387,BEAF04764AA99BDB9CDE3EFE9FF1F860254A2530FA5729F9807802BE148D9587,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,13.59,12.32 -2018-02-25T13:18:34.071Z,Confirmed,XRP,IN,180.764492,1.807645,F65DDBF5466F578ACA3A74928C5C4EDC291738FF677D4FF0DD695F942F255586,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,20.76,18.82 -2018-02-25T10:01:15.608Z,Confirmed,XRP,OUT,98.415838,0.984158,2D08A260A594FB5AE807E06186F8C53FCB52476832692DC28B0D3BC4168DD843,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.30,10.24 -2018-02-25T09:28:01.023Z,Confirmed,XRP,IN,24.777471,0.247775,9DC9C82BDB948D26BF29FEE4EBCDBD1B6A49EB608179E6D94926A169A09183FE,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.84,2.58 -2018-02-25T01:46:24.278Z,Confirmed,XRP,IN,104.072319,1.040723,243DB42435DC04D032CABFF30F5FD75D8AE2C6971632601567D20842ED0DC364,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.95,10.83 -2018-02-24T23:57:50.862Z,Confirmed,XRP,OUT,593.583537,5.935835,7B6A8FCE362CE28CCE8A9287E189B3B8C5A84681ED7283B9C372B8FBFB85C8C6,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,69.54,61.81 -2018-02-24T17:55:34.997Z,Confirmed,XRP,OUT,162.025228,1.620252,A76753325411035A4A7C01716854F35FF282ABAB3A8923051FAD10BB0F0535A1,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,18.98,16.87 -2018-02-24T16:11:50.089Z,Confirmed,XRP,OUT,70.862179,0.708622,DF8DD4C1F1E5503B7626FD760736ACB6FF77F128C70E534BC69D23D7AE585AB9,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.30,7.37 -2018-02-24T16:02:51.911Z,Confirmed,XRP,IN,476.480488,4.764805,EBB582030342883D01523C660D8B2336504339CE4F25C191128E916D28088E4C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,55.82,49.62 -2018-02-24T15:02:42.594Z,Confirmed,XRP,IN,417.434455,4.174345,92061F0AC044B3A3FF40F0F40C77E8AF2E9C74CE48EF4581A1D5DF510056DBB0,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,48.90,43.47 -2018-02-24T14:40:40.308Z,Confirmed,XRP,IN,7.287491,0.072875,7EF7156FA1953A1DF98C0409140119874A92BABEC540DFD5E96D84C91E1551D5,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.85,0.75 -2018-02-24T09:41:08.831Z,Confirmed,XRP,IN,480.158936,4.801589,D9CCDF5F62833F297AE387A5C5562FF71D4ECED107E4BEA46FBE00EB5075251C,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,56.25,50.00 -2018-02-24T07:35:26.325Z,Confirmed,XRP,OUT,46.570541,0.465705,172079B19C99ACA712C221A030E3D2BCF7E655CD3641F736F73DC2E810D6727A,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.45,4.85 -2018-02-24T06:29:58.755Z,Confirmed,XRP,OUT,8.502073,0.085021,95C6DE24935601E1DF31BE2FECA3731FE7C6A958DF91305F9A8081FB5559F522,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.99,0.88 -2018-02-23T21:06:02.812Z,Confirmed,XRP,IN,59.046032,0.59046,4D0B6B417325916A8A71E2FD1C88861E3E4552461DC2F41BFBF646DEF1ED07F4,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.07,6.14 -2018-02-23T15:46:07.147Z,Confirmed,XRP,OUT,950.445057,9.504451,18D22E24D10CC8698589BC3984D2D7AC16F2A52600336B8BD249F7DCBA61B3B7,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,113.81,98.98 -2018-02-23T11:43:34.095Z,Confirmed,XRP,IN,616.452379,6.164524,C03E79FA7C4846397A7CAC97C1AC5D246F6A725E26478C448ADD30EBC52399ED,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,73.81,64.20 -2018-02-23T09:35:25.832Z,Confirmed,XRP,OUT,20.960213,0.209602,9AFEA53F1D41906B68569D8995C597089C79A246538CDBB0FEA460C4E88FE07E,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.50,2.18 -2018-02-23T09:04:51.028Z,Confirmed,XRP,IN,55.593149,0.555931,B03AFC75CB97A97CACD396342E8E422754B596A624C26E580E2C5A5A9C67C6A1,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,6.65,5.78 -2018-02-23T02:39:30.016Z,Confirmed,XRP,IN,197.282806,1.972828,FE1AB4B01E830BF58276E68E5C933C39AC7D0AB260A37C9D06733494C84F2733,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,23.62,20.54 -2018-02-23T01:49:11.999Z,Confirmed,XRP,IN,141.759061,1.417591,1AC86CAB5DEDF86D59B1EAD093E7237880E08BCE47D2B28EB5175EE7934D93A6,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,16.97,14.76 -2018-02-23T00:47:16.094Z,Confirmed,XRP,OUT,44.384293,0.443843,C7F5AC4BE9265D9F0515B6E0C4F58B9AC89C58E456392CF1DD9D2D1110E2D29D,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.31,4.62 -2018-02-22T14:51:15.245Z,Confirmed,XRP,IN,97.721791,0.977218,01682B3B90C3E19FCA47A1208CBEF9E8F54E259D8F6ACAF2287CEF8E3393132B,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.95,10.17 -2018-02-22T12:42:16.203Z,Confirmed,XRP,IN,65.726233,0.657262,50ECBA1102200D7819B2CFE35157F14B5BED6FA3BA8B83D0CD875056D09EA36B,b3rctwZRGMjRHi0hVdjWJo2MbGvi4i,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.04,6.84" +2018-03-14T17:20:32.454Z,Confirmed,BTC,OUT,0.0067904,0.0000679,0F7CD80033E4AC2C1DB064D7B71F602F589B33D0B452426ACD90A9E1C8C41DEA,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,17.78,17.78 +2018-03-14T15:13:42.205Z,Confirmed,BTC,IN,0.00119081,0.00001191,ADCEEE94EC916B4281A2ED66111B338640E7E1A874E72B3EDCFF3D1203050160,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.11,3.11 +2018-03-14T15:04:22.979Z,Confirmed,BTC,OUT,0.01991267,0.00019913,BC322244321340447CBBFB0C1FFE9B9F6065D8120D4888CF1920314D185FE0C4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,52.16,52.16 +2018-03-14T14:51:48.237Z,Confirmed,BTC,IN,0.01893127,0.00018931,AAAD825C26D83ADB2F1ADABC87622B80BABE73232298D3AA91662288864E1A5C,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,49.58,49.58 +2018-03-14T14:48:32.740Z,Confirmed,BTC,IN,0.03015644,0.00030156,B3731DE7824E75513FFC29C0D59652CA9B816D7389234560555E11B7927ED1D3,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,78.99,78.99 +2018-03-14T14:15:26.942Z,Confirmed,BTC,OUT,0.00692454,0.00006925,8545D8D4B0BF7E8A09FA954DB85FBC33B892E9EB80C789923CAAD6A3AA1D2C20,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,18.13,18.13 +2018-03-13T23:59:44.590Z,Confirmed,BTC,IN,0.00207503,0.00002075,62BE1A831393011ABD4F3766D1BC82AC03559FDD2E09192356E2BF5182B59712,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.46,5.43 +2018-03-13T22:13:18.439Z,Confirmed,BTC,OUT,0.03874813,0.00038748,3E499F59B7D2684A0CBE0F0A95D0F184CCF1CDE79271ADD68C81BC3CF89DCA4F,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,101.99,101.49 +2018-03-13T21:51:36.522Z,Confirmed,BTC,IN,0.01257203,0.00012572,12B858070D39A22CE04FABD682325795A2FD57996DF71127EC45163E4BF34EA0,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,33.09,32.93 +2018-03-13T20:29:44.153Z,Confirmed,BTC,IN,0.00638251,0.00006383,7819F674571257970FD98C2CB19F0D2B74E9CF3F6D28A7B922955DB22C9C281C,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,16.79,16.71 +2018-03-13T17:20:32.411Z,Confirmed,BTC,IN,0.016113,0.00016113,45C3EC0F5B16B3EF289546C8116B7B04D4963ADD096D7AE7267533F9B3F87348,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,42.41,42.20 +2018-03-13T08:19:48.002Z,Confirmed,BTC,OUT,0.00159733,0.00001597,9756A3B2C280518E37D57014B77F5918FCD3107A1C70D5473C09F8DF2258C06E,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,4.20,4.18 +2018-03-13T04:58:59.353Z,Confirmed,BTC,IN,0.00936914,0.00009369,21913C798C9788E6E348F2CD29CD33DD01B1A94FF48391DE4E8295C315F87503,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,24.66,24.54 +2018-03-13T04:35:04.120Z,Confirmed,BTC,OUT,0.03019066,0.00030191,67F7ED408A889B2B2F08B339498B27D29EEC3F934385AB02440A49D6C32C4217,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,79.46,79.08 +2018-03-12T23:40:48.762Z,Confirmed,BTC,OUT,0.01907362,0.00019074,25FE97A3C320A7DF69B4407CC55972E9AD1B240D6F5D011A74842F6C4E8112EE,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,50.70,49.96 +2018-03-12T21:11:02.398Z,Confirmed,BTC,OUT,0.00223244,0.00002232,9C6478E4F1346BD4E6948E5B230B5819305C32733004F235F2D777C4B3EFBE9C,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.93,5.84 +2018-03-12T19:12:25.287Z,Confirmed,BTC,IN,0.02175775,0.00021758,F18C86E8F488AD69B5DA9295B4AF3371840BC631FC5BB266AB67094DFD62BE49,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,57.83,56.99 +2018-03-12T19:12:24.523Z,Confirmed,BTC,IN,0.02827303,0.00028273,8DC5C19C1362EE0CAABAB5061B3A9555FCD99717BDCA208AC8C70A4E90927D52,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,75.15,74.05 +2018-03-12T18:44:05.076Z,Confirmed,BTC,IN,0.00273614,0.00002736,1D5880B86D37903EBD9B7F0FDB8EBE739B78DF06DB4B460168FB256C35EDF921,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,7.27,7.16 +2018-03-12T18:27:01.604Z,Confirmed,BTC,IN,0.00001095,0.00000011,C738AA81250D4C07B0291870F7C2D39A534C256C2A3931B03B8E1E87D908CEC1,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.02,0.02 +2018-03-12T10:25:09.415Z,Confirmed,BTC,OUT,0.00063236,0.00000632,5508CC58F656F4BDB87AD18A50D10212DA863B5E9D3D02E3F6243E01128BF72D,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.68,1.65 +2018-03-12T06:26:14.252Z,Confirmed,BTC,IN,0.00642631,0.00006426,C04162CDD08972CF370284FD8D259ED4D87F1755DD1E9AB2D0BC79FF06D2D092,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,17.08,16.83 +2018-03-12T05:49:12.796Z,Confirmed,BTC,IN,0.00224202,0.00002242,606E4A240B36BD6FF901F1D1C7DC8B6341A810731CE375950AF4B76EF8543B4B,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.96,5.87 +2018-03-12T03:46:58.861Z,Confirmed,BTC,IN,0.05540316,0.00055403,D15C24D94DF37E334E5B2DD2CA99BA688E5BE450C8E2E7F69DD7215732B71D6C,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,147.28,145.12 +2018-03-11T23:31:02.310Z,Confirmed,BTC,IN,0.00450868,0.00004509,0ECF11D144DE389691038A45425BC3B239E681B09DA78272B25C3CF883847AC3,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,12.17,11.81 +2018-03-11T14:54:03.373Z,Confirmed,BTC,IN,0.00206134,0.00002061,2C05712BB11BD1B80739905A7A42B4A057797CBCBDB5493508F40F531D58BDBE,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,5.56,5.39 +2018-03-11T08:23:40.197Z,Confirmed,BTC,IN,0.01964713,0.00019647,AF03402CC1BFA1FFC8AA35CD6844B671216E7DAAB136220634837C36CCEEFD3F,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,53.06,51.46 +2018-03-10T23:33:16.455Z,Confirmed,BTC,OUT,0.03063414,0.00030634,5915964D39A264CDDAFEEE6BD3F102851DFC51C31734DE78B2432FABFB562B70,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,84.56,80.24 +2018-03-10T22:58:10.312Z,Confirmed,BTC,IN,0.00010676,0.00000107,6D1C35D779EC1CCC6FCE581E4B18BEE0C0561CCB32F193DFAF9B17C5B34587E1,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.29,0.27 +2018-03-10T20:29:35.168Z,Confirmed,BTC,IN,0.02859743,0.00028597,A4D6DE57872AE62912E4B271001D06253F73125E63EFA5554F89C2F8B354C9E5,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,78.94,74.90 +2018-03-10T18:07:20.271Z,Confirmed,BTC,IN,0.00066932,0.00000669,AD573CF961DC79CE335EFD5B5A250C9C3D8E0F5EA6FB69A41B76E3DF5E02F785,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.84,1.75 +2018-03-10T18:06:59.053Z,Confirmed,BTC,OUT,0.02007008,0.0002007,C159EAA29EC7C01EBF49DDE0CA2D011B627F7CA47B4D90574280083659CAB397,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,55.40,52.57 +2018-03-10T16:37:00.580Z,Confirmed,BTC,OUT,0.00429789,0.00004298,4E48224C79A80F2BFA4AEB00E58A9046BEE7BA482FCBD03B5C9F47C73C15CB41,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,11.86,11.25 +2018-03-10T16:11:30.256Z,Confirmed,BTC,IN,0.02289793,0.00022898,210F623E7284C8EC11289878E426A1B3125B1AAFC954AC70FF063695CF05A43F,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,63.20,59.97 +2018-03-10T13:36:44.132Z,Confirmed,BTC,IN,0.00443887,0.00004439,73D8067712F1D429CCB0CADB16FBAD5A2130D9DA0902C11949FDE83A0092FD7F,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,12.25,11.62 +2018-03-10T13:13:15.168Z,Confirmed,BTC,OUT,0.06711561,0.00067116,9F9D31F0EF135033273B9E2628A3F381D04D63D0BCF728C57DC2E4604872783C,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,185.26,175.80 +2018-03-10T02:57:55.377Z,Confirmed,BTC,IN,0.01033685,0.00010337,62A0F0F58CD423A788E56C20F7D3F2D4FAD39AB1891890B5224C57AD70D474E4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,28.53,27.07 +2018-03-09T11:37:02.435Z,Confirmed,BTC,IN,0.02148674,0.00021487,5FCB5907AA7636DA1ADBFE1D283EDE0ED66408A32C05EF771FD0146682DEECC9,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,60.90,56.28 +2018-03-09T11:28:38.819Z,Confirmed,BTC,IN,0.00023816,0.00000238,1828C5E23F8CAA709973A12A8FBC73315AF7F4A00181CD37146EBEB755A741C4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.67,0.62 +2018-03-09T10:31:12.290Z,Confirmed,BTC,OUT,0.00601842,0.00006018,12131152A57728F6BCBE2BE3A7A887DD94A168DA6CCBC66329960B642E245DB3,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,17.05,15.76 +2018-03-09T06:14:05.277Z,Confirmed,BTC,IN,0.03231771,0.00032318,875750ED49B4BD6C3F60C044D2BDE610F5EBFD1DF215BD0331E7D1ADA869B67A,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,91.60,84.65 +2018-03-09T04:08:35.990Z,Confirmed,BTC,OUT,0.01074474,0.00010745,672683ED02D3192EEEC9DA1AB9ACE7447066A829076F8B6736CD8F2FE3EEB329,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,30.45,28.14 +2018-03-08T19:57:00.604Z,Confirmed,BTC,IN,0.01934874,0.00019349,27010FBCA5EC740FB59BC97653D374D2743A24E396AEE3FE2B6F3AC4B1D69216,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,56.48,50.68 +2018-03-08T19:22:59.600Z,Confirmed,BTC,OUT,0.01481542,0.00014815,4A9B605C5D8C4ACFC68B828BC70CE026B3468CA76D83CC68819024AF83D4F649,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,43.25,38.80 +2018-03-08T01:17:14.244Z,Confirmed,BTC,IN,0.000026,0.00000026,9BA7E4A9B760130A1469BEA05B81CF2AEF88E17B784BEB86DB0A303AAA38B915,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.07,0.06 +2018-03-08T00:06:26.654Z,Confirmed,BTC,IN,0.00439097,0.00004391,FEBBD58479E6B30F248E4C190C4202AB1646F6AD65F83B8FFA4CFF1543FA8881,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,12.81,11.50 +2018-03-08T00:00:05.496Z,Confirmed,BTC,IN,0.02050808,0.00020508,E93FD902FF1B6590C8B04C256931AD7003D9B7C85D63AACEB2424057C837FC3F,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,59.87,53.71 +2018-03-07T22:55:27.399Z,Confirmed,BTC,IN,0.0031454,0.00003145,A38AB5A3A8659C115AB07CE667AC973EA87FE756FB4B00381DD4DC245EC22E47,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,9.46,8.23 +2018-03-07T22:33:54.060Z,Confirmed,BTC,OUT,0.02431733,0.00024317,1988322A17F96E3984FE92EF56F54301ECD60D50608F6877F727C5B7552E77D8,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,73.18,63.69 +2018-03-07T18:01:26.619Z,Confirmed,BTC,IN,0.00899273,0.00008993,75F8F696B603BE47D89695771AFE03C5C4C59329F0BDC16F10B287FD967B9FF8,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,27.06,23.55 +2018-03-07T14:41:29.128Z,Confirmed,BTC,OUT,0.00113743,0.00001137,8D5C9D73B6916E103719893AF22AB1D99355888B46431D95A4C9BAA817B45046,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.42,2.97 +2018-03-07T10:24:08.286Z,Confirmed,BTC,IN,0.00019983,0.000002,8DD0CD453F8CDDA25472B6B271845DC8F129F5701CA528A49DAEDC6918658184,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.60,0.52 +2018-03-07T09:55:52.151Z,Confirmed,BTC,IN,0.01890937,0.00018909,BAC25693F2D0DBAB8071B52C46948231E3D5F6F364D4023D00A76417541265C5,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,56.91,49.53 +2018-03-07T06:02:09.388Z,Confirmed,BTC,IN,0.05075897,0.00050759,185E55A60AC7158C6BBEFAA3593F330148316E078E944C775B9F6A05A8D38D77,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,152.77,132.96 +2018-03-07T05:40:27.122Z,Confirmed,BTC,OUT,0.02381363,0.00023814,CDDE81257BEC0B7F18666A2EB1A7C9D9ED67FA19A9F8C742A72E147C06F7AF1F,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,71.67,62.37 +2018-03-07T02:05:59.768Z,Confirmed,BTC,IN,0.04570141,0.00045701,DAC9781C36B22F8B8C19B60636126991243126EA9AB545444EB7ABCEA1169E46,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,137.55,119.71 +2018-03-06T17:36:28.439Z,Confirmed,BTC,IN,0.03627752,0.00036278,63D9665735BA39954AA6ED304BEF2FE47D4E2209C24520B7766B6C06F580BE20,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,112.43,95.02 +2018-03-06T15:25:16.489Z,Confirmed,BTC,OUT,0.01475246,0.00014752,FA5CE36EE5DDA0D3D27BAC3410A959EE1A60AC01FE46F38E6A62DD09800843F4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,45.72,38.64 +2018-03-06T12:40:03.949Z,Confirmed,BTC,OUT,0.00203534,0.00002035,080ED338FD9776CA4813E0B3B641BB0A85A4641BA0E375A4203A4BA0DF778DA4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.30,5.33 +2018-03-06T05:56:02.110Z,Confirmed,BTC,OUT,0.00113196,0.00001132,A911A1F601A4D60505BE00DF9E7DE1B2EDD860F33D8A10FD7EB1983D5F75E9E4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.50,2.96 +2018-03-05T19:32:27.083Z,Confirmed,BTC,IN,0.0080565,0.00008057,C47DF9884D35B5E2580F5743F1FC9EE4FB75C718B2125921FFE497FFCE70F1D5,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,25.62,21.10 +2018-03-05T17:08:46.304Z,Confirmed,BTC,IN,0.0481597,0.0004816,CD3E9EEE91C7DBF21DC422B13045FDE16C668B68084AF8F95F8CB76A96F09E48,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,153.18,126.15 +2018-03-05T12:42:24.451Z,Confirmed,BTC,IN,0.02818954,0.0002819,5FD0BC6A176D3D006FF58BCD8B8DBC09A70C9BC4DAA18EC0E609B571BA9C8002,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,89.66,73.84 +2018-03-05T10:32:28.390Z,Confirmed,BTC,IN,0.01170287,0.00011703,52B0216D2B7A33D50EB6C9890A9847BE1AFF0F67E94BDC7C966F7DAEB7D19CCC,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,37.22,30.65 +2018-03-05T09:07:01.377Z,Confirmed,BTC,OUT,0.05914261,0.00059143,E4B0384A6E4A092851904FC3E2E62FC5C061741EA89A02F90BB47AB502559E6E,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,188.12,154.92 +2018-03-05T08:42:47.316Z,Confirmed,BTC,OUT,0.00602663,0.00006027,C965E30E967B4F09D7511F8B1878EE6017E20A72F63C88C95237AE8B12C3A1C3,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,19.16,15.78 +2018-03-05T07:08:34.691Z,Confirmed,BTC,IN,0.01698627,0.00016986,F484FCB98A7199817B8AB4504CEF62B6D36ED0E7FCB9A618B477600F9A10070D,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,54.02,44.49 +2018-03-05T06:55:23.271Z,Confirmed,BTC,IN,0.01172203,0.00011722,6A444168893201766EA966CE92D4FC1AD8295539CFB1633EEF523E43D7FA09E4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,37.28,30.70 +2018-03-05T04:35:31.177Z,Confirmed,BTC,OUT,0.00114975,0.0000115,8B3E1B1AC9929387DE4899270903334F7B4BCB30F2B02EE23AF1D51207C166A3,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.65,3.01 +2018-03-04T22:01:01.275Z,Confirmed,BTC,IN,0.0427011,0.00042701,47B272D5541ED94CC72A9E91F9C92888CCCBCDE83696F155F492C7EF089E1611,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,138.70,111.85 +2018-03-04T05:11:56.819Z,Confirmed,BTC,OUT,0.00196964,0.0000197,6A52DC545CC104EC4A430F03F182B52AC6894E76DC85F7F5DCC6E58CFF381137,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.39,5.15 +2018-03-03T20:48:03.946Z,Confirmed,BTC,IN,0.01104312,0.00011043,4219B61CC1C5AC90BB5DC915777AFAA750D1482E88962204885E0B29E1C8404D,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,36.40,28.92 +2018-03-03T20:47:53.948Z,Confirmed,BTC,IN,0.01040802,0.00010408,6BCA154E70470E68F0A9140617C71529B263A3A544DA89CA9122B96EEB2C7485,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,34.31,27.26 +2018-03-03T19:53:54.395Z,Confirmed,BTC,IN,0.00108816,0.00001088,F2C16F8CFC5E7236CA68A0D12DE86E157C45C65D58475092CBE94C9C7D10E8EC,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,3.58,2.85 +2018-03-03T15:04:15.025Z,Confirmed,BTC,IN,0.00976334,0.00009763,71CBB56D9D8DF9D9FC27D32CC1DE80F667CAFF975A792BF61AE4E70298B86384,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,32.18,25.57 +2018-03-03T13:35:48.183Z,Confirmed,BTC,IN,0.03302673,0.00033027,54648A4032EC2F42892B404DD429FDA104339514E94732A9560415D77AE34E17,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,108.87,86.51 +2018-03-03T13:29:33.409Z,Confirmed,BTC,OUT,0.00006022,0.0000006,3D753ADD599DFF2673782DDEB98B20D09B955D78C22CF169072BC289C0F6A0E2,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.19,0.15 +2018-03-03T08:49:37.754Z,Confirmed,BTC,IN,0.00013413,0.00000134,68C0A42092B17F32B5104A7BEE6FFE0BDCF0187D02DC07C4A7820B305B4A11A4,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.44,0.35 +2018-03-03T06:45:27.171Z,Confirmed,BTC,IN,0.00813452,0.00008135,6B03794D670BCF85C9664DFC30E9C0571FDD3650628CB37429391F462D0BD7C7,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,26.81,21.30 +2018-03-02T22:35:31.318Z,Confirmed,BTC,OUT,0.00040788,0.00000408,A4814177790609580DA53348EF94EDA7EDE19CC7032683E0E1932B5C46C296D5,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.35,1.06 +2018-03-02T19:01:56.308Z,Confirmed,BTC,IN,0.00148646,0.00001486,3D09C10FD1E2199DBFFE01922884809868CF4A45FBE9581777AAAC27C872BED7,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,4.93,3.89 +2018-03-02T13:48:44.467Z,Confirmed,BTC,OUT,0.00033534,0.00000335,A3CB7D794D3E37F1A196DA0014A17D35BC47D1BB5B95A81880C560DA7F78ED2E,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,1.11,0.87 +2018-03-02T13:19:53.715Z,Confirmed,BTC,OUT,0.0162444,0.00016244,2966A7A1B21EEA4968FFB76856CA642DA201FF214ABEB2766899A4043FEFA423,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,53.96,42.55 +2018-03-02T13:16:33.584Z,Confirmed,BTC,IN,0.00778275,0.00007783,428E2260BA8556424E8D3A3AFC5CC0ABB9484E228BFA223E010AE8BB721478EE,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,25.85,20.38 +2018-03-02T06:04:08.178Z,Confirmed,BTC,OUT,0.0107242,0.00010724,ECE681EC9273BAAA92ED5DC65AE40E2CEA3C66ACFC498C19B34BC2430A04BCDD,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,35.62,28.09 +2018-03-02T02:43:39.955Z,Confirmed,BTC,IN,0.04091761,0.00040918,43CF39D2193465E96729B12B78377A4021A10B5296B657B23E0160525B25A6E0,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,135.94,107.18 +2018-03-02T00:02:52.517Z,Confirmed,BTC,OUT,0.0019231,0.00001923,80E03FF9588314769FD43B218E8874F7CF8CE9736469B99BE20927032DB81BE7,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.38,5.03 +2018-03-01T23:35:25.635Z,Confirmed,BTC,IN,0.01713957,0.0001714,EAE990BA6413A39E234458A8F9275C614288FC267BE6394009E14E56E54C51D3,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,56.98,44.89 +2018-03-01T16:07:32.725Z,Confirmed,BTC,IN,0.04838007,0.0004838,97425FA97C426B3D045BDD11AE7196DE0EF3025737DB88DCEDFF9B861DEA7910,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,160.85,126.72 +2018-03-01T11:26:07.181Z,Confirmed,BTC,IN,0.02383416,0.00023834,F099B74BB7D434894609C089B37CFAA5DC299E4FEDA4BA3E71A6A9A57814E56B,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,79.24,62.43 +2018-03-01T10:46:50.390Z,Confirmed,BTC,IN,0.00191352,0.00001914,079C72FA9945C1F7A451DEFF0B2892680AEC7CF006DB08338F42E36AE1389C15,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,6.36,5.01 +2018-03-01T08:58:49.268Z,Confirmed,BTC,OUT,0.0083193,0.00008319,D72B145C80C3046AE941D0F5256609C4B789B73D44DEEA6548C830B17067EA88,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,27.65,21.79 +2018-03-01T08:52:20.022Z,Confirmed,BTC,OUT,0.06395379,0.00063954,660C8C7032C82F40CE5C99729B3E265C1200BBD589992D802D1DCB1DC26A833C,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,212.63,167.52 +2018-03-01T08:19:06.480Z,Confirmed,BTC,IN,0.00830835,0.00008308,9C68D9C640C0361AEBF2361D52DD7068B6654BC17798B27B827BC696507B33AF,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,27.62,21.76 +2018-02-28T19:59:05.569Z,Confirmed,BTC,IN,0.0068999,0.000069,199535089CC9140B56293C4A3ABCEDBB10AE38B57DEDDF9AB9009DC52D24FCB5,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,22.80,18.07 +2018-02-28T16:47:58.395Z,Confirmed,BTC,IN,0.04530995,0.0004531,FD56B6AF328CDBC795AE40F9DD975B2BE9EDA4A2658DEC9F7402298FC73BDD4E,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,149.77,118.68 +2018-02-28T13:42:23.319Z,Confirmed,BTC,IN,0.03149919,0.00031499,ABC7FBF1C86782C313A430A542103DC65126305DC6E3F7B323E4850DA21611C0,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,104.12,82.51 +2018-02-28T10:35:06.560Z,Confirmed,BTC,IN,0.03673469,0.00036735,73923DFC6D23D3F3C056E94F48EBEB58929FEBA5F67A8B1E24838323568FDCDE,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,121.43,96.22 +2018-02-28T09:04:17.253Z,Confirmed,BTC,OUT,0.00878604,0.00008786,A432AAA6009CE38E780668BB94B92779F2DC43486E438A74304DE20001C03F64,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,29.04,23.01 +2018-02-28T07:41:38.850Z,Confirmed,BTC,OUT,0.00787582,0.00007876,D6BCB23D81D1256EC94B5D9B2F644CA5709C12C4A4898D5212FC88878DD8C737,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,26.03,20.63 +2018-02-28T06:12:49.371Z,Confirmed,BTC,IN,0.0424383,0.00042438,6F1A705AAC0634574AAA07E20E0E0BFA2DA0D19DB1842123787B20DE00C0D090,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,140.28,111.16 +2018-02-28T04:23:32.450Z,Confirmed,BTC,IN,0.00624016,0.0000624,6BD47434FA683B693CA56C5CA30A8FD0A309DA1EB22D4563757B748A0F56D927,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,20.62,16.34 +2018-02-28T01:51:03.147Z,Confirmed,BTC,IN,0.00001368,0.00000014,2858D6DC925EB651B6261DAAD24C452CF2C10BF344E91C926225804035CA6B75,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,0.04,0.03 +2018-02-27T23:09:06.600Z,Confirmed,BTC,IN,0.00273614,0.00002736,58FA5FAA047FAAFA241315B1D8770B0701FDB6E47917EFF0E30B598FC961FDA1,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,8.94,7.16 +2018-02-27T20:38:30.872Z,Confirmed,BTC,IN,0.01078306,0.00010783,043DDF576C317C4D78F7FFA58C67C1A934D3F5F1734BBB639BD951D3188CDDEC,Bitcoin 2,FB2A79E954C81D36ACA315BB7294D412EBD0AFC3E3B2102B6B98E5738F470EB4,USD,35.25,28.24 +2018-03-14T17:04:34.063Z,Confirmed,ETH,IN,0.000017533708554696,0.000000175337085547,A99D859EE4028FA0CF704C0456A4604CAC525F1E78D6A11148F40EE88637EDD9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,0.00,0.00 +2018-03-14T14:28:48.496Z,Confirmed,ETH,OUT,0.0857398348324654,0.000857398348324654,1BE771EBF07F2D2F37906B3C71110C07ED3075A55412AE3093F766D71F386A3B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,5.18,5.18 +2018-03-14T12:19:18.235Z,Confirmed,ETH,IN,0.524573492539407,0.00524573492539407,F044661B0283FE05F44BDE0F519BCBBFDC1753D7AAAE7739350BB1B6F6259304,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,31.70,31.70 +2018-03-14T07:28:16.721Z,Confirmed,ETH,IN,1.0460435186646327,0.010460435186646328,9EE066BFB8B6494175460061EBAECACAD0AC4F1468FD744BA4823C863BA4693C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,63.22,63.22 +2018-03-14T02:23:40.347Z,Confirmed,ETH,IN,0.14777409569898128,0.001477740956989813,D8D77D81F48A50FCDE1C8E61B1DEBD6BACE44E2DF746BAF2A2C8A836971CAE8B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,8.93,8.93 +2018-03-14T01:50:00.618Z,Confirmed,ETH,IN,0.15761050619816598,0.00157610506198166,0D1B5850ADB7C4AE9CF940BA3B8AF17C0D752ED49412DC8860D3091ABAC933E4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,9.52,9.52 +2018-03-14T00:55:43.898Z,Confirmed,ETH,IN,0.029912506794312064,0.000299125067943121,039F1848C8D85A87C15BCE74306ED0A3E99F6677997301ECD64FEED34A683EB0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,1.80,1.80 +2018-03-13T20:10:51.709Z,Confirmed,ETH,IN,0.11581014500376974,0.001158101450037698,C43BA4F8D4DD5F3977035AB5AF0F96B646A40E9A7F8B75856F19C89C2C5616B2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,,6.99 +2018-03-14T14:04:55.771Z,Confirmed,ZRX,IN,0.000000000000180265,,253B61D38A2F5B60D535DFE80E2EE06AEB257DB329F411C9D99911E8FF7791AB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T11:35:38.566Z,Confirmed,ZRX,OUT,0.000000000005104641,,0C6C36EAC29797409B05BAD1AA639B4CEC9A8D57452B9204BA80AF927EF670EC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T09:41:46.901Z,Confirmed,ZRX,IN,0.000000000000623331,,DE02AC86B200063EE0D5BDE7AC1979E5487C6872C09BA7402D4E407F03528392,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T08:46:38.002Z,Confirmed,ZRX,IN,0.000000000001138394,,E87B1B603248EC1AA528C6F0444F42756826C0A0F88565FFFA11743355B09259,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T08:36:31.245Z,Confirmed,ZRX,IN,0.000000000000291545,,46196DA0800623E4AF0B4888FB14DA7211D468A269337396FE4561F44C8C6F04,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T04:32:53.697Z,Confirmed,ZRX,IN,0.000000000006416594,,94A4C1AF09604D1374F9E42987C690AE87DB7527DA125D20FDAE68FF192E7280,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T01:45:41.339Z,Confirmed,ZRX,IN,0.00000000000109172,,6B9A5500695B1209071FFBFF0EDD13A00B5081B3CC79437E24A0C0126A0E3BBB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T01:10:09.662Z,Confirmed,ZRX,IN,0.000000000006463406,,CE0E604406B7E295CD18F5602B040C5002C8158C3EAA825A786077C7305484CD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T22:20:42.463Z,Confirmed,ZRX,IN,0.000000000000045305,,FE359DFB8B8C68B55094A68184E34B4022C32D53A42986D7B2A984A73B02EB3A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T11:01:01.848Z,Confirmed,ZRX,IN,0.000000000011284578,,BFC936B9692194C4C8036B9D60C15599F10ACD540CC95C60172A4F724A063F58,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T09:42:11.943Z,Confirmed,ZRX,OUT,0.000000000006793824,,FF620D2B20E2160CF72EC10F1EC011219EEA5399BF7C9293862DFE632256E080,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T07:07:05.873Z,Confirmed,ZRX,IN,0.000000000000855199,,A24B713CEC3CEE61C0C6B9F337CCA10C8CF4B5E4978CA1745AF49DB340C8FBB2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T21:10:21.731Z,Confirmed,ZRX,IN,0.000000000001743248,,0A93BA068D20774FC7E63C03FC81A09539BC54B463EA8B38E2691593FBF6DF5B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T13:13:16.665Z,Confirmed,ZRX,IN,0.000000000010231183,,1E5F58AAD7A6BD35E0ED08C2FF105B74711EBB8DBD83D6EFB1DBDFD0F3A37AE9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T12:19:59.015Z,Confirmed,ZRX,IN,0.000000000000251166,,298EF0A6CF72AE1785082BF6B86522A4E0D3EE83B1C871D6B61968CD677790F8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T12:16:19.121Z,Confirmed,ZRX,IN,0.000000000000001231,,E911AC3427EC507A25160025F17D2D38C2729BF711A66008A768E10EB2613865,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T11:38:37.586Z,Confirmed,ZRX,IN,0.000000000001308394,,6123C27F16317D1D6F79695C88D08BEFCA66222CD1B0F5EB6C9C3E1E67340C38,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T11:28:20.027Z,Confirmed,ZRX,IN,0.000000000001203274,,6CAE69E58B35D54A6B3BCBA5856AA5AC77969A959418017ABB40121613C3B7F6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T11:25:48.934Z,Confirmed,ZRX,IN,0.000000000000003011,,E1F32B6EEF2149DCF9175E9BCAA7225EFD8872346017E89ADF6754B921E1480E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T09:56:57.483Z,Confirmed,ZRX,OUT,0.00000000000001752,,87FFF80741D7E32E0BB0C7D1B1E1FA8183C5CCBE8C8BD544D0956146260D6B6C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T09:50:11.207Z,Confirmed,ZRX,OUT,0.000000000000315909,,165C60B785666E624625A5B488AF1C31BCFA7DA027A58FFC5CC1630FA606B50F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T08:32:24.510Z,Confirmed,ZRX,OUT,0.000000000003514282,,568BC9A875D8F0A4589AFCEAE5C01C8A9DA671C473597756F886EE3ED306984B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T07:26:25.412Z,Confirmed,ZRX,IN,0.000000000000101288,,B032B15E2AE9196C507A241AE4A627DF65DBA41DD5715C3B7403754CD608D9C5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T23:25:54.922Z,Confirmed,ZRX,IN,0.000000000000943073,,9280D8CA4BCF1F1E09F4AAC91C86F8AC9808C302E13EA495A491666580834882,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T23:21:08.975Z,Confirmed,ZRX,IN,0.000000000000647285,,DC87440D008A7C32D3CC5241674ADE8D6B2EE0CB73D3F6144E09C3F0C0E70D96,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T08:22:21.528Z,Confirmed,ZRX,OUT,0.000000000000841511,,89CA5CBC6F15D451DCB5E60F38DD7D1221DDC21D4A9BDB242960A9D1F1D6BD53,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T06:15:04.946Z,Confirmed,ZRX,IN,0.000000000002468142,,98EAC3F016C056181BA05F2C76942FEBD1D36DCC1C79E8D614FA7EE647711C5E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T03:30:32.790Z,Confirmed,ZRX,IN,0.000000000000434306,,BCB1955A1E87FDDB89F7818DE535DBAD77A9DAC83FF7130827EE99A791CAFD91,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T02:04:02.220Z,Confirmed,ZRX,IN,0.000000000001878208,,8726980FE44A3294DC76B5138CA318DBC1C75700D71DD5CE7181E9402B43F983,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T01:17:31.368Z,Confirmed,ZRX,OUT,0.000000000000756785,,2A6C2287B4F26E1E19CA28CA3CFDB8B96C80DD1C7DC329F6096F05DF833AAFBF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T15:14:59.944Z,Confirmed,ZRX,OUT,0.000000000002696313,,F031D4FD8C268F7093E28503BB44D0C900791B1865550B802E588A71690A4B72,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T12:40:55.514Z,Confirmed,ZRX,OUT,0.000000000000517663,,8D16E03FE141C1ED854EE74143DEFF5577B4A766EE3E0EBA2A3D76F42E4795CE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T10:13:18.910Z,Confirmed,ZRX,IN,0.000000000000523549,,E1E7587EC10128B4AEE3F1CD0DEE9690090101FC08DADECD6939EC739F7A6D76,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T10:02:49.296Z,Confirmed,ZRX,IN,0.000000000000097044,,ADC42CC8CA35073334D644DFD1AA128F74EC7FCE2C850324EFD813E8E5B1BFA7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T09:33:37.760Z,Confirmed,ZRX,IN,0.000000000000084178,,2986375EE32810876A18717F49402FBF3D2B9E92F15679ECA55E9EF56153EF23,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T01:38:47.138Z,Confirmed,ZRX,OUT,0.000000000001070094,,ECE39E2E96B0A842325847741467CED3B5C7AA4FC7210AF303CBB5FC0CB4BA2A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T00:38:02.785Z,Confirmed,ZRX,IN,0.000000000004241777,,922533A5A32C24242F692CA844D44694C5F99F55CCAA14FC9678E979901689C6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T00:26:24.118Z,Confirmed,ZRX,IN,0.000000000000984546,,1EE4DF1A5B002CBB8484EA29EFA8788C750D8C99C477769C4FC8A2DC99098885,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T23:23:59.315Z,Confirmed,ZRX,IN,0.000000000000664805,,92872206A10685B61E62DB46BC7CB9AE88270F837CC8C798BC945A9D5A1BA9F9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T12:06:57.032Z,Confirmed,ZRX,IN,0.000000000000071449,,34633881245EFB462A31F0998C770367DDE7C0D70CE02475ADED615D190680CB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T11:17:01.301Z,Confirmed,ZRX,IN,0.000000000000835762,,24E54C565B3636EACE90342AA914F44EF92F30AA35DCC028E63CD924B0D72119,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T04:49:52.581Z,Confirmed,ZRX,OUT,0.000000000005060841,,4B984D8C4F1566A6A25B48326BC6480855FA29BE52CFCEBF792634B9F0BE6251,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T03:11:30.575Z,Confirmed,ZRX,IN,0.000000000000222559,,697A2252EDAA266634A0FF4576D9325A8765205E2D9BD7F57E6DDA22612E69BC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T02:23:49.266Z,Confirmed,ZRX,IN,0.0000000000006685,,306059115B1A98C94361E648A9DCF6BEB280A03B8223524D520D5E4A98858A93,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T16:08:53.726Z,Confirmed,ZRX,OUT,0.000000000004553306,,87FB61CD1B1938DBF0827DAD5686003A0A11056995956ABD21D1126EDD36CA68,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T09:30:52.628Z,Confirmed,ZRX,IN,0.000000000001289916,,96432434D2C91FB4541DCD1A4619BB7CA21AE109C5B4350AF4E696B2FD84B41A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T08:56:54.897Z,Confirmed,ZRX,IN,0.000000000000416649,,FB8B68AB042B5B03B1F4FC71C59BBD8C7C73D2733D933CDCF50A64CD387ADD25,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T02:55:00.123Z,Confirmed,ZRX,OUT,0.000000000000057214,,29408C87E7B7649D46D02D4C6D62B6F4F55F069481A084EBDEA2358F08D00E1F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T02:24:22.383Z,Confirmed,ZRX,IN,0.000000000006142706,,A1E92B4CC4B7EEC2F39702B9D743E90F672359B5DD60769D319B5D076F7F000F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T00:52:54.968Z,Confirmed,ZRX,IN,0.000000000000098824,,535E6E2CE1294FF92358BB6EB1BDE79AC12D8EBF7BAF69A71B3A939492321D40,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T00:09:13.220Z,Confirmed,ZRX,IN,0.000000000000102519,,7E313723AA42EB7C1BC2FB4CC807484AE18F1A3FB78347ADF6D2508FCDE8FD98,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T23:05:14.102Z,Confirmed,ZRX,OUT,0.000000000000807018,,A55D8F7FAD4DB7882715D9B28FF9DDDE853346C45F6817D4082A0B998C3CCB18,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T22:50:23.446Z,Confirmed,ZRX,IN,0.000000000001579955,,DFD339C5D316DD894D3A69E2AC96B13AC11F516D2A154D215A06E380ECA6F9CE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T13:13:17.203Z,Confirmed,ZRX,OUT,0.000000000000269097,,A83AE16BBE3F50F2A0FBF83DB43166D7A6468C308413453B6BA08717A3AD26B9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T13:10:11.729Z,Confirmed,ZRX,IN,0.000000000001460052,,39B8FE7D8088B64D2FF99D5E2CB43EC5BFF51E799B3115B952D056A681C48BE6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T12:33:40.574Z,Confirmed,ZRX,IN,0.000000000001394352,,B3B077D5CEC788D4E3E0FA603469C789EACBF78414E7BAF5823474532F8F1677,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T03:13:11.735Z,Confirmed,ZRX,OUT,0.00000000000027334,,B70C3FC3925EA0B6972B6BC2565C10A1E128F1EBD13435897F0E24179941C2F4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T19:34:05.370Z,Confirmed,ZRX,IN,0.000000000000818927,,B1C0F34EDDA7F357226E1006F72EABB67596F328601C074400E14DAB933C2B4B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T18:29:18.856Z,Confirmed,ZRX,OUT,0.00000000000128143,,C93D0D4A8BBD28972C1DE34D23DD234941A296C6FEFFE1E896CB410E6069A08C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T18:21:51.556Z,Confirmed,ZRX,OUT,0.000000000000296472,,B9E77C57A131A0F89C9FFEB1CEDD0F752A678F8EA85EC2E7E67D75FFF3760054,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T18:14:46.727Z,Confirmed,ZRX,OUT,0.000000000002317852,,EDEB4164234F30176B4D85ED031339C4D04677705174F0B941E53C17EDD03190,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T09:00:27.442Z,Confirmed,ZRX,IN,0.00000000000042582,,5C1E5237C756E4F43C13D5519A1ADCD6A35708C9A63CFBC35855F744477317AD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T07:43:39.913Z,Confirmed,ZRX,IN,0.00000000000000479,,53A786D63C208B7EAFD064AC17C834E83F59FEA151D70F96DF678B4184C30204,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T02:43:19.006Z,Confirmed,ZRX,OUT,0.000000000002823334,,5081DB0A055564FDEA187E22505090392009AE49F99A90ACAA0682071AF712B8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T23:48:15.598Z,Confirmed,ZRX,IN,0.000000000000165619,,DF125EEDEF4ADEBA7C6C8F1822DA7C8E13C957AFA7405556811C5A88AB95DE22,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T23:47:38.731Z,Confirmed,ZRX,OUT,0.000000000004939432,,86A7429AE0D9436A3DD909AA622DB63FCDEBDD55EBD9F63D86BED1914A158448,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T19:25:27.547Z,Confirmed,ZRX,OUT,0.000000000000045853,,273EFADACED1026A8372EA92D6125F681590247EAACC97DEA425E33567BEB6AA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T19:24:31.435Z,Confirmed,ZRX,OUT,0.000000000002185767,,AFDBD59412A07F18E19EF1CA45D40DE3BF063BBFD596A016F9646B82DC9A6831,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T14:07:06.843Z,Confirmed,ZRX,IN,0.000000000002258585,,0CA5861C9D77D6DCC6459A2A050797F57383A9DCEF7F88DF261711CF9F105B50,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T11:38:02.601Z,Confirmed,ZRX,IN,0.000000000000024911,,2E3AF37DE9215883513AB68602482D2D00041712E24A4B1DC6057ABD2A1A4D86,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T10:56:09.057Z,Confirmed,ZRX,OUT,0.000000000000551745,,B059936994AE49CB563F0468D07A34D59B7FDA6081C28A7306D0C8B680434E53,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T10:10:08.592Z,Confirmed,ZRX,IN,0.000000000003518799,,7DBB848DDDD0985929B8194E48EF01A81CEB8538E1720BE29FEE589F93B14AB4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T09:04:11.594Z,Confirmed,ZRX,OUT,0.000000000000489193,,B765CDFBDCD3F23F59ECEB773872CF4ABBA6FF096CEFFC5105D1F9DA676987B4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T08:55:48.799Z,Confirmed,ZRX,IN,0.000000000001862056,,80A0DF41922982F73D2E55A20033ED8F30C9400FC3C11A4D6691350B87AEE0C8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T02:36:17.148Z,Confirmed,ZRX,IN,0.000000000000019299,,812CC486B615DAD70AA282C4C259D465A906A4CA1186FC0BA25EDB641B14914F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T22:53:41.978Z,Confirmed,ZRX,IN,0.00000000000007227,,9028C09F7C75CAF71A1F7055726919C66969A7A1CF74CF843765ACDBD9981123,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T22:51:27.705Z,Confirmed,ZRX,OUT,0.000000000002015631,,1C6021FF13D555B5DA0BBAF7C7EC36E2130A5D22349850F92210C8379203AA34,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T22:32:34.133Z,Confirmed,ZRX,IN,0.000000000001019313,,27BA83D54501E69EBA0BF5E48D30EB254A8F9EC7A6775B51EA7B144B702D0E42,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T19:58:36.127Z,Confirmed,ZRX,OUT,0.00000000000943087,,2CD39C1FF8DBC7B17EB7CE868488CC00D35E14A20735EF73D86EA63B458B1620,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T18:18:12.817Z,Confirmed,ZRX,IN,0.000000000000222012,,5492F4106BFA72B9811198523A6B226E9E471617DF9F14DCEF6785787CE5FADC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T15:01:02.255Z,Confirmed,ZRX,IN,0.000000000001142227,,1307328C475DEB04575A0ADD640E8CC56EAA24D3F66BCAB9325D14A32B84D92D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T14:05:39.065Z,Confirmed,ZRX,OUT,0.000000000000213799,,75E80B5FF5F01B2C597AD459FFB5403A106D0DBE33C669C1E319E9F03EC6C35A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T10:16:47.114Z,Confirmed,ZRX,IN,0.00000000000367429,,496A2F2A91E19245408610293EE79F106C44C1B5661563CDD584EA1853441224,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T00:12:33.761Z,Confirmed,ZRX,OUT,0.000000000001393531,,9F6F2E0E5DE28C83AC66DB43A5872115AFA449F9C899D2F5F06A28AF320C70A0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T23:06:22.599Z,Confirmed,ZRX,IN,0.000000000003252029,,439F5D36C2B9FAC22389577DB22688D606876485098B7AC84338D89FB855D47C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T22:42:40.840Z,Confirmed,ZRX,IN,0.000000000001436373,,B54FEF300E41F8B0ACE11F7E9D77AE3CCEB5688104BECCC9A96E85C607A272BE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T22:22:34.929Z,Confirmed,ZRX,OUT,0.000000000002500992,,39634F76315CB37B785E293405825DE34DD6277C1EC96107C0397D1205773B8C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T15:03:13.997Z,Confirmed,ZRX,IN,0.000000000000166577,,2532801D53180E3390E48859E05DA919AA77A8DC538D8137E6A3E5BC7F1172DC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:45:54.864Z,Confirmed,ZRX,IN,0.000000000000021215,,34C35BD626BEF8C83E4E5DC95F2258050BA8CE49E58C40AC578BBCD47A6306EC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:09:43.008Z,Confirmed,ZRX,IN,0.00000000000323752,,392882025031A0CA93C2D181ECA34E21F4192CD8104C057D8927808A051F4ADD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T12:52:55.080Z,Confirmed,ZRX,OUT,0.000000000000317277,,AA99BE8F2079685A001CB4B29240DD80AA8C191F593F157E24884686CDDB8FCD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T09:26:08.197Z,Confirmed,ZRX,IN,0.000000000003834161,,780C571DCBAABDBD05ED5F70BA1C02426AAF3E8AF505105E58E1582ED12E3615,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T09:20:04.846Z,Confirmed,ZRX,IN,0.000000000000077745,,85476436EC5F2234D7B77DF50C581B2FF4ADDA189AA31D2629595977FE873EDC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T02:09:57.260Z,Confirmed,ZRX,OUT,0.00000000000533555,,2174F911C09DD875967C4E90FAC120A20A56451376A39686EAA575355F111A0B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T21:16:41.461Z,Confirmed,ZRX,IN,0.00000000000250633,,E138885D4CECE3B137F884D96966AFEDA980E91A9EAEB88F094659B077A28998,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T19:40:24.313Z,Confirmed,ZRX,IN,0.0000000000000245,,1AF4F578341209DF7B2F4FB0D983A6397C9F2CB7EEF9E34D074CDACC9B6D8A1C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T19:02:12.838Z,Confirmed,ZRX,IN,0.0000000000027267,,81FFCC16C833C8C0359A5D1EE98933E25B0C80C7A288C7FFC3F2AFC57CC163DD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T18:00:53.041Z,Confirmed,ZRX,OUT,0.000000000002385195,,C8A32D94B6A0BCC3FF596822DA1B048F635801BE1B77391896B1509073DC1938,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T11:09:00.632Z,Confirmed,ZRX,IN,0.000000000000508493,,36D86D65916C913BE1787CC3D7C0BDE4093698D7F86DCF9347B6D80BD9DEB592,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T08:38:21.311Z,Confirmed,ZRX,IN,0.000000000000820159,,ED91F70911F2F78823DF16729D026242E12A4BA5833B7EDF60C41C17B0AFA033,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T08:10:54.513Z,Confirmed,ZRX,IN,0.000000000002185493,,D1EC0F681291A9B699F284EC90C8796B2A5310962182D3B2892BB4F9D14E66C0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T06:30:41.838Z,Confirmed,ZRX,IN,0.00000000000092131,,CF0AD043E03151644CBEC911E7D699E4C6C36CC3F071B1B320FBA3E9B3272432,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T03:14:57.545Z,Confirmed,ZRX,IN,0.000000000000628533,,2C8CC9DF280D1F18E209024A979BA098E3781C5914FB77E1A275B2C8FABFE89D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T01:11:51.552Z,Confirmed,ZRX,OUT,0.000000000004797081,,D38128B964D17A080D82CDC9C784D93FBB68F7DC91F98FD72BDB7EB37F313373,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T22:50:15.855Z,Confirmed,ZRX,IN,0.00000000000181894,,A03A173F85D7DCCC7D5CE6FCFE7C4349A6CDD429AEDD1B4829DB689ACE8CB1BE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T18:20:20.433Z,Confirmed,ZRX,OUT,0.000000000007827098,,132F0BE666DAD3B231B201AB5260C091EF5E44B228104E2467A4EBD01BCC77F6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T12:27:57.772Z,Confirmed,ZRX,IN,0.000000000000278268,,D280C3425508D0D3A3B269883194ECCEAD125A3ACE4B44BFF63B8498CAC987E5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T10:41:15.761Z,Confirmed,ZRX,OUT,0.000000000000160007,,CE745F0C56321A116938989F1387AB8E8F6C94E35709F34A67881D55550C5E98,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T10:02:01.771Z,Confirmed,ZRX,IN,0.000000000000235152,,3AA7B3C0095C09127F7533EACA11E092745011CC3893AAEDA0C988CC55ADDD03,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T09:35:48.484Z,Confirmed,ZRX,IN,0.000000000001018491,,C36721CDD505CCD78A55EE55E11752EA31334CC1F1EC216C593AB1C7DFA6E7E1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T09:32:30.931Z,Confirmed,ZRX,IN,0.000000000000023268,,019934E7827C287CEB3461D35DFC16FE91EBB3A901FABD29907B32901D0AD9A4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T09:29:48.141Z,Confirmed,ZRX,OUT,0.00000000000511518,,8596C85E0761CFDD4BA53CFEF899A1CCD66F6ADE5805B2ED13563B428A98583A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T08:57:46.301Z,Confirmed,ZRX,IN,0.000000000011704512,,7669ED328664E5486466659B2D90D537D53C7F9212B80787F3BAD71248AEDC9C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T08:56:57.474Z,Confirmed,ZRX,IN,0.000000000001849327,,D1EE01506A7DD189ABA1C5EF0695DE41A6E148ED79D86F135A62C4C8C3E96250,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T02:41:40.770Z,Confirmed,ZRX,OUT,0.000000000000002463,,8EB72C5B21419ECBC68DAA062F48F8D818C1C2B3C2C496F60CF3CC73223901B7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T20:47:29.351Z,Confirmed,ZRX,IN,0.000000000000351496,,A2019839E469F39A1C039C86B7B169A9B3E9C00FC32BA17337801C092171FF53,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T16:18:44.015Z,Confirmed,ZRX,IN,0.000000000000786213,,90A2B3AB1177B2D318303A59451DF1BAACE61144F76A7EB8C8A1131F4DA4EAB7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T13:12:30.973Z,Confirmed,ZRX,IN,0.000000000000012729,,18E2740124B565D541559E7CB9F31EBE23BB30DE6A15AD2824BD3EDE634A82ED,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T13:03:51.832Z,Confirmed,ZRX,IN,0.000000000000045579,,BB7C21A8B54AEA12B3E5BA6C0EBCA8F13F70868C60053CE0A5D1DCBFB04C21EC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T12:13:40.937Z,Confirmed,ZRX,IN,0.000000000000337535,,E1EB3490ED75A620AE1B43CED6AD33667672DC82106E30A6ABBCC542827E29CB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T02:26:38.747Z,Confirmed,ZRX,OUT,0.00000000000144746,,78A321C02B6B46AB7E0EA19AA8A426BAC465E512D20025C79DC9463C61BD3D35,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T17:36:34.118Z,Confirmed,ZRX,IN,0.000000000003857156,,8D945C08FF6B968214F6F618E6B192F153A23A625B54CCBFAD22DABA9FC9E9BB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T10:04:48.776Z,Confirmed,ZRX,IN,0.000000000001870816,,F9F34A11C02D41E6248116E5E8C8EC3DBEDCF73813ECC4F11572BF0B253EA547,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T03:30:18.581Z,Confirmed,ZRX,OUT,0.000000000000465787,,9D316248FC8953C9DDCCB562B1D29A9D735E2F72A706B95F43F531E2B0CC3684,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T16:22:01.833Z,Confirmed,ZRX,OUT,0.00000000000003983,,1FEB06AAE084AC3408CE055A0DB8FB1E0C0866F6CC074073A8A22144B9FB69F4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T15:06:45.297Z,Confirmed,ZRX,IN,0.000000000002791031,,CDD795BB7FE491B940A1A3617E9AE733818A4F9FAD33CA1EBA2C2E693A5AD94E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T14:19:26.100Z,Confirmed,ZRX,IN,0.000000000000039967,,D6D6664F6D091B9E80EAC9D28AC2E8DFB5747460C902ADFB6AFE8D59D840237E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T10:40:50.000Z,Confirmed,ZRX,IN,0.000000000003666899,,5FD191F81B07614484B5DCABA4EE1873008D3C18A017A75AAAC447A4061E5C80,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T03:46:15.514Z,Confirmed,ZRX,OUT,0.000000000004972967,,F39752DF7014DA5DD83692580043022E327E7A5EEC19F0E55CD58BA3CB3E4DF6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T20:16:13.403Z,Confirmed,ZRX,OUT,0.000000000005037846,,EB282682A90FACF73E37CF86B6285A981E75236F72D89FCF2A3BFF7302F56415,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T20:04:09.503Z,Confirmed,ZRX,IN,0.000000000000068848,,1A7167DB8C3F11888C5419AEB62FF2767FBF2BC0C1B94A906954E4DF95D67C10,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T18:56:19.968Z,Confirmed,ZRX,OUT,0.000000000003275708,,B99805CD9EE51D0614291D10B14DE1312260D1CF8BEEA9DB277FCDBE7E69FE6A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T17:06:59.240Z,Confirmed,ZRX,IN,0.000000000008477805,,FF21F28D854CACE18E451D5C0E375BF4900702DEDF6278C160AF82868E2536C9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T16:58:34.830Z,Confirmed,ZRX,IN,0.000000000002308955,,A6EA68057041426252C9DD60F5D41C4A9D0C46543D5A79E845A8A48615ED79CD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T13:32:41.289Z,Confirmed,ZRX,IN,0.000000000000011086,,7E4957FA0878688E34524A7CB23611A71FAF75A36AAB5BB632FFEBBCA97531BC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T13:15:28.946Z,Confirmed,ZRX,IN,0.000000000004599433,,0D77AFA1D2441271B34E99C5D3FD69E39EB93E2E939004A7D97B0DE8E3CA76DB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T12:30:17.437Z,Confirmed,ZRX,IN,0.000000000005740976,,5CE0CB9BC768CB38FF99999E808C5CEFEA761FE49E122B5F1ABA32B2BFA9D2CA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T12:21:02.148Z,Confirmed,ZRX,IN,0.000000000000831109,,96D10442B4D68EF0141146491B1928C68470D8177A4CCB1A055C1347C559A4A7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T05:40:27.816Z,Confirmed,ZRX,OUT,0.00000000000088011,,94152DE463F60C28202DC346DA746BEAB299FD195F3A1A5520C510ED45FC9379,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T05:09:38.914Z,Confirmed,ZRX,IN,0.000000000000332881,,C3933919BD4F2B939A15FB90EEDE328731936715F4DA7540EC0009BFA1942CDE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T04:17:08.209Z,Confirmed,ZRX,OUT,0.000000000001801147,,A521DD9B67DAE76985E13CEBCA2513637A4D6259459E531BA7E0902EF1B96E80,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T16:14:42.617Z,Confirmed,ZRX,IN,0.000000000010731463,,1ECE275691297862677104BA5503C8A04A7E34F7633E056BC727A1B68A6A5AFD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T08:48:31.340Z,Confirmed,ZRX,OUT,0.000000000001330842,,4B3B0BCDC2D47F9C4259BE253C277A29ACE12C56EA87381EBB3290024BB8A21C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T05:59:44.610Z,Confirmed,ZRX,OUT,0.00000000000005913,,6E12851578661647FC707A56ACACFFE53EB89E599994F032D552BFDF6F38767D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T05:05:41.719Z,Confirmed,ZRX,IN,0.000000000000826729,,C94B3DB159A28241E0A3867CEE6CEECCC1DF03E5AD868568382851821100AE9A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T18:26:19.309Z,Confirmed,ZRX,IN,0.000000000000209693,,DEFB73809ABCC32FEE9DBDC1BA2D51255F4B802CC11927BFE49E39DDB37F1165,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T15:25:36.662Z,Confirmed,ZRX,IN,0.00000000000308066,,580F807CAB52643C56F7E9C34857E922B8343E7F88EC261EBC6DC3A083DD47A3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T10:50:00.113Z,Confirmed,ZRX,IN,0.000000000001675768,,E9021E387B86E89FEA0E9866F24A8FF0BABA2C07CB0F23FA6B9094EBD551DA72,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T00:38:52.228Z,Confirmed,ZRX,OUT,0.000000000002005091,,F34F32E479FB10FC868FCE89BF3FDACBB831A275EDCAC309FAC677097CEDE1BC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T18:55:23.812Z,Confirmed,ZRX,IN,0.000000000002552731,,BDED71FB6C3E6E1AE5F672EF40E7A0E3D83F5E30E28668AE977E9BD02C6F83CA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T17:41:21.582Z,Confirmed,ZRX,IN,0.000000000000911728,,C8DA31624C00754B6A17FEAD30211A42CCF62F318A4080732E17102667FABA24,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T08:47:15.905Z,Confirmed,ZRX,IN,0.000000000000638935,,CBE03842CF304DB01E113D98271C9683B5A55E72E5F10785234E5E4AA52DBBDA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T06:13:34.182Z,Confirmed,ZRX,IN,0.000000000000088147,,0C73B5A6A0B084246BFEF5ED5995D73C7081E0C8ECCBDCFCB95828C22286280A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T06:03:16.496Z,Confirmed,ZRX,OUT,0.00000000000249538,,5EDFAA10A38E0A80BC84093A43FFC4BEBAA5D80F7DBF55140C069F4C5749A40B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T04:49:54.066Z,Confirmed,ZRX,OUT,0.000000000000141529,,55E75694D6D4D03DA7783B5C7E73F536D78A8966880123BBA4C6CE6AB7D569FB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T19:06:19.304Z,Confirmed,ZRX,IN,0.000000000000659877,,F6F8B41A19DED853468ABBBFDA30C094A94FD9649F9EE4C07248BF02F9703364,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T18:39:17.580Z,Confirmed,ZRX,IN,0.000000000004159514,,8297ECF616A7BAC2B0008A5CB4618BF983C2C297A3DF683BBC12388787C853C8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T16:06:59.464Z,Confirmed,ZRX,IN,0.000000000000279226,,A1A12059AF4FFC5FBD1FE5B38787DF2A3F937B8C792A7A467E1629CC0FCB0F3D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T14:26:42.776Z,Confirmed,ZRX,OUT,0.000000000000078019,,D622C6F9F283841451587FFB2D0A41D28B395998BA2D6D820180E5C0A908A155,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T10:03:33.288Z,Confirmed,ZRX,IN,0.000000000003791729,,D74E711CECE49B4F6CD308F116FACE18761A162929D050BF19C9CC41ED269331,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T09:15:26.030Z,Confirmed,ZRX,IN,0.000000000000862727,,61F5BACD1670FD44B6F481531AD493DD4087936B34515959E5A63A9E6FE4A721,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T09:10:20.958Z,Confirmed,ZRX,IN,0.000000000013024678,,0850ABB926E429F455767D31399377062B9B35EBD25AE8F25F2088D9C7AD03F9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T08:33:42.548Z,Confirmed,ZRX,IN,0.000000000000227624,,9EC3D1C273C38A793E16044F79A8F8696B3155B74244846C74D9113096ABEDFD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T03:17:34.656Z,Confirmed,ZRX,OUT,0.000000000003725345,,3537F337A6F05B0194EADF3689FCA725F5735F327F4632D73325639405EF404A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T02:36:39.503Z,Confirmed,ZRX,IN,0.000000000005513078,,30B555DF97AEE7D49967F8822CC9BEE100DBEF778286F7C9E1BABB0F12213666,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T02:36:26.215Z,Confirmed,ZRX,OUT,0.000000000000778001,,453992DE456B5975B7B0E3DC7B28E35AB6C2B2601C3FCC9EFD44136BC952E599,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T02:29:46.249Z,Confirmed,ZRX,IN,0.000000000000214621,,F66CECD6CB28CA4031C09FB6A3CA3B667E94560A1D12FC4509AEEBD16D5FD74B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T01:42:19.237Z,Confirmed,ZRX,IN,0.000000000001569005,,0AD1C7FE33F3F46E9365E08E0B62CCF959E5768EE0F1AF974694C0DABB01765C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T23:41:31.824Z,Confirmed,ZRX,IN,0.000000000000773621,,3E57EF73A33EAF8F6BA66D26962BD9631EC27E3B64A81BFD9900FA348B7CA9D0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T16:59:45.598Z,Confirmed,ZRX,IN,0.000000000000245691,,E7D9C9E5D4DC6396BEAE7DC7E1AD69E7D477203ACB9E2A8E5F8D54BC8D4BD089,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T16:56:32.467Z,Confirmed,ZRX,OUT,0.000000000001175351,,C51606835404BFE1B7B23467842D2104D73EE299AAAEF96B917BA864FDFCAD14,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T16:33:24.784Z,Confirmed,ZRX,IN,0.000000000002441862,,F52AC202B4045BEF4F33A41A4A9B01D7D64B6D5310A9E66A9294ECD5FB039EC6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T15:55:50.176Z,Confirmed,ZRX,OUT,0.000000000000228856,,338117700CEDE50C431E38218C0021264CE2EAFA92E872A728871BA8221ABD81,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T14:32:53.005Z,Confirmed,ZRX,IN,0.000000000000634145,,209885EC2DDD23DAEE82274CE255C46D3C5C024D3BB2065E119832ECC49C2316,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T10:49:10.379Z,Confirmed,ZRX,IN,0.000000000000480159,,FBD4FE592A89D54997BE0D2518D526F00B4DCA050B5D1FE3EE606CB6132DF00C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T09:09:12.916Z,Confirmed,ZRX,IN,0.000000000000562285,,5F4D620D1C379B79CBEBEF2C3EBF540EB5E864E24B864C5E74C9FA267F4023A7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T08:40:23.919Z,Confirmed,ZRX,OUT,0.000000000000029154,,D7D46FBC5D53D59A76CD4BCD51766CE134BCFE2F7350A318734506F72643974E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T07:51:36.965Z,Confirmed,ZRX,OUT,0.000000000004413966,,4070524C0B47E94561AE85AD562E547764BCD3C7883794654E7BAC38AECD12F6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T06:30:39.948Z,Confirmed,ZRX,IN,0.000000000002188915,,AA28307E8C58E58F3760A13A8B5BCB309E9DC04ED249C3D56BC9D32B6A392759,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-19T12:22:57.310Z,Confirmed,ZRX,OUT,0.000000000000976334,,680CC4DAED1EA719134A6D39EE0EDCE3892EA65A698A75A87627C5639CDBC513,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-19T08:30:47.666Z,Confirmed,ZRX,IN,0.00000000000324409,,9114F26979127A322D239E3410F6099C579ED08D9923A8BD15E53E27E5DD8DF7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-19T08:30:46.250Z,Confirmed,ZRX,IN,0.000000000002815122,,5BA853C3F4CB6524B0636C08E964C9EA530DB716A5B411443634E9C51F24BF31,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T15:40:59.576Z,Confirmed,REP,OUT,0.000000000004616269,,1308AF3BC664FB1FBC8D878172FB33C89E3CDC82A29C6AF7BB43EC035E323C0E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T09:26:27.272Z,Confirmed,REP,IN,0.000000000000113606,,9A941730CB228C7717EC95E337D99E2AC0CEE3A6BAAB87185381E18F9247F1C2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T08:59:27.969Z,Confirmed,REP,IN,0.000000000005304753,,F4F32397CB5473D748E882A44FE733B77E7542465704A973281B4A99FED59616,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T08:58:19.818Z,Confirmed,REP,IN,0.000000000002171258,,4D7FC71D861A2A79731F1614963257C77B34C6F08A34455B1F76356FF8C2F083,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T08:11:45.049Z,Confirmed,REP,IN,0.000000000000426504,,1DB3E56994A81EBC2BC7410693D953CC4F7A0D03147C221BF8D60ACB23C58DF6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T07:43:57.276Z,Confirmed,REP,IN,0.000000000000725577,,D901CFF3C3916F2D84FAEFF648087E76CB7D358CA23243A5A98D5839296D035F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T00:30:42.033Z,Confirmed,REP,OUT,0.000000000000313445,,DD45448C5906F7BE5880B07E6F39397DEAC8F47BD5E9EE9F94342D309155CABE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T12:54:17.061Z,Confirmed,REP,OUT,0.000000000000131948,,F96CAA7BE7ADFE937B6D33063D6036BA29B89EA9E9DD9A036A11D4677F30F378,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T12:45:23.786Z,Confirmed,REP,IN,0.000000000000185603,,B0BF2FF084664DD76B2727D7DFDFB41C4669C1CDCBBA2B57EB5DA8EF2CD7B040,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T11:58:12.583Z,Confirmed,REP,IN,0.000000000000076102,,8BE29DFAB8D50D8418AD133E5A8F38392E16C28F62ACAE6953C33DC41443A526,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T10:26:24.764Z,Confirmed,REP,IN,0.000000000002180977,,06F010F6C3A5CB63427BF2FEE5FFA5EEA319531C34F23CD1B21D935033E675FC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T06:54:12.603Z,Confirmed,REP,OUT,0.000000000000518074,,1C5807249B9755C36A98C6017B2942732B0E6979E9BA5CE3B0D1DE87F952CF60,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T05:31:19.827Z,Confirmed,REP,OUT,0.000000000004091898,,8190450866A5CDB6776FB2C1E39747B63648307C3B215097B98C95AE1E9A5BA6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T05:15:38.154Z,Confirmed,REP,OUT,0.000000000001430898,,1442340521D34969287FF7E7A1DF0DC355CFC9A83BB157C5F5CD199CF3DF0D2A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T03:46:14.774Z,Confirmed,REP,IN,0.000000000000604853,,478B3D5D6AD3490C70ED9F2F057C864F99E64E953641CEE37658B50983144718,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T03:24:39.642Z,Confirmed,REP,OUT,0.000000000000192447,,5A164FE025065FEC3B1CC7CC01AC537F01DF8B42D320749B55366741699F8C77,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T16:35:30.851Z,Confirmed,REP,OUT,0.000000000000339588,,0CBEC253A1C714102E401205AA68A29A8D25F5F7753C45A1CA39699EAF1C1392,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T06:56:20.687Z,Confirmed,REP,IN,0.00000000000290806,,AE309B65724A2F0CD4B96BB6D6145D24F5260CBDEA18321F2E2DB51C32744AF1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T05:57:00.171Z,Confirmed,REP,OUT,0.000000000007124105,,40A56E3554F0900EF3211C11944B0018B093C7EB73ECE46F7E0E6B98344DF984,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T02:14:00.479Z,Confirmed,REP,OUT,0.000000000001026704,,2B64B5E70FB2B62E2397B23E487A239986252EB0890448F209AF07885FDF6A44,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T01:10:41.846Z,Confirmed,REP,IN,0.000000000000011086,,58C7AD42A2ED6205DBF0A7DC10AEAB644311B18F77408871583E99F0DB82300E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T21:35:35.065Z,Confirmed,REP,IN,0.000000000009376805,,02194CA4FDE38901158D35A845B8F67F98713A42F0C1FCD267A07D17940C2CE5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T12:56:30.665Z,Confirmed,REP,IN,0.000000000000028607,,FA1C81E9E883ECEFB9DFD2E0B191E0F68B937602F39EFD16E547EF77F01DDE72,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T09:18:33.397Z,Confirmed,REP,OUT,0.000000000000451963,,C3B61DE854359B8363737ADA20064EBBB8D993DF1DD33AB4CDCBCE596EE6BF91,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T06:19:04.446Z,Confirmed,REP,IN,0.000000000000422261,,EE25AFFA3AF30F5A76BEEB3F55CE392C3CC5A7887558CF5EF5CA4745594AE558,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T06:00:34.306Z,Confirmed,REP,IN,0.000000000003591343,,F2BDEEE92ECCBEC5BE41313FE4E81991ACFA4D12D2A784AD6E5B4A277C2AC710,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T03:57:22.224Z,Confirmed,REP,OUT,0.00000000000175324,,6BABD6FF4C97FBFC5D6C30A44C5B259E80FC439383293F9D3438442D2D0B6097,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T21:15:13.426Z,Confirmed,REP,IN,0.000000000002228336,,7DACB05B7A88DE156581A2B3C665AD8C79A9495E090E7B85D516CB082A36B0F1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T20:32:36.348Z,Confirmed,REP,IN,0.000000000000170683,,3EC822D16F49F64A947058827B377B7FEEDE2C366D6EAB31CAD41CDB99A79285,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T20:28:38.903Z,Confirmed,REP,OUT,0.000000000000595272,,11557DD7CEAF43CAC2FC723BE01B783AA5E253416F74B1A6E2CF91BF85CB4660,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T18:21:36.303Z,Confirmed,REP,IN,0.000000000000721334,,D09466FD254E910EEB9035B5F65230679746690638F2C287FBCC7D904FF512CC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T14:08:47.942Z,Confirmed,REP,IN,0.000000000000376955,,7AE2DD58E8F772D6EA21BCE272C19636A2DFA62F320D04F63B8356CBA08B8181,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T23:16:31.310Z,Confirmed,REP,OUT,0.000000000000893387,,7F02B78389BB91F8BA60FEB6E462424E355B7D3D60D2EC315467C23682509E7D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T19:42:08.754Z,Confirmed,REP,OUT,0.000000000003277761,,EF4004BE168391646BE9005E52A41F703F5A80332EFE7CEA503A923ACC4F79C3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T13:21:07.153Z,Confirmed,REP,IN,0.000000000001922008,,B349E95833259AAE1BBE2071B9D0A4DC4A84166F0723DACC6CD7E9F4A173ABB4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T12:54:46.119Z,Confirmed,REP,OUT,0.000000000000474,,E17C411B6DB8780ADDBB64209A7EAF7D52F09F4A85997F7EEEBA3F8CEA1BBF9E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T06:14:12.242Z,Confirmed,REP,IN,0.000000000000524918,,4C4092442473F8CD75B890C6B219355E0A68D8FD58B655B9359390ADF8EB7C0E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T05:07:00.842Z,Confirmed,REP,OUT,0.000000000000821117,,234204C52113FCA924C7750826F2321B4E2128FB0AD6C1960FF5A2F62BFBD789,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T05:05:43.940Z,Confirmed,REP,OUT,0.000000000001621566,,EA9CA915E1876C96BE854CF2E8C89AA129EDF302EC70849B4E6BABF9351E6C45,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T03:41:20.320Z,Confirmed,REP,IN,0.000000000009316716,,52AE66F94F9024CB6A4ED74153E807451169C8C0A824826A08BBA173DC4DC87D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T02:00:01.832Z,Confirmed,REP,OUT,0.000000000002400388,,81CCA3AACF24807D8C575E2D1A0E68DEAFDBF8DDB563AE5C8E9172C3D0E086E1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T01:22:19.479Z,Confirmed,REP,OUT,0.000000000000878468,,7ED422D46D8A9430827774E166AAA8616C94C43474819D636F586D1A566E37D0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T18:36:30.669Z,Confirmed,REP,OUT,0.000000000000241311,,076FEB1CBBF1E93050050D32DB001E61726AEECF13B3ADAA0091370A34D4DC7F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T17:33:01.329Z,Confirmed,REP,IN,0.000000000000613066,,5F741FF07173F70FAAFBF121C19F54F59C8E25658D1F25328A08A25679EB7B91,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T22:39:55.599Z,Confirmed,REP,OUT,0.000000000007016657,,07AD53478BA8A29DF55794FE02DD545C38AF4B673DE7B535586EF3809815CFAF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T22:37:07.719Z,Confirmed,REP,IN,0.00000000000262199,,7C8BE76FB571BDBD1D5A8F0A268671DB8AF004672D8D03C4B4FE2D90E52D5FBD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T20:55:45.369Z,Confirmed,REP,IN,0.000000000002219165,,E274D98408B8E13DC1041A6D7D18CA0BAF9D31B1981F76672028C5EB766B9065,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T20:06:14.789Z,Confirmed,REP,OUT,0.000000000003240805,,23874C2E4122FB9BBF73C3E44517FFCD449BAA0A8C29FE929CD656D9DAF55ACE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T12:21:01.884Z,Confirmed,REP,OUT,0.000000000000710658,,8E89000BB63906AC676FEA0F26A32C02E6941A06992DEB257ED43F943E81054E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T12:09:09.131Z,Confirmed,REP,IN,0.000000000000713806,,20AEC66EC5DC4CF26A080F2C20AD910CFF77E4C1BB8CAB845C5F077BB8248E15,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T03:13:07.941Z,Confirmed,REP,OUT,0.000000000000238711,,BA66383E4BDC391E2F421DA676A5EC5797AF1BC5340460D147658A7EE877911D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T22:17:09.710Z,Confirmed,REP,IN,0.000000000000118944,,E19C7CC2AE4E3D1F8A92B3416A72DBD391FABA4ED9759BB202201205E34A634D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T22:01:53.317Z,Confirmed,REP,IN,0.000000000002049165,,4F6E16EE465E146282513581312C030CDF7AA261EBE68E146A354937CB03613E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T14:13:45.959Z,Confirmed,REP,IN,0.000000000000414185,,0558907DD3B80641934936340BC470B5BE1F701610B2919BC042CA290FD48408,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T07:39:28.453Z,Confirmed,REP,IN,0.000000000000074323,,4B142AC4CF88A7AA0ABF84D5BD151D20986A4B2727EDD09F7B465F0CA440EA77,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T11:19:44.975Z,Confirmed,REP,OUT,0.000000000005366895,,3CB07E8D14385AF7854CCB1297488E77F1E726CF688C6B813D70180D1B376060,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T11:10:22.174Z,Confirmed,REP,OUT,0.000000000005325558,,C5BAD94A5663E7FE080D860E1E20568B6E9CB6BC5466ACA8BEB752BE6C89DF8A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T11:03:50.720Z,Confirmed,REP,IN,0.00000000000112676,,7F15AFF86A784649DC855A5189333D322BDE87369F5BED0E6EA4145D1C56764C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T10:47:27.269Z,Confirmed,REP,OUT,0.000000000002358367,,E7FEF91BD0091C0E197C66142DEA4BDBE8CC1535AE0F607FBDB6BBB5D412F8F8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T08:58:12.110Z,Confirmed,REP,OUT,0.000000000002736281,,A5AB85D8AA8903EE8CE09447B0D35885424C331D3D7C82926944F77951314BAB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T08:51:00.589Z,Confirmed,REP,IN,0.000000000000011634,,0A684661B4FB264FB07CC8491D34C0A4CC3FCDE14E487BF51B534F7EB46432A9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T01:05:18.461Z,Confirmed,REP,IN,0.000000000000996318,,78E9E1DD61671604F122C34024CE1668BA4DB76B2915CA35924E3FC5296F160A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T21:18:02.843Z,Confirmed,REP,OUT,0.000000000000154122,,2420ACFDA8CA89791344CD2D79192965ACDF19C4F7A162890F46A29303B2AA45,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T20:05:09.693Z,Confirmed,REP,IN,0.000000000002850025,,E858E390BD04C2CC4EDD48D2B106FB2FF2B2B84022D78E65FDEAF6802738C8DE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T12:57:53.214Z,Confirmed,REP,IN,0.000000000000540522,,B510AF199915CC9B62FA5CE2CC93DD193ADA7B485413E34C80367E0F60DBFD1D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T07:51:39.300Z,Confirmed,REP,IN,0.000000000003142939,,21C5876B67449FFF85C83B2B3BE938634EBFE5867DE33D4EB89F984EE3DF8477,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T05:34:07.893Z,Confirmed,REP,IN,0.000000000000876551,,0ABDB92D8ED2716B1AE9A3279254C7B630091E4705543AFC00A194845D401B66,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T03:18:06.926Z,Confirmed,REP,IN,0.000000000000059404,,372F0CD3CEADFEF0DDBA4F3556A794733B12D2A648306B2F8DA7F0C323513550,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T20:15:31.817Z,Confirmed,REP,IN,0.000000000002024801,,8EA13A12647D1068FD4ABF83BFBDD9EE3779C7DC1062D57A8B52256600333778,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T18:14:10.456Z,Confirmed,REP,IN,0.000000000004360037,,073383AA23584479ED37A7BD5A8719469F6312EFA62E84E719E960636285DD1F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T13:55:58.853Z,Confirmed,REP,IN,0.00000000000025582,,774F532A3F59516ECDC13A8F57D2C8C05083FAC4B4BC9733CB050B36BD399911,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T08:39:49.110Z,Confirmed,REP,IN,0.000000000001808812,,1F3061C4B46D4142D355B79111004C4B942F982B7E51DB115DBD631FA9821665,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T07:45:10.572Z,Confirmed,REP,IN,0.000000000001295254,,6D82858295A77A8E8A50E5084873B6362356F421CE284B37B80FECA70C109E94,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T07:37:56.014Z,Confirmed,REP,OUT,0.000000000000106626,,9CD5DA44C0F6F4901E7993A08A253275A639FD136106B8531EB1C66A55C9D390,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T07:35:25.785Z,Confirmed,REP,IN,0.000000000003481843,,7674FE1E228F63D0EFDACC4469F646699EF4C91860896D580F7ADECA1AECFF7C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T02:31:46.053Z,Confirmed,REP,OUT,0.000000000003109267,,884EC2ED5878B9EA67A7854FE55F8817E4F4272C8F7AC75FFC466E2D19690700,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T23:50:59.226Z,Confirmed,REP,IN,0.000000000000038051,,9904E0A319C0B31443B6CD183816FAA4A536A7C870D3B274ED6DB006F209A7B9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T19:55:18.290Z,Confirmed,REP,IN,0.000000000000077608,,29AA977FD455C43038F7533B35C96AC9ED3598EAF2CE069F8D48D06B5DF41906,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T16:53:16.291Z,Confirmed,REP,IN,0.000000000000950875,,70A7A912EA8D6796B90CF87228225A13C2AE00405D483EDE8406222DFD3D584B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T14:51:20.622Z,Confirmed,REP,OUT,0.000000000001710535,,65E0041CC6857DA1F25332BF5A3BF01AD6661E6DB1219E435940A9FF8C18B1D7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T06:28:08.441Z,Confirmed,REP,IN,0.000000000000120313,,4A6653163BE3CBC13AC2E48F0354B2584CC114CCD3A5BAE78EED3839C3645D5D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T21:44:42.085Z,Confirmed,REP,IN,0.000000000000217632,,E20FA309AA3D55BA2F07E9946DFB75F2DDC5BF593784D908FDEA62B3761BB6CC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T20:21:00.729Z,Confirmed,REP,OUT,0.000000000000607043,,23605549FE62F7F606D3E884B0DC969DE0C15057F58A5E3F7F22ACDEEA9E1A94,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T18:28:16.506Z,Confirmed,REP,OUT,0.000000000000528887,,EF9E3FCAEA015D225B53E401D214CD1275562240C33718C189E98FB9BC3D150C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T18:05:25.586Z,Confirmed,REP,IN,0.000000000002049028,,F2513A69A98B4E80A4922CD6505F6F1C19DA46C2B4BA5AE0CFC5141C4DF1A084,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T18:05:24.788Z,Confirmed,REP,IN,0.000000000004431623,,427ADB1159B96D94B574C5A47EC93AB7BCBC63A50B67692536A7B4E97B853A65,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T14:12:51.810Z,Confirmed,REP,IN,0.000000000003099549,,9DE0DA05CD30266593F792DD4694A37BF7973DBB89B7090BA11AE8C97E52BFE5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T08:15:56.096Z,Confirmed,REP,IN,0.000000000001098974,,3D07F31200AFF7F3F4D904B5BDC91F163E6FB1B0EA1FF623F33286F63C82F0F6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T21:47:48.371Z,Confirmed,REP,IN,0.000000000004177856,,5CA8E1E8ED641AC39DB970DA8D8E377DCFD5031405F5CC9FAB862DB5AF76BDB8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T17:23:20.405Z,Confirmed,REP,IN,0.00000000000801845,,922942CF8E3EA5FB68E67A45646E47C524DDC70248DD9E80E9C014EF34C34389,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T14:24:55.405Z,Confirmed,REP,IN,0.000000000002371918,,3EBBCE6030C176E62276DE7F4498A8406E8556F724B612F610D553294F191805,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T14:07:51.695Z,Confirmed,REP,IN,0.000000000002212869,,07EB53CB708295398889C2EE3D052B26D691C66388B32A258BF38A11D06DF1C6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T14:03:40.920Z,Confirmed,REP,IN,0.000000000000317551,,A5A6CB42D343975270ACCD85053AD4B439DE7F9DC828660F376FC33364819886,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T20:05:07.628Z,Confirmed,REP,IN,0.000000000000001231,,696AB0F913C864CE7264147BD572C7751B9B72CC4B559BB468F8C55E3D77CCEF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T17:22:13.650Z,Confirmed,REP,IN,0.000000000005674865,,3A9AEBC4178C4E02D0245B2DB7FF6BD63D953EFEC5B9956D3845DE9C518FA4B1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T16:43:26.332Z,Confirmed,REP,OUT,0.000000000005164319,,CC61F2FE89ABCEE5D724A35007AEE8584153FD116BEA42FAF13A037E33ADBA8A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T09:44:41.239Z,Confirmed,REP,IN,0.00000000000000219,,56C533DDA18899C5AED1E2762C3EA029CF4D50875CC906336AA3CE784B05D25C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T09:38:09.329Z,Confirmed,REP,OUT,0.000000000000105941,,E6144EF3F7881E1DDCD59BEE48D2C3610BEC2DCEF72AFF679EFC1C04F8BFC1DA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T06:26:42.609Z,Confirmed,REP,IN,0.000000000002179745,,D8E13E45B2D3D2C9DF22758E52086E2FAEB9BB71BE301ABD9900C817B8E58591,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T05:44:18.755Z,Confirmed,REP,IN,0.000000000001064482,,56A34FBE153823B7128956CE11E42DD2232F52B74144B63972E5657651B3E101,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T22:04:13.037Z,Confirmed,REP,IN,0.000000000005647901,,0442A68876BC7C3F3BE8DBB2CEEED3CB4ADA8202957C6C9E1D57080EAC57FABC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T15:40:57.041Z,Confirmed,REP,IN,0.00000000000529832,,1DC8A698BE21CA1D940BCAD8B5EA4BFADCC61A1AEF8666E495F55F1F148E4D97,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T14:32:02.961Z,Confirmed,REP,IN,0.00000000000102205,,1B9BF0DFD9174927606DD071EE8F3DE642B8871FC10D9B8E49032930F89D3DF2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T14:30:47.734Z,Confirmed,REP,OUT,0.000000000003741907,,B51874AE89C6654600986FD750EC87955DDFF2C47EF195DB64BB128A3A87F15E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T06:47:06.537Z,Confirmed,REP,IN,0.00000000000048714,,242C1F3B9652D2E8037A71269C277F0EA0EEABB4EA92AB05D4E9EADFDDD20A45,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T05:42:06.777Z,Confirmed,REP,OUT,0.000000000002433649,,2E4FA11DEDC66F34D278DB039F8A81CC04F747AF8550BA6075423899FE83E543,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T19:35:45.658Z,Confirmed,REP,IN,0.000000000000662888,,872A46F825B57E387E859EE532F0DD2C96E1A203D52659547FCD06F3390FE835,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T18:45:53.724Z,Confirmed,REP,IN,0.000000000000847123,,6345480DC5B5514140C98FCC963FDE2ED758A5D5D4E4D3C109095916EB7BA26C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T16:08:05.705Z,Confirmed,REP,IN,0.000000000006892237,,BC7E90A3EDA970CF08E45B3DA53FB05C39BF8E08678BD31BA7CE797D3E9D8B79,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T13:07:07.616Z,Confirmed,REP,IN,0.00000000000157448,,02F5905A4209E33BB878CA5CF455EE23389E3A47CACF1EEDD1DEAA4F9C757635,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T11:51:58.013Z,Confirmed,REP,IN,0.000000000000001368,,413F82A4F2A6E023BC4D5BB36DC36005329C01103E63860E9146A66DA8F81457,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T11:21:52.307Z,Confirmed,REP,OUT,0.000000000002612135,,B3E6DBBF10934267238D876A40463E04B1BD38D8132FAAC4E7711AA4AC99FC54,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T07:48:57.232Z,Confirmed,REP,IN,0.000000000000375449,,AD6BAE1F48582128739D0CB12D97359EDA4DAAE7040093088D2B535CA98DCA34,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T07:14:35.618Z,Confirmed,REP,OUT,0.000000000006935764,,C074A3C0564F8806755E884D79673B14D0A8163586EC84345DFE17183BC690A3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T06:03:00.974Z,Confirmed,REP,IN,0.000000000000072817,,8984EDEA489F1F331DEDB5694096ECBAC28728E3CC16A8E14C9544422CF81AD7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T04:57:22.068Z,Confirmed,REP,OUT,0.000000000006936448,,DE8098DA94227DE89C7B3C4D5F23FD3BDDA6645DA95BC7F8A213846875668C05,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T04:14:11.636Z,Confirmed,REP,OUT,0.000000000000034766,,C7BAB77B26BD3CE93364C1E0E5405808471FD038718A65070846A2623E11F123,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T18:08:00.579Z,Confirmed,REP,IN,0.000000000009370645,,BF4C209E4DB5042091C10440CAB7242DDE138804A3FAED82142DB0FF6F9D5276,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T17:30:45.121Z,Confirmed,REP,IN,0.000000000000273477,,AF3BFFC8C4DD43A43AAFB331FE068C0F9A6FED56E594F545AF0F27271A7E1930,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T17:25:13.228Z,Confirmed,REP,IN,0.000000000000486045,,BCAE41ADA4D7A83F650537ACE6E13735011F96C5D7BF36591695D83842C1D940,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T16:51:31.423Z,Confirmed,REP,IN,0.000000000000006843,,61287F87525FDE15B5A075BABB9B2560FE308DDBC670142C2B26DBE714C6D898,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T07:51:58.001Z,Confirmed,REP,OUT,0.000000000000050917,,E10AEBAB5AAE660F2DB06AAB516031366E90C4729D93F0CBA39D87F2CF8EBD17,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T00:49:12.316Z,Confirmed,REP,IN,0.000000000000229403,,EA741770E8114488E96EA309B41DB03BFDF0F4460AB40DB61AAE90F61CA49036,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T21:56:18.929Z,Confirmed,REP,OUT,0.000000000000191352,,D667F68AFA0A51CB42395600801A8347A7F3D656D132EF61328E10B581FCDA92,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T20:01:58.922Z,Confirmed,REP,OUT,0.000000000002782956,,AB803935A09193B1DEBBD4E742343E5C524815D7FE73370DEA72B6A1DCCAEBA5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T17:21:24.915Z,Confirmed,REP,IN,0.000000000000003832,,EAA8D408172154F0AC3C3F7D5B7EDB12F8A9B93940161E489B3ACA6E799E0F8E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T15:11:41.865Z,Confirmed,REP,IN,0.000000000000264717,,C692AFF4D8CF321EF163E0937C8C3C6FA724B7686213024B5D9220162E497881,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T06:13:07.885Z,Confirmed,REP,IN,0.000000000004559465,,15C7A2F625505F6CEA8DC6631483D6E7DB06D14BB634464D1A8EF0AEA624A1DC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T06:00:23.528Z,Confirmed,REP,IN,0.000000000001692467,,34CED3E44275AACC4672DB9B7F9D6884C4124FBE97D378666B6B77E5C8D132AB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T02:55:03.613Z,Confirmed,REP,IN,0.00000000000091515,,2D50525206C38A0967C435FD4454E6908B624C8035A0DE21DE1827A224D832E9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-23T02:43:45.579Z,Confirmed,REP,OUT,0.000000000000447309,,04FD32A40A2F33607CAB88436458847902256E4ED5420E3C0714B3D56BB90C15,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T23:42:07.827Z,Confirmed,REP,IN,0.000000000003232045,,CFB8D7A57B2EDFDED1B73AF5A45AE146ADFF1B99B5694BA3ACC16BD34ABE989C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T23:36:37.266Z,Confirmed,REP,IN,0.000000000004275174,,4506132210805B32E4074C6F718C61A173476419F291FC293DA9033B671B4694,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T23:09:09.093Z,Confirmed,REP,OUT,0.000000000001690825,,4ABCFF96BCDDEFE34628A9065B36FAD66EEBB2BE09248F0D4ED25F34012E969C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T20:03:45.432Z,Confirmed,REP,IN,0.000000000000146867,,27CDA4A32EF363321479D70802AAF8740DCE3550CF9D21A35B74FD27D61E49F6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T19:58:33.690Z,Confirmed,REP,IN,0.000000000003668952,,61066677D3DED180C58B100BE68A7034C635C3E8FAFD976349F47FE902A09BE2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T11:49:44.474Z,Confirmed,REP,IN,0.000000000003334702,,27E3FECE2683E2F3E46F3929B029F4CECE15C29C5260678EE26690D29F07C64B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-22T09:29:46.241Z,Confirmed,REP,IN,0.000000000000613339,,9B0FF00A98FF71CFBD5C3EEE20425A3B1E5D2F2FB8C349F8B8305E31ABB8DBBC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T20:29:06.248Z,Confirmed,REP,IN,0.000000000002356041,,48A8252C0B5E20534D7EDF66A86B7E0522A9DB0861386077CE28734464811EFF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T18:35:59.568Z,Confirmed,REP,IN,0.000000000000103751,,2D7366B657A91635E95EB56B317FF4B683C779D6C5D66E56D8A3C19615579E22,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T18:27:55.172Z,Confirmed,REP,OUT,0.000000000000530393,,B12DCB47DFAE21127C1DBA6D9697987C740B8EC4B3BDF17722FD9247A43A466B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T18:19:58.012Z,Confirmed,REP,IN,0.00000000000002012,,97A5F54A73766D1974CF073F7DCF8E43B660023128703B15BD85A097C638F837,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T07:45:39.904Z,Confirmed,REP,OUT,0.000000000002706168,,ECFE2A1AA48982368C1DA98E1B04FCE7EB704D1F37093D8300F5464F504FB9B2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T07:06:46.750Z,Confirmed,REP,IN,0.000000000000497679,,7D460F9A5C80044CBF5BFB8130125505ECEA78D6BC7D4E4997B8CC70F34B3C3F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T04:52:28.785Z,Confirmed,REP,IN,0.000000000000363268,,24A2462FFAEFB65EBBDF7D9C287B95D2BE2034E12755F054CFCEF6E190C37D16,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T02:18:49.895Z,Confirmed,REP,OUT,0.000000000002452127,,1F6441AA5E2079E2A6288FF6C0C6488F9A254611877C6B9BD18FE98588B5C108,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-21T00:19:38.783Z,Confirmed,REP,IN,0.000000000000068164,,AAD44489949DA8DEB7CAAEE705CDD1D5B5F5EF3A5FA230ED77E624A187020D26,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T22:35:31.706Z,Confirmed,REP,OUT,0.000000000003991979,,3B5E19D35EB48FE91CA05643BB29921BE676D624E29835776871F76D8CE60DF5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T21:48:10.143Z,Confirmed,REP,IN,0.000000000000111416,,440DBC13EC0070442345597C3D0C5752C0395A1F930021A6B255959E93390890,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T18:38:09.182Z,Confirmed,REP,IN,0.000000000000146593,,9C4B59E9D7838FB2AAE6C42469DD2A9BF547AAE9A86A19D2C27416DEB1F7CA73,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T07:59:13.160Z,Confirmed,REP,OUT,0.000000000000217084,,F7B394211EAB0925C09C782EF17EA72223C246AEEB1CE37CE45DDBAB22498CAB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T04:13:10.770Z,Confirmed,REP,IN,0.000000000004817886,,3E897B8E56F2AF809E7AB28BB77EBEF5C21C33D519591CEC824F47BEF26ECD67,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-20T02:57:53.052Z,Confirmed,REP,IN,0.000000000006909757,,085C3DF550D83BEEB711007EE9D08297D30EEE19F972E517573428C72D0F382B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-19T22:03:05.792Z,Confirmed,REP,IN,0.0000000000001945,,DDA99D3F29BDEA5CA5FEDB25FD997B10711F28B80329446298EB92D07CC13476,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-19T14:05:28.280Z,Confirmed,REP,IN,0.000000000002707537,,925C4BADAD0FB4FCDD5F09F81B4CAEA06EA9D95D7482ED65B36B6AA1E241647D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-19T01:31:53.235Z,Confirmed,REP,IN,0.000000000000038872,,FD472BD2B249948903FC2D4AA1FC6305A946B9E5C29F0180847019DBDF4C52DD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-18T20:53:24.493Z,Confirmed,REP,OUT,0.000000000006971351,,C297B8A52C4948961BD926F82BFAF69E87E7971EF679F8830CA83CF1135D2BF5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-18T19:25:26.098Z,Confirmed,REP,IN,0.000000000000374902,,40FF3A856C19D2B7775E1C31F4C086574EE7005D9936A09F65F9C2826384B865,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-18T02:57:56.779Z,Confirmed,REP,OUT,0.0000000000033707,,24E4A1566624DDA1C115ADFA0073D19759DED619EA93FC1FA991ED4BED026C5A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T23:15:29.977Z,Confirmed,REP,IN,0.000000000003998275,,E35D1F59B28E5EB7D19711207F831DE4BF459362EAC9EA539C0E6ABB67329838,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T21:00:55.780Z,Confirmed,REP,IN,0.000000000000038598,,915B1A8D1B04F747029CD285BA7BBCAEAFAF78C7B31D5675D669DC89C95420B5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T15:23:07.080Z,Confirmed,REP,IN,0.000000000000794426,,0577B58F8216117CA33E3AE295FD29B1BD622A0902D9BA7C24759A53115BC9DD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T13:16:44.462Z,Confirmed,REP,IN,0.000000000002361789,,D595F79B5FFE2D2682C0F9AF9CC70828F88F1142E6CD45E07443800A3582F26D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T08:38:25.585Z,Confirmed,REP,IN,0.000000000005425067,,89E39315CBD3CDC8B8620546B111D1362C5AC26CFCE267E1B0152C91D25E8884,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T08:00:23.475Z,Confirmed,REP,IN,0.000000000000065152,,EB2F98E6B2CC5BC207B0FD15EC2883E8CC4620C19B69123609855EF2CAFEE2FC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T04:28:14.151Z,Confirmed,REP,IN,0.000000000000201207,,F51D71AAC9F2ABC10BCFD8B7C3BA462A3A3A8B8E0DAAAED0B01AA50389E000DA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-17T03:52:11.372Z,Confirmed,REP,IN,0.000000000001033137,,A00FDB2E2A5A931D577B8DBFCC65790360C6DCD193B2B0B59308A30652FE135D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T19:44:48.394Z,Confirmed,REP,IN,0.000000000000952244,,33DBF3B63B87B47A3DAD04FBC80E9C852678C5028DF3DBE6AC2A54E06744580A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T17:14:09.915Z,Confirmed,REP,IN,0.000000000000637977,,90F73B4E0D1682B88BECAFDC698CAE223421EA4D4409B69E91A4B7B67F629CD6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T15:45:12.929Z,Confirmed,REP,IN,0.000000000000019846,,1011AE0D9AE4AE9F094018E4423A30E6DDCE9E55DD45B4C0B092E70836C9908C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T12:58:39.651Z,Confirmed,REP,IN,0.000000000004930261,,6B250D46D5A30BB5415636A4C650C970676B95B9A3D062E75197085E15F34A3F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T04:53:55.778Z,Confirmed,REP,IN,0.000000000006190339,,BC85C279B2AA267DDB4D1A873C15432E108F9E4AEDE006973400185691061B02,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T04:51:13.795Z,Confirmed,REP,IN,0.0000000000004083,,62ECEBCC165D336D9FF8FF78A1A8A2257FA78F10D7119605A83F23BB9A09D243,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T03:27:45.868Z,Confirmed,REP,OUT,0.000000000002619663,,E3413B4526DB051232A3E1A412C8512192A1F68DE40531790379B9814553F28F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T00:33:24.186Z,Confirmed,REP,OUT,0.000000000002931603,,4128F11730FCA3EC8EA2E23D5B6C1AD00567610B68AD79A59E1CCDB3B5500AC6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-16T00:32:22.336Z,Confirmed,REP,OUT,0.000000000000122093,,C5B90B74B3D7A6CE1FC11F948DFFC3FC6E8D77354209C026FE27D9F7A020038B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T23:41:49.930Z,Confirmed,REP,IN,0.000000000003158269,,D6B4F0F41290EF422682239D6F61B16B1302E9B697689F3B4867E62BBE61AFC5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T22:41:02.881Z,Confirmed,REP,IN,0.000000000000122229,,9E2DE8E2AEEDE3410046829789A91F250AEA9165C9DA1EBE126D1C5A3313A3B4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T21:40:46.011Z,Confirmed,REP,IN,0.000000000004643781,,C7852B9550A657BA86964B239AA6869C535B540DDDA1A1387BD6A2560B21A9D0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T18:03:16.618Z,Confirmed,REP,IN,0.000000000001331526,,A5BE4B4209DC0499AA474823A4D8767C1D221C418769F337391A5D69FDAABAAC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T17:23:15.263Z,Confirmed,REP,OUT,0.000000000002245719,,C57B11A9DDC2ED84B57A53FA8FC876743397A156194BE18AAA4BAAF1FCD93859,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T16:39:58.269Z,Confirmed,REP,IN,0.000000000000350401,,F54923881D203CBF72FDF7527DC6D6F0025D80B8464420840925B8D2E25D6C9E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T02:23:10.385Z,Confirmed,REP,IN,0.000000000000181497,,6DE4872FE03D42DA771E5D43831A5B96B461C2A177B3B059EC11C627733E3F33,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T00:29:37.862Z,Confirmed,REP,OUT,0.00000000000059185,,157BDDE5A13785BDC1B5F008E554EFF07381EAEDBD780A73AF0B918A0BC943AA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-15T00:09:56.677Z,Confirmed,REP,IN,0.000000000004257654,,4482B059D191B233B0D25CE480A5E487C6F87C1E6E6EC4B0D077819CC932B068,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T15:26:40.008Z,Confirmed,AOA,IN,0.000000000000095676,,DBE92D1120D786AB70BA681EAB629464A270D543FFE51F193DC1801B961B9BDD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T13:13:15.772Z,Confirmed,AOA,IN,0.000000000000689305,,C8658D2098EF6DF69EC8C7F1A530009EBFBB6E5ECE7145AC781733D3DEB7AC3F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T22:44:37.748Z,Confirmed,AOA,IN,0.00000000000098263,,A88844E4E75D3038BDC5EB4D9766509E652E2FBD3623BC634A29314CF4D5D58B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T21:27:48.671Z,Confirmed,AOA,IN,0.000000000005297773,,FA6FC0C0420095F4F61D5AFE8C17FBCE9754969DC083B07DC07D374CC908DC8A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T20:19:37.878Z,Confirmed,AOA,IN,0.000000000000082536,,BE16311E9076592A950C5788CF1F09587D0413EAE295F06073E757D48E5E4F99,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T19:54:16.631Z,Confirmed,AOA,OUT,0.000000000000195869,,B7943F556ABE5E1DF93F8082601F1D8619C808CC3BFA03E0C98531631A3EA9ED,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T15:17:14.404Z,Confirmed,AOA,IN,0.000000000000309475,,01C98C4FD67C1D8B2D9885A725DBA51C023E7660D6CFD9FED6FC08A7E6985F9E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T15:11:49.482Z,Confirmed,AOA,IN,0.000000000000770473,,B6368866242E1C2777E016DBB88314470F56E79595035C7718AEB79C280A7D33,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T14:45:59.315Z,Confirmed,AOA,IN,0.000000000002127732,,7A64B6DCC53A6E71415337BED581B6533BD58FA20D1DDF7C09E0302AFF20EB57,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T13:16:20.988Z,Confirmed,AOA,IN,0.000000000003719048,,EF8C619C0FEA085972176614E304E562A9520FD57BEF678F04FD4438A61E2317,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T10:42:01.678Z,Confirmed,AOA,OUT,0.000000000000269781,,515510459087C745DAFDAD14B8C82FAA37E77BB2FFBDA0200D7153DEF4A69849,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T08:12:19.787Z,Confirmed,AOA,IN,0.000000000000103751,,A4FA0132422029620425A6ADEA793995370C8A7BA25D345FD66B0C7ADBE6B5BA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T07:04:28.670Z,Confirmed,AOA,IN,0.000000000000569402,,5CA8D94C26CE1B55A4870C0C91A9B649454A739F2498D2C7A80E23DD25DA64B2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T16:59:20.050Z,Confirmed,AOA,IN,0.000000000000457712,,5D08D4D93D8A842238A2582958B2C88833AF84537B48F054E8EB1ECBBE97D780,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T16:59:02.649Z,Confirmed,AOA,IN,0.000000000000449499,,ECAB98E3866E91F2D850388946EAA3D2A472151CC88073193B525DF963D40584,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T16:52:21.333Z,Confirmed,AOA,IN,0.000000000001585704,,EFB161C2307323649C322FDFF8D22CFBEFB2F2DE09F0A2F8BFE521373E140E73,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T15:54:00.748Z,Confirmed,AOA,IN,0.000000000001470044,,0E8D5899EC84F18610D5F0F1BE2D2267D18EE5D8F7425DA0623C35DF44655611,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T15:53:11.433Z,Confirmed,AOA,IN,0.000000000001102807,,4D2C4DB3E1274A5D22F9E91AB3F3FAEFD93816A5B24223A0E4B167AF5CABB77A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T15:51:40.756Z,Confirmed,AOA,OUT,0.000000000000543259,,FB4B682AFDE765A2FC6F8B6DF0000E97A5A73AB38E1339759636898078239AD0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T09:23:31.714Z,Confirmed,AOA,IN,0.000000000001507959,,1B6FC9458EF4597B99DABE0D8B1FC4DE99C88900741D5740590CA41A0C888EF0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T05:24:19.896Z,Confirmed,AOA,OUT,0.000000000002521523,,9B42D6022625CADA09A68599EF3384B485319F2F6A1A2B355638454E4722176C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T04:17:57.871Z,Confirmed,AOA,IN,0.000000000002173448,,5AF967F18162332C8289E017DA87CBE58AB6977BDDE9CFE4003A72F10D99673E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T03:16:22.913Z,Confirmed,AOA,IN,0.000000000000030386,,3021A19001729F34F96A4D2B6E2C00C9E1D642469B7E9C5057DFA77AFDE5544E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T20:09:22.252Z,Confirmed,AOA,IN,0.000000000002657714,,1A52B863B05D98F8C3C165F1667591CB2259B1B6DCCCDEABC97F9CA12E3B9127,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T17:08:27.440Z,Confirmed,AOA,IN,0.000000000000788814,,6CBDDA35BF12304FC8462798674E341495B53BF46EB9B42634063503248456A7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T11:49:36.115Z,Confirmed,AOA,IN,0.000000000000634555,,4E66AB2295E861D095CE5D1D3EE9674E14526574261ECB39D97FDB3DF4401ACF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T07:53:09.347Z,Confirmed,AOA,IN,0.000000000001986202,,9F14EECBCFF62CB110F9E9EF61E9F04729A428BC3BD2DA4EE7F39E5A191D3712,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T02:06:44.316Z,Confirmed,AOA,IN,0.000000000000885174,,7936D24C5967DEA334A30568AE5D9010094D574E7F8D53F14443391A7A320BCD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T06:02:57.541Z,Confirmed,AOA,OUT,0.000000000000036545,,150FFFBD9068F70B9238DF18B793B9AEBAC3E5769E2D3293ADF354EBA876F525,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T04:47:27.163Z,Confirmed,AOA,IN,0.000000000001144417,,1B8D9C31088ED0A6C78B4E30D29DAFC59FA5A320E3FEC3F9582EB4088130D5F1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T23:30:27.637Z,Confirmed,AOA,IN,0.00000000000437961,,D44E0244E858771A1006823EA63D986E934ED620E87FB33D4AB0EF359FBB98ED,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T22:53:21.354Z,Confirmed,AOA,OUT,0.000000000000794426,,E96CE0560D1FFFB9FC607987DC579C9A22003AD8CAA2FF1B1F9DDE7D1C517900,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T16:27:08.829Z,Confirmed,AOA,IN,0.000000000005796274,,B55A50AE5B5C27EED508DDCA96F6775B3754B3289B689D6745FAAB902D990C72,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T04:27:04.736Z,Confirmed,AOA,IN,0.000000000000126336,,AFD2B223875B3D4D3FF0205A3E3C1CD4F93956C4879C0CF28DE70EA3C5E9DA57,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T03:19:26.148Z,Confirmed,AOA,OUT,0.000000000000147962,,3CD9A04E453E5DB9080A1AA89BF0AB29E971A23C849680B28986D35EA3642C92,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T02:05:08.529Z,Confirmed,AOA,IN,0.000000000000778822,,B87EB3BB5FC5132D64EFD9D1F62D7D5D4B53B7EE89F81A852FAAB1A5376AA573,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T21:40:25.700Z,Confirmed,AOA,IN,0.000000000001000424,,FDACE7225C9CE9B75DB2237A4AC8200FCF213265F82C643FC25FDF8F09BB638B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T17:21:33.508Z,Confirmed,AOA,OUT,0.000000000003341408,,C6009908C4D95CC03B898C0C38E36D09C45E95DD8ACC97341CABB360923A6ACA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T17:09:30.492Z,Confirmed,AOA,IN,0.000000000005100945,,9257E28F5A9F4801B698DB0630D29DBCBBD6DC1582177760450CFB7F4750A51B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T15:36:14.825Z,Confirmed,AOA,OUT,0.00000000000025363,,78F0025C1E55B8C88D694CF2C6D93BFDB234EB82504D9577C230551D3D978F3F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T10:21:59.802Z,Confirmed,AOA,OUT,0.000000000003163196,,1E81E200166EDFB340621321BA0CFD8DBBBBFFB4264C36B13D5D6D739860A5EA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T08:22:14.522Z,Confirmed,AOA,OUT,0.000000000000921583,,3892257885DBF7D6B65667756BE956119CC3306E8A6978A708502B9086BFBE3B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T08:02:48.283Z,Confirmed,AOA,OUT,0.000000000000515884,,F5216AF80032C6A24C0572154BF21430684F8161933089A7D79A81EFE3856062,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T07:51:38.010Z,Confirmed,AOA,IN,0.000000000000427052,,BB6A8EA3B683C2F3C0F86F1284B5DC536D7DB3022933F0026C96D644AB0E8A9D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T01:37:41.384Z,Confirmed,AOA,IN,0.000000000000109089,,27D486292DAD9A9D2B3B25C4BAB39B14EE2217F5F6B321230C58E2294A029B2A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T01:03:31.682Z,Confirmed,AOA,IN,0.000000000003401086,,645C9AEA9E12687CF480FA8A939E46CF8FB1599595388F649ABD035D4F58DE4B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T21:38:04.612Z,Confirmed,AOA,OUT,0.000000000000592945,,434F57BA3E2390C705EB29618610844A05A457DD7CC69A8AB04CCE8F10851F73,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T19:47:46.263Z,Confirmed,AOA,OUT,0.000000000003916971,,DB117EC955AF0F8B487264D988580D71FABD5D5FAEF564D980A0D9023BF76FC5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T11:55:11.889Z,Confirmed,AOA,IN,0.000000000001275133,,20F2F0019764D68C1078EEAAEE3C715628575DA067DCD80C182AC0032B2BD150,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T11:32:21.628Z,Confirmed,AOA,IN,0.000000000001509328,,E5DBC2B2DFE1329F42ACA7DD59D53D2F17AE53B0C129318B01ECAD276C72791C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T10:25:31.188Z,Confirmed,AOA,IN,0.000000000000117439,,69093C7D6E74653B9E585C15F96D876C8C18A9735B8C87A1746774D2A7976950,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T04:02:26.640Z,Confirmed,AOA,IN,0.000000000000127978,,287D30FB6608101BB0673D6BA42696AEF8124D8BA81F33BAF2B85194F65BAD4A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T03:41:38.936Z,Confirmed,AOA,IN,0.000000000000055297,,4E89C8923E63DC3B52071BB7B14B9054682535D285F4BF394D296F5B2898C842,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T01:54:55.499Z,Confirmed,AOA,IN,0.000000000004232332,,07C508136050FCBA1E989A7FAFF739A3AEFCEA652A4E56F89D80A402E76B80AA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T01:17:22.932Z,Confirmed,AOA,IN,0.000000000000857936,,6C5D1AFE028815F4D01ABF04BBC5FC42E8DC2C07890BE71F05A8B31AED09E9EA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T00:54:50.253Z,Confirmed,AOA,OUT,0.000000000000940883,,4B48E5137F542EC7AC989DD7421DF2FB900196A44C110E9932A0FF2080D9D9FD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T22:10:17.924Z,Confirmed,AOA,IN,0.00000000000024268,,5B0D66981F0F749E22321F9461AE661A911CF9C735DDB348EE1BC2F5DFF0F744,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T21:46:46.503Z,Confirmed,AOA,IN,0.000000000002310187,,047B5D49726DBAC30AEE8428994C775212DF5223BE118529EFA320970A2D2AF5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T18:01:40.258Z,Confirmed,AOA,IN,0.000000000001363966,,F0AA8319BB25F0CFC09B57715196E45147632747E3F7E2B6CE282FE282D0C555,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T17:47:28.612Z,Confirmed,AOA,IN,0.00000000000020326,,2661CEAFDC0B0AC86BD9C6A4C7EE0CAE2F02F1191F6548C77BCA260A115920EF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T13:35:13.178Z,Confirmed,AOA,OUT,0.000000000000714217,,E1B1954C935D1E48D237EE0E9FFB670023AA22161DF9FFD17A9F4EAB2CC936F0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T04:28:41.361Z,Confirmed,AOA,OUT,0.000000000002224092,,E3D1F149C5671438BFB9A780F1ACE889CF90C3D32D7BA287FF10E8A69A7A75FE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T01:50:46.316Z,Confirmed,AOA,OUT,0.000000000002427626,,44115EF13E4429632D5C387D445C8ECA602A4EFB5CF37568F1FBEABD57A09E8B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T22:17:36.659Z,Confirmed,AOA,IN,0.000000000005035519,,F6F5C0CA3E82BF37DC6D0316CB60AEF4152E981CAC18EDCE7B717DD9CCC54302,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T21:04:25.950Z,Confirmed,AOA,IN,0.000000000006312432,,96D5E3E8BDB1B868EED672C94701EAD54EE45435D5F9BA5BAE3B6784D107152D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T17:34:24.873Z,Confirmed,AOA,IN,0.000000000008106051,,D0C0DB8009F5774602821CA53ED59E35CC5E3D4715977D966849B478B45AA378,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T15:22:03.245Z,Confirmed,AOA,IN,0.000000000000368195,,795A88C9C4AF4FCD2313F3FBE3050BD50EEE40948C3BF45D9273D7E6F8C6FE63,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T10:35:00.317Z,Confirmed,AOA,IN,0.000000000007671197,,A4F362BAE2442E44A64615E31E031910E8F55C122E2CA30B4D8CD576FDF222F6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T08:23:43.636Z,Confirmed,AOA,IN,0.000000000000234741,,2E0C306F665A8AC944210FC9F5DB19F54E823B4573343F79E81CC2C1B28E6B5D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T08:21:30.724Z,Confirmed,AOA,IN,0.000000000000676576,,DF5A9EF16732BD37F49F702184002FB86FA0477CBF9E6293FF8C5A345F24E6AE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T08:20:28.496Z,Confirmed,AOA,IN,0.000000000000134411,,55FF84DBE74C4C4E1FF503976209FE858D5E1E006220C4BCB6217E241BE99D7C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T06:15:56.146Z,Confirmed,AOA,OUT,0.00000000000023173,,AB3294BECFF8A510DC356EE7190F9E40EA63E51A8CEBD10BC95A2A71C4461AEC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T05:32:23.418Z,Confirmed,AOA,IN,0.000000000000362309,,4DF9D56589EC2FBDB5B9967D51F172FCCFA87A1A51C2748DCBC0865068DAB2D3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T22:31:13.450Z,Confirmed,AOA,OUT,0.000000000000342326,,E2396FFD7C92C19C2DE8EC7CDBA1CC973023A52C31AC8E00039035617AB9DB05,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T16:08:00.774Z,Confirmed,AOA,IN,0.000000000000759112,,65096137BFFC3BE104734976E86A755CB6977999C59B455521909E30A7D11076,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T12:17:16.071Z,Confirmed,AOA,IN,0.000000000000912276,,D43BE253EA314FBBB9C37BCA1CD5DD58F1B4B4BC1F25664193177A578DC5899D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T12:14:37.659Z,Confirmed,AOA,IN,0.000000000002356725,,73CE3FE77B7F9D89A38851F449FD42154A5780640EA2C3A154EEA180EC245400,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T11:07:15.588Z,Confirmed,AOA,OUT,0.000000000001409956,,9872ADC8CEB43BB73210F798474708A40327E1D3FC7692D8CCEC4EC75226102F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T07:38:15.310Z,Confirmed,AOA,IN,0.000000000005807087,,A61D1A1898E8BE5BB3FF8C8807C469EA725755AC469FCC48DA272D5380837F46,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T02:58:04.161Z,Confirmed,AOA,OUT,0.000000000001844673,,035C16C2E58A070237ECD6781196FE2D74B4955928EC8B82613D0703A20B4370,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T01:41:07.430Z,Confirmed,AOA,IN,0.00000000000016644,,DD5C086B884B6FE1A6149AF4C371DB53E201F29D72BBD0002C5434E0B2B64EB7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:11:45.260Z,Confirmed,AOA,OUT,0.000000000000716133,,E7FC15A79BAB7AF699F506D087B9384FD095A7BFFBF6116289702DB55354BCA9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T13:55:07.663Z,Confirmed,AOA,IN,0.000000000005756717,,DD9C10DCD6C9EE639F443505350C8848D9984B02BC749D2121C9AA8BC2B1D9E9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T05:47:51.391Z,Confirmed,AOA,IN,0.000000000001769254,,8D1AE4D7F3A5E388CF661D7D9D8B6B8A0664B93899F7CE2992BB336A6CD4FBE2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T01:29:55.575Z,Confirmed,AOA,IN,0.000000000002243939,,9DD9AE9902137F78AFD681014E3C550790E43003A788D8C38A5448A138FBE86C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T00:33:49.365Z,Confirmed,AOA,IN,0.0000000000000438,,F31A029F7022CF78F98B44753CCA28A6EE416D82293D4A732539785247B67BFF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T00:32:55.537Z,Confirmed,AOA,IN,0.000000000005831725,,CB196BA92D3ACBC667C1B4B0D293FE380CCC877522A877BF128A6913D2FE03BD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T00:19:02.557Z,Confirmed,AOA,OUT,0.000000000000515473,,AEE2C46DB6215DEA5A7955047B30442DF48CF795018B379E399A6FE6325E15F4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T07:59:31.229Z,Confirmed,AOA,OUT,0.000000000000127294,,E346EB32CA46639366F03093EA4BE41034AB761E5A77A2D52A1D1322A9112108,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T05:52:34.231Z,Confirmed,AOA,OUT,0.00000000000327913,,735F55DE14C4A83F7F1D7C5809E9D404CBC4E24B85FFEF3151A0DABA3AAE5329,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T00:38:46.559Z,Confirmed,AOA,OUT,0.000000000001282114,,7E423EB617E8A0105E1D415D4C420C9C141311D8F446398B14E4DD278B76B6F7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T00:05:15.623Z,Confirmed,AOA,IN,0.000000000000706004,,CDD9C6E97703C67E115F3DA37A5DB0E018B632F97899B913411ED47D4BD1D8E6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T23:51:59.158Z,Confirmed,AOA,OUT,0.00000000000244501,,B6D7470259B4BCB291C6FC628E4258865E77CFCAEF1504F460871383D9D8FA2C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T12:02:52.668Z,Confirmed,AOA,IN,0.000000000001306067,,EA52FC92D7D0B9694AD9B98E88FCCAAC9401F0E022677D3511E794A5AB36B00D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T22:46:26.260Z,Confirmed,AOA,IN,0.000000000000571455,,71AFD9BFBD39FEA4ADF30C9DDC8991267FA128BED1EAE15EA29D1A0BDC963737,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T19:24:15.960Z,Confirmed,AOA,IN,0.000000000001683297,,34D92F0DEB371A2333334AE5C1EB2F3C8A7737B59D840D807CDF8EF4B2CFC809,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T19:02:35.639Z,Confirmed,AOA,OUT,0.000000000001870953,,67171582E53A80DC0094C145D8DC4C40E67713CC9B28D2EB51D4F3E86075F953,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T16:18:22.469Z,Confirmed,AOA,IN,0.000000000003075048,,0EF8CAD2253A4FDE59B6831DCB1C5C877DB0FDE43DA7E824468B31222E2A6197,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T06:42:03.668Z,Confirmed,AOA,IN,0.000000000008112073,,0A8E8AF0B6F82CD89AC99349439DFA6EA3ADF09D16F5917E71E568E4BFCEB322,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T06:23:43.823Z,Confirmed,AOA,OUT,0.000000000004936284,,A3FB9787AE86B658917852895CFEAD3B928DE72ADA00B782CE937DC554BCA51D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T05:22:18.507Z,Confirmed,AOA,IN,0.000000000001576397,,0778AA8C713292F3DD60E51A6F77E3650005F052C5075768CDD22520C5A7D017,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T19:21:41.380Z,Confirmed,AOA,IN,0.000000000000762671,,24B0E752E370820B2413F092A1BFB84B70CA454241A5DC80F9CDFFAE56BBB0EE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T12:55:25.433Z,Confirmed,AOA,OUT,0.000000000001017533,,7485215EE87E4BFC757DC8CFCFA35066DE210D9D2F4C90D728C7D4F6D4FD89D6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T12:35:39.550Z,Confirmed,AOA,IN,0.00000000000367648,,DF318C9ED6470551358DE2134C9D91DC48FBC57D926D5B2EAFBD0CC647924121,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T17:55:00.769Z,Confirmed,AOA,IN,0.000000000000585554,,531561B59D7C07DA50481E046BE54ACF1269B9657CEDF18A4168945E3CCBE3B4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T15:28:53.018Z,Confirmed,AOA,OUT,0.000000000002546298,,12BFC8D80ECE9DDB853FD7F84FF64FC647AFD2102085C8224333DFBDC5D739CE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T12:36:51.642Z,Confirmed,AOA,IN,0.000000000000611149,,2C59A93B91FFF031AC26BFC2245E3D978997BEE926EB285F7D3B35F148D5997B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T08:44:30.189Z,Confirmed,AOA,OUT,0.000000000004839376,,02BDE9515C95B25F5F11AFB2D509BB6FB7E59C6B037A44A16E39AE555AF397B6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T19:54:11.491Z,Confirmed,AOA,IN,0.00000000000051123,,131F3A23F7A7CA43AC5CE08C57AB03D97C4342D6A8F63D7674EFDB15DBA7DAAB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T18:53:48.703Z,Confirmed,AOA,IN,0.000000000000242543,,4024E46EA769572766F9853C2AA1DA3B9BD460F17149C58DAF06EEA88E825773,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T09:07:29.309Z,Confirmed,AOA,IN,0.00000000000269823,,66766BCD3481635E11C16389E44A6D552C4741F1EB7FD8A8ABD047A3F00612EC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-25T03:19:52.569Z,Confirmed,AOA,IN,0.000000000002721225,,B24032F23307F6D8BE7D24D65085588A5F94BC2757B59BE3DD9BCFB5911371B2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T23:58:10.922Z,Confirmed,AOA,IN,0.000000000001172613,,A204AF2C8FF79C3DE9A997BAFCE97C8B51F4BAAF3846E92CD47169176641654E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-24T07:56:26.405Z,Confirmed,AOA,IN,0.000000000000018341,,AE3737E656E49ABA761CE2AD50404B5C338CEC3D99C5BFEC1CB14345CDACCC86,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T14:37:31.679Z,Confirmed,BNT,OUT,0.000000000005700735,,EDDAE3F96C9C26D419023077D7B747C6D7697472748D64275F1B7DF0375E3678,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T08:01:40.623Z,Confirmed,BNT,IN,0.000000000002939405,,5E9DACFA915A76C11221E8C3388A05F893EF00AF31F150B091167DCE32062D11,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T03:30:19.453Z,Confirmed,BNT,IN,0.000000000000004516,,8279CBF59E0945D115F8D40E74981ACC53270589A1BCB2504F7C3BAA0952C00F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T01:44:59.829Z,Confirmed,BNT,OUT,0.00000000000030578,,5F6B1CBDF6525397202A8A1A5E6AEE7C844690CDB23290D9251A7610647ABE50,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T01:19:50.729Z,Confirmed,BNT,OUT,0.000000000001829343,,E5BCB9D784D8647211C05E06A7D280E623AA764B9FDAA1ED75743CEBE117AD6B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T15:48:50.340Z,Confirmed,BNT,IN,0.000000000000951422,,FA313109A04F7C23093C8B5DAFD1F35E556E486743DA1D659DA601A52A7DD832,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T15:18:45.958Z,Confirmed,BNT,IN,0.000000000000373396,,B7169DC3E621F83C7207CE26443F8FC1E3A603A8CF5F741F6668E5851DC3AE9B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T09:41:43.197Z,Confirmed,BNT,IN,0.000000000001533691,,81544259C5340021C195D0BDAEE72EAD24266CB04274442E0ADF143C676E0A86,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T08:47:41.336Z,Confirmed,BNT,IN,0.000000000002379857,,34EE04D7CAD04B137AE0B6E88EBD490F5F7F633C628E72FC50141C62E8F5B02D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T21:01:59.193Z,Confirmed,BNT,IN,0.000000000000107994,,DBA7CADFDE1E9119A2B91EB7D94A88C2764E000E158A95864014368EF85BB969,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T17:05:21.382Z,Confirmed,BNT,IN,0.000000000000943347,,A8C70D9873C01A2A6FA89EE543F79B650A147B3774330E6239413EEDE5160D35,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T14:42:26.633Z,Confirmed,BNT,OUT,0.000000000011044908,,1AE9772A358B92C0AE7BD95FA69CDAEA90F656E6DC6BC9C83C4E4F4E627C8168,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T14:17:58.782Z,Confirmed,BNT,IN,0.000000000005234399,,D7AB2642CD4BA1AC140E82CE8EBF516A4ABE17577C530968F3EBA3E0C0B6E04F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T12:34:14.852Z,Confirmed,BNT,IN,0.000000000000228993,,5715B876CBFF707EF030A70C067D9E3F177EF676FD7A717EACFDD887BEEBA043,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T12:13:42.703Z,Confirmed,BNT,OUT,0.000000000002113907,,82AE551823CF76E92DB58C50FBF30739DD47B50A4F09CC2CFB13803D87B7D264,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T11:59:01.272Z,Confirmed,BNT,IN,0.000000000000019846,,5CB6821632992CF28238E836080352BC2C1FE26BCB76B66B4DBBA778E5EABA61,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T11:55:00.644Z,Confirmed,BNT,IN,0.000000000002659083,,631058B55B72988B51EC8BA89C950B1296CD320353CEEDEAC499625F8C4D49BB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T10:37:17.540Z,Confirmed,BNT,IN,0.000000000000042705,,8FB2BF331858B01B9D7B4909E08D02675B88808DCC4210C571DCC0A57D1C4A7D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T09:55:05.830Z,Confirmed,BNT,IN,0.000000000006073721,,5A1D2D714636BC70F659C9E7AEEC2CD1E8BC8F6C9DE83580375FB6A16D8F2B5A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T07:30:27.339Z,Confirmed,BNT,IN,0.000000000008049658,,B7F484A5C0910C7BB1FDCBE272841DC69C286B0E7192CAF68036C2D4755A8FD8,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T01:49:58.846Z,Confirmed,BNT,IN,0.000000000001118411,,D5D91BF701AEC6BD947387F1773233E17ADA53003AFF2CB852C7BFB13AA6926D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T14:35:14.995Z,Confirmed,BNT,IN,0.000000000007365553,,0E6BE2FD09594A89CF9E29557AFF21108F61DCFD5E7144609F1CE1D84A93D390,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T10:50:32.629Z,Confirmed,BNT,IN,0.000000000000047358,,7A0F9127C3186AB710CFBBD13B1BC7E00F9E9059BD913D7DC69B3D41DBF053F9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T09:40:53.375Z,Confirmed,BNT,IN,0.00000000001156969,,4B647D41AFA71C65A946B5E25AF527DC0288E16B2021408AA025349DC05E6634,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T08:41:57.384Z,Confirmed,BNT,IN,0.00000000000190394,,5E1F31C2856B43276D349EE655CAD3B5C25E7CB768328D6C8FC5B1B6BD29BE69,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T01:22:11.008Z,Confirmed,BNT,IN,0.000000000005168973,,35111977D4310B44F73A8A2DE2DC03CD9975EA7BBE2294B09E4438CB79BC608C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T07:28:24.362Z,Confirmed,BNT,IN,0.000000000000021763,,6C55FBC495A18155563586675B26FA32788B06E3A4820D05C731A49173674BDB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T02:00:40.151Z,Confirmed,BNT,IN,0.000000000000465651,,B82BF74D3D68FD6DD8D526568D0DE631074DC4D849743B7CB6BB6BB5C1CE46AD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T22:53:22.191Z,Confirmed,BNT,IN,0.000000000000047495,,ACE145631B6B33D5DA3E32894007DA0A95DA9E40245E4C6C16A6A1701A929E23,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T22:48:36.354Z,Confirmed,BNT,OUT,0.00000000000070532,,20B4C36172D3FD721CBD14C10E7B6F4656C72D7DF1495BA9B38E206887C13C2E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T22:46:28.769Z,Confirmed,BNT,IN,0.000000000000324121,,F4EBB0444130696468743288EB2B78C00471A43EB5D87A3A9F2418D4B944C153,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T20:34:43.225Z,Confirmed,BNT,IN,0.000000000002809236,,1E98DD3104A94C82930F2224ED48F5F9F76B3B911691F5570E23FE42929D6D4F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T13:39:44.998Z,Confirmed,BNT,OUT,0.000000000000711342,,2BBFBF5313E69EA2C18BD2B17F7AA3850B0ECFE9F360AF9B78A485D530B3FF79,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T10:19:36.130Z,Confirmed,BNT,OUT,0.00000000000020983,,ED569A555BEDAB1A60CF64DBBD32112BB28FA93985E7733C32058F71EC171C33,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T10:19:25.204Z,Confirmed,BNT,IN,0.000000000009203109,,A6167E489533D79079AC4BA66B60204A9EDE2AC172E32392400FA45F63446805,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T09:40:56.925Z,Confirmed,BNT,IN,0.000000000000551882,,B5E16C8EA4CDC3658B0CFA8578341CF3AC6482EBCB406F08C2DB3BD5D1C5A0C7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T09:08:50.707Z,Confirmed,BNT,OUT,0.00000000000164593,,23C946C3DBC3355E07639F14BC0553C500B075CD6C30257A61B4A65B61469643,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T08:40:40.962Z,Confirmed,BNT,IN,0.000000000000304959,,FBA642D7BECA8CD29BCA132DF1B9279EFF7231BF446D203E5C96B34A20C835C6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T05:59:02.202Z,Confirmed,BNT,IN,0.000000000000647421,,EA4C699C1A1EA121167F4CB26466BEB31A1C209412AF3463B7F30A1B285560A7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T23:17:10.879Z,Confirmed,BNT,OUT,0.000000000009720362,,1E3D5C24759B6745CD166B2A19463FDF7EBAE395F489336867669533F8DCC789,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T22:06:20.779Z,Confirmed,BNT,IN,0.000000000004995551,,BBA80DFC827C692402A579260916611DED4F37C3A6F358C555F0C694F8570212,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T20:48:40.326Z,Confirmed,BNT,IN,0.000000000002083658,,0DDE4A20A7440540967A5BA66685B678A5ADDDE4AC272B7B1E2E7233206FEBBA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T14:02:36.384Z,Confirmed,BNT,IN,0.000000000000771841,,9B34A3B6566909F428A08062E62B380B9D404FF0AD18F3F8A9666CC7B67FD5A1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T13:43:56.987Z,Confirmed,BNT,IN,0.000000000000140571,,D47EC8429CEAAD352962787BECF67E184373365C260F877DB4932A584A607B9F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T03:59:16.228Z,Confirmed,BNT,IN,0.000000000000110048,,A782B4A3BD1C00DB2EEECC97EEE8CF72DC9C59FB5EC1FEAB75E703C70F219EED,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T00:32:04.839Z,Confirmed,BNT,IN,0.000000000001859319,,8E9459B1F9AACA75BDC7B89AF3018C68A75BBCFB7D01B9AADAA5B87F57F135EC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T00:17:48.213Z,Confirmed,BNT,IN,0.000000000001825921,,5AB0E69532B02AF9751BCF7D3E93F3CDD64AB41FD94AD031656E6FA95E945233,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T00:12:30.439Z,Confirmed,BNT,OUT,0.0000000000001533,,D1D6BE60F33A908DB1D18A71A02D44484B79F1C1A37C1EA0C2D4BA54E9D23B14,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T17:34:10.603Z,Confirmed,BNT,IN,0.000000000003372479,,0F92DB46E5EA3EE28480061C1FDCB45BA9E01E13239145B45765A2907AD5D411,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T16:25:02.853Z,Confirmed,BNT,OUT,0.000000000001514118,,962B6AF0FB1431940BFC139FC8C54BB929F439CE010AF3A8468939C84664EA49,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T14:23:10.549Z,Confirmed,BNT,OUT,0.000000000000618678,,AD5E33608FEAB759AAD8BAFF47CF2371FA38A889D80BA0DDC5D0AE23820805D5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T09:18:43.234Z,Confirmed,BNT,OUT,0.000000000002668938,,6CBCC346650B9A8C1DE0579841AD90A3ECDBB1012E02BFDCF8B24808992D051F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T04:38:41.028Z,Confirmed,BNT,IN,0.000000000003152109,,DE34E7B9AB2B15D09D6C47D42CF122627640C6DE44077C0C7D1AC5EC0F3D50B2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T13:44:31.454Z,Confirmed,BNT,IN,0.000000000001529859,,AAA779050DD7AA092D2A547610022FC1B6A51643BEEF82583662E93C4B12221B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T04:49:31.453Z,Confirmed,BNT,IN,0.000000000002987311,,1EF1CE474D880413F55CA68F2A64DFA7CF43795935D722392C3EBAB0C88D887B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T00:24:22.744Z,Confirmed,BNT,IN,0.000000000001574207,,C448EC4BA5ABFCE4CA34ACA5E13CBB058B2D47EF307ADFED8DE4937EB461AFEA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T00:12:56.290Z,Confirmed,BNT,IN,0.000000000001998247,,29BB8011DB3233D6BD14F25829D220301EA8BE90B08F2A692FA2B45C2A38EA3A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T22:01:56.476Z,Confirmed,BNT,IN,0.000000000001489891,,CAAE01FFC5B20FDDF405CE7FE751E1D64C97263D41566F6381E67961854777F2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T14:42:09.432Z,Confirmed,BNT,IN,0.00000000000163977,,DE697748E091C456F5FAD2285FA18CC3EE0DA4B4B3076321E555D55936AB9D21,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T14:37:33.282Z,Confirmed,BNT,IN,0.000000000002123762,,3A2D3720D7B3A9DE7BA6AC52B9E05B5E47294D8A8A4708B2F4F3A48CB31E6B10,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T13:57:22.193Z,Confirmed,BNT,IN,0.000000000001326735,,0632924904E908100906A3AA81DC9E603FD3988702C5749D20293DC2757D35C9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T01:59:13.481Z,Confirmed,BNT,IN,0.000000000000172189,,C72642A36356E6C87288B1914F782237D68A7C71A2529371350B2027F4667459,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T23:00:34.401Z,Confirmed,BNT,IN,0.000000000003509492,,339674DAAAAE2B6491C891FC2A8D9347F3ACA99EFA85187721DAC36FD0D136CA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T15:20:08.474Z,Confirmed,BNT,IN,0.000000000000140297,,4E2CF85086D3190678A835E62A36C5E2C7958E157755F3072C9D095EF10A9964,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T10:29:41.310Z,Confirmed,BNT,IN,0.000000000002129511,,FCD7121CCBEEAA49F040A133A9484B4267F778D226AA0C41AF1143031A493612,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T02:51:20.300Z,Confirmed,BNT,IN,0.00000000000165469,,77A21E718E68ABD3BA932E24671110694F0A059483ADB6E55668FDA71D90A347,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T21:14:17.695Z,Confirmed,BNT,OUT,0.000000000000281416,,54D9CB3E84AC3CCCBA88BA4EA743930B2B777AAD23A3597F36F7A057C23853AF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T21:13:49.587Z,Confirmed,BNT,IN,0.000000000004906308,,3C07BBFD3E49AFAC9A62AB1C0D7080806CE1B50BB38A6832394F4E3702397F97,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T15:40:49.672Z,Confirmed,BNT,IN,0.00000000000563038,,AC088C619F504C7D7F2E2A604F6157EE0A7855458C2962DC4559F6682DAD0775,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:30:49.991Z,Confirmed,BNT,IN,0.000000000000609507,,F653EE26AD4BA1CD4892611ADCCF1BD3F0C74281FBFAAD69206040EA17BB7637,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T13:34:29.673Z,Confirmed,BNT,IN,0.000000000001828659,,92E944984CBB54EB840B3D70E5A1029046A23EA4575ED9FC7BF4BDA426934A3E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T12:34:41.047Z,Confirmed,BNT,IN,0.000000000000516021,,C9B971F7A6457C0B26D8C03840E0D3A362A7F80913C801F80B0911F1FE75463D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T12:26:36.315Z,Confirmed,BNT,IN,0.000000000001101712,,971E9D1CC098A70C6605980221F00B8057587132F305C3EB761E932D03A3ABF3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T09:07:14.135Z,Confirmed,BNT,IN,0.000000000000118534,,FE4C6AF82E4DB7FB0EBF2A7E51B7136DA6D31830936B2C1E7BB0C600A8DEE85D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T04:51:18.727Z,Confirmed,BNT,IN,0.000000000000042978,,92515BAF2B6682E6E10B07F643C5E7508165144BB494D4068CB49B9EA6297E45,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T03:35:28.730Z,Confirmed,BNT,OUT,0.000000000001294296,,CC5DE021CE3C3CA6C47B8ED08BE34C897C2934315F2B6E9A5834B8A14D349FBE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T02:10:27.902Z,Confirmed,BNT,OUT,0.00000000000071408,,F6AAFEBB716A7B283A35261BB6078E53FC6B7A8E4AE9212C9B93D9B18C2E598D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T01:49:51.551Z,Confirmed,BNT,IN,0.000000000002190968,,9662B9625FE01919B0EC5147FFBE8948A49DE7FEA8CFCF16ABDF8AE77FFF076B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T01:21:59.491Z,Confirmed,BNT,IN,0.000000000000968669,,FA692F158ABE1E7C7444BA7CAB6EFFF963A7414E1CE21DE5864FA9453835312D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T21:46:25.339Z,Confirmed,BNT,IN,0.00000000000012661,,322EE6CE48F5081A44AE7C9571C62C593C959D234652011DD71A2B8452F6087B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T21:32:40.062Z,Confirmed,BNT,OUT,0.000000000001215729,,843D69F1F4F54F24CB8C74A6A42BE5CEC06AC2825775A05E90E4187A5A56CAC7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T20:05:28.669Z,Confirmed,BNT,IN,0.000000000000453605,,701BBDF1C4663460EF883B1D15F70D871D3D1558FFB4A1AB9783A6F61B89C93F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T19:44:29.769Z,Confirmed,BNT,OUT,0.000000000000357793,,B7966ABFB94A8BD0D911CDA8BB3781C5551DDAE02FEBA0D38B6FEC4D7B6BD159,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T14:55:49.177Z,Confirmed,BNT,IN,0.00000000000126432,,FDEBF513444632293853223FEA18878DDC96D2819259041DEB38947CE2E59E4E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T14:06:16.668Z,Confirmed,BNT,IN,0.000000000000163977,,2C17C9C66921CB3A28CDFAAAAC45B2CD8FB912441AB9F8EB06A98422CD5F9C94,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T13:33:41.431Z,Confirmed,BNT,IN,0.000000000002614051,,042F36BE27DA5A5CE01E9EAFDF74BC2D9C4866A626E4EF9FBAF0497D3B913324,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T10:20:02.824Z,Confirmed,BNT,OUT,0.000000000000006433,,6F9AFEDAD1565ED88C680F59918500A0B68D9DB2B5D61FB373A9FCC8A9DB87D4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T02:07:18.490Z,Confirmed,BNT,IN,0.000000000001356848,,B6D7B762E596A42A3E44D9E826A4F2226094EEF9B819408A2C0B0CAC71CD97DE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T12:28:05.790Z,Confirmed,BNT,IN,0.000000000001920228,,8B2D510C019C8198C5071D8038E78B68F0D6BB43BA0E2EE6D61082437C049A5C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T08:07:02.785Z,Confirmed,BNT,IN,0.000000000005136807,,D85E9513CACBAD0E8439D79C8124DDE01B000991DD6E74CC31474EDF0B725A7D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T08:04:59.637Z,Confirmed,BNT,IN,0.000000000000271698,,EA604E590750BEAC7C772B909A9A795CD01A5E3089CF3E0320B9C88809B4213F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T07:58:30.319Z,Confirmed,BNT,IN,0.00000000000013578,,B23EC23FCC2BEEFA9C3BA03DFD449984A488CA10052F8368920C06424A921F35,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T03:41:49.007Z,Confirmed,BNT,IN,0.000000000000239806,,9636E87666A809D436DD4C128720971D93046A4FBD9E7FDD7EB189C743DE5C76,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T20:26:08.184Z,Confirmed,BNT,OUT,0.000000000000292777,,A24CB57A048505D2AEC1E365A74F2D7B85CCC73F1F91700793BA24CEC95066E9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T15:44:10.391Z,Confirmed,BNT,IN,0.000000000000330965,,AA0DBA26E65953174A2FD3690210551DEBB4FF5A8AFDCCBC939E9D27FABB1A1E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T15:33:53.822Z,Confirmed,BNT,OUT,0.000000000001033548,,E24C288B568EDD199F38A6051FC6615DB7BBE6131897AC378AA957461A0FF89F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T15:13:04.908Z,Confirmed,BNT,OUT,0.000000000000501923,,B02DEA498C81D1D99BDF7E2D1D6BDF8B7236C38C65691327F885925557B148D2,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T13:38:06.999Z,Confirmed,BNT,IN,0.000000000002052998,,204FA9B56412ED007A3A70D159D59B691504D194D1FA2E5B4EC67DB6A549B975,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T12:30:41.302Z,Confirmed,BNT,IN,0.000000000006207448,,E4B7D9D095476F2AA4939A04C65529A50422D33B50A84450AF5378F8DEF58321,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T12:14:40.849Z,Confirmed,BNT,IN,0.000000000010709974,,18C92F30AA4C6267A02E1235D018E2AB5088FE38187F7F64DCB204A4B5A0E42F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T04:56:30.107Z,Confirmed,BNT,OUT,0.000000000000013003,,D2D6036C151F477A7F7ABA44315149C5608C62C671F9E84459AE99D7B8BE4C6B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T04:54:45.411Z,Confirmed,BNT,IN,0.000000000000869434,,F6729189BD601972FCA6F35BF3836A556ACF339B5E520BD74CC30358F112D94B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T04:16:57.582Z,Confirmed,BNT,OUT,0.000000000000669185,,4392185E19641DC3F7191AF4B6B7CD187FE196DBFABA7CB8C3B14F0ED6DF5CB9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T04:14:47.157Z,Confirmed,BNT,OUT,0.000000000006053874,,B9A8D0893B501A1F3897400DDBF5CF76AE4CC0657D654122E0DD60FF0224830C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T03:35:44.119Z,Confirmed,BNT,IN,0.000000000001053805,,D70369B18EF909FE2E6E89DE09BE7688144AC6F838A241C7BC5A161B2F95584F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T02:07:30.122Z,Confirmed,BNT,IN,0.000000000000963057,,2FDF622385D2215D66F50D50821C0E9BAC06D10D8DC53C6651D50CF42098AB7B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T00:42:31.955Z,Confirmed,BNT,OUT,0.000000000000150152,,79F32C81E1425EDA711148AF273A0C75B26446D03D8635B4F4CDB79ABB13F6AB,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T00:18:06.280Z,Confirmed,BNT,IN,0.000000000000094581,,AF8CFE50CF12F90F76E0B8E150B1CECFEFD1AD5D8097642A00B8EA16E4846B42,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T23:47:14.165Z,Confirmed,BNT,IN,0.000000000002131017,,95C619401352B39EDBCD885B3885531731ACDD12F7EE448073E82AA4B0978CD1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T11:19:50.395Z,Confirmed,BNT,IN,0.000000000006777125,,81B655F9306578CB54D4A1353FE366F2927916774A6AFA0C27E2F520CD51C6A7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T06:15:17.773Z,Confirmed,BNT,OUT,0.00000000000284715,,26D0DD8E445BAB0146B859E9D4751BAE8F30F348D4E6E38FAAEDD35E45F4DF1F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T06:15:17.622Z,Confirmed,BNT,IN,0.000000000001023556,,8430211324F57B62D6559F42E85AC7423846EE211C9F83CA29BCEE53B712D5DC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T18:35:59.860Z,Confirmed,BNT,IN,0.000000000000496858,,7906EC0141CB585DFE52FE90FCEE9C225E856FDA2EFE7DA3AAE0ED59876273E6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T15:25:07.154Z,Confirmed,BNT,OUT,0.000000000000224339,,BFAD95766AD6C335A8E3AF0F2FB2AE0945C5B2E566F154CB1B2D909535833E75,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T09:01:57.880Z,Confirmed,BNT,IN,0.00000000000119903,,FF3EE749C865B33F08083E6EC01192B3534E843177AB2F8DC51FEE851D3DDC53,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T08:22:58.965Z,Confirmed,BNT,IN,0.000000000002873567,,A3C41D9DBCD9C698CA09AF98D82E976D752CCD4424BF000463B47C621E368E79,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T07:42:47.567Z,Confirmed,BNT,IN,0.000000000001280061,,13A62C3C90C9FE2AB584B2A5F94FD2A553503F06656498624466D273D7D4E0F5,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T14:55:13.582Z,Confirmed,BAT,OUT,0.000000000000009855,,D6B73308609A06B93FFC11600ED77B416E4CCAD60A6B1ACE07B88C592A1BF471,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T04:26:58.932Z,Confirmed,BAT,IN,0.000000000002856458,,2D0A30FA13C79DD2ECCFDDD6B6FA0826713DA3C718739FF293E7FF992DEF0A85,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T02:43:13.954Z,Confirmed,BAT,IN,0.000000000000297157,,5468182424ED3DCDB121A6F0FC48F9C2DB219FD1CAA3E8E8B83D150E1AF8AEC3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-14T02:28:26.025Z,Confirmed,BAT,IN,0.00000000000268112,,FEEA988885C79CD2F4ADF3BD0F3052C250C0BE8857838082E8F2F2507A09A801,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T23:00:41.794Z,Confirmed,BAT,IN,0.000000000000841237,,84224D0B92839FE74E6DFEB051145027711B8F826E3136D57AB9E3248262302D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T15:17:40.360Z,Confirmed,BAT,IN,0.000000000000083631,,E93719D8C5186962E78B8CF0AE476AA6704BC9A2D2715DEAC395E4EB5683A447,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T06:44:25.850Z,Confirmed,BAT,OUT,0.000000000000835215,,C7E9B4CF334706032568E7A972B7C6CB68B0DE7E67205BFB1427E2A88D6F69A7,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T06:04:38.362Z,Confirmed,BAT,IN,0.000000000000594587,,F39BA47D22839896669584AB5EF7508F9E11BE3C2A197F1537620AB2650114FD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T17:58:12.247Z,Confirmed,BAT,IN,0.00000000000091515,,C0F3FBDD67357EFDA3FC52F6A2A8C681D037922409307DF866ACC919692391DE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T12:43:25.246Z,Confirmed,BAT,IN,0.000000000000469346,,A1E8A1EE1B523E592016CCF1D031E3EC5AF7A63F664849CD528E11CB47AA9652,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T12:22:22.258Z,Confirmed,BAT,IN,0.000000000000660835,,5107EFF356571C4A05A936617BC71AC8B3AF1AB7254688BCE1A051E1018CA4F1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T09:43:30.946Z,Confirmed,BAT,IN,0.000000000004989802,,C4C3608F9F7468EEFADC3DDDD4CB79E8448B9EB29BF0BEF825E653E7FF85E78F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T07:03:41.451Z,Confirmed,BAT,IN,0.000000000003882615,,1AE21F697E99C8200AAD0BD45ED23B5E11D0C855B54349999B8514966BC6DBDD,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-12T05:03:56.280Z,Confirmed,BAT,IN,0.000000000000237889,,6CDD1084C62C078C1463B59E57463FECC0D48571C495E1FA86F3A36EF4842637,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T12:30:34.097Z,Confirmed,BAT,OUT,0.000000000002778302,,F61CC413729B5623D283E89619236ED7CD879DF08DF0814F93EEAE48B0B4EDF6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T10:13:45.303Z,Confirmed,BAT,OUT,0.000000000001889842,,C36D8347671FF96382346FC16C2674E826416B17885D9E201185FC94D5DACC87,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T08:43:01.436Z,Confirmed,BAT,IN,0.000000000003832792,,AFC6EFB42AB1A1A3D1B6F2AF6622DC89BCC2FAE0D26D787C5F9D32D978E8C554,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T06:31:07.754Z,Confirmed,BAT,OUT,0.000000000001454851,,8198F98B8D172DA9A05CBC0E0BCD01D9AA17652267EE8D64F45B5FA773CC8B2D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T06:30:48.525Z,Confirmed,BAT,IN,0.000000000001121148,,C8DE0212CE9CF12660AD7B92B7B729225E3D604DEA1B0CA4C95ABCAF8B58C621,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T04:37:36.033Z,Confirmed,BAT,OUT,0.000000000000531625,,D35351216B32DAB587B4AE0B31CFF73B3F221596044D38A3A377B88C6B4B96DE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T03:19:47.824Z,Confirmed,BAT,OUT,0.000000000000052012,,085A2687D84846FCCF796BB2255C6CA881126ED2F8EDE12E1A87C0CBA04704E6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-11T00:40:39.548Z,Confirmed,BAT,OUT,0.000000000000046263,,10B3214C51CE8CBF11A68C0CE99F9E79D3B4BE61EA651F22133C9E1CD5559ED0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T23:02:17.289Z,Confirmed,BAT,IN,0.000000000005482418,,B1BBD202917387D9B483CD89426731FCA19170D7CC7360573EBCEFFED822C1B4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T16:34:27.117Z,Confirmed,BAT,IN,0.000000000001036833,,ACC98EAF56AFC18641F95FC30505506CE88BABED091134218B6FFDA792884DEC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T09:52:02.309Z,Confirmed,BAT,OUT,0.000000000000455385,,75577559354E4FC4F724FD9F9749181B5EBFD6EDF94A5F3BFAD8B6E04420C9B9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T08:52:28.578Z,Confirmed,BAT,IN,0.000000000002523303,,5981956C6BB3AAB4DCF64A90A751C6BC12C225DD80CF46820ACB94135319552A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T08:11:19.637Z,Confirmed,BAT,IN,0.000000000001322219,,13E4299A4121C9CC4CB42A8139EE65E81B6839B4EB2E8075A0668DE893516189,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T06:23:08.083Z,Confirmed,BAT,IN,0.000000000003457068,,7301F6889142C512C6DC028738220B02F9360CBEB4C8AD1C68A653329D257229,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-10T02:37:03.980Z,Confirmed,BAT,OUT,0.000000000000109774,,CF89A6F8194AC09E727FE71D5E5404C12B66739E5C09C8F684BEE25C58098220,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T18:59:05.556Z,Confirmed,BAT,IN,0.000000000008217468,,348A7D9288AB50A8D593DDEB67CFAA6D1C41085963C12F095EB803ADEF20963B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T14:22:34.713Z,Confirmed,BAT,IN,0.000000000002133754,,B2C74200E63560351476078E196D1BE8BC873ADB189B814526214B5F4A816987,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T11:57:55.929Z,Confirmed,BAT,IN,0.000000000002432828,,80435511BA32A0E1519EA2A3F1568005BCC0251D9ED03D04A0F168505CDFF55A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T10:34:47.592Z,Confirmed,BAT,IN,0.00000000000247827,,54EA30C86C3F82ABEBAD4DB62DF1FF0C9ACD705D0851AA3C22359E713C745A57,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T07:46:45.102Z,Confirmed,BAT,OUT,0.000000000001049152,,8C21CD21E792A0D50E17AA0613D08DEC0CB5C99DC8F51974C6766852D3C2F26E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T07:11:06.445Z,Confirmed,BAT,IN,0.000000000001217372,,5860FEA2688AACD5FA833EBD6D4B74852ABF342041F7FF555527C28F4C529304,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-09T04:24:51.744Z,Confirmed,BAT,OUT,0.000000000000487003,,132CA4A1E3EAA0E3575E353C5C6E48AB43DA98C2002B13468B963D2312B5F7AE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T22:51:58.193Z,Confirmed,BAT,OUT,0.000000000000844249,,3E240E580223D543F800D02C4107C2D6E77A75AB1AD7D9F8B2CDD2AAECB72951,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T18:39:45.759Z,Confirmed,BAT,IN,0.000000000000523823,,23200C4830AF3CD58B509EDFF42D516CD4833E9191F415BC2CB63C15F842BAC0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T18:22:18.962Z,Confirmed,BAT,OUT,0.00000000000393805,,A2CC9D3D0C4BCEC07F82CCBC8EE5CE38260DF639B51D54C215ABE46954004DE4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T18:21:51.059Z,Confirmed,BAT,IN,0.000000000000110184,,1D4E5D2FE7AF880E2E28041EC523EB335811E9BFFBBC11AB675C3345756E68B6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T13:43:45.465Z,Confirmed,BAT,IN,0.000000000000165482,,D59641A41CB0E6BB5924D0BAF563BE2192ABA27218F3355D4BF91DF8939AE850,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T10:59:07.730Z,Confirmed,BAT,IN,0.000000000000333702,,63C83E0E32C459A1C77EA94516F00C549EF64732B82ACF602D908991086DB075,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T07:28:10.924Z,Confirmed,BAT,IN,0.000000000000375723,,D1ED466E1196499151B5B6A2D75C7CA41F0928F461ECC7D0850F207E4F505605,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T06:58:15.544Z,Confirmed,BAT,IN,0.000000000000081851,,6F5707511AE7CB5DCBA37825C7330A05A9964B3504392C62F3F1A8ACF887C28B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T06:58:14.736Z,Confirmed,BAT,IN,0.000000000003661971,,255C68978F8D3FEC4C87280CC19E3A681068AD7A43C448D50FA6B2819BB24D3C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-08T03:55:05.482Z,Confirmed,BAT,IN,0.000000000000250071,,8BB448ABA6D604BDFF9525C0C28DB15641BE24AA8C371D862AF7119EFC731860,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T19:40:15.791Z,Confirmed,BAT,IN,0.000000000000067069,,D2AAB78A257872CF3DBDCCDBA9E631D61D621E56B0D10BD36A1FD81F303C829A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T12:26:19.374Z,Confirmed,BAT,IN,0.000000000000104709,,0B26AB063582D6D7AA158A1106F746826D5276F02501EE85F5D1B01F6CF2330E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T11:46:24.276Z,Confirmed,BAT,IN,0.000000000000253083,,F695BC34EF47BA1DD42CA8F5D088D9F0D08178ADDDC82D0D06F6800D0282BE24,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T07:10:32.200Z,Confirmed,BAT,OUT,0.000000000003925457,,FE32133CDDEF8CA1C9E7FE71F21434439FBD25DA6C9E83E02A1FAF033C769B0F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T01:10:42.112Z,Confirmed,BAT,OUT,0.000000000001922692,,F433133018E755F36E267C1A30EFC0CDE142F184547B63658C5341206BC7E241,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-07T00:28:43.385Z,Confirmed,BAT,OUT,0.000000000000004106,,5050CA0F5349574F6653AB6AC5172A2537F8285E3DA7ED037234A3C93ADE23CF,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T22:29:34.883Z,Confirmed,BAT,IN,0.000000000000133316,,5E94B0CE31DAD52715B50AF3C217E5B4BC54972CE72FC76E98CEEB35CBA2DB4F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T19:32:01.242Z,Confirmed,BAT,OUT,0.00000000000203274,,291DF9451B8D3B3D7BFF7D70D2684FFCA6947FFDAA0AB0337793FB8A14B8FC4F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T17:30:50.810Z,Confirmed,BAT,IN,0.0000000000022553,,8783C40CA566A11721DDD6450550F7F9D1314B420C3F624BA699902C19844C76,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T15:42:17.890Z,Confirmed,BAT,OUT,0.000000000005177459,,78891CF9A60381BE6DC2E790316E007C0EDB4E7B7BC78DE54A4BC32511796464,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T15:40:17.159Z,Confirmed,BAT,IN,0.000000000000981124,,2C669A4C1BE27E0C305B93695A3EF93FF3A87AED9584D17C042A9318463E542F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T11:06:13.675Z,Confirmed,BAT,OUT,0.000000000007173517,,616F2054ECB4399228235BFC3D9152F67035CF4FB3A0E0F386721FC13DC00A7A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T11:05:32.700Z,Confirmed,BAT,IN,0.000000000000585964,,36553AFB657BA15D2DC48C27DA7F39348B39B3A2F3485F120474026DCB21010E,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T05:01:04.869Z,Confirmed,BAT,OUT,0.000000000001698353,,4CC1454D1CAB999D3A367BFE749F0BB7633C58AAFC6F7AAF3A22AFE60225FB59,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-06T00:15:24.036Z,Confirmed,BAT,IN,0.000000000009134808,,DB55F18F8595F2B39E6622F24C81BBC26622980D237E8B1EF5D095E40D97B0D3,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T21:44:27.123Z,Confirmed,BAT,IN,0.000000000000136465,,F3565A7A6DE8D03AA196EB8473DEC8141775178546C73606C3D18A372630F475,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T21:31:37.319Z,Confirmed,BAT,OUT,0.000000000001328104,,2F0B4FBCB40BAE20D5D7E8B4479EFF56737A0E7871807A6560A14229ED880735,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T07:30:08.569Z,Confirmed,BAT,OUT,0.000000000002661547,,4016FDAA8C19F3750FBF352D2CCC753E568F81CE50A8B7F9AC92342E2524974B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T07:15:00.655Z,Confirmed,BAT,IN,0.000000000005238505,,2E4A03CFC16B171F48ECD1D54EE11DD16FB2320FB1DF476C7848AFE73D949A33,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T07:11:35.327Z,Confirmed,BAT,OUT,0.000000000000369564,,7034C53B9E67745A89B138D57A7C2C14E39F8DBD9468C12EFBF3F32761487D70,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T04:56:38.190Z,Confirmed,BAT,IN,0.000000000001677411,,9D2831A8E29ABF61354C54FA547B87B57861E37E3124DF240E3ABB6E63DF872D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-05T02:03:10.251Z,Confirmed,BAT,IN,0.000000000001493313,,728C3D0825147B311FE48DBB75025FD66053C14EAAD29CB7C734736BD954C351,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T22:51:13.169Z,Confirmed,BAT,OUT,0.000000000000142076,,E6BBC027FD643647D195F043D4ED28BD19A2A41BC18B667A8253925C0CE716BA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T22:46:48.400Z,Confirmed,BAT,IN,0.000000000000050507,,CB967A0A4AC98F08BDD7E7879E45D18E449716ED09093986D19D16B4F2ACF4A4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T18:47:22.509Z,Confirmed,BAT,IN,0.000000000003382061,,1C306D208B351D9AC210C7DCFBAB11E5A8D00B46295D008517591570640D0E71,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T17:00:15.313Z,Confirmed,BAT,IN,0.000000000000086779,,1C281D29A6673726757C0EC26746FFD7BA7B967CE214250132DD9FFF1BF9CEE4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T16:28:10.112Z,Confirmed,BAT,OUT,0.000000000004440657,,FFBE3F52DC7741BC5BEBACDF1D45A5F56196DF41DFD8618F6CCCC7530D6F238A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T16:27:45.446Z,Confirmed,BAT,IN,0.000000000001223531,,9986B7F0E1F7EC6E3AB7C8E5AFF48DB18A092142284D79E25F7BDA4801121F92,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T16:27:03.215Z,Confirmed,BAT,OUT,0.000000000000793742,,8D90837BA8EA1514FD773A6958E08DCB12244959DCF00A245A7A032B90AAAF2D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T10:47:38.423Z,Confirmed,BAT,IN,0.000000000003896987,,BBE741A4925F95014246F1136B231689B1F9605ADB2956C4FB44AA7742B3F1F9,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T09:02:27.667Z,Confirmed,BAT,OUT,0.000000000003909579,,13B331E4E21E83F60BEB2A3826D22552CB27FC7D17D633D31433DC084E85D8F1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-04T06:00:04.870Z,Confirmed,BAT,IN,0.000000000001584199,,CF3B7ADD39037D0D6BC8B14D9CCD1E3BFC47F9084CEB8841FDF0D2BBA1384252,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T15:03:16.331Z,Confirmed,BAT,OUT,0.00000000000018177,,55EE4BD5177039FC0E84E057AB69DA6035CEAE36F9AD4DB9B22D8CD6733C0FBE,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:59:03.421Z,Confirmed,BAT,IN,0.000000000002383553,,F0C3F1F48C8BB6E59C032AA163416D34CFA7D84246E7768D1B0784B4C1B2A079,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:23:09.860Z,Confirmed,BAT,IN,0.000000000002582433,,2C8B62E8036C6ADEE9D27B6FFDAC4FF4EDC73749BAE0AD0F779BC83ADFFD4E9F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T14:19:01.463Z,Confirmed,BAT,OUT,0.000000000000553662,,CB812B90A15A1497BA183DA352CFFAE4D875AC4FAEA181D168E51F95D420DD64,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T09:00:42.731Z,Confirmed,BAT,IN,0.000000000000014371,,A79327332064B39AAD221F5A4A1F58F46DB465330048E94EAF530586259BC9CC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T06:38:48.007Z,Confirmed,BAT,IN,0.000000000000140297,,AAD7FB173732E0003117AE54C09C8B6FCE6469A21D440344A623CC0642E804B4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T05:25:58.684Z,Confirmed,BAT,IN,0.000000000000351633,,714F50826651C69ABA82B81282E206371707074F74C2DF879263455E78EDC57D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T04:39:31.856Z,Confirmed,BAT,IN,0.000000000000382293,,6AC309C65E393D7CD422F55A0B9A4F52B06F6E77F57BB1AFBF0961C66DC35169,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-03T01:00:48.575Z,Confirmed,BAT,IN,0.000000000000013276,,A8EA6654276B43151C4CFC26331890DAFE960D0CDFBF56519E56FBE301A562ED,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T19:06:55.686Z,Confirmed,BAT,IN,0.000000000000330691,,EC0BCDBBFCC182F8653B84FE702A5009C85759563052FEF79E75EDBBEB910402,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T18:29:26.037Z,Confirmed,BAT,OUT,0.000000000000084315,,65B35748A3F63B611691831F3E374D6A4D134FBB75D79EECBA72705054FC6055,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T18:06:40.699Z,Confirmed,BAT,IN,0.000000000000981398,,4A66AB0F1F8625E768EF47AE793B19A52105FBA3817170D914D5B44BD5B66E18,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T17:37:51.501Z,Confirmed,BAT,OUT,0.000000000004897001,,0EE54323464E1BCA4F8D80E6076E64DFC5F35210DAA3F95157CF54CB0A3C3BE4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T17:33:50.860Z,Confirmed,BAT,IN,0.000000000003253261,,C11CA740CA11A5F6185F0896960E00151B438C06F5F3AB11BD58732A6D529064,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T16:56:29.930Z,Confirmed,BAT,IN,0.000000000002252015,,82ABFF8F0CDBCD38AFCB3333F0822FCD6336573DE7A1A945C84168ACBFD2385F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T16:19:15.332Z,Confirmed,BAT,IN,0.000000000002200002,,EAB0B538D45F392ABA262EDBB1C7AA710806233F94798D10A3B9DA1BBF99FCB1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T16:18:21.840Z,Confirmed,BAT,IN,0.000000000004716325,,523699E952868494BC2CA52C8C842D7B740A26F682B0D31122DF448663118584,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T12:29:18.415Z,Confirmed,BAT,IN,0.000000000001399416,,79D048D3A0B16EBBAC7FBA39742CDF1C1E2D82E49594D0BF38958145E05E7A7A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T05:42:03.894Z,Confirmed,BAT,IN,0.000000000001147702,,BBCF369B8F4735A4249DDF64447E3CCE5396998C4CB904B041D61C097049CC7C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T04:13:30.443Z,Confirmed,BAT,IN,0.000000000000071859,,879D1C08F2420710404E5DFAA3F28D243BFD5BD3F8A737A9E4CA52948103B796,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T03:34:43.633Z,Confirmed,BAT,OUT,0.000000000001911195,,9F6B9448F80F5A0E20FD82436C5CF0F7E79F3C7F5C9176BA5BD266A6DE15F721,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T02:02:15.536Z,Confirmed,BAT,IN,0.000000000000069259,,CAC058F700B444537B905359349BBED95E4EC6460B5DCE67EF83C460D948F743,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-02T01:31:08.385Z,Confirmed,BAT,IN,0.000000000000554483,,E86E1B795FA0374C5FFED6C909B9261231E1BDCE1F7F2E04DB57559F2C568F1B,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T07:02:33.105Z,Confirmed,BAT,IN,0.000000000000075281,,AE04DC4CFF3714F60CA9C2B077C913C97C8DEC004913651549F82FE6E54789CA,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T06:38:25.087Z,Confirmed,BAT,IN,0.000000000000017383,,6508AF479FB54AF351758F4F68D41F4927D311A9964FB7DD6C7FEC6DEBC1DE86,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T05:39:32.797Z,Confirmed,BAT,IN,0.00000000000230964,,279E38026F18E365CCBF87F70CEBBA83EA95BC05FD3953DAE7EECF598C4FBB5D,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T02:23:43.419Z,Confirmed,BAT,IN,0.000000000000108816,,C4958C89C72771530F0EB936053A22B8F295D2886E421CB60D967D69D0E589D1,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T02:02:42.901Z,Confirmed,BAT,OUT,0.000000000000022584,,0892A1E8857FD9D7F0DBF4AB390A88F106DA2DF065327DEE3288382F3C1A878A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T00:46:24.478Z,Confirmed,BAT,OUT,0.0000000000004547,,D90D48BAFB7F1B58EAC9D2E3B2076A177E16A207C3CFD625DFD094835F2BB201,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-01T00:27:52.196Z,Confirmed,BAT,OUT,0.000000000000150973,,0563FCED79B59E95BBD79CB261F11404D072E097AC314C6756A08C426732CA4C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T17:16:42.102Z,Confirmed,BAT,OUT,0.00000000000002231,,5435FAA251DC0E5DB253D8DA6B69D2549C13A67B83585590B7657E90CB9602AC,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T12:30:33.602Z,Confirmed,BAT,OUT,0.000000000000470715,,97C4E84A2B5EB9A9A66735A190AF492E32B1A0A4C387D8568E259529CA6AA06A,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T06:53:12.632Z,Confirmed,BAT,IN,0.000000000001746396,,C64664A96A607A526A1D193A6B93AA298C815B09DDFA203C40CF2315550CD16C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-28T01:34:24.165Z,Confirmed,BAT,IN,0.000000000000213389,,8EC6675E08EDAA3E8434CBF7742200882920F2AB38B0A6BDF441280CC6871725,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T23:48:13.594Z,Confirmed,BAT,OUT,0.00000000000486593,,D893B810C17A665996218439123ED141BDE24D517C53D2C23852256B4E6A8735,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T21:31:30.646Z,Confirmed,BAT,IN,0.000000000000430884,,F86C83F37EBC2B1BCA5072BD2BCCA59312690783FB9FAAD2844292FD3EBC2BED,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T16:31:30.786Z,Confirmed,BAT,IN,0.000000000000635924,,D7D16D439FD7E294778CCEB2DE70900A7344AC8510F1282D61CA3F60A6016313,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T04:06:56.002Z,Confirmed,BAT,OUT,0.000000000001053805,,3AC5C7E82B29B2A205C0AAB2308766C9F1651E4071E18119E734038973119D8F,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-27T02:42:39.642Z,Confirmed,BAT,IN,0.000000000003576424,,D338EE87EFB627D254D1B385F96E0C2CD23B66B280882CAFF8992A071A6BB3C6,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T22:14:20.790Z,Confirmed,BAT,IN,0.000000000000397623,,978DCFC633A5595EC9A22CE822D63275B68A2062BFBA1C1DFC62D060D00592A0,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T11:56:24.561Z,Confirmed,BAT,IN,0.000000000000692317,,9748910E20F4B6311AFD308D96C8C115AE341F7AE9184704834FB47BC89F8E4C,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-02-26T11:24:12.038Z,Confirmed,BAT,IN,0.000000000000960456,,8BF53AAF6A8AC9FA3F7A2811BF3D062FC7A138016273BA71F85F62E2B4A2BDC4,Ethereum 2,2995F3223F43125E9B5F8859B66852D85D307D1E4B888E24824C745C190BCC40,USD,, +2018-03-13T15:46:10.746Z,Confirmed,XRP,OUT,2.411812,0.024118,65267F4316C1BF8E1A44E6D3C71199A039B285CD725A133592B47613BB3512AB,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,0.25 +2018-03-13T15:45:41.669Z,Confirmed,XRP,IN,720.663508,7.206635,D640F9A3E3D62111F74D2A06643C67F6E963F6D289B19DCB4549F0E04CA406A5,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,75.05 +2018-03-13T02:14:07.352Z,Confirmed,XRP,OUT,35.361685,0.353617,C117CDC56A62392626433257E141462671CA74C4F4EFAB72158D8E95140DA8ED,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,3.68 +2018-03-12T18:35:25.124Z,Confirmed,XRP,IN,111.776239,1.117762,319072CD6D5FF527B67F8ADA0351DB2A8A850A304D47E547670C3D5DDBECBC55,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,12.23,11.64 +2018-03-12T16:12:07.357Z,Confirmed,XRP,OUT,1011.000641,10.110006,823B1DBB1C0B4FCAF81051AFAD0CF2E63C6A733C6CE4CE75C679F2C77FA2445A,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,110.62,105.29 +2018-03-12T14:41:11.463Z,Confirmed,XRP,IN,25.107143,0.251071,D928245DBC44CA245DC59326433404BDD782331B1DA72C26DFBB2E8788CFD629,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.74,2.61 +2018-03-12T14:04:32.517Z,Confirmed,XRP,OUT,3.938715,0.039387,C39F4178C9D47A14C4D4765BE4B9921D088784448BCC3A929B6BA90D01AE4BCE,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.43,0.41 +2018-03-12T10:40:35.043Z,Confirmed,XRP,OUT,257.369909,2.573699,91A27EC87C4088CD9445BAD3B51C13C137CA7A174C8E9054A4E577D194413223,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,28.16,26.80 +2018-03-12T09:18:38.106Z,Confirmed,XRP,IN,530.546735,5.305467,272BCAA487F44065DDCCC430278A92C38D2AD44B6D4AAC3DF54C6BE51F377DA0,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,58.05,55.25 +2018-03-12T04:30:39.781Z,Confirmed,XRP,IN,10.53216,0.105322,FA1310DC960FD10C1F5144CD3E6DABBE363D6FEFB1BC28E2150C0112AAB91282,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.15,1.09 +2018-03-12T02:34:18.075Z,Confirmed,XRP,IN,47.073725,0.470737,D277C65E4C6FF4EC1E40BB4D8F7357414F1C4008EB838703E618F2BEF0C09E5F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.15,4.90 +2018-03-12T02:27:03.344Z,Confirmed,XRP,OUT,3.661096,0.036611,5CFF549B29C78BCD046A00DB569CF61A5201A30A9D4D92C254898199B586D419,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.40,0.38 +2018-03-12T00:11:08.193Z,Confirmed,XRP,IN,8.588829,0.085888,1558AC5E9C464D1386192632A03EE835326827659A0560F3BBB25283E86BCCBF,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.93,0.89 +2018-03-11T20:17:53.150Z,Confirmed,XRP,IN,363.159995,3.6316,749AF2CA71C539EB5EFEF8775852548FA88A8B3C5407CDA347D592892BE01D94,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,40.33,37.82 +2018-03-11T17:16:29.589Z,Confirmed,XRP,OUT,263.61633,2.636163,13DAFF97E5680A956CFE0D682057FFC325F9EF3D8E197A7571ED3819142DE05E,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,29.28,27.45 +2018-03-11T11:51:48.020Z,Confirmed,XRP,IN,167.5429,1.675429,780CB43F9E0F328E73C441A41A371D082A239A7F44150860E9914F0762EE4AAD,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,18.60,17.44 +2018-03-11T09:00:18.484Z,Confirmed,XRP,IN,172.071556,1.720716,28ABAEA3A06277404C8E172287ABE6E40900C6544DD5B019878D5CB8D2306957,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,19.11,17.92 +2018-03-11T05:43:02.605Z,Confirmed,XRP,IN,153.922232,1.539222,219B8896D8B5AC5FEE11A1A306A2665DEC58322E582B7F86179E07FEC5F33B0D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,17.09,16.03 +2018-03-11T01:02:50.305Z,Confirmed,XRP,IN,15.407839,0.154078,811118EDB8A6D3FE48673D855E33151EAB0883A677E9DA358D9831BFE78D5A1F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.71,1.60 +2018-03-10T23:20:31.984Z,Confirmed,XRP,IN,384.744851,3.847449,D1FF581547C85A754A14D193E1E4D4B5801242D077C18DDA79D7FEE24D837353,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,43.24,40.06 +2018-03-10T21:14:30.979Z,Confirmed,XRP,IN,9.265524,0.092655,7B45C0BDBCC11EACE1DA891D035A95BFA4476F9668D3B933E5036DC11E5C2854,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.04,0.96 +2018-03-10T15:04:58.667Z,Confirmed,XRP,OUT,169.590338,1.695903,47E7CD49DA15E3151D973731037D6AB094E1FE843FF698CCDC666EE086B028BD,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,19.06,17.66 +2018-03-10T11:26:28.174Z,Confirmed,XRP,IN,826.627105,8.266271,423209801542A9A9E2DA57E2D912F1C5426967619A1223E0844946B1FC0AA097,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,92.91,86.08 +2018-03-10T09:16:11.848Z,Confirmed,XRP,IN,148.335155,1.483352,A186A6D4A39F9027E38B5F673C38FF4B3C1C5BF292B48B1130115B226DC213DC,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,16.67,15.44 +2018-03-10T04:39:55.064Z,Confirmed,XRP,OUT,545.173771,5.451738,4695029228DD508A7C3ABD01B7F23F1111F2EC8BD90A6A3E90B037DAAC929438,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,61.27,56.77 +2018-03-10T03:48:11.392Z,Confirmed,XRP,OUT,37.686741,0.376867,FE0C40861163743CA4AFA113745509BDA87500F92BECAD0A741540719E84E522,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,4.23,3.92 +2018-03-10T03:41:17.247Z,Confirmed,XRP,IN,209.463328,2.094633,6FF921A3FFA5D4162EBC285CF7A09875A278ACF466A4F95B1D913A88FF5669E4,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,23.54,21.81 +2018-03-09T12:36:56.652Z,Confirmed,XRP,IN,48.617979,0.48618,B236B319CAF6681D4CF466797EE97F23E0C0F6D919C03CE0812D453EF73CFBA7,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.50,5.06 +2018-03-09T04:06:47.803Z,Confirmed,XRP,OUT,230.926726,2.309267,C9B251CB33F9F225C60610F246270DCEE202CE375289F80061BD26DDC1311678,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,26.16,24.04 +2018-03-09T01:38:57.978Z,Confirmed,XRP,IN,17.333819,0.173338,A7762B53BDE39A8D0641B843382937B299847364977124244471BAFF4FA5FE7F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.96,1.80 +2018-03-08T22:10:44.573Z,Confirmed,XRP,OUT,14.141203,0.141412,E6EF3522AF9B68003606BFA43530D6BE05D19D5E9D4C12F01DFD2D7E46D3CE0D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.60,1.47 +2018-03-08T20:18:15.418Z,Confirmed,XRP,OUT,316.572102,3.165721,6EA2E8CE2D84427253F1A34D1C69DD896B7A2EA4F58F914A8E7EA59763F54621,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,36.02,32.96 +2018-03-08T19:10:49.718Z,Confirmed,XRP,OUT,140.128051,1.401281,FC9A7B187D39CB462B2A0306ACF6EDAD05AC055FC06531261A1235BCDE80DD7E,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,15.94,14.59 +2018-03-08T17:47:25.426Z,Confirmed,XRP,IN,138.080613,1.380806,EDC698653D4A1C029AB01C45729D391C73E11268A27D5417A2A300FA9A22C4D2,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,15.71,14.38 +2018-03-08T12:09:49.832Z,Confirmed,XRP,IN,557.75337,5.577534,19B9607D5D6033791D44F07FAC9FDADF1C9FA1CF55C33E2D43F9B30E40A8A332,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,63.47,58.08 +2018-03-08T11:36:18.800Z,Confirmed,XRP,IN,136.55371,1.365537,C056E3E76E6F9E30539A7C68DC42ED80224A412BEDD43EB8CEB9E91D8C18279C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,15.53,14.22 +2018-03-08T07:07:12.336Z,Confirmed,XRP,OUT,149.272118,1.492721,4561678D47DB439D61540C6B323980BCB3709329E1BB3FBC32018DD369E4FD08,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,16.98,15.54 +2018-03-08T06:52:15.943Z,Confirmed,XRP,IN,1.457498,0.014575,EE8013FEBDA9EDEFA0CB2DAE06A092002C900C76C266B108066D850FD7EFD9E4,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.16,0.15 +2018-03-08T06:41:37.091Z,Confirmed,XRP,IN,441.51788,4.415179,85EAC9E9373A6F012F3D9F3FEE38245FBB9BC7715FE9B19F53E24BB0D12F4683,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,50.24,45.98 +2018-03-08T06:19:30.688Z,Confirmed,XRP,IN,34.077698,0.340777,BA52B65E229EEEF12E5FB321D434FC3F4FA4C5A4DE997AD2534C1A6FAB159DAD,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,3.87,3.54 +2018-03-08T05:48:28.738Z,Confirmed,XRP,IN,230.562351,2.305624,7D93C465C0215D8546E18913FC5B6EBC067CC5CEDE5C7DF542F66522975EBD88,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,26.23,24.01 +2018-03-08T05:41:52.196Z,Confirmed,XRP,IN,60.017698,0.600177,FC590175FBF1567992BB137AFC05367F3D25AF07AA4A565DBD70B6F7DF530919,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,6.82,6.25 +2018-03-08T03:04:26.903Z,Confirmed,XRP,OUT,645.237971,6.45238,14C23253B3410DEF29DBCFFFCD12A9CA2103E2A9BE4B99DA921A83A42F1F1B8A,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,73.42,67.19 +2018-03-07T21:42:40.876Z,Confirmed,XRP,IN,387.763954,3.87764,5C821E7AE86C7F145B2A137C5298E218877F955DA0B1ADE392E51DA442C09F8F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,44.14,40.38 +2018-03-07T09:35:56.183Z,Confirmed,XRP,IN,504.710842,5.047108,F166DDB8130040FF32B9EA078DC8893FF6D04FDBB0394227F53D9565AA827F63,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,57.45,52.56 +2018-03-07T07:49:20.100Z,Confirmed,XRP,IN,0.034702,0.000347,0FBE87513625682714A6783D36CBC4AA7555E3BA23DA956FC232DA855D7CA984,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.00,0.00 +2018-03-07T06:25:04.305Z,Confirmed,XRP,OUT,32.672253,0.326723,64EFCF2209831E42273E0F76F1965ADEB34EC8F9F0395C64C8757645D5F3DF75,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,3.71,3.40 +2018-03-07T05:32:07.009Z,Confirmed,XRP,IN,292.176357,2.921764,4879F10E51F86C0A94A237D1006FA58421331F0174B7AE448C103363CBB7F139,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,33.26,30.42 +2018-03-07T04:03:44.707Z,Confirmed,XRP,OUT,123.106553,1.231066,876F415C2DD5CE9E6466093404095AEA42D394ED1687FFD42B49784527EE594B,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,14.01,12.82 +2018-03-07T01:58:08.982Z,Confirmed,XRP,OUT,1253.778217,12.537782,EFD16EBBD9C685DB9A5EB5104EA8F7C01133A959F0507EC3363A1F5E3FD2C7CC,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,142.72,130.57 +2018-03-06T22:29:42.717Z,Confirmed,XRP,IN,170.041469,1.700415,62539F7615C413D7D0B9079ADC60EDC8176CD482B0B22745D275E75724EAC986,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,17.70 +2018-03-06T22:26:14.014Z,Confirmed,XRP,IN,201.690003,2.0169,05609E665A052AD318C2099C91E1DAA8AC558AA5172E87BC8319D83EF079F140,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,21.00 +2018-03-06T20:18:22.321Z,Confirmed,XRP,OUT,160.498325,1.604983,D39505093E47A49FB3D8DD3E7A51C31A85D5B12CCC8149A16FE85B4678855ABC,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,16.71 +2018-03-06T19:30:56.107Z,Confirmed,XRP,IN,19.936494,0.199365,552105F46E16F946174004C2DEEB5C965532D49E9C86D0ADD795DA18786620DA,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,2.07 +2018-03-06T18:18:03.875Z,Confirmed,XRP,IN,19.693578,0.196936,C931F529AA218A308E8CE5440D05C43862F4854CD7E7DCE1F74B1C6C8B957716,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,2.05 +2018-03-06T18:08:28.090Z,Confirmed,XRP,OUT,17.21236,0.172124,A61EB43A89B4AE0A97921CBE862E8102EB8596A346AA36D0E13B2933860CF2DA,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,1.79 +2018-03-06T16:57:41.967Z,Confirmed,XRP,IN,15.72016,0.157202,B8E346404314FB3040951A297E489215EA22F79E8F1981B3DDFD4198753B8373,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,1.63 +2018-03-06T14:39:33.275Z,Confirmed,XRP,OUT,3.921364,0.039214,BCA85E4AA0B0C3452517CC3E23D7A5C0034023B24FE28F6A52EEA46897F37E57,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,0.40 +2018-03-06T13:42:15.180Z,Confirmed,XRP,IN,8.241805,0.082418,07FBB1064C2E0079990BF717D91326CD9F5EBAF2BA7B53A737D6D9868207B569,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,0.85 +2018-03-06T11:11:17.191Z,Confirmed,XRP,IN,28.577377,0.285774,BE89F74EFE16735242067667937B62BB8FECFF39ED36A241FE9112E0C7BF2F24,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,2.97 +2018-03-06T06:44:19.261Z,Confirmed,XRP,IN,42.735932,0.427359,F95602DCD75C8CAA482EFD4246E2EFDE6FD3030C3FEF6D6AC0DF006C7EE3D6F5,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,4.45 +2018-03-06T06:18:06.678Z,Confirmed,XRP,IN,126.490031,1.2649,B41CE2A81DB41A3FA6140002CAB2797D3CA3928B858C0EF6E78D1E7068CBCF2C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,,13.17 +2018-03-05T14:39:09.794Z,Confirmed,XRP,OUT,593.583537,5.935835,3C349F8ACD5FD309198C1FA9772BE370F90D76B71A85B3E4682A97DB522B018F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,66.99,61.81 +2018-03-05T12:57:44.331Z,Confirmed,XRP,IN,882.046744,8.820467,0EC0966A6BB0C6BFB9FF8B2B1F2C5FAD30C87C1DDDA63F8F02436A0AB06E8841,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,99.55,91.86 +2018-03-05T09:21:17.186Z,Confirmed,XRP,OUT,126.368573,1.263686,2984831620406154236119449C6C8D141BAB9DEAF52B4F462FD5A72390620F0A,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,14.26,13.16 +2018-03-05T02:10:31.734Z,Confirmed,XRP,OUT,1.405444,0.014054,B957AF6DD34BC354BCBD45BFABBC8AC85DADBCA998A8AF64962E06F4C9150135,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.15,0.14 +2018-03-04T23:20:18.810Z,Confirmed,XRP,IN,68.138045,0.68138,C7D093BDD162AD93F55512BD8C713DB0C364ACF109079FBCB45087F25F95B709,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.63,7.09 +2018-03-04T23:07:19.997Z,Confirmed,XRP,IN,241.701802,2.417018,5094F12E823718B7D6B7395B3F8C9C7C513DF572A0D2DDD3F7DEED0B257AA70F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,27.09,25.17 +2018-03-04T22:38:13.115Z,Confirmed,XRP,IN,276.716464,2.767165,07A1DD833D1149C8CFF12EC9FCD7B6F6E2CB1F23F6412BA2E0BDA009FAAF3B7D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,31.01,28.81 +2018-03-04T22:30:49.316Z,Confirmed,XRP,IN,1.353391,0.013534,09D099B6C71037574DBF11AC71FA7C7E5D9F96795FD6A8506FAA7D7888ED7555,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.15,0.14 +2018-03-04T21:09:59.485Z,Confirmed,XRP,IN,360.470563,3.604706,91545D8C404F9E52C39DC356021CAEE12EDBCD891562B540B53008B381072951,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,40.40,37.54 +2018-03-04T19:20:22.864Z,Confirmed,XRP,IN,16.431558,0.164316,B70A76AB21D846B7AA65E74FBA32040B43BB03843F30A168A1BE05472A616C25,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.84,1.71 +2018-03-04T18:21:28.924Z,Confirmed,XRP,IN,120.000694,1.200007,1E1DDF4A7F1DD8A6FE6F741925B885CFA78DBE39C5C1C952F106AD1311548FAE,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,13.45,12.49 +2018-03-04T12:35:37.610Z,Confirmed,XRP,IN,1421.546683,14.215467,88BAACB5524B73B364924D7A11EC53400CDD6A56EBB6F240FA28320A7ED4A87D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,159.34,148.04 +2018-03-04T07:10:21.931Z,Confirmed,XRP,IN,0.624642,0.006246,0DCAE3C4EDA5D826A21F6083B11FF74B39C91D86662268384F4D072D7D12EA42,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.07,0.06 +2018-03-04T06:47:10.355Z,Confirmed,XRP,OUT,268.006177,2.680062,649455FE0D600B8443D9BCA1EE2E43D5D1835F5FB98651F704B823B568B91989,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,30.04,27.91 +2018-03-04T04:24:53.289Z,Confirmed,XRP,OUT,67.548106,0.675481,D2454515EB7B6E154F2F341E1F28A435906AE950806BE694CD6FA393C18A726C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.57,7.03 +2018-03-04T02:34:02.297Z,Confirmed,XRP,OUT,4.736869,0.047369,1B8F79387D6E206AF246EA47BFBC8AA1BF707445D0A7ACB0BA5DFF9DBADF2354,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.53,0.49 +2018-03-03T20:03:57.050Z,Confirmed,XRP,IN,193.899328,1.938993,AF3165773F117D18E04BEB5B3678BC790EFCA8E73AC576FC2B2CBAE13F63FDA3,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,21.58,20.19 +2018-03-03T19:56:24.344Z,Confirmed,XRP,OUT,87.588707,0.875887,A0BBA1AA636ADFE6429090091AD2B113399D2C3AD599C539100CA24BAA55D502,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,9.75,9.12 +2018-03-03T13:04:51.533Z,Confirmed,XRP,IN,447.799004,4.47799,F54DB531B7AD97E87114242E49E4233DD007924A1A859DDA17C154BDC57DACF3,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,49.85,46.63 +2018-03-03T12:50:52.967Z,Confirmed,XRP,IN,2.394461,0.023945,D44FB5CF4AC073AA625D2B8491D398AD6974EEFE068619DB20DE52889B7D1D68,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.26,0.24 +2018-03-03T05:07:51.519Z,Confirmed,XRP,IN,96.507209,0.965072,83EDCAAEA987DD6AAA259BD369F9C3459A014DB7390C0523DF196826AEB30FDB,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,10.74,10.05 +2018-03-03T00:47:13.789Z,Confirmed,XRP,IN,380.719379,3.807194,A79B55A527FDE9FB07521C567503ACCDB8D4B53ADF2E9E7C9DDC80F0BF18800E,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,42.38,39.65 +2018-03-03T00:39:39.689Z,Confirmed,XRP,IN,19.068936,0.190689,856A10A89CBB8F1A5D6025F4FCA77769A497F25986A8C78A7FD2F281811952CF,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.12,1.98 +2018-03-02T23:43:13.500Z,Confirmed,XRP,OUT,12.787812,0.127878,B00EDA289F5466E709B158839512D5BEFB907E444FAD78E0B449FC056C5D90C6,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.41,1.33 +2018-03-02T12:41:01.337Z,Confirmed,XRP,OUT,825.898356,8.258984,F2273B445710BD5066B01ABF9E9ECBF03B15681561B74F72C51D5AF2CEAAC855,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,91.48,86.01 +2018-03-02T11:56:46.033Z,Confirmed,XRP,IN,361.424878,3.614249,E43C08ADE8039BD30D00972CAF906046EE65675246682A3003BD7F0F068BCB24,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,40.03,37.64 +2018-03-02T10:31:41.116Z,Confirmed,XRP,IN,48.739437,0.487394,BFDA46F681F00CB5171387F249C8DA24F2B5251101165E8555475C4C69F8A244,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.39,5.07 +2018-03-02T10:31:39.388Z,Confirmed,XRP,IN,108.930647,1.089306,A78912707DFAEBE13CDAF01EA7847A823D2B123A25B9934AD1087BB1EB7A986F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,12.06,11.34 +2018-03-02T09:24:51.523Z,Confirmed,XRP,OUT,182.881335,1.828813,DFFC4B887124B06465D0ECA609695D5DD95FD50B2CD20E097C45DB2190B2F4A8,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,20.25,19.04 +2018-03-02T02:07:14.985Z,Confirmed,XRP,IN,42.892093,0.428921,3B20490C644EA976C60CD1DA08AA37412955F63EBE10C4286AAED2075BA00E0E,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,4.75,4.46 +2018-03-01T23:24:15.176Z,Confirmed,XRP,IN,49.121163,0.491212,B2F8387DE8A264ACAA0CBBA3E288E492232DF40FE8E3C08F06DE4FE92F7B4CE2,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.42,5.11 +2018-03-01T14:47:12.582Z,Confirmed,XRP,OUT,46.605243,0.466052,0DDAD33E61AF7DEA853D28B8B118ECB47AE03DE33B3F3272EC50249627FFF7F5,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.15,4.85 +2018-03-01T09:45:52.028Z,Confirmed,XRP,OUT,50.682768,0.506828,B723214C42F1CB7426D8B7B8FD1A3C51F156E86AF2BF3C4EDE62B7F564857436,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.60,5.27 +2018-03-01T09:43:45.042Z,Confirmed,XRP,IN,5.396213,0.053962,F7EA6DA98F32D4505E46DFF02A8696631CC9207985C3131403B498AA333F5376,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.59,0.56 +2018-03-01T03:23:52.322Z,Confirmed,XRP,OUT,51.567678,0.515677,7428D0F0C26E2EAD90942F3EFB656D2B27243B16AD3C98F52DE4FB6FE7E353F4,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.70,5.37 +2018-03-01T01:12:37.701Z,Confirmed,XRP,IN,2.2383,0.022383,39FDA2CB5A76097CEF08892D58CE534FDDE9C9D98CA96F8727A512AEAF852876,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.24,0.23 +2018-02-28T18:57:21.916Z,Confirmed,XRP,OUT,459.892769,4.598928,CF9E0E63EC9C76F287031562CDB07388C772A430440B8C7BA4C50C4A9692C9AD,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,50.94,47.89 +2018-02-28T18:56:51.591Z,Confirmed,XRP,IN,731.80296,7.31803,CBEF4FCF076C6F3BF032576953C089D5BBB73E90B4C8ADB561CF44F55F283F6C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,81.07,76.21 +2018-02-28T17:21:06.012Z,Confirmed,XRP,OUT,392.188503,3.921885,514294CECD00F629E74A4BDD396F0683D7F07EFA6144FF5BB2D4CCAFCF7F816C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,43.44,40.84 +2018-02-28T13:35:43.098Z,Confirmed,XRP,OUT,117.380667,1.173807,808E4E7322C9B61C621EEDA5C5E3ADCBEE143955A49C34CD508C7FEB3B48430D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,13.00,12.22 +2018-02-28T13:14:37.988Z,Confirmed,XRP,OUT,342.963232,3.429632,0C9A692428E6B6E15E4E0B6681EDA33B23DEEF2AD4DBB199DE999B1A833E4F0F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,37.99,35.71 +2018-02-28T13:14:23.005Z,Confirmed,XRP,IN,129.023302,1.290233,BFF2726F2E0D7BC15E3975BD564773B52BFFF97AF7C26D841DADD545C6ADFB09,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,14.29,13.43 +2018-02-28T12:21:19.413Z,Confirmed,XRP,IN,74.245657,0.742457,61186759317ACE6CFDDD6CF7FAFBAF4DB28984C129E70143E0BFBDA7F7E177B6,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.22,7.73 +2018-02-28T10:22:57.338Z,Confirmed,XRP,OUT,1.873926,0.018739,63BA1F6F820949F37A4F1AAFE1B8C339CF81042122DF2A2FD86F6E0CE7F7B650,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.20,0.19 +2018-02-27T19:59:34.022Z,Confirmed,XRP,OUT,308.434403,3.084344,A8D21970588AFA66AF22210A3D7CDC70A3418D86F1D8FCF6C3DD81D2DADA42BB,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,34.41,32.12 +2018-02-27T18:34:40.674Z,Confirmed,XRP,IN,10.618916,0.106189,F0781BD8DDC81BC18C3E627D2DE434B13627F18CF2659FFC9CAD76E4E7EE4C7A,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.18,1.10 +2018-02-27T15:34:31.470Z,Confirmed,XRP,OUT,240.78219,2.407822,193151F5F1D23CEAD9C664EBB8BF5F4C4A3EC83C0EE3B1E30DEA9597611821A2,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,26.86,25.07 +2018-02-27T15:11:33.939Z,Confirmed,XRP,IN,282.025922,2.820259,F15269BE71626CE694C4A093779BAA6FBE7B78AB46F9C5281D55036FFE49F461,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,31.46,29.37 +2018-02-27T08:44:01.251Z,Confirmed,XRP,OUT,19.103638,0.191036,15C9B7B0027A7B5F6F5913664C028D542CEC4F682F5A40364BFA88A0A32DE83F,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.13,1.98 +2018-02-27T08:38:53.766Z,Confirmed,XRP,IN,266.930404,2.669304,2CE169710FDF73DF36C77A9C75B6B3359A5C6F984651D83997628F1260D67FD6,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,29.78,27.79 +2018-02-26T21:41:10.696Z,Confirmed,XRP,IN,11.989658,0.119897,F6C27F627BF4058454E0E3BD6AFF94D6DB210AD16FFC258D9D8254250C655240,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,1.35,1.24 +2018-02-26T21:25:35.257Z,Confirmed,XRP,OUT,313.674457,3.136745,85A31657C5F8117251F0EF65590D81096A369B363E4845DB5A3872D32DF972DC,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,35.42,32.66 +2018-02-26T20:09:14.257Z,Confirmed,XRP,IN,0.052053,0.000521,3D2E73C98929C434539CC55C4818265D55C3DB32A1CF3506D4DA638AACEFE126,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.00,0.00 +2018-02-26T19:35:39.515Z,Confirmed,XRP,IN,99.734527,0.997345,F389B0D467FF2643DCC094C66BCAAD9540A65C0BD7D8CCC985BA44FA0ADABEE9,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.26,10.38 +2018-02-26T18:39:37.853Z,Confirmed,XRP,OUT,1.578956,0.01579,BDE54B97D2D6EB11C02F9063E7168D11257276918470214414F21E839A260586,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.17,0.16 +2018-02-26T11:26:41.207Z,Confirmed,XRP,IN,67.305189,0.673052,80C2F9E1B937EC166F7C3156CB93B713D29C072722660A04C75A07293090090A,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.60,7.00 +2018-02-26T11:26:01.221Z,Confirmed,XRP,IN,803.584751,8.035848,5CBE0B3A556829C86A49AF0C191E013C63ABB68DCAF21433B69EC064760ADDC4,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,90.76,83.68 +2018-02-26T10:40:31.862Z,Confirmed,XRP,IN,225.634619,2.256346,34B90F5657A29432CE642D5F3C5FFA72AF72D5362568CF287DFA6BF39C952A19,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,25.48,23.49 +2018-02-26T10:37:41.831Z,Confirmed,XRP,OUT,51.810594,0.518106,FE6315ECBB6DC6CF4DE0A4835B8157B72FA8AEF2FABA5E10A64CA0AA2CCAAC5D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.85,5.39 +2018-02-26T09:09:42.139Z,Confirmed,XRP,OUT,928.964308,9.289643,B3FDD367EB36F6959D82197DE67414651F56765031BB0A9B905F396763800BAA,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,104.92,96.74 +2018-02-26T03:36:36.729Z,Confirmed,XRP,IN,19.676227,0.196762,E4C770D854F73072BD7630C751CF165551A079CBF9F36AC1127A3A532033BA22,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.22,2.04 +2018-02-25T15:41:24.227Z,Confirmed,XRP,IN,72.701403,0.727014,554C512A1ECE90D59FD72A01FBFE7F476B18E3F5911BC170DBBA0060085484C7,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.34,7.57 +2018-02-25T15:24:34.863Z,Confirmed,XRP,IN,148.161643,1.481616,9A96E37A6548E384E3A609BD0511178A457A79E4C663453D321689E406AF7928,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,17.01,15.43 +2018-02-25T15:23:25.181Z,Confirmed,XRP,IN,103.135356,1.031354,8706F948C400AC6A532B1DD1DDA854852376AB7AF584D6C02796051EB7522C66,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.84,10.74 +2018-02-25T15:03:24.623Z,Confirmed,XRP,OUT,118.387035,1.18387,BEAF04764AA99BDB9CDE3EFE9FF1F860254A2530FA5729F9807802BE148D9587,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,13.59,12.32 +2018-02-25T13:18:34.071Z,Confirmed,XRP,IN,180.764492,1.807645,F65DDBF5466F578ACA3A74928C5C4EDC291738FF677D4FF0DD695F942F255586,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,20.76,18.82 +2018-02-25T10:01:15.608Z,Confirmed,XRP,OUT,98.415838,0.984158,2D08A260A594FB5AE807E06186F8C53FCB52476832692DC28B0D3BC4168DD843,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.30,10.24 +2018-02-25T09:28:01.023Z,Confirmed,XRP,IN,24.777471,0.247775,9DC9C82BDB948D26BF29FEE4EBCDBD1B6A49EB608179E6D94926A169A09183FE,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.84,2.58 +2018-02-25T01:46:24.278Z,Confirmed,XRP,IN,104.072319,1.040723,243DB42435DC04D032CABFF30F5FD75D8AE2C6971632601567D20842ED0DC364,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.95,10.83 +2018-02-24T23:57:50.862Z,Confirmed,XRP,OUT,593.583537,5.935835,7B6A8FCE362CE28CCE8A9287E189B3B8C5A84681ED7283B9C372B8FBFB85C8C6,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,69.54,61.81 +2018-02-24T17:55:34.997Z,Confirmed,XRP,OUT,162.025228,1.620252,A76753325411035A4A7C01716854F35FF282ABAB3A8923051FAD10BB0F0535A1,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,18.98,16.87 +2018-02-24T16:11:50.089Z,Confirmed,XRP,OUT,70.862179,0.708622,DF8DD4C1F1E5503B7626FD760736ACB6FF77F128C70E534BC69D23D7AE585AB9,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.30,7.37 +2018-02-24T16:02:51.911Z,Confirmed,XRP,IN,476.480488,4.764805,EBB582030342883D01523C660D8B2336504339CE4F25C191128E916D28088E4C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,55.82,49.62 +2018-02-24T15:02:42.594Z,Confirmed,XRP,IN,417.434455,4.174345,92061F0AC044B3A3FF40F0F40C77E8AF2E9C74CE48EF4581A1D5DF510056DBB0,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,48.90,43.47 +2018-02-24T14:40:40.308Z,Confirmed,XRP,IN,7.287491,0.072875,7EF7156FA1953A1DF98C0409140119874A92BABEC540DFD5E96D84C91E1551D5,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.85,0.75 +2018-02-24T09:41:08.831Z,Confirmed,XRP,IN,480.158936,4.801589,D9CCDF5F62833F297AE387A5C5562FF71D4ECED107E4BEA46FBE00EB5075251C,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,56.25,50.00 +2018-02-24T07:35:26.325Z,Confirmed,XRP,OUT,46.570541,0.465705,172079B19C99ACA712C221A030E3D2BCF7E655CD3641F736F73DC2E810D6727A,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.45,4.85 +2018-02-24T06:29:58.755Z,Confirmed,XRP,OUT,8.502073,0.085021,95C6DE24935601E1DF31BE2FECA3731FE7C6A958DF91305F9A8081FB5559F522,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,0.99,0.88 +2018-02-23T21:06:02.812Z,Confirmed,XRP,IN,59.046032,0.59046,4D0B6B417325916A8A71E2FD1C88861E3E4552461DC2F41BFBF646DEF1ED07F4,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,7.07,6.14 +2018-02-23T15:46:07.147Z,Confirmed,XRP,OUT,950.445057,9.504451,18D22E24D10CC8698589BC3984D2D7AC16F2A52600336B8BD249F7DCBA61B3B7,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,113.81,98.98 +2018-02-23T11:43:34.095Z,Confirmed,XRP,IN,616.452379,6.164524,C03E79FA7C4846397A7CAC97C1AC5D246F6A725E26478C448ADD30EBC52399ED,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,73.81,64.20 +2018-02-23T09:35:25.832Z,Confirmed,XRP,OUT,20.960213,0.209602,9AFEA53F1D41906B68569D8995C597089C79A246538CDBB0FEA460C4E88FE07E,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,2.50,2.18 +2018-02-23T09:04:51.028Z,Confirmed,XRP,IN,55.593149,0.555931,B03AFC75CB97A97CACD396342E8E422754B596A624C26E580E2C5A5A9C67C6A1,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,6.65,5.78 +2018-02-23T02:39:30.016Z,Confirmed,XRP,IN,197.282806,1.972828,FE1AB4B01E830BF58276E68E5C933C39AC7D0AB260A37C9D06733494C84F2733,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,23.62,20.54 +2018-02-23T01:49:11.999Z,Confirmed,XRP,IN,141.759061,1.417591,1AC86CAB5DEDF86D59B1EAD093E7237880E08BCE47D2B28EB5175EE7934D93A6,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,16.97,14.76 +2018-02-23T00:47:16.094Z,Confirmed,XRP,OUT,44.384293,0.443843,C7F5AC4BE9265D9F0515B6E0C4F58B9AC89C58E456392CF1DD9D2D1110E2D29D,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,5.31,4.62 +2018-02-22T14:51:15.245Z,Confirmed,XRP,IN,97.721791,0.977218,01682B3B90C3E19FCA47A1208CBEF9E8F54E259D8F6ACAF2287CEF8E3393132B,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,11.95,10.17 +2018-02-22T12:42:16.203Z,Confirmed,XRP,IN,65.726233,0.657262,50ECBA1102200D7819B2CFE35157F14B5BED6FA3BA8B83D0CD875056D09EA36B,XRP 2,66247FCB8869131BCE59253A2532E2F1F5BF12AA52765F577132A611BB125741,USD,8.04,6.84" `; diff --git a/libs/ledger-live-common/src/__tests__/migration/account-migration.ts b/libs/ledger-live-common/src/__tests__/migration/account-migration.ts index deb68118f422..6981327ebd44 100644 --- a/libs/ledger-live-common/src/__tests__/migration/account-migration.ts +++ b/libs/ledger-live-common/src/__tests__/migration/account-migration.ts @@ -139,7 +139,6 @@ const getMockAccount = (currencyId: string, address: string): Account => { const currency = getCryptoCurrencyById(currencyId); return { - name: "mockAccount", type: "Account", id: encodeAccountId({ type: "js", @@ -162,7 +161,6 @@ const getMockAccount = (currencyId: string, address: string): Account => { freshAddresses: [], seedIdentifier: "", index: 0, - starred: false, used: true, operationsCount: 0, pendingOperations: [], diff --git a/libs/ledger-live-common/src/__tests__/test-helpers/bridge.ts b/libs/ledger-live-common/src/__tests__/test-helpers/bridge.ts index 0fc9c59f3fc2..199908ab2904 100644 --- a/libs/ledger-live-common/src/__tests__/test-helpers/bridge.ts +++ b/libs/ledger-live-common/src/__tests__/test-helpers/bridge.ts @@ -31,6 +31,7 @@ import type { } from "@ledgerhq/types-live"; import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; import { firstValueFrom } from "rxjs"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const warnDev = process.env.CI ? (..._args) => {} : (...msg) => console.warn(...msg); // FIXME move out into DatasetTest to be defined in @@ -351,14 +352,16 @@ export function testBridge(data: DatasetTest): v const makeTest = (name, fn) => { if (accountData.FIXME_tests && accountData.FIXME_tests.some(r => name.match(r))) { - warnDev("FIXME test was skipped. " + name + " for " + initialAccount.name); + warnDev( + "FIXME test was skipped. " + name + " for " + getDefaultAccountName(initialAccount), + ); return; } test(name, fn); }; - describe(impl + " bridge on account " + initialAccount.name, () => { + describe(impl + " bridge on account " + getDefaultAccountName(initialAccount), () => { describe("sync", () => { makeTest("succeed", async () => { const account = await getSynced(); diff --git a/libs/ledger-live-common/src/account/formatters.ts b/libs/ledger-live-common/src/account/formatters.ts index 046277633fb2..fc826161312f 100644 --- a/libs/ledger-live-common/src/account/formatters.ts +++ b/libs/ledger-live-common/src/account/formatters.ts @@ -1,11 +1,7 @@ import invariant from "invariant"; import { BigNumber } from "bignumber.js"; import { toAccountRaw } from "./serialization"; -import { - getAccountCurrency, - getAccountName, - getAccountUnit, -} from "@ledgerhq/coin-framework/account/index"; +import { getAccountCurrency, getAccountUnit } from "@ledgerhq/coin-framework/account/index"; import { getOperationAmountNumberWithInternals } from "../operation"; import { formatCurrencyUnit } from "../currencies"; import { getOperationAmountNumber } from "../operation"; @@ -14,6 +10,7 @@ import byFamily from "../generated/formatters"; import { nftsByCollections } from "@ledgerhq/live-nft"; import type { Unit } from "@ledgerhq/types-cryptoassets"; import type { Account, Operation, ProtoNFT } from "@ledgerhq/types-live"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const styling = { bold: (str: string) => `\x1b[1m${str}\x1b[22m`, @@ -105,7 +102,7 @@ const cliFormat = (account, level?: string) => { " " + ta.type + " " + - getAccountName(ta) + + getDefaultAccountName(ta) + ": " + formatCurrencyUnit(getAccountUnit(ta), ta.balance, { showCode: true, diff --git a/libs/ledger-live-common/src/account/helpers.ts b/libs/ledger-live-common/src/account/helpers.ts index a61ba0e40538..d0626d08ea74 100644 --- a/libs/ledger-live-common/src/account/helpers.ts +++ b/libs/ledger-live-common/src/account/helpers.ts @@ -5,7 +5,6 @@ import { TronAccount } from "../families/tron/types"; import { CosmosAccount } from "../families/cosmos/types"; import { getMainAccount, - getAccountName, getAccountCurrency, getAccountUnit, getFeesCurrency, @@ -35,7 +34,6 @@ import { // FIXME Remove this redundant export and import all from coin-framework export { getMainAccount, - getAccountName, getAccountCurrency, getAccountUnit, getFeesCurrency, diff --git a/libs/ledger-live-common/src/account/importAccounts.integration.test.ts b/libs/ledger-live-common/src/account/importAccounts.integration.test.ts deleted file mode 100644 index 8869f09d96e7..000000000000 --- a/libs/ledger-live-common/src/account/importAccounts.integration.test.ts +++ /dev/null @@ -1,190 +0,0 @@ -import "../__tests__/test-helpers/setup"; -import { makeBridgeCacheSystem } from "../bridge/cache"; -import { accountToAccountData } from "../cross"; -import { - importAccountsMakeItems, - importAccountsReduce, - fromAccountRaw, - syncNewAccountsToImport, -} from "."; -import { Account, DerivationMode } from "@ledgerhq/types-live"; - -jest.setTimeout(200000); - -test("importAccounts with a set of real data", async () => { - const accounts = [ - { - id: "js:2:algorand:32PI2C5HLHMVUF5KMNURLGCTYVIOVJJ2NLHLZ2PIMK567MKMS4RXBSVWQI:", - seedIdentifier: "32PI2C5HLHMVUF5KMNURLGCTYVIOVJJ2NLHLZ2PIMK567MKMS4RXBSVWQI", - name: "Algorand legacy 32PI2C5H...RXBSVWQI", - starred: true, - used: true, - derivationMode: "" as DerivationMode, - index: 0, - freshAddress: "32PI2C5HLHMVUF5KMNURLGCTYVIOVJJ2NLHLZ2PIMK567MKMS4RXBSVWQI", - freshAddressPath: "44'/283'/0'/0/0", - freshAddresses: [], - blockHeight: 23066613, - creationDate: "2022-02-04T13:12:58.000Z", - operationsCount: 184, - operations: [], - pendingOperations: [], - currencyId: "algorand", - unitMagnitude: 6, - lastSyncDate: "2022-08-26T09:24:27.076Z", - balance: "2100190", - spendableBalance: "190", - xpub: "32PI2C5HLHMVUF5KMNURLGCTYVIOVJJ2NLHLZ2PIMK567MKMS4RXBSVWQI", - subAccounts: [], - algorandResources: { rewards: "190", nbAssets: 20 }, - swapHistory: [], - }, - { - id: "js:2:tron:TRbtdwHowocq8ThZbRnTHgK4JG5sx3fFCK:", - seedIdentifier: "TRbtdwHowocq8ThZbRnTHgK4JG5sx3fFCK", - name: "Tron legacy TRbtdwHo...5sx3fFCK", - starred: true, - used: true, - derivationMode: "" as DerivationMode, - index: 0, - freshAddress: "TRbtdwHowocq8ThZbRnTHgK4JG5sx3fFCK", - freshAddressPath: "44'/195'/0'/0/0", - freshAddresses: [], - blockHeight: 43642499, - creationDate: "2022-07-19T15:32:12.000Z", - operationsCount: 41, - operations: [], - pendingOperations: [], - currencyId: "tron", - unitMagnitude: 6, - lastSyncDate: "2022-08-26T09:24:59.492Z", - balance: "0", - spendableBalance: "0", - xpub: "TRbtdwHowocq8ThZbRnTHgK4JG5sx3fFCK", - subAccounts: [], - tronResources: { - frozen: {}, - unFrozen: {}, - legacyFrozen: {}, - delegatedFrozen: {}, - votes: [], - tronPower: 0, - energy: "0", - bandwidth: { - freeUsed: "0", - freeLimit: "1500", - gainedUsed: "0", - gainedLimit: "0", - }, - unwithdrawnReward: "2730", - lastVotedDate: "2022-07-22T14:39:51.000Z", - cacheTransactionInfoById: {}, - }, - swapHistory: [], - }, - { - id: "js:2:polkadot:15jLBbe9LD6VSUYFkV5Fmo5LhZU5cns9E6g8qcDv5KrKM1eP:polkadotbip44", - seedIdentifier: "15jLBbe9LD6VSUYFkV5Fmo5LhZU5cns9E6g8qcDv5KrKM1eP", - name: "Polkadot polkadotbip44 15jLBbe9...5KrKM1eP", - starred: true, - used: true, - derivationMode: "" as DerivationMode, // polkadotbip44 - index: 0, - freshAddress: "15jLBbe9LD6VSUYFkV5Fmo5LhZU5cns9E6g8qcDv5KrKM1eP", - freshAddressPath: "44'/354'/0'/0'/0'", - freshAddresses: [], - blockHeight: 11771108, - creationDate: "2022-02-24T14:39:00.007Z", - operationsCount: 65, - operations: [], - pendingOperations: [], - currencyId: "polkadot", - unitMagnitude: 10, - lastSyncDate: "2022-08-26T09:25:00.713Z", - balance: "15512511464", - spendableBalance: "15512511464", - xpub: "15jLBbe9LD6VSUYFkV5Fmo5LhZU5cns9E6g8qcDv5KrKM1eP", - polkadotResources: { - controller: null, - stash: null, - nonce: 63, - lockedBalance: "0", - unlockedBalance: "0", - unlockingBalance: "0", - unlockings: [], - nominations: [], - }, - swapHistory: [], - }, - { - id: "js:2:bsc:0xa22CA840265d3C5CB1846e419B14c6a6CdD06FAB:", - seedIdentifier: "0xa22CA840265d3C5CB1846e419B14c6a6CdD06FAB", - name: "Binance Smart Chain legacy 0xa22CA8...CdD06FAB", - starred: true, - used: true, - derivationMode: "" as DerivationMode, - index: 0, - freshAddress: "0xa22CA840265d3C5CB1846e419B14c6a6CdD06FAB", - freshAddressPath: "44'/60'/0'/0/0", - freshAddresses: [], - blockHeight: 20775454, - syncHash: "[]_655", - creationDate: "2022-02-04T13:11:32.001Z", - operationsCount: 21, - operations: [], - pendingOperations: [], - currencyId: "bsc", - unitMagnitude: 18, - lastSyncDate: "2022-08-26T09:25:01.109Z", - balance: "3128019430408477", - spendableBalance: "3128019430408477", - xpub: "0xa22CA840265d3C5CB1846e419B14c6a6CdD06FAB", - subAccounts: [], - swapHistory: [], - }, - ].map(fromAccountRaw); - - const localCache = {}; - const bridgeCache = makeBridgeCacheSystem({ - saveData(c, d) { - localCache[c.id] = d; - return Promise.resolve(); - }, - - getData(c) { - return Promise.resolve(localCache[c.id]); - }, - }); - - const result = { - accounts: accounts.map(accountToAccountData), - settings: { currenciesSettings: {}, pairExchanges: {} }, - meta: { exporterName: "Test", exporterVersion: "0" }, - }; - - const accountsState = []; - - const items = importAccountsMakeItems({ - result, - accounts: accountsState, - }); - const selectedAccounts = accounts.map(a => a.id); - const syncResult = await syncNewAccountsToImport({ items, selectedAccounts }, bridgeCache); - const reduced = importAccountsReduce(accountsState, { - items, - selectedAccounts, - syncResult, - }); - expect(reduced.length).toEqual(4); - expect((reduced[0] as AlgorandAccount).algorandResources).toBeDefined(); - expect((reduced[1] as TronAccount).tronResources).toBeDefined(); - expect((reduced[2] as PolkadotAccount).polkadotResources).toBeDefined(); - expect(reduced[0].operations.length).toBeGreaterThan(1); - expect(reduced[1].operations.length).toBeGreaterThan(1); - expect(reduced[2].operations.length).toBeGreaterThan(1); - expect(reduced[3].operations.length).toBeGreaterThan(1); -}); - -type AlgorandAccount = Account & { algorandResources: any }; -type TronAccount = Account & { tronResources: any }; -type PolkadotAccount = Account & { polkadotResources: any }; diff --git a/libs/ledger-live-common/src/account/importAccounts.test.ts b/libs/ledger-live-common/src/account/importAccounts.test.ts deleted file mode 100644 index 6cc0badeda4e..000000000000 --- a/libs/ledger-live-common/src/account/importAccounts.test.ts +++ /dev/null @@ -1,184 +0,0 @@ -import type { AccountRaw } from "@ledgerhq/types-live"; -import { importAccountsMakeItems, importAccountsReduce, fromAccountRaw } from "."; -import { setSupportedCurrencies } from "../currencies"; -import { WALLET_API_VERSION } from "../wallet-api/constants"; -import { setWalletAPIVersion } from "../wallet-api/version"; - -setWalletAPIVersion(WALLET_API_VERSION); - -setSupportedCurrencies(["ethereum"]); -describe("importAccountsMakeItems", () => { - test("importing ethereum accounts", () => { - const result = { - meta: { - exporterName: "desktop", - exporterVersion: "1.12.0", - }, - accounts: [ - { - id: "js:1:ethereum:0x01:", - name: "Ethereum 1", - seedIdentifier: "seed", - derivationMode: "", - freshAddress: "0x01", - currencyId: "ethereum", - index: 0, - balance: "51281813126095913", - swapHistory: [], - }, - { - id: "js:1:ethereum:0x02:", - name: "Ethereum 2", - seedIdentifier: "seed", - derivationMode: "", - freshAddress: "0x02", - currencyId: "ethereum", - index: 1, - balance: "1081392000000000", - swapHistory: [], - }, - { - id: "js:1:ethereum:0x04:", - name: "Ethereum 4", - seedIdentifier: "seed", - derivationMode: "", - freshAddress: "0x04", - currencyId: "ethereum", - index: 3, - balance: "1000000000000000", - swapHistory: [], - }, - { - id: "js:1:ethereum:0x03:", - name: "ETH3 name edited", - seedIdentifier: "seed", - derivationMode: "", - freshAddress: "0x03", - currencyId: "ethereum", - index: 2, - balance: "0", - swapHistory: [], - }, - { - id: "js:1:ethereum:0x05:", - name: "Ethereum 5", - seedIdentifier: "seed", - derivationMode: "", - freshAddress: "0x05", - currencyId: "ethereum", - index: 4, - balance: "0", - swapHistory: [], - }, - ], - settings: { - counterValue: "USD", - currenciesSettings: {}, - pairExchanges: {}, - developerModeEnabled: false, - }, - }; - const accounts = [ - { - id: "js:1:ethereum:0x01:", - seedIdentifier: "0x01", - name: "Ethereum 1", - derivationMode: "", - index: 0, - freshAddress: "0x01", - freshAddressPath: "44'/60'/0'/0/0", - freshAddresses: [], - blockHeight: 8168983, - operations: [], - pendingOperations: [], - currencyId: "ethereum", - unitMagnitude: 18, - lastSyncDate: "2019-07-17T15:13:30.318Z", - balance: "51281813126095910", - }, - { - id: "js:1:ethereum:0x02:", - seedIdentifier: "0x02", - name: "Ethereum 2", - derivationMode: "", - index: 1, - freshAddress: "0x02", - freshAddressPath: "44'/60'/1'/0/0", - freshAddresses: [], - blockHeight: 8168983, - operations: [], - pendingOperations: [], - currencyId: "ethereum", - unitMagnitude: 18, - lastSyncDate: "2019-07-17T15:13:29.306Z", - balance: "1081392000000000", - }, - { - id: "js:1:ethereum:0x03:", - seedIdentifier: "seed", - name: "Ethereum 3", - derivationMode: "", - index: 2, - freshAddress: "0x03", - freshAddressPath: "44'/60'/2'/0/0", - freshAddresses: [], - blockHeight: 8168983, - operations: [], - pendingOperations: [], - currencyId: "ethereum", - unitMagnitude: 18, - lastSyncDate: "2019-07-17T15:13:29.306Z", - balance: "1081392000000000", - }, - ].map(fromAccountRaw); - const items = importAccountsMakeItems({ - result, - accounts, - }); - expect(items).toMatchObject([ - { - initialAccountId: "js:1:ethereum:0x04:", - account: { id: "js:1:ethereum:0x04:", name: "Ethereum 4" }, - mode: "create", - }, - { - initialAccountId: "js:1:ethereum:0x05:", - account: { id: "js:1:ethereum:0x05:", name: "Ethereum 5" }, - mode: "create", - }, - { - initialAccountId: "js:1:ethereum:0x03:", - account: { id: "js:1:ethereum:0x03:", name: "ETH3 name edited" }, - mode: "update", - }, - { - initialAccountId: "js:1:ethereum:0x01:", - account: { id: "js:1:ethereum:0x01:", name: "Ethereum 1" }, - mode: "id", - }, - { - initialAccountId: "js:1:ethereum:0x02:", - account: { id: "js:1:ethereum:0x02:", name: "Ethereum 2" }, - mode: "id", - }, - ]); - const syncResult = { - failed: {}, - synchronized: {}, - }; - result.accounts.forEach(a => { - syncResult.synchronized[a.id] = a; - }); - const reduced = importAccountsReduce(accounts, { - items, - selectedAccounts: ["js:1:ethereum:0x03:", "js:1:ethereum:0x02:", "js:1:ethereum:0x05:"], - syncResult, - }); - expect(reduced).toMatchObject([ - { id: "js:1:ethereum:0x01:", name: "Ethereum 1" }, - { id: "js:1:ethereum:0x02:", name: "Ethereum 2" }, - { id: "js:1:ethereum:0x03:", name: "ETH3 name edited" }, - { id: "js:1:ethereum:0x05:", name: "Ethereum 5" }, - ]); - }); -}); diff --git a/libs/ledger-live-common/src/account/index.ts b/libs/ledger-live-common/src/account/index.ts index 4bfd3f63c4de..92c67aec616e 100644 --- a/libs/ledger-live-common/src/account/index.ts +++ b/libs/ledger-live-common/src/account/index.ts @@ -1,11 +1,7 @@ export * from "./helpers"; -export * from "./addAccounts"; export * from "./support"; -export * from "./importAccounts"; export * from "./serialization"; export * from "@ledgerhq/coin-framework/account/accountId"; -export * from "@ledgerhq/coin-framework/account/accountName"; -export * from "@ledgerhq/coin-framework/account/ordering"; export * from "@ledgerhq/coin-framework/account/groupOperations"; export * from "@ledgerhq/coin-framework/account/pending"; export * from "./formatters"; diff --git a/libs/ledger-live-common/src/account/serialization.ts b/libs/ledger-live-common/src/account/serialization.ts index c6ce8971ef79..9f274dd31625 100644 --- a/libs/ledger-live-common/src/account/serialization.ts +++ b/libs/ledger-live-common/src/account/serialization.ts @@ -5,6 +5,7 @@ import type { Account, AccountBridge, AccountRaw, + AccountUserData, BalanceHistory, BalanceHistoryRaw, Operation, @@ -70,11 +71,15 @@ export function fromAccountRaw(rawAccount: AccountRaw): Account { fromOperationExtraRaw: bridge.fromOperationExtraRaw, }); } -export function toAccountRaw(account: Account): AccountRaw { - const bridge = getAccountBridge(account); - return commonToAccountRaw(account, { - assignToAccountRaw: bridge.assignToAccountRaw, - toOperationExtraRaw: bridge.toOperationExtraRaw, - }); +export function toAccountRaw(account: Account, userData?: AccountUserData): AccountRaw { + const bridge = getAccountBridge(account); + return commonToAccountRaw( + account, + { + assignToAccountRaw: bridge.assignToAccountRaw, + toOperationExtraRaw: bridge.toOperationExtraRaw, + }, + userData, + ); } diff --git a/libs/ledger-live-common/src/bot/engine.ts b/libs/ledger-live-common/src/bot/engine.ts index 7d68f3402dd5..48c24a1208b4 100644 --- a/libs/ledger-live-common/src/bot/engine.ts +++ b/libs/ledger-live-common/src/bot/engine.ts @@ -42,7 +42,6 @@ import type { DeviceActionEvent, } from "./types"; import { makeBridgeCacheSystem } from "../bridge/cache"; -import { accountDataToAccount, accountToAccountData } from "../cross"; import type { Account, AccountLike, @@ -53,6 +52,7 @@ import type { } from "@ledgerhq/types-live"; import type { Transaction, TransactionStatus } from "../generated/types"; import { botTest } from "@ledgerhq/coin-framework/bot/bot-test-context"; +import { getDefaultAccountNameForCurrencyIndex } from "@ledgerhq/live-wallet/accountName"; let appCandidates; const localCache = {}; @@ -67,14 +67,6 @@ const cache = makeBridgeCacheSystem({ }, }); -// simulate the export/inport of an account -async function crossAccount(account: Account): Promise { - const a = accountDataToAccount(accountToAccountData(account)); - a.name += " cross"; - const synced = await syncAccount(a); - return synced; -} - const defaultScanAccountsRetries = 2; const delayBetweenScanAccountRetries = 5000; @@ -183,11 +175,6 @@ export async function runWithAppSpec( ); } - // "Migrate" the FIRST and every {crossAccountFrequency} account to simulate an export/import (same logic as export to mobile) – default to every 10 - // this is made a subset of the accounts to help identify problem that would be specific to the "cross" or not. - for (let i = 0; i < accounts.length; i += spec.crossAccountFrequency || 10) { - accounts[i] = await crossAccount(accounts[i]); - } appReport.accountsBefore = accounts; if (!spec.allowEmptyAccounts) { invariant(accounts.length > 0, "unexpected empty accounts for " + currency.name); @@ -391,12 +378,17 @@ export async function runOnAccount({ const accountBridge = getAccountBridge(account); const accountBeforeTransaction = account; report.account = account; - log("engine", `spec ${spec.name}/${account.name}`); + log("engine", `spec ${spec.name}/${getDefaultAccountNameForCurrencyIndex(account)}`); const maxSpendable = await accountBridge.estimateMaxSpendable({ account, }); report.maxSpendable = maxSpendable; - log("engine", `spec ${spec.name}/${account.name} maxSpendable=${maxSpendable.toString()}`); + log( + "engine", + `spec ${spec.name}/${getDefaultAccountNameForCurrencyIndex( + account, + )} maxSpendable=${maxSpendable.toString()}`, + ); const candidates: Array<{ mutation: MutationSpec; tx: T; @@ -548,7 +540,7 @@ export async function runOnAccount({ mutationsCount[mutation.name] = (mutationsCount[mutation.name] || 0) + 1; // sign the transaction with speculos - log("engine", `spec ${spec.name}/${account.name} signing`); + log("engine", `spec ${spec.name}/${getDefaultAccountNameForCurrencyIndex(account)} signing`); const signedOperation = await firstValueFrom( accountBridge .signOperation({ @@ -559,7 +551,10 @@ export async function runOnAccount({ .pipe( tap(e => { latestSignOperationEvent = e; - log("engine", `spec ${spec.name}/${account.name}: ${e.type}`); + log( + "engine", + `spec ${spec.name}/${getDefaultAccountNameForCurrencyIndex(account)}: ${e.type}`, + ); }), autoSignTransaction({ transport: device.transport, @@ -604,7 +599,12 @@ export async function runOnAccount({ deepFreezeOperation(optimisticOperation); report.optimisticOperation = optimisticOperation; report.broadcastedTime = now(); - log("engine", `spec ${spec.name}/${account.name}/${optimisticOperation.hash} broadcasted`); + log( + "engine", + `spec ${spec.name}/${getDefaultAccountNameForCurrencyIndex(account)}/${ + optimisticOperation.hash + } broadcasted`, + ); // wait the condition are good (operation confirmed) // test() is run over and over until either timeout is reach OR success @@ -663,7 +663,12 @@ export async function runOnAccount({ report.finalAccount = finalAccount; report.operation = operation; report.confirmedTime = now(); - log("engine", `spec ${spec.name}/${account.name}/${optimisticOperation.hash} confirmed`); + log( + "engine", + `spec ${spec.name}/${getDefaultAccountNameForCurrencyIndex(account)}/${ + optimisticOperation.hash + } confirmed`, + ); const destinationBeforeTransaction = destination; if (destination && mutation.testDestination) { @@ -743,7 +748,13 @@ async function syncAccount(initialAccount: Account): Promise { timeout({ each: 10 * 60 * 1000, with: () => - throwError(() => new Error("account sync timeout for " + initialAccount.name)), + throwError( + () => + new Error( + "account sync timeout for " + + getDefaultAccountNameForCurrencyIndex(initialAccount), + ), + ), }), ), ); @@ -852,7 +863,7 @@ function awaitAccountOperation({ account: Account; value: T; }> { - log("engine", "awaitAccountOperation on " + account.name); + log("engine", "awaitAccountOperation on " + getDefaultAccountNameForCurrencyIndex(account)); let syncCounter = 0; let acc = account; let lastSync = now(); @@ -872,7 +883,10 @@ function awaitAccountOperation({ await delay(Math.max(loopDebounce, targetInterval - spent)); lastSync = now(); - log("engine", "sync #" + syncCounter++ + " on " + account.name); + log( + "engine", + "sync #" + syncCounter++ + " on " + getDefaultAccountNameForCurrencyIndex(account), + ); acc = await syncAccount(acc); const r = await loop(); return r; diff --git a/libs/ledger-live-common/src/bot/index.ts b/libs/ledger-live-common/src/bot/index.ts index af07e2f38bce..ae9ea257e6e9 100644 --- a/libs/ledger-live-common/src/bot/index.ts +++ b/libs/ledger-live-common/src/bot/index.ts @@ -32,6 +32,7 @@ import { Account } from "@ledgerhq/types-live"; import { getContext } from "@ledgerhq/coin-framework/bot/bot-test-context"; import { Transaction } from "../generated/types"; import { sha256 } from "../crypto"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; type Arg = Partial<{ filter: Partial<{ currencies: string[]; families: string[]; mutation: string }>; @@ -734,7 +735,7 @@ export async function bot({ disabled, filter }: Arg = {}): Promise { }); errorCases.forEach((c: MutationReport) => { txt += `in ${c.spec.name}`; - if (c.account) txt += `/${c.account.name}`; + if (c.account) txt += `/${getDefaultAccountName(c.account)}`; if (c.mutation) txt += `/${c.mutation.name}`; txt += ` got ${String(c.error)}\n`; }); diff --git a/libs/ledger-live-common/src/bot/portfolio/process-sync.ts b/libs/ledger-live-common/src/bot/portfolio/process-sync.ts index 4216074f9e06..5f910bc3176f 100644 --- a/libs/ledger-live-common/src/bot/portfolio/process-sync.ts +++ b/libs/ledger-live-common/src/bot/portfolio/process-sync.ts @@ -117,7 +117,7 @@ async function main(): Promise { audit.end(); - const accountsRaw = JSON.stringify(accounts.map(toAccountRaw)); + const accountsRaw = JSON.stringify(accounts.map(a => toAccountRaw(a))); const preloadJSON = JSON.stringify(localCache); audit.setAccountsJSONSize(accountsRaw.length); audit.setPreloadJSONSize(preloadJSON.length); diff --git a/libs/ledger-live-common/src/bridge/cache.ts b/libs/ledger-live-common/src/bridge/cache.ts index 47cc25c20388..a591c04d682b 100644 --- a/libs/ledger-live-common/src/bridge/cache.ts +++ b/libs/ledger-live-common/src/bridge/cache.ts @@ -1,10 +1,8 @@ import { makeLRUCache } from "@ledgerhq/live-network/cache"; import type { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; +import type { BridgeCacheSystem } from "@ledgerhq/types-live"; import { getCurrencyBridge } from "./"; -export type BridgeCacheSystem = { - hydrateCurrency: (currency: CryptoCurrency) => Promise; - prepareCurrency: (currency: CryptoCurrency) => Promise; -}; + const defaultCacheStrategy = { preloadMaxAge: 5 * 60 * 1000, }; diff --git a/libs/ledger-live-common/src/bridge/mockHelpers.ts b/libs/ledger-live-common/src/bridge/mockHelpers.ts index 9c74969e5149..0129c0baab21 100644 --- a/libs/ledger-live-common/src/bridge/mockHelpers.ts +++ b/libs/ledger-live-common/src/bridge/mockHelpers.ts @@ -1,11 +1,9 @@ // TODO makeMockBridge need to be exploded into families (bridge/mock) with utility code shared. import { genOperation } from "@ledgerhq/coin-framework/mocks/account"; -import { SyncError } from "@ledgerhq/errors"; import { Account, AccountBridge, CurrencyBridge, Operation } from "@ledgerhq/types-live"; import { BigNumber } from "bignumber.js"; import Prando from "prando"; import { Observable, of } from "rxjs"; -import { validateNameEdition } from "../account"; import { getEnv } from "@ledgerhq/live-env"; import perFamilyMock from "../generated/mock"; import { genAccount } from "../mock/account"; @@ -20,11 +18,6 @@ export const sync: AccountBridge["sync"] = initialAccount => const accountId = initialAccount.id; const sync = () => { - if (initialAccount.name.includes("crash")) { - o.error(new SyncError("mock failure")); - return; - } - const ops = broadcasted[accountId] || []; broadcasted[accountId] = []; o.next(acc => { @@ -148,8 +141,6 @@ export const scanAccounts: CurrencyBridge["scanAccounts"] = ({ currency }) => date: subtractOneYear(operation.date), })); account.used = isLast ? false : account.used; - account.name = ""; - account.name = validateNameEdition(account); if (isLast) { account.spendableBalance = account.balance = new BigNumber(0); diff --git a/libs/ledger-live-common/src/csvExport.ts b/libs/ledger-live-common/src/csvExport.ts index b23206ef7328..a7a348bc8811 100644 --- a/libs/ledger-live-common/src/csvExport.ts +++ b/libs/ledger-live-common/src/csvExport.ts @@ -6,6 +6,7 @@ import { flattenOperationWithInternalsAndNfts } from "./operation"; import { calculate } from "@ledgerhq/live-countervalues/logic"; import type { CounterValuesState } from "@ledgerhq/live-countervalues/types"; import type { Currency } from "@ledgerhq/types-cryptoassets"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; type Field = { title: string; @@ -63,7 +64,8 @@ const fields: Field[] = [ }, { title: "Account Name", - cell: (account, parentAccount) => getMainAccount(account, parentAccount).name, + // FIXME: we need to inject wallet state if we want the actual user's account name + cell: (account, parentAccount) => getDefaultAccountName(getMainAccount(account, parentAccount)), }, { title: "Account xpub", diff --git a/libs/ledger-live-common/src/exchange/platform/transfer/completeExchange.ts b/libs/ledger-live-common/src/exchange/platform/transfer/completeExchange.ts index f9b8cbf357e9..f18ebfde3586 100644 --- a/libs/ledger-live-common/src/exchange/platform/transfer/completeExchange.ts +++ b/libs/ledger-live-common/src/exchange/platform/transfer/completeExchange.ts @@ -117,9 +117,7 @@ const completeExchange = ( ); } catch (e) { if (e instanceof TransportStatusError && e.statusCode === 0x6a83) { - throw new WrongDeviceForAccount(undefined, { - accountName: mainAccount.name, - }); + throw new WrongDeviceForAccount(); } throw convertTransportError(currentStep, e); diff --git a/libs/ledger-live-common/src/exchange/swap/completeExchange.ts b/libs/ledger-live-common/src/exchange/swap/completeExchange.ts index d27cfd93c44a..10de444f26eb 100644 --- a/libs/ledger-live-common/src/exchange/swap/completeExchange.ts +++ b/libs/ledger-live-common/src/exchange/swap/completeExchange.ts @@ -23,6 +23,7 @@ import type { CompleteExchangeInputSwap, CompleteExchangeRequestEvent } from ".. import { getSwapProvider } from "../providers"; import { convertToAppExchangePartnerKey } from "../providers"; import { CompleteExchangeStep, convertTransportError } from "../error"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const withDevicePromise = (deviceId, fn) => firstValueFrom(withDevice(deviceId)(transport => from(fn(transport)))); @@ -123,7 +124,7 @@ const completeExchange = ( throw new WrongDeviceForAccountPayout( getExchangeErrorMessage(e.statusCode, currentStep), { - accountName: payoutAccount.name, + accountName: getDefaultAccountName(payoutAccount), }, ); } @@ -165,7 +166,7 @@ const completeExchange = ( throw new WrongDeviceForAccountRefund( getExchangeErrorMessage(e.statusCode, currentStep), { - accountName: refundAccount.name, + accountName: getDefaultAccountName(refundAccount), }, ); } diff --git a/libs/ledger-live-common/src/exchange/swap/csvExport.ts b/libs/ledger-live-common/src/exchange/swap/csvExport.ts index b179ba6dc833..a4db51a35791 100644 --- a/libs/ledger-live-common/src/exchange/swap/csvExport.ts +++ b/libs/ledger-live-common/src/exchange/swap/csvExport.ts @@ -1,6 +1,7 @@ import { formatCurrencyUnit } from "../../currencies"; import { getAccountCurrency, getMainAccount } from "../../account"; import type { SwapHistorySection, MappedSwapOperation } from "./types"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; type Field = { title: string; cell: (arg0: MappedSwapOperation) => string; @@ -50,7 +51,7 @@ const fields: Field[] = [ { title: "From account", cell: ({ fromAccount, fromParentAccount }) => - getMainAccount(fromAccount, fromParentAccount).name, + getDefaultAccountName(getMainAccount(fromAccount, fromParentAccount)), }, { title: "From account address", @@ -61,7 +62,8 @@ const fields: Field[] = [ }, { title: "To account", - cell: ({ toAccount, toParentAccount }) => getMainAccount(toAccount, toParentAccount).name, + cell: ({ toAccount, toParentAccount }) => + getDefaultAccountName(getMainAccount(toAccount, toParentAccount)), }, { title: "To account address", diff --git a/libs/ledger-live-common/src/exchange/swap/initSwap.ts b/libs/ledger-live-common/src/exchange/swap/initSwap.ts index 1ea0522664fa..98ad10175314 100644 --- a/libs/ledger-live-common/src/exchange/swap/initSwap.ts +++ b/libs/ledger-live-common/src/exchange/swap/initSwap.ts @@ -29,6 +29,7 @@ import type { InitSwapInput, SwapRequestEvent } from "./types"; import { decodePayloadProtobuf } from "@ledgerhq/hw-app-exchange"; import { getSwapProvider } from "../providers"; import { convertToAppExchangePartnerKey } from "../providers"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; const withDevicePromise = (deviceId, fn) => firstValueFrom(withDevice(deviceId)(transport => from(fn(transport)))); @@ -207,7 +208,7 @@ const initSwap = (input: InitSwapInput): Observable => { } catch (e) { if (e instanceof TransportStatusError && e.statusCode === 0x6a83) { throw new WrongDeviceForAccountPayout(undefined, { - accountName: payoutAccount.name, + accountName: getDefaultAccountName(payoutAccount), }); } @@ -259,7 +260,7 @@ const initSwap = (input: InitSwapInput): Observable => { } catch (e) { if (e instanceof TransportStatusError && e.statusCode === 0x6a83) { throw new WrongDeviceForAccountRefund(undefined, { - accountName: refundAccount.name, + accountName: getDefaultAccountName(refundAccount), }); } diff --git a/libs/ledger-live-common/src/exchange/swap/joinSwapHistories.ts b/libs/ledger-live-common/src/exchange/swap/joinSwapHistories.ts deleted file mode 100644 index 05e84405af4b..000000000000 --- a/libs/ledger-live-common/src/exchange/swap/joinSwapHistories.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { SwapOperation } from "@ledgerhq/types-live"; - -export default ( - existingSwapHistory: SwapOperation[] | null | undefined, - importedSwapHistory: SwapOperation[] | null | undefined, -): SwapOperation[] => { - const usedSwapIds: string[] = []; - const dirtyJoin = [...(existingSwapHistory || []), ...(importedSwapHistory || [])]; - const cleanSwapHistory: SwapOperation[] = []; - - for (let i = dirtyJoin.length - 1; i >= 0; i--) { - // Iterate backwards to prioritise imported swaps - const swapOperation = dirtyJoin[i]; - if (usedSwapIds.includes(swapOperation.swapId)) continue; - usedSwapIds.push(swapOperation.swapId); - cleanSwapHistory.push(swapOperation); - } - - return cleanSwapHistory; -}; diff --git a/libs/ledger-live-common/src/families/algorand/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/algorand/__snapshots__/bridge.integration.test.ts.snap index 2c9428c8a254..c958a3bfd214 100644 --- a/libs/ledger-live-common/src/families/algorand/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/algorand/__snapshots__/bridge.integration.test.ts.snap @@ -18,12 +18,12 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` ], "id": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "index": 0, - "name": "Algorand 1", + "name": "", "nfts": undefined, "operationsCount": 133, "pendingOperations": [], "seedIdentifier": "c8b672d16c497bb097a48f09a9cccf0c4c7d6391acb7a4e7cd3f236fadbef9c4", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -37,7 +37,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 11, "parentId": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/312769", "type": "TokenAccountRaw", @@ -48,7 +48,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/438828", "type": "TokenAccountRaw", @@ -59,7 +59,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/438837", "type": "TokenAccountRaw", @@ -70,7 +70,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/2757561", "type": "TokenAccountRaw", @@ -81,7 +81,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/27165954", "type": "TokenAccountRaw", @@ -92,7 +92,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:algorand:ZC3HFULMJF53BF5ER4E2TTGPBRGH2Y4RVS32JZ6NH4RW7LN67HCE6UBS3Q:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/137594422", "type": "TokenAccountRaw", @@ -113,12 +113,12 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` ], "id": "js:2:algorand:EGZQNDFCXGR3BMP4NDM6ZPLBMY7WSV6GRKOHM6VBJKFLWQ3RQDTE3JYNFE:", "index": 1, - "name": "Algorand 2", + "name": "", "nfts": undefined, "operationsCount": 8, "pendingOperations": [], "seedIdentifier": "c8b672d16c497bb097a48f09a9cccf0c4c7d6391acb7a4e7cd3f236fadbef9c4", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -142,12 +142,12 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` ], "id": "js:2:algorand:ZQVVJ2S4XWS542KXBBVIINOEHIDOEZKZWK725PWFNN2I5RNCUBI53RT2EY:", "index": 2, - "name": "Algorand 3", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "c8b672d16c497bb097a48f09a9cccf0c4c7d6391acb7a4e7cd3f236fadbef9c4", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -171,12 +171,12 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` ], "id": "js:2:algorand:MECOWMKPKH2NWVZTS5V5RQDGFFYBT25KNLOPHG2KUMMNKU6FOHGJT24WBI:", "index": 3, - "name": "Algorand 4", + "name": "", "nfts": undefined, "operationsCount": 44, "pendingOperations": [], "seedIdentifier": "c8b672d16c497bb097a48f09a9cccf0c4c7d6391acb7a4e7cd3f236fadbef9c4", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -190,7 +190,7 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` "operationsCount": 8, "parentId": "js:2:algorand:MECOWMKPKH2NWVZTS5V5RQDGFFYBT25KNLOPHG2KUMMNKU6FOHGJT24WBI:", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "algorand/asa/312769", "type": "TokenAccountRaw", @@ -211,12 +211,12 @@ exports[`algorand currency bridge scanAccounts algorand seed 1 1`] = ` ], "id": "js:2:algorand:MVE6C3XB4JBKXKORC3NLAWFW4M7EY3MADU6L72DADFP4NZBJIAYXGSLN3Y:", "index": 4, - "name": "Algorand 5", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "c8b672d16c497bb097a48f09a9cccf0c4c7d6391acb7a4e7cd3f236fadbef9c4", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, diff --git a/libs/ledger-live-common/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap index 6736868fe77c..0b47137c9eed 100644 --- a/libs/ledger-live-common/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap @@ -23,7 +23,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04985c77e031db7909b5bab541828faac7719bc3ac205907da16f379e693eb012217195cbb49c53854d1bfec204470abc73ab4fb51338653e5236c6a6ae57d3442", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -51,7 +51,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04985c77e031db7909b5bab541828faac7719bc3ac205907da16f379e693eb012217195cbb49c53854d1bfec204470abc73ab4fb51338653e5236c6a6ae57d3442", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -79,7 +79,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04985c77e031db7909b5bab541828faac7719bc3ac205907da16f379e693eb012217195cbb49c53854d1bfec204470abc73ab4fb51338653e5236c6a6ae57d3442", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -107,7 +107,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04bceefa855d60d97cd38688cffdc76e52a663e71db885535d0f62abcea9811148f48e2e21093058a41324c268024eb042c3fa427e9f4f6a60f1af9eb361a05a5b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -135,7 +135,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0412f62e549eee10ea7df9c9b1acfa6d77abb7424c057d7d725f418e2124dcd8662e21fde9e0b5a4cb731933a68ca406f6efcdadc8fb52afdb9ae422a68cfe5bde", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -163,7 +163,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0412f62e549eee10ea7df9c9b1acfa6d77abb7424c057d7d725f418e2124dcd8662e21fde9e0b5a4cb731933a68ca406f6efcdadc8fb52afdb9ae422a68cfe5bde", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -191,7 +191,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0412f62e549eee10ea7df9c9b1acfa6d77abb7424c057d7d725f418e2124dcd8662e21fde9e0b5a4cb731933a68ca406f6efcdadc8fb52afdb9ae422a68cfe5bde", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -219,7 +219,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04238878d371ce61cdd04d22ccab50c542e94ffa7a27d02d6bcefaa22e4fcee6db4c2029fd4de0b595e98002c0be01fc1fbd3568671e394c97a6d52c3d4c113fb5", "spendableBalance": "2757", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -247,7 +247,7 @@ exports[`bitcoin currency bridge scanAccounts bitcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04238878d371ce61cdd04d22ccab50c542e94ffa7a27d02d6bcefaa22e4fcee6db4c2029fd4de0b595e98002c0be01fc1fbd3568671e394c97a6d52c3d4c113fb5", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -11442,7 +11442,7 @@ exports[`bitcoin_cash currency bridge scanAccounts bitcoin_cash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04238878d371ce61cdd04d22ccab50c542e94ffa7a27d02d6bcefaa22e4fcee6db4c2029fd4de0b595e98002c0be01fc1fbd3568671e394c97a6d52c3d4c113fb5", "spendableBalance": "7707", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -11470,7 +11470,7 @@ exports[`bitcoin_cash currency bridge scanAccounts bitcoin_cash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04884ed3fe628a8487f782f97f38e7a9f014e624f1ea679951cf3a67445ea33fb334f4cc19e6c421b3ef9943d526cd4fbfebacebe8a62cc45db79a33d3ab04bd47", "spendableBalance": "99774", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -11498,7 +11498,7 @@ exports[`bitcoin_cash currency bridge scanAccounts bitcoin_cash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04884ed3fe628a8487f782f97f38e7a9f014e624f1ea679951cf3a67445ea33fb334f4cc19e6c421b3ef9943d526cd4fbfebacebe8a62cc45db79a33d3ab04bd47", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14032,7 +14032,7 @@ exports[`bitcoin_gold currency bridge scanAccounts bitcoin_gold seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04238878d371ce61cdd04d22ccab50c542e94ffa7a27d02d6bcefaa22e4fcee6db4c2029fd4de0b595e98002c0be01fc1fbd3568671e394c97a6d52c3d4c113fb5", "spendableBalance": "2593800", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14060,7 +14060,7 @@ exports[`bitcoin_gold currency bridge scanAccounts bitcoin_gold seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0412f62e549eee10ea7df9c9b1acfa6d77abb7424c057d7d725f418e2124dcd8662e21fde9e0b5a4cb731933a68ca406f6efcdadc8fb52afdb9ae422a68cfe5bde", "spendableBalance": "1757516", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14088,7 +14088,7 @@ exports[`bitcoin_gold currency bridge scanAccounts bitcoin_gold seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04465a1e085f90dd90d6aaae53fe772371d8e8f60e93b68d4b5e4ebe345e8bcdd4adc5b0ffc9047859a33f3944220203bd093cf24e0dd22342b580c7f66c3971b0", "spendableBalance": "1805064", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14116,7 +14116,7 @@ exports[`bitcoin_gold currency bridge scanAccounts bitcoin_gold seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04465a1e085f90dd90d6aaae53fe772371d8e8f60e93b68d4b5e4ebe345e8bcdd4adc5b0ffc9047859a33f3944220203bd093cf24e0dd22342b580c7f66c3971b0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14144,7 +14144,7 @@ exports[`bitcoin_gold currency bridge scanAccounts bitcoin_gold seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04ff80c3dcdf1aa6c92a101510dd9b830718875670fb593a7dd399a2d52af4816142b2f9072f6b025bd95a2638ed76209eff811b9308c272daafed4cf262a54f5a", "spendableBalance": "568927", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14172,7 +14172,7 @@ exports[`bitcoin_gold currency bridge scanAccounts bitcoin_gold seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04ff80c3dcdf1aa6c92a101510dd9b830718875670fb593a7dd399a2d52af4816142b2f9072f6b025bd95a2638ed76209eff811b9308c272daafed4cf262a54f5a", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14908,7 +14908,7 @@ exports[`dash currency bridge scanAccounts dash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04b86738cee704df2efcbe8da0c8021dd8bff53a2b95a4f5ca586cd8b26af2e79f7be8cb35b62bad7560807414d8e80363f917d1c3cd6d5d10f8c8df347a463c5c", "spendableBalance": "74296", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14936,7 +14936,7 @@ exports[`dash currency bridge scanAccounts dash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04b86738cee704df2efcbe8da0c8021dd8bff53a2b95a4f5ca586cd8b26af2e79f7be8cb35b62bad7560807414d8e80363f917d1c3cd6d5d10f8c8df347a463c5c", "spendableBalance": "349548", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -14964,7 +14964,7 @@ exports[`dash currency bridge scanAccounts dash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04b86738cee704df2efcbe8da0c8021dd8bff53a2b95a4f5ca586cd8b26af2e79f7be8cb35b62bad7560807414d8e80363f917d1c3cd6d5d10f8c8df347a463c5c", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -15970,7 +15970,7 @@ exports[`decred currency bridge scanAccounts decred seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "045542c1076de9cc128a3cb5eed33d80a916072031a71ebe3c5b77b2a71adf44468e4b657ee017692092ef75f5b61c973e96aea5f6270caac8732d2ad226ffca14", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -15998,7 +15998,7 @@ exports[`decred currency bridge scanAccounts decred seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "045542c1076de9cc128a3cb5eed33d80a916072031a71ebe3c5b77b2a71adf44468e4b657ee017692092ef75f5b61c973e96aea5f6270caac8732d2ad226ffca14", "spendableBalance": "619024", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -16026,7 +16026,7 @@ exports[`decred currency bridge scanAccounts decred seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "045542c1076de9cc128a3cb5eed33d80a916072031a71ebe3c5b77b2a71adf44468e4b657ee017692092ef75f5b61c973e96aea5f6270caac8732d2ad226ffca14", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -16054,7 +16054,7 @@ exports[`decred currency bridge scanAccounts decred seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "045542c1076de9cc128a3cb5eed33d80a916072031a71ebe3c5b77b2a71adf44468e4b657ee017692092ef75f5b61c973e96aea5f6270caac8732d2ad226ffca14", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -20924,7 +20924,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "044e2d9a5ef3b18f29447cd8583e9ced0d0ea56c70d1f4b78689b007428903be309e1c7b5ee9f1350b0a32812904d46269d520128a606ee0b2774aecb0370c4e52", "spendableBalance": "2302647120", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -20952,7 +20952,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "044e2d9a5ef3b18f29447cd8583e9ced0d0ea56c70d1f4b78689b007428903be309e1c7b5ee9f1350b0a32812904d46269d520128a606ee0b2774aecb0370c4e52", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -20980,7 +20980,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f5b072bf6220a4788ff43ee9b0b12bc18384bbf5348883f307ee5b3516ba50caaef64ab0635c753c0afebe4c1a8a3f318a427dbd3ac20a6bdce014ebe23a463b", "spendableBalance": "565825271", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -21008,7 +21008,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f5b072bf6220a4788ff43ee9b0b12bc18384bbf5348883f307ee5b3516ba50caaef64ab0635c753c0afebe4c1a8a3f318a427dbd3ac20a6bdce014ebe23a463b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -21036,7 +21036,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f5b072bf6220a4788ff43ee9b0b12bc18384bbf5348883f307ee5b3516ba50caaef64ab0635c753c0afebe4c1a8a3f318a427dbd3ac20a6bdce014ebe23a463b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -21064,7 +21064,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f84e496b260969a531d4f3a8d47ce995a27cd99c9d59f7955147f6310d23766dd3dfa64d18f8716b9ac9e977b9f14eb83d9a8470e9545796a8a210c9e0854cb6", "spendableBalance": "4818737648", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -21092,7 +21092,7 @@ exports[`digibyte currency bridge scanAccounts digibyte seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f84e496b260969a531d4f3a8d47ce995a27cd99c9d59f7955147f6310d23766dd3dfa64d18f8716b9ac9e977b9f14eb83d9a8470e9545796a8a210c9e0854cb6", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -22845,7 +22845,7 @@ exports[`dogecoin currency bridge scanAccounts dogecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0416cc9a6e8e778fb11883b788f886766aecf972f34e10350e394d3dddf90b2d2297487eed3c0d53289c95d61616f258e76a8bb9f17cfef6512d390b90424ab8ab", "spendableBalance": "4988700000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -22873,7 +22873,7 @@ exports[`dogecoin currency bridge scanAccounts dogecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0416cc9a6e8e778fb11883b788f886766aecf972f34e10350e394d3dddf90b2d2297487eed3c0d53289c95d61616f258e76a8bb9f17cfef6512d390b90424ab8ab", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -22901,7 +22901,7 @@ exports[`dogecoin currency bridge scanAccounts dogecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0416cc9a6e8e778fb11883b788f886766aecf972f34e10350e394d3dddf90b2d2297487eed3c0d53289c95d61616f258e76a8bb9f17cfef6512d390b90424ab8ab", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -23527,7 +23527,7 @@ exports[`komodo currency bridge scanAccounts komodo seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f02ac8add1eb928d983bdbe3837b03978813d8512e50a75240583b6fc5559d235142e50727d68e101a41baf94481a863bf1b2658bcce2b8b1e82b03f4646e1ad", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -23555,7 +23555,7 @@ exports[`komodo currency bridge scanAccounts komodo seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f02ac8add1eb928d983bdbe3837b03978813d8512e50a75240583b6fc5559d235142e50727d68e101a41baf94481a863bf1b2658bcce2b8b1e82b03f4646e1ad", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -23583,7 +23583,7 @@ exports[`komodo currency bridge scanAccounts komodo seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f02ac8add1eb928d983bdbe3837b03978813d8512e50a75240583b6fc5559d235142e50727d68e101a41baf94481a863bf1b2658bcce2b8b1e82b03f4646e1ad", "spendableBalance": "2745254", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -23611,7 +23611,7 @@ exports[`komodo currency bridge scanAccounts komodo seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04f02ac8add1eb928d983bdbe3837b03978813d8512e50a75240583b6fc5559d235142e50727d68e101a41baf94481a863bf1b2658bcce2b8b1e82b03f4646e1ad", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -27947,7 +27947,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "045e6b1f8055c0b1b54e35cfe61793cdf492d153ecd4184f16e0d50286750b78940bd4bf3f55072bd3c5f665b106979b562e4f55d5c19dafac72022bb9e869c506", "spendableBalance": "2183515", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -27975,7 +27975,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "045e6b1f8055c0b1b54e35cfe61793cdf492d153ecd4184f16e0d50286750b78940bd4bf3f55072bd3c5f665b106979b562e4f55d5c19dafac72022bb9e869c506", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -28003,7 +28003,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04921553e9c4ff6ef39e98f2e8a7719d76e6ecdc67cbb65dcdfd4d04b7e0386524daf087032c6a2ab4280d343d8f4d086e1ef78d9acc1e2464282feb75abf624aa", "spendableBalance": "462167", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -28031,7 +28031,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04921553e9c4ff6ef39e98f2e8a7719d76e6ecdc67cbb65dcdfd4d04b7e0386524daf087032c6a2ab4280d343d8f4d086e1ef78d9acc1e2464282feb75abf624aa", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -28059,7 +28059,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04921553e9c4ff6ef39e98f2e8a7719d76e6ecdc67cbb65dcdfd4d04b7e0386524daf087032c6a2ab4280d343d8f4d086e1ef78d9acc1e2464282feb75abf624aa", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -28087,7 +28087,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04fb4805746848cbf5abdf143659a6ceb5ed0f894bd2a0a76a881b03e2f9be00d910c746046fdd40c1ad48b6b0479c4410248f6d3d625793865e13ff3f9bcc861f", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -28115,7 +28115,7 @@ exports[`litecoin currency bridge scanAccounts litecoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04fb4805746848cbf5abdf143659a6ceb5ed0f894bd2a0a76a881b03e2f9be00d910c746046fdd40c1ad48b6b0479c4410248f6d3d625793865e13ff3f9bcc861f", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -30289,7 +30289,7 @@ exports[`peercoin currency bridge scanAccounts peercoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04bf3614e4ebe909f34b3b87cf41e63647dd1266704fcbf28f7037836c129962fdc6ead43b3811ec109d710415f7cb2260e542ee8711776512fe22979e629bea5b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -30317,7 +30317,7 @@ exports[`peercoin currency bridge scanAccounts peercoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04bf3614e4ebe909f34b3b87cf41e63647dd1266704fcbf28f7037836c129962fdc6ead43b3811ec109d710415f7cb2260e542ee8711776512fe22979e629bea5b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -30345,7 +30345,7 @@ exports[`peercoin currency bridge scanAccounts peercoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04bf3614e4ebe909f34b3b87cf41e63647dd1266704fcbf28f7037836c129962fdc6ead43b3811ec109d710415f7cb2260e542ee8711776512fe22979e629bea5b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -30573,7 +30573,7 @@ exports[`pivx currency bridge scanAccounts pivx seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0416e1de49a4dd716985e2992bfaad4e7db30a6adbf63dafbd6607e447ce9f782771ef9f6790fafb1bfd15f72c5e8988825660426546152e15b578d160128e6238", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -30601,7 +30601,7 @@ exports[`pivx currency bridge scanAccounts pivx seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0416e1de49a4dd716985e2992bfaad4e7db30a6adbf63dafbd6607e447ce9f782771ef9f6790fafb1bfd15f72c5e8988825660426546152e15b578d160128e6238", "spendableBalance": "25947828", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -30629,7 +30629,7 @@ exports[`pivx currency bridge scanAccounts pivx seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0416e1de49a4dd716985e2992bfaad4e7db30a6adbf63dafbd6607e447ce9f782771ef9f6790fafb1bfd15f72c5e8988825660426546152e15b578d160128e6238", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -31040,7 +31040,7 @@ exports[`qtum currency bridge scanAccounts qtum seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04aeeb62a852fbba024f3c1c0603342abac05fcc672baaff34be4f505dd2a9906558c3f57a922c95d7d15d96b25a6fba5c4254e24b3f704c49df7b19807f688c97", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -31068,7 +31068,7 @@ exports[`qtum currency bridge scanAccounts qtum seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04aeeb62a852fbba024f3c1c0603342abac05fcc672baaff34be4f505dd2a9906558c3f57a922c95d7d15d96b25a6fba5c4254e24b3f704c49df7b19807f688c97", "spendableBalance": "7426478", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -31096,7 +31096,7 @@ exports[`qtum currency bridge scanAccounts qtum seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04aeeb62a852fbba024f3c1c0603342abac05fcc672baaff34be4f505dd2a9906558c3f57a922c95d7d15d96b25a6fba5c4254e24b3f704c49df7b19807f688c97", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -31124,7 +31124,7 @@ exports[`qtum currency bridge scanAccounts qtum seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0428c2e00f88f014d72894169a8233a0d290b8dc5b4b635ca98efcb74c4aa51a95831f3ddbcb191a93c51f04e9829d91a2c61ec7a5547225d3e4694e7bff591b0c", "spendableBalance": "36214370", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -31152,7 +31152,7 @@ exports[`qtum currency bridge scanAccounts qtum seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0428c2e00f88f014d72894169a8233a0d290b8dc5b4b635ca98efcb74c4aa51a95831f3ddbcb191a93c51f04e9829d91a2c61ec7a5547225d3e4694e7bff591b0c", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -31180,7 +31180,7 @@ exports[`qtum currency bridge scanAccounts qtum seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0428c2e00f88f014d72894169a8233a0d290b8dc5b4b635ca98efcb74c4aa51a95831f3ddbcb191a93c51f04e9829d91a2c61ec7a5547225d3e4694e7bff591b0c", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -33939,7 +33939,7 @@ exports[`vertcoin currency bridge scanAccounts vertcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "044ed2023877af4e78c1feb9b9ff41288d7e1e5f3750e6361375c1c63618403066170a15bde45e3944cca9d627ce952dc2b8fb3f8f29c67da2d21d85a40fd40fe5", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -33967,7 +33967,7 @@ exports[`vertcoin currency bridge scanAccounts vertcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0483b492356288cef587aea8b998e4fe5555d61589702d3d54a6f38d63c41cd3751ff7a14539160baed80a8b11350511d9f74b342d62bc443b3bca4d5bd8398c45", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -33995,7 +33995,7 @@ exports[`vertcoin currency bridge scanAccounts vertcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0483b492356288cef587aea8b998e4fe5555d61589702d3d54a6f38d63c41cd3751ff7a14539160baed80a8b11350511d9f74b342d62bc443b3bca4d5bd8398c45", "spendableBalance": "56611532", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34023,7 +34023,7 @@ exports[`vertcoin currency bridge scanAccounts vertcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0483b492356288cef587aea8b998e4fe5555d61589702d3d54a6f38d63c41cd3751ff7a14539160baed80a8b11350511d9f74b342d62bc443b3bca4d5bd8398c45", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34051,7 +34051,7 @@ exports[`vertcoin currency bridge scanAccounts vertcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "044ed2023877af4e78c1feb9b9ff41288d7e1e5f3750e6361375c1c63618403066170a15bde45e3944cca9d627ce952dc2b8fb3f8f29c67da2d21d85a40fd40fe5", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34079,7 +34079,7 @@ exports[`vertcoin currency bridge scanAccounts vertcoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "044ed2023877af4e78c1feb9b9ff41288d7e1e5f3750e6361375c1c63618403066170a15bde45e3944cca9d627ce952dc2b8fb3f8f29c67da2d21d85a40fd40fe5", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34656,7 +34656,7 @@ exports[`viacoin currency bridge scanAccounts viacoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0480b2ebd31e9aecc021c6c2e9d924723dc807cd6b7c14fbedf9a1c866d16535df797f6140170f8e09b03b285d1cf1dd5e859063c348913453beaefce77c73cdd6", "spendableBalance": "61117791", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34684,7 +34684,7 @@ exports[`viacoin currency bridge scanAccounts viacoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "0480b2ebd31e9aecc021c6c2e9d924723dc807cd6b7c14fbedf9a1c866d16535df797f6140170f8e09b03b285d1cf1dd5e859063c348913453beaefce77c73cdd6", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34712,7 +34712,7 @@ exports[`viacoin currency bridge scanAccounts viacoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "042ee7221d7491590252b2dab2f9d47b58f6a7ff0ee53ddc17c07e51934fd4055afd3ead3a97047d97992963a7d238da72ac0d0de1ac222c07efd8a3be8ee9e4fe", "spendableBalance": "43399898", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -34740,7 +34740,7 @@ exports[`viacoin currency bridge scanAccounts viacoin seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "042ee7221d7491590252b2dab2f9d47b58f6a7ff0ee53ddc17c07e51934fd4055afd3ead3a97047d97992963a7d238da72ac0d0de1ac222c07efd8a3be8ee9e4fe", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -35224,7 +35224,7 @@ exports[`zcash currency bridge scanAccounts zcash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04c29da5bfbd318cb28878340d4961a999d323d865bfa72d203356544972d63d9c208d0d55e9f1538d34e89be3d08433d2632dcb8b4351e2fcd29ea0158619301f", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -35252,7 +35252,7 @@ exports[`zcash currency bridge scanAccounts zcash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04c29da5bfbd318cb28878340d4961a999d323d865bfa72d203356544972d63d9c208d0d55e9f1538d34e89be3d08433d2632dcb8b4351e2fcd29ea0158619301f", "spendableBalance": "192412", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -35280,7 +35280,7 @@ exports[`zcash currency bridge scanAccounts zcash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04c29da5bfbd318cb28878340d4961a999d323d865bfa72d203356544972d63d9c208d0d55e9f1538d34e89be3d08433d2632dcb8b4351e2fcd29ea0158619301f", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -35308,7 +35308,7 @@ exports[`zcash currency bridge scanAccounts zcash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04c29da5bfbd318cb28878340d4961a999d323d865bfa72d203356544972d63d9c208d0d55e9f1538d34e89be3d08433d2632dcb8b4351e2fcd29ea0158619301f", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -39168,7 +39168,7 @@ exports[`zencash currency bridge scanAccounts zencash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04ecf3eb0c3454436fd414da75eafad95896209052eef81b06860cc6c14731963e63ae744577e35b51d4e40ebb4366e59e2a20f571384384bfcb804444db6a83d7", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -39196,7 +39196,7 @@ exports[`zencash currency bridge scanAccounts zencash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04ecf3eb0c3454436fd414da75eafad95896209052eef81b06860cc6c14731963e63ae744577e35b51d4e40ebb4366e59e2a20f571384384bfcb804444db6a83d7", "spendableBalance": "3021049", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -39224,7 +39224,7 @@ exports[`zencash currency bridge scanAccounts zencash seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "04ecf3eb0c3454436fd414da75eafad95896209052eef81b06860cc6c14731963e63ae744577e35b51d4e40ebb4366e59e2a20f571384384bfcb804444db6a83d7", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, diff --git a/libs/ledger-live-common/src/families/bitcoin/account-used.integration.test.ts b/libs/ledger-live-common/src/families/bitcoin/account-used.integration.test.ts deleted file mode 100644 index eee99a3e0564..000000000000 --- a/libs/ledger-live-common/src/families/bitcoin/account-used.integration.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { reduce } from "rxjs/operators"; -import { Account } from "@ledgerhq/types-live"; -import { fromAccountRaw } from "../../account"; -import { getAccountBridge } from "../../bridge"; -import { accountDataToAccount, accountToAccountData } from "../../cross"; -import "../../__tests__/test-helpers/setup"; -import { bitcoin1 } from "@ledgerhq/coin-bitcoin/datasets/bitcoin"; -import { firstValueFrom } from "rxjs"; - -async function syncAccount(initialAccount: Account): Promise { - const acc = await firstValueFrom( - getAccountBridge(initialAccount) - .sync(initialAccount, { - paginationConfig: {}, - }) - .pipe(reduce((a, f: (arg0: Account) => Account) => f(a), initialAccount)), - ); - return acc; -} - -async function crossAccount(account: Account): Promise { - const a = accountDataToAccount(accountToAccountData(account)); - const synced = await syncAccount(a); - return synced; -} - -test("account.used is true after crossAccount", async () => { - let account = fromAccountRaw(bitcoin1); - account = await crossAccount(account); - expect(account.used).toBe(true); -}); diff --git a/libs/ledger-live-common/src/families/cardano/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/cardano/__snapshots__/bridge.integration.test.ts.snap index 87fb744a3903..7ced66d5e5bc 100644 --- a/libs/ledger-live-common/src/families/cardano/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cardano/__snapshots__/bridge.integration.test.ts.snap @@ -838,13 +838,13 @@ exports[`cardano_testnet currency bridge scanAccounts cardano_testnet seed 1 1`] ], "id": "js:2:cardano_testnet:806499588e0c4a58f4119f7e6e096bf42c3f774a528d2acec9e82ceebf87d1ceb3d4f3622dd2c77c65cc89c123f79337db22cf8a69f122e36dab1bf5083bf82d:cardano", "index": 0, - "name": "Cardano (Testnet) 1", + "name": "", "nfts": undefined, "operationsCount": 6, "pendingOperations": [], "seedIdentifier": "bea94629d5cf776b8374a00afa15686f0b0742dd0330f86804c61202", "spendableBalance": "10097484577", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": "["ethereum/erc20/ampleforth","ethereum/erc20/steth"]_0", @@ -1569,13 +1569,13 @@ exports[`cardano_testnet currency bridge scanAccounts cardano_testnet seed 1 1`] ], "id": "js:2:cardano_testnet:ed5e0d059cb2eed53ea30b9ba84bb3aaa6c2364c6305a0c9a7e8944aa439884a642cc2f06e601808926e14b6e27417be0b0323d5a5149f1eebab8fc4e1fe14d4:cardano", "index": 1, - "name": "Cardano (Testnet) 2", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "bea94629d5cf776b8374a00afa15686f0b0742dd0330f86804c61202", "spendableBalance": "0", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": "["ethereum/erc20/ampleforth","ethereum/erc20/steth"]_0", diff --git a/libs/ledger-live-common/src/families/cardano/buildSubAccounts.ts b/libs/ledger-live-common/src/families/cardano/buildSubAccounts.ts index 22708c527e18..e69327359339 100644 --- a/libs/ledger-live-common/src/families/cardano/buildSubAccounts.ts +++ b/libs/ledger-live-common/src/families/cardano/buildSubAccounts.ts @@ -156,7 +156,6 @@ export function buildSubAccounts({ operationsCount: operations.length, operations, pendingOperations: [], - starred: false, balanceHistoryCache: emptyHistoryCache, swapHistory: [], }; diff --git a/libs/ledger-live-common/src/families/casper/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/casper/__snapshots__/bridge.integration.test.ts.snap index b7a8702d52c5..3b7b833c46f8 100644 --- a/libs/ledger-live-common/src/families/casper/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/casper/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`casper currency bridge scanAccounts casper seed 1 1`] = ` ], "id": "js:2:casper:02038C8cb0f62b4EFcD0C7868c2e749Dda649aFFE30fF0f95fc91CE48EA67F077D16:casper_wallet", "index": 0, - "name": "Casper 1", + "name": "", "nfts": undefined, "operationsCount": 2, "pendingOperations": [], "seedIdentifier": "038c8cb0f62b4efcd0c7868c2e749dda649affe30ff0f95fc91ce48ea67f077d16", "spendableBalance": "9750000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 9, @@ -42,13 +42,13 @@ exports[`casper currency bridge scanAccounts casper seed 1 1`] = ` ], "id": "js:2:casper:0202bA6DC98cbE677711a45bf028A03646F9e588996eB223fad2485e8bc391b01581:casper_wallet", "index": 1, - "name": "Casper 2", + "name": "", "nfts": undefined, "operationsCount": 4, "pendingOperations": [], "seedIdentifier": "038c8cb0f62b4efcd0c7868c2e749dda649affe30ff0f95fc91ce48ea67f077d16", "spendableBalance": "4550000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 9, @@ -68,13 +68,13 @@ exports[`casper currency bridge scanAccounts casper seed 1 1`] = ` ], "id": "js:2:casper:02022AAB9B6ED404f8CFFE76ce493E1995d195B5F141Ee7D5B7fb20FCE60f2A49691:casper_wallet", "index": 2, - "name": "Casper 3", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "038c8cb0f62b4efcd0c7868c2e749dda649affe30ff0f95fc91ce48ea67f077d16", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 9, diff --git a/libs/ledger-live-common/src/families/celo/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/celo/__snapshots__/bridge.integration.test.ts.snap index e05c6ca90718..b22a5d437d6e 100644 --- a/libs/ledger-live-common/src/families/celo/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/celo/__snapshots__/bridge.integration.test.ts.snap @@ -43,13 +43,13 @@ exports[`celo currency bridge scanAccounts Celo 1 1`] = ` ], "id": "js:2:celo:0xcfD48e0FAf9f19377509cE68a6A6F4D9C85ff8AB:", "index": 0, - "name": "Celo 1", + "name": "", "nfts": undefined, "operationsCount": 10, "pendingOperations": [], "seedIdentifier": "0453390dcc1e6f1be0fb34f837b278ed1b4c84097c7493c13a0d915c735af1d8aa445d2738a95e8f50bc22abd2e17cb868d4db22a623d99d861740eb93373d50a3", "spendableBalance": "83719000010000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -79,13 +79,13 @@ exports[`celo currency bridge scanAccounts Celo 1 1`] = ` ], "id": "js:2:celo:0x2cC7E5913bADa8FA2895bDeF7F4C2E36C2368Abb:", "index": 1, - "name": "Celo 2", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "0453390dcc1e6f1be0fb34f837b278ed1b4c84097c7493c13a0d915c735af1d8aa445d2738a95e8f50bc22abd2e17cb868d4db22a623d99d861740eb93373d50a3", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, diff --git a/libs/ledger-live-common/src/families/cosmos/banner.test.ts b/libs/ledger-live-common/src/families/cosmos/banner.test.ts index e9bd5bb6168f..d5a4054902b4 100644 --- a/libs/ledger-live-common/src/families/cosmos/banner.test.ts +++ b/libs/ledger-live-common/src/families/cosmos/banner.test.ts @@ -29,14 +29,12 @@ const cheapValidator: CosmosValidatorItem | undefined = data.validators.find( const account: CosmosAccount = { type: "Account", id: "js:2:cosmos:cosmos1f9y7wdychcdhwvyrhff3zvs3gy3qxcu2th4g8u:", - starred: false, used: false, seedIdentifier: "02d4c121ce2bb160ebf39aa0be0050b4d553e18872985ac3a4e21904fd1442defe", derivationMode: "", index: 1, freshAddress: "cosmos1f9y7wdychcdhwvyrhff3zvs3gy3qxcu2th4g8u", freshAddressPath: "44'/118'/1'/0/0", - name: "Cosmos 2 - Nano X Static Account", freshAddresses: [], blockHeight: 5417472, creationDate: new Date("2022-08-02T16:09:08.906Z"), diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/axelar.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/axelar.integration.test.ts.snap index 708a194dd656..17cf7affd022 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/axelar.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/axelar.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`axelar currency bridge scanAccounts axelar seed 1 1`] = ` ], "id": "js:2:axelar:axelar1gyauvl44q2apn3u3aujm36q8zrj74vry3kglyg:", "index": 0, - "name": "Axelar 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "187390", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`axelar currency bridge scanAccounts axelar seed 1 1`] = ` ], "id": "js:2:axelar:axelar1v2mp0m7k96dm9qv60fkspcqlzpkzrwnext9980:", "index": 1, - "name": "Axelar 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/coreum.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/coreum.integration.test.ts.snap index 81c144463946..a6e1ca86acc6 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/coreum.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/coreum.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`coreum currency bridge scanAccounts coreum seed 1 1`] = ` ], "id": "js:2:coreum:core10l6h3qw05u7qduqgafj8wlrx3fjhr852z7r5l2:", "index": 0, - "name": "Coreum 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03633639c689420031c73c1157975ea734e22eae588045a96fc9495d28aba3f0d1", "spendableBalance": "666840", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`coreum currency bridge scanAccounts coreum seed 1 1`] = ` ], "id": "js:2:coreum:core1sel9ys8a7jlsmrxp9692zfjncnmhxkws0qr3g9:", "index": 1, - "name": "Coreum 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03633639c689420031c73c1157975ea734e22eae588045a96fc9495d28aba3f0d1", "spendableBalance": "1000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -68,12 +68,12 @@ exports[`coreum currency bridge scanAccounts coreum seed 1 1`] = ` ], "id": "js:2:coreum:core1mdj6j89ev4yfelv3kqn7prj4h92er5zlxssxwk:", "index": 2, - "name": "Coreum 3", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03633639c689420031c73c1157975ea734e22eae588045a96fc9495d28aba3f0d1", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/cosmos.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/cosmos.integration.test.ts.snap index 468c34440e9d..40102a871aa7 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/cosmos.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/cosmos.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`cosmos currency bridge scanAccounts cosmos seed 1 1`] = ` ], "id": "js:2:cosmos:cosmos1g84934jpu3v5de5yqukkkhxmcvsw3u2ajxvpdl:", "index": 0, - "name": "Cosmos 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "0388459b2653519948b12492f1a0b464720110c147a8155d23d423a5cc3c21d89a", "spendableBalance": "1212617", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`cosmos currency bridge scanAccounts cosmos seed 1 1`] = ` ], "id": "js:2:cosmos:cosmos108uy5q9jt59gwugq5yrdhkzcd9jryslmpcstk5:", "index": 1, - "name": "Cosmos 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "0388459b2653519948b12492f1a0b464720110c147a8155d23d423a5cc3c21d89a", "spendableBalance": "1424", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -68,12 +68,12 @@ exports[`cosmos currency bridge scanAccounts cosmos seed 1 1`] = ` ], "id": "js:2:cosmos:cosmos1cgc696ay2pg6d4gcejek2y8la66j7e5y3c7kyw:", "index": 2, - "name": "Cosmos 3", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "0388459b2653519948b12492f1a0b464720110c147a8155d23d423a5cc3c21d89a", "spendableBalance": "15348", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -94,12 +94,12 @@ exports[`cosmos currency bridge scanAccounts cosmos seed 1 1`] = ` ], "id": "js:2:cosmos:cosmos14tg4vsd0q745fxhzn329pkx0krqtszcxyzl5ku:", "index": 3, - "name": "Cosmos 4", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "0388459b2653519948b12492f1a0b464720110c147a8155d23d423a5cc3c21d89a", "spendableBalance": "14853", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -120,12 +120,12 @@ exports[`cosmos currency bridge scanAccounts cosmos seed 1 1`] = ` ], "id": "js:2:cosmos:cosmos18q6ad294dw5wf7nueq7ctleehxh9fgt8dcecr9:", "index": 4, - "name": "Cosmos 5", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "0388459b2653519948b12492f1a0b464720110c147a8155d23d423a5cc3c21d89a", "spendableBalance": "1000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -146,12 +146,12 @@ exports[`cosmos currency bridge scanAccounts cosmos seed 1 1`] = ` ], "id": "js:2:cosmos:cosmos1uh39jx0dva8upvqqqh690rht2vn68zt9wmmhq4:", "index": 5, - "name": "Cosmos 6", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "0388459b2653519948b12492f1a0b464720110c147a8155d23d423a5cc3c21d89a", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/desmos.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/desmos.integration.test.ts.snap index ffb01c75ab74..8329da670151 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/desmos.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/desmos.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`desmos currency bridge scanAccounts desmos seed 1 1`] = ` ], "id": "js:2:desmos:desmos1gyauvl44q2apn3u3aujm36q8zrj74vrypqn8c3:", "index": 0, - "name": "Desmos 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "6748191", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`desmos currency bridge scanAccounts desmos seed 1 1`] = ` ], "id": "js:2:desmos:desmos1v2mp0m7k96dm9qv60fkspcqlzpkzrwneka7amk:", "index": 1, - "name": "Desmos 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/dydx.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/dydx.integration.test.ts.snap index ebebad7b1928..d229133c9467 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/dydx.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/dydx.integration.test.ts.snap @@ -16,11 +16,11 @@ exports[`dydx currency bridge scanAccounts dydx seed 1 1`] = ` ], "id": "js:2:dydx:dydx1gyauvl44q2apn3u3aujm36q8zrj74vryupsn07:", "index": 0, - "name": "dYdX 1", + "name": "", "nfts": undefined, "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "7520812500000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -41,11 +41,11 @@ exports[`dydx currency bridge scanAccounts dydx seed 1 1`] = ` ], "id": "js:2:dydx:dydx1v2mp0m7k96dm9qv60fkspcqlzpkzrwnetuafve:", "index": 1, - "name": "dYdX 2", + "name": "", "nfts": undefined, "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/injective.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/injective.integration.test.ts.snap index 313d2327be2a..5b7ef1837d55 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/injective.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/injective.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`injective currency bridge scanAccounts injective seed 1 1`] = ` ], "id": "js:2:injective:inj1hn46zvx43mxq47vsecvw84k5chjhuhwp6d62dt:", "index": 0, - "name": "Injective 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03f8e9b05b4de510b0b7d970060eac6a0f76d3c4eb07e11418c0747bc593c91c7d", "spendableBalance": "506564000000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -42,12 +42,12 @@ exports[`injective currency bridge scanAccounts injective seed 1 1`] = ` ], "id": "js:2:injective:inj1604wce9t0u8vne0zrj4t2rspjsg28dymyljzrm:", "index": 1, - "name": "Injective 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03f8e9b05b4de510b0b7d970060eac6a0f76d3c4eb07e11418c0747bc593c91c7d", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/onomy.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/onomy.integration.test.ts.snap index e12df8afede5..5614b56613d3 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/onomy.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/onomy.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`onomy currency bridge scanAccounts onomy seed 1 1`] = ` ], "id": "js:2:onomy:onomy1gyauvl44q2apn3u3aujm36q8zrj74vry0e2p7v:", "index": 0, - "name": "Onomy 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "2056240423338275653", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -42,12 +42,12 @@ exports[`onomy currency bridge scanAccounts onomy seed 1 1`] = ` ], "id": "js:2:onomy:onomy1v2mp0m7k96dm9qv60fkspcqlzpkzrwnecy8mat:", "index": 1, - "name": "Onomy 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/osmosis.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/osmosis.integration.test.ts.snap index e39f02b16a77..ac70e5bc5a89 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/osmosis.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/osmosis.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`osmo currency bridge scanAccounts osmo seed 1 1`] = ` ], "id": "js:2:osmo:osmo17gmcxyc5ccd5kwqqatpgfdgh380w2hc77zm0zw:", "index": 0, - "name": "Osmosis 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "02dc75cfe8137450ae2259dc7f29fd8767951956cc943adb4387e91c37a058a9f0", "spendableBalance": "124344", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`osmo currency bridge scanAccounts osmo seed 1 1`] = ` ], "id": "js:2:osmo:osmo19h8cennrkf09sjxqt36lmk93fzyrcwrfxw784y:", "index": 1, - "name": "Osmosis 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "02dc75cfe8137450ae2259dc7f29fd8767951956cc943adb4387e91c37a058a9f0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/persistence.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/persistence.integration.test.ts.snap index 7adb9bb762d5..273208dbaed1 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/persistence.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/persistence.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`persistence currency bridge scanAccounts persistence seed 1 1`] = ` ], "id": "js:2:persistence:persistence1gyauvl44q2apn3u3aujm36q8zrj74vrym5cypd:", "index": 0, - "name": "Persistence 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "1202564", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`persistence currency bridge scanAccounts persistence seed 1 1`] = ` ], "id": "js:2:persistence:persistence1v2mp0m7k96dm9qv60fkspcqlzpkzrwnevf47z2:", "index": 1, - "name": "Persistence 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "230000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -68,12 +68,12 @@ exports[`persistence currency bridge scanAccounts persistence seed 1 1`] = ` ], "id": "js:2:persistence:persistence17r56udl09ssv88x85cxftx7su0rgv4v27ej3p0:", "index": 2, - "name": "Persistence 3", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/quicksilver.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/quicksilver.integration.test.ts.snap index ece71c863bac..a07a8841227a 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/quicksilver.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/quicksilver.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`quicksilver currency bridge scanAccounts quicksilver seed 1 1`] = ` ], "id": "js:2:quicksilver:quick1gyauvl44q2apn3u3aujm36q8zrj74vry7uw9km:", "index": 0, - "name": "Quicksilver 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "2273041", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`quicksilver currency bridge scanAccounts quicksilver seed 1 1`] = ` ], "id": "js:2:quicksilver:quick1v2mp0m7k96dm9qv60fkspcqlzpkzrwnefprl4u:", "index": 1, - "name": "Quicksilver 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/secretNetwork.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/secretNetwork.integration.test.ts.snap index ba55ff158b0f..1d0683a37099 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/secretNetwork.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/secretNetwork.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`secret_network currency bridge scanAccounts secret_network seed 1 1`] = ], "id": "js:2:secret_network:secret1gyauvl44q2apn3u3aujm36q8zrj74vryha27j4:", "index": 0, - "name": "SecretNetwork 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "1232751", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`secret_network currency bridge scanAccounts secret_network seed 1 1`] = ], "id": "js:2:secret_network:secret1v2mp0m7k96dm9qv60fkspcqlzpkzrwneqq8y3j:", "index": 1, - "name": "SecretNetwork 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/seiNetwork.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/seiNetwork.integration.test.ts.snap index 2745c3ff2e08..5aa4af7744df 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/seiNetwork.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/seiNetwork.integration.test.ts.snap @@ -16,11 +16,11 @@ exports[`sei_network currency bridge scanAccounts sei_network seed 1 1`] = ` ], "id": "js:2:sei_network:sei1gyauvl44q2apn3u3aujm36q8zrj74vryc50pfg:", "index": 0, - "name": "SeiNetwork 1", + "name": "", "nfts": undefined, "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "128991", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -41,11 +41,11 @@ exports[`sei_network currency bridge scanAccounts sei_network seed 1 1`] = ` ], "id": "js:2:sei_network:sei1v2mp0m7k96dm9qv60fkspcqlzpkzrwne0fzm20:", "index": 1, - "name": "SeiNetwork 2", + "name": "", "nfts": undefined, "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/stargaze.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/stargaze.integration.test.ts.snap index ce4b47c78aad..62ca9ab3e1ad 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/stargaze.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/stargaze.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`stargaze currency bridge scanAccounts stargaze seed 1 1`] = ` ], "id": "js:2:stargaze:stars1gyauvl44q2apn3u3aujm36q8zrj74vrypyf2yc:", "index": 0, - "name": "Stargaze 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "2000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`stargaze currency bridge scanAccounts stargaze seed 1 1`] = ` ], "id": "js:2:stargaze:stars1v2mp0m7k96dm9qv60fkspcqlzpkzrwnekeys8l:", "index": 1, - "name": "Stargaze 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/umee.integration.test.ts.snap b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/umee.integration.test.ts.snap index 69410be06627..6fc02b5088d1 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/umee.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/cosmos/datasets/__snapshots__/umee.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`umee currency bridge scanAccounts umee seed 1 1`] = ` ], "id": "js:2:umee:umee1gyauvl44q2apn3u3aujm36q8zrj74vry8wrgtm:", "index": 0, - "name": "Umee 1", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "7090969", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -42,12 +42,12 @@ exports[`umee currency bridge scanAccounts umee seed 1 1`] = ` ], "id": "js:2:umee:umee1v2mp0m7k96dm9qv60fkspcqlzpkzrwnesnwjgu:", "index": 1, - "name": "Umee 2", + "name": "", "nfts": undefined, "pendingOperations": [], "seedIdentifier": "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/axelar.ts b/libs/ledger-live-common/src/families/cosmos/datasets/axelar.ts index 51f50b95845e..1048408df29d 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/axelar.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/axelar.ts @@ -24,7 +24,6 @@ const dataset: CurrenciesData = { id: "js:2:axelar:axelar1gyauvl44q2apn3u3aujm36q8zrj74vry3kglyg:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Axelar 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/coreum.ts b/libs/ledger-live-common/src/families/cosmos/datasets/coreum.ts index a96d52ee11c8..c468b3a8958b 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/coreum.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/coreum.ts @@ -26,7 +26,6 @@ const dataset: CurrenciesData = { id: "js:2:coreum:core1sel9ys8a7jlsmrxp9692zfjncnmhxkws0qr3g9:", seedIdentifier: "03633639c689420031c73c1157975ea734e22eae588045a96fc9495d28aba3f0d1", name: "Coreum 2", - starred: false, used: true, derivationMode: "", index: 1, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/cosmos.ts b/libs/ledger-live-common/src/families/cosmos/datasets/cosmos.ts index 73d5f0b22b49..543a5de51252 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/cosmos.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/cosmos.ts @@ -370,7 +370,6 @@ const dataset: CurrenciesData = { seedIdentifier: "cosmospub1addwnpepqd3nvwwx39pqqvw88sg409675u6wyt4wtzqyt2t0e9y4629t50cdzftxnvz", name: "Cosmos Static Account", - starred: true, derivationMode: "", index: 0, freshAddress: "cosmos10l6h3qw05u7qduqgafj8wlrx3fjhr8523sm0c3", diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/desmos.ts b/libs/ledger-live-common/src/families/cosmos/datasets/desmos.ts index 0f55b310232b..bda7d9be86c4 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/desmos.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/desmos.ts @@ -25,7 +25,6 @@ const dataset: CurrenciesData = { id: "js:2:desmos:desmos1gyauvl44q2apn3u3aujm36q8zrj74vrypqn8c3:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Desmos 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/dydx.ts b/libs/ledger-live-common/src/families/cosmos/datasets/dydx.ts index f424454db7b1..611bb5cf872e 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/dydx.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/dydx.ts @@ -28,7 +28,6 @@ const dataset: CurrenciesData = { id: "js:2:dydx:dydx1gyauvl44q2apn3u3aujm36q8zrj74vryupsn07:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "dYdX 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/injective.ts b/libs/ledger-live-common/src/families/cosmos/datasets/injective.ts index d44953681afd..263584283cd3 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/injective.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/injective.ts @@ -24,7 +24,6 @@ const dataset: CurrenciesData = { id: "js:2:injective:inj1hn46zvx43mxq47vsecvw84k5chjhuhwp6d62dt:", seedIdentifier: "03f8e9b05b4de510b0b7d970060eac6a0f76d3c4eb07e11418c0747bc593c91c7d", name: "Injective 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/onomy.ts b/libs/ledger-live-common/src/families/cosmos/datasets/onomy.ts index 8ffd9f56a380..b60162e5ae78 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/onomy.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/onomy.ts @@ -25,7 +25,6 @@ const dataset: CurrenciesData = { id: "js:2:onomy:onomy1gyauvl44q2apn3u3aujm36q8zrj74vry0e2p7v:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Onomy 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/osmosis.ts b/libs/ledger-live-common/src/families/cosmos/datasets/osmosis.ts index 3cb90e6700ce..af3ab1be24af 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/osmosis.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/osmosis.ts @@ -361,7 +361,6 @@ const dataset: CurrenciesData = { id: "js:2:osmo:osmo1xx72kqjlf2qqj88h0wakwv6rp0v8fwh74z9q89:", seedIdentifier: "0283de657d9e283a5c31d64a4c4afbcc48ee79fdd7648bcdde6a1d0d7ae9f9bea1", name: "Osmosis 2 - Nano X Static Account", - starred: true, derivationMode: "", index: 1, freshAddress: "osmo1xx72kqjlf2qqj88h0wakwv6rp0v8fwh74z9q89", diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/persistence.ts b/libs/ledger-live-common/src/families/cosmos/datasets/persistence.ts index 8a9c8761bc99..db7bd0c523fa 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/persistence.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/persistence.ts @@ -27,7 +27,6 @@ const dataset: CurrenciesData = { id: "js:2:persistence:persistence1gyauvl44q2apn3u3aujm36q8zrj74vrym5cypd:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Persistence 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/quicksilver.ts b/libs/ledger-live-common/src/families/cosmos/datasets/quicksilver.ts index 31dbd532d742..19758e903d03 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/quicksilver.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/quicksilver.ts @@ -25,7 +25,6 @@ const dataset: CurrenciesData = { id: "js:2:quicksilver:quick1gyauvl44q2apn3u3aujm36q8zrj74vry7uw9km:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Quicksilver 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/secretNetwork.ts b/libs/ledger-live-common/src/families/cosmos/datasets/secretNetwork.ts index fda0f7176b10..0a76a5b1021a 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/secretNetwork.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/secretNetwork.ts @@ -25,7 +25,6 @@ const dataset: CurrenciesData = { id: "js:2:secret_network:secret1gyauvl44q2apn3u3aujm36q8zrj74vryha27j4:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "SecretNetwork 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/seiNetwork.ts b/libs/ledger-live-common/src/families/cosmos/datasets/seiNetwork.ts index d0ed198a05a4..fd52bcb0fd23 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/seiNetwork.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/seiNetwork.ts @@ -28,7 +28,6 @@ const dataset: CurrenciesData = { id: "js:2:sei_network:sei1gyauvl44q2apn3u3aujm36q8zrj74vryc50pfg:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Frozen", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/stargaze.ts b/libs/ledger-live-common/src/families/cosmos/datasets/stargaze.ts index 0529011d0899..7be4093b29e1 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/stargaze.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/stargaze.ts @@ -25,7 +25,6 @@ const dataset: CurrenciesData = { id: "js:2:stargaze:stars1gyauvl44q2apn3u3aujm36q8zrj74vrypyf2yc:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Stargaze 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/cosmos/datasets/umee.ts b/libs/ledger-live-common/src/families/cosmos/datasets/umee.ts index 3589c373396c..5e5091caa171 100644 --- a/libs/ledger-live-common/src/families/cosmos/datasets/umee.ts +++ b/libs/ledger-live-common/src/families/cosmos/datasets/umee.ts @@ -25,7 +25,6 @@ const dataset: CurrenciesData = { id: "js:2:umee:umee1gyauvl44q2apn3u3aujm36q8zrj74vry8wrgtm:", seedIdentifier: "03d5e0ebb3f1ae2afe87e5d5a24b5029a59cc12f8fd1056840091b2f0b97e54e83", name: "Umee 1", - starred: false, used: true, derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/crypto_org/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/crypto_org/__snapshots__/bridge.integration.test.ts.snap index 565b4db9050a..fb2bd6c2c1bd 100644 --- a/libs/ledger-live-common/src/families/crypto_org/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/crypto_org/__snapshots__/bridge.integration.test.ts.snap @@ -22,13 +22,13 @@ exports[`crypto_org_croeseid currency bridge scanAccounts crypto_org_croeseid se ], "id": "js:2:crypto_org_croeseid:tcro1k5u8tzh8nsfm6uqwlc48xz4g5j3mm8xx9zy5y9:", "index": 0, - "name": "Cronos POS Chain Croeseid 1", + "name": "", "nfts": undefined, "operationsCount": 80, "pendingOperations": [], "seedIdentifier": "02bf9e382bf60d6ffaa982534b3e88014ee472bf091b7ff17167fe897807434941", "spendableBalance": "10068099925", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -54,13 +54,13 @@ exports[`crypto_org_croeseid currency bridge scanAccounts crypto_org_croeseid se ], "id": "js:2:crypto_org_croeseid:tcro1ehq3qxxsyjwvau6v9qn2twv06ut78g4v4g3jmp:", "index": 1, - "name": "Cronos POS Chain Croeseid 2", + "name": "", "nfts": undefined, "operationsCount": 39, "pendingOperations": [], "seedIdentifier": "02bf9e382bf60d6ffaa982534b3e88014ee472bf091b7ff17167fe897807434941", "spendableBalance": "22712183075", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -86,13 +86,13 @@ exports[`crypto_org_croeseid currency bridge scanAccounts crypto_org_croeseid se ], "id": "js:2:crypto_org_croeseid:tcro1kqfwshusg4v7gfac5j6qmcp4ggxc74fwgk48h9:", "index": 2, - "name": "Cronos POS Chain Croeseid 3", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "02bf9e382bf60d6ffaa982534b3e88014ee472bf091b7ff17167fe897807434941", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, diff --git a/libs/ledger-live-common/src/families/elrond/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/elrond/__snapshots__/bridge.integration.test.ts.snap index 8f35de57d651..56977f9652eb 100644 --- a/libs/ledger-live-common/src/families/elrond/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/elrond/__snapshots__/bridge.integration.test.ts.snap @@ -21,13 +21,13 @@ exports[`elrond currency bridge scanAccounts elrond seed 1 1`] = ` ], "id": "js:2:elrond:erd1vgfp3g7azqjx4wsmtt7067m0l62v3psmqzr24j6xvywj2tlz0gesvyzsq2:", "index": 0, - "name": "MultiversX 1", + "name": "", "nfts": undefined, "operationsCount": 6, "pendingOperations": [], "seedIdentifier": "", "spendableBalance": "180162251239346240", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -53,13 +53,13 @@ exports[`elrond currency bridge scanAccounts elrond seed 1 1`] = ` ], "id": "js:2:elrond:erd1pm3gje2lmd5vyldcvuy6jpxgde4rapjpujvujkee6a7jw2zmh4tqre796z:", "index": 1, - "name": "MultiversX 2", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "", "spendableBalance": "0", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, diff --git a/libs/ledger-live-common/src/families/elrond/js-buildSubAccounts.ts b/libs/ledger-live-common/src/families/elrond/js-buildSubAccounts.ts index 9e2cccbac483..27340ccf6706 100644 --- a/libs/ledger-live-common/src/families/elrond/js-buildSubAccounts.ts +++ b/libs/ledger-live-common/src/families/elrond/js-buildSubAccounts.ts @@ -28,7 +28,6 @@ async function buildElrondESDTTokenAccount({ type: "TokenAccount", id: tokenAccountId, parentId: parentAccountId, - starred: false, token, operationsCount: operations.length, operations, diff --git a/libs/ledger-live-common/src/families/filecoin/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/filecoin/__snapshots__/bridge.integration.test.ts.snap index ba33ecaa4e01..a1524eeb9311 100644 --- a/libs/ledger-live-common/src/families/filecoin/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/filecoin/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:t15lauyzdivqj7m3yob3rxmzdsy7uyhfflwyheuri:glifLegacy", "index": 0, - "name": "Filecoin 1", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "1000000000000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -42,13 +42,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f1p74d4mlmeyc4agflhjqsnvoyzyfdai7fmkyso2a:glif", "index": 0, - "name": "Filecoin 1", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "100000000000000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -68,13 +68,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f1plmg3kklvmnodfboimcq5w27mnfs2hwjtas6gia:glif", "index": 1, - "name": "Filecoin 2", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -94,13 +94,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f15nh4cywefp6pavzjifbe2ormma74malwdyy5rfq:glif", "index": 2, - "name": "Filecoin 3", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -120,13 +120,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f1lg3347otxjblwqx6pnqnqoz4cqwasq57yo2bxcy:glif", "index": 3, - "name": "Filecoin 4", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -146,13 +146,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f1j2uoeuoiusmh2godly4fivd6gomi6asmzkd47li:glif", "index": 4, - "name": "Filecoin 5", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -172,13 +172,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f1l7h6nvobmqc7adq7plta5kn7xaltx6k6l7paqsq:glif", "index": 5, - "name": "Filecoin 6", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, @@ -198,13 +198,13 @@ exports[`filecoin currency bridge scanAccounts filecoin seed 1 1`] = ` ], "id": "js:2:filecoin:f1i2drwsilv35pp75dvd52enl3ohqakua2mshf5fy:glif", "index": 6, - "name": "Filecoin 7", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04ca7b02cafdf36e8b4caaf530a96b949764af71b956b2a3328b7a10940794c860f574a9199be98bde3c261887fec8e5fd94bc5f104908bf5f992f52ef2a89abb0", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 18, diff --git a/libs/ledger-live-common/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap index 7cc36e8f1d9b..1468e8eea9da 100644 --- a/libs/ledger-live-common/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`hedera currency bridge scanAccounts hedera seed 1 1`] = ` ], "id": "js:2:hedera:0.0.1040977:hederaBip44", "index": 0, - "name": "Hedera 1", + "name": "", "nfts": undefined, "operationsCount": 5, "pendingOperations": [], "seedIdentifier": "9e92a312233d5fd6b5a723875aeea2cea81a8e48ffc00341cff6dffcfd3ab7f2", "spendableBalance": "89208179", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, diff --git a/libs/ledger-live-common/src/families/hedera/js-receive.ts b/libs/ledger-live-common/src/families/hedera/js-receive.ts index 56cf6bb7d261..2b475fac42b7 100644 --- a/libs/ledger-live-common/src/families/hedera/js-receive.ts +++ b/libs/ledger-live-common/src/families/hedera/js-receive.ts @@ -28,9 +28,7 @@ const receive = ( }); if (r.publicKey !== account.seedIdentifier) { - throw new WrongDeviceForAccount(`WrongDeviceForAccount ${account.name}`, { - accountName: account.name, - }); + throw new WrongDeviceForAccount(); } o.next({ diff --git a/libs/ledger-live-common/src/families/hedera/tests/js-estimateMaxSpendable.integration.test.ts b/libs/ledger-live-common/src/families/hedera/tests/js-estimateMaxSpendable.integration.test.ts index 0b72c4aae720..2455aaf0675c 100644 --- a/libs/ledger-live-common/src/families/hedera/tests/js-estimateMaxSpendable.integration.test.ts +++ b/libs/ledger-live-common/src/families/hedera/tests/js-estimateMaxSpendable.integration.test.ts @@ -13,8 +13,6 @@ const account: Account = { freshAddress: "", freshAddressPath: "", freshAddresses: [], - name: "", - starred: false, used: false, balance: new BigNumber(100000000), spendableBalance: new BigNumber(0), diff --git a/libs/ledger-live-common/src/families/hedera/tests/js-transaction.test.ts b/libs/ledger-live-common/src/families/hedera/tests/js-transaction.test.ts index 07418880f3a8..b7d5ea8c564d 100644 --- a/libs/ledger-live-common/src/families/hedera/tests/js-transaction.test.ts +++ b/libs/ledger-live-common/src/families/hedera/tests/js-transaction.test.ts @@ -13,8 +13,6 @@ const account: Account = { freshAddress: "", freshAddressPath: "", freshAddresses: [], - name: "", - starred: false, used: false, balance: new BigNumber(200000), spendableBalance: new BigNumber(0), diff --git a/libs/ledger-live-common/src/families/hedera/tests/transaction.test.ts b/libs/ledger-live-common/src/families/hedera/tests/transaction.test.ts index fe2f92031226..67107055af29 100644 --- a/libs/ledger-live-common/src/families/hedera/tests/transaction.test.ts +++ b/libs/ledger-live-common/src/families/hedera/tests/transaction.test.ts @@ -12,8 +12,6 @@ const account: Account = { freshAddress: "", freshAddressPath: "", freshAddresses: [], - name: "", - starred: false, used: false, balance: new BigNumber(200000), spendableBalance: new BigNumber(0), diff --git a/libs/ledger-live-common/src/families/hedera/tests/utils.integration.test.ts b/libs/ledger-live-common/src/families/hedera/tests/utils.integration.test.ts index b23166114a25..80098d179ce9 100644 --- a/libs/ledger-live-common/src/families/hedera/tests/utils.integration.test.ts +++ b/libs/ledger-live-common/src/families/hedera/tests/utils.integration.test.ts @@ -13,8 +13,6 @@ const account: Account = { freshAddress: "", freshAddressPath: "", freshAddresses: [], - name: "", - starred: false, used: false, balance: new BigNumber(100000000), spendableBalance: new BigNumber(0), diff --git a/libs/ledger-live-common/src/families/internet_computer/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/internet_computer/__snapshots__/bridge.integration.test.ts.snap index 3621c849b457..6d4ffd51dd0a 100644 --- a/libs/ledger-live-common/src/families/internet_computer/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/internet_computer/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`internet_computer currency bridge scanAccounts internet_computer seed 1 ], "id": "js:2:internet_computer:046f08828871028b6e3cb5c13b2e2a8fa6e93f0b3ca7379171f6b7b45877955a2430925f76ec69ccb3cd8738859a8e29dcd0f9a357f1d009d2b497c6c8f63aa7cf:internet_computer", "index": 0, - "name": "Internet Computer 1", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "046f08828871028b6e3cb5c13b2e2a8fa6e93f0b3ca7379171f6b7b45877955a2430925f76ec69ccb3cd8738859a8e29dcd0f9a357f1d009d2b497c6c8f63aa7cf", "spendableBalance": "1000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, @@ -43,13 +43,13 @@ exports[`internet_computer currency bridge scanAccounts internet_computer seed 1 ], "id": "js:2:internet_computer:043ad9dda46b25cbcf98b2d91f8aa289d08078fa960d13e7d77a571c625eedcb62b6c26a86408d30a6bbdea5ecad6f7603bc1ba11fbb62caa315789f333ece2c8c:internet_computer", "index": 1, - "name": "Internet Computer 2", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "046f08828871028b6e3cb5c13b2e2a8fa6e93f0b3ca7379171f6b7b45877955a2430925f76ec69ccb3cd8738859a8e29dcd0f9a357f1d009d2b497c6c8f63aa7cf", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 8, diff --git a/libs/ledger-live-common/src/families/internet_computer/bridge.integration.test.ts b/libs/ledger-live-common/src/families/internet_computer/bridge.integration.test.ts index db2c4c384dad..8b0998616c1c 100644 --- a/libs/ledger-live-common/src/families/internet_computer/bridge.integration.test.ts +++ b/libs/ledger-live-common/src/families/internet_computer/bridge.integration.test.ts @@ -51,7 +51,6 @@ const internet_computer: CurrenciesData = { lastSyncDate: "", seedIdentifier: SEED_IDENTIFIER, spendableBalance: "1000000", - starred: false, swapHistory: [], syncHash: undefined, unitMagnitude: 8, diff --git a/libs/ledger-live-common/src/families/near/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/near/__snapshots__/bridge.integration.test.ts.snap index 36a091582fd5..af8399f912b0 100644 --- a/libs/ledger-live-common/src/families/near/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/near/__snapshots__/bridge.integration.test.ts.snap @@ -16,7 +16,7 @@ exports[`near currency bridge scanAccounts near seed 1 1`] = ` ], "id": "js:2:near:18d68decb70d4d4fd267d19a0d25edc06ad079e69ded41233a10976cf36391ec:nearbip44h", "index": 0, - "name": "NEAR 1", + "name": "", "nearResources": { "availableBalance": "10000000000000000001", "pendingBalance": "0", @@ -37,7 +37,7 @@ exports[`near currency bridge scanAccounts near seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "ed25519:2fxYBxPh3sP1KeqraqSNcUBx8chZ4RHpVAnQ1rFK9xNF", "spendableBalance": "15332281393064900000000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 24, @@ -57,7 +57,7 @@ exports[`near currency bridge scanAccounts near seed 1 1`] = ` ], "id": "js:2:near:6cbf3b0f8d8b4667bf64bf44b4fefa830e4cef0e5da1e5cfb4015b5a755c4ac0:nearbip44h", "index": 1, - "name": "NEAR 2", + "name": "", "nearResources": { "availableBalance": "0", "pendingBalance": "0", @@ -70,7 +70,7 @@ exports[`near currency bridge scanAccounts near seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "ed25519:2fxYBxPh3sP1KeqraqSNcUBx8chZ4RHpVAnQ1rFK9xNF", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 24, @@ -90,7 +90,7 @@ exports[`near currency bridge scanAccounts near seed 1 1`] = ` ], "id": "js:2:near:59dff1cf9185758c0c2f878c37a175280f3967dca8fee6e4ad0c4aa26daf8e5c:nearbip44h", "index": 2, - "name": "NEAR 3", + "name": "", "nearResources": { "availableBalance": "0", "pendingBalance": "0", @@ -103,7 +103,7 @@ exports[`near currency bridge scanAccounts near seed 1 1`] = ` "pendingOperations": [], "seedIdentifier": "ed25519:2fxYBxPh3sP1KeqraqSNcUBx8chZ4RHpVAnQ1rFK9xNF", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 24, diff --git a/libs/ledger-live-common/src/families/near/banner.test.ts b/libs/ledger-live-common/src/families/near/banner.test.ts index fd3e651e1f05..2d431bc7c109 100644 --- a/libs/ledger-live-common/src/families/near/banner.test.ts +++ b/libs/ledger-live-common/src/families/near/banner.test.ts @@ -27,7 +27,6 @@ const cheapValidator: NearValidatorItem = { const account: NearAccount = { type: "Account", id: "js:2:near:d812a582d0b30c1a13041fd564e5f0c4325804b1dd2447d63ab6b9a424747363:nearbip44h", - starred: false, used: true, seedIdentifier: "ed25519:DewDMzsc2cnMYBrALESrf3vKWLp3zBB4HJnPoyvPL945", derivationMode: "nearbip44h", @@ -35,7 +34,6 @@ const account: NearAccount = { freshAddress: "d812a582d0b30c1a13041fd564e5f0c4325804b1dd2447d63ab6b9a424747363", freshAddressPath: "44'/397'/0'/0'/1'", freshAddresses: [], - name: "NEAR 2", blockHeight: 85373729, creationDate: new Date("2022-12-08T09:42:54.396Z"), balance: new BigNumber("3.10368633212077468946995e+23"), diff --git a/libs/ledger-live-common/src/families/polkadot/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/polkadot/__snapshots__/bridge.integration.test.ts.snap index ecd28acd1326..4a4d3a9b322f 100644 --- a/libs/ledger-live-common/src/families/polkadot/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/polkadot/__snapshots__/bridge.integration.test.ts.snap @@ -16,7 +16,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` ], "id": "js:2:polkadot:13zVX83ztWY9DmiutFRW87Bbgkbv1Qp1fcfpoJidbdHwk35d:polkadotbip44", "index": 0, - "name": "Polkadot 1", + "name": "", "nfts": undefined, "operationsCount": 93, "pendingOperations": [], @@ -30,7 +30,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` }, "seedIdentifier": "c71b1e00ca34fdd14ea065917a67168675828927e3adc3b68f444bf85b4d24be", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 10, @@ -50,7 +50,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` ], "id": "js:2:polkadot:12KUB3Rr4ac4di5JGpzTY5GNQkDVNkPUkcj2MGFTmzazMSds:polkadotbip44", "index": 1, - "name": "Polkadot 2", + "name": "", "nfts": undefined, "operationsCount": 73, "pendingOperations": [], @@ -64,7 +64,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` }, "seedIdentifier": "c71b1e00ca34fdd14ea065917a67168675828927e3adc3b68f444bf85b4d24be", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 10, @@ -84,7 +84,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` ], "id": "js:2:polkadot:13rdR5srvWF53VkNeJuz5WkGkG6FSXQQA7ZB5QBGig4ATCs9:polkadotbip44", "index": 2, - "name": "Polkadot 3", + "name": "", "nfts": undefined, "operationsCount": 3, "pendingOperations": [], @@ -98,7 +98,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` }, "seedIdentifier": "c71b1e00ca34fdd14ea065917a67168675828927e3adc3b68f444bf85b4d24be", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 10, @@ -118,7 +118,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` ], "id": "js:2:polkadot:164VgK6ooZ4fUuU4iFVwpSuXwFXGLU5nTTWzG64vrDqgipwh:polkadotbip44", "index": 3, - "name": "Polkadot 4", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], @@ -132,7 +132,7 @@ exports[`polkadot currency bridge scanAccounts polkadot seed 1 1`] = ` }, "seedIdentifier": "c71b1e00ca34fdd14ea065917a67168675828927e3adc3b68f444bf85b4d24be", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 10, diff --git a/libs/ledger-live-common/src/families/solana/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/solana/__snapshots__/bridge.integration.test.ts.snap index 5434e9b27060..fdc3ead7656c 100644 --- a/libs/ledger-live-common/src/families/solana/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/solana/__snapshots__/bridge.integration.test.ts.snap @@ -16,7 +16,7 @@ exports[`solana currency bridge scanAccounts solana seed 1 1`] = ` ], "id": "js:2:solana:AQbkEagmPgmsdAfS4X8V8UyJnXXjVPMvjeD15etqQ3Jh:solanaMain", "index": 0, - "name": "Solana 1", + "name": "", "nfts": undefined, "operationsCount": 3, "pendingOperations": [], @@ -26,7 +26,7 @@ exports[`solana currency bridge scanAccounts solana seed 1 1`] = ` "unstakeReserve": "0", }, "spendableBalance": "82498960", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 9, @@ -46,7 +46,7 @@ exports[`solana currency bridge scanAccounts solana seed 1 1`] = ` ], "id": "js:2:solana:6rEgdtB3sgjKJnRE172YEr9z6qUyr4nFW28vJokuD36A:solanaSub", "index": 0, - "name": "Solana 1", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], @@ -56,7 +56,7 @@ exports[`solana currency bridge scanAccounts solana seed 1 1`] = ` "unstakeReserve": "0", }, "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 9, diff --git a/libs/ledger-live-common/src/families/solana/banner.test.ts b/libs/ledger-live-common/src/families/solana/banner.test.ts index 53bbe810ea2f..81969230763e 100644 --- a/libs/ledger-live-common/src/families/solana/banner.test.ts +++ b/libs/ledger-live-common/src/families/solana/banner.test.ts @@ -42,7 +42,6 @@ const cheapValidator: ValidatorsAppValidator = { const account: SolanaAccount = { type: "Account", id: "js:2:solana:8Qs1nzggCjEYhFcj4yHwiS5s3QzNeCPWpQnntFdwUYhN:solanaSub", - starred: false, used: false, seedIdentifier: "5gaQapKG9MpAWMLtZFoDqzmKfxMN2FXDVNAKiGFaMXGg", derivationMode: "solanaSub", @@ -50,7 +49,6 @@ const account: SolanaAccount = { freshAddress: "8Qs1nzggCjEYhFcj4yHwiS5s3QzNeCPWpQnntFdwUYhN", freshAddressPath: "44'/501'/0'", freshAddresses: [], - name: "Solana 1", blockHeight: 177035578, creationDate: new Date("2023-02-08T12:57:45.000Z"), balance: new BigNumber("606150870"), diff --git a/libs/ledger-live-common/src/families/solana/js-synchronization.ts b/libs/ledger-live-common/src/families/solana/js-synchronization.ts index e969d4ba6d89..6ec085a64b28 100644 --- a/libs/ledger-live-common/src/families/solana/js-synchronization.ts +++ b/libs/ledger-live-common/src/families/solana/js-synchronization.ts @@ -292,7 +292,6 @@ function newSubAcc({ operationsCount: txs.length, pendingOperations: [], spendableBalance: balance, - starred: false, swapHistory: [], token: tokenCurrency, type: "TokenAccount", diff --git a/libs/ledger-live-common/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap index 7f17f10d3c57..4342c24346cd 100644 --- a/libs/ledger-live-common/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`stacks currency bridge scanAccounts stacks seed 1 1`] = ` ], "id": "js:2:stacks:022a460decc9dba8c452927fecb33d7ae25a8d79dc5442b84feaf8f3aa0e2b575d:", "index": 0, - "name": "Stacks 1", + "name": "", "nfts": undefined, "operationsCount": 3, "pendingOperations": [], "seedIdentifier": "022a460decc9dba8c452927fecb33d7ae25a8d79dc5442b84feaf8f3aa0e2b575d", "spendableBalance": "2074969", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -43,13 +43,13 @@ exports[`stacks currency bridge scanAccounts stacks seed 1 1`] = ` ], "id": "js:2:stacks:034bbb21911e9d4502ac170162c5c05cbba65cbb79e5b46adf95152af2d0e78a45:", "index": 1, - "name": "Stacks 2", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "022a460decc9dba8c452927fecb33d7ae25a8d79dc5442b84feaf8f3aa0e2b575d", "spendableBalance": "1000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -70,13 +70,13 @@ exports[`stacks currency bridge scanAccounts stacks seed 1 1`] = ` ], "id": "js:2:stacks:020637c4d824458f6a11551f51df9e5be9e96c2e3a2e5bdb25d2916cc1dd5ba2d7:", "index": 2, - "name": "Stacks 3", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "022a460decc9dba8c452927fecb33d7ae25a8d79dc5442b84feaf8f3aa0e2b575d", "spendableBalance": "2000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -97,13 +97,13 @@ exports[`stacks currency bridge scanAccounts stacks seed 1 1`] = ` ], "id": "js:2:stacks:02e57bb8c28c4c768cf65f8e28935482e40afbb33168d26810199f39a719cc05f0:", "index": 3, - "name": "Stacks 4", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "022a460decc9dba8c452927fecb33d7ae25a8d79dc5442b84feaf8f3aa0e2b575d", "spendableBalance": "3000", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, @@ -124,13 +124,13 @@ exports[`stacks currency bridge scanAccounts stacks seed 1 1`] = ` ], "id": "js:2:stacks:0264b6d44f720fa50055dc294276bf15ce22e4f3dec48510b317ab8c07419c1b77:", "index": 4, - "name": "Stacks 5", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "022a460decc9dba8c452927fecb33d7ae25a8d79dc5442b84feaf8f3aa0e2b575d", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "unitMagnitude": 6, diff --git a/libs/ledger-live-common/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap index a5cb2a9d3dea..a72cf01e4fe1 100644 --- a/libs/ledger-live-common/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/stellar/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`stellar currency bridge scanAccounts stellar seed 1 1`] = ` ], "id": "js:2:stellar:GAT4LBXYJGJJJRSNK74NPFLO55CDDXSYVMQODSEAAH3M6EY4S7LPH5GV:sep5", "index": 0, - "name": "Stellar 1", + "name": "", "nfts": undefined, "operationsCount": 52, "pendingOperations": [], "seedIdentifier": "27c586f8499294c64d57f8d7956eef4431de58ab20e1c88001f6cf131c97d6f3", "spendableBalance": "311064500", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -43,13 +43,13 @@ exports[`stellar currency bridge scanAccounts stellar seed 1 1`] = ` ], "id": "js:2:stellar:GAIXIJBMYPTSF2CDVQ35WOTULCLZIE4W2SDEK3RQGAA3A22BPWY7R53Z:sep5", "index": 1, - "name": "Stellar 2", + "name": "", "nfts": undefined, "operationsCount": 17, "pendingOperations": [], "seedIdentifier": "27c586f8499294c64d57f8d7956eef4431de58ab20e1c88001f6cf131c97d6f3", "spendableBalance": "79999725", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -70,13 +70,13 @@ exports[`stellar currency bridge scanAccounts stellar seed 1 1`] = ` ], "id": "js:2:stellar:GCDDN6T2LJN3T7SPWJQV6BCCL5KNY5GBN7X4CMSZLDEXDHXAH32TOAHS:sep5", "index": 2, - "name": "Stellar 3", + "name": "", "nfts": undefined, "operationsCount": 10, "pendingOperations": [], "seedIdentifier": "27c586f8499294c64d57f8d7956eef4431de58ab20e1c88001f6cf131c97d6f3", "spendableBalance": "44999225", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -97,13 +97,13 @@ exports[`stellar currency bridge scanAccounts stellar seed 1 1`] = ` ], "id": "js:2:stellar:GAHQKL7UW5DSNJXWNA4ASJ6D2I7JYFWVHDFWYJZK3WDR4BUTG27K2PWC:sep5", "index": 3, - "name": "Stellar 4", + "name": "", "nfts": undefined, "operationsCount": 14, "pendingOperations": [], "seedIdentifier": "27c586f8499294c64d57f8d7956eef4431de58ab20e1c88001f6cf131c97d6f3", "spendableBalance": "10145700", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -124,13 +124,13 @@ exports[`stellar currency bridge scanAccounts stellar seed 1 1`] = ` ], "id": "js:2:stellar:GBQMOU2WYJUP6AKY53FFKZJGQMDWCMTWSOUTZ5DVIAQPVW7AJUHSX2M5:sep5", "index": 4, - "name": "Stellar 5", + "name": "", "nfts": undefined, "operationsCount": 3, "pendingOperations": [], "seedIdentifier": "27c586f8499294c64d57f8d7956eef4431de58ab20e1c88001f6cf131c97d6f3", "spendableBalance": "0", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -151,13 +151,13 @@ exports[`stellar currency bridge scanAccounts stellar seed 1 1`] = ` ], "id": "js:2:stellar:GAJEKFXY76YWDSKJESDOKS2EGKRMCHSIC5AU32SU7OF54E5VVREUHXLH:sep5", "index": 5, - "name": "Stellar 6", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "27c586f8499294c64d57f8d7956eef4431de58ab20e1c88001f6cf131c97d6f3", "spendableBalance": "0", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, diff --git a/libs/ledger-live-common/src/families/stellar/tokens.ts b/libs/ledger-live-common/src/families/stellar/tokens.ts index 891b05f9ab8f..17b56affa8c8 100644 --- a/libs/ledger-live-common/src/families/stellar/tokens.ts +++ b/libs/ledger-live-common/src/families/stellar/tokens.ts @@ -34,7 +34,6 @@ const buildStellarTokenAccount = ({ type: "TokenAccount", id, parentId: parentAccountId, - starred: false, token, operationsCount: operations.length, operations: operations.map(op => ({ diff --git a/libs/ledger-live-common/src/families/tezos/fixtures/makeAccount.ts b/libs/ledger-live-common/src/families/tezos/fixtures/makeAccount.ts index 6e439672650d..c5c980093e62 100644 --- a/libs/ledger-live-common/src/families/tezos/fixtures/makeAccount.ts +++ b/libs/ledger-live-common/src/families/tezos/fixtures/makeAccount.ts @@ -3,7 +3,7 @@ import { TezosAccount } from "../types"; import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies"; export function makeAccount( - name: string, + _name: string, pubkey: string, address: string, isRevelead: boolean, @@ -11,7 +11,6 @@ export function makeAccount( return { id: `js:2:tezos:${pubkey}:${"standard"}`, seedIdentifier: address, - name: "Tezos " + name, derivationMode: "", index: 0, freshAddress: address, @@ -25,7 +24,6 @@ export function makeAccount( xpub: pubkey, subAccounts: [], type: "Account", - starred: false, used: true, spendableBalance: new BigNumber(100), creationDate: new Date(), diff --git a/libs/ledger-live-common/src/families/tron/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/tron/__snapshots__/bridge.integration.test.ts.snap index b66e7ec70ec7..3f418cf2e78a 100644 --- a/libs/ledger-live-common/src/families/tron/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/tron/__snapshots__/bridge.integration.test.ts.snap @@ -16,13 +16,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "index": 0, - "name": "Tron 1", + "name": "", "nfts": undefined, "operationsCount": 196, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "1781772", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -75,7 +75,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002775", "type": "TokenAccountRaw", @@ -88,7 +88,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "10000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002830", "type": "TokenAccountRaw", @@ -101,7 +101,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002398", "type": "TokenAccountRaw", @@ -114,7 +114,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002573", "type": "TokenAccountRaw", @@ -127,7 +127,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002736", "type": "TokenAccountRaw", @@ -140,7 +140,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "10000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002814", "type": "TokenAccountRaw", @@ -153,7 +153,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "26888000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002000", "type": "TokenAccountRaw", @@ -166,7 +166,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "46825830", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tla2f6vpqdgre67v1736s7bj8ray5wyju7", "type": "TokenAccountRaw", @@ -179,7 +179,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRqkRnAj6ceJFYAn2p1eE7aWrgBBwtdhS9:", "pendingOperations": [], "spendableBalance": "376", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tr7nhqjekqxgtci8q8zy4pl8otszgjlj6t", "type": "TokenAccountRaw", @@ -198,13 +198,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "index": 1, - "name": "Tron 2", + "name": "", "nfts": undefined, "operationsCount": 24, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "2094000", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -247,7 +247,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "1000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002578", "type": "TokenAccountRaw", @@ -260,7 +260,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "20000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002798", "type": "TokenAccountRaw", @@ -273,7 +273,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002544", "type": "TokenAccountRaw", @@ -286,7 +286,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "15000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002775", "type": "TokenAccountRaw", @@ -299,7 +299,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "14", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1000226", "type": "TokenAccountRaw", @@ -312,7 +312,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002398", "type": "TokenAccountRaw", @@ -325,7 +325,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "15000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002573", "type": "TokenAccountRaw", @@ -338,7 +338,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "10000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002672", "type": "TokenAccountRaw", @@ -351,7 +351,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "20000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002597", "type": "TokenAccountRaw", @@ -364,7 +364,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002736", "type": "TokenAccountRaw", @@ -377,7 +377,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "10000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002517", "type": "TokenAccountRaw", @@ -390,7 +390,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "10000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002814", "type": "TokenAccountRaw", @@ -403,7 +403,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "9012000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002000", "type": "TokenAccountRaw", @@ -416,7 +416,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "1000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tla2f6vpqdgre67v1736s7bj8ray5wyju7", "type": "TokenAccountRaw", @@ -429,7 +429,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:THAe4BNVxp293qgyQEqXEkHMpPcqtG73bi:", "pendingOperations": [], "spendableBalance": "2013400", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tr7nhqjekqxgtci8q8zy4pl8otszgjlj6t", "type": "TokenAccountRaw", @@ -448,13 +448,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TWepUnyBzHx2aoEgNGotZHCybZJZe1AHdW:", "index": 2, - "name": "Tron 3", + "name": "", "nfts": undefined, "operationsCount": 2, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -491,7 +491,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TWepUnyBzHx2aoEgNGotZHCybZJZe1AHdW:", "pendingOperations": [], "spendableBalance": "2000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002000", "type": "TokenAccountRaw", @@ -504,7 +504,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TWepUnyBzHx2aoEgNGotZHCybZJZe1AHdW:", "pendingOperations": [], "spendableBalance": "10000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tla2f6vpqdgre67v1736s7bj8ray5wyju7", "type": "TokenAccountRaw", @@ -523,13 +523,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TTBPBK1n8nX1VkYPh7fsM56KL6G9HRM7Vc:", "index": 3, - "name": "Tron 4", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "3000000", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -566,7 +566,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TTBPBK1n8nX1VkYPh7fsM56KL6G9HRM7Vc:", "pendingOperations": [], "spendableBalance": "183", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tr7nhqjekqxgtci8q8zy4pl8otszgjlj6t", "type": "TokenAccountRaw", @@ -585,13 +585,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TRzAd8k78ob5wTWHepeDpQruUuKYffh48x:", "index": 4, - "name": "Tron 5", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "2000000", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -628,7 +628,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRzAd8k78ob5wTWHepeDpQruUuKYffh48x:", "pendingOperations": [], "spendableBalance": "5000000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002544", "type": "TokenAccountRaw", @@ -641,7 +641,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TRzAd8k78ob5wTWHepeDpQruUuKYffh48x:", "pendingOperations": [], "spendableBalance": "756", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tr7nhqjekqxgtci8q8zy4pl8otszgjlj6t", "type": "TokenAccountRaw", @@ -660,13 +660,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TCKFUfFr8EU9CVfKzq8vLPxkZVG4vAewTd:", "index": 5, - "name": "Tron 6", + "name": "", "nfts": undefined, "operationsCount": 2, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -703,7 +703,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TCKFUfFr8EU9CVfKzq8vLPxkZVG4vAewTd:", "pendingOperations": [], "spendableBalance": "100000", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc10/1002000", "type": "TokenAccountRaw", @@ -722,13 +722,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TReR4zdFE78NaKgUUUeHiVGXSGcCD4cNyj:", "index": 6, - "name": "Tron 7", + "name": "", "nfts": undefined, "operationsCount": 5, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "2505006", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -765,7 +765,7 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` "parentId": "js:2:tron:TReR4zdFE78NaKgUUUeHiVGXSGcCD4cNyj:", "pendingOperations": [], "spendableBalance": "623", - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "tron/trc20/tr7nhqjekqxgtci8q8zy4pl8otszgjlj6t", "type": "TokenAccountRaw", @@ -784,13 +784,13 @@ exports[`tron currency bridge scanAccounts tron seed 1 1`] = ` ], "id": "js:2:tron:TXFeV31qgUQYMLog3axKJeEBbXpQFtHsXD:", "index": 7, - "name": "Tron 8", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "049fc19cbc6d0f525b1c6947b4a36aec74b48e15f2531c5e7e58d272c9e926786da290eb3505d8fab9c83818c1174d9bc96fd18e0527365cba6b9534d43ad5052b", "spendableBalance": "0", - "starred": false, + "starred": undefined, "swapHistory": [], "syncHash": undefined, "tronResources": { diff --git a/libs/ledger-live-common/src/families/tron/bridge.integration.test.ts b/libs/ledger-live-common/src/families/tron/bridge.integration.test.ts index 82e3f1f35d8b..38119c93c1fd 100644 --- a/libs/ledger-live-common/src/families/tron/bridge.integration.test.ts +++ b/libs/ledger-live-common/src/families/tron/bridge.integration.test.ts @@ -1190,7 +1190,6 @@ const tron: CurrenciesData = { seedIdentifier: "0416c02ea5e939eed995f75c44667a66b9c8dfddede8c6d54211f64b1dace9e1c40bcbbd5341480f43a5f37c7ab3a0c53f9cccff57d59bb0368d1e744135d7f68a", name: "Tron 1", - starred: false, used: true, derivationMode: "", index: 0, @@ -1240,7 +1239,6 @@ const tron: CurrenciesData = { seedIdentifier: "0416c02ea5e939eed995f75c44667a66b9c8dfddede8c6d54211f64b1dace9e1c40bcbbd5341480f43a5f37c7ab3a0c53f9cccff57d59bb0368d1e744135d7f68a", name: "Tron 3", - starred: false, used: true, derivationMode: "", index: 2, diff --git a/libs/ledger-live-common/src/families/tron/bridge/js.ts b/libs/ledger-live-common/src/families/tron/bridge/js.ts index fa47973c6635..1775a4894ae3 100644 --- a/libs/ledger-live-common/src/families/tron/bridge/js.ts +++ b/libs/ledger-live-common/src/families/tron/bridge/js.ts @@ -468,7 +468,6 @@ const getAccountShape = async (info: AccountShapeInfo, syncConfig) => { const sub: TokenAccount = { type: "TokenAccount", id, - starred: false, parentId: accountId, token, balance: bnBalance, diff --git a/libs/ledger-live-common/src/families/tron/data.mock.ts b/libs/ledger-live-common/src/families/tron/data.mock.ts index 4fd6dcfc7f39..0f4d4db4b918 100644 --- a/libs/ledger-live-common/src/families/tron/data.mock.ts +++ b/libs/ledger-live-common/src/families/tron/data.mock.ts @@ -7,7 +7,6 @@ export const __LAST_VOTING_DATE__ = new Date(Date.now() - 6 * 60 * 60 * 1000); export const mockAccount = fromAccountRaw({ id: "js:2:tron:TRON_ID:", - starred: true, seedIdentifier: "TRON_ID", derivationMode: "", index: 0, @@ -282,7 +281,6 @@ export const mockAccount = fromAccountRaw({ }) as TronAccount; export const mockAccountNoReward = fromAccountRaw({ id: "js:2:tron:TRON_ID:", - starred: true, seedIdentifier: "TRON_ID", derivationMode: "", index: 0, @@ -513,7 +511,6 @@ export const mockAccountNoReward = fromAccountRaw({ }) as TronAccount; export const mockAccountNoVote = fromAccountRaw({ id: "js:2:tron:TRON_ID:", - starred: true, seedIdentifier: "TRON_ID", derivationMode: "", index: 0, diff --git a/libs/ledger-live-common/src/families/tron/synchronisation.integration.test.ts b/libs/ledger-live-common/src/families/tron/synchronisation.integration.test.ts index 4cf59305da8b..278456a7c4b3 100644 --- a/libs/ledger-live-common/src/families/tron/synchronisation.integration.test.ts +++ b/libs/ledger-live-common/src/families/tron/synchronisation.integration.test.ts @@ -20,8 +20,6 @@ const dummyAccount: Account = { id: "", derivationMode: "", seedIdentifier: "", - name: "Tron", - starred: false, used: false, currency: tron, index: 0, diff --git a/libs/ledger-live-common/src/families/vechain/__snapshots__/bridge.integration.test.ts.snap b/libs/ledger-live-common/src/families/vechain/__snapshots__/bridge.integration.test.ts.snap index 391beeaa4d5d..c2f581497cf1 100644 --- a/libs/ledger-live-common/src/families/vechain/__snapshots__/bridge.integration.test.ts.snap +++ b/libs/ledger-live-common/src/families/vechain/__snapshots__/bridge.integration.test.ts.snap @@ -16,12 +16,12 @@ exports[`vechain currency bridge scanAccounts vechain seed 1 1`] = ` ], "id": "js:2:vechain:0x0fe6688548f0C303932bB197B0A96034f1d74dba:vechain", "index": 0, - "name": "Vechain 1", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "04de5a8f11cc426ff5617aeffd397c5dd77b58424662f368f2cd539a8c42fd2e7d0c6245c9c3a4306f70d7f292e95642651a6832d66fd9823fa6a0af575113e94e", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -34,7 +34,7 @@ exports[`vechain currency bridge scanAccounts vechain seed 1 1`] = ` "operationsCount": 1, "parentId": "js:2:vechain:0x0fe6688548f0C303932bB197B0A96034f1d74dba:vechain", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "vechain/vip180/vtho", "type": "TokenAccountRaw", @@ -53,12 +53,12 @@ exports[`vechain currency bridge scanAccounts vechain seed 1 1`] = ` ], "id": "js:2:vechain:0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86:vechain", "index": 1, - "name": "Vechain 2", + "name": "", "nfts": undefined, "operationsCount": 1, "pendingOperations": [], "seedIdentifier": "04de5a8f11cc426ff5617aeffd397c5dd77b58424662f368f2cd539a8c42fd2e7d0c6245c9c3a4306f70d7f292e95642651a6832d66fd9823fa6a0af575113e94e", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -71,7 +71,7 @@ exports[`vechain currency bridge scanAccounts vechain seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:vechain:0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86:vechain", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "vechain/vip180/vtho", "type": "TokenAccountRaw", @@ -90,12 +90,12 @@ exports[`vechain currency bridge scanAccounts vechain seed 1 1`] = ` ], "id": "js:2:vechain:0xFbC8653C0b842dd33361CE8938B24e407dd4838C:vechain", "index": 2, - "name": "Vechain 3", + "name": "", "nfts": undefined, "operationsCount": 0, "pendingOperations": [], "seedIdentifier": "04de5a8f11cc426ff5617aeffd397c5dd77b58424662f368f2cd539a8c42fd2e7d0c6245c9c3a4306f70d7f292e95642651a6832d66fd9823fa6a0af575113e94e", - "starred": false, + "starred": undefined, "subAccounts": [], "swapHistory": [], "syncHash": undefined, @@ -108,7 +108,7 @@ exports[`vechain currency bridge scanAccounts vechain seed 1 1`] = ` "operationsCount": 0, "parentId": "js:2:vechain:0xFbC8653C0b842dd33361CE8938B24e407dd4838C:vechain", "pendingOperations": [], - "starred": false, + "starred": undefined, "swapHistory": [], "tokenId": "vechain/vip180/vtho", "type": "TokenAccountRaw", diff --git a/libs/ledger-live-common/src/families/vechain/js-synchronisation.ts b/libs/ledger-live-common/src/families/vechain/js-synchronisation.ts index 72a589ffac81..5f6daabe6f47 100644 --- a/libs/ledger-live-common/src/families/vechain/js-synchronisation.ts +++ b/libs/ledger-live-common/src/families/vechain/js-synchronisation.ts @@ -70,7 +70,6 @@ const getAccountShape: GetAccountShape = async info => { blockHeight, pendingOperations: (initialAccount?.subAccounts && initialAccount.subAccounts[0]?.pendingOperations) || [], - starred: (initialAccount?.subAccounts && initialAccount.subAccounts[0]?.starred) || false, balanceHistoryCache: (initialAccount?.subAccounts && initialAccount.subAccounts[0]?.balanceHistoryCache) || emptyHistoryCache, diff --git a/libs/ledger-live-common/src/hooks/useAccountsWithFundsListener.test.tsx b/libs/ledger-live-common/src/hooks/useAccountsWithFundsListener.test.tsx index 2d941025ff0d..6bdf1707af8b 100644 --- a/libs/ledger-live-common/src/hooks/useAccountsWithFundsListener.test.tsx +++ b/libs/ledger-live-common/src/hooks/useAccountsWithFundsListener.test.tsx @@ -13,7 +13,6 @@ const polygon = getCryptoCurrencyById("polygon"); const ethMockAccount: Account = { type: "Account", id: "js:2:ethereum:0x66c4371aE8FFeD2ec1c2EBbbcCfb7E494181E1E3:", - starred: false, used: true, seedIdentifier: "0441996d9ce858d8fd6304dd790e645500fc6cee7ae0fccfee8c8fa884dfa8ccf1f6f8cc82cc0aa71fc659c895a8a43b69f918b08a22b3a6145a0bbd93c5cb9308", @@ -27,7 +26,6 @@ const ethMockAccount: Account = { derivationPath: "44'/60'/0'/0/0", }, ], - name: "Ethereum 1", blockHeight: 16626551, creationDate: new Date("2021-03-23T14:17:07.001Z"), balance: new BigNumber("22913015427119498"), @@ -54,7 +52,6 @@ const ethMockAccount: Account = { const polygonMockAccount: Account = { type: "Account", id: "js:2:polygon:0x66c4371aE8FFeD2ec1c2EBbbcCfb7E494181E1E3:", - starred: false, used: true, seedIdentifier: "0441996d9ce858d8fd6304dd790e645500fc6cee7ae0fccfee8c8fa884dfa8ccf1f6f8cc82cc0aa71fc659c895a8a43b69f918b08a22b3a6145a0bbd93c5cb9308", @@ -68,7 +65,6 @@ const polygonMockAccount: Account = { derivationPath: "44'/60'/0'/0/0", }, ], - name: "Polygon 1", blockHeight: 16626551, creationDate: new Date("2021-03-23T14:17:07.001Z"), balance: new BigNumber("22913015427119498"), diff --git a/libs/ledger-live-common/src/hw/actions/app.ts b/libs/ledger-live-common/src/hw/actions/app.ts index cad367af8330..025e0435ded3 100644 --- a/libs/ledger-live-common/src/hw/actions/app.ts +++ b/libs/ledger-live-common/src/hw/actions/app.ts @@ -15,7 +15,6 @@ import type { Input as ConnectAppInput, } from "../connectApp"; import { useReplaySubject } from "../../observable"; -import { getAccountName } from "../../account"; import type { Device, Action } from "./types"; import { shouldUpgrade } from "../../apps"; import { AppOp, SkippedAppOp } from "../../apps/types"; @@ -23,6 +22,7 @@ import perFamilyAccount from "../../generated/account"; import type { Account, DeviceInfo, FirmwareUpdateContext } from "@ledgerhq/types-live"; import type { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; import { getImplementation, ImplementationType } from "./implementations"; +import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName"; export type State = { isLoading: boolean; @@ -542,7 +542,7 @@ export const createAction = ( ? state.derivation.address !== appRequest.account.freshAddress && state.derivation.address !== appRequest.account.seedIdentifier // Use-case added for Hedera ? { - accountName: getAccountName(appRequest.account), + accountName: getDefaultAccountName(appRequest.account), } : null : null, diff --git a/libs/ledger-live-common/src/hw/signMessage/index.test.ts b/libs/ledger-live-common/src/hw/signMessage/index.test.ts index 0957b92998bb..aa0a79ff34a3 100644 --- a/libs/ledger-live-common/src/hw/signMessage/index.test.ts +++ b/libs/ledger-live-common/src/hw/signMessage/index.test.ts @@ -89,8 +89,6 @@ const createAccount = (crypto: CryptoCurrency): Account => ({ freshAddress: "0x01", freshAddressPath: "44'/60'/0'/0/0", freshAddresses: [], - name: "Ethereum 1", - starred: false, used: false, balance: new BigNumber("51281813126095913"), spendableBalance: new BigNumber("51281813126095913"), diff --git a/libs/ledger-live-common/src/mock/fixtures/cryptoCurrencies.ts b/libs/ledger-live-common/src/mock/fixtures/cryptoCurrencies.ts index 013c120345b0..19f500ae2a76 100644 --- a/libs/ledger-live-common/src/mock/fixtures/cryptoCurrencies.ts +++ b/libs/ledger-live-common/src/mock/fixtures/cryptoCurrencies.ts @@ -55,7 +55,6 @@ export function createFixtureTokenAccount( operationsCount: 0, operations: [], pendingOperations: [], - starred: false, balanceHistoryCache: { HOUR: { balances: [], @@ -87,8 +86,6 @@ export function createFixtureAccount( freshAddress: "0x01", freshAddressPath: "44'/60'/0'/0/0", freshAddresses: [], - name: "Ethereum 1", - starred: false, used: false, balance: new BigNumber("51281813126095913"), spendableBalance: new BigNumber("51281813126095913"), diff --git a/libs/ledger-live-common/src/platform/converters.ts b/libs/ledger-live-common/src/platform/converters.ts index 019421e26f9a..996e65051ffd 100644 --- a/libs/ledger-live-common/src/platform/converters.ts +++ b/libs/ledger-live-common/src/platform/converters.ts @@ -11,8 +11,10 @@ import { PlatformTokenStandard, PlatformTransaction, } from "./types"; +import { WalletState, accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; export function accountToPlatformAccount( + walletState: WalletState, account: AccountLike, parentAccount?: Account, ): PlatformAccount { @@ -21,21 +23,25 @@ export function accountToPlatformAccount( throw new Error("No 'parentAccount' account provided for token account"); } + const parentName = accountNameWithDefaultSelector(walletState, parentAccount); + return { id: account.id, balance: account.balance, address: parentAccount.freshAddress, blockHeight: parentAccount.blockHeight, lastSyncDate: parentAccount.lastSyncDate, - name: `${parentAccount.name} (${account.token.ticker})`, + name: `${parentName} (${account.token.ticker})`, currency: account.token.id, spendableBalance: account.spendableBalance, }; } + const name = accountNameWithDefaultSelector(walletState, account); + return { id: account.id, - name: account.name, + name, address: account.freshAddress, currency: account.currency.id, balance: account.balance, diff --git a/libs/ledger-live-common/src/platform/logic.test.ts b/libs/ledger-live-common/src/platform/logic.test.ts index c409835ab353..2ea3ae918fd1 100644 --- a/libs/ledger-live-common/src/platform/logic.test.ts +++ b/libs/ledger-live-common/src/platform/logic.test.ts @@ -25,8 +25,10 @@ import { import { RawPlatformTransaction } from "./rawTypes"; import * as serializers from "./serializers"; import { LiveAppManifest } from "./types"; +import { initialState } from "@ledgerhq/live-wallet/store"; describe("receiveOnAccountLogic", () => { + const walletState = initialState; // Given const mockPlatformReceiveRequested = jest.fn(); const mockPlatformReceiveFail = jest.fn(); @@ -62,7 +64,7 @@ describe("receiveOnAccountLogic", () => { jest.spyOn(converters, "accountToPlatformAccount").mockReturnValueOnce(convertedAccount); // When - const result = await receiveOnAccountLogic(context, accountId, uiNavigation); + const result = await receiveOnAccountLogic(walletState, context, accountId, uiNavigation); // Then expect(uiNavigation).toBeCalledTimes(1); @@ -72,7 +74,7 @@ describe("receiveOnAccountLogic", () => { it("calls the tracking for success", async () => { // When - await receiveOnAccountLogic(context, accountId, uiNavigation); + await receiveOnAccountLogic(walletState, context, accountId, uiNavigation); // Then expect(mockPlatformReceiveRequested).toBeCalledTimes(1); @@ -87,7 +89,7 @@ describe("receiveOnAccountLogic", () => { it("returns an error", async () => { // When await expect(async () => { - await receiveOnAccountLogic(context, nonFoundAccountId, uiNavigation); + await receiveOnAccountLogic(walletState, context, nonFoundAccountId, uiNavigation); }).rejects.toThrowError("Account required"); // Then @@ -97,7 +99,7 @@ describe("receiveOnAccountLogic", () => { it("calls the tracking for error", async () => { // When await expect(async () => { - await receiveOnAccountLogic(context, nonFoundAccountId, uiNavigation); + await receiveOnAccountLogic(walletState, context, nonFoundAccountId, uiNavigation); }).rejects.toThrow(); // Then @@ -699,7 +701,6 @@ function createTokenAccount(id = "32"): TokenAccount { operationsCount: 0, operations: [], pendingOperations: [], - starred: false, balanceHistoryCache: { WEEK: { latestDate: null, balances: [] }, HOUR: { latestDate: null, balances: [] }, diff --git a/libs/ledger-live-common/src/platform/logic.ts b/libs/ledger-live-common/src/platform/logic.ts index 520de6167d28..7317ac52f16f 100644 --- a/libs/ledger-live-common/src/platform/logic.ts +++ b/libs/ledger-live-common/src/platform/logic.ts @@ -12,6 +12,7 @@ import { getAccountBridge } from "../bridge/index"; import { Transaction } from "../generated/types"; import { prepareMessageToSign } from "../hw/signMessage/index"; import { Exchange } from "../exchange/types"; +import { WalletState } from "@ledgerhq/live-wallet/store"; export function translateContent(content: string | TranslatableString, locale = "en"): string { if (!content || typeof content === "string") return content; @@ -31,6 +32,7 @@ function getParentAccount(account: AccountLike, fromAccounts: AccountLike[]): Ac } export function receiveOnAccountLogic( + walletState: WalletState, { manifest, accounts, tracking }: WebPlatformContext, accountId: string, uiNavigation: ( @@ -49,7 +51,7 @@ export function receiveOnAccountLogic( } const parentAccount = getParentAccount(account, accounts); - const accountAddress = accountToPlatformAccount(account, parentAccount).address; + const accountAddress = accountToPlatformAccount(walletState, account, parentAccount).address; return uiNavigation(account, parentAccount, accountAddress); } diff --git a/libs/ledger-live-common/src/platform/react.ts b/libs/ledger-live-common/src/platform/react.ts index c9424cb7d640..b7bdf78fb07c 100644 --- a/libs/ledger-live-common/src/platform/react.ts +++ b/libs/ledger-live-common/src/platform/react.ts @@ -17,6 +17,7 @@ import { } from "./types"; import { getParentAccount } from "../account"; import { listCurrencies } from "../currencies"; +import { WalletState } from "@ledgerhq/live-wallet/store"; /** * TODO: we might want to use "searchParams.append" instead of "searchParams.set" @@ -48,18 +49,24 @@ export function usePlatformUrl( }, [manifest.url, manifest.params, inputs]); } -export function usePlatformAccounts(accounts: AccountLike[]): PlatformAccount[] { +export function usePlatformAccounts( + walletState: WalletState, + accounts: AccountLike[], +): PlatformAccount[] { return useMemo(() => { return accounts.map(account => { const parentAccount = getParentAccount(account, accounts); - return accountToPlatformAccount(account, parentAccount); + return accountToPlatformAccount(walletState, account, parentAccount); }); - }, [accounts]); + }, [walletState, accounts]); } -export function useListPlatformAccounts(accounts: AccountLike[]): ListPlatformAccount { - const platformAccounts = usePlatformAccounts(accounts); +export function useListPlatformAccounts( + walletState: WalletState, + accounts: AccountLike[], +): ListPlatformAccount { + const platformAccounts = usePlatformAccounts(walletState, accounts); return useCallback( (filters: AccountFilters = {}) => { return filterPlatformAccounts(platformAccounts, filters); diff --git a/libs/ledger-live-common/src/wallet-api/converters.ts b/libs/ledger-live-common/src/wallet-api/converters.ts index e2fd86efeb75..60e1cdde1951 100644 --- a/libs/ledger-live-common/src/wallet-api/converters.ts +++ b/libs/ledger-live-common/src/wallet-api/converters.ts @@ -11,6 +11,7 @@ import { GetWalletAPITransactionSignFlowInfos, } from "./types"; import { Families } from "@ledgerhq/wallet-api-core"; +import { WalletState, accountNameWithDefaultSelector } from "@ledgerhq/live-wallet/store"; // The namespace is a randomly generated uuid v4 from https://www.uuidgenerator.net/ const NAMESPACE = "c3c78073-6844-409e-9e75-171ab4c7f9a2"; @@ -20,6 +21,7 @@ export const getAccountIdFromWalletAccountId = (walletAccountId: string): string uuidToAccountId.get(walletAccountId); export function accountToWalletAPIAccount( + walletState: WalletState, account: AccountLike, parentAccount?: Account, ): WalletAPIAccount { @@ -34,6 +36,8 @@ export function accountToWalletAPIAccount( const parentWalletApiId = uuidv5(parentAccount.id, NAMESPACE); uuidToAccountId.set(parentWalletApiId, parentAccount.id); + const parentAccountName = accountNameWithDefaultSelector(walletState, parentAccount); + return { id: walletApiId, parentAccountId: parentWalletApiId, @@ -41,15 +45,16 @@ export function accountToWalletAPIAccount( address: parentAccount.freshAddress, blockHeight: parentAccount.blockHeight, lastSyncDate: parentAccount.lastSyncDate, - name: `${parentAccount.name} (${account.token.ticker})`, + name: `${parentAccountName} (${account.token.ticker})`, currency: account.token.id, spendableBalance: account.spendableBalance, }; } + const name = accountNameWithDefaultSelector(walletState, account); return { id: walletApiId, - name: account.name, + name, address: account.freshAddress, currency: account.currency.id, balance: account.balance, diff --git a/libs/ledger-live-common/src/wallet-api/logic.test.ts b/libs/ledger-live-common/src/wallet-api/logic.test.ts index b88f55aaf154..1447f1222471 100644 --- a/libs/ledger-live-common/src/wallet-api/logic.test.ts +++ b/libs/ledger-live-common/src/wallet-api/logic.test.ts @@ -23,6 +23,7 @@ import { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; import { TrackingAPI } from "./tracking"; import { cryptocurrenciesById } from "@ledgerhq/cryptoassets/currencies"; import { setSupportedCurrencies } from "../currencies"; +import { initialState as walletState } from "@ledgerhq/live-wallet/store"; describe("receiveOnAccountLogic", () => { // Given @@ -70,7 +71,12 @@ describe("receiveOnAccountLogic", () => { jest.spyOn(converters, "accountToWalletAPIAccount").mockReturnValueOnce(convertedAccount); // When - const result = await receiveOnAccountLogic(context, walletAccountId, uiNavigation); + const result = await receiveOnAccountLogic( + walletState, + context, + walletAccountId, + uiNavigation, + ); // Then expect(uiNavigation).toBeCalledTimes(1); @@ -80,7 +86,7 @@ describe("receiveOnAccountLogic", () => { it("calls the tracking for success", async () => { // When - await receiveOnAccountLogic(context, walletAccountId, uiNavigation); + await receiveOnAccountLogic(walletState, context, walletAccountId, uiNavigation); // Then expect(mockWalletAPIReceiveRequested).toBeCalledTimes(1); @@ -99,7 +105,7 @@ describe("receiveOnAccountLogic", () => { it("returns an error", async () => { // When await expect(async () => { - await receiveOnAccountLogic(context, walletAccountId, uiNavigation); + await receiveOnAccountLogic(walletState, context, walletAccountId, uiNavigation); }).rejects.toThrowError(`accountId ${walletAccountId} unknown`); // Then @@ -109,7 +115,7 @@ describe("receiveOnAccountLogic", () => { it("calls the tracking for error", async () => { // When await expect(async () => { - await receiveOnAccountLogic(context, walletAccountId, uiNavigation); + await receiveOnAccountLogic(walletState, context, walletAccountId, uiNavigation); }).rejects.toThrow(); // Then @@ -876,7 +882,6 @@ function createTokenAccount(id = "32"): TokenAccount { operationsCount: 0, operations: [], pendingOperations: [], - starred: false, balanceHistoryCache: { WEEK: { latestDate: null, balances: [] }, HOUR: { latestDate: null, balances: [] }, diff --git a/libs/ledger-live-common/src/wallet-api/logic.ts b/libs/ledger-live-common/src/wallet-api/logic.ts index 8c1938a8f7d4..7ed311e17809 100644 --- a/libs/ledger-live-common/src/wallet-api/logic.ts +++ b/libs/ledger-live-common/src/wallet-api/logic.ts @@ -18,6 +18,7 @@ import { prepareMessageToSign } from "../hw/signMessage/index"; import { getAccountBridge } from "../bridge"; import { Exchange } from "../exchange/types"; import { findTokenById } from "@ledgerhq/cryptoassets"; +import { WalletState } from "@ledgerhq/live-wallet/store"; export function translateContent(content: string | TranslatableString, locale = "en"): string { if (!content || typeof content === "string") return content; @@ -31,6 +32,7 @@ export type WalletAPIContext = { }; export function receiveOnAccountLogic( + walletState: WalletState, { manifest, accounts, tracking }: WalletAPIContext, walletAccountId: string, uiNavigation: ( @@ -59,7 +61,7 @@ export function receiveOnAccountLogic( const mainAccount = getMainAccount(account, parentAccount); const currency = tokenCurrency ? findTokenById(tokenCurrency) : null; const receivingAccount = currency ? makeEmptyTokenAccount(mainAccount, currency) : account; - const accountAddress = accountToWalletAPIAccount(account, parentAccount).address; + const accountAddress = accountToWalletAPIAccount(walletState, account, parentAccount).address; return uiNavigation(receivingAccount, parentAccount, accountAddress); } diff --git a/libs/ledger-live-common/src/wallet-api/react.ts b/libs/ledger-live-common/src/wallet-api/react.ts index c5c8ec8610a0..9f7316ad8a69 100644 --- a/libs/ledger-live-common/src/wallet-api/react.ts +++ b/libs/ledger-live-common/src/wallet-api/react.ts @@ -44,6 +44,7 @@ import { UserRefusedOnDevice } from "@ledgerhq/errors"; import { Transaction } from "../generated/types"; import { DISCOVER_INITIAL_CATEGORY, MAX_RECENTLY_USED_LENGTH } from "./constants"; import { DiscoverDB } from "./types"; +import { WalletState } from "@ledgerhq/live-wallet/store"; export function safeGetRefValue(ref: RefObject): NonNullable { if (!ref.current) { @@ -52,14 +53,17 @@ export function safeGetRefValue(ref: RefObject): NonNullable { return ref.current; } -export function useWalletAPIAccounts(accounts: AccountLike[]): WalletAPIAccount[] { +export function useWalletAPIAccounts( + walletState: WalletState, + accounts: AccountLike[], +): WalletAPIAccount[] { return useMemo(() => { return accounts.map(account => { const parentAccount = getParentAccount(account, accounts); - return accountToWalletAPIAccount(account, parentAccount); + return accountToWalletAPIAccount(walletState, account, parentAccount); }); - }, [accounts]); + }, [walletState, accounts]); } const allCurrenciesAndTokens = listCurrencies(true); @@ -270,6 +274,7 @@ function useDeviceTransport({ manifest, tracking }) { } export type useWalletAPIServerOptions = { + walletState: WalletState; manifest: AppManifest; accounts: AccountLike[]; tracking: TrackingAPI; @@ -283,6 +288,7 @@ export type useWalletAPIServerOptions = { }; export function useWalletAPIServer({ + walletState, manifest, accounts, tracking, @@ -314,7 +320,7 @@ export function useWalletAPIServer({ const transport = useTransport(webviewHook.postMessage); const [widgetLoaded, setWidgetLoaded] = useState(false); - const walletAPIAccounts = useWalletAPIAccounts(accounts); + const walletAPIAccounts = useWalletAPIAccounts(walletState, accounts); const walletAPICurrencies = useWalletAPICurrencies(); const { server, onMessage } = useWalletAPIServerRaw({ @@ -363,7 +369,7 @@ export function useWalletAPIServer({ currencies: currencyList, onSuccess: (account: AccountLike, parentAccount: Account | undefined) => { tracking.requestAccountSuccess(manifest); - resolve(accountToWalletAPIAccount(account, parentAccount)); + resolve(accountToWalletAPIAccount(walletState, account, parentAccount)); }, onCancel: () => { tracking.requestAccountFail(manifest); @@ -372,13 +378,14 @@ export function useWalletAPIServer({ }); }); }); - }, [manifest, server, tracking, uiAccountRequest]); + }, [walletState, manifest, server, tracking, uiAccountRequest]); useEffect(() => { if (!uiAccountReceive) return; server.setHandler("account.receive", ({ account, tokenCurrency }) => receiveOnAccountLogic( + walletState, { manifest, accounts, tracking }, account.id, (account, parentAccount, accountAddress) => @@ -404,7 +411,7 @@ export function useWalletAPIServer({ tokenCurrency, ), ); - }, [accounts, manifest, server, tracking, uiAccountReceive]); + }, [walletState, accounts, manifest, server, tracking, uiAccountReceive]); useEffect(() => { if (!uiMessageSign) return; diff --git a/libs/ledgerjs/packages/types-live/README.md b/libs/ledgerjs/packages/types-live/README.md index 38b306d97f9a..d06541ed4251 100644 --- a/libs/ledgerjs/packages/types-live/README.md +++ b/libs/ledgerjs/packages/types-live/README.md @@ -26,14 +26,16 @@ Ledger Live main types. * [AccountRawLike](#accountrawlike) * [AccountIdParams](#accountidparams) * [Properties](#properties-5) -* [ScanAccountEventRaw](#scanaccounteventraw) +* [AccountUserData](#accountuserdata) * [Properties](#properties-6) +* [ScanAccountEventRaw](#scanaccounteventraw) + * [Properties](#properties-7) * [DeviceId](#deviceid) * [PreloadStrategy](#preloadstrategy) * [BroadcastArg](#broadcastarg) - * [Properties](#properties-7) -* [SignOperationArg0](#signoperationarg0) * [Properties](#properties-8) +* [SignOperationArg0](#signoperationarg0) + * [Properties](#properties-9) * [SignOperationFnSignature](#signoperationfnsignature) * [CurrencyBridge](#currencybridge) * [AccountBridge](#accountbridge) @@ -44,12 +46,14 @@ Ledger Live main types. * [initAccount](#initaccount) * [Parameters](#parameters-2) * [CurrenciesData](#currenciesdata) - * [Properties](#properties-9) -* [DatasetTest](#datasettest) * [Properties](#properties-10) +* [DatasetTest](#datasettest) + * [Properties](#properties-11) +* [BridgeCacheSystem](#bridgecachesystem) + * [Properties](#properties-12) * [DerivationMode](#derivationmode) * [Feature](#feature) - * [Properties](#properties-11) + * [Properties](#properties-13) * [enabled](#enabled) * [desktop\_version](#desktop_version) * [mobile\_version](#mobile_version) @@ -62,81 +66,81 @@ Ledger Live main types. * [params](#params) * [DefaultFeature](#defaultfeature) * [CurrencyFeatures](#currencyfeatures) - * [Properties](#properties-12) + * [Properties](#properties-14) * [Features](#features) * [FeatureId](#featureid) * [Feature\_EthStakingProviders](#feature_ethstakingproviders) * [FeatureMap](#featuremap) * [LedgerScriptParams](#ledgerscriptparams) - * [Properties](#properties-13) + * [Properties](#properties-15) * [DeviceInfo](#deviceinfo) - * [Properties](#properties-14) + * [Properties](#properties-16) * [DeviceModelInfo](#devicemodelinfo) - * [Properties](#properties-15) + * [Properties](#properties-17) * [DeviceVersion](#deviceversion) - * [Properties](#properties-16) + * [Properties](#properties-18) * [McuVersion](#mcuversion) - * [Properties](#properties-17) + * [Properties](#properties-19) * [SeedPhraseType](#seedphrasetype) * [FirmwareInfo](#firmwareinfo) - * [Properties](#properties-18) + * [Properties](#properties-20) * [OsuFirmware](#osufirmware) * [FinalFirmware](#finalfirmware) * [FirmwareUpdateContext](#firmwareupdatecontext) - * [Properties](#properties-19) + * [Properties](#properties-21) * [ApplicationVersion](#applicationversion) - * [Properties](#properties-20) + * [Properties](#properties-22) * [Application](#application) - * [Properties](#properties-21) + * [Properties](#properties-23) * [AppType](#apptype) * [App](#app) - * [Properties](#properties-22) + * [Properties](#properties-24) * [Category](#category) - * [Properties](#properties-23) + * [Properties](#properties-25) * [SocketEvent](#socketevent) * [NFTStandard](#nftstandard) * [NFTMediaSize](#nftmediasize) * [NFTMedias](#nftmedias) * [NFTMetadata](#nftmetadata) - * [Properties](#properties-24) + * [Properties](#properties-26) * [NFTCollectionMetadata](#nftcollectionmetadata) - * [Properties](#properties-25) + * [Properties](#properties-27) * [ProtoNFT](#protonft) - * [Properties](#properties-26) + * [Properties](#properties-28) * [ProtoNFTRaw](#protonftraw) * [NFT](#nft) * [NFTMetadataLinksProviders](#nftmetadatalinksproviders) * [NFTMetadataResponse](#nftmetadataresponse) - * [Properties](#properties-27) + * [Properties](#properties-29) * [NFTCollectionMetadataResponse](#nftcollectionmetadataresponse) - * [Properties](#properties-28) + * [Properties](#properties-30) * [FloorPrice](#floorprice) - * [Properties](#properties-29) + * [Properties](#properties-31) * [OperationType](#operationtype) * [Operation](#operation) - * [Properties](#properties-30) + * [Properties](#properties-32) * [PaginationConfig](#paginationconfig) - * [Properties](#properties-31) + * [Properties](#properties-33) * [SyncConfig](#syncconfig) - * [Properties](#properties-32) + * [Properties](#properties-34) * [BalanceHistoryData](#balancehistorydata) - * [Properties](#properties-33) + * [Properties](#properties-35) * [BalanceHistory](#balancehistory) * [BalanceHistoryRaw](#balancehistoryraw) * [BalanceHistoryWithCountervalue](#balancehistorywithcountervalue) * [ValueChange](#valuechange) - * [Properties](#properties-34) + * [Properties](#properties-36) * [AccountPortfolio](#accountportfolio) - * [Properties](#properties-35) + * [Properties](#properties-37) * [CurrencyPortfolio](#currencyportfolio) - * [Properties](#properties-36) + * [Properties](#properties-38) * [Portfolio](#portfolio) - * [Properties](#properties-37) + * [Properties](#properties-39) * [PortfolioRangeConfig](#portfoliorangeconfig) - * [Properties](#properties-38) + * [Properties](#properties-40) * [PortfolioRange](#portfoliorange) * [AssetsDistribution](#assetsdistribution) - * [Properties](#properties-39) + * [Properties](#properties-41) * [PostOnboardingActionId](#postonboardingactionid) * [getNavigationParams](#getnavigationparams) * [startAction](#startaction) @@ -154,10 +158,10 @@ Ledger Live main types. * [shouldCompleteOnStart](#shouldcompleteonstart) * [buttonLabelForAnalyticsEvent](#buttonlabelforanalyticsevent) * [PostOnboardingActionState](#postonboardingactionstate) - * [Properties](#properties-40) + * [Properties](#properties-42) * [completed](#completed) * [PostOnboardingState](#postonboardingstate) - * [Properties](#properties-41) + * [Properties](#properties-43) * [deviceModelId](#devicemodelid) * [walletEntryPointDismissed](#walletentrypointdismissed) * [actionsToComplete](#actionstocomplete) @@ -165,33 +169,33 @@ Ledger Live main types. * [lastActionCompleted](#lastactioncompleted) * [postOnboardingInProgress](#postonboardinginprogress) * [PostOnboardingHubState](#postonboardinghubstate) - * [Properties](#properties-42) + * [Properties](#properties-44) * [SwapOperation](#swapoperation) - * [Properties](#properties-43) + * [Properties](#properties-45) * [SwapOperationRaw](#swapoperationraw) - * [Properties](#properties-44) + * [Properties](#properties-46) * [SignedOperation](#signedoperation) - * [Properties](#properties-45) + * [Properties](#properties-47) * [SignedOperationRaw](#signedoperationraw) - * [Properties](#properties-46) + * [Properties](#properties-48) * [SignOperationEvent](#signoperationevent) * [SignOperationEventRaw](#signoperationeventraw) * [TransactionCommon](#transactioncommon) - * [Properties](#properties-47) + * [Properties](#properties-49) * [TransactionCommonRaw](#transactioncommonraw) - * [Properties](#properties-48) + * [Properties](#properties-50) * [FeeStrategy](#feestrategy) - * [Properties](#properties-49) + * [Properties](#properties-51) * [TransactionStatusCommon](#transactionstatuscommon) - * [Properties](#properties-50) + * [Properties](#properties-52) * [TransactionStatusCommonRaw](#transactionstatuscommonraw) - * [Properties](#properties-51) + * [Properties](#properties-53) ### TokenAccount A token belongs to an Account and share the parent account address -Type: {type: `"TokenAccount"`, id: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), parentId: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), token: TokenCurrency, balance: BigNumber, spendableBalance: BigNumber, creationDate: [Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date), operationsCount: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), operations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, pendingOperations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, starred: [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean), balanceHistoryCache: BalanceHistoryCache, swapHistory: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[SwapOperation](#swapoperation)>, approvals: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<{sender: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), value: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>?} +Type: {type: `"TokenAccount"`, id: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), parentId: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), token: TokenCurrency, balance: BigNumber, spendableBalance: BigNumber, creationDate: [Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date), operationsCount: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), operations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, pendingOperations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, balanceHistoryCache: BalanceHistoryCache, swapHistory: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[SwapOperation](#swapoperation)>, approvals: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<{sender: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), value: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>?} #### Properties @@ -205,7 +209,6 @@ Type: {type: `"TokenAccount"`, id: [string](https://developer.mozilla.org/docs/W * `operationsCount` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** * `operations` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>** * `pendingOperations` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>** -* `starred` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** * `balanceHistoryCache` **BalanceHistoryCache** * `swapHistory` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[SwapOperation](#swapoperation)>** * `approvals` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<{sender: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), value: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>?** @@ -232,7 +235,7 @@ const bitcoinAccount = account as BitcoinAccount; and that BitcoinAccount type would be part of a coin integration family specific indeed. -Type: {type: `"Account"`, id: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), seedIdentifier: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), xpub: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?, derivationMode: [DerivationMode](#derivationmode), index: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), freshAddress: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), freshAddressPath: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), freshAddresses: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Address](#address)>, name: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), starred: [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean), used: [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean), balance: BigNumber, spendableBalance: BigNumber, creationDate: [Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date), blockHeight: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), currency: CryptoCurrency, feesCurrency: (CryptoCurrency | TokenCurrency)?, unit: Unit, operationsCount: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), operations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, pendingOperations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, lastSyncDate: [Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date), subAccounts: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[TokenAccount](#tokenaccount)>?, balanceHistoryCache: BalanceHistoryCache, swapHistory: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[SwapOperation](#swapoperation)>, syncHash: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?, nfts: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[ProtoNFT](#protonft)>?} +Type: {type: `"Account"`, id: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), seedIdentifier: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), xpub: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?, derivationMode: [DerivationMode](#derivationmode), index: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), freshAddress: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), freshAddressPath: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), freshAddresses: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Address](#address)>, used: [boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean), balance: BigNumber, spendableBalance: BigNumber, creationDate: [Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date), blockHeight: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), currency: CryptoCurrency, feesCurrency: (CryptoCurrency | TokenCurrency)?, unit: Unit, operationsCount: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), operations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, pendingOperations: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Operation](#operation)>, lastSyncDate: [Date](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date), subAccounts: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[TokenAccount](#tokenaccount)>?, balanceHistoryCache: BalanceHistoryCache, swapHistory: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[SwapOperation](#swapoperation)>, syncHash: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?, nfts: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[ProtoNFT](#protonft)>?} #### Properties @@ -245,8 +248,6 @@ Type: {type: `"Account"`, id: [string](https://developer.mozilla.org/docs/Web/Ja * `freshAddress` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** * `freshAddressPath` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** * `freshAddresses` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Address](#address)>** -* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** -* `starred` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** * `used` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** * `balance` **BigNumber** * `spendableBalance` **BigNumber** @@ -354,6 +355,19 @@ Type: {type: [string](https://developer.mozilla.org/docs/Web/JavaScript/Referenc * `xpubOrAddress` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** * `derivationMode` **[DerivationMode](#derivationmode)** +### AccountUserData + +This represent the user's data part of an account which contains all user's custom information that aren't part of on-chain data +The object is serializable. + +Type: {id: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), name: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), starredIds: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>} + +#### Properties + +* `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** +* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** +* `starredIds` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** + ### ScanAccountEventRaw More events will come in the future @@ -465,6 +479,15 @@ Type: {implementations: [Array](https://developer.mozilla.org/docs/Web/JavaScrip * `implementations` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** * `currencies` **(Record\> | Record<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), never>)** +### BridgeCacheSystem + +Type: {hydrateCurrency: function (currency: CryptoCurrency): [Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<(any | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>, prepareCurrency: function (currency: CryptoCurrency): [Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<(any | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>} + +#### Properties + +* `hydrateCurrency` **function (currency: CryptoCurrency): [Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<(any | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** +* `prepareCurrency` **function (currency: CryptoCurrency): [Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<(any | null | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>** + ### DerivationMode DerivationMode is a string identifier of a specific derivation scheme in a list defined in live-common derivation.ts diff --git a/libs/ledgerjs/packages/types-live/src/account.ts b/libs/ledgerjs/packages/types-live/src/account.ts index d0ae53dc3b38..21e5732342f0 100644 --- a/libs/ledgerjs/packages/types-live/src/account.ts +++ b/libs/ledgerjs/packages/types-live/src/account.ts @@ -35,7 +35,6 @@ export type TokenAccount = { operationsCount: number; operations: Operation[]; pendingOperations: Operation[]; - starred: boolean; // Cache of balance history that allows a performant portfolio calculation. // currently there are no "raw" version of it because no need to at this stage. // could be in future when pagination is needed. @@ -96,10 +95,6 @@ export type Account = { // an array containing all fresh addresses and paths // may be empty if no sync has occurred freshAddresses: Address[]; - // account name - name: string; - // starred - starred: boolean; // says if the account essentially "exists". an account has been used in the past, but for some reason the blockchain finds it empty (no ops, no balance,..) used: boolean; // account balance in satoshi @@ -235,3 +230,16 @@ export type AccountIdParams = { xpubOrAddress: string; derivationMode: DerivationMode; }; + +/** + * This represent the user's data part of an account which contains all user's custom information that aren't part of on-chain data + * The object is serializable. + */ +export type AccountUserData = { + // the Account#id + id: string; + // user's name for this account + name: string; + // user's starred account ids: it can be more than the account.id because token accounts can also be starred + starredIds: string[]; +}; diff --git a/libs/ledgerjs/packages/types-live/src/bridge.ts b/libs/ledgerjs/packages/types-live/src/bridge.ts index c23e4c15a60e..4a1b9ae32424 100644 --- a/libs/ledgerjs/packages/types-live/src/bridge.ts +++ b/libs/ledgerjs/packages/types-live/src/bridge.ts @@ -258,3 +258,11 @@ export type DatasetTest = { implementations: string[]; currencies: Record> | Record; }; + +/** + * + */ +export type BridgeCacheSystem = { + hydrateCurrency: (currency: CryptoCurrency) => Promise; + prepareCurrency: (currency: CryptoCurrency) => Promise; +}; diff --git a/libs/live-countervalues/src/__snapshots__/portfolio.test.ts.snap b/libs/live-countervalues/src/__snapshots__/portfolio.test.ts.snap index 4d929c56f37a..7d90fb493d23 100644 --- a/libs/live-countervalues/src/__snapshots__/portfolio.test.ts.snap +++ b/libs/live-countervalues/src/__snapshots__/portfolio.test.ts.snap @@ -173,7 +173,6 @@ exports[`Portfolio getAssetsDistribution snapshot 1`] = ` "id": "mock:1:bitcoin:bitcoin_1:", "index": 1, "lastSyncDate": 2018-03-14T17:34:42.000Z, - "name": "iisPu4qdvHcH21Q9xOykvRW9fWwiZk", "operations": [ { "accountId": "mock:1:bitcoin:bitcoin_1:", @@ -630,7 +629,6 @@ exports[`Portfolio getAssetsDistribution snapshot 1`] = ` "pendingOperations": [], "seedIdentifier": "mock", "spendableBalance": "6196770", - "starred": false, "swapHistory": [], "type": "Account", "unit": { @@ -2486,7 +2484,6 @@ exports[`Portfolio getCurrencyPortfolio snapshot 1`] = ` "id": "mock:1:bitcoin:bitcoin_1:", "index": 1, "lastSyncDate": 2018-03-14T17:34:42.000Z, - "name": "iisPu4qdvHcH21Q9xOykvRW9fWwiZk", "operations": [ { "accountId": "mock:1:bitcoin:bitcoin_1:", @@ -2943,7 +2940,6 @@ exports[`Portfolio getCurrencyPortfolio snapshot 1`] = ` "pendingOperations": [], "seedIdentifier": "mock", "spendableBalance": "6196770", - "starred": false, "swapHistory": [], "type": "Account", "unit": { @@ -4824,7 +4820,6 @@ exports[`Portfolio getPortfolio snapshot 1`] = ` "id": "mock:1:bitcoin:bitcoin_1:", "index": 1, "lastSyncDate": 2018-03-14T17:34:42.000Z, - "name": "iisPu4qdvHcH21Q9xOykvRW9fWwiZk", "operations": [ { "accountId": "mock:1:bitcoin:bitcoin_1:", @@ -5281,7 +5276,6 @@ exports[`Portfolio getPortfolio snapshot 1`] = ` "pendingOperations": [], "seedIdentifier": "mock", "spendableBalance": "6196770", - "starred": false, "swapHistory": [], "type": "Account", "unit": { @@ -5461,7 +5455,6 @@ exports[`Portfolio getPortfolio snapshot 1`] = ` "id": "mock:1:bitcoin:bitcoin_1:", "index": 1, "lastSyncDate": 2018-03-14T17:34:42.000Z, - "name": "iisPu4qdvHcH21Q9xOykvRW9fWwiZk", "operations": [ { "accountId": "mock:1:bitcoin:bitcoin_1:", @@ -5918,7 +5911,6 @@ exports[`Portfolio getPortfolio snapshot 1`] = ` "pendingOperations": [], "seedIdentifier": "mock", "spendableBalance": "6196770", - "starred": false, "swapHistory": [], "type": "Account", "unit": { diff --git a/libs/live-wallet/.eslintrc.js b/libs/live-wallet/.eslintrc.js new file mode 100644 index 000000000000..79592d6cd6ad --- /dev/null +++ b/libs/live-wallet/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + settings: { + react: { + version: "detect", + }, + }, + env: { + browser: true, + es6: true, + }, + globals: { + Atomics: "readonly", + SharedArrayBuffer: "readonly", + }, + extends: ["plugin:import/typescript", "plugin:jsx-a11y/recommended"], + plugins: ["import", "jsx-a11y"], + rules: { + "no-console": ["error", { allow: ["warn", "error"] }], + "linebreak-style": ["error", "unix"], + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-namespace": ["error", { allowDeclarations: true }], + "@typescript-eslint/no-explicit-any": "warn", + }, + overrides: [ + { + files: ["src/**/*.test.{ts,tsx}"], + env: { + "jest/globals": true, + }, + plugins: ["jest"], + }, + ], +}; diff --git a/libs/live-wallet/.unimportedrc.json b/libs/live-wallet/.unimportedrc.json new file mode 100644 index 000000000000..b6afa383d8c0 --- /dev/null +++ b/libs/live-wallet/.unimportedrc.json @@ -0,0 +1,11 @@ +{ + "entry": [ + "src/liveqr/cross.ts", + "src/liveqr/importAccounts.ts", + "src/ordering.ts", + "src/addAccounts.ts", + "src/store.ts", + "src/accountName.ts" + ], + "ignoreUnused": [] +} diff --git a/libs/live-wallet/CHANGELOG.md b/libs/live-wallet/CHANGELOG.md new file mode 100644 index 000000000000..4e2157b4aef2 --- /dev/null +++ b/libs/live-wallet/CHANGELOG.md @@ -0,0 +1 @@ +# @ledgerhq/live-wallet diff --git a/libs/live-wallet/README.md b/libs/live-wallet/README.md new file mode 100644 index 000000000000..e995ed66df37 --- /dev/null +++ b/libs/live-wallet/README.md @@ -0,0 +1,10 @@ +## live-wallet + +The goal of this library is to manage the accounts user data states. + +Examples of accounts user data states are: + +- Account's name +- Account's starred state + +The library provides reducers and actions in the style of Redux, without depending on Redux itself. diff --git a/libs/live-wallet/jest.config.js b/libs/live-wallet/jest.config.js new file mode 100644 index 000000000000..65a783785412 --- /dev/null +++ b/libs/live-wallet/jest.config.js @@ -0,0 +1,13 @@ +module.exports = { + transform: { + "^.+\\.(ts|tsx)?$": [ + "ts-jest", + { + globals: { + isolatedModules: true, + }, + }, + ], + }, + testPathIgnorePatterns: ["lib/", "lib-es/"], +}; diff --git a/libs/live-wallet/package.json b/libs/live-wallet/package.json new file mode 100644 index 000000000000..660dd5db062f --- /dev/null +++ b/libs/live-wallet/package.json @@ -0,0 +1,85 @@ +{ + "name": "@ledgerhq/live-wallet", + "version": "0.1.0", + "description": "Ledger Live wallet", + "keywords": [ + "Ledger" + ], + "repository": { + "type": "git", + "url": "https://github.com/LedgerHQ/ledger-live.git" + }, + "bugs": { + "url": "https://github.com/LedgerHQ/ledger-live/issues" + }, + "homepage": "https://github.com/LedgerHQ/ledger-live/tree/develop/libs/env", + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "module": "lib-es/index.js", + "types": "lib/index.d.ts", + "license": "Apache-2.0", + "dependencies": { + "@ledgerhq/types-live": "workspace:*", + "@ledgerhq/types-cryptoassets": "workspace:*", + "@ledgerhq/coin-framework": "workspace:*", + "@ledgerhq/live-env": "workspace:*", + "@ledgerhq/live-promise": "workspace:*", + "@ledgerhq/logs": "workspace:*", + "@ledgerhq/compressjs": "github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e", + "@ledgerhq/devices": "workspace:*", + "@ledgerhq/cryptoassets": "workspace:*", + "rxjs": "7", + "lodash": "4", + "bignumber.js": "9" + }, + "devDependencies": { + "@types/lodash": "4", + "@types/jest": "^29.5.10", + "jest": "^29.7.0", + "ts-jest": "^29.1.1" + }, + "scripts": { + "clean": "rimraf lib lib-es", + "build": "tsc && tsc -m ES6 --outDir lib-es", + "prewatch": "pnpm build", + "watch": "tsc --watch", + "lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache", + "lint:fix": "pnpm lint --fix", + "typecheck": "tsc --noEmit", + "unimported": "unimported", + "test": "jest" + }, + "typesVersions": { + "*": { + "*.json": [ + "*.json" + ], + "*": [ + "lib/*" + ], + "lib/*": [ + "lib/*" + ], + "lib-es/*": [ + "lib-es/*" + ] + } + }, + "exports": { + "./lib/*": "./lib/*.js", + "./lib/*.js": "./lib/*.js", + "./lib-es/*": "./lib-es/*.js", + "./lib-es/*.js": "./lib-es/*.js", + "./*": { + "require": "./lib/*.js", + "default": "./lib-es/*.js" + }, + "./*.js": { + "require": "./lib/*.js", + "default": "./lib-es/*.js" + }, + "./package.json": "./package.json" + } +} diff --git a/libs/live-wallet/src/accountName.test.ts b/libs/live-wallet/src/accountName.test.ts new file mode 100644 index 000000000000..b42ef5369157 --- /dev/null +++ b/libs/live-wallet/src/accountName.test.ts @@ -0,0 +1,23 @@ +import { genAccount } from "@ledgerhq/coin-framework/mocks/account"; +import { getDefaultAccountName } from "./accountName"; +import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies"; + +const mockAccount = genAccount("mockAccount", { + currency: getCryptoCurrencyById("ethereum"), + subAccountsCount: 1, +}); +const tokenAccount = mockAccount.subAccounts![0]; + +describe(getDefaultAccountName.name, () => { + describe("given an Account", () => { + it("should return the account name", () => { + expect(getDefaultAccountName(mockAccount)).toEqual("Ethereum 2"); + }); + }); + + describe("given a TokenAccount", () => { + it("should return the token account name", () => { + expect(getDefaultAccountName(tokenAccount)).toEqual("0x Project"); + }); + }); +}); diff --git a/libs/live-wallet/src/accountName.ts b/libs/live-wallet/src/accountName.ts new file mode 100644 index 000000000000..4f28cd81bab2 --- /dev/null +++ b/libs/live-wallet/src/accountName.ts @@ -0,0 +1,30 @@ +import { CryptoCurrency } from "@ledgerhq/types-cryptoassets"; +import { Account, AccountLike } from "@ledgerhq/types-live"; + +const MAX_ACCOUNT_NAME_SIZE = 50; + +/** + * Get the default name for an account. + */ +export const getDefaultAccountNameForCurrencyIndex = ({ + currency, + index, +}: { + currency: CryptoCurrency; + index: number; +}): string => { + return `${currency.name} ${index + 1}`; +}; + +export const validateNameEdition = (account: Account, name?: string | null | undefined): string => + ((name || "").replace(/\s+/g, " ").trim() || getDefaultAccountName(account)).slice( + 0, + MAX_ACCOUNT_NAME_SIZE, + ); + +export const getDefaultAccountName = (account: AccountLike) => { + if (account.type === "Account") { + return getDefaultAccountNameForCurrencyIndex(account); + } + return account.token.name; +}; diff --git a/libs/ledger-live-common/src/account/addAccounts.ts b/libs/live-wallet/src/addAccounts.ts similarity index 69% rename from libs/ledger-live-common/src/account/addAccounts.ts rename to libs/live-wallet/src/addAccounts.ts index 35d5426b82f7..86f8d03ac3fa 100644 --- a/libs/ledger-live-common/src/account/addAccounts.ts +++ b/libs/live-wallet/src/addAccounts.ts @@ -1,7 +1,16 @@ +/** + * TODO: rework live-common/addAccounts to take into account the new paradigm. + * it will be simpler: Account and AccountUserData are now explicitly separated so we will have less to reconciliate. + */ + +/** + * This drives the logic of digesting Add Accounts' result and apply the new accounts and account name editions to the underlying stores. + */ + import type { Account, DerivationMode } from "@ledgerhq/types-live"; import uniqWith from "lodash/uniqWith"; -import { validateNameEdition } from "@ledgerhq/coin-framework/account/index"; -import { clearAccount } from "./helpers"; +import { validateNameEdition } from "./accountName"; + // Reference all possible support link // For now we have only one, but we can union type in future // We can map .id to a wording. @@ -61,12 +70,7 @@ export function groupAddAccounts( importableAccounts.push(acc); } }); - const sections: Array<{ - id: string; - selectable: boolean; - defaultSelected: boolean; - data: any; - }> = []; + const sections: AddAccountsSection[] = []; if (importableAccounts.length) { sections.push({ @@ -116,49 +120,53 @@ export type AddAccountsProps = { renamings: Record; }; -const preserveUserData = (update: Account, existing: Account): Account => ({ - ...update, - name: existing.name, -}); +export type AddAccountsAction = { + type: "ADD_ACCOUNTS"; + payload: { + // the full state of all accounts to apply on top of the existing ones + // since the add accounts will possibly do a "migrate" of existing accounts + allAccounts: Account[]; + // possible edited names that were done on the accounts + editedNames: Map; + }; +}; -export function addAccounts({ - scannedAccounts, +export function addAccountsAction({ existingAccounts, + scannedAccounts, selectedIds, renamings, -}: AddAccountsProps): Account[] { +}: AddAccountsProps): AddAccountsAction { const newAccounts: Account[] = []; // scanned accounts that was selected const selected = scannedAccounts.filter(a => selectedIds.includes(a.id)); existingAccounts.forEach(existing => { - // we'll try to find an updated version of the existing account as opportunity to refresh the operations + // we try to find an updated version of the existing account as opportunity to refresh its state const update = selected.find(a => sameAccountIdentity(a, existing)); - - if (update) { - // preserve existing name - let acc = preserveUserData(update, existing); - - if (update.id !== existing.id) { - acc = clearAccount(acc); - } - - newAccounts.push(acc); - } else { - newAccounts.push(existing); - } + const account = update || existing; + newAccounts.push(account); }); // append the new accounts selected.forEach(acc => { - const alreadyThere = newAccounts.find(a => sameAccountIdentity(a, acc)); - + const alreadyThere = newAccounts.find(r => sameAccountIdentity(r, acc)); if (!alreadyThere) { newAccounts.push(acc); } }); - // dedup and apply the renaming - return uniqWith(newAccounts, sameAccountIdentity).map(a => { - const name = validateNameEdition(a, renamings[a.id]); - if (name) return { ...a, name }; - return a; - }); + // deduplicate accounts + const allAccounts = uniqWith(newAccounts, sameAccountIdentity); + const editedNames = new Map(); + for (const account of allAccounts) { + if (renamings[account.id]) { + const name = validateNameEdition(account, renamings[account.id]); + editedNames.set(account.id, name); + } + } + return { + type: "ADD_ACCOUNTS", + payload: { + allAccounts, + editedNames, + }, + }; } diff --git a/libs/ledger-live-common/src/__snapshots__/cross.test.ts.snap b/libs/live-wallet/src/liveqr/__snapshots__/cross.test.ts.snap similarity index 100% rename from libs/ledger-live-common/src/__snapshots__/cross.test.ts.snap rename to libs/live-wallet/src/liveqr/__snapshots__/cross.test.ts.snap diff --git a/libs/ledger-live-common/src/cross.test.ts b/libs/live-wallet/src/liveqr/cross.test.ts similarity index 75% rename from libs/ledger-live-common/src/cross.test.ts rename to libs/live-wallet/src/liveqr/cross.test.ts index b5dc6b99ae74..29e3386feace 100644 --- a/libs/ledger-live-common/src/cross.test.ts +++ b/libs/live-wallet/src/liveqr/cross.test.ts @@ -1,20 +1,26 @@ import { genAccount } from "@ledgerhq/coin-framework/mocks/account"; import { getDerivationModesForCurrency } from "@ledgerhq/coin-framework/derivation"; import { DeviceModelId } from "@ledgerhq/devices"; -import { listCryptoCurrencies, setSupportedCurrencies } from "./currencies"; +import { + listCryptoCurrencies, + setSupportedCurrencies, +} from "@ledgerhq/coin-framework/currencies/index"; import { accountDataToAccount, accountToAccountData, encode, decode } from "./cross"; import { Account } from "@ledgerhq/types-live"; +import { accountUserDataExportSelector, initialState } from "../store"; setSupportedCurrencies(["ethereum", "ethereum_classic"]); test("accountDataToAccount / accountToAccountData", () => { listCryptoCurrencies().forEach(currency => { getDerivationModesForCurrency(currency).forEach(derivationMode => { - const account = genAccount(`${currency.id}_${derivationMode}`, { - currency, - }); - const data = accountToAccountData(account); - expect(accountToAccountData(accountDataToAccount(data))).toMatchObject(data); + const account = genAccount(`${currency.id}_${derivationMode}`, { currency }); + const walletState = initialState; + const data = accountToAccountData( + account, + accountUserDataExportSelector(walletState, { account }), + ); + expect(accountToAccountData(...accountDataToAccount(data))).toMatchObject(data); }); }); }); @@ -31,7 +37,9 @@ test("encode/decode", () => { ), [], ); + const walletState = initialState; const data = { + walletState, accounts, settings: { currenciesSettings: {}, @@ -45,7 +53,11 @@ test("encode/decode", () => { const exp = decode(encode(data)); expect(exp.meta.exporterName).toEqual(data.exporterName); expect(exp.accounts.length).toEqual(data.accounts.length); - expect(exp.accounts).toMatchObject(data.accounts.map(accountToAccountData)); + expect(exp.accounts).toMatchObject( + data.accounts.map(a => + accountToAccountData(a, accountUserDataExportSelector(walletState, { account: a })), + ), + ); expect(exp.meta.modelId).toEqual("nanoX"); expect(exp.meta.modelIdList).toEqual(["nanoX"]); }); @@ -53,7 +65,16 @@ test("encode/decode", () => { const accounts = Array(3) .fill(null) .map((_, i) => genAccount("export_" + i)); + const walletState = { + ...initialState, + accountNames: new Map([ + [accounts[0].id, "uuwygRL0AmMrs9riAlv1"], + [accounts[1].id, "4GEb2iRQXlUt6X1jviKzSz4umwWj"], + [accounts[2].id, "tzPbPqv6XS7BabfsuJff"], + ]), + }; const arg = { + walletState, accounts, settings: { counterValue: "USD", @@ -78,7 +99,6 @@ test("encode/decode", () => { balance: a.balance.toString(), currencyId: a.currency.id, id: a.id, - name: a.name, index: a.index, })), ); diff --git a/libs/ledger-live-common/src/cross.ts b/libs/live-wallet/src/liveqr/cross.ts similarity index 83% rename from libs/ledger-live-common/src/cross.ts rename to libs/live-wallet/src/liveqr/cross.ts index 0ee9989091e7..04e8ca4f17b1 100644 --- a/libs/ledger-live-common/src/cross.ts +++ b/libs/live-wallet/src/liveqr/cross.ts @@ -1,5 +1,6 @@ // cross helps dealing with cross-project feature like export/import & cross project conversions import { BigNumber } from "bignumber.js"; +// @ts-expect-error no types for compressjs import compressjs from "@ledgerhq/compressjs"; import type { DeviceModelId } from "@ledgerhq/devices"; import { @@ -8,8 +9,9 @@ import { asDerivationMode, } from "@ledgerhq/coin-framework/derivation"; import { decodeAccountId, emptyHistoryCache } from "@ledgerhq/coin-framework/account/index"; -import { getCryptoCurrencyById } from "./currencies"; -import type { Account, CryptoCurrencyIds } from "@ledgerhq/types-live"; +import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets"; +import type { Account, AccountUserData, CryptoCurrencyIds } from "@ledgerhq/types-live"; +import { WalletState, accountUserDataExportSelector } from "../store"; export type AccountData = { id: string; @@ -36,6 +38,8 @@ export type Settings = { }; export type DataIn = { + // wallet state + walletState: WalletState; // accounts to export (filter them to only be the visible ones) accounts: Account[]; // settings @@ -62,6 +66,7 @@ export type Result = { }; export function encode({ + walletState, accounts, settings, exporterName, @@ -79,7 +84,9 @@ export function encode({ modelId, modelIdList, }, - accounts: accounts.map(accountToAccountData), + accounts: accounts.map(a => + accountToAccountData(a, accountUserDataExportSelector(walletState, { account: a })), + ), settings, }), ), @@ -87,7 +94,7 @@ export function encode({ ).toString("binary"); } -const asResultMeta = (unsafe: Record): Meta => { +const asResultMeta = (unsafe: Record): Meta => { if (typeof unsafe !== "object" || !unsafe) { throw new Error("invalid meta data"); } @@ -102,23 +109,38 @@ const asResultMeta = (unsafe: Record): Meta => { throw new Error("invalid meta.exporterVersion"); } - if (modelId && typeof modelId !== "string") { - throw new Error("invalid meta.modelId"); + let resultModelId: DeviceModelId | undefined = undefined; + if (modelId) { + if (typeof modelId === "string") { + resultModelId = modelId as DeviceModelId; + } else { + throw new Error("invalid meta.modelId"); + } } - if (modelIdList && modelIdList.some(id => typeof id !== "string")) { - throw new Error("invalid meta.modelIdList"); + let resultModelIdList: DeviceModelId[] | undefined = undefined; + + if (modelIdList) { + if ( + typeof modelIdList === "object" && + Array.isArray(modelIdList) && + modelIdList.every(id => typeof id === "string") + ) { + resultModelIdList = modelIdList; + } else { + throw new Error("invalid meta.modelIdList"); + } } return { exporterName, exporterVersion, - modelId, - modelIdList, + modelId: resultModelId, + modelIdList: resultModelIdList, }; }; -const asResultAccount = (unsafe: Record): AccountData => { +const asResultAccount = (unsafe: Record): AccountData => { if (typeof unsafe !== "object" || !unsafe) { throw new Error("invalid account data"); } @@ -179,7 +201,7 @@ const asResultAccounts = (unsafe: unknown): AccountData[] => { return unsafe.map(asResultAccount); }; -const asCryptoSettings = (unsafe: Record): CryptoSettings => { +const asCryptoSettings = (unsafe: Record): CryptoSettings => { if (typeof unsafe !== "object" || !unsafe) { throw new Error("invalid currency settings data"); } @@ -270,16 +292,10 @@ export function decode(bytes: string): Result { settings: asResultSettings(unsafe.settings), }; } -export function accountToAccountData({ - id, - name, - seedIdentifier, - derivationMode, - freshAddress, - currency, - index, - balance, -}: Account): AccountData { +export function accountToAccountData( + { id, seedIdentifier, derivationMode, freshAddress, currency, index, balance }: Account, + { name }: AccountUserData, +): AccountData { const res: AccountData = { id, name, @@ -305,7 +321,7 @@ export const accountDataToAccount = ({ balance, derivationMode: derivationModeStr, seedIdentifier, -}: AccountData): Account => { +}: AccountData): [Account, AccountUserData] => { const { xpubOrAddress } = decodeAccountId(id); // TODO rename in AccountId xpubOrAddress const derivationMode = asDerivationMode(derivationModeStr); @@ -349,8 +365,6 @@ export const accountDataToAccount = ({ derivationMode, seedIdentifier, xpub, - name, - starred: false, used: false, currency, index, @@ -371,5 +385,11 @@ export const accountDataToAccount = ({ balanceHistoryCache: emptyHistoryCache, }; - return account; + const accountUserData: AccountUserData = { + id, + name, + starredIds: [], + }; + + return [account, accountUserData]; }; diff --git a/libs/live-wallet/src/liveqr/importAccounts.test.ts b/libs/live-wallet/src/liveqr/importAccounts.test.ts new file mode 100644 index 000000000000..f8f6e9afa298 --- /dev/null +++ b/libs/live-wallet/src/liveqr/importAccounts.test.ts @@ -0,0 +1,169 @@ +import type { AccountRaw } from "@ledgerhq/types-live"; +import { + SyncNewAccountsOutput, + importAccountsMakeItems, + importAccountsReduce, +} from "./importAccounts"; +import { setSupportedCurrencies } from "@ledgerhq/coin-framework/currencies/index"; +import { fromAccountRaw } from "@ledgerhq/coin-framework/serialization/account"; +import { AccountData, accountDataToAccount } from "./cross"; + +setSupportedCurrencies(["ethereum"]); +describe("importAccountsMakeItems", () => { + test("importing ethereum accounts", () => { + const resultAccounts: AccountData[] = [ + { + id: "js:1:ethereum:0x01:", + name: "Ethereum 1", + seedIdentifier: "seed", + derivationMode: "", + freshAddress: "0x01", + currencyId: "ethereum", + index: 0, + balance: "51281813126095913", + }, + { + id: "js:1:ethereum:0x02:", + name: "Ethereum 2", + seedIdentifier: "seed", + derivationMode: "", + freshAddress: "0x02", + currencyId: "ethereum", + index: 1, + balance: "1081392000000000", + }, + { + id: "js:1:ethereum:0x04:", + name: "Ethereum 4", + seedIdentifier: "seed", + derivationMode: "", + freshAddress: "0x04", + currencyId: "ethereum", + index: 3, + balance: "1000000000000000", + }, + { + id: "js:1:ethereum:0x03:", + name: "ETH3 name edited", + seedIdentifier: "seed", + derivationMode: "", + freshAddress: "0x03", + currencyId: "ethereum", + index: 2, + balance: "0", + }, + { + id: "js:1:ethereum:0x05:", + name: "Ethereum 5", + seedIdentifier: "seed", + derivationMode: "", + freshAddress: "0x05", + currencyId: "ethereum", + index: 4, + balance: "0", + }, + ]; + const result = { + meta: { + exporterName: "desktop", + exporterVersion: "1.12.0", + }, + accounts: resultAccounts, + settings: { + counterValue: "USD", + currenciesSettings: {}, + pairExchanges: {}, + developerModeEnabled: false, + }, + }; + const accounts = [ + { + id: "js:1:ethereum:0x01:", + seedIdentifier: "0x01", + name: "Ethereum 1", + derivationMode: "", + index: 0, + freshAddress: "0x01", + freshAddressPath: "44'/60'/0'/0/0", + freshAddresses: [], + blockHeight: 8168983, + operations: [], + pendingOperations: [], + currencyId: "ethereum", + unitMagnitude: 18, + lastSyncDate: "2019-07-17T15:13:30.318Z", + balance: "51281813126095910", + }, + { + id: "js:1:ethereum:0x02:", + seedIdentifier: "0x02", + name: "Ethereum 2", + derivationMode: "", + index: 1, + freshAddress: "0x02", + freshAddressPath: "44'/60'/1'/0/0", + freshAddresses: [], + blockHeight: 8168983, + operations: [], + pendingOperations: [], + currencyId: "ethereum", + unitMagnitude: 18, + lastSyncDate: "2019-07-17T15:13:29.306Z", + balance: "1081392000000000", + }, + { + id: "js:1:ethereum:0x03:", + seedIdentifier: "seed", + name: "Ethereum 3", + derivationMode: "", + index: 2, + freshAddress: "0x03", + freshAddressPath: "44'/60'/2'/0/0", + freshAddresses: [], + blockHeight: 8168983, + operations: [], + pendingOperations: [], + currencyId: "ethereum", + unitMagnitude: 18, + lastSyncDate: "2019-07-17T15:13:29.306Z", + balance: "1081392000000000", + }, + ].map(a => fromAccountRaw(a)); + + const { items, accountNames } = importAccountsMakeItems({ + result, + accounts, + }); + expect(items).toMatchObject([ + { + initialAccountId: "js:1:ethereum:0x04:", + account: { id: "js:1:ethereum:0x04:" }, + mode: "create", + }, + { + initialAccountId: "js:1:ethereum:0x05:", + account: { id: "js:1:ethereum:0x05:" }, + mode: "create", + }, + ]); + const syncResult: SyncNewAccountsOutput = { + failed: {}, + synchronized: {}, + }; + result.accounts.forEach(a => { + syncResult.synchronized[a.id] = accountDataToAccount(a)[0]; + }); + const reduced = importAccountsReduce(accounts, { + items, + selectedAccounts: ["js:1:ethereum:0x03:", "js:1:ethereum:0x02:", "js:1:ethereum:0x05:"], + syncResult, + }); + expect(accountNames.get("js:1:ethereum:0x03:")).toEqual("ETH3 name edited"); + expect(reduced).toMatchObject([ + { id: "js:1:ethereum:0x01:" }, + { id: "js:1:ethereum:0x02:" }, + { id: "js:1:ethereum:0x03:" }, + { id: "js:1:ethereum:0x05:" }, + ]); + }); +}); diff --git a/libs/ledger-live-common/src/account/importAccounts.ts b/libs/live-wallet/src/liveqr/importAccounts.ts similarity index 79% rename from libs/ledger-live-common/src/account/importAccounts.ts rename to libs/live-wallet/src/liveqr/importAccounts.ts index 197c9f9d422d..7cc37eed7a4f 100644 --- a/libs/ledger-live-common/src/account/importAccounts.ts +++ b/libs/live-wallet/src/liveqr/importAccounts.ts @@ -1,16 +1,13 @@ import { log } from "@ledgerhq/logs"; -import type { Result } from "../cross"; -import { accountDataToAccount } from "../cross"; +import type { Result } from "./cross"; +import { accountDataToAccount } from "./cross"; import { checkAccountSupported } from "@ledgerhq/coin-framework/account/index"; -import joinSwapHistories from "../exchange/swap/joinSwapHistories"; -import isEqual from "lodash/isEqual"; -import type { Account } from "@ledgerhq/types-live"; -import { BridgeCacheSystem } from "../bridge/cache"; -import { getAccountBridge } from "../bridge"; -import { promiseAllBatched } from "../promise"; +import type { Account, AccountBridge, TransactionCommon } from "@ledgerhq/types-live"; +import { promiseAllBatched } from "@ledgerhq/live-promise"; import { getEnv } from "@ledgerhq/live-env"; import { Observable, firstValueFrom } from "rxjs"; import { reduce } from "rxjs/operators"; +import type { BridgeCacheSystem } from "@ledgerhq/types-live"; const itemModeDisplaySort = { create: 1, @@ -32,14 +29,18 @@ export const importAccountsMakeItems = ({ result: Result; accounts: Account[]; items?: ImportItem[]; -}): ImportItem[] => - result.accounts +}): { + items: ImportItem[]; + accountNames: Map; +} => { + const accountNames = new Map(); + const resultItems = result.accounts .map(accInput => { const prevItem = (items || []).find(item => item.account.id === accInput.id); if (prevItem) return prevItem; try { - const account = accountDataToAccount(accInput); + const account = accountDataToAccount(accInput)[0]; const error = checkAccountSupported(account); if (error) { @@ -50,30 +51,12 @@ export const importAccountsMakeItems = ({ }; } + accountNames.set(accInput.id, accInput.name); + const existingAccount = accounts.find(a => a.id === accInput.id); if (existingAccount) { - // only the name is supposed to change. rest is never changing - if ( - existingAccount.name === accInput.name && - isEqual(existingAccount.swapHistory, account.swapHistory) - ) { - return { - initialAccountId: existingAccount.id, - account: existingAccount, - mode: "id", - }; - } - - return { - initialAccountId: existingAccount.id, - account: { - ...existingAccount, - name: accInput.name, - swapHistory: joinSwapHistories(existingAccount.swapHistory, account.swapHistory), - }, - mode: "update", - }; + return; } return { @@ -92,6 +75,9 @@ export const importAccountsMakeItems = ({ itemModeDisplaySort[(a as ImportItem).mode] - itemModeDisplaySort[(b as ImportItem).mode], ) as ImportItem[]; + return { items: resultItems, accountNames }; +}; + /** * SyncNewAccountsOutput * - synchronized: a map of account id to account. the account id are kept as originally set in the items[].account before a possible "remap" of the ids after a sync happened @@ -117,12 +103,13 @@ export type SyncNewAccountsInput = { */ export const syncNewAccountsToImport = async ( { items, selectedAccounts }: SyncNewAccountsInput, + getAccountBridge: (account: Account) => AccountBridge, bridgeCache: BridgeCacheSystem, blacklistedTokenIds?: string[], ): Promise => { const selectedItems = items.filter(item => selectedAccounts.includes(item.account.id)); - const synchronized = {}; - const failed = {}; + const synchronized: Record = {}; + const failed: Record = {}; await promiseAllBatched(getEnv("SYNC_MAX_CONCURRENT"), selectedItems, async ({ account }) => { try { const bridge = getAccountBridge(account); @@ -138,7 +125,7 @@ export const syncNewAccountsToImport = async ( const synced = await firstValueFrom(reduced); synchronized[account.id] = synced; } catch (e) { - failed[account.id] = e; + failed[account.id] = e instanceof Error ? e : new Error(String(e)); } }); return { synchronized, failed }; diff --git a/libs/ledger-live-common/src/__tests__/accounts/ordering.ts b/libs/live-wallet/src/ordering.test.ts similarity index 59% rename from libs/ledger-live-common/src/__tests__/accounts/ordering.ts rename to libs/live-wallet/src/ordering.test.ts index 75589b42e94a..62fb2ef0d1d4 100644 --- a/libs/ledger-live-common/src/__tests__/accounts/ordering.ts +++ b/libs/live-wallet/src/ordering.test.ts @@ -1,9 +1,14 @@ +// TODO rewrite the test + import type { AccountRaw } from "@ledgerhq/types-live"; -import { fromAccountRaw, sortAccountsComparatorFromOrder } from "../../account"; -import { setSupportedCurrencies } from "../../currencies"; +import { sortAccountsComparatorFromOrder } from "./ordering"; +import { setSupportedCurrencies } from "@ledgerhq/coin-framework/currencies/index"; +import { fromAccountRaw } from "@ledgerhq/coin-framework/serialization/account"; +import { WalletState, accountRawToAccountUserData } from "./store"; + setSupportedCurrencies(["ethereum"]); -const accounts = [ +const raws: AccountRaw[] = [ { id: "ethereumjs:2:ethereum:0x01:", seedIdentifier: "0x01", @@ -89,27 +94,81 @@ const accounts = [ lastSyncDate: "2019-07-17T15:13:29.306Z", balance: "4000000000000000000", }, -].map(fromAccountRaw); +]; +const accounts = raws.map(a => fromAccountRaw(a)); + +const walletState: WalletState = { + accountNames: new Map(), + starredAccountIds: new Set(), +}; + +for (const raw of raws) { + const r = accountRawToAccountUserData(raw); + walletState.accountNames.set(r.id, r.name); + for (const id of r.starredIds) { + walletState.starredAccountIds.add(id); + } +} -const mockedCalculateCountervalue = (_, balance) => balance; +const mockedCalculateCountervalue = (_: unknown, balance: T): T => balance; test("Accounts ordering | name asc", () => { - const compareFn = sortAccountsComparatorFromOrder("name|asc", mockedCalculateCountervalue); + const compareFn = sortAccountsComparatorFromOrder( + "name|asc", + walletState, + mockedCalculateCountervalue, + ); const sortedAccounts = accounts.sort(compareFn); - expect(sortedAccounts.map(a => a.name)).toEqual(["A", "AA", "B", "C", "CA"]); + expect(sortedAccounts.map(a => walletState.accountNames.get(a.id) || "")).toEqual([ + "A", + "AA", + "B", + "C", + "CA", + ]); }); test("Accounts ordering | name desc", () => { - const compareFn = sortAccountsComparatorFromOrder("name|desc", mockedCalculateCountervalue); + const compareFn = sortAccountsComparatorFromOrder( + "name|desc", + walletState, + mockedCalculateCountervalue, + ); const sortedAccounts = accounts.sort(compareFn); - expect(sortedAccounts.map(a => a.name)).toEqual(["CA", "C", "B", "AA", "A"]); + expect(sortedAccounts.map(a => walletState.accountNames.get(a.id) || "")).toEqual([ + "CA", + "C", + "B", + "AA", + "A", + ]); }); test("Accounts ordering | balance asc", () => { - const compareFn = sortAccountsComparatorFromOrder("balance|asc", mockedCalculateCountervalue); + const compareFn = sortAccountsComparatorFromOrder( + "balance|asc", + walletState, + mockedCalculateCountervalue, + ); const sortedAccounts = accounts.sort(compareFn); - expect(sortedAccounts.map(a => a.name)).toEqual(["A", "B", "C", "CA", "AA"]); + expect(sortedAccounts.map(a => walletState.accountNames.get(a.id) || "")).toEqual([ + "A", + "B", + "C", + "CA", + "AA", + ]); }); test("Accounts ordering | balance desc", () => { - const compareFn = sortAccountsComparatorFromOrder("balance|desc", mockedCalculateCountervalue); + const compareFn = sortAccountsComparatorFromOrder( + "balance|desc", + walletState, + mockedCalculateCountervalue, + ); const sortedAccounts = accounts.sort(compareFn); - expect(sortedAccounts.map(a => a.name)).toEqual(["AA", "C", "CA", "B", "A"]); + expect(sortedAccounts.map(a => walletState.accountNames.get(a.id) || "")).toEqual([ + "AA", + "C", + "CA", + "B", + "A", + ]); }); diff --git a/libs/coin-framework/src/account/ordering.ts b/libs/live-wallet/src/ordering.ts similarity index 80% rename from libs/coin-framework/src/account/ordering.ts rename to libs/live-wallet/src/ordering.ts index 68926cdef13f..f9cc228be0df 100644 --- a/libs/coin-framework/src/account/ordering.ts +++ b/libs/live-wallet/src/ordering.ts @@ -1,26 +1,15 @@ import { BigNumber } from "bignumber.js"; -import { flattenAccounts, getAccountCurrency } from "./helpers"; -import type { FlattenAccountsOptions } from "./helpers"; +import { flattenAccounts, getAccountCurrency } from "@ledgerhq/coin-framework/account/helpers"; +import type { FlattenAccountsOptions } from "@ledgerhq/coin-framework/account/helpers"; import type { Account, AccountLike } from "@ledgerhq/types-live"; import type { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets"; +import { WalletState, accountNameWithDefaultSelector } from "./store"; export type AccountComparator = (a: AccountLike, b: AccountLike) => number; -const sortNameLense = (a: AccountLike): string => { - switch (a.type) { - case "Account": - return a.name; - - case "TokenAccount": - return a.token.name; - - default: - return ""; - } -}; - export const sortAccountsComparatorFromOrder = ( orderAccounts: string, + walletState: WalletState, calculateCountervalue: ( currency: TokenCurrency | CryptoCurrency, value: BigNumber, @@ -32,9 +21,11 @@ export const sortAccountsComparatorFromOrder = ( if (order === "name") { return (a, b) => ascValue * - sortNameLense(a).localeCompare(sortNameLense(b), undefined, { - numeric: true, - }); + accountNameWithDefaultSelector(walletState, a).localeCompare( + accountNameWithDefaultSelector(walletState, b), + undefined, + { numeric: true }, + ); } const cvCaches: Record = {}; @@ -48,7 +39,10 @@ export const sortAccountsComparatorFromOrder = ( return (a, b) => { const diff = ascValue * lazyCalcCV(a).minus(lazyCalcCV(b)).toNumber(); - if (diff === 0) return sortNameLense(a).localeCompare(sortNameLense(b)); + if (diff === 0) + return accountNameWithDefaultSelector(walletState, a).localeCompare( + accountNameWithDefaultSelector(walletState, b), + ); return diff; }; }; diff --git a/libs/live-wallet/src/store.ts b/libs/live-wallet/src/store.ts new file mode 100644 index 000000000000..9a7458997f66 --- /dev/null +++ b/libs/live-wallet/src/store.ts @@ -0,0 +1,164 @@ +/** + * This exports all the logic related to the Wallet store. + * The Wallet store is a store that contains the user data related to accounts. + * It essentially is the whole user's wallet. + */ +import { Account, AccountLike, AccountRaw, AccountUserData } from "@ledgerhq/types-live"; +import { getDefaultAccountName } from "./accountName"; +import { AddAccountsAction } from "./addAccounts"; + +export type WalletState = { + // user's customized name for each account id + accountNames: Map; + + // a set of all the account ids that are starred (NB: token accounts can also be starred) + starredAccountIds: Set; +}; + +export const initialState: WalletState = { + accountNames: new Map(), + starredAccountIds: new Set(), +}; + +export enum WalletHandlerType { + INIT_ACCOUNTS = "INIT_ACCOUNTS", + SET_ACCOUNT_NAME = "SET_ACCOUNT_NAME", + SET_ACCOUNT_STARRED = "SET_ACCOUNT_STARRED", + BULK_SET_ACCOUNT_NAMES = "BULK_SET_ACCOUNT_NAMES", + ADD_ACCOUNTS = "ADD_ACCOUNTS", +} + +export type HandlersPayloads = { + INIT_ACCOUNTS: { accounts: Account[]; accountsUserData: AccountUserData[] }; + SET_ACCOUNT_NAME: { accountId: string; name: string }; + BULK_SET_ACCOUNT_NAMES: { accountNames: Map }; + SET_ACCOUNT_STARRED: { accountId: string; starred: boolean }; + ADD_ACCOUNTS: AddAccountsAction["payload"]; +}; + +type Handlers = { + [Key in keyof Types]: ( + state: State, + body: { payload: Types[PreciseKey extends true ? Key : keyof Types] }, + ) => State; +}; + +export type WalletHandlers = Handlers; + +export const handlers: WalletHandlers = { + INIT_ACCOUNTS: (_, { payload: { accountsUserData } }): WalletState => { + const accountNames = new Map(); + const starredAccountIds = new Set(); + accountsUserData.forEach(accountUserData => { + accountNames.set(accountUserData.id, accountUserData.name); + for (const starredId of accountUserData.starredIds) { + starredAccountIds.add(starredId); + } + }); + return { accountNames, starredAccountIds }; + }, + SET_ACCOUNT_NAME: (state, { payload: { accountId, name } }) => { + const accountNames = new Map(state.accountNames); + accountNames.set(accountId, name); + return { ...state, accountNames }; + }, + BULK_SET_ACCOUNT_NAMES: (state, { payload: { accountNames } }) => { + // merge the new account names with the existing ones + const newAccountNames = new Map(state.accountNames); + for (const [accountId, name] of accountNames) { + newAccountNames.set(accountId, name); + } + return { ...state, accountNames: newAccountNames }; + }, + SET_ACCOUNT_STARRED: (state, { payload: { accountId, starred: value } }) => { + const starredAccountIds = new Set(state.starredAccountIds); + if (value) { + starredAccountIds.add(accountId); + } else { + starredAccountIds.delete(accountId); + } + return { ...state, starredAccountIds }; + }, + ADD_ACCOUNTS: (state, { payload: { allAccounts, editedNames } }) => { + const accountNames = new Map(state.accountNames); + for (const account of allAccounts) { + const name = editedNames.get(account.id) || getDefaultAccountName(account); + accountNames.set(account.id, name); + } + return { ...state, accountNames }; + }, +}; + +// actions + +export const setAccountName = (accountId: string, name: string) => ({ + type: "SET_ACCOUNT_NAME", + payload: { accountId, name }, +}); + +export const setAccountNames = (accountNames: Map) => ({ + type: "BULK_SET_ACCOUNT_NAMES", + payload: { accountNames }, +}); + +export const setAccountStarred = (accountId: string, starred: boolean) => ({ + type: "SET_ACCOUNT_STARRED", + payload: { accountId, starred }, +}); + +export const initAccounts = (accounts: Account[], accountsUserData: AccountUserData[]) => ({ + type: "INIT_ACCOUNTS", + payload: { accounts, accountsUserData }, +}); + +// Local Selectors + +export const accountNameSelector = ( + state: WalletState, + { accountId }: { accountId: string }, +): string | undefined => state.accountNames.get(accountId); + +export const accountNameWithDefaultSelector = (state: WalletState, account: AccountLike): string => + state.accountNames.get(account.id) || getDefaultAccountName(account); + +export const isStarredAccountSelector = ( + state: WalletState, + { accountId }: { accountId: string }, +): boolean => state.starredAccountIds.has(accountId); + +/** + * Recreate an AccountUserData from the store. + * it is used to transport all data related to a main account. + * but the data isn't used internally for performance reason. + */ +export const accountUserDataExportSelector = ( + state: WalletState, + { account }: { account: Account }, +): AccountUserData => { + const id = account.id; + const name = state.accountNames.get(id) || getDefaultAccountName(account); + const starredIds = []; + if (state.starredAccountIds.has(id)) { + starredIds.push(id); + } + for (const t of account.subAccounts || []) { + if (state.starredAccountIds.has(t.id)) { + starredIds.push(t.id); + } + } + return { id, name, starredIds }; +}; + +export const accountRawToAccountUserData = (raw: AccountRaw): AccountUserData => { + const { id, name } = raw; + const starredIds = []; + if (raw.starred) { + starredIds.push(raw.id); + } + for (const t of raw.subAccounts || []) { + if (t.starred) { + starredIds.push(t.id); + } + } + return { id, name, starredIds }; +}; diff --git a/libs/live-wallet/tsconfig.json b/libs/live-wallet/tsconfig.json new file mode 100644 index 000000000000..f1eda7ec5c36 --- /dev/null +++ b/libs/live-wallet/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.base", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "noImplicitAny": true, + "noImplicitThis": true, + "module": "commonjs", + "downlevelIteration": true, + "jsx": "react", + "lib": ["es2020", "dom"], + "outDir": "lib" + }, + "include": ["src/**/*"] +} diff --git a/package.json b/package.json index be03782bf23f..e93e3ebf023b 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "device-react": "pnpm --filter device-react", "web-tools": "pnpm --filter web-tools", "live-env": "pnpm --filter live-env", + "wallet": "pnpm --filter live-wallet", "portfolio": "pnpm --filter live-portfolio", "promise": "pnpm --filter live-promise", "network": "pnpm --filter live-network", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6acd1d4b8115..b1965c549089 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: false + excludeLinksFromLockfile: false + neverBuiltDependencies: - blake2 @@ -146,6 +150,9 @@ importers: '@ledgerhq/live-network': specifier: workspace:^ version: link:../../libs/live-network + '@ledgerhq/live-wallet': + specifier: workspace:^ + version: link:../../libs/live-wallet '@ledgerhq/logs': specifier: workspace:^ version: link:../../libs/ledgerjs/packages/logs @@ -288,6 +295,9 @@ importers: '@ledgerhq/live-nft-react': specifier: workspace:^ version: link:../../libs/live-nft-react + '@ledgerhq/live-wallet': + specifier: workspace:^ + version: link:../../libs/live-wallet '@ledgerhq/logs': specifier: workspace:^ version: link:../../libs/ledgerjs/packages/logs @@ -790,6 +800,9 @@ importers: '@ledgerhq/live-nft-react': specifier: workspace:^ version: link:../../libs/live-nft-react + '@ledgerhq/live-wallet': + specifier: workspace:^ + version: link:../../libs/live-wallet '@ledgerhq/logs': specifier: workspace:^ version: link:../../libs/ledgerjs/packages/logs @@ -2390,9 +2403,6 @@ importers: '@ledgerhq/coin-polkadot': specifier: workspace:^ version: link:../coin-modules/coin-polkadot - '@ledgerhq/compressjs': - specifier: github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e - version: github.com/LedgerHQ/compressjs/d9e8e4d994923e0ea76a32b97289bcccfe71b82e '@ledgerhq/crypto-icons-ui': specifier: workspace:^ version: link:../ui/packages/crypto-icons @@ -2486,6 +2496,9 @@ importers: '@ledgerhq/live-promise': specifier: workspace:^ version: link:../promise + '@ledgerhq/live-wallet': + specifier: workspace:^ + version: link:../live-wallet '@ledgerhq/logs': specifier: workspace:^ version: link:../ledgerjs/packages/logs @@ -4770,6 +4783,58 @@ importers: specifier: ^29.1.1 version: 29.1.1(jest@29.7.0)(typescript@5.1.3) + libs/live-wallet: + dependencies: + '@ledgerhq/coin-framework': + specifier: workspace:* + version: link:../coin-framework + '@ledgerhq/compressjs': + specifier: github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e + version: github.com/LedgerHQ/compressjs/d9e8e4d994923e0ea76a32b97289bcccfe71b82e + '@ledgerhq/cryptoassets': + specifier: workspace:* + version: link:../ledgerjs/packages/cryptoassets + '@ledgerhq/devices': + specifier: workspace:* + version: link:../ledgerjs/packages/devices + '@ledgerhq/live-env': + specifier: workspace:* + version: link:../env + '@ledgerhq/live-promise': + specifier: workspace:* + version: link:../promise + '@ledgerhq/logs': + specifier: workspace:* + version: link:../ledgerjs/packages/logs + '@ledgerhq/types-cryptoassets': + specifier: workspace:* + version: link:../ledgerjs/packages/types-cryptoassets + '@ledgerhq/types-live': + specifier: workspace:* + version: link:../ledgerjs/packages/types-live + bignumber.js: + specifier: '9' + version: 9.1.2 + lodash: + specifier: '4' + version: 4.17.21 + rxjs: + specifier: '7' + version: 7.8.1 + devDependencies: + '@types/jest': + specifier: ^29.5.10 + version: 29.5.12 + '@types/lodash': + specifier: '4' + version: 4.14.202 + jest: + specifier: ^29.7.0 + version: 29.7.0 + ts-jest: + specifier: ^29.1.1 + version: 29.1.2(jest@29.7.0)(typescript@5.1.3) + libs/promise: dependencies: '@ledgerhq/logs': @@ -11684,7 +11749,7 @@ packages: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 5.7.1 + semver: 5.7.2 dev: true /@changesets/assemble-release-plan@5.2.3: @@ -11695,7 +11760,7 @@ packages: '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 - semver: 5.7.1 + semver: 5.7.2 dev: true /@changesets/changelog-git@0.1.14: @@ -11778,7 +11843,7 @@ packages: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 5.7.1 + semver: 5.7.2 dev: true /@changesets/get-github-info@0.6.0: @@ -14888,7 +14953,7 @@ packages: getenv: 1.0.0 glob: 7.1.6 resolve-from: 5.0.0 - semver: 7.3.8 + semver: 7.6.0 slash: 3.0.0 xcode: 3.0.1 xml2js: 0.4.23 @@ -17842,7 +17907,7 @@ packages: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.7 + semver: 7.6.0 /@npmcli/move-file@1.1.2: resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} @@ -26128,7 +26193,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.4 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: @@ -26431,7 +26496,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.1.3) typescript: 5.1.3 transitivePeerDependencies: @@ -26452,7 +26517,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -26655,7 +26720,7 @@ packages: '@typescript-eslint/types': 6.14.0 '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) eslint: 8.55.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -26674,7 +26739,7 @@ packages: '@typescript-eslint/types': 6.2.0 '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.3) eslint: 8.51.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -27010,7 +27075,7 @@ packages: open: 8.4.2 ora: 5.4.1 read-pkg: 5.2.0 - semver: 7.3.7 + semver: 7.6.0 strip-ansi: 6.0.1 transitivePeerDependencies: - encoding @@ -32406,7 +32471,7 @@ packages: postcss-modules-scope: 3.0.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.3.8 + semver: 7.6.0 webpack: 5.88.2(metro@0.80.0) /css-loader@6.8.1(webpack@5.89.0): @@ -32422,7 +32487,7 @@ packages: postcss-modules-scope: 3.0.0(postcss@8.4.38) postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 - semver: 7.5.4 + semver: 7.6.0 webpack: 5.89.0 /css-minimizer-webpack-plugin@3.4.1(metro@0.80.0)(webpack@5.88.2): @@ -36152,6 +36217,7 @@ packages: is-hex-prefixed: 1.0.0 strip-hex-prefix: 1.0.0 dev: false + bundledDependencies: false /ev-emitter@1.1.1: resolution: {integrity: sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==} @@ -37761,7 +37827,7 @@ packages: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.3.7 + semver: 7.6.0 tapable: 1.1.3 typescript: 5.1.3 vue-template-compiler: 2.7.14 @@ -37794,7 +37860,7 @@ packages: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.5.4 + semver: 7.6.0 tapable: 1.1.3 typescript: 5.1.3 webpack: 5.89.0 @@ -38443,7 +38509,7 @@ packages: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.3.7 + semver: 7.6.0 serialize-error: 7.0.1 optional: true @@ -41327,7 +41393,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.7.0(@types/node@20.8.10)(source-map-support@0.5.21)(typescript@5.1.3) + ts-node: 10.7.0(@types/node@20.8.10)(typescript@5.1.3) transitivePeerDependencies: - babel-plugin-macros - metro @@ -41452,7 +41518,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.7.0(@types/node@20.8.10)(source-map-support@0.5.21)(typescript@5.1.3) + ts-node: 10.7.0(@types/node@20.8.10)(typescript@5.1.3) transitivePeerDependencies: - babel-plugin-macros - metro @@ -42380,7 +42446,7 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - metro - supports-color @@ -42412,7 +42478,7 @@ packages: jest-util: 28.1.3 natural-compare: 1.4.0 pretty-format: 28.1.3 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - metro - supports-color @@ -47497,7 +47563,7 @@ packages: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.8 - semver: 5.7.1 + semver: 5.7.2 validate-npm-package-license: 3.0.4 /normalize-package-data@3.0.3: @@ -49230,7 +49296,7 @@ packages: postcss-flexbugs-fixes: 5.0.2(postcss@8.4.31) postcss-normalize: 10.0.1(browserslist@4.22.1)(postcss@8.4.31) postcss-preset-env: 7.8.3(postcss@8.4.31) - semver: 7.5.4 + semver: 7.6.0 webpack: 5.89.0 transitivePeerDependencies: - browserslist @@ -49249,7 +49315,7 @@ packages: postcss-flexbugs-fixes: 5.0.2(postcss@8.4.38) postcss-normalize: 10.0.1(browserslist@4.22.1)(postcss@8.4.38) postcss-preset-env: 7.8.3(postcss@8.4.38) - semver: 7.5.4 + semver: 7.6.0 webpack: 5.88.2 transitivePeerDependencies: - browserslist @@ -53568,6 +53634,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} @@ -56607,7 +56674,7 @@ packages: chalk: 4.1.2 enhanced-resolve: 5.15.0 micromatch: 4.0.5 - semver: 7.3.7 + semver: 7.6.0 typescript: 5.1.3 webpack: 5.88.2 dev: false @@ -61264,7 +61331,6 @@ packages: resolution: {directory: libs/ui/packages/crypto-icons, type: directory} id: file:libs/ui/packages/crypto-icons name: '@ledgerhq/crypto-icons-ui' - version: 1.1.0 peerDependencies: '@types/react': '*' react: '*' @@ -61284,7 +61350,6 @@ packages: resolution: {directory: libs/ui/packages/icons, type: directory} id: file:libs/ui/packages/icons name: '@ledgerhq/icons-ui' - version: 0.6.4 peerDependencies: '@types/react': '*' react: '*'