Skip to content

Commit 34453e3

Browse files
Fixed node log request, decimals in uniswap demo (#854)
1 parent 513e3af commit 34453e3

File tree

4 files changed

+146
-139
lines changed

4 files changed

+146
-139
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning].
66

7+
## [Unreleased]
8+
9+
### Fixed
10+
11+
- demos: Fixed decimal overflow in `demo_uniswap` project.
12+
- evm.node: Fixed incorrect log request parameters.
13+
714
## [7.0.0] - 2023-09-25
815

916
### Fixed

src/demo_uniswap/models/__init__.py

Lines changed: 69 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,23 @@ class Factory(CachedModel):
1212
# amount of transactions all time
1313
tx_count = fields.BigIntField(default=0)
1414
# total volume all time in derived USD
15-
total_volume_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
15+
total_volume_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
1616
# total volume all time in derived ETH
17-
total_volume_eth = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
17+
total_volume_eth = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
1818
# total swap fees all time in USD
19-
total_fees_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
19+
total_fees_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
2020
# total swap fees all time in USD
21-
total_fees_eth = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
21+
total_fees_eth = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
2222
# all volume even through less reliable USD values
23-
untracked_volume_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
23+
untracked_volume_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
2424
# TVL derived in USD
25-
total_value_locked_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
25+
total_value_locked_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
2626
# TVL derived in ETH
27-
total_value_locked_eth = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
27+
total_value_locked_eth = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
2828
# TVL derived in USD untracked
29-
total_value_locked_usd_untracked = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
29+
total_value_locked_usd_untracked = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
3030
# TVL derived in ETH untracked
31-
total_value_locked_eth_untracked = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
31+
total_value_locked_eth_untracked = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
3232
# current owner of the factory
3333
owner = fields.TextField(default=ADDRESS_ZERO)
3434

@@ -44,25 +44,25 @@ class Token(CachedModel):
4444
# token total supply
4545
total_supply = fields.BigIntField()
4646
# volume in token units
47-
volume = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
47+
volume = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
4848
# volume in derived USD
49-
volume_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
49+
volume_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
5050
# volume in USD even on pools with less reliable USD values
51-
untracked_volume_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
51+
untracked_volume_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
5252
# fees in USD
53-
fees_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
53+
fees_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
5454
# transactions across all pools that include this token
5555
tx_count = fields.BigIntField(default=0)
5656
# number of pools containing this token
5757
pool_count = fields.BigIntField(default=0)
5858
# liquidity across all pools in token units
59-
total_value_locked = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
59+
total_value_locked = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
6060
# liquidity across all pools in derived USD
61-
total_value_locked_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
61+
total_value_locked_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
6262
# TVL derived in USD untracked
63-
total_value_locked_usd_untracked = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
63+
total_value_locked_usd_untracked = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
6464
# derived price in ETH
65-
derived_eth = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
65+
derived_eth = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
6666
# pools token is in that are whitelisted for USD pricing
6767
whitelist_pools = fields.ArrayField(default=[])
6868

