aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Browne <stephenalexbrowne@gmail.com>2018-09-27 07:42:48 +0800
committerAlex Browne <stephenalexbrowne@gmail.com>2018-12-05 06:24:06 +0800
commit9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac (patch)
tree85afc226768cf0d2c0568b2db263b950831e7032
parent71a015f2aa32fedd3d3c5e9d5a3fa4eb272b2852 (diff)
downloaddexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.tar
dexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.tar.gz
dexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.tar.bz2
dexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.tar.lz
dexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.tar.xz
dexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.tar.zst
dexon-sol-tools-9ab55ccec0478e65f9d605aa2da7ed1fa13e01ac.zip
Add preliminary support for scraping orders from SRA endpoints (no pagination, only RR support for now)
-rw-r--r--packages/pipeline/package.json1
-rw-r--r--packages/pipeline/src/data_types/events/exchange_events.ts9
-rw-r--r--packages/pipeline/src/data_types/sra_order/index.ts54
-rw-r--r--packages/pipeline/src/entities/ExchangeCancelEvent.ts2
-rw-r--r--packages/pipeline/src/entities/ExchangeFillEvent.ts2
-rw-r--r--packages/pipeline/src/entities/SraOrder.ts40
-rw-r--r--packages/pipeline/src/index.ts30
-rw-r--r--packages/pipeline/src/utils/index.ts8
-rw-r--r--yarn.lock139
9 files changed, 255 insertions, 30 deletions
diff --git a/packages/pipeline/package.json b/packages/pipeline/package.json
index 6670938f2..c01b7f448 100644
--- a/packages/pipeline/package.json
+++ b/packages/pipeline/package.json
@@ -39,6 +39,7 @@
"typescript": "3.0.1"
},
"dependencies": {
+ "@0xproject/connect": "^2.0.4",
"@0xproject/contract-wrappers": "^1.0.1",
"@0xproject/order-utils": "^1.0.2",
"@0xproject/subproviders": "^2.0.2",
diff --git a/packages/pipeline/src/data_types/events/exchange_events.ts b/packages/pipeline/src/data_types/events/exchange_events.ts
index 2d4059a0e..a406d27fb 100644
--- a/packages/pipeline/src/data_types/events/exchange_events.ts
+++ b/packages/pipeline/src/data_types/events/exchange_events.ts
@@ -6,7 +6,6 @@ import {
} from '@0xproject/contract-wrappers';
import { assetDataUtils } from '@0xproject/order-utils';
import { AssetProxyId, ERC721AssetData } from '@0xproject/types';
-import { BigNumber } from '@0xproject/utils';
import { LogWithDecodedArgs } from 'ethereum-types';
import * as R from 'ramda';
@@ -15,6 +14,7 @@ import { EventsResponse } from '../../data_sources/etherscan';
import { ExchangeCancelEvent } from '../../entities/ExchangeCancelEvent';
import { ExchangeCancelUpToEvent } from '../../entities/ExchangeCancelUpToEvent';
import { ExchangeFillEvent } from '../../entities/ExchangeFillEvent';
+import { bigNumbertoStringOrNull } from '../../utils';
import { convertResponseToLogEntry, decodeLogEntry } from './event_utils';
@@ -130,10 +130,3 @@ export function _convertToExchangeCancelUpToEvent(
exchangeCancelUpToEvent.orderEpoch = eventLog.args.orderEpoch.toString();
return exchangeCancelUpToEvent;
}
-
-function bigNumbertoStringOrNull(n: BigNumber): string | null {
- if (n == null) {
- return null;
- }
- return n.toString();
-}
diff --git a/packages/pipeline/src/data_types/sra_order/index.ts b/packages/pipeline/src/data_types/sra_order/index.ts
new file mode 100644
index 000000000..b6364415c
--- /dev/null
+++ b/packages/pipeline/src/data_types/sra_order/index.ts
@@ -0,0 +1,54 @@
+import { APIOrder, OrdersResponse } from '@0xproject/connect';
+import { assetDataUtils, orderHashUtils } from '@0xproject/order-utils';
+import { AssetProxyId, ERC721AssetData } from '@0xproject/types';
+import * as R from 'ramda';
+
+import { SraOrder } from '../../entities/SraOrder';
+import { bigNumbertoStringOrNull } from '../../utils';
+
+export function parseSraOrders(rawOrdersResponse: OrdersResponse): SraOrder[] {
+ return R.map(_convertToEntity, rawOrdersResponse.records);
+}
+
+export function _convertToEntity(apiOrder: APIOrder): SraOrder {
+ // TODO(albrow): refactor out common asset data decoding code.
+ const makerAssetData = assetDataUtils.decodeAssetDataOrThrow(apiOrder.order.makerAssetData);
+ const makerAssetType = makerAssetData.assetProxyId === AssetProxyId.ERC20 ? 'erc20' : 'erc721';
+ const takerAssetData = assetDataUtils.decodeAssetDataOrThrow(apiOrder.order.takerAssetData);
+ const takerAssetType = takerAssetData.assetProxyId === AssetProxyId.ERC20 ? 'erc20' : 'erc721';
+
+ const sraOrder = new SraOrder();
+ sraOrder.exchangeAddress = apiOrder.order.exchangeAddress;
+ sraOrder.orderHashHex = orderHashUtils.getOrderHashHex(apiOrder.order);
+
+ // TODO(albrow): Set these fields to the correct values upstack.
+ sraOrder.lastUpdatedTimestamp = Date.now();
+ sraOrder.firstSeenTimestamp = Date.now();
+
+ sraOrder.makerAddress = apiOrder.order.makerAddress;
+ sraOrder.takerAddress = apiOrder.order.takerAddress;
+ sraOrder.feeRecipientAddress = apiOrder.order.feeRecipientAddress;
+ sraOrder.senderAddress = apiOrder.order.senderAddress;
+ sraOrder.makerAssetAmount = apiOrder.order.makerAssetAmount.toString();
+ sraOrder.takerAssetAmount = apiOrder.order.takerAssetAmount.toString();
+ sraOrder.makerFee = apiOrder.order.makerFee.toString();
+ sraOrder.takerFee = apiOrder.order.takerFee.toString();
+ sraOrder.expirationTimeSeconds = apiOrder.order.expirationTimeSeconds.toString();
+ sraOrder.salt = apiOrder.order.salt.toString();
+ sraOrder.signature = apiOrder.order.signature;
+
+ sraOrder.rawMakerAssetData = apiOrder.order.makerAssetData;
+ sraOrder.makerAssetType = makerAssetType;
+ sraOrder.makerAssetProxyId = makerAssetData.assetProxyId;
+ sraOrder.makerTokenAddress = makerAssetData.tokenAddress;
+ sraOrder.makerTokenId = bigNumbertoStringOrNull((makerAssetData as ERC721AssetData).tokenId);
+ sraOrder.rawTakerAssetData = apiOrder.order.takerAssetData;
+ sraOrder.takerAssetType = takerAssetType;
+ sraOrder.takerAssetProxyId = takerAssetData.assetProxyId;
+ sraOrder.takerTokenAddress = takerAssetData.tokenAddress;
+ sraOrder.takerTokenId = bigNumbertoStringOrNull((takerAssetData as ERC721AssetData).tokenId);
+
+ sraOrder.metaDataJson = JSON.stringify(apiOrder.metaData);
+
+ return sraOrder;
+}
diff --git a/packages/pipeline/src/entities/ExchangeCancelEvent.ts b/packages/pipeline/src/entities/ExchangeCancelEvent.ts
index d0188c2f5..7010ab9f2 100644
--- a/packages/pipeline/src/entities/ExchangeCancelEvent.ts
+++ b/packages/pipeline/src/entities/ExchangeCancelEvent.ts
@@ -16,6 +16,7 @@ export class ExchangeCancelEvent extends BaseEntity {
@Column() public feeRecepientAddress!: string;
@Column() public senderAddress!: string;
@Column() public orderHash!: string;
+
@Column() public rawMakerAssetData!: string;
@Column() public makerAssetType!: AssetType;
@Column() public makerAssetProxyId!: string;
@@ -28,5 +29,6 @@ export class ExchangeCancelEvent extends BaseEntity {
@Column() public takerTokenAddress!: string;
@Column({ nullable: true, type: String })
public takerTokenId!: string | null;
+
// TODO(albrow): Include topics?
}
diff --git a/packages/pipeline/src/entities/ExchangeFillEvent.ts b/packages/pipeline/src/entities/ExchangeFillEvent.ts
index abd73191a..5eafa7449 100644
--- a/packages/pipeline/src/entities/ExchangeFillEvent.ts
+++ b/packages/pipeline/src/entities/ExchangeFillEvent.ts
@@ -19,6 +19,7 @@ export class ExchangeFillEvent extends BaseEntity {
@Column() public makerFeePaid!: string;
@Column() public takerFeePaid!: string;
@Column() public orderHash!: string;
+
@Column() public rawMakerAssetData!: string;
@Column() public makerAssetType!: AssetType;
@Column() public makerAssetProxyId!: string;
@@ -31,5 +32,6 @@ export class ExchangeFillEvent extends BaseEntity {
@Column() public takerTokenAddress!: string;
@Column({ nullable: true, type: String })
public takerTokenId!: string | null;
+
// TODO(albrow): Include topics?
}
diff --git a/packages/pipeline/src/entities/SraOrder.ts b/packages/pipeline/src/entities/SraOrder.ts
new file mode 100644
index 000000000..c9a1f926d
--- /dev/null
+++ b/packages/pipeline/src/entities/SraOrder.ts
@@ -0,0 +1,40 @@
+import { BaseEntity, Column, Entity, PrimaryColumn } from 'typeorm';
+
+import { AssetType } from '../types';
+
+@Entity()
+export class SraOrder extends BaseEntity {
+ @PrimaryColumn() public exchangeAddress!: string;
+ @PrimaryColumn() public orderHashHex!: string;
+
+ @Column() public lastUpdatedTimestamp!: number;
+ @Column() public firstSeenTimestamp!: number;
+
+ @Column() public makerAddress!: string;
+ @Column() public takerAddress!: string;
+ @Column() public feeRecipientAddress!: string;
+ @Column() public senderAddress!: string;
+ @Column() public makerAssetAmount!: string;
+ @Column() public takerAssetAmount!: string;
+ @Column() public makerFee!: string;
+ @Column() public takerFee!: string;
+ @Column() public expirationTimeSeconds!: string;
+ @Column() public salt!: string;
+ @Column() public signature!: string;
+
+ @Column() public rawMakerAssetData!: string;
+ @Column() public makerAssetType!: AssetType;
+ @Column() public makerAssetProxyId!: string;
+ @Column() public makerTokenAddress!: string;
+ @Column({ nullable: true, type: String })
+ public makerTokenId!: string | null;
+ @Column() public rawTakerAssetData!: string;
+ @Column() public takerAssetType!: AssetType;
+ @Column() public takerAssetProxyId!: string;
+ @Column() public takerTokenAddress!: string;
+ @Column({ nullable: true, type: String })
+ public takerTokenId!: string | null;
+
+ // TODO(albrow): Make this optional?
+ @Column() public metaDataJson!: string;
+}
diff --git a/packages/pipeline/src/index.ts b/packages/pipeline/src/index.ts
index 07ab1d991..3e8434e3d 100644
--- a/packages/pipeline/src/index.ts
+++ b/packages/pipeline/src/index.ts
@@ -1,19 +1,28 @@
-import * as R from 'ramda';
+import { HttpClient } from '@0xproject/connect';
import 'reflect-metadata';
-import { createConnection } from 'typeorm';
+import { Connection, createConnection } from 'typeorm';
import { Etherscan } from './data_sources/etherscan';
import { parseExchangeEvents } from './data_types/events/exchange_events';
+import { parseSraOrders } from './data_types/sra_order';
import { ExchangeCancelEvent } from './entities/ExchangeCancelEvent';
import { ExchangeCancelUpToEvent } from './entities/ExchangeCancelUpToEvent';
import { ExchangeFillEvent } from './entities/ExchangeFillEvent';
+import { SraOrder } from './entities/SraOrder';
import { config } from './ormconfig';
const etherscan = new Etherscan(process.env.ETHERSCAN_API_KEY as string);
const EXCHANGE_ADDRESS = '0x4f833a24e1f95d70f028921e27040ca56e09ab0b';
+let connection: Connection;
+
(async () => {
- const connection = await createConnection(config);
+ connection = await createConnection(config);
+ await getExchangeEventsAsync();
+ await getSraOrdersAsync();
+})();
+
+async function getExchangeEventsAsync(): Promise<void> {
const fillRepository = connection.getRepository(ExchangeFillEvent);
const cancelRepository = connection.getRepository(ExchangeCancelEvent);
const cancelUpToRepository = connection.getRepository(ExchangeCancelUpToEvent);
@@ -32,4 +41,17 @@ const EXCHANGE_ADDRESS = '0x4f833a24e1f95d70f028921e27040ca56e09ab0b';
(await cancelRepository.count()) +
(await cancelUpToRepository.count())} total events`,
);
-})();
+}
+
+async function getSraOrdersAsync(): Promise<void> {
+ const orderRepository = connection.getRepository(SraOrder);
+ console.log(`found ${await orderRepository.count()} existing orders`);
+
+ const connect = new HttpClient('https://api.radarrelay.com/0x/v2');
+ const rawOrders = await connect.getOrdersAsync();
+ const orders = parseSraOrders(rawOrders);
+ for (const order of orders) {
+ order.save();
+ }
+ console.log(`now there are ${await orderRepository.count()} total orders`);
+}
diff --git a/packages/pipeline/src/utils/index.ts b/packages/pipeline/src/utils/index.ts
new file mode 100644
index 000000000..8fe7f9685
--- /dev/null
+++ b/packages/pipeline/src/utils/index.ts
@@ -0,0 +1,8 @@
+import { BigNumber } from '@0xproject/utils';
+
+export function bigNumbertoStringOrNull(n: BigNumber): string | null {
+ if (n == null) {
+ return null;
+ }
+ return n.toString();
+}
diff --git a/yarn.lock b/yarn.lock
index 9e293e586..38318d0a7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -472,7 +472,17 @@
npmlog "^4.1.2"
write-file-atomic "^2.3.0"
-"@0xproject/assert@^1.0.10", "@0xproject/assert@^1.0.13":
+"@0xproject/assert@^0.2.14":
+ version "0.2.14"
+ resolved "https://registry.yarnpkg.com/@0xproject/assert/-/assert-0.2.14.tgz#7d5a373fedc8eb482716b730f4dddf3ef33bfa29"
+ dependencies:
+ "@0xproject/json-schemas" "^0.8.3"
+ "@0xproject/typescript-typings" "^0.4.3"
+ "@0xproject/utils" "^0.7.3"
+ lodash "4.17.10"
+ valid-url "1.0.9"
+
+"@0xproject/assert@^1.0.10", "@0xproject/assert@^1.0.11", "@0xproject/assert@^1.0.13":
version "1.0.13"
resolved "https://registry.yarnpkg.com/@0xproject/assert/-/assert-1.0.13.tgz#e370ccce08933dd2a970bdd02b92e59c65dd75d4"
dependencies:
@@ -504,6 +514,22 @@
ethers "4.0.0-beta.14"
lodash "^4.17.5"
+"@0xproject/connect@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@0xproject/connect/-/connect-2.0.4.tgz#d61cd382edbb80120c8efce91dc85d2c668a5c5e"
+ dependencies:
+ "@0xproject/assert" "^1.0.11"
+ "@0xproject/json-schemas" "^1.0.4"
+ "@0xproject/order-utils" "^1.0.5"
+ "@0xproject/types" "^1.1.1"
+ "@0xproject/typescript-typings" "^2.0.2"
+ "@0xproject/utils" "^1.0.11"
+ lodash "^4.17.5"
+ query-string "^5.0.1"
+ sinon "^4.0.0"
+ uuid "^3.3.2"
+ websocket "^1.0.25"
+
"@0xproject/contract-wrappers@^1.0.1":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@0xproject/contract-wrappers/-/contract-wrappers-1.0.5.tgz#5a522b3fd8404b8c42169d5be7e3b6903a7b1356"
@@ -539,7 +565,16 @@
ethers "4.0.0-beta.14"
lodash "^4.17.5"
-"@0xproject/json-schemas@^1.0.3", "@0xproject/json-schemas@^1.0.7":
+"@0xproject/json-schemas@^0.8.3":
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/@0xproject/json-schemas/-/json-schemas-0.8.3.tgz#455e6219a6bd05e990392165192a983a9ab89f26"
+ dependencies:
+ "@0xproject/typescript-typings" "^0.4.3"
+ "@types/node" "9.6.0"
+ jsonschema "1.2.2"
+ lodash.values "4.3.0"
+
+"@0xproject/json-schemas@^1.0.3", "@0xproject/json-schemas@^1.0.4", "@0xproject/json-schemas@^1.0.7":
version "1.0.7"
resolved "https://registry.yarnpkg.com/@0xproject/json-schemas/-/json-schemas-1.0.7.tgz#64b5692a1bcc5938ce2da01fc2f8aecd72ec35be"
dependencies:
@@ -554,7 +589,7 @@
dependencies:
npm-registry-client "7.0.9"
-"@0xproject/order-utils@^1.0.4", "@0xproject/order-utils@^1.0.7":
+"@0xproject/order-utils@^1.0.2", "@0xproject/order-utils@^1.0.4", "@0xproject/order-utils@^1.0.5", "@0xproject/order-utils@^1.0.7":
version "1.0.7"
resolved "https://registry.yarnpkg.com/@0xproject/order-utils/-/order-utils-1.0.7.tgz#475cd5f1a11dc7816847abb4d3fd17bbaf32bf4f"
dependencies:
@@ -612,7 +647,14 @@
tslint-react "^3.2.0"
tsutils "3.0.0"
-"@0xproject/types@^1.1.0", "@0xproject/types@^1.1.1", "@0xproject/types@^1.1.4":
+"@0xproject/types@^0.8.2":
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/@0xproject/types/-/types-0.8.2.tgz#6f936b73bfb6f017b5102002d97da0881da92d1b"
+ dependencies:
+ "@types/node" "9.6.0"
+ bignumber.js "~4.1.0"
+
+"@0xproject/types@^1.0.1", "@0xproject/types@^1.1.0", "@0xproject/types@^1.1.1", "@0xproject/types@^1.1.4":
version "1.1.4"
resolved "https://registry.yarnpkg.com/@0xproject/types/-/types-1.1.4.tgz#3ffd65e670d6a21dab19ee0ffd5fad0056291b8e"
dependencies:
@@ -620,6 +662,24 @@
bignumber.js "~4.1.0"
ethereum-types "^1.0.11"
+"@0xproject/typescript-typings@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@0xproject/typescript-typings/-/typescript-typings-0.4.3.tgz#f99f939a43f2764ad7182fcd78a71212a1d76d96"
+ dependencies:
+ "@0xproject/types" "^0.8.2"
+ bignumber.js "~4.1.0"
+ ethereum-types "^0.0.2"
+
+"@0xproject/typescript-typings@^1.0.3":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@0xproject/typescript-typings/-/typescript-typings-1.0.5.tgz#a808443419f26a7b90d63d1afd3efbfb48644184"
+ dependencies:
+ "@types/bn.js" "^4.11.0"
+ "@types/react" "*"
+ bignumber.js "~4.1.0"
+ ethereum-types "^1.0.5"
+ popper.js "1.14.3"
+
"@0xproject/typescript-typings@^2.0.1", "@0xproject/typescript-typings@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@0xproject/typescript-typings/-/typescript-typings-2.0.2.tgz#1812f64e341f1d24c09b8b5a951cbde0e5fff9c2"
@@ -640,7 +700,21 @@
ethereum-types "^1.0.11"
popper.js "1.14.3"
-"@0xproject/utils@^1.0.10", "@0xproject/utils@^1.0.11", "@0xproject/utils@^1.0.8":
+"@0xproject/utils@^0.7.3":
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/@0xproject/utils/-/utils-0.7.3.tgz#ffa7c6da9bf0dd3e13694f185dcfc48a8981ff05"
+ dependencies:
+ "@0xproject/typescript-typings" "^0.4.3"
+ "@types/node" "9.6.0"
+ bignumber.js "~4.1.0"
+ ethereum-types "^0.0.2"
+ ethereumjs-util "^5.1.1"
+ ethers "3.0.22"
+ js-sha3 "0.7.0"
+ lodash "4.17.10"
+ web3 "0.20.6"
+
+"@0xproject/utils@^1.0.10", "@0xproject/utils@^1.0.11", "@0xproject/utils@^1.0.4", "@0xproject/utils@^1.0.8":
version "1.0.11"
resolved "https://registry.yarnpkg.com/@0xproject/utils/-/utils-1.0.11.tgz#5b53e7d9d4dbe68e219049218c9db04e97c37429"
dependencies:
@@ -1645,6 +1719,10 @@
version "9.6.5"
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.5.tgz#ee700810fdf49ac1c399fc5980b7559b3e5a381d"
+"@types/node@9.6.0":
+ version "9.6.0"
+ resolved "http://registry.npmjs.org/@types/node/-/node-9.6.0.tgz#d3480ee666df9784b1001a1872a2f6ccefb6c2d7"
+
"@types/node@^10.3.2":
version "10.9.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz#0f4cb2dc7c1de6096055357f70179043c33e9897"
@@ -1653,6 +1731,10 @@
version "10.5.7"
resolved "https://registry.npmjs.org/@types/node/-/node-10.5.7.tgz#960d9feb3ade2233bcc9843c918d740b4f78a7cf"
+"@types/node@^8.0.53":
+ version "8.10.36"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.36.tgz#eac05d576fbcd0b4ea3c912dc58c20475c08d9e4"
+
"@types/numeral@^0.0.22":
version "0.0.22"
resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.22.tgz#86bef1f0a2d743afdc2ef3168d45f2905e1a0b93"
@@ -6076,6 +6158,13 @@ ethereum-common@^0.0.18:
version "0.0.18"
resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f"
+ethereum-types@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/ethereum-types/-/ethereum-types-0.0.2.tgz#6ef6faf46a24697cbf66b6c8a0ecf2095ce58c38"
+ dependencies:
+ "@types/node" "^8.0.53"
+ bignumber.js "~4.1.0"
+
ethereumjs-abi@0.6.5, ethereumjs-abi@^0.6.5:
version "0.6.5"
resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241"
@@ -6225,9 +6314,9 @@ ethereumjs-wallet@0.6.0:
utf8 "^2.1.1"
uuid "^2.0.1"
-ethers@0xproject/ethers.js#eip-838-reasons, ethers@3.0.22:
- version "3.0.18"
- resolved "https://codeload.github.com/0xproject/ethers.js/tar.gz/b91342bd200d142af0165d6befddf783c8ae8447"
+ethers@3.0.22:
+ version "3.0.22"
+ resolved "https://registry.yarnpkg.com/ethers/-/ethers-3.0.22.tgz#7fab1ea16521705837aa43c15831877b2716b436"
dependencies:
aes-js "3.0.0"
bn.js "^4.4.0"
@@ -9180,14 +9269,14 @@ js-sha3@0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"
+js-sha3@0.7.0, js-sha3@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.7.0.tgz#0a5c57b36f79882573b2d84051f8bb85dd1bd63a"
+
js-sha3@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243"
-js-sha3@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.7.0.tgz#0a5c57b36f79882573b2d84051f8bb85dd1bd63a"
-
js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
@@ -9371,6 +9460,10 @@ jsonschema@*, jsonschema@1.2.4, jsonschema@^1.2.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.4.tgz#a46bac5d3506a254465bc548876e267c6d0d6464"
+jsonschema@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.2.tgz#83ab9c63d65bf4d596f91d81195e78772f6452bc"
+
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -10061,7 +10154,7 @@ lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
-lodash.values@^4.3.0:
+lodash.values@4.3.0, lodash.values@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347"
@@ -10071,6 +10164,10 @@ lodash.words@^3.0.0:
dependencies:
lodash._root "^3.0.0"
+lodash@4.17.10, lodash@^4.17.10:
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
+
lodash@=4.17.4:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@@ -10087,10 +10184,6 @@ lodash@^4.14.0, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lo
version "4.17.5"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
-lodash@^4.17.10:
- version "4.17.10"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
-
lodash@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551"
@@ -16091,7 +16184,7 @@ v8flags@^2.0.2:
dependencies:
user-home "^1.1.1"
-valid-url@^1.0.9:
+valid-url@1.0.9, valid-url@^1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200"
@@ -16538,6 +16631,16 @@ web3@0.20.2:
xhr2 "*"
xmlhttprequest "*"
+web3@0.20.6:
+ version "0.20.6"
+ resolved "http://registry.npmjs.org/web3/-/web3-0.20.6.tgz#3e97306ae024fb24e10a3d75c884302562215120"
+ dependencies:
+ bignumber.js "git+https://github.com/frozeman/bignumber.js-nolookahead.git"
+ crypto-js "^3.1.4"
+ utf8 "^2.1.1"
+ xhr2 "*"
+ xmlhttprequest "*"
+
web3@^0.18.0:
version "0.18.4"
resolved "https://registry.yarnpkg.com/web3/-/web3-0.18.4.tgz#81ec1784145491f2eaa8955b31c06049e07c5e7d"