Skip to content

Commit 051aee2

Browse files
Update Quipuswap contracts in demo (#53)
1 parent 7f90c0e commit 051aee2

File tree

18 files changed

+222
-55
lines changed

18 files changed

+222
-55
lines changed

src/demo_quipuswap/dipdup.yml

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,13 @@ database:
77

88
contracts:
99
kusd_dex_mainnet:
10-
address: KT1CiSKXR68qYSxnbzjwvfeMCRburaSDonT2
11-
typename: quipu_fa12
12-
tzbtc_dex_mainnet:
13-
address: KT1N1wwNPqT5jGhM91GQ2ae5uY8UzFaXHMJS
10+
address: KT1K4EwTpbvYN9agJdjpyJm4ZZdhpUNKB3F6
1411
typename: quipu_fa12
1512
kusd_token_mainnet:
1613
address: KT1K9gCRgaLRFKTErYt1wVxA3Frb9FjasjTV
1714
typename: fa12_token
18-
tzbtc_token_mainnet:
19-
address: KT1PWx2mnDueood7fEmfbBDKx1D9BAnnXitn
20-
typename: fa12_token
2115
hdao_dex_mainnet:
22-
address: KT1V41fGzkdTJki4d11T1Rp9yPkCmDhB7jph
16+
address: KT1QxLqukyfohPV5kPkw97Rs6cw1DDDvYgbB
2317
typename: quipu_fa2
2418
hdao_token_mainnet:
2519
address: KT1AFA2mwNUMNd4SsujE1YYp29vd8BZejyKW
@@ -36,7 +30,14 @@ templates:
3630
datasource: tzkt_staging_mainnet
3731
contracts:
3832
- <dex_contract>
33+
types:
34+
- transaction
35+
- origination
3936
handlers:
37+
- callback: on_fa12_origination
38+
pattern:
39+
- type: origination
40+
originated_contract: <dex_contract>
4041
- callback: on_fa12_token_to_tez
4142
pattern:
4243
- type: transaction
@@ -61,6 +62,11 @@ templates:
6162
- type: transaction
6263
destination: <token_contract>
6364
entrypoint: transfer
65+
- callback: on_fa12_transfer
66+
pattern:
67+
- type: transaction
68+
destination: <dex_contract>
69+
entrypoint: transfer
6470
- callback: on_fa12_divest_liquidity
6571
pattern:
6672
- type: transaction
@@ -83,7 +89,14 @@ templates:
8389
datasource: tzkt_staging_mainnet
8490
contracts:
8591
- <dex_contract>
92+
types:
93+
- transaction
94+
- origination
8695
handlers:
96+
- callback: on_fa2_origination
97+
pattern:
98+
- type: origination
99+
originated_contract: <dex_contract>
87100
- callback: on_fa2_token_to_tez
88101
pattern:
89102
- type: transaction
@@ -100,23 +113,28 @@ templates:
100113
- type: transaction
101114
destination: <token_contract>
102115
entrypoint: transfer
103-
- callback: on_fa20_invest_liquidity
116+
- callback: on_fa2_invest_liquidity
104117
pattern:
105118
- type: transaction
106119
destination: <dex_contract>
107120
entrypoint: investLiquidity
108121
- type: transaction
109122
destination: <token_contract>
110123
entrypoint: transfer
111-
- callback: on_fa20_divest_liquidity
124+
- callback: on_fa2_transfer
125+
pattern:
126+
- type: transaction
127+
destination: <dex_contract>
128+
entrypoint: transfer
129+
- callback: on_fa2_divest_liquidity
112130
pattern:
113131
- type: transaction
114132
destination: <dex_contract>
115133
entrypoint: divestLiquidity
116134
- type: transaction
117135
destination: <token_contract>
118136
entrypoint: transfer
119-
- callback: on_fa20_withdraw_profit
137+
- callback: on_fa2_withdraw_profit
120138
pattern:
121139
- type: transaction
122140
destination: <dex_contract>
@@ -134,14 +152,6 @@ indexes:
134152
symbol: kUSD
135153
decimals: 18
136154

137-
# tzbtc_mainnet:
138-
# template: quipuswap_fa12
139-
# values:
140-
# dex_contract: tzbtc_dex_mainnet
141-
# token_contract: tzbtc_token_mainnet
142-
# symbol: tzBTC
143-
# decimals: 8
144-
145155
hdao_mainnet:
146156
template: quipuswap_fa2
147157
values:
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import Optional
2+
3+
import demo_quipuswap.models as models
4+
from demo_quipuswap.types.quipu_fa12.storage import QuipuFa12Storage
5+
from dipdup.models import OperationData, OperationHandlerContext, OriginationContext, TransactionContext
6+
7+
8+
async def on_fa12_origination(
9+
ctx: OperationHandlerContext,
10+
quipu_fa12_origination: OriginationContext[QuipuFa12Storage],
11+
) -> None:
12+
if ctx.template_values is None:
13+
raise Exception('This index must be templated')
14+
15+
symbol = ctx.template_values['symbol']
16+
17+
for address, value in quipu_fa12_origination.storage.storage.ledger.items():
18+
shares_qty = value.balance
19+
await models.Position(trader=address, symbol=symbol, shares_qty=shares_qty).save()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from typing import Optional
2+
3+
import demo_quipuswap.models as models
4+
from demo_quipuswap.types.quipu_fa12.parameter.transfer import TransferParameter
5+
from demo_quipuswap.types.quipu_fa12.storage import QuipuFa12Storage
6+
from dipdup.models import OperationData, OperationHandlerContext, OriginationContext, TransactionContext
7+
8+
9+
async def on_fa12_transfer(
10+
ctx: OperationHandlerContext,
11+
transfer: TransactionContext[TransferParameter, QuipuFa12Storage],
12+
) -> None:
13+
if ctx.template_values is None:
14+
raise Exception('This index must be templated')
15+
16+
symbol = ctx.template_values['symbol']
17+
from_address = transfer.parameter.from_
18+
to_address = transfer.parameter.to
19+
value = int(transfer.parameter.value)
20+
21+
from_position, _ = await models.Position.get_or_create(trader=from_address, symbol=symbol)
22+
from_position.shares_qty -= value # type: ignore
23+
assert from_position.shares_qty >= 0, transfer.data.hash
24+
await from_position.save()
25+
26+
to_position, _ = await models.Position.get_or_create(trader=to_address, symbol=symbol)
27+
to_position.shares_qty += value # type: ignore
28+
assert to_position.shares_qty >= 0, transfer.data.hash
29+
await to_position.save()

src/demo_quipuswap/handlers/on_fa12_withdraw_profit.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
async def on_fa12_withdraw_profit(
1111
ctx: OperationHandlerContext,
1212
withdraw_profit: TransactionContext[WithdrawProfitParameter, QuipuFa12Storage],
13-
transaction_0: Optional[OperationData],
13+
transaction_0: Optional[OperationData] = None,
1414
) -> None:
1515
if ctx.template_values is None:
1616
raise Exception('This index must be templated')

src/demo_quipuswap/handlers/on_fa20_divest_liquidity.py renamed to src/demo_quipuswap/handlers/on_fa2_divest_liquidity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from dipdup.models import OperationHandlerContext, TransactionContext
99

1010

11-
async def on_fa20_divest_liquidity(
11+
async def on_fa2_divest_liquidity(
1212
ctx: OperationHandlerContext,
1313
divest_liquidity: TransactionContext[DivestLiquidityParameter, QuipuFa2Storage],
1414
transfer: TransactionContext[TransferParameter, Fa2TokenStorage],

src/demo_quipuswap/handlers/on_fa20_invest_liquidity.py renamed to src/demo_quipuswap/handlers/on_fa2_invest_liquidity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from dipdup.models import OperationHandlerContext, TransactionContext
99

1010

11-
async def on_fa20_invest_liquidity(
11+
async def on_fa2_invest_liquidity(
1212
ctx: OperationHandlerContext,
1313
invest_liquidity: TransactionContext[InvestLiquidityParameter, QuipuFa2Storage],
1414
transfer: TransactionContext[TransferParameter, Fa2TokenStorage],
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import Optional
2+
3+
import demo_quipuswap.models as models
4+
from demo_quipuswap.types.quipu_fa2.storage import QuipuFa2Storage
5+
from dipdup.models import OperationData, OperationHandlerContext, OriginationContext, TransactionContext
6+
7+
8+
async def on_fa2_origination(
9+
ctx: OperationHandlerContext,
10+
quipu_fa2_origination: OriginationContext[QuipuFa2Storage],
11+
) -> None:
12+
if ctx.template_values is None:
13+
raise Exception('This index must be templated')
14+
15+
symbol = ctx.template_values['symbol']
16+
17+
for address, value in quipu_fa2_origination.storage.storage.ledger.items():
18+
shares_qty = value.balance
19+
await models.Position(trader=address, symbol=symbol, shares_qty=shares_qty).save()
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import Optional
2+
3+
import demo_quipuswap.models as models
4+
from demo_quipuswap.types.quipu_fa2.parameter.transfer import TransferParameter
5+
from demo_quipuswap.types.quipu_fa2.storage import QuipuFa2Storage
6+
from dipdup.models import OperationData, OperationHandlerContext, OriginationContext, TransactionContext
7+
8+
9+
async def on_fa2_transfer(
10+
ctx: OperationHandlerContext,
11+
transfer: TransactionContext[TransferParameter, QuipuFa2Storage],
12+
) -> None:
13+
if ctx.template_values is None:
14+
raise Exception('This index must be templated')
15+
16+
transfer_parameter = transfer.parameter.__root__[0]
17+
18+
symbol = ctx.template_values['symbol']
19+
from_address = transfer_parameter.from_
20+
from_position, _ = await models.Position.get_or_create(trader=from_address, symbol=symbol)
21+
22+
for transfer_tx in transfer_parameter.txs:
23+
to_address = transfer_tx.to_
24+
value = int(transfer_tx.amount)
25+
26+
from_position.shares_qty -= value # type: ignore
27+
assert from_position.shares_qty >= 0, transfer.data.hash
28+
29+
to_position, _ = await models.Position.get_or_create(trader=to_address, symbol=symbol)
30+
to_position.shares_qty += value # type: ignore
31+
assert to_position.shares_qty >= 0, transfer.data.hash
32+
await to_position.save()
33+
34+
await from_position.save()

src/demo_quipuswap/handlers/on_fa20_withdraw_profit.py renamed to src/demo_quipuswap/handlers/on_fa2_withdraw_profit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
from dipdup.models import OperationData, OperationHandlerContext, OriginationContext, TransactionContext
88

99

10-
async def on_fa20_withdraw_profit(
10+
async def on_fa2_withdraw_profit(
1111
ctx: OperationHandlerContext,
1212
withdraw_profit: TransactionContext[WithdrawProfitParameter, QuipuFa2Storage],
13-
transaction_0: Optional[OperationData],
13+
transaction_0: Optional[OperationData] = None,
1414
) -> None:
1515

1616
if ctx.template_values is None:
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# generated by datamodel-codegen:
2+
# filename: transfer.json
3+
4+
from __future__ import annotations
5+
6+
from pydantic import BaseModel, Field
7+
8+
9+
class TransferParameter(BaseModel):
10+
from_: str = Field(..., alias='from')
11+
to: str
12+
value: str

0 commit comments

Comments
 (0)