@d8x/perpetuals-sdk 1.1.10 → 1.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/onChainPxFeed.d.ts +2 -0
- package/dist/cjs/onChainPxFeed.js +31 -19
- package/dist/cjs/onChainPxFeed.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/onChainPxFeed.d.ts +2 -0
- package/dist/esm/onChainPxFeed.js +31 -19
- package/dist/esm/onChainPxFeed.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/onChainPxFeed.ts +34 -20
- package/src/version.ts +1 -1
|
@@ -10,8 +10,10 @@ export default class OnChainPxFeed {
|
|
|
10
10
|
private provider;
|
|
11
11
|
private ctrctAddr;
|
|
12
12
|
private decimals;
|
|
13
|
+
private fetchInProgress;
|
|
13
14
|
static abi: any;
|
|
14
15
|
constructor(ctrctAddr: string, decimals: number, rpcs: string[]);
|
|
15
16
|
getPrice(): Promise<number>;
|
|
17
|
+
private fetch;
|
|
16
18
|
private setRpc;
|
|
17
19
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const contracts_1 = require("@ethersproject/contracts");
|
|
4
4
|
const providers_1 = require("@ethersproject/providers");
|
|
5
5
|
const d8XMath_1 = require("./d8XMath");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
6
7
|
/**
|
|
7
8
|
* OnChainPxFeed: get a price from a chainlink-style oracle
|
|
8
9
|
*/
|
|
@@ -11,7 +12,8 @@ class OnChainPxFeed {
|
|
|
11
12
|
this.lastResponseTs = 0;
|
|
12
13
|
this.lastPx = 0;
|
|
13
14
|
this.lastRpc = 0;
|
|
14
|
-
this.delayMs =
|
|
15
|
+
this.delayMs = 5000;
|
|
16
|
+
this.fetchInProgress = false;
|
|
15
17
|
this.rpcs = rpcs;
|
|
16
18
|
this.lastRpc = Math.floor(Math.random() * rpcs.length);
|
|
17
19
|
this.provider = new providers_1.StaticJsonRpcProvider(this.rpcs[this.lastRpc]);
|
|
@@ -19,29 +21,39 @@ class OnChainPxFeed {
|
|
|
19
21
|
this.decimals = decimals;
|
|
20
22
|
}
|
|
21
23
|
async getPrice() {
|
|
22
|
-
if (Date.now() - this.lastResponseTs
|
|
24
|
+
if (this.lastPx == undefined || Date.now() - this.lastResponseTs > 10 * 60 * 1000) {
|
|
25
|
+
await this.fetch(false);
|
|
23
26
|
return this.lastPx;
|
|
24
27
|
}
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
this.fetch(true);
|
|
29
|
+
return this.lastPx;
|
|
30
|
+
}
|
|
31
|
+
async fetch(delay) {
|
|
32
|
+
if (!this.fetchInProgress) {
|
|
33
|
+
this.fetchInProgress = true;
|
|
34
|
+
this.lastResponseTs = Date.now();
|
|
35
|
+
let hasErr = false;
|
|
36
|
+
for (let trial = 0; trial < this.rpcs.length; trial++) {
|
|
37
|
+
try {
|
|
38
|
+
let proxyContract = new contracts_1.Contract(this.ctrctAddr, OnChainPxFeed.abi, this.provider);
|
|
39
|
+
let data = await proxyContract.latestRoundData();
|
|
40
|
+
this.lastPx = (0, d8XMath_1.decNToFloat)(data.answer, this.decimals);
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
console.log(`onChainPxSources error ${this.rpcs[this.lastRpc]}: retrying with other rpc`);
|
|
45
|
+
hasErr = true;
|
|
46
|
+
}
|
|
47
|
+
this.setRpc();
|
|
33
48
|
}
|
|
34
|
-
|
|
35
|
-
console.log(
|
|
36
|
-
hasErr = true;
|
|
49
|
+
if (hasErr) {
|
|
50
|
+
console.log("onChainPxSources not successful");
|
|
37
51
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return this.lastPx;
|
|
52
|
+
if (delay) {
|
|
53
|
+
await (0, utils_1.sleep)(this.delayMs);
|
|
54
|
+
}
|
|
55
|
+
this.fetchInProgress = false;
|
|
43
56
|
}
|
|
44
|
-
return this.lastPx;
|
|
45
57
|
}
|
|
46
58
|
setRpc() {
|
|
47
59
|
this.lastRpc = (this.lastRpc + 1) % this.rpcs.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onChainPxFeed.js","sourceRoot":"","sources":["../../src/onChainPxFeed.ts"],"names":[],"mappings":";;AAAA,wDAAoD;AACpD,wDAAiE;AACjE,uCAAwC;
|
|
1
|
+
{"version":3,"file":"onChainPxFeed.js","sourceRoot":"","sources":["../../src/onChainPxFeed.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const D8X_SDK_VERSION = "1.1.
|
|
1
|
+
export declare const D8X_SDK_VERSION = "1.1.11";
|
package/dist/cjs/version.js
CHANGED
|
@@ -10,8 +10,10 @@ export default class OnChainPxFeed {
|
|
|
10
10
|
private provider;
|
|
11
11
|
private ctrctAddr;
|
|
12
12
|
private decimals;
|
|
13
|
+
private fetchInProgress;
|
|
13
14
|
static abi: any;
|
|
14
15
|
constructor(ctrctAddr: string, decimals: number, rpcs: string[]);
|
|
15
16
|
getPrice(): Promise<number>;
|
|
17
|
+
private fetch;
|
|
16
18
|
private setRpc;
|
|
17
19
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Contract } from "@ethersproject/contracts";
|
|
2
2
|
import { StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
3
3
|
import { decNToFloat } from "./d8XMath";
|
|
4
|
+
import { sleep } from "./utils";
|
|
4
5
|
/**
|
|
5
6
|
* OnChainPxFeed: get a price from a chainlink-style oracle
|
|
6
7
|
*/
|
|
@@ -9,7 +10,8 @@ export default class OnChainPxFeed {
|
|
|
9
10
|
this.lastResponseTs = 0;
|
|
10
11
|
this.lastPx = 0;
|
|
11
12
|
this.lastRpc = 0;
|
|
12
|
-
this.delayMs =
|
|
13
|
+
this.delayMs = 5000;
|
|
14
|
+
this.fetchInProgress = false;
|
|
13
15
|
this.rpcs = rpcs;
|
|
14
16
|
this.lastRpc = Math.floor(Math.random() * rpcs.length);
|
|
15
17
|
this.provider = new StaticJsonRpcProvider(this.rpcs[this.lastRpc]);
|
|
@@ -17,29 +19,39 @@ export default class OnChainPxFeed {
|
|
|
17
19
|
this.decimals = decimals;
|
|
18
20
|
}
|
|
19
21
|
async getPrice() {
|
|
20
|
-
if (Date.now() - this.lastResponseTs
|
|
22
|
+
if (this.lastPx == undefined || Date.now() - this.lastResponseTs > 10 * 60 * 1000) {
|
|
23
|
+
await this.fetch(false);
|
|
21
24
|
return this.lastPx;
|
|
22
25
|
}
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
this.fetch(true);
|
|
27
|
+
return this.lastPx;
|
|
28
|
+
}
|
|
29
|
+
async fetch(delay) {
|
|
30
|
+
if (!this.fetchInProgress) {
|
|
31
|
+
this.fetchInProgress = true;
|
|
32
|
+
this.lastResponseTs = Date.now();
|
|
33
|
+
let hasErr = false;
|
|
34
|
+
for (let trial = 0; trial < this.rpcs.length; trial++) {
|
|
35
|
+
try {
|
|
36
|
+
let proxyContract = new Contract(this.ctrctAddr, OnChainPxFeed.abi, this.provider);
|
|
37
|
+
let data = await proxyContract.latestRoundData();
|
|
38
|
+
this.lastPx = decNToFloat(data.answer, this.decimals);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
console.log(`onChainPxSources error ${this.rpcs[this.lastRpc]}: retrying with other rpc`);
|
|
43
|
+
hasErr = true;
|
|
44
|
+
}
|
|
45
|
+
this.setRpc();
|
|
31
46
|
}
|
|
32
|
-
|
|
33
|
-
console.log(
|
|
34
|
-
hasErr = true;
|
|
47
|
+
if (hasErr) {
|
|
48
|
+
console.log("onChainPxSources not successful");
|
|
35
49
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return this.lastPx;
|
|
50
|
+
if (delay) {
|
|
51
|
+
await sleep(this.delayMs);
|
|
52
|
+
}
|
|
53
|
+
this.fetchInProgress = false;
|
|
41
54
|
}
|
|
42
|
-
return this.lastPx;
|
|
43
55
|
}
|
|
44
56
|
setRpc() {
|
|
45
57
|
this.lastRpc = (this.lastRpc + 1) % this.rpcs.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onChainPxFeed.js","sourceRoot":"","sources":["../../src/onChainPxFeed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"onChainPxFeed.js","sourceRoot":"","sources":["../../src/onChainPxFeed.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const D8X_SDK_VERSION = "1.1.
|
|
1
|
+
export declare const D8X_SDK_VERSION = "1.1.11";
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "1.1.
|
|
1
|
+
export const D8X_SDK_VERSION = "1.1.11";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
package/src/onChainPxFeed.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Contract } from "@ethersproject/contracts";
|
|
|
2
2
|
import { StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
3
3
|
import { decNToFloat } from "./d8XMath";
|
|
4
4
|
import { BigNumber } from "ethers";
|
|
5
|
+
import { sleep } from "./utils";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* OnChainPxFeed: get a price from a chainlink-style oracle
|
|
@@ -10,12 +11,13 @@ export default class OnChainPxFeed {
|
|
|
10
11
|
private lastResponseTs: number = 0;
|
|
11
12
|
private lastPx: number = 0;
|
|
12
13
|
private lastRpc: number = 0;
|
|
13
|
-
private delayMs =
|
|
14
|
+
private delayMs = 5000;
|
|
14
15
|
public rpcs: string[];
|
|
15
16
|
private provider: StaticJsonRpcProvider;
|
|
16
17
|
//weETH/eETH on Arbitrum One 42161
|
|
17
18
|
private ctrctAddr;
|
|
18
19
|
private decimals;
|
|
20
|
+
private fetchInProgress = false;
|
|
19
21
|
//static ctrctAddr = "0x119A190b510c9c0D5Ec301b60B2fE70A50356aE9";
|
|
20
22
|
static abi = require("./abi/redStoneAbi.json");
|
|
21
23
|
|
|
@@ -27,29 +29,41 @@ export default class OnChainPxFeed {
|
|
|
27
29
|
this.decimals = decimals;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
public async getPrice() {
|
|
31
|
-
if (Date.now() - this.lastResponseTs
|
|
32
|
+
public async getPrice(): Promise<number> {
|
|
33
|
+
if (this.lastPx == undefined || Date.now() - this.lastResponseTs > 10 * 60 * 1000) {
|
|
34
|
+
await this.fetch(false);
|
|
32
35
|
return this.lastPx;
|
|
33
36
|
}
|
|
34
|
-
this.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
this.fetch(true);
|
|
38
|
+
return this.lastPx;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private async fetch(delay: boolean) {
|
|
42
|
+
if (!this.fetchInProgress) {
|
|
43
|
+
this.fetchInProgress = true;
|
|
44
|
+
this.lastResponseTs = Date.now();
|
|
45
|
+
let hasErr = false;
|
|
46
|
+
for (let trial = 0; trial < this.rpcs.length; trial++) {
|
|
47
|
+
try {
|
|
48
|
+
let proxyContract = new Contract(this.ctrctAddr, OnChainPxFeed.abi, this.provider);
|
|
49
|
+
let data = await proxyContract.latestRoundData();
|
|
50
|
+
this.lastPx = decNToFloat(data.answer, this.decimals);
|
|
51
|
+
break;
|
|
52
|
+
} catch (err) {
|
|
53
|
+
console.log(`onChainPxSources error ${this.rpcs[this.lastRpc]}: retrying with other rpc`);
|
|
54
|
+
hasErr = true;
|
|
55
|
+
}
|
|
56
|
+
this.setRpc();
|
|
45
57
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
58
|
+
if (hasErr) {
|
|
59
|
+
console.log("onChainPxSources not successful");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (delay) {
|
|
63
|
+
await sleep(this.delayMs);
|
|
64
|
+
}
|
|
65
|
+
this.fetchInProgress = false;
|
|
51
66
|
}
|
|
52
|
-
return this.lastPx;
|
|
53
67
|
}
|
|
54
68
|
|
|
55
69
|
private setRpc() {
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "1.1.
|
|
1
|
+
export const D8X_SDK_VERSION = "1.1.11";
|