Skip to content

Commit a090bef

Browse files
committed
refactor(apps/price_pusher): Use viem instead of web3 for evm pusher
1 parent e73fff2 commit a090bef

File tree

8 files changed

+1390
-205
lines changed

8 files changed

+1390
-205
lines changed

Diff for: apps/price_pusher/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pythnetwork/price-pusher",
3-
"version": "7.1.0",
3+
"version": "8.0.0-alpha",
44
"description": "Pyth Price Pusher",
55
"homepage": "https://pyth.network",
66
"main": "lib/index.js",
@@ -74,6 +74,7 @@
7474
"web3": "^1.8.1",
7575
"web3-core": "^1.8.1",
7676
"web3-eth-contract": "^1.8.1",
77+
"viem": "^2.19.4",
7778
"yaml": "^2.1.1",
7879
"yargs": "^17.5.1"
7980
}

Diff for: apps/price_pusher/src/evm/chains.ts

+347
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,347 @@
1+
import { defineChain } from "viem";
2+
import * as viemChains from "viem/chains";
3+
import { Chain } from "viem/chains";
4+
5+
// Get the chain object from the chainId or return an unknown chain object
6+
// if the chainId is not found in the list of chains. Normally the unknown
7+
// chain object should work for most cases, but some networks may have special
8+
// requirements (like custom fee model, etc) that may require a custom chain.
9+
export function getChain(chainId: number): Chain {
10+
for (const chain of chains) {
11+
if (chain.id === chainId) {
12+
return chain;
13+
}
14+
}
15+
16+
return defineChain({
17+
id: chainId,
18+
name: "Unknown",
19+
nativeCurrency: {
20+
name: "Unknown",
21+
symbol: "Unknown",
22+
decimals: 18,
23+
},
24+
rpcUrls: {
25+
default: {
26+
http: [],
27+
},
28+
},
29+
});
30+
}
31+
32+
// This list is generated from the exported chains in viem/chains.ts
33+
// and is used to validate the chainId in the Chain type
34+
export const chains: Chain[] = [
35+
viemChains.abstractTestnet,
36+
viemChains.acala,
37+
viemChains.ancient8,
38+
viemChains.ancient8Sepolia,
39+
viemChains.anvil,
40+
viemChains.apexTestnet,
41+
viemChains.arbitrum,
42+
viemChains.arbitrumGoerli,
43+
viemChains.arbitrumNova,
44+
viemChains.astar,
45+
viemChains.astarZkEVM,
46+
viemChains.astarZkyoto,
47+
viemChains.arbitrumSepolia,
48+
viemChains.areonNetwork,
49+
viemChains.areonNetworkTestnet,
50+
viemChains.artelaTestnet,
51+
viemChains.aurora,
52+
viemChains.auroraTestnet,
53+
viemChains.auroria,
54+
viemChains.avalanche,
55+
viemChains.avalancheFuji,
56+
viemChains.b3Sepolia,
57+
viemChains.bahamut,
58+
viemChains.base,
59+
viemChains.baseGoerli,
60+
viemChains.baseSepolia,
61+
viemChains.beam,
62+
viemChains.beamTestnet,
63+
viemChains.bearNetworkChainMainnet,
64+
viemChains.bearNetworkChainTestnet,
65+
viemChains.berachainTestnet,
66+
viemChains.berachainTestnetbArtio,
67+
viemChains.bevmMainnet,
68+
viemChains.bitkub,
69+
viemChains.bitkubTestnet,
70+
viemChains.bitTorrent,
71+
viemChains.bitTorrentTestnet,
72+
viemChains.blast,
73+
viemChains.blastSepolia,
74+
viemChains.bob,
75+
viemChains.bobSepolia,
76+
viemChains.boba,
77+
viemChains.bobaSepolia,
78+
viemChains.bronos,
79+
viemChains.bronosTestnet,
80+
viemChains.bsc,
81+
viemChains.bscTestnet,
82+
viemChains.bscGreenfield,
83+
viemChains.btr,
84+
viemChains.btrTestnet,
85+
viemChains.bxn,
86+
viemChains.bxnTestnet,
87+
viemChains.canto,
88+
viemChains.celo,
89+
viemChains.celoAlfajores,
90+
viemChains.chiliz,
91+
viemChains.classic,
92+
viemChains.confluxESpace,
93+
viemChains.confluxESpaceTestnet,
94+
viemChains.coreDao,
95+
viemChains.crab,
96+
viemChains.cronos,
97+
viemChains.cronoszkEVMTestnet,
98+
viemChains.cronosTestnet,
99+
viemChains.crossbell,
100+
viemChains.cyber,
101+
viemChains.cyberTestnet,
102+
viemChains.darwinia,
103+
viemChains.dchain,
104+
viemChains.dchainTestnet,
105+
viemChains.defichainEvm,
106+
viemChains.defichainEvmTestnet,
107+
viemChains.degen,
108+
viemChains.dfk,
109+
viemChains.dodochainTestnet,
110+
viemChains.dogechain,
111+
viemChains.dreyerxMainnet,
112+
viemChains.dreyerxTestnet,
113+
viemChains.edgeless,
114+
viemChains.edgelessTestnet,
115+
viemChains.edgeware,
116+
viemChains.edgewareTestnet,
117+
viemChains.eon,
118+
viemChains.eos,
119+
viemChains.eosTestnet,
120+
viemChains.etherlink,
121+
viemChains.etherlinkTestnet,
122+
viemChains.evmos,
123+
viemChains.evmosTestnet,
124+
viemChains.ekta,
125+
viemChains.ektaTestnet,
126+
viemChains.fantom,
127+
viemChains.fantomSonicTestnet,
128+
viemChains.fantomTestnet,
129+
viemChains.fibo,
130+
viemChains.filecoin,
131+
viemChains.filecoinCalibration,
132+
viemChains.filecoinHyperspace,
133+
viemChains.flare,
134+
viemChains.flareTestnet,
135+
viemChains.flowPreviewnet,
136+
viemChains.flowMainnet,
137+
viemChains.flowTestnet,
138+
viemChains.forma,
139+
viemChains.foundry,
140+
viemChains.fraxtal,
141+
viemChains.fraxtalTestnet,
142+
viemChains.funkiMainnet,
143+
viemChains.funkiSepolia,
144+
viemChains.fuse,
145+
viemChains.fuseSparknet,
146+
viemChains.iotex,
147+
viemChains.iotexTestnet,
148+
viemChains.jbc,
149+
viemChains.jbcTestnet,
150+
viemChains.karura,
151+
viemChains.gobi,
152+
viemChains.goerli,
153+
viemChains.gnosis,
154+
viemChains.gnosisChiado,
155+
viemChains.gravity,
156+
viemChains.ham,
157+
viemChains.hardhat,
158+
viemChains.harmonyOne,
159+
viemChains.haqqMainnet,
160+
viemChains.haqqTestedge2,
161+
viemChains.hedera,
162+
viemChains.hederaTestnet,
163+
viemChains.hederaPreviewnet,
164+
viemChains.holesky,
165+
viemChains.immutableZkEvm,
166+
viemChains.immutableZkEvmTestnet,
167+
viemChains.inEVM,
168+
viemChains.kakarotSepolia,
169+
viemChains.kava,
170+
viemChains.kavaTestnet,
171+
viemChains.kcc,
172+
viemChains.klaytn,
173+
viemChains.klaytnBaobab,
174+
viemChains.koi,
175+
viemChains.kroma,
176+
viemChains.kromaSepolia,
177+
viemChains.l3x,
178+
viemChains.l3xTestnet,
179+
viemChains.lightlinkPegasus,
180+
viemChains.lightlinkPhoenix,
181+
viemChains.linea,
182+
viemChains.lineaGoerli,
183+
viemChains.lineaSepolia,
184+
viemChains.lineaTestnet,
185+
viemChains.lisk,
186+
viemChains.liskSepolia,
187+
viemChains.localhost,
188+
viemChains.lukso,
189+
viemChains.luksoTestnet,
190+
viemChains.lycan,
191+
viemChains.lyra,
192+
viemChains.mainnet,
193+
viemChains.mandala,
194+
viemChains.manta,
195+
viemChains.mantaSepoliaTestnet,
196+
viemChains.mantaTestnet,
197+
viemChains.mantle,
198+
viemChains.mantleSepoliaTestnet,
199+
viemChains.mantleTestnet,
200+
viemChains.merlin,
201+
viemChains.metachain,
202+
viemChains.metachainIstanbul,
203+
viemChains.metalL2,
204+
viemChains.meter,
205+
viemChains.meterTestnet,
206+
viemChains.metis,
207+
viemChains.metisGoerli,
208+
viemChains.mev,
209+
viemChains.mevTestnet,
210+
viemChains.mintSepoliaTestnet,
211+
viemChains.mode,
212+
viemChains.modeTestnet,
213+
viemChains.moonbaseAlpha,
214+
viemChains.moonbeam,
215+
viemChains.moonbeamDev,
216+
viemChains.moonriver,
217+
viemChains.morphHolesky,
218+
viemChains.morphSepolia,
219+
viemChains.nautilus,
220+
viemChains.neonDevnet,
221+
viemChains.neonMainnet,
222+
viemChains.nexi,
223+
viemChains.nexilix,
224+
viemChains.oasys,
225+
viemChains.oasisTestnet,
226+
viemChains.okc,
227+
viemChains.optimism,
228+
viemChains.optimismGoerli,
229+
viemChains.optimismSepolia,
230+
viemChains.opBNB,
231+
viemChains.opBNBTestnet,
232+
viemChains.oortMainnetDev,
233+
viemChains.otimDevnet,
234+
viemChains.palm,
235+
viemChains.palmTestnet,
236+
viemChains.playfiAlbireo,
237+
viemChains.pgn,
238+
viemChains.pgnTestnet,
239+
viemChains.phoenix,
240+
viemChains.plinga,
241+
viemChains.plumeTestnet,
242+
viemChains.polygon,
243+
viemChains.polygonAmoy,
244+
viemChains.polygonMumbai,
245+
viemChains.polygonZkEvm,
246+
viemChains.polygonZkEvmCardona,
247+
viemChains.polygonZkEvmTestnet,
248+
viemChains.pulsechain,
249+
viemChains.pulsechainV4,
250+
viemChains.qMainnet,
251+
viemChains.qTestnet,
252+
viemChains.real,
253+
viemChains.redbellyTestnet,
254+
viemChains.redstone,
255+
viemChains.reyaNetwork,
256+
viemChains.rollux,
257+
viemChains.rolluxTestnet,
258+
viemChains.ronin,
259+
viemChains.root,
260+
viemChains.rootPorcini,
261+
viemChains.rootstock,
262+
viemChains.rootstockTestnet,
263+
viemChains.rss3,
264+
viemChains.rss3Sepolia,
265+
viemChains.saigon,
266+
viemChains.sapphire,
267+
viemChains.sapphireTestnet,
268+
viemChains.satoshiVM,
269+
viemChains.satoshiVMTestnet,
270+
viemChains.scroll,
271+
viemChains.scrollSepolia,
272+
viemChains.sei,
273+
viemChains.seiDevnet,
274+
viemChains.seiTestnet,
275+
viemChains.sepolia,
276+
viemChains.shapeSepolia,
277+
viemChains.shimmer,
278+
viemChains.shimmerTestnet,
279+
viemChains.skaleBlockBrawlers,
280+
viemChains.skaleCalypso,
281+
viemChains.skaleCalypsoTestnet,
282+
viemChains.skaleCryptoBlades,
283+
viemChains.skaleCryptoColosseum,
284+
viemChains.skaleEuropa,
285+
viemChains.skaleEuropaTestnet,
286+
viemChains.skaleExorde,
287+
viemChains.skaleHumanProtocol,
288+
viemChains.skaleNebula,
289+
viemChains.skaleNebulaTestnet,
290+
viemChains.skaleRazor,
291+
viemChains.skaleTitan,
292+
viemChains.skaleTitanTestnet,
293+
viemChains.sketchpad,
294+
viemChains.songbird,
295+
viemChains.songbirdTestnet,
296+
viemChains.spicy,
297+
viemChains.shardeumSphinx,
298+
viemChains.shibarium,
299+
viemChains.shibariumTestnet,
300+
viemChains.stratis,
301+
viemChains.syscoin,
302+
viemChains.syscoinTestnet,
303+
viemChains.taraxa,
304+
viemChains.taiko,
305+
viemChains.taikoHekla,
306+
viemChains.taikoJolnir,
307+
viemChains.taikoKatla,
308+
viemChains.taikoTestnetSepolia,
309+
viemChains.taraxaTestnet,
310+
viemChains.telcoinTestnet,
311+
viemChains.telos,
312+
viemChains.telosTestnet,
313+
viemChains.tenet,
314+
viemChains.thaiChain,
315+
viemChains.thunderTestnet,
316+
viemChains.unreal,
317+
viemChains.vechain,
318+
viemChains.wanchain,
319+
viemChains.wanchainTestnet,
320+
viemChains.wemix,
321+
viemChains.wemixTestnet,
322+
viemChains.xLayerTestnet,
323+
viemChains.xLayer,
324+
viemChains.xai,
325+
viemChains.xaiTestnet,
326+
viemChains.xdc,
327+
viemChains.xdcTestnet,
328+
viemChains.xrSepolia,
329+
viemChains.yooldoVerse,
330+
viemChains.yooldoVerseTestnet,
331+
viemChains.zetachain,
332+
viemChains.zetachainAthensTestnet,
333+
viemChains.zhejiang,
334+
viemChains.zilliqa,
335+
viemChains.zilliqaTestnet,
336+
viemChains.zkFair,
337+
viemChains.zkFairTestnet,
338+
viemChains.zkLinkNova,
339+
viemChains.zkLinkNovaSepoliaTestnet,
340+
viemChains.zksync,
341+
viemChains.zksyncInMemoryNode,
342+
viemChains.zksyncSepoliaTestnet,
343+
viemChains.zora,
344+
viemChains.zoraSepolia,
345+
viemChains.zoraTestnet,
346+
viemChains.zircuitTestnet,
347+
];

Diff for: apps/price_pusher/src/evm/command.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export default {
7777
...options.priceServiceConnectionLogLevel,
7878
...options.controllerLogLevel,
7979
},
80-
handler: function (argv: any) {
80+
handler: async function (argv: any) {
8181
// FIXME: type checks for this
8282
const {
8383
endpoint,
@@ -121,15 +121,16 @@ export default {
121121
logger.child({ module: "PythPriceListener" })
122122
);
123123

124-
const pythContractFactory = new PythContractFactory(
124+
const pythContractFactory = await PythContractFactory.create(
125125
endpoint,
126126
mnemonic,
127127
pythContractAddress
128128
);
129+
129130
logger.info(
130-
`Pushing updates from wallet address: ${pythContractFactory
131-
.createWeb3PayerProvider()
132-
.getAddress()}`
131+
`Pushing updates from wallet address: ${
132+
pythContractFactory.getAccount().address
133+
}`
133134
);
134135

135136
const evmListener = new EvmPriceListener(

0 commit comments

Comments
 (0)