@@ -89,41 +89,41 @@ class Pool(CachedModel):
8989
# tracker for global fee growth
9090
# fee_growth_global_1x128 = fields.BigIntField(default=0)
9191
# token0 per token1
92-
token0_price = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
92+
token0_price = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
9393
# token1 per token0
94-
token1_price = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
94+
token1_price = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
9595
# current tick
9696
tick = fields.BigIntField(null=True)
9797
# current observation index
9898
observation_index = fields.BigIntField(default=0)
9999
# all time token0 swapped
100-
volume_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
100+
volume_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
101101
# all time token1 swapped
102-
volume_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
102+
volume_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
103103
# all time USD swapped
104-
volume_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
104+
volume_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
105105
# all time USD swapped, unfiltered for unreliable USD pools
106-
untracked_volume_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
106+
untracked_volume_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
107107
# fees in USD
108-
fees_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
108+
fees_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
109109
# all time number of transactions
110110
tx_count = fields.BigIntField(default=0)
111111
# all time fees collected token0
112-
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
112+
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
113113
# all time fees collected token1
114-
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
114+
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
115115
# all time fees collected derived USD
116-
collected_fees_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
116+
collected_fees_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
117117
# total token 0 across all ticks
118-
total_value_locked_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
118+
total_value_locked_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
119119
# total token 1 across all ticks
120-
total_value_locked_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
120+
total_value_locked_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
121121
# tvl derived ETH
122-
total_value_locked_eth = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
122+
total_value_locked_eth = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
123123
# tvl USD
124-
total_value_locked_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
124+
total_value_locked_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
125125
# TVL derived in USD untracked
126-
total_value_locked_usd_untracked = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
126+
total_value_locked_usd_untracked = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
127127
# Fields used to help derived relationship
128128
liquidity_provider_count = fields.BigIntField(default=0) # used to detect new exchanges
129129

@@ -142,25 +142,25 @@ class Tick(Model):
142142
# how much liquidity changes when tick crossed
143143
liquidity_net = fields.DecimalField(decimal_places=0, max_digits=76, default=0)
144144
# calculated price of token0 of tick within this pool - constant
145-
price0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
145+
price0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
146146
# calculated price of token1 of tick within this pool - constant
147-
price1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
147+
price1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
148148
# lifetime volume of token0 with this tick in range
149-
volume_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
149+
volume_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
150150
# lifetime volume of token1 with this tick in range
151-
volume_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
151+
volume_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
152152
# lifetime volume in derived USD with this tick in range
153-
volume_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
153+
volume_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
154154
# lifetime volume in untracked USD with this tick in range
155-
untracked_volume_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
155+
untracked_volume_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
156156
# fees in USD
157-
fees_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
157+
fees_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
158158
# all time collected fees in token0
159-
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
159+
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
160160
# all time collected fees in token1
161-
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
161+
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
162162
# all time collected fees in USD
163-
collected_fees_usd = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
163+
collected_fees_usd = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
164164
# created time
165165
created_at_timestamp = fields.BigIntField()
166166
# created block
@@ -199,17 +199,17 @@ class Position(Model):
199199
# total position liquidity
200200
liquidity = fields.DecimalField(max_digits=76, decimal_places=0, default=0)
201201
# amount of token 0 ever deposited to position
202-
deposited_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
202+
deposited_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
203203
# amount of token 1 ever deposited to position
204-
deposited_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
204+
deposited_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
205205
# amount of token 0 ever withdrawn from position (without fees)
206-
withdrawn_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
206+
withdrawn_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
207207
# amount of token 1 ever withdrawn from position (without fees)
208-
withdrawn_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
208+
withdrawn_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
209209
# all time collected fees in token0
210-
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
210+
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
211211
# all time collected fees in token1
212-
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
212+
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
213213
# vars needed for fee computation
214214
# fee_growth_inside_0_last_x128 = fields.BigIntField(default=0)
215215
# fee_growth_inside_1_last_x128 = fields.BigIntField(default=0)
@@ -249,17 +249,17 @@ class PositionSnapshot(Model):
249249
# total position liquidity
250250
liquidity = fields.DecimalField(max_digits=76, decimal_places=0, default=0)
251251
# amount of token 0 ever deposited to position
252-
deposited_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
252+
deposited_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
253253
# amount of token 1 ever deposited to position
254-
deposited_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
254+
deposited_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
255255
# amount of token 0 ever withdrawn from position (without fees)
256-
withdrawn_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
256+
withdrawn_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
257257
# amount of token 1 ever withdrawn from position (without fees)
258-
withdrawn_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
258+
withdrawn_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
259259
# all time collected fees in token0
260-
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
260+
collected_fees_token0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
261261
# all time collected fees in token1
262-
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
262+
collected_fees_token1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
263263
# internal vars needed for fee computation
264264
# fee_growth_inside_0_last_x128 = fields.BigIntField()
265265
# fee_growth_inside_1_last_x128 = fields.BigIntField()
@@ -286,9 +286,9 @@ class Mint(Model):
286286
# amount of liquidity minted
287287
amount = fields.DecimalField(decimal_places=0, max_digits=76, default=0)
288288
# amount of token 0 minted
289-
amount0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
289+
amount0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
290290
# amount of token 1 minted
291-
amount1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
291+
amount1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
292292
# derived amount based on available prices of tokens
293293
amount_usd = fields.DecimalField(decimal_places=18, max_digits=76, null=True)
294294
# lower tick of the position
@@ -318,11 +318,11 @@ class Burn(Model):
318318
# amount of liquidity burned
319319
amount = fields.DecimalField(decimal_places=0, max_digits=76, default=0)
320320
# amount of token 0 burned
321-
amount0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
321+
amount0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
322322
# amount of token 1 burned
323-
amount1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
323+
amount1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
324324
# derived amount based on available prices of tokens
325-
amount_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
325+
amount_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
326326
# lower tick of position
327327
tick_lower = fields.BigIntField()
328328
# upper tick of position
@@ -350,11 +350,11 @@ class Swap(Model):
350350
# txn origin
351351
origin = fields.CharField(max_length=42) # the EOA that initiated the txn
352352
# delta of token0 swapped
353-
amount0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
353+
amount0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
354354
# delta of token1 swapped
355-
amount1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
355+
amount1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
356356
# derived info
357-
amount_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
357+
amount_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
358358
# The sqrt(price) of the pool after the swap, as a Q64.96
359359
sqrt_price_x96 = fields.DecimalField(decimal_places=0, max_digits=76, default=0)
360360
# the tick after the swap
@@ -374,9 +374,9 @@ class Collect(Model):
374374
# owner of position collect was performed on
375375
owner = fields.CharField(max_length=42, null=True)
376376
# amount of token0 collected
377-
amount0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
377+
amount0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
378378
# amount of token1 collected
379-
amount1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
379+
amount1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
380380
# derived amount based on available prices of tokens
381381
amount_usd = fields.DecimalField(decimal_places=18, max_digits=76, null=True)
382382
# lower tick of position
@@ -400,14 +400,14 @@ class Flash(Model):
400400
# recipient of the flash
401401
recipient = fields.CharField(max_length=42)
402402
# amount of token0 flashed
403-
amount0 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
403+
amount0 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
404404
# amount of token1 flashed
405-
amount1 = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
405+
amount1 = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
406406
# derived amount based on available prices of tokens
407-
amount_usd = fields.DecimalField(decimal_places=2, max_digits=16, default=0)
407+
amount_usd = fields.DecimalField(decimal_places=2, max_digits=32, default=0)
408408
# amount token0 paid for flash
409-
amount0_paid = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
409+
amount0_paid = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
410410
# amount token1 paid for flash
411-
amount1_paid = fields.DecimalField(decimal_places=18, max_digits=76, default=0)
411+
amount1_paid = fields.DecimalField(decimal_places=18, max_digits=96, default=0)
412412
# index within the txn
413413
log_index = fields.BigIntField()

src/dipdup/indexes/evm_subsquid_events/index.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,13 @@ async def _synchronize(self, sync_level: int) -> None:
155155
for handler in self._config.handlers:
156156
typename = handler.contract.module_name
157157
topics.add(self.topics[typename][handler.name])
158+
# FIXME: This is terribly inefficient (but okay for the last mile); see advanced example in web3.py docs.
158159
for level in range(first_level, sync_level):
159160
# NOTE: Get random one every time
160161
level_logs = await self.random_node.get_logs(
161162
{
162163
'fromBlock': hex(level),
163164
'toBlock': hex(level),
164-
'topics': tuple(topics),
165165
}
166166
)
167167
block = await self.random_node.get_block_by_level(level)

0 commit comments

Comments
 (0)