spectrum-finance / ergo-dex-backend Goto Github PK
View Code? Open in Web Editor NEWSpectrum Finance backend services including AMM bots and OrderBook matcher
License: Creative Commons Zero v1.0 Universal
Spectrum Finance backend services including AMM bots and OrderBook matcher
License: Creative Commons Zero v1.0 Universal
Pool operations should be chained.
Implement AMM bots in order to execute operations Deposit|Redeem|Swap.
Issue: there are two API calls which require the p1 parameter (assuming it is pool_id), "pool locks" and "pool stats". Without this information, API users will not know where to get that data and excludes them from using this service.
Currently you can get the pool_id by...
Proposal: include the p1/pool_id value in the response for "all pool stats" API call (which I think makes the most sense).
We need to track and resolve pool state (on-chain <-> predicted)
Issue: the "pools" table is not correctly populating the associated x/y ID ticker values for the respective liquidity pool ID.
Each LP pair has their own ID. For example, ERG/ergopad would have its own unique value and ergopad/ERG would have something else despite the asset ticker ID being the same - they are just switched.
If we run the following for the above example....
select
distinct p.pool_id,
p.x_id,
a_x.ticker as x_ticker,
p.y_id,
a_y.ticker as y_ticker,
a_x.ticker || '/' || a_y.ticker as ticker
from pools p
LEFT JOIN assets a_x ON a_x.id = p.x_id
LEFT JOIN assets a_y ON a_y.id = p.y_id
where (a_x.ticker = 'ergopad' or a_y.ticker = 'ergopad')
and (a_x.ticker = 'ERG' or a_y.ticker = 'ERG')
;
We get the following results:
Row 1
pool_id: 61a579c46d92f2718576fc9839a2a1983f172e889ec234af8504b5bbf10edd89
x_id: 0000000000000000000000000000000000000000000000000000000000000000
x_ticker: ERG
y_id: d71693c49a84fbbecd4908c94813b46514b18b67a99952dc1e6e4791556de413
y_ticker: ergopad
ticker: ERG/ergopad
Row 2
pool_id: d7868533f26db1b1728c1f85c2326a3c0327b57ddab14e41a2b77a5d4c20f4b2
x_id: 0000000000000000000000000000000000000000000000000000000000000000
x_ticker: ERG
y_id: d71693c49a84fbbecd4908c94813b46514b18b67a99952dc1e6e4791556de413
y_ticker: ergopad
ticker: ERG/ergopad
Despite being different pool IDs, the x_id and y_id columns are populating the same values for both and creating an incorrect output for the final ticker column.
It builds and runs succesfully, but not sure if this error is something to worry about?
`
./run.ps1: line 1: :DEX_SOURCES_PATH=: command not found
time="2022-06-04T10:41:30+01:00" level=warning msg="The "DEX_SOURCES_PATH" variable is not set. Defaulting to a blank string."
time="2022-06-04T10:41:30+01:00" level=warning msg="The "DEX_SOURCES_PATH" variable is not set. Defaulting to a blank string."
time="2022-06-04T10:41:30+01:00" level=warning msg="The "DEX_SOURCES_PATH" variable is not set. Defaulting to a blank string."
`
I'm currently running on Asahi ArchLinux arm64.
Upon a 'docker compose up -d' I get the following error:
! events-tracker The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 0.0s
Can I add anything to the docker compose file for the events watcher?
When trying to run HowTo.scala the following error occurs.
sbt "; project amm-executor; test"
[error] ## Exception when compiling 133 sources to C:\Users\didel\ergo-dex-backend\modules\dex-core\target\scala-2.12\classes [error] scala.reflect.internal.FatalError: Error accessing C:\Users\didel\AppData\Local\Coursier\Cache\v1\https\repo1.maven.org\maven2\com\github\pureconfig\pureconfig-core_2.12\0.14.1\pureconfig-core_2.12-0.14.1.jar
I tried with JDK 11, 17, 21 on a Windows 10 and a Debian Linux machine and the same error occured in all scenarios.
" Generate a new unique seed phrase via wallet (e.g. nautilus - just create a new wallet and save seed phrase)
or run(section How to run script
) this script and check line Seed phrase is:
and save seed phrase (24 words) from stdout."
As nautilus only generates 15 word seed phrases it seems to work with both?
The documentation says to send some amount to the wallet, but it should really be elaborated. What is the minimum Erg required to get started? Do you require other tokens to have a pair for liquidity pools?
For someone just getting started this information would be very helpful.
Should depend on contract type:
Currently running the ergo-dex-backend, and after 10 hours of running, kafka-1 docker container shut down and did not restart, causing other containers to start throwing errors. Would suggest doing restart unless stopped or restart always into the default docker compose script
While watching the logs after first launching the bot, I'm getting repeated kafka "TOPIC_ALREADY_EXISTS (Topic 'hc' already exists.) " followed by ergo-amm-executioner new heights.
What does this actually mean? Is this an error?
kafka | [2024-02-20 02:12:03,724] INFO [Controller 1] CreateTopics result(s): CreatableTopic(name='hc', numPartitions=-1, replicationFactor=-1, assignments=[], configs=[]): TOPIC_ALREADY_EXISTS (Topic 'hc' already exists.) (org.apache.kafka.controller.ReplicationControlManager)
Currently, the file content is: JAVA_TOOL_OPTIONS="-Dnetwork.node-uri=http://<my node ip>:9053 -Dexchange.mnemonic='<my ergo mnemonic>' "
In my setup, it worked only when I added '
in the node-uri. To avoid this issue, I suggest it to be changed to the following content:
JAVA_TOOL_OPTIONS="-Dnetwork.node-uri='http://<my node ip>:9053' -Dexchange.mnemonic='<my ergo mnemonic>' "
We need to predict pool state after each operation in the chain.
I didn't copy paste exactly what the error was but it was something along the lines of [ERROR DEX_PATH /modules/blah/blah/blah]
I edit my docker-compose.yml to just use my full path and its working fine now. however didn't work "out of the box"
/home/username/ergo/ergo-dex-backend/modules/utxo-tracker/target/docker/stage
/home/username/ergo/ergo-dex-backend/modules/amm-executor/target/docker/stage
/home/username/ergo/ergo-dex-backend/modules/pool-resolver/target/docker/stage
Brand new installation of ubuntu server 20.04.3
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.