Commit Graph

69 Commits

Author SHA1 Message Date
TAMARA LIPOWSKI
c89fbee0ae feat: add docker-compose.yaml to set up postgres 2025-09-03 08:55:29 -04:00
Tamara
354f61a360 fix: Fix dockerfile and docker-compose for testing suite (#239)
- This was broken after the postgresql-partman update: https://github.com/dbsystel/postgresql-partman-container/pull/32
- Also needed to specify proper env variables

Co-authored-by: TAMARA LIPOWSKI <data.lipowski@extaccount.com>
2025-08-29 18:19:39 -04:00
Louise Poole
ef6c826a8a feat: update test suite to support DCI enabled protocols (#225)
* feat: update tycho-client and support testing DCI enabled protocols

* refactor: improve python Typing

* test: update test suite tycho-simulation dependency

The updated version includes an account_balances fix.

* refactor: use sets instead of lists

* feat: update tycho-client test dependency
2025-06-30 11:44:33 +02:00
mrBovo
fc0fb1e540 BalancerV3: SwapAdapter and Substreams (#126)
* feat: add balancer swapAdapter and Substreams

* fix: undo tycho-substreams logs, ignore abi on rustmft

* ci: prevent warnings from failing CI

* ci: skip size check on CI

* chore: forge fmt

* feat: vault balance from storage

Vault contract tokenBalance message are set according to the vault
storage changes in the `_reserveOf` storage variable VaultStorage.sol
contract
This was the culprit that caused the failure in simulation since
balancer enforces the invariant that `token.balanceOf(vault_addr) == _reservesOf[token]`

* ci: warnings

* fix: avoid duplicated balance changes

* fix: order by ordinal

* chore: format

* feat: extract new contracts before extracting balance changes

* feat: skip unnecessary steps if no balance change is found

* refactor: filter out account balances for tokens that aren't part of any protocol components.

On the indexer side, when we receive an account balance, we need to know about the token. This commit ensure that the token was introduced before we emit any account balance with it.

* refactor: don't index liquidity buffers.

Liquidity buffers rely on rate providers. Therefore we need DCI (feature to be able to index previously created contract) to deal with them.

* refactor: cleanup tests and add docstrings

* chore: lock tycho-substreams version

* ci: set Foundry workflow to use stable foundry

* feat(DCI): Add DCI Entrypoints to BalancerV3 components (#218)

* refactor: fix typo in weighted_pool_factory_contract name

* feat: add rate_providers static attributes

* feat: add DCI entrypoints to BalancerV3 components

* fix: set default trade price to Fraction(0, 1)

* feat: remove buffers as components

Buffers are to be used internally by Boosted pools (stable/weighted pools that use ERC4626 tokens). They are not to be treated as a separate swap component.

* test: update test blocks

Extend tests some tests block range to ensure liquidity was added to the pool and can be simulated on

* feat: remove buffers as components

Remove balance updates for buffer components

* feat: listen for pool pause/unpause events

* chore: formating

* fix: encoding call data

* test: update Balancer V3 tests to use DCI

* test: set indexer log level to info

* docs: add comment on support of boosted pools

* feat: update balancer v3 package version

---------

Co-authored-by: Thales <thales@datarevenue.com>
Co-authored-by: zizou <111426680+flopell@users.noreply.github.com>
Co-authored-by: Louise Poole <louise@datarevenue.com>
Co-authored-by: Louise Poole <louisecarmenpoole@gmail.com>
2025-06-26 12:19:39 +02:00
Zizou
7da01c745b feat: Balancer V2 DCI integration (#219)
* feat: Add DCI Entrypoints to BalancerV2 components

* fix: miscellaneous fixes before Balancer V2 resync

This commit fixes the entrypoints created by Balancer v2 packages, removes some disabled factories and remove support for BPT tokens (this is still to be investigated but so far we won't be able to support them)

* refactor: fix CI and bump version

* chore: update comments

---------

Co-authored-by: Thales <thales@datarevenue.com>
Co-authored-by: zizou <111426680+flopell@users.noreply.github.com>
Co-authored-by: Louise Poole <louise@datarevenue.com>
2025-06-16 11:35:59 +02:00
Louise Poole
de5c9503bc feat: improve test logs (#217)
* feat: improve test logs

* refactor: remove unused code
2025-06-10 10:26:30 +02:00
kayibal
30a6e11363 Fix testing env stup script
- Fails now if any command errors
- Conda environment activation is more stable now
2025-04-30 00:03:08 +01:00
Zach
9740c92129 chore: update simulation dep (#190) 2025-04-03 09:25:09 +02:00
Louise Poole
97cab90b58 fix: fix script dependency check and paths (#186)
Allows you to run the script from outside of the testing directory.
2025-03-27 16:55:37 +01:00
Louise Poole
6acf16a8c6 fix: update tycho indexer testing dep to 0.60.0 (#183) 2025-03-25 17:01:09 +01:00
Louise Poole
494205b859 chore: update testing simulation dependency (#182)
Update to a version that supports account balances
2025-03-21 17:58:25 +02:00
Zizou
b1e7ba9e2f refactor(substreams): add rust-toolchain to the templates and modules. (#155)
* refactor(substreams): add `rust-toolchain` to the templates and modules.

This freezes the wasm output for each module, allowing us to have full control over each packages and when we break the modules hashes.

* fix(testing): allow no `initialized_accounts` in tests

---------

Co-authored-by: zizou <111426680+flopell@users.noreply.github.com>
2025-02-17 08:29:07 +00:00
tvinagre
4eea400af5 docs: remove local testing docs and point to web docs (#151) 2025-02-06 16:16:13 +00:00
tvinagre
dbb79a6dca feat(testing): Improve SDK Testing module (#148)
* feat: import to tycho simulation initialized accounts defined on yaml file

* feat: update tycho-simulation dep, black formatting

* feat: Add additional logging to test runner

* feat: Fail test if expected component fails to get decoded

* feat: Warn if initialized contracts are not specified on ProtocolComponent contracts
2025-02-05 15:48:45 -03:00
Thales Lima
52072849f6 feat: Remove testing Dockerfile as it's currently broken 2025-02-05 13:46:42 -03:00
Louise Poole
ffd6da916a docs: improve testing docs (#133) 2025-01-16 15:49:46 +02:00
Zizou
98c63c685f refactor: stop using private pypi (#132)
* refactor: stop using private pypi

This was required because our repos were not public. Now that they are, people can directly access our Python packages and therefore they don't need access to our private codeartifact anymore

* docs: add a list of dependencies in the readme and early check in the setup env script

---------

Co-authored-by: zizou <111426680+flopell@users.noreply.github.com>
2025-01-16 09:07:57 +00:00
Louise Poole
97a20b60c0 fix: address missed repo renaming (#128) 2025-01-07 16:13:01 +00:00
Zizou
aca3bc4f71 refactor(curve): Update testing suite and remove metapools factories (#109)
* chore(lib): update testing suite with new naming

* refactor(curve): remove metapool

These pools aren't compatible yet due to how they are created (first the lp token and then later the pool). We will need DCI to handle this properly.

* chore(lib): use correct package name for tycho-simulation

---------

Co-authored-by: zizou <111426680+flopell@users.noreply.github.com>
2024-11-07 05:05:37 +00:00
Zizou
eea8b27112 fix(balancer): miscellaneous improvements before resync (#104)
* fix(balancer): ignore self balance change

Euler pool emit a balance change for the pool itself. We don't want to have it because it's an unknown token from Tycho's perspective.

example: https://etherscan.io/tx/0x4a9ea683052afefdae3d189862868c3a7dc8f431d1d9828b6bfd9451a8816426#eventlog#338

* refactor(balancer): rename balancer module to balancer-v2

* ci: make clippy happy

---------

Co-authored-by: zizou <111426680+flopell@users.noreply.github.com>
2024-10-31 15:12:37 +02:00
Mattia Papa
3013cd9bfd Sfraxeth adapter and substream with SDK integration (#87)
* first commit

* feat: implemented get tokens and improved modifier

* feat: added missing functions (to implement)

* feat: implemented getPoolIds

* feat: implemented getCapabilities

* feat: implemented getLimits function

* fix: fixed constructor

* feat and fix: implemented testGetLimitsFraxEthV3 and fixed getLimits

* feat: implementing getPriceAt function

* feat and fix: finished implementing getPriceAt, fixed modifier

* feat: price function and tests implemented

* fix: removed onlySupportedTokens modifier from getPriceAt and applied it in price and swap function

* feat: implemented sell, buy, and swap functions

* implementing final tests

* aligned with main branch

* fixes

* fix: Review Fixes

* feat: 🎨 sfraxeth substream initial scaffolding

* fix: 🎨 protocol component creation at deployment block

* build: 💚 cargo build

* feat: 🎨 map proper event to balance changes

* fix: 🚚 remove unnecessary files

* fix: 💚 ci checks

Due to the CI checks requiring the latest rust nightly, the rust-lang organisation
introduced new doc related rules. This commit fixes the CI errors by making
the necessary changes to the comments in substreams-balancer comments

* fix: 🐛 wasm output name

* fix: 🐛 update starting block = deployment block -1

* feat: 🎨 add store for reward cycles and update balances accounting after after deposit before Withdraw

* feat: 🎨 finish setting up block reward logic

* docs: 📝 add comments on extra module

* build: 📌 adapt dependencies to workspace dependencies

setting prost-types to workspace version causes build errors

* feat: 🎨 add support for several EVM compatible networks

* fix: 🐛 update balance delta accounting logic following the `NextRewardCycle` event only

* fix: 🐛 hex address string param encoding

* fix: 🐛 deployment transaction check

* ci: 💚 ci check passing

* fix: 🐛 issues with hex-binary encoding

* refactor: ♻️ address mappings for various networks

* fix: 💚 formatting

* feat: Implemented testPoolBehaviour

* chore: Removed unused comments

* feat: ⬆️ update to recent sdk

* feat: 🎨 testing setup

* test:  setup test environminte for sfraxeth

* fix: 🐛 unwrap error in map_protocol_changes

* build: ⬆️ update rust version

* build:  remove unnecessary deps

* build: 🚚 remove unnecessary pb/tycho

* fix: 🐛 remove balance owner attribute

* fix: 🐛 remove unnecessary static attributes

* fix: 🐛 remove manual updates

* fix: 🔥 remove unused data model from contract.proto

* fix: 🐛 filter by known components

* feat:  use store delta for reward change accounting

* refactor: ♻️ remove shallow create vault component

* feat:  replace is_deployment_tx logic with simpler txn match

* test:  manual testing with inspection against etherscan

https://etherscan.io/address/0xac3E018457B222d93114458476f3E3416Abbe38F#events

* ci: 💚 ci checks

* fix: 🐛 map_protocol_components output data

* fix: 🐛 output type on map_protocol_changes

* test: 🧪 skip balance checks

* fixed FraxV3FrxEthAdapter arguments for constructor in manifest.yaml

* fix: 🐛 adapter error with overflow/underflow and addresses

* restore: restored previous adater version

* fix: set minimum swap amount to prevent overflow/underflow

* fix: set minimum swap amount only for sfrxETH -> frxETH

* improve: added print block_number to runner.py when get_amout_out fails

* removed console.log

* alignment with propeller main

* Update forge-std submodule reference to include ds-test

* installed protosim_py 0.21.0

* commented out minimum swap amount for sfrxEth -> frxEth pair

* updated adapter limits

* working on fixes

* fix: Adjust getLimits according to protocol limitation.

Previously limits were estimated with token supplies, this commit simplifies limits and adjusts them so they correspond closely with what is supported by the sfrxETH contract.

* chore: fmt

* wip: Changed ubuntu to 20.04, fmt adapters

* wip: Updated python tests

* wip: Trying with ubuntu: latest

* chore: fmt adapters

* wip: Using ubuntu 20.04

* chore: Switched back to ubuntu-latest

---------

Co-authored-by: Ignazio Bovo <ignazio@jsgenesis.com>
Co-authored-by: domenicodev <domenico.romeo3919@gmail.com>
Co-authored-by: kayibal <alan@datarevenue.com>
Co-authored-by: domenicodev <domenico.rom3@gmail.com>
2024-10-23 14:17:45 +01:00
kayibal
378c1c2786 feat(testing): Test multiple amounts. 2024-10-23 12:54:15 +01:00
zizou
c90b190936 fix: correctly handle hexbytes convertion
There was a bug if the value was already a HexBytes that would lead to some tiny changes on the HexBytes, leading to our test being too permissive.
2024-09-06 17:27:31 +02:00
zizou
0e3c1268dd fix: correctly run pre_build.sh in setup_env context instead of in a subshell 2024-09-04 11:14:09 +02:00
Zizou
9c140a71af Merge pull request #67 from propeller-heads/zz/sdk/improve-onboarding-process
refactor: make onboarding easier
2024-08-20 11:33:20 +02:00
Florian Pellissier
c7b1796f7d refactor(testing): make setup_env.sh runnable only from within /testing 2024-08-20 09:07:34 +02:00
Florian Pellissier
2ad12cb659 docs(indexing): miscellaneous small docs improvements 2024-08-20 09:06:52 +02:00
Florian Pellissier
37f1fbfe04 docs(substreams): miscellaneous docs improvements and update 2024-08-19 11:56:55 +02:00
Florian Pellissier
bc2cd6bab2 refactor(testing): miscellaneous improvements and bugfixes
Includes bugfix on `tycho-indexer-client` and `protosim_py`, a script to simplify setting up testing python env and cli improvements. Also add support for building runtime for SwapAdapters with many args that was bugged before.
2024-08-19 11:56:52 +02:00
Florian Pellissier
1f2316713f fix(curve): Update integration tests 2024-08-09 10:39:58 +02:00
Thales Lima
5eea31db40 Rename adapter_handler to adapter_builder and move responsibilities 2024-08-08 17:58:20 -03:00
Thales Lima
c0382fefdf Add aftermath logs 2024-08-08 17:58:20 -03:00
Thales Lima
c4024b9849 Better error diff and colorize it 2024-08-08 17:58:20 -03:00
Florian Pellissier
139f7ac3f5 refactor(substreams-testing): Remove shallow functions, be more 🐍 2024-08-08 17:58:20 -03:00
Florian Pellissier
1f9fe8d583 refactor(substreams-testing): Use Pydantic validators, Hexbytes and improve description 2024-08-08 17:58:20 -03:00
Florian Pellissier
95efda0423 refactor(substreams-testing): Use Pydantic to deserialize test_assets.yaml 2024-08-08 17:58:20 -03:00
kayibal
09d266a810 fix: Update requirements.txt
Assume both protosim_py and tycho-client are available from pypi.
2024-08-08 17:58:20 -03:00
kayibal
e302bfb4a6 feat: Request only contracts of interest
Instead of requesting all contracts just get what is specified by the components.
2024-08-08 17:58:20 -03:00
kayibal
9f4503e2a9 fix: Misc fixes around byte encoding.
Also initialize TychoDB for each test case individually.
2024-08-08 17:58:20 -03:00
Thales Lima
5238141771 Fix hexbytes comparison, fix attribute access 2024-08-08 17:58:20 -03:00
Thales Lima
cb6e997375 Add token_factory 2024-08-08 17:58:20 -03:00
Thales Lima
d0c248fcb6 Add build_snapshot_message method 2024-08-08 17:58:20 -03:00
Thales
d893ab264c Start using external modules 2024-08-08 17:58:20 -03:00
Thales Lima
8ea02613a2 Improve README, add foundry to docker, add handler to build targets 2024-08-08 17:58:20 -03:00
Thales
11619bf8be Add initialization-block to tycho runner, fix docker and improve docs 2024-08-08 17:58:20 -03:00
kayibal
2e50eaf4ba feat(testing): Nicer cli; expose trace parameter
Nicer name for the cli args and expose the vm_traces flag to quickly enable/disable tracing.
2024-08-01 12:09:58 +02:00
kayibal
75b66a85af fix(balancer): Get all balancer tests working. 2024-08-01 12:03:01 +02:00
Florian Pellissier
a6cff51bf6 feat: SDK improvements
Add a way to pull stateless contracts code from node, add more settings to test_assets.yaml, add logic to allow dynamic stateless contract by calling another contract
2024-07-30 16:24:20 +01:00
kayibal
3fab5d6ea7 chore(testing): Move requirements.txt 2024-07-30 11:48:16 +01:00
kayibal
cc91ee27f6 chore(testing): Remove hard sell limit flag.
The setting is now inferred from the adapters capabilities.
2024-07-29 16:49:02 +01:00