Skip to content

Commit bf02101

Browse files
authored
evm-watcher: Add logic to group events for dispatch (#242)
* Add logic to group events for dispatch * Add comment about one important assumption * Address review comments
1 parent 5320c58 commit bf02101

File tree

12 files changed

+247
-217
lines changed

12 files changed

+247
-217
lines changed

third_party/pyth/evm-watcher/package-lock.json

Lines changed: 42 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

third_party/pyth/evm-watcher/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@
3838
"typescript": "^4.7.4"
3939
},
4040
"dependencies": {
41+
"@pythnetwork/pyth-sdk-solidity": "^0.4.0",
4142
"dotenv": "^16.0.1",
43+
"lru-cache": "^7.13.1",
4244
"web3": "^1.7.4",
4345
"web3-eth-contract": "^1.7.4",
4446
"web3-providers-ws": "^1.7.4",

third_party/pyth/evm-watcher/src/abi.json

Lines changed: 0 additions & 147 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { HexString, NumberString, UnixTimestampString } from "./utils"
2+
3+
export type PriceFeedUpdateEventValues = {
4+
id: HexString,
5+
fresh: boolean,
6+
chainId: NumberString,
7+
sequenceNumber: NumberString,
8+
lastPublishTime: UnixTimestampString,
9+
publishTime: UnixTimestampString,
10+
price: NumberString,
11+
conf: NumberString
12+
}
13+
14+
export type PriceFeedInfo = PriceFeedUpdateEventValues;
15+
16+
export type BatchPriceFeedUpdateEventValues = {
17+
chainId: NumberString,
18+
sequenceNumber: NumberString,
19+
batchSize: NumberString,
20+
freshPricesInBatch: NumberString,
21+
}
22+
23+
export type BatchPriceFeedInfo = BatchPriceFeedUpdateEventValues & {
24+
priceUpdates: PriceFeedUpdateEventValues[];
25+
}
26+
27+
export type UpdatePriceFeedsEventValues = {
28+
sender: HexString,
29+
batchCount: NumberString,
30+
fee: NumberString,
31+
};
32+
33+
export type UpdatePriceFeedsInfo = UpdatePriceFeedsEventValues & {
34+
batchUpdates: BatchPriceFeedInfo[];
35+
}
36+
37+
export type UpdatePriceFeedsAggregateInfo = {
38+
txHash: HexString,
39+
txFrom: HexString,
40+
txTo?: HexString,
41+
block: number,
42+
timestamp: UnixTimestampString,
43+
rawInput: string,
44+
gasUsage: number,
45+
gasPrice: NumberString,
46+
effectiveGasPrice?: number,
47+
updatePriceFeedsInfo: UpdatePriceFeedsInfo, // Assuming there is only one UpdatePriceFeeds Event in a transaction
48+
}

third_party/pyth/evm-watcher/src/handler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { PythUpdateEvent } from "./pyth-update-event";
1+
import { UpdatePriceFeedsAggregateInfo } from "./events";
22
import { Watcher } from "./watcher";
33

44
export class Handler {
@@ -8,7 +8,7 @@ export class Handler {
88
this.watchers = [];
99
}
1010

11-
dispatchEvent(event: PythUpdateEvent) {
11+
dispatchEvent(event: UpdatePriceFeedsAggregateInfo) {
1212
for (let watcher of this.watchers) {
1313
watcher.processEvent(event);
1414
}

third_party/pyth/evm-watcher/src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Handler } from "./handler";
22
import { Listener } from "./listener";
33
import { envOrErr } from "./utils";
4-
import { Logger } from "./watchers/logger";
4+
import { JsonLogger } from "./watchers/json-logger";
55

66
console.log("Loading config file .env");
77
require("dotenv").config();
@@ -13,7 +13,7 @@ const listener = new Listener({
1313
}, handler);
1414

1515
// Initialize Watchers
16-
const logger = new Logger();
17-
handler.subscribe(logger);
16+
const jsonLogger = new JsonLogger();
17+
handler.subscribe(jsonLogger);
1818

1919
listener.start();

0 commit comments

Comments
 (0)