diff --git a/docs/utility/markets.md b/docs/utility/markets.md index d280bacb..cfd7330a 100644 --- a/docs/utility/markets.md +++ b/docs/utility/markets.md @@ -1,6 +1,6 @@ # Markets -This is a CoinGecko Client for the Platform SDK. The implementation makes use of [CoinCap](/docs/sdk/markets/coincap), [CoinGecko](/docs/sdk/markets/coingecko) and [CryptoCompare](/docs/sdk/markets/cryptocompare) and adheres to the contracts laid out in the [specification](/docs/specification.md). +This is a CoinGecko Client for the Platform SDK. The implementation makes use of [CoinCap](/docs/sdk/markets/coincap), [CoinGecko](/docs/sdk/markets/coingecko) and adheres to the contracts laid out in the [specification](/docs/specification.md). ## Installation @@ -15,7 +15,7 @@ pnpm install @ardenthq/markets ```typescript import { MarketService } from "@ardenthq/markets"; -MarketService.make("cryptocompare", new Request()); +MarketService.make("coingecko", new Request()); ``` ### Verify if the given currency exists on the service diff --git a/packages/markets/source/drivers/coingecko/index.ts b/packages/markets/source/drivers/coingecko/index.ts index be1ed5e0..33ac05d6 100644 --- a/packages/markets/source/drivers/coingecko/index.ts +++ b/packages/markets/source/drivers/coingecko/index.ts @@ -48,6 +48,7 @@ export class CoinGecko implements PriceTracker { * @memberof PriceTracker */ readonly #host: string = "https://api.coingecko.com/api/v3"; + readonly #maxDays: number = 365; /** * Creates an instance of PriceTracker. @@ -90,7 +91,7 @@ export class CoinGecko implements PriceTracker { const body = await this.#get(`coins/${tokenId}/market_chart`, { vs_currency: options.currency, - days: options.days, + days: Math.min(options.days, this.#maxDays), }); return new HistoricalPriceTransformer(body).transform(options); diff --git a/packages/markets/source/drivers/cryptocompare/index.test.js b/packages/markets/source/drivers/cryptocompare/index.test.js deleted file mode 100644 index 24840fb2..00000000 --- a/packages/markets/source/drivers/cryptocompare/index.test.js +++ /dev/null @@ -1,93 +0,0 @@ -import { describeWithContext } from "@ardenthq/sdk-test"; -import { Request } from "@ardenthq/sdk-fetch"; - -import { CryptoCompare } from "./index"; - -describeWithContext( - "CryptoCompare", - { - basePath: "https://min-api.cryptocompare.com", - token: "ARK", - currency: "USD", - }, - async ({ assert, beforeEach, it, loader, nock }) => { - beforeEach(async (context) => { - context.subject = new CryptoCompare(new Request()); - - nock.fake(context.basePath) - .get("/data/pricemultifull") - .query(true) - .reply(200, loader.json("test/fixtures/cryptocompare/market.json")); - - nock.fake(context.basePath) - .get(/\/data\/histo.+/) - .reply(200, loader.json("test/fixtures/cryptocompare/historical.json")); - }); - - it("should return ticker values", async (context) => { - const response = await context.subject.marketData(context.token); - const entries = Object.keys(response); - assert.not.empty(entries); - assert.includeAllMembers(entries, [ - "BTC", - "ETH", - "LTC", - "AUD", - "BRL", - "CAD", - "CHF", - "CNY", - "EUR", - "GBP", - "HKD", - "IDR", - "INR", - "JPY", - "KRW", - "MXN", - "RUB", - "USD", - ]); - assert.is(response.USD.price, 0.178045896); - }); - - it("verifyToken", async (context) => { - nock.fake(context.basePath).get("/data/price").query(true).reply(200, { - BTC: 0.00002073, - }); - - assert.true(await context.subject.verifyToken("ark")); - - nock.fake(context.basePath).get("/data/price").query(true).reply(200, { - Response: "Error", - }); - - assert.false(await context.subject.verifyToken("not-ark")); - }); - - it("should return historic day values", async (context) => { - const response = await context.subject.historicalPrice({ - token: context.token, - currency: context.currency, - days: 24, - type: "hour", - dateFormat: "HH:mm", - }); - assert.object(response); - assert.containKeys(response, ["labels", "datasets"]); - }); - - it("should return the current price", async (context) => { - nock.fake(context.basePath) - .get("/data/price") - .query(true) - .reply(200, loader.json("test/fixtures/cryptocompare/price.json")); - - const response = await context.subject.currentPrice({ - token: context.token, - currency: context.currency, - }); - assert.is(response, 1.635); - }); - }, -); diff --git a/packages/markets/source/drivers/cryptocompare/index.ts b/packages/markets/source/drivers/cryptocompare/index.ts deleted file mode 100644 index 8387f578..00000000 --- a/packages/markets/source/drivers/cryptocompare/index.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { CURRENCIES, DateTime } from "@ardenthq/sdk-intl"; -import { Http } from "@ardenthq/sdk"; - -import { - CurrentPriceOptions, - DailyAverageOptions, - HistoricalData, - HistoricalPriceOptions, - HistoricalVolumeOptions, - MarketDataCollection, - PriceTracker, -} from "../../contracts/index.js"; -import { HistoricalPriceTransformer } from "./transformers/historical-price-transformer.js"; -import { HistoricalVolumeTransformer } from "./transformers/historical-volume-transformer.js"; -import { MarketTransformer } from "./transformers/market-transformer.js"; - -/** - * Implements a price tracker through the CryptoCompare API. - * - * @see https://min-api.cryptocompare.com/ - * - * @export - * @class PriceTracker - * @implements {PriceTracker} - */ -export class CryptoCompare implements PriceTracker { - /** - * The HTTP client instance. - * - * @type {HttpClient} - * @memberof PriceTracker - */ - readonly #httpClient: Http.HttpClient; - - /** - * The host of the CryptoCompare API. - * - * @type {string} - * @memberof PriceTracker - */ - readonly #host: string = "https://min-api.cryptocompare.com"; - - /** - * Creates an instance of PriceTracker. - * - * @param {HttpClient} httpClient - * @memberof PriceTracker - */ - public constructor(httpClient: Http.HttpClient) { - this.#httpClient = httpClient; - } - - /** {@inheritDoc PriceTracker.verifyToken} */ - public async verifyToken(token: string): Promise { - try { - const body = await this.#get("data/price", { - fsym: token, - tsyms: "BTC", - }); - - return !!body.BTC; - } catch { - return false; - } - } - - /** {@inheritDoc PriceTracker.marketData} */ - public async marketData(token: string): Promise { - const body = await this.#get("data/pricemultifull", { - fsyms: token, - tsyms: Object.keys(CURRENCIES).join(","), - }); - - return new MarketTransformer(body.RAW && body.RAW[token] ? body.RAW[token] : {}).transform({}); - } - - /** {@inheritDoc PriceTracker.historicalPrice} */ - public async historicalPrice(options: HistoricalPriceOptions): Promise { - const body = await this.#get(`data/histo${options.type}`, { - fsym: options.token, - tsym: options.currency, - toTs: Math.round(new Date().getTime() / 1000), - limit: options.days, - }); - - return new HistoricalPriceTransformer(body.Data).transform(options); - } - - /** {@inheritDoc PriceTracker.historicalVolume} */ - public async historicalVolume(options: HistoricalVolumeOptions): Promise { - const body = await this.#get(`data/histo${options.type}`, { - fsym: options.token, - tsym: options.currency, - toTs: Math.round(new Date().getTime() / 1000), - limit: options.days, - }); - - return new HistoricalVolumeTransformer(body.Data).transform(options); - } - - /** {@inheritDoc PriceTracker.dailyAverage} */ - public async dailyAverage(options: DailyAverageOptions): Promise { - const response = await this.#get(`data/dayAvg`, { - fsym: options.token, - tsym: options.currency, - toTs: DateTime.make(options.timestamp).toUNIX(), - }); - - return response[options.currency.toUpperCase()]; - } - - /** {@inheritDoc PriceTracker.currentPrice} */ - public async currentPrice(options: CurrentPriceOptions): Promise { - const body = await this.#get("data/price", { - fsym: options.token, - tsyms: options.currency, - }); - - return body[options.currency]; - } - - /** - * Sends an HTTP GET request to the CryptoCompare API. - * - * @private - * @param {string} path - * @param {*} [query={}] - * @returns {Promise} - * @memberof PriceTracker - */ - async #get(path: string, query = {}): Promise { - const response = await this.#httpClient.get(`${this.#host}/${path}`, query); - - return response.json(); - } -} diff --git a/packages/markets/source/drivers/cryptocompare/transformers/historical-price-transformer.test.js b/packages/markets/source/drivers/cryptocompare/transformers/historical-price-transformer.test.js deleted file mode 100644 index e4d799e8..00000000 --- a/packages/markets/source/drivers/cryptocompare/transformers/historical-price-transformer.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import { describe } from "@ardenthq/sdk-test"; - -import { HistoricalPriceTransformer } from "./historical-price-transformer"; - -describe("HistoricalPriceTransformer", async ({ assert, it, nock, loader }) => { - it("should transform the given data", async () => { - const stubOptions = { type: "day", dateFormat: "DD.MM" }; - const stubResponse = loader.json("test/fixtures/cryptocompare/historical.json"); - - const subject = new HistoricalPriceTransformer(stubResponse.Data); - - assert.object(subject.transform(stubOptions)); - }); -}); diff --git a/packages/markets/source/drivers/cryptocompare/transformers/historical-price-transformer.ts b/packages/markets/source/drivers/cryptocompare/transformers/historical-price-transformer.ts deleted file mode 100644 index a5931958..00000000 --- a/packages/markets/source/drivers/cryptocompare/transformers/historical-price-transformer.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { DateTime } from "@ardenthq/sdk-intl"; - -import { - DailyAverageOptions, - HistoricalData, - HistoricalPriceOptions, - HistoricalTransformer, - HistoricalVolumeOptions, - MarketDataCollection, - PriceTracker, -} from "../../../contracts/index.js"; - -/** - * Implements a transformer for historical price data. - * - * @export - * @class HistoricalPriceTransformer - * @implements {HistoricalTransformer} - */ -export class HistoricalPriceTransformer implements HistoricalTransformer { - /** - * Creates an instance of HistoricalPriceTransformer. - * - * @param {Record} data - * @memberof HistoricalPriceTransformer - */ - public constructor(private readonly data: Record) {} - - /** - * Transforms the given data into a normalised format. - * - * @param {Record} options - * @returns {HistoricalData} - * @memberof HistoricalPriceTransformer - */ - public transform(options: Record): HistoricalData { - const datasets = this.data.map((value) => value.close); - - return { - labels: this.data.map((value) => DateTime.make(value.time * 1000).format(options.dateFormat)), - datasets, - min: Math.min(...datasets), - max: Math.max(...datasets), - }; - } -} diff --git a/packages/markets/source/drivers/cryptocompare/transformers/historical-volume-transformer.test.js b/packages/markets/source/drivers/cryptocompare/transformers/historical-volume-transformer.test.js deleted file mode 100644 index a0fc27d4..00000000 --- a/packages/markets/source/drivers/cryptocompare/transformers/historical-volume-transformer.test.js +++ /dev/null @@ -1,14 +0,0 @@ -import { describe } from "@ardenthq/sdk-test"; - -import { HistoricalVolumeTransformer } from "./historical-volume-transformer"; - -describe("HistoricalVolumeTransformer", async ({ assert, it, nock, loader }) => { - it("should transform the given data", async () => { - const stubOptions = { type: "day", dateFormat: "DD.MM" }; - const stubResponse = loader.json("test/fixtures/cryptocompare/historical.json"); - - const subject = new HistoricalVolumeTransformer(stubResponse.Data); - - assert.object(subject.transform(stubOptions)); - }); -}); diff --git a/packages/markets/source/drivers/cryptocompare/transformers/historical-volume-transformer.ts b/packages/markets/source/drivers/cryptocompare/transformers/historical-volume-transformer.ts deleted file mode 100644 index d252b13e..00000000 --- a/packages/markets/source/drivers/cryptocompare/transformers/historical-volume-transformer.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { DateTime } from "@ardenthq/sdk-intl"; - -import { HistoricalData, HistoricalTransformer } from "../../../contracts/index.js"; - -/** - * Implements a transformer for historical volume data. - * - * @export - * @class HistoricalVolumeTransformer - * @implements {HistoricalTransformer} - */ -export class HistoricalVolumeTransformer implements HistoricalTransformer { - /** - * Creates an instance of HistoricalVolumeTransformer. - * - * @param {Record} data - * @memberof HistoricalVolumeTransformer - */ - public constructor(private readonly data: Record) {} - - /** - * Transforms the given data into a normalised format. - * - * @param {Record} options - * @returns {HistoricalData} - * @memberof HistoricalVolumeTransformer - */ - public transform(options: Record): HistoricalData { - const datasets = this.data.map((value) => value.volumeto); - - return { - labels: this.data.map((value) => DateTime.make(value.time * 1000).format(options.dateFormat)), - datasets, - min: Math.min(...datasets), - max: Math.max(...datasets), - }; - } -} diff --git a/packages/markets/source/drivers/cryptocompare/transformers/market-transformer.test.js b/packages/markets/source/drivers/cryptocompare/transformers/market-transformer.test.js deleted file mode 100644 index 8223c730..00000000 --- a/packages/markets/source/drivers/cryptocompare/transformers/market-transformer.test.js +++ /dev/null @@ -1,17 +0,0 @@ -import { describeWithContext } from "@ardenthq/sdk-test"; - -import { MarketTransformer } from "./market-transformer"; - -describeWithContext( - "MarketTransformer", - { stubOptions: { type: "day", dateFormat: "DD.MM", token: "ARK" } }, - async ({ assert, it, nock, loader }) => { - it("should transform the given data", async (context) => { - const stubResponse = loader.json("test/fixtures/cryptocompare/market.json"); - - const subject = new MarketTransformer(stubResponse.RAW.ARK); - - assert.object(subject.transform(context.stubOptions)); - }); - }, -); diff --git a/packages/markets/source/drivers/cryptocompare/transformers/market-transformer.ts b/packages/markets/source/drivers/cryptocompare/transformers/market-transformer.ts deleted file mode 100644 index 2e01dc90..00000000 --- a/packages/markets/source/drivers/cryptocompare/transformers/market-transformer.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { MarketDataCollection } from "../../../contracts/index.js"; - -/** - * Implements a transformer for historical market data. - * - * @export - * @class MarketTransformer - * @implements {MarketTransformer} - */ -export class MarketTransformer implements MarketTransformer { - /** - * Creates an instance of MarketTransformer. - * - * @param {Record} data - * @memberof MarketTransformer - */ - public constructor(private readonly data: Record) {} - - /** - * Transforms the given data into a normalised format. - * - * @param {Record} options - * @returns {MarketDataCollection} - * @memberof MarketTransformer - */ - public transform(options: Record): MarketDataCollection { - const result = {}; - - for (const value of Object.values(this.data) as any) { - result[value.TOSYMBOL] = { - currency: value.TOSYMBOL, - price: value.PRICE, - marketCap: value.MKTCAP, - volume: value.TOTALVOLUME24HTO, - date: new Date(value.LASTUPDATE * 1000), - change24h: value.CHANGEPCT24HOUR, - }; - } - - return result; - } -} diff --git a/packages/markets/source/index.test.ts b/packages/markets/source/index.test.ts index e8c13e8c..b9499717 100644 --- a/packages/markets/source/index.test.ts +++ b/packages/markets/source/index.test.ts @@ -4,7 +4,7 @@ import { Request } from "@ardenthq/sdk-fetch"; import { PriceTracker } from "../test/stubs/tracker"; import { MarketService } from "./index"; -for (const adapter of ["cryptocompare", "coingecko", "coincap"]) { +for (const adapter of ["coingecko", "coincap"]) { describe(`MarketService(${adapter})`, async ({ beforeEach, it, stub }) => { const token = "ARK"; const currency = "USD"; diff --git a/packages/markets/source/index.ts b/packages/markets/source/index.ts index 2d65ea3e..f1bfcf9c 100644 --- a/packages/markets/source/index.ts +++ b/packages/markets/source/index.ts @@ -8,7 +8,6 @@ import { } from "./contracts/index.js"; import { CoinCap } from "./drivers/coincap/index.js"; import { CoinGecko } from "./drivers/coingecko/index.js"; -import { CryptoCompare } from "./drivers/cryptocompare/index.js"; /** * Normalises the communication with Market Data Providers. @@ -49,7 +48,6 @@ export class MarketService { { coincap: new CoinCap(httpClient), coingecko: new CoinGecko(httpClient), - cryptocompare: new CryptoCompare(httpClient), }[name.toLowerCase()]!, ); } diff --git a/packages/markets/test/fixtures/cryptocompare/historical.json b/packages/markets/test/fixtures/cryptocompare/historical.json deleted file mode 100644 index 382b6081..00000000 --- a/packages/markets/test/fixtures/cryptocompare/historical.json +++ /dev/null @@ -1,292 +0,0 @@ -{ - "Response": "Success", - "Type": 100, - "Aggregated": false, - "Data": [ - { - "time": 1578096000, - "close": 0.00001978, - "high": 0.00001997, - "low": 0.00001957, - "open": 0.00001984, - "volumefrom": 163397.5, - "volumeto": 3.23 - }, - { - "time": 1578182400, - "close": 0.00001979, - "high": 0.0000199, - "low": 0.00001964, - "open": 0.00001978, - "volumefrom": 199755.46, - "volumeto": 3.952 - }, - { - "time": 1578268800, - "close": 0.00001963, - "high": 0.00001985, - "low": 0.0000195, - "open": 0.00001979, - "volumefrom": 180763.77, - "volumeto": 3.556 - }, - { - "time": 1578355200, - "close": 0.00001791, - "high": 0.00001983, - "low": 0.00001786, - "open": 0.00001963, - "volumefrom": 743375.83, - "volumeto": 13.9 - }, - { - "time": 1578441600, - "close": 0.00001776, - "high": 0.00001817, - "low": 0.00001638, - "open": 0.00001791, - "volumefrom": 927238.47, - "volumeto": 15.95 - }, - { - "time": 1578528000, - "close": 0.00001766, - "high": 0.000018, - "low": 0.00001737, - "open": 0.00001776, - "volumefrom": 183527.85, - "volumeto": 3.256 - }, - { - "time": 1578614400, - "close": 0.00001756, - "high": 0.00001827, - "low": 0.00001748, - "open": 0.00001766, - "volumefrom": 775250.01, - "volumeto": 13.91 - }, - { - "time": 1578700800, - "close": 0.00001753, - "high": 0.00001794, - "low": 0.00001717, - "open": 0.00001756, - "volumefrom": 1946640.69, - "volumeto": 34.28 - }, - { - "time": 1578787200, - "close": 0.00001711, - "high": 0.0000177, - "low": 0.00001692, - "open": 0.00001753, - "volumefrom": 952731.74, - "volumeto": 16.57 - }, - { - "time": 1578873600, - "close": 0.00001717, - "high": 0.00001726, - "low": 0.0000169, - "open": 0.00001711, - "volumefrom": 158671.05, - "volumeto": 2.709 - }, - { - "time": 1578960000, - "close": 0.0000161, - "high": 0.00001717, - "low": 0.00001562, - "open": 0.00001717, - "volumefrom": 890191.63, - "volumeto": 14.4 - }, - { - "time": 1579046400, - "close": 0.00001686, - "high": 0.00001926, - "low": 0.00001601, - "open": 0.0000161, - "volumefrom": 2043473.8, - "volumeto": 35.75 - }, - { - "time": 1579132800, - "close": 0.00001665, - "high": 0.00001698, - "low": 0.00001636, - "open": 0.00001686, - "volumefrom": 491749.9, - "volumeto": 8.201 - }, - { - "time": 1579219200, - "close": 0.00001749, - "high": 0.00001828, - "low": 0.00001628, - "open": 0.00001665, - "volumefrom": 1222468.37, - "volumeto": 21.08 - }, - { - "time": 1579305600, - "close": 0.00001796, - "high": 0.00001802, - "low": 0.0000166, - "open": 0.00001749, - "volumefrom": 799942.21, - "volumeto": 13.84 - }, - { - "time": 1579392000, - "close": 0.00001789, - "high": 0.00001842, - "low": 0.00001705, - "open": 0.00001796, - "volumefrom": 686232.91, - "volumeto": 12.16 - }, - { - "time": 1579478400, - "close": 0.00001764, - "high": 0.00001807, - "low": 0.00001758, - "open": 0.00001789, - "volumefrom": 214315.63, - "volumeto": 3.814 - }, - { - "time": 1579564800, - "close": 0.00001809, - "high": 0.00002016, - "low": 0.00001747, - "open": 0.00001764, - "volumefrom": 3003848.66, - "volumeto": 57.63 - }, - { - "time": 1579651200, - "close": 0.00001899, - "high": 0.00001962, - "low": 0.00001793, - "open": 0.00001809, - "volumefrom": 1407181.33, - "volumeto": 27.39 - }, - { - "time": 1579737600, - "close": 0.0000184, - "high": 0.00001952, - "low": 0.00001802, - "open": 0.00001899, - "volumefrom": 482853.97, - "volumeto": 8.876 - }, - { - "time": 1579824000, - "close": 0.00001939, - "high": 0.0000194, - "low": 0.00001815, - "open": 0.0000184, - "volumefrom": 439498.17, - "volumeto": 8.297 - }, - { - "time": 1579910400, - "close": 0.0000189, - "high": 0.00001939, - "low": 0.00001871, - "open": 0.00001939, - "volumefrom": 208155.01, - "volumeto": 3.947 - }, - { - "time": 1579996800, - "close": 0.00001816, - "high": 0.000019, - "low": 0.00001813, - "open": 0.0000189, - "volumefrom": 206697.01, - "volumeto": 3.841 - }, - { - "time": 1580083200, - "close": 0.00001765, - "high": 0.00001828, - "low": 0.00001739, - "open": 0.00001816, - "volumefrom": 384009.45, - "volumeto": 6.842 - }, - { - "time": 1580169600, - "close": 0.00001733, - "high": 0.00001786, - "low": 0.00001732, - "open": 0.00001765, - "volumefrom": 281215.28, - "volumeto": 4.946 - }, - { - "time": 1580256000, - "close": 0.00001697, - "high": 0.00001741, - "low": 0.00001682, - "open": 0.00001733, - "volumefrom": 144470.13, - "volumeto": 2.48 - }, - { - "time": 1580342400, - "close": 0.00001684, - "high": 0.00001737, - "low": 0.00001673, - "open": 0.00001697, - "volumefrom": 248487.4, - "volumeto": 4.234 - }, - { - "time": 1580428800, - "close": 0.00001713, - "high": 0.00001764, - "low": 0.00001591, - "open": 0.00001684, - "volumefrom": 952146.93, - "volumeto": 16.01 - }, - { - "time": 1580515200, - "close": 0.00001779, - "high": 0.0000181, - "low": 0.00001712, - "open": 0.00001713, - "volumefrom": 432424.34, - "volumeto": 7.619 - }, - { - "time": 1580601600, - "close": 0.00001867, - "high": 0.00002166, - "low": 0.00001779, - "open": 0.00001779, - "volumefrom": 2651423.6, - "volumeto": 51.24 - }, - { - "time": 1580688000, - "close": 0.00001904, - "high": 0.00002067, - "low": 0.00001829, - "open": 0.00001867, - "volumefrom": 2548910.53, - "volumeto": 49.63 - } - ], - "TimeTo": 1580688000, - "TimeFrom": 1578096000, - "FirstValueInArray": true, - "ConversionType": { "type": "direct", "conversionSymbol": "" }, - "RateLimit": {}, - "HasWarning": false -} diff --git a/packages/markets/test/fixtures/cryptocompare/market.json b/packages/markets/test/fixtures/cryptocompare/market.json deleted file mode 100644 index 8a47416d..00000000 --- a/packages/markets/test/fixtures/cryptocompare/market.json +++ /dev/null @@ -1,1630 +0,0 @@ -{ - "RAW": { - "ARK": { - "BTC": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "BTC", - "FLAGS": "2052", - "PRICE": 0.00001904, - "LASTUPDATE": 1580733055, - "MEDIAN": 0.00001934, - "LASTVOLUME": 7, - "LASTVOLUMETO": 0.00013314000000000002, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 205.79565962985166, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 104.01248849471973, - "OPENDAY": 0.00001867, - "HIGHDAY": 0.0000207, - "LOWDAY": 0.00001829, - "OPEN24HOUR": 0.00001874, - "HIGH24HOUR": 0.0000208, - "LOW24HOUR": 0.00001828, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 1.044193829886086, - "OPENHOUR": 0.00001906, - "HIGHHOUR": 0.00001918, - "LOWHOUR": 0.00001879, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 103.98824088391352, - "CHANGE24HOUR": 3.000000000000005e-7, - "CHANGEPCT24HOUR": 1.6008537886873027, - "CHANGEDAY": 3.7000000000000154e-7, - "CHANGEPCTDAY": 1.9817889662560342, - "CHANGEHOUR": -1.999999999999981e-8, - "CHANGEPCTHOUR": -0.10493179433368209, - "SUPPLY": 108202084, - "MKTCAP": 2060.16767936, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 151.35330909121384, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 151.32906148040755, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "direct", - "CONVERSIONSYMBOL": "" - }, - "ETH": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "ETH", - "FLAGS": "2052", - "PRICE": 0.0009365469749139203, - "LASTUPDATE": 1580733068, - "MEDIAN": 0.0009513034923757993, - "LASTVOLUME": 7, - "LASTVOLUMETO": 0.006555828824397442, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 9916.57492513911, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 5030.285101544588, - "OPENDAY": 0.0009183472700442695, - "HIGHDAY": 0.001018199704869651, - "LOWDAY": 0.0008996556812592227, - "OPEN24HOUR": 0.0009217904574520413, - "HIGH24HOUR": 0.00102311854402361, - "LOW24HOUR": 0.0008991637973438268, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 51.68343210150423, - "OPENHOUR": 0.0009375307427447122, - "HIGHHOUR": 0.0009434333497294637, - "LOWHOUR": 0.0009242498770290212, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 5029.114696204662, - "CHANGE24HOUR": 0.000014756517461879002, - "CHANGEPCT24HOUR": 1.6008537886873004, - "CHANGEDAY": 0.000018199704869650813, - "CHANGEPCTDAY": 1.9817889662560313, - "CHANGEHOUR": -9.837678307918684e-7, - "CHANGEPCTHOUR": -0.10493179433367622, - "SUPPLY": 108202084, - "MKTCAP": 101336.3344495819, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 7358.903920850742, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 7357.733515510812, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "divide", - "CONVERSIONSYMBOL": "BTC" - }, - "LTC": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "LTC", - "FLAGS": "2052", - "PRICE": 0.002538666666666667, - "LASTUPDATE": 1580733072, - "MEDIAN": 0.002578666666666667, - "LASTVOLUME": 7, - "LASTVOLUMETO": 0.01777066666666667, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 26880.52909707708, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 13635.42614858686, - "OPENDAY": 0.002489333333333333, - "HIGHDAY": 0.00276, - "LOWDAY": 0.002438666666666667, - "OPEN24HOUR": 0.002498666666666667, - "HIGH24HOUR": 0.002773333333333333, - "LOW24HOUR": 0.002437333333333333, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 140.0965566164775, - "OPENHOUR": 0.002541333333333333, - "HIGHHOUR": 0.002557333333333333, - "LOWHOUR": 0.002505333333333334, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 13632.25356984544, - "CHANGE24HOUR": 0.000040000000000000105, - "CHANGEPCT24HOUR": 1.600853788687304, - "CHANGEDAY": 0.000049333333333333954, - "CHANGEPCTDAY": 1.9817889662560508, - "CHANGEHOUR": -0.0000026666666666660087, - "CHANGEPCTHOUR": -0.10493179433365724, - "SUPPLY": 108202084, - "MKTCAP": 274689.0239146667, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 19947.535561452743, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 19944.36298271131, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "divide", - "CONVERSIONSYMBOL": "BTC" - }, - "AUD": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "AUD", - "FLAGS": "2052", - "PRICE": 0.2661462608, - "LASTUPDATE": 1580733055, - "MEDIAN": 0.2703397418, - "LASTVOLUME": 7, - "LASTVOLUMETO": 1.8630238256, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 2818074.700963498, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 1429497.512025055, - "OPENDAY": 0.2609743009, - "HIGHDAY": 0.289350189, - "LOWDAY": 0.2556625583, - "OPEN24HOUR": 0.2619527798, - "HIGH24HOUR": 0.290748016, - "LOW24HOUR": 0.2555227756, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 14687.30620841556, - "OPENHOUR": 0.2664258262, - "HIGHHOUR": 0.2681032186, - "LOWHOUR": 0.2626516933, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 1429164.908308225, - "CHANGE24HOUR": 0.004193480999999999, - "CHANGEPCT24HOUR": 1.6008537886872996, - "CHANGEDAY": 0.005171959899999967, - "CHANGEPCTDAY": 1.981788966256013, - "CHANGEHOUR": -0.00027956540000001473, - "CHANGEPCTHOUR": -0.10493179433368864, - "SUPPLY": 108202084, - "MKTCAP": 28797580.067367505, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 2091240.2843444108, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 2090907.6806275796, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "BRL": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "BRL", - "FLAGS": "2052", - "PRICE": 0.762552, - "LASTUPDATE": 1580733062, - "MEDIAN": 0.774567, - "LASTVOLUME": 7, - "LASTVOLUMETO": 5.337864, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 8074238.927534528, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 4095741.129381779, - "OPENDAY": 0.7477334999999999, - "HIGHDAY": 0.829035, - "LOWDAY": 0.7325145, - "OPEN24HOUR": 0.750537, - "HIGH24HOUR": 0.83304, - "LOW24HOUR": 0.732114, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 42081.50319367441, - "OPENHOUR": 0.7633530000000001, - "HIGHHOUR": 0.7681589999999999, - "LOWHOUR": 0.7525395, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 4094788.166042323, - "CHANGE24HOUR": 0.012014999999999998, - "CHANGEPCT24HOUR": 1.6008537886872996, - "CHANGEDAY": 0.014818500000000068, - "CHANGEPCTDAY": 1.9817889662560348, - "CHANGEHOUR": -0.0008010000000000517, - "CHANGEPCTHOUR": -0.10493179433368988, - "SUPPLY": 108202084, - "MKTCAP": 82509715.558368, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 5991740.994271369, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 5990788.030931909, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "CAD": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "CAD", - "FLAGS": "2052", - "PRICE": 0.23382072, - "LASTUPDATE": 1580733055, - "MEDIAN": 0.23750487, - "LASTVOLUME": 7, - "LASTVOLUMETO": 1.63674504, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 2475797.531824913, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 1255873.881132907, - "OPENDAY": 0.229276935, - "HIGHDAY": 0.25420635, - "LOWDAY": 0.224610345, - "OPEN24HOUR": 0.23013657, - "HIGH24HOUR": 0.2554344, - "LOW24HOUR": 0.22448754, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 12903.41822646489, - "OPENHOUR": 0.23406633, - "HIGHHOUR": 0.23553999, - "LOWHOUR": 0.230750595, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 1255581.674733652, - "CHANGE24HOUR": 0.003684149999999997, - "CHANGEPCT24HOUR": 1.6008537886872984, - "CHANGEDAY": 0.004543785000000022, - "CHANGEPCTDAY": 1.9817889662560355, - "CHANGEHOUR": -0.00024560999999997946, - "CHANGEPCTHOUR": -0.10493179433367433, - "SUPPLY": 108202084, - "MKTCAP": 25299889.18638048, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 1837242.828468153, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 1836950.622068897, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "CHF": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "CHF", - "FLAGS": "2052", - "PRICE": 0.1720088832, - "LASTUPDATE": 1580733055, - "MEDIAN": 0.1747191072, - "LASTVOLUME": 7, - "LASTVOLUMETO": 1.2040621824, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 1821306.377289916, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 923876.479953192, - "OPENDAY": 0.1686662736, - "HIGHDAY": 0.187005456, - "LOWDAY": 0.1652333232, - "OPEN24HOUR": 0.1692986592, - "HIGH24HOUR": 0.187908864, - "LOW24HOUR": 0.1651429824, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 9492.3262514834, - "OPENHOUR": 0.1721895648, - "HIGHHOUR": 0.1732736544, - "LOWHOUR": 0.1697503632, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 923661.5199770196, - "CHANGE24HOUR": 0.0027102239999999833, - "CHANGEPCT24HOUR": 1.6008537886872902, - "CHANGEDAY": 0.0033426095999999905, - "CHANGEPCTDAY": 1.98178896625602, - "CHANGEHOUR": -0.00018068160000001, - "CHANGEPCTHOUR": -0.1049317943336889, - "SUPPLY": 108202084, - "MKTCAP": 18611719.62875259, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 1351557.2404875676, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 1351342.2805113944, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "CNY": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "CNY", - "FLAGS": "2052", - "PRICE": 1.2690158096, - "LASTUPDATE": 1580733055, - "MEDIAN": 1.2890108066, - "LASTVOLUME": 7, - "LASTVOLUMETO": 8.8831106672, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 13436902.46636173, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 6816007.623367897, - "OPENDAY": 1.2443553133, - "HIGHDAY": 1.379654793, - "LOWDAY": 1.2190283171, - "OPEN24HOUR": 1.2490208126, - "HIGH24HOUR": 1.386319792, - "LOW24HOUR": 1.2183618172, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 70030.75573141994, - "OPENHOUR": 1.2703488094, - "HIGHHOUR": 1.2783468082, - "LOWHOUR": 1.2523533121, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 6814421.730807471, - "CHANGE24HOUR": 0.01999499699999996, - "CHANGEPCT24HOUR": 1.6008537886872967, - "CHANGEDAY": 0.02466049629999989, - "CHANGEPCTDAY": 1.9817889662560169, - "CHANGEHOUR": -0.001332999800000012, - "CHANGEPCTHOUR": -0.10493179433368406, - "SUPPLY": 108202084, - "MKTCAP": 137310155.2276672, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 9971272.842716023, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 9969686.950155592, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "EUR": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "EUR", - "FLAGS": "2052", - "PRICE": 0.1609991936, - "LASTUPDATE": 1580733062, - "MEDIAN": 0.1635359456, - "LASTVOLUME": 7, - "LASTVOLUMETO": 1.1269943552, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 1704730.898701712, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 864742.3638320005, - "OPENDAY": 0.1578705328, - "HIGHDAY": 0.175035888, - "LOWDAY": 0.1546573136, - "OPEN24HOUR": 0.1584624416, - "HIGH24HOUR": 0.175881472, - "LOW24HOUR": 0.1545727552, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 8884.75550474906, - "OPENHOUR": 0.1611683104, - "HIGHHOUR": 0.1621830112, - "LOWHOUR": 0.1588852336, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 864541.1626953138, - "CHANGE24HOUR": 0.0025367520000000032, - "CHANGEPCT24HOUR": 1.600853788687302, - "CHANGEDAY": 0.003128660800000016, - "CHANGEPCTDAY": 1.981788966256036, - "CHANGEHOUR": -0.00016911679999997986, - "CHANGEPCTHOUR": -0.10493179433367061, - "SUPPLY": 108202084, - "MKTCAP": 17420448.269839462, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 1265048.7682646594, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 1264847.567127972, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "GBP": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "GBP", - "FLAGS": "2052", - "PRICE": 0.1365287952, - "LASTUPDATE": 1580733061, - "MEDIAN": 0.1386799842, - "LASTVOLUME": 7, - "LASTVOLUMETO": 0.9557015663999999, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 1445627.462695304, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 733309.4685288105, - "OPENDAY": 0.1338756621, - "HIGHDAY": 0.148432041, - "LOWDAY": 0.1311508227, - "OPEN24HOUR": 0.1343776062, - "HIGH24HOUR": 0.149149104, - "LOW24HOUR": 0.1310791164, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 7534.354288281088, - "OPENHOUR": 0.1366722078, - "HIGHHOUR": 0.1375326834, - "LOWHOUR": 0.1347361377, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 733138.848116556, - "CHANGE24HOUR": 0.002151188999999998, - "CHANGEPCT24HOUR": 1.600853788687298, - "CHANGEDAY": 0.0026531331000000102, - "CHANGEPCTDAY": 1.9817889662560335, - "CHANGEHOUR": -0.00014341260000000355, - "CHANGEPCTHOUR": -0.10493179433368571, - "SUPPLY": 108202084, - "MKTCAP": 14772700.166649196, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 1072772.9769226492, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 1072602.3565103938, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "HKD": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "HKD", - "FLAGS": "2052", - "PRICE": 1.395632, - "LASTUPDATE": 1580733055, - "MEDIAN": 1.417622, - "LASTVOLUME": 7, - "LASTVOLUMETO": 9.769424, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 14777570.87111812, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 7496075.525185627, - "OPENDAY": 1.368511, - "HIGHDAY": 1.51731, - "LOWDAY": 1.340657, - "OPEN24HOUR": 1.373642, - "HIGH24HOUR": 1.52464, - "LOW24HOUR": 1.339924, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 77018.08199990848, - "OPENHOUR": 1.397098, - "HIGHHOUR": 1.405894, - "LOWHOUR": 1.377307, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 7494331.400022529, - "CHANGE24HOUR": 0.021989999999999954, - "CHANGEPCT24HOUR": 1.6008537886872964, - "CHANGEDAY": 0.02712099999999995, - "CHANGEPCTDAY": 1.981788966256022, - "CHANGEHOUR": -0.0014659999999999673, - "CHANGEPCTHOUR": -0.10493179433368077, - "SUPPLY": 108202084, - "MKTCAP": 151010290.897088, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 10966157.674908645, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 10964413.549745541, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "IDR": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "IDR", - "FLAGS": "2052", - "PRICE": 2431.5984, - "LASTUPDATE": 1580733055, - "MEDIAN": 2469.9114, - "LASTVOLUME": 7, - "LASTVOLUMETO": 17021.1888, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 25746842782.40786, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 13060352050.77021, - "OPENDAY": 2384.3457, - "HIGHDAY": 2643.597, - "LOWDAY": 2335.8159, - "OPEN24HOUR": 2393.2854, - "HIGH24HOUR": 2656.368, - "LOW24HOUR": 2334.5388, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 134187984.3411775, - "OPENHOUR": 2434.1526, - "HIGHHOUR": 2449.4778, - "LOWHOUR": 2399.6709, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 13057313275.53721, - "CHANGE24HOUR": 38.31299999999965, - "CHANGEPCT24HOUR": 1.600853788687285, - "CHANGEDAY": 47.252700000000004, - "CHANGEPCTDAY": 1.9817889662560262, - "CHANGEHOUR": -2.554200000000037, - "CHANGEPCTHOUR": -0.10493179433368463, - "SUPPLY": 108202084, - "MKTCAP": 263104014331.06558, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 19106248249.148476, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 19103209473.915462, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "INR": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "INR", - "FLAGS": "2052", - "PRICE": 12.883416, - "LASTUPDATE": 1580733055, - "MEDIAN": 13.086411, - "LASTVOLUME": 7, - "LASTVOLUMETO": 90.183912, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 136415325.1015291, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 69198083.27580975, - "OPENDAY": 12.6330555, - "HIGHDAY": 14.006655, - "LOWDAY": 12.3759285, - "OPEN24HOUR": 12.680421, - "HIGH24HOUR": 14.07432, - "LOW24HOUR": 12.369162, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 710972.512759046, - "OPENHOUR": 12.896949, - "HIGHHOUR": 12.978147, - "LOWHOUR": 12.7142535, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 69181982.83526936, - "CHANGE24HOUR": 0.2029949999999996, - "CHANGEPCT24HOUR": 1.6008537886872967, - "CHANGEDAY": 0.2503605000000011, - "CHANGEPCTDAY": 1.9817889662560346, - "CHANGEHOUR": -0.013532999999998907, - "CHANGEPCTHOUR": -0.10493179433367462, - "SUPPLY": 108202084, - "MKTCAP": 1394012460.238944, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 101231249.53242749, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 101215149.09188706, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "JPY": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "JPY", - "FLAGS": "2052", - "PRICE": 19.3217594416, - "LASTUPDATE": 1580733061, - "MEDIAN": 19.6261989286, - "LASTVOLUME": 7, - "LASTVOLUMETO": 135.2523160912, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 204587362.215068, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 103779053.5425543, - "OPENDAY": 18.9462840743, - "HIGHDAY": 21.006324603, - "LOWDAY": 18.5606607241, - "OPEN24HOUR": 19.0173199546, - "HIGH24HOUR": 21.107804432, - "LOW24HOUR": 18.5505127412, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 1066273.095669671, - "OPENHOUR": 19.3420554074, - "HIGHHOUR": 19.4638312022, - "LOWHOUR": 19.0680598691, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 103754907.0864416, - "CHANGE24HOUR": 0.3044394869999998, - "CHANGEPCT24HOUR": 1.6008537886872989, - "CHANGEDAY": 0.37547536730000175, - "CHANGEPCTDAY": 1.9817889662560348, - "CHANGEHOUR": -0.02029596579999904, - "CHANGEPCTHOUR": -0.10493179433367815, - "SUPPLY": 108202084, - "MKTCAP": 2090654638.1277964, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 151820437.3310733, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 151796290.87496054, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "KRW": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "KRW", - "FLAGS": "2052", - "PRICE": 286, - "LASTUPDATE": 1580732812, - "MEDIAN": 286, - "LASTVOLUME": 2000, - "LASTVOLUMETO": 572000, - "LASTTRADEID": "15807328120001", - "VOLUMEDAY": 1938806.8967653932, - "VOLUMEDAYTO": 556795415.193782, - "VOLUME24HOUR": 2340013.08467039, - "VOLUME24HOURTO": 665701173.2949739, - "OPENDAY": 273, - "HIGHDAY": 304, - "LOWDAY": 271, - "OPEN24HOUR": 270, - "HIGH24HOUR": 304, - "LOW24HOUR": 267, - "LASTMARKET": "Upbit", - "VOLUMEHOUR": 10396.80219561, - "VOLUMEHOURTO": 2974933.39086326, - "OPENHOUR": 285, - "HIGHHOUR": 287, - "LOWHOUR": 285, - "TOPTIERVOLUME24HOUR": 2340013.08467039, - "TOPTIERVOLUME24HOURTO": 665701173.2949739, - "CHANGE24HOUR": 16, - "CHANGEPCT24HOUR": 5.9259259259259265, - "CHANGEDAY": 13, - "CHANGEPCTDAY": 4.761904761904762, - "CHANGEHOUR": 1, - "CHANGEPCTHOUR": 0.3508771929824561, - "SUPPLY": 108202084, - "MKTCAP": 30945796024, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 2243698175.7912245, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 2243340760.801708, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "direct", - "CONVERSIONSYMBOL": "" - }, - "MXN": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "MXN", - "FLAGS": "2052", - "PRICE": 3.3344555888, - "LASTUPDATE": 1580733055, - "MEDIAN": 3.3869942798, - "LASTVOLUME": 7, - "LASTVOLUMETO": 23.3411891216, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 35306695.30369604, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 17909686.02684813, - "OPENDAY": 3.2696578699, - "HIGHDAY": 3.625169679, - "LOWDAY": 3.2031088613, - "OPEN24HOUR": 3.2819168978, - "HIGH24HOUR": 3.642682576, - "LOW24HOUR": 3.2013575716, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 184012.2424559279, - "OPENHOUR": 3.3379581682, - "HIGHHOUR": 3.3589736446, - "LOWHOUR": 3.2906733463, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 17905518.94849391, - "CHANGE24HOUR": 0.05253869100000008, - "CHANGEPCT24HOUR": 1.6008537886873022, - "CHANGEDAY": 0.06479771889999997, - "CHANGEPCTDAY": 1.9817889662560249, - "CHANGEHOUR": -0.0035025794000000943, - "CHANGEPCTHOUR": -0.10493179433368593, - "SUPPLY": 108202084, - "MKTCAP": 360795043.7136071, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 26200435.17686693, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 26196268.098512694, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "RUB": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "RUB", - "FLAGS": "2052", - "PRICE": 11.2756410816, - "LASTUPDATE": 1580733055, - "MEDIAN": 11.4533034936, - "LASTVOLUME": 7, - "LASTVOLUMETO": 78.92948757120001, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 119391490.8805724, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 60562567.45514531, - "OPENDAY": 11.0565241068, - "HIGHDAY": 12.258706428, - "LOWDAY": 10.8314850516, - "OPEN24HOUR": 11.0979786696, - "HIGH24HOUR": 12.317927232, - "LOW24HOUR": 10.8255629712, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 622247.3040344487, - "OPENHOUR": 11.2874852424, - "HIGHHOUR": 11.3585502072, - "LOWHOUR": 11.1275890716, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 60548476.25535878, - "CHANGE24HOUR": 0.1776624120000001, - "CHANGEPCT24HOUR": 1.6008537886873009, - "CHANGEDAY": 0.21911697480000036, - "CHANGEPCTDAY": 1.9817889662560288, - "CHANGEHOUR": -0.011844160800000836, - "CHANGEPCTHOUR": -0.1049317943336905, - "SUPPLY": 108202084, - "MKTCAP": 1220047863.4651341, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 88598182.03258672, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 88584090.83280014, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "USD": { - "TYPE": "5", - "MARKET": "CCCAGG", - "FROMSYMBOL": "ARK", - "TOSYMBOL": "USD", - "FLAGS": "2052", - "PRICE": 0.178045896, - "LASTUPDATE": 1580733066, - "MEDIAN": 0.180851241, - "LASTVOLUME": 7, - "LASTVOLUMETO": 1.246321272, - "LASTTRADEID": "4118615", - "VOLUMEDAY": 10588443.709457884, - "VOLUMEDAYTO": 1885228.947495993, - "VOLUME24HOUR": 5371097.485000077, - "VOLUME24HOURTO": 956301.8642201853, - "OPENDAY": 0.1745859705, - "HIGHDAY": 0.193568805, - "LOWDAY": 0.1710325335, - "OPEN24HOUR": 0.175240551, - "HIGH24HOUR": 0.19450392, - "LOW24HOUR": 0.170939022, - "LASTMARKET": "Binance", - "VOLUMEHOUR": 55185.093205020006, - "VOLUMEHOURTO": 9825.479365531299, - "OPENHOUR": 0.178232919, - "HIGHHOUR": 0.179355057, - "LOWHOUR": 0.1757081085, - "TOPTIERVOLUME24HOUR": 5369847.782239537, - "TOPTIERVOLUME24HOURTO": 956079.3597724512, - "CHANGE24HOUR": 0.0028053450000000146, - "CHANGEPCT24HOUR": 1.6008537886873082, - "CHANGEDAY": 0.003459925500000016, - "CHANGEPCTDAY": 1.9817889662560353, - "CHANGEHOUR": -0.00018702299999998062, - "CHANGEPCTHOUR": -0.10493179433367225, - "SUPPLY": 108202084, - "MKTCAP": 19264936.994847264, - "TOTALVOLUME24H": 7857485.121370566, - "TOTALVOLUME24HTO": 1398992.9787410912, - "TOTALTOPTIERVOLUME24H": 7856235.4186100215, - "TOTALTOPTIERVOLUME24HTO": 1398770.4742933563, - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - } - } - }, - "DISPLAY": { - "ARK": { - "BTC": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "Ƀ", - "MARKET": "CryptoCompare Index", - "PRICE": "Ƀ 0.00001904", - "LASTUPDATE": "Just now", - "MEDIAN": "Ƀ 0.00001934", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "Ƀ 0.0001331", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "Ƀ 205.80", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "Ƀ 104.01", - "OPENDAY": "Ƀ 0.00001867", - "HIGHDAY": "Ƀ 0.00002070", - "LOWDAY": "Ƀ 0.00001829", - "OPEN24HOUR": "Ƀ 0.00001874", - "HIGH24HOUR": "Ƀ 0.00002080", - "LOW24HOUR": "Ƀ 0.00001828", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "Ƀ 1.04", - "OPENHOUR": "Ƀ 0.00001906", - "HIGHHOUR": "Ƀ 0.00001918", - "LOWHOUR": "Ƀ 0.00001879", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "Ƀ 103.99", - "CHANGE24HOUR": "Ƀ 3.0e-7", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "Ƀ 3.7e-7", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "Ƀ -2.0e-8", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "Ƀ 2.06 K", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "Ƀ 151.35", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "Ƀ 151.33", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "direct", - "CONVERSIONSYMBOL": "" - }, - "ETH": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "Ξ", - "MARKET": "CryptoCompare Index", - "PRICE": "Ξ 0.0009365", - "LASTUPDATE": "Just now", - "MEDIAN": "Ξ 0.0009513", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "Ξ 0.006556", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "Ξ 9,916.57", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "Ξ 5,030.29", - "OPENDAY": "Ξ 0.0009183", - "HIGHDAY": "Ξ 0.001018", - "LOWDAY": "Ξ 0.0008997", - "OPEN24HOUR": "Ξ 0.0009218", - "HIGH24HOUR": "Ξ 0.001023", - "LOW24HOUR": "Ξ 0.0008992", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "Ξ 51.68", - "OPENHOUR": "Ξ 0.0009375", - "HIGHHOUR": "Ξ 0.0009434", - "LOWHOUR": "Ξ 0.0009242", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "Ξ 5,029.11", - "CHANGE24HOUR": "Ξ 0.000015", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "Ξ 0.000018", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "Ξ -9.8e-7", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "Ξ 101.34 K", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "Ξ 7.36 K", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "Ξ 7.36 K", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "divide", - "CONVERSIONSYMBOL": "BTC" - }, - "LTC": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "Ł", - "MARKET": "CryptoCompare Index", - "PRICE": "Ł 0.002539", - "LASTUPDATE": "Just now", - "MEDIAN": "Ł 0.002579", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "Ł 0.01777", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "Ł 26,880.5", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "Ł 13,635.4", - "OPENDAY": "Ł 0.002489", - "HIGHDAY": "Ł 0.002760", - "LOWDAY": "Ł 0.002439", - "OPEN24HOUR": "Ł 0.002499", - "HIGH24HOUR": "Ł 0.002773", - "LOW24HOUR": "Ł 0.002437", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "Ł 140.10", - "OPENHOUR": "Ł 0.002541", - "HIGHHOUR": "Ł 0.002557", - "LOWHOUR": "Ł 0.002505", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "Ł 13,632.3", - "CHANGE24HOUR": "Ł 0.000040", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "Ł 0.000049", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "Ł -0.0000027", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "Ł 274.69 K", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "Ł 19.95 K", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "Ł 19.94 K", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "divide", - "CONVERSIONSYMBOL": "BTC" - }, - "AUD": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "AUD", - "MARKET": "CryptoCompare Index", - "PRICE": "AUD 0.2661", - "LASTUPDATE": "Just now", - "MEDIAN": "AUD 0.2703", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "AUD 1.86", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "AUD 2,818,074.7", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "AUD 1,429,497.5", - "OPENDAY": "AUD 0.2610", - "HIGHDAY": "AUD 0.2894", - "LOWDAY": "AUD 0.2557", - "OPEN24HOUR": "AUD 0.2620", - "HIGH24HOUR": "AUD 0.2907", - "LOW24HOUR": "AUD 0.2555", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "AUD 14,687.3", - "OPENHOUR": "AUD 0.2664", - "HIGHHOUR": "AUD 0.2681", - "LOWHOUR": "AUD 0.2627", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "AUD 1,429,164.9", - "CHANGE24HOUR": "AUD 0.0042", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "AUD 0.0052", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "AUD -0.00028", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "AUD 28.80 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "AUD 2.09 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "AUD 2.09 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "BRL": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "R$", - "MARKET": "CryptoCompare Index", - "PRICE": "R$ 0.7626", - "LASTUPDATE": "Just now", - "MEDIAN": "R$ 0.7746", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "R$ 5.34", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "R$ 8,074,238.9", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "R$ 4,095,741.1", - "OPENDAY": "R$ 0.7477", - "HIGHDAY": "R$ 0.8290", - "LOWDAY": "R$ 0.7325", - "OPEN24HOUR": "R$ 0.7505", - "HIGH24HOUR": "R$ 0.8330", - "LOW24HOUR": "R$ 0.7321", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "R$ 42,081.5", - "OPENHOUR": "R$ 0.7634", - "HIGHHOUR": "R$ 0.7682", - "LOWHOUR": "R$ 0.7525", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "R$ 4,094,788.2", - "CHANGE24HOUR": "R$ 0.012", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "R$ 0.015", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "R$ -0.00080", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "R$ 82.51 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "R$ 5.99 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "R$ 5.99 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "CAD": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "CAD", - "MARKET": "CryptoCompare Index", - "PRICE": "CAD 0.2338", - "LASTUPDATE": "Just now", - "MEDIAN": "CAD 0.2375", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "CAD 1.64", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "CAD 2,475,797.5", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "CAD 1,255,873.9", - "OPENDAY": "CAD 0.2293", - "HIGHDAY": "CAD 0.2542", - "LOWDAY": "CAD 0.2246", - "OPEN24HOUR": "CAD 0.2301", - "HIGH24HOUR": "CAD 0.2554", - "LOW24HOUR": "CAD 0.2245", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "CAD 12,903.4", - "OPENHOUR": "CAD 0.2341", - "HIGHHOUR": "CAD 0.2355", - "LOWHOUR": "CAD 0.2308", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "CAD 1,255,581.7", - "CHANGE24HOUR": "CAD 0.0037", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "CAD 0.0045", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "CAD -0.00025", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "CAD 25.30 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "CAD 1.84 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "CAD 1.84 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "CHF": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "CHF", - "MARKET": "CryptoCompare Index", - "PRICE": "CHF 0.1720", - "LASTUPDATE": "Just now", - "MEDIAN": "CHF 0.1747", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "CHF 1.20", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "CHF 1,821,306.4", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "CHF 923,876.5", - "OPENDAY": "CHF 0.1687", - "HIGHDAY": "CHF 0.1870", - "LOWDAY": "CHF 0.1652", - "OPEN24HOUR": "CHF 0.1693", - "HIGH24HOUR": "CHF 0.1879", - "LOW24HOUR": "CHF 0.1651", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "CHF 9,492.33", - "OPENHOUR": "CHF 0.1722", - "HIGHHOUR": "CHF 0.1733", - "LOWHOUR": "CHF 0.1698", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "CHF 923,661.5", - "CHANGE24HOUR": "CHF 0.0027", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "CHF 0.0033", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "CHF -0.00018", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "CHF 18.61 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "CHF 1.35 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "CHF 1.35 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "CNY": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "¥", - "MARKET": "CryptoCompare Index", - "PRICE": "¥ 1.27", - "LASTUPDATE": "Just now", - "MEDIAN": "¥ 1.29", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "¥ 8.88", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "¥ 13,436,902.5", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "¥ 6,816,007.6", - "OPENDAY": "¥ 1.24", - "HIGHDAY": "¥ 1.38", - "LOWDAY": "¥ 1.22", - "OPEN24HOUR": "¥ 1.25", - "HIGH24HOUR": "¥ 1.39", - "LOW24HOUR": "¥ 1.22", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "¥ 70,030.8", - "OPENHOUR": "¥ 1.27", - "HIGHHOUR": "¥ 1.28", - "LOWHOUR": "¥ 1.25", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "¥ 6,814,421.7", - "CHANGE24HOUR": "¥ 0.020", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "¥ 0.025", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "¥ -0.0013", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "¥ 137.31 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "¥ 9.97 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "¥ 9.97 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "EUR": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "€", - "MARKET": "CryptoCompare Index", - "PRICE": "€ 0.1610", - "LASTUPDATE": "Just now", - "MEDIAN": "€ 0.1635", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "€ 1.13", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "€ 1,704,730.9", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "€ 864,742.4", - "OPENDAY": "€ 0.1579", - "HIGHDAY": "€ 0.1750", - "LOWDAY": "€ 0.1547", - "OPEN24HOUR": "€ 0.1585", - "HIGH24HOUR": "€ 0.1759", - "LOW24HOUR": "€ 0.1546", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "€ 8,884.76", - "OPENHOUR": "€ 0.1612", - "HIGHHOUR": "€ 0.1622", - "LOWHOUR": "€ 0.1589", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "€ 864,541.2", - "CHANGE24HOUR": "€ 0.0025", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "€ 0.0031", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "€ -0.00017", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "€ 17.42 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "€ 1.27 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "€ 1.26 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "GBP": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "£", - "MARKET": "CryptoCompare Index", - "PRICE": "£ 0.1365", - "LASTUPDATE": "Just now", - "MEDIAN": "£ 0.1387", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "£ 0.9557", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "£ 1,445,627.5", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "£ 733,309.5", - "OPENDAY": "£ 0.1339", - "HIGHDAY": "£ 0.1484", - "LOWDAY": "£ 0.1312", - "OPEN24HOUR": "£ 0.1344", - "HIGH24HOUR": "£ 0.1491", - "LOW24HOUR": "£ 0.1311", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "£ 7,534.35", - "OPENHOUR": "£ 0.1367", - "HIGHHOUR": "£ 0.1375", - "LOWHOUR": "£ 0.1347", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "£ 733,138.8", - "CHANGE24HOUR": "£ 0.0022", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "£ 0.0027", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "£ -0.00014", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "£ 14.77 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "£ 1.07 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "£ 1.07 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "HKD": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "HKD", - "MARKET": "CryptoCompare Index", - "PRICE": "HKD 1.40", - "LASTUPDATE": "Just now", - "MEDIAN": "HKD 1.42", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "HKD 9.77", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "HKD 14,777,570.9", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "HKD 7,496,075.5", - "OPENDAY": "HKD 1.37", - "HIGHDAY": "HKD 1.52", - "LOWDAY": "HKD 1.34", - "OPEN24HOUR": "HKD 1.37", - "HIGH24HOUR": "HKD 1.52", - "LOW24HOUR": "HKD 1.34", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "HKD 77,018.1", - "OPENHOUR": "HKD 1.40", - "HIGHHOUR": "HKD 1.41", - "LOWHOUR": "HKD 1.38", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "HKD 7,494,331.4", - "CHANGE24HOUR": "HKD 0.022", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "HKD 0.027", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "HKD -0.0015", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "HKD 151.01 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "HKD 10.97 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "HKD 10.96 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "IDR": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "IDR", - "MARKET": "CryptoCompare Index", - "PRICE": "IDR 2,431.60", - "LASTUPDATE": "Just now", - "MEDIAN": "IDR 2,469.91", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "IDR 17,021.2", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "IDR 25,746,842,782.4", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "IDR 13,060,352,050.8", - "OPENDAY": "IDR 2,384.35", - "HIGHDAY": "IDR 2,643.60", - "LOWDAY": "IDR 2,335.82", - "OPEN24HOUR": "IDR 2,393.29", - "HIGH24HOUR": "IDR 2,656.37", - "LOW24HOUR": "IDR 2,334.54", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "IDR 134,187,984.3", - "OPENHOUR": "IDR 2,434.15", - "HIGHHOUR": "IDR 2,449.48", - "LOWHOUR": "IDR 2,399.67", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "IDR 13,057,313,275.5", - "CHANGE24HOUR": "IDR 38.31", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "IDR 47.25", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "IDR -2.55", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "IDR 263.10 B", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "IDR 19.11 B", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "IDR 19.10 B", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "INR": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "₹", - "MARKET": "CryptoCompare Index", - "PRICE": "₹ 12.88", - "LASTUPDATE": "Just now", - "MEDIAN": "₹ 13.09", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "₹ 90.18", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "₹ 136,415,325.1", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "₹ 69,198,083.3", - "OPENDAY": "₹ 12.63", - "HIGHDAY": "₹ 14.01", - "LOWDAY": "₹ 12.38", - "OPEN24HOUR": "₹ 12.68", - "HIGH24HOUR": "₹ 14.07", - "LOW24HOUR": "₹ 12.37", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "₹ 710,972.5", - "OPENHOUR": "₹ 12.90", - "HIGHHOUR": "₹ 12.98", - "LOWHOUR": "₹ 12.71", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "₹ 69,181,982.8", - "CHANGE24HOUR": "₹ 0.20", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "₹ 0.25", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "₹ -0.014", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "₹ 1.39 B", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "₹ 101.23 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "₹ 101.22 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "JPY": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "¥", - "MARKET": "CryptoCompare Index", - "PRICE": "¥ 19.32", - "LASTUPDATE": "Just now", - "MEDIAN": "¥ 19.63", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "¥ 135.25", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "¥ 204,587,362.2", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "¥ 103,779,053.5", - "OPENDAY": "¥ 18.95", - "HIGHDAY": "¥ 21.01", - "LOWDAY": "¥ 18.56", - "OPEN24HOUR": "¥ 19.02", - "HIGH24HOUR": "¥ 21.11", - "LOW24HOUR": "¥ 18.55", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "¥ 1,066,273.1", - "OPENHOUR": "¥ 19.34", - "HIGHHOUR": "¥ 19.46", - "LOWHOUR": "¥ 19.07", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "¥ 103,754,907.1", - "CHANGE24HOUR": "¥ 0.30", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "¥ 0.38", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "¥ -0.020", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "¥ 2.09 B", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "¥ 151.82 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "¥ 151.80 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "KRW": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "₩", - "MARKET": "CryptoCompare Index", - "PRICE": "₩ 286.00", - "LASTUPDATE": "4 min ago", - "MEDIAN": "₩ 286.00", - "LASTVOLUME": "ARK 2,000.00", - "LASTVOLUMETO": "₩ 572,000.0", - "LASTTRADEID": "15807328120001", - "VOLUMEDAY": "ARK 1,938,806.9", - "VOLUMEDAYTO": "₩ 556,795,415.2", - "VOLUME24HOUR": "ARK 2,340,013.1", - "VOLUME24HOURTO": "₩ 665,701,173.3", - "OPENDAY": "₩ 273.00", - "HIGHDAY": "₩ 304.00", - "LOWDAY": "₩ 271.00", - "OPEN24HOUR": "₩ 270.00", - "HIGH24HOUR": "₩ 304.00", - "LOW24HOUR": "₩ 267.00", - "LASTMARKET": "Upbit", - "VOLUMEHOUR": "ARK 10,396.8", - "VOLUMEHOURTO": "₩ 2,974,933.4", - "OPENHOUR": "₩ 285.00", - "HIGHHOUR": "₩ 287.00", - "LOWHOUR": "₩ 285.00", - "TOPTIERVOLUME24HOUR": "ARK 2,340,013.1", - "TOPTIERVOLUME24HOURTO": "₩ 665,701,173.3", - "CHANGE24HOUR": "₩ 16.00", - "CHANGEPCT24HOUR": "5.93", - "CHANGEDAY": "₩ 13.00", - "CHANGEPCTDAY": "4.76", - "CHANGEHOUR": "₩ 1.0", - "CHANGEPCTHOUR": "0.35", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "₩ 30.95 B", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "₩ 2.24 B", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "₩ 2.24 B", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "direct", - "CONVERSIONSYMBOL": "" - }, - "MXN": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "MXN", - "MARKET": "CryptoCompare Index", - "PRICE": "MXN 3.33", - "LASTUPDATE": "Just now", - "MEDIAN": "MXN 3.39", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "MXN 23.34", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "MXN 35,306,695.3", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "MXN 17,909,686.0", - "OPENDAY": "MXN 3.27", - "HIGHDAY": "MXN 3.63", - "LOWDAY": "MXN 3.20", - "OPEN24HOUR": "MXN 3.28", - "HIGH24HOUR": "MXN 3.64", - "LOW24HOUR": "MXN 3.20", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "MXN 184,012.2", - "OPENHOUR": "MXN 3.34", - "HIGHHOUR": "MXN 3.36", - "LOWHOUR": "MXN 3.29", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "MXN 17,905,518.9", - "CHANGE24HOUR": "MXN 0.053", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "MXN 0.065", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "MXN -0.0035", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "MXN 360.80 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "MXN 26.20 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "MXN 26.20 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "RUB": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "₽", - "MARKET": "CryptoCompare Index", - "PRICE": "₽ 11.28", - "LASTUPDATE": "Just now", - "MEDIAN": "₽ 11.45", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "₽ 78.93", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "₽ 119,391,490.9", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "₽ 60,562,567.5", - "OPENDAY": "₽ 11.06", - "HIGHDAY": "₽ 12.26", - "LOWDAY": "₽ 10.83", - "OPEN24HOUR": "₽ 11.10", - "HIGH24HOUR": "₽ 12.32", - "LOW24HOUR": "₽ 10.83", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "₽ 622,247.3", - "OPENHOUR": "₽ 11.29", - "HIGHHOUR": "₽ 11.36", - "LOWHOUR": "₽ 11.13", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "₽ 60,548,476.3", - "CHANGE24HOUR": "₽ 0.18", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "₽ 0.22", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "₽ -0.012", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "₽ 1.22 B", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "₽ 88.60 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "₽ 88.58 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - }, - "USD": { - "FROMSYMBOL": "ARK", - "TOSYMBOL": "$", - "MARKET": "CryptoCompare Index", - "PRICE": "$ 0.1780", - "LASTUPDATE": "Just now", - "MEDIAN": "$ 0.1809", - "LASTVOLUME": "ARK 7.00", - "LASTVOLUMETO": "$ 1.25", - "LASTTRADEID": "4118615", - "VOLUMEDAY": "ARK 10,588,443.7", - "VOLUMEDAYTO": "$ 1,885,228.9", - "VOLUME24HOUR": "ARK 5,371,097.5", - "VOLUME24HOURTO": "$ 956,301.9", - "OPENDAY": "$ 0.1746", - "HIGHDAY": "$ 0.1936", - "LOWDAY": "$ 0.1710", - "OPEN24HOUR": "$ 0.1752", - "HIGH24HOUR": "$ 0.1945", - "LOW24HOUR": "$ 0.1709", - "LASTMARKET": "Binance", - "VOLUMEHOUR": "ARK 55,185.1", - "VOLUMEHOURTO": "$ 9,825.48", - "OPENHOUR": "$ 0.1782", - "HIGHHOUR": "$ 0.1794", - "LOWHOUR": "$ 0.1757", - "TOPTIERVOLUME24HOUR": "ARK 5,369,847.8", - "TOPTIERVOLUME24HOURTO": "$ 956,079.4", - "CHANGE24HOUR": "$ 0.0028", - "CHANGEPCT24HOUR": "1.60", - "CHANGEDAY": "$ 0.0035", - "CHANGEPCTDAY": "1.98", - "CHANGEHOUR": "$ -0.00019", - "CHANGEPCTHOUR": "-0.10", - "SUPPLY": "ARK 108,202,084.0", - "MKTCAP": "$ 19.26 M", - "TOTALVOLUME24H": "ARK 7.86 M", - "TOTALVOLUME24HTO": "$ 1.40 M", - "TOTALTOPTIERVOLUME24H": "ARK 7.86 M", - "TOTALTOPTIERVOLUME24HTO": "$ 1.40 M", - "IMAGEURL": "/media/351931/ark.png", - "CONVERSIONTYPE": "multiply", - "CONVERSIONSYMBOL": "BTC" - } - } - } -} diff --git a/packages/markets/test/fixtures/cryptocompare/price.json b/packages/markets/test/fixtures/cryptocompare/price.json deleted file mode 100644 index c9ad378d..00000000 --- a/packages/markets/test/fixtures/cryptocompare/price.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "USD": 1.635 -} diff --git a/packages/profiles/source/environment.test.ts b/packages/profiles/source/environment.test.ts index c6ba6fcf..bfc721bc 100644 --- a/packages/profiles/source/environment.test.ts +++ b/packages/profiles/source/environment.test.ts @@ -214,7 +214,7 @@ describe("Environment", ({ beforeEach, it, assert, nock, loader }) => { EXCHANGE_CURRENCY: "BTC", FALLBACK_TO_DEFAULT_NODES: true, LOCALE: "en-US", - MARKET_PROVIDER: "cryptocompare", + MARKET_PROVIDER: "coingecko", NAME: "John Doe", THEME: "light", TIME_FORMAT: "h:mm A", @@ -258,7 +258,7 @@ describe("Environment", ({ beforeEach, it, assert, nock, loader }) => { EXCHANGE_CURRENCY: "BTC", FALLBACK_TO_DEFAULT_NODES: true, LOCALE: "en-US", - MARKET_PROVIDER: "cryptocompare", + MARKET_PROVIDER: "coingecko", NAME: "John Doe", THEME: "light", TIME_FORMAT: "h:mm A", diff --git a/packages/profiles/source/exchange-rate.service.test.ts b/packages/profiles/source/exchange-rate.service.test.ts index ac8e29ec..c2e3ffe0 100644 --- a/packages/profiles/source/exchange-rate.service.test.ts +++ b/packages/profiles/source/exchange-rate.service.test.ts @@ -28,10 +28,9 @@ describe("ExchangeRateService", ({ beforeEach, afterEach, it, assert, nock, load .reply(200, loader.json("test/fixtures/client/delegates-1.json")) .get("/api/delegates?page=2") .reply(200, loader.json("test/fixtures/client/delegates-2.json")) - // CryptoCompare - .get("/data/histoday") - .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) .persist(); const profileRepository = new ProfileRepository(); @@ -50,7 +49,7 @@ describe("ExchangeRateService", ({ beforeEach, afterEach, it, assert, nock, load container.constant(Identifiers.ExchangeRateService, context.subject); context.profile = await profileRepository.create("John Doe"); - context.profile.settings().set(ProfileSetting.MarketProvider, "cryptocompare"); + context.profile.settings().set(ProfileSetting.MarketProvider, "coingecko"); context.wallet = await importByMnemonic(context.profile, identity.mnemonic, "ARK", "ark.devnet"); context.wallet.data().set(WalletData.Balance, { available: 1e8, fees: 1e8 }); @@ -61,9 +60,12 @@ describe("ExchangeRateService", ({ beforeEach, afterEach, it, assert, nock, load it("should sync a coin for specific profile with wallets argument", async (context) => { nock.fake() - .get("/data/dayAvg") + .get("/api/v3/coins/dark/history") + .query(true) + .reply(200, { market_data: { current_price: { btc: 0.000_050_48 } } }) + .get("/api/v3/coins/dark/market_chart") .query(true) - .reply(200, { BTC: 0.000_050_48, ConversionType: { conversionSymbol: "", type: "direct" } }) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); await context.subject.syncAll(context.profile, "DARK"); @@ -75,9 +77,12 @@ describe("ExchangeRateService", ({ beforeEach, afterEach, it, assert, nock, load it("should sync a coin for specific profile without wallets argument", async (context) => { nock.fake() - .get("/data/dayAvg") + .get("/api/v3/coins/dark/history") + .query(true) + .reply(200, { market_data: { current_price: { btc: 0.000_021_34 } } }) + .get("/api/v3/coins/dark/market_chart") .query(true) - .reply(200, { BTC: 0.000_021_34, ConversionType: { conversionSymbol: "", type: "direct" } }) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); await context.subject.syncAll(context.profile, "DARK"); @@ -97,12 +102,15 @@ describe("ExchangeRateService", ({ beforeEach, afterEach, it, assert, nock, load it("should store exchange rates and currency in profile wallets if undefined", async (context) => { nock.fake() - .get("/data/dayAvg") + .get("/api/v3/coins/dark/history") .query(true) - .reply(200, { BTC: 0.000_050_48, ConversionType: { conversionSymbol: "", type: "direct" } }) + .reply(200, { market_data: { current_price: { btc: 0.000_050_48 } } }) + .get("/api/v3/coins/dark/market_chart") + .query(true) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); - context.profile.settings().set(ProfileSetting.MarketProvider, "cryptocompare"); + context.profile.settings().set(ProfileSetting.MarketProvider, "coingecko"); await context.subject.syncAll(context.profile, "DARK"); assert.is(context.wallet.convertedBalance(), 0.000_050_48); @@ -110,20 +118,23 @@ describe("ExchangeRateService", ({ beforeEach, afterEach, it, assert, nock, load it("should cache historic exchange rates", async (context) => { nock.fake() - .get("/data/dayAvg") + .get("/api/v3/coins/dark/history") + .query(true) + .reply(200, { market_data: { current_price: { btc: 0.000_050_48 } } }) + .get("/api/v3/coins/dark/market_chart") .query(true) - .reply(200, { BTC: 0.000_050_48, ConversionType: { conversionSymbol: "", type: "direct" } }) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); - context.profile.settings().set(ProfileSetting.MarketProvider, "cryptocompare"); + context.profile.settings().set(ProfileSetting.MarketProvider, "coingecko"); await context.subject.syncAll(context.profile, "DARK"); assert.is(context.wallet.convertedBalance(), 0.000_050_48); nock.fake() - .get("/data/dayAvg") + .get("/api/v3/coins/dark/history") .query(true) - .reply(200, { BTC: 0.000_055_55, ConversionType: { conversionSymbol: "", type: "direct" } }) + .reply(200, { market_data: { current_price: { btc: 0.000_055_55 } } }) .persist(); await context.subject.syncAll(context.profile, "DARK"); diff --git a/packages/profiles/source/exchange-rate.service.ts b/packages/profiles/source/exchange-rate.service.ts index f250a1ed..015823a1 100644 --- a/packages/profiles/source/exchange-rate.service.ts +++ b/packages/profiles/source/exchange-rate.service.ts @@ -38,7 +38,7 @@ export class ExchangeRateService implements IExchangeRateService { ).historicalPrice({ currency: exchangeCurrency, dateFormat: "YYYY-MM-DD", - days: 2000, + days: 365, token: currency, // @TODO: this might cause issues with certain providers. Should allow for an "all" option to aggregate all pages without knowing the specific number type: "day", diff --git a/packages/profiles/source/multi-signature.test.ts b/packages/profiles/source/multi-signature.test.ts index 87878d29..fff0c278 100644 --- a/packages/profiles/source/multi-signature.test.ts +++ b/packages/profiles/source/multi-signature.test.ts @@ -60,10 +60,12 @@ describe("MultiSignature", ({ assert, it, stub, loader, nock, beforeAll, beforeE .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/ark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/portfolio.test.ts b/packages/profiles/source/portfolio.test.ts index 63d69cf8..c685f323 100644 --- a/packages/profiles/source/portfolio.test.ts +++ b/packages/profiles/source/portfolio.test.ts @@ -31,10 +31,22 @@ describeWithContext( .reply(200, loader.json("test/fixtures/client/wallet.json")) .get("/api/wallets/DQzosAzwyYStw2bUeUTCUnqiMonEz9ER2o") .reply(200, loader.json("test/fixtures/client/wallet.json")) - // CryptoCompare - .get("/data/histoday") + + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/ark/history") + .query(true) + .reply(200, loader.json("test/fixtures/markets/coingecko/history.json")) + .get("/api/v3/coins/ark/history") + .query(true) + .reply(200, loader.json("test/fixtures/markets/coingecko/history-ark.json")) + .get("/api/v3/coins/ark/market_chart") + .query(true) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) + .get("/api/v3/coins/ark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); @@ -49,12 +61,6 @@ describeWithContext( }); it("should aggregate the balances of all wallets", async (context) => { - nock.fake() - .get("/data/dayAvg") - .query(true) - .reply(200, { BTC: 0.000_050_48, ConversionType: { conversionSymbol: "", type: "direct" } }) - .persist(); - const [a, b, c] = await Promise.all([ importByMnemonic( context.profile, diff --git a/packages/profiles/source/profile.initialiser.ts b/packages/profiles/source/profile.initialiser.ts index ad458d4c..3af39d9c 100644 --- a/packages/profiles/source/profile.initialiser.ts +++ b/packages/profiles/source/profile.initialiser.ts @@ -37,7 +37,7 @@ export class ProfileInitialiser implements IProfileInitialiser { this.#profile.settings().set(ProfileSetting.FallbackToDefaultNodes, true); this.#profile.settings().set(ProfileSetting.ExchangeCurrency, "BTC"); this.#profile.settings().set(ProfileSetting.Locale, "en-US"); - this.#profile.settings().set(ProfileSetting.MarketProvider, "cryptocompare"); + this.#profile.settings().set(ProfileSetting.MarketProvider, "coingecko"); this.#profile.settings().set(ProfileSetting.Name, name); this.#profile.settings().set(ProfileSetting.Theme, theme); this.#profile.settings().set(ProfileSetting.TimeFormat, "h:mm A"); diff --git a/packages/profiles/source/profile.validator.ts b/packages/profiles/source/profile.validator.ts index 0e11757f..e759afa6 100644 --- a/packages/profiles/source/profile.validator.ts +++ b/packages/profiles/source/profile.validator.ts @@ -104,7 +104,7 @@ export class ProfileValidator implements IProfileValidator { [ProfileSetting.FallbackToDefaultNodes]: Joi.boolean().default(true), [ProfileSetting.ExchangeCurrency]: Joi.string().required(), [ProfileSetting.Locale]: Joi.string().required(), - [ProfileSetting.MarketProvider]: Joi.string().allow("coincap", "cryptocompare", "coingecko").required(), + [ProfileSetting.MarketProvider]: Joi.string().allow("coincap", "coingecko").required(), [ProfileSetting.Name]: Joi.string().required(), [ProfileSetting.NewsFilters]: Joi.string(), [ProfileSetting.Password]: Joi.string(), diff --git a/packages/profiles/source/serialiser.test.ts b/packages/profiles/source/serialiser.test.ts index 11348d29..fb5a094d 100644 --- a/packages/profiles/source/serialiser.test.ts +++ b/packages/profiles/source/serialiser.test.ts @@ -99,10 +99,12 @@ describe("WalletSerialiser", ({ beforeAll, beforeEach, assert, loader, each, noc .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/ark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/transaction-index.test.ts b/packages/profiles/source/transaction-index.test.ts index 807c0b42..58911a7b 100644 --- a/packages/profiles/source/transaction-index.test.ts +++ b/packages/profiles/source/transaction-index.test.ts @@ -61,10 +61,12 @@ describe("TransactionIndex", ({ beforeAll, beforeEach, nock, assert, it, loader .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/ark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/transaction.dto.test.ts b/packages/profiles/source/transaction.dto.test.ts index 4f875497..2507583e 100644 --- a/packages/profiles/source/transaction.dto.test.ts +++ b/packages/profiles/source/transaction.dto.test.ts @@ -63,20 +63,22 @@ const beforeEachCallback = async (context, { loader, nock, stub }) => { .reply(200, loader.json("test/fixtures/client/delegates-2.json")) .get("/api/ipfs/QmR45FmbVVrixReBwJkhEKde2qwHYaQzGxu4ZoDeswuF9c") .reply(200, { data: "ipfs-content" }) - // CryptoCompare - .get("/data/dayAvg") + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/dark/history") .query(true) - .reply(200, { BTC: 0.000_050_48, ConversionType: { conversionSymbol: "", type: "direct" } }) - .get("/data/histoday") + .reply(200, loader.json("test/fixtures/markets/coingecko/history.json")) + .get("/api/v3/coins/dark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); context.profile = new Profile({ avatar: "avatar", data: "", id: "profile-id", name: "name" }); context.profile.settings().set(ProfileSetting.Name, "John Doe"); context.profile.settings().set(ProfileSetting.ExchangeCurrency, "BTC"); - context.profile.settings().set(ProfileSetting.MarketProvider, "cryptocompare"); + context.profile.settings().set(ProfileSetting.MarketProvider, "coingecko"); context.wallet = await importByMnemonic(context.profile, mnemonic, "ARK", "ark.devnet"); diff --git a/packages/profiles/source/vote-registry.test.ts b/packages/profiles/source/vote-registry.test.ts index 27bbd6f7..fc6b651e 100644 --- a/packages/profiles/source/vote-registry.test.ts +++ b/packages/profiles/source/vote-registry.test.ts @@ -57,10 +57,12 @@ describe("VoteRegistry", ({ beforeAll, beforeEach, loader, nock, assert, it }) = .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/ark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/wallet.gate.test.ts b/packages/profiles/source/wallet.gate.test.ts index fbf74ca1..72e84602 100644 --- a/packages/profiles/source/wallet.gate.test.ts +++ b/packages/profiles/source/wallet.gate.test.ts @@ -57,10 +57,6 @@ describe("WalletGate", ({ beforeAll, beforeEach, loader, nock, assert, it }) => .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") - .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/wallet.mutator.test.ts b/packages/profiles/source/wallet.mutator.test.ts index 3345ffa8..4cf583f0 100644 --- a/packages/profiles/source/wallet.mutator.test.ts +++ b/packages/profiles/source/wallet.mutator.test.ts @@ -59,10 +59,6 @@ describe("WalletMutator", ({ beforeAll, beforeEach, loader, nock, assert, stub, .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") - .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/wallet.synchroniser.test.ts b/packages/profiles/source/wallet.synchroniser.test.ts index c090f7b0..57955903 100644 --- a/packages/profiles/source/wallet.synchroniser.test.ts +++ b/packages/profiles/source/wallet.synchroniser.test.ts @@ -57,10 +57,6 @@ describe("WalletSynchroniser", ({ beforeAll, beforeEach, loader, nock, assert, s .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") - .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) .persist(); const profileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/source/wallet.test.ts b/packages/profiles/source/wallet.test.ts index 87240971..ca3b530c 100644 --- a/packages/profiles/source/wallet.test.ts +++ b/packages/profiles/source/wallet.test.ts @@ -70,10 +70,16 @@ describe("Wallet", ({ beforeAll, beforeEach, loader, nock, assert, stub, it }) = .get("/api/transactions") .query(true) .reply(200, () => loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") + + // CoinGecko + .get("/api/v3/coins/list") + .reply(200, loader.json("test/fixtures/markets/coingecko/coins-list.json")) + .get("/api/v3/coins/ark/history") + .query(true) + .reply(200, loader.json("test/fixtures/markets/coingecko/history.json")) + .get("/api/v3/coins/ark/market_chart") .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) + .reply(200, loader.json("test/fixtures/markets/coingecko/market-chart.json")) .persist(); // Make sure we don't persist any data between runs @@ -128,11 +134,11 @@ describe("Wallet", ({ beforeAll, beforeEach, loader, nock, assert, stub, it }) = }); it("should have a converted balance if it is a live wallet", async (context) => { - // cryptocompare + // CoinGecko nock.fake() - .get("/data/dayAvg") + .get("/api/v3/coins/dark/history") .query(true) - .reply(200, { BTC: 0.000_050_48, ConversionType: { conversionSymbol: "", type: "direct" } }) + .reply(200, { market_data: { current_price: { btc: 0.000_050_48 } } }) .persist(); const wallet = await importByMnemonic(context.profile, identity.mnemonic, "ARK", "ark.devnet"); @@ -143,9 +149,6 @@ describe("Wallet", ({ beforeAll, beforeEach, loader, nock, assert, stub, it }) = assert.number(wallet.convertedBalance()); assert.is(wallet.convertedBalance(), 0); - - await container.get(Identifiers.ExchangeRateService).syncAll(context.profile, "DARK"); - assert.is(wallet.convertedBalance(), 0.000_050_48); }); it("should not have a converted balance if it is a live wallet but has no exchange rate", async (context) => { diff --git a/packages/profiles/source/wif.test.ts b/packages/profiles/source/wif.test.ts index eadbffec..78941b4e 100644 --- a/packages/profiles/source/wif.test.ts +++ b/packages/profiles/source/wif.test.ts @@ -61,10 +61,6 @@ describe("WIF", ({ beforeAll, beforeEach, each, nock, assert, it, loader }) => { .get("/api/transactions") .query(true) .reply(200, loader.json("test/fixtures/client/transactions.json")) - // CryptoCompare - .get("/data/histoday") - .query(true) - .reply(200, loader.json("test/fixtures/markets/cryptocompare/historical.json")) .persist(); const profileRepository: IProfileRepository = container.get(Identifiers.ProfileRepository); diff --git a/packages/profiles/test/fixtures/env-storage.json b/packages/profiles/test/fixtures/env-storage.json index 0317a6c5..c41e9cc1 100644 --- a/packages/profiles/test/fixtures/env-storage.json +++ b/packages/profiles/test/fixtures/env-storage.json @@ -5,7 +5,7 @@ "name": "John Doe", "avatar": "", "password": null, - "data": "eyJpZCI6ImU4OTU1ZjMzLTU0NDItNGNlMi04MDI0LTc1MDQzNzI2NDQ0ZiIsImNvbnRhY3RzIjp7ImE3MGViNjY4LWRkOTgtNDQwNy1iMTNjLWU5MWFmZGJmZDJkNiI6eyJpZCI6ImE3MGViNjY4LWRkOTgtNDQwNy1iMTNjLWU5MWFmZGJmZDJkNiIsIm5hbWUiOiJKYW5lIERvZSIsInN0YXJyZWQiOmZhbHNlLCJhZGRyZXNzZXMiOlt7ImlkIjoiMmFkMDcyZDItNjAwYy00MTNiLTkxZDAtNGZjNzk5OGVhZjk2IiwiY29pbiI6IkFSSyIsIm5ldHdvcmsiOiJhcmsuZGV2bmV0IiwiYWRkcmVzcyI6IkQ2aThQNU40NHJGdG82TTZSQUx5VVhMTHM3UTFBMVdSRVcifV19fSwiZGF0YSI6eyJMQVRFU1RfTUlHUkFUSU9OIjoiMC4wLjAifSwiZXhjaGFuZ2VUcmFuc2FjdGlvbnMiOnt9LCJub3RpZmljYXRpb25zIjp7ImUzNmI1YjlkLTVmODctNDljMC1hODY4LTE1ODA5YWM3OGVkNyI6eyJpZCI6ImUzNmI1YjlkLTVmODctNDljMC1hODY4LTE1ODA5YWM3OGVkNyIsImljb24iOiJ3YXJuaW5nIiwibmFtZSI6IkxlZGdlciBVcGRhdGUgQXZhaWxhYmxlIiwiYm9keSI6Ii4uLiIsInR5cGUiOiJsZWRnZXIiLCJhY3Rpb24iOiJSZWFkIENoYW5nZWxvZyJ9fSwicGVlcnMiOnt9LCJwbHVnaW5zIjp7fSwic2V0dGluZ3MiOnsiQUNDRU5UX0NPTE9SIjoiZ3JlZW4iLCJBRFZBTkNFRF9NT0RFIjpmYWxzZSwiQVVUT01BVElDX1NJR05fT1VUX1BFUklPRCI6MTUsIkJJUDM5X0xPQ0FMRSI6ImVuZ2xpc2giLCJEQVNIQk9BUkRfVFJBTlNBQ1RJT05fSElTVE9SWSI6ZmFsc2UsIkRPX05PVF9TSE9XX0ZFRV9XQVJOSU5HIjpmYWxzZSwiRVJST1JfUkVQT1JUSU5HIjpmYWxzZSwiRVhDSEFOR0VfQ1VSUkVOQ1kiOiJCVEMiLCJMT0NBTEUiOiJlbi1VUyIsIk1BUktFVF9QUk9WSURFUiI6ImNyeXB0b2NvbXBhcmUiLCJOQU1FIjoiSm9obiBEb2UiLCJTQ1JFRU5TSE9UX1BST1RFQ1RJT04iOnRydWUsIlRIRU1FIjoibGlnaHQiLCJUSU1FX0ZPUk1BVCI6Img6bW0gQSIsIlVTRV9URVNUX05FVFdPUktTIjpmYWxzZX0sIndhbGxldHMiOnsiNzNlZjliM2UtMzQ3ZC00OWE4LTg0MDktNzA1YTNjOWQxMWU5Ijp7ImlkIjoiNzNlZjliM2UtMzQ3ZC00OWE4LTg0MDktNzA1YTNjOWQxMWU5IiwiZGF0YSI6eyJDT0lOIjoiQVJLIiwiTkVUV09SSyI6ImFyay5kZXZuZXQiLCJBRERSRVNTIjoiRDYxbWZTZ2d6YnZRZ1RVZTZKaFlLSDJkb0hhcUozRHlpYiIsIlBVQkxJQ19LRVkiOiIwMzQxNTFhM2VjNDZiNTY3MGE2ODJiMGE2MzM5NGY4NjM1ODdkMWJjOTc0ODNiMWI2YzcwZWI1OGU3ZjBhZWQxOTIiLCJCQUxBTkNFIjp7ImF2YWlsYWJsZSI6IjU1ODI3MDkzNDQ0NTU2IiwiZmVlcyI6IjU1ODI3MDkzNDQ0NTU2In0sIkJST0FEQ0FTVEVEX1RSQU5TQUNUSU9OUyI6e30sIkRFUklWQVRJT05fVFlQRSI6ImJpcDM5IiwiSU1QT1JUX01FVEhPRCI6IkJJUDM5Lk1ORU1PTklDIiwiU0VRVUVOQ0UiOiIxMTE5MzIiLCJTSUdORURfVFJBTlNBQ1RJT05TIjp7fSwiVk9URVMiOltdLCJWT1RFU19BVkFJTEFCTEUiOjAsIlZPVEVTX1VTRUQiOjAsIldBSVRJTkdfRk9SX09VUl9TSUdOQVRVUkVfVFJBTlNBQ1RJT05TIjp7fSwiV0FJVElOR19GT1JfT1RIRVJfU0lHTkFUVVJFU19UUkFOU0FDVElPTlMiOnt9LCJTVEFSUkVEIjpmYWxzZX0sInNldHRpbmdzIjp7IkFWQVRBUiI6IjxzdmcgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cInBpY2Fzc29cIiB3aWR0aD1cIjEwMFwiIGhlaWdodD1cIjEwMFwiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPjxzdHlsZT4ucGljYXNzbyBjaXJjbGV7bWl4LWJsZW5kLW1vZGU6c29mdC1saWdodDt9PC9zdHlsZT48cmVjdCBmaWxsPVwicmdiKDIzMywgMzAsIDk5KVwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiMTAwXCIvPjxjaXJjbGUgcj1cIjUwXCIgY3g9XCI2MFwiIGN5PVwiNDBcIiBmaWxsPVwicmdiKDEzOSwgMTk1LCA3NClcIi8+PGNpcmNsZSByPVwiNDVcIiBjeD1cIjBcIiBjeT1cIjMwXCIgZmlsbD1cInJnYigwLCAxODgsIDIxMilcIi8+PGNpcmNsZSByPVwiNDBcIiBjeD1cIjkwXCIgY3k9XCI1MFwiIGZpbGw9XCJyZ2IoMjU1LCAxOTMsIDcpXCIvPjwvc3ZnPiJ9fX19" + "data": "eyJpZCI6ICJlODk1NWYzMy01NDQyLTRjZTItODAyNC03NTA0MzcyNjQ0NGYiLCAiY29udGFjdHMiOiB7ImE3MGViNjY4LWRkOTgtNDQwNy1iMTNjLWU5MWFmZGJmZDJkNiI6IHsiaWQiOiAiYTcwZWI2NjgtZGQ5OC00NDA3LWIxM2MtZTkxYWZkYmZkMmQ2IiwgIm5hbWUiOiAiSmFuZSBEb2UiLCAic3RhcnJlZCI6IGZhbHNlLCAiYWRkcmVzc2VzIjogW3siaWQiOiAiMmFkMDcyZDItNjAwYy00MTNiLTkxZDAtNGZjNzk5OGVhZjk2IiwgImNvaW4iOiAiQVJLIiwgIm5ldHdvcmsiOiAiYXJrLmRldm5ldCIsICJhZGRyZXNzIjogIkQ2aThQNU40NHJGdG82TTZSQUx5VVhMTHM3UTFBMVdSRVcifV19fSwgImRhdGEiOiB7IkxBVEVTVF9NSUdSQVRJT04iOiAiMC4wLjAifSwgImV4Y2hhbmdlVHJhbnNhY3Rpb25zIjoge30sICJub3RpZmljYXRpb25zIjogeyJlMzZiNWI5ZC01Zjg3LTQ5YzAtYTg2OC0xNTgwOWFjNzhlZDciOiB7ImlkIjogImUzNmI1YjlkLTVmODctNDljMC1hODY4LTE1ODA5YWM3OGVkNyIsICJpY29uIjogIndhcm5pbmciLCAibmFtZSI6ICJMZWRnZXIgVXBkYXRlIEF2YWlsYWJsZSIsICJib2R5IjogIi4uLiIsICJ0eXBlIjogImxlZGdlciIsICJhY3Rpb24iOiAiUmVhZCBDaGFuZ2Vsb2cifX0sICJwZWVycyI6IHt9LCAicGx1Z2lucyI6IHt9LCAic2V0dGluZ3MiOiB7IkFDQ0VOVF9DT0xPUiI6ICJncmVlbiIsICJBRFZBTkNFRF9NT0RFIjogZmFsc2UsICJBVVRPTUFUSUNfU0lHTl9PVVRfUEVSSU9EIjogMTUsICJCSVAzOV9MT0NBTEUiOiAiZW5nbGlzaCIsICJEQVNIQk9BUkRfVFJBTlNBQ1RJT05fSElTVE9SWSI6IGZhbHNlLCAiRE9fTk9UX1NIT1dfRkVFX1dBUk5JTkciOiBmYWxzZSwgIkVSUk9SX1JFUE9SVElORyI6IGZhbHNlLCAiRVhDSEFOR0VfQ1VSUkVOQ1kiOiAiQlRDIiwgIkxPQ0FMRSI6ICJlbi1VUyIsICJNQVJLRVRfUFJPVklERVIiOiAiY29pbmdlY2tvIiwgIk5BTUUiOiAiSm9obiBEb2UiLCAiU0NSRUVOU0hPVF9QUk9URUNUSU9OIjogdHJ1ZSwgIlRIRU1FIjogImxpZ2h0IiwgIlRJTUVfRk9STUFUIjogImg6bW0gQSIsICJVU0VfVEVTVF9ORVRXT1JLUyI6IGZhbHNlfSwgIndhbGxldHMiOiB7IjczZWY5YjNlLTM0N2QtNDlhOC04NDA5LTcwNWEzYzlkMTFlOSI6IHsiaWQiOiAiNzNlZjliM2UtMzQ3ZC00OWE4LTg0MDktNzA1YTNjOWQxMWU5IiwgImRhdGEiOiB7IkNPSU4iOiAiQVJLIiwgIk5FVFdPUksiOiAiYXJrLmRldm5ldCIsICJBRERSRVNTIjogIkQ2MW1mU2dnemJ2UWdUVWU2SmhZS0gyZG9IYXFKM0R5aWIiLCAiUFVCTElDX0tFWSI6ICIwMzQxNTFhM2VjNDZiNTY3MGE2ODJiMGE2MzM5NGY4NjM1ODdkMWJjOTc0ODNiMWI2YzcwZWI1OGU3ZjBhZWQxOTIiLCAiQkFMQU5DRSI6IHsiYXZhaWxhYmxlIjogIjU1ODI3MDkzNDQ0NTU2IiwgImZlZXMiOiAiNTU4MjcwOTM0NDQ1NTYifSwgIkJST0FEQ0FTVEVEX1RSQU5TQUNUSU9OUyI6IHt9LCAiREVSSVZBVElPTl9UWVBFIjogImJpcDM5IiwgIklNUE9SVF9NRVRIT0QiOiAiQklQMzkuTU5FTU9OSUMiLCAiU0VRVUVOQ0UiOiAiMTExOTMyIiwgIlNJR05FRF9UUkFOU0FDVElPTlMiOiB7fSwgIlZPVEVTIjogW10sICJWT1RFU19BVkFJTEFCTEUiOiAwLCAiVk9URVNfVVNFRCI6IDAsICJXQUlUSU5HX0ZPUl9PVVJfU0lHTkFUVVJFX1RSQU5TQUNUSU9OUyI6IHt9LCAiV0FJVElOR19GT1JfT1RIRVJfU0lHTkFUVVJFU19UUkFOU0FDVElPTlMiOiB7fSwgIlNUQVJSRUQiOiBmYWxzZX0sICJzZXR0aW5ncyI6IHsiQVZBVEFSIjogIjxzdmcgdmVyc2lvbj1cIjEuMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cInBpY2Fzc29cIiB3aWR0aD1cIjEwMFwiIGhlaWdodD1cIjEwMFwiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPjxzdHlsZT4ucGljYXNzbyBjaXJjbGV7bWl4LWJsZW5kLW1vZGU6c29mdC1saWdodDt9PC9zdHlsZT48cmVjdCBmaWxsPVwicmdiKDIzMywgMzAsIDk5KVwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiMTAwXCIvPjxjaXJjbGUgcj1cIjUwXCIgY3g9XCI2MFwiIGN5PVwiNDBcIiBmaWxsPVwicmdiKDEzOSwgMTk1LCA3NClcIi8+PGNpcmNsZSByPVwiNDVcIiBjeD1cIjBcIiBjeT1cIjMwXCIgZmlsbD1cInJnYigwLCAxODgsIDIxMilcIi8+PGNpcmNsZSByPVwiNDBcIiBjeD1cIjkwXCIgY3k9XCI1MFwiIGZpbGw9XCJyZ2IoMjU1LCAxOTMsIDcpXCIvPjwvc3ZnPiJ9fX19" } }, "data": { diff --git a/packages/profiles/test/fixtures/markets/coingecko/coins-list.json b/packages/profiles/test/fixtures/markets/coingecko/coins-list.json new file mode 100644 index 00000000..461cffec --- /dev/null +++ b/packages/profiles/test/fixtures/markets/coingecko/coins-list.json @@ -0,0 +1,22 @@ +[ + { + "id": "ark", + "symbol": "ark", + "name": "ARK" + }, + { + "id": "bitcoin", + "symbol": "btc", + "name": "Bitcoin" + }, + { + "id": "ethereum", + "symbol": "eth", + "name": "Ethereum" + }, + { + "id": "dark", + "symbol": "dark", + "name": "Dark" + } +] diff --git a/packages/profiles/test/fixtures/markets/coingecko/history-ark.json b/packages/profiles/test/fixtures/markets/coingecko/history-ark.json new file mode 100644 index 00000000..3388ffa3 --- /dev/null +++ b/packages/profiles/test/fixtures/markets/coingecko/history-ark.json @@ -0,0 +1,8 @@ +{ + "market_data": { + "current_price": { + "btc": 0.00005048, + "usd": 3.21 + } + } +} diff --git a/packages/profiles/test/fixtures/markets/coingecko/history.json b/packages/profiles/test/fixtures/markets/coingecko/history.json new file mode 100644 index 00000000..3388ffa3 --- /dev/null +++ b/packages/profiles/test/fixtures/markets/coingecko/history.json @@ -0,0 +1,8 @@ +{ + "market_data": { + "current_price": { + "btc": 0.00005048, + "usd": 3.21 + } + } +} diff --git a/packages/profiles/test/fixtures/markets/coingecko/market-chart.json b/packages/profiles/test/fixtures/markets/coingecko/market-chart.json new file mode 100644 index 00000000..a1a53926 --- /dev/null +++ b/packages/profiles/test/fixtures/markets/coingecko/market-chart.json @@ -0,0 +1,38 @@ +{ + "prices": [ + [1719792000000, 0.45], + [1719878400000, 0.46], + [1719964800000, 0.44], + [1720051200000, 0.47], + [1720137600000, 0.48], + [1720224000000, 0.49], + [1720310400000, 0.5], + [1720396800000, 0.51], + [1720483200000, 0.52], + [1720569600000, 0.53] + ], + "market_caps": [ + [1719792000000, 45000000], + [1719878400000, 46000000], + [1719964800000, 44000000], + [1720051200000, 47000000], + [1720137600000, 48000000], + [1720224000000, 49000000], + [1720310400000, 50000000], + [1720396800000, 51000000], + [1720483200000, 52000000], + [1720569600000, 53000000] + ], + "total_volumes": [ + [1719792000000, 5000000], + [1719878400000, 5100000], + [1719964800000, 4900000], + [1720051200000, 5200000], + [1720137600000, 5300000], + [1720224000000, 5400000], + [1720310400000, 5500000], + [1720396800000, 5600000], + [1720483200000, 5700000], + [1720569600000, 5800000] + ] +}