From ad86d4514008e6df0c88037e515c98555f4867a0 Mon Sep 17 00:00:00 2001 From: Harald Heckmann Date: Tue, 2 Apr 2024 16:43:31 +0530 Subject: [PATCH] New Asset System - Prepare merge into main (#1292) * Merge release v0.4.2 (#1174) * Update versions (#1168) * Add updated weights from reference machine (#1169) * Add license header Co-authored-by: Chralt --------- Co-authored-by: Chralt * Remove migrations (#1180) * Filter admin functions for main-net (#1190) filter admin functions for main-net * Add debug assertions for slashes and reserves (#1188) * add debug assertions for missing slashes * place debug_assert for unreserves * Add some verify checks to court (#1187) add some verify checks to court * Bypass battery stations contracts call filter for court, parimutuel, order book markets (#1185) update contracts call filter * Fix failing court benchmark (#1191) * fix court assertion for resolve_at * remove unnecessary variable * mirror mock and actual impl for DisputeResolution * Implement trusted market close (#1184) * implement trusted market close * remove unnecessary benchmark helper function * Update zrml/prediction-markets/src/lib.rs Co-authored-by: Malte Kliemann * remove unnecessary function * check market end * check auto close * add invalid market status test --------- Co-authored-by: Malte Kliemann * Modify court events for indexer (#1182) * modify events for indexer * gracefully handle panicers * handle binary search by key error * improve style * Ensure MinBetSize after fee (#1193) * handle own existential deposit errors * use require_transactional * correct benchmark and test min bet size amounts * Replace fixed math operations with traited versions (#1149) * Replace `bmul` and `bdiv` with traited versions * Restructure directories * Replace `saturating_*` from neo-swaps * Fix formatting * Restructure zrml-swaps math * Implement and test `b*` * Fix formatting * Use new math in orderbook-v1 * Replace checked multiplication with new math * Use correct rounding in neo-swaps * Add docs * Update licenses * Remove `fixed` module from `primitives` * Fix formatting * Update primitives/src/math/fixed.rs Co-authored-by: Harald Heckmann --------- Co-authored-by: Harald Heckmann * Add env_logger and add force-debug feature (#1205) * add env_logger and add force-debug feature * taplo fmt, fix copyrights * Update zrml/styx/src/mock.rs Co-authored-by: Malte Kliemann * Update zrml/rikiddo/src/mock.rs Co-authored-by: Malte Kliemann * update comment to clarify logging --------- Co-authored-by: Malte Kliemann * Inflate defensively (#1195) * inflate defensively * add tests * Update zrml/court/src/tests.rs Co-authored-by: Malte Kliemann * fix test * fix test name --------- Co-authored-by: Malte Kliemann * Maintain order book (#1183) * integrate market creator fees into orderbook * edit tests * update tests * modify tests * avoid order side * Update primitives/src/traits/distribute_fees.rs Co-authored-by: Malte Kliemann * remove asset and account from get_fee api call * take base asset fees from fill_order * adjust orderbook for taking fees in fill_order * adjust without order side for fill_order * adapt to avoid concept of order side * adapt benchmarks, tests and weights, restructure * use DispatchResult * remove unused import * do not adjust maker amount for place_order * correct fuzz of orderbook * check if maker_amount is zero * fix order book name in benchmarks * use remove instead of cancel order book * correct order book test names * update READMEs * fmt * add tests * use minimum balance as min order size * Update zrml/orderbook/README.md Co-authored-by: Malte Kliemann * Update zrml/orderbook/README.md Co-authored-by: Malte Kliemann * Apply suggestions from code review Co-authored-by: Malte Kliemann * prettier orderbook md * remove comments from benchmarks * fix tests and benchmarks readibility * use order book instead of orderbook * clarify error message * clarify comments * rename is to ensure * error for repatriate * fix unnecessary clone * correct mocks behaviour * improve test * improve test of near full fill error * use turbofish syntax * add filled_maker_amount to event * split tests * combine two functions, add docs * abandon get_fees * fix order book tests and mock * remove check for impossible behaviour * fix toml and benchs * prepare migration * add migration for order structure * return zero fees if transfer fails * delete unnecessary assert * fix naming * fix naming the second * fix maker fill description * add scoring rule check to remove order * fix post_upgrade * fix terminology * Update zrml/orderbook/src/migrations.rs Co-authored-by: Malte Kliemann * use storage root check in migration test * Update zrml/orderbook/src/lib.rs Co-authored-by: Harald Heckmann * Update zrml/orderbook/src/lib.rs Co-authored-by: Harald Heckmann * Update zrml/orderbook/src/lib.rs Co-authored-by: Harald Heckmann * delete debug_assert --------- Co-authored-by: Malte Kliemann Co-authored-by: Harald Heckmann * Implement AMM 2.0 (#1173) * Replace `bmul` and `bdiv` with traited versions * Restructure directories * Replace `saturating_*` from neo-swaps * Fix formatting * Restructure zrml-swaps math * Implement and test `b*` * Fix formatting * Use new math in orderbook-v1 * Replace checked multiplication with new math * Use correct rounding in neo-swaps * Add docs * Update licenses * Remove `fixed` module from `primitives` * Fix formatting * . * Rewrite math functions * Remove training wheels * Fix docs.pdf * Fix quotes * Add tests for buying * Add tests for selling and improve error names * Update docs * Check adjusted amount in for numerical bounds * Remove unused implementations * Adjust docs * Add stress test exploring various scenarios * Add swap fees to stress test * Add underscore separators * Clean up * Benchmark `buy` as function of `asset_count` * Update benchmarks * Clippy fix * Fix benchmark tests * Update benchmarks of zrml-prediction-markets * Fix broken comment * Add comment explaining benchmark spot prices * Use clearer constants for `amount_in` in tests * Update zrml/neo-swaps/src/traits/pool_operations.rs Co-authored-by: Chralt * Fix botched merge * Fix merge * Update benchmarks * Update zrml/neo-swaps/docs/docs.tex Co-authored-by: Harald Heckmann * Apply suggestions from code review Co-authored-by: Harald Heckmann * Rename `Fixed` and clean up * Hotfix exponential function and extend tests * Complete math test suite * Fix broken sentence * Remove unused imports * Extend `ln` test cases * Merge & fix formatting --------- Co-authored-by: Chralt Co-authored-by: Harald Heckmann * Implement Liquidity Tree (#1178) * Replace `bmul` and `bdiv` with traited versions * Restructure directories * Replace `saturating_*` from neo-swaps * Fix formatting * Restructure zrml-swaps math * Implement and test `b*` * Fix formatting * Use new math in orderbook-v1 * Replace checked multiplication with new math * Use correct rounding in neo-swaps * Add docs * Update licenses * Remove `fixed` module from `primitives` * Fix formatting * Add liquidity tree draft * Fix compiler error in draft * Clean up `propagate_fees` * Add docs * Reorganize * Clean up, add max iterations * Remove migrations * Prepare switch to bounded vector * Use `BoundedVec` * Use bounded `BTreeMap` and insert `LiquidityTree` into neo-swaps * Resolve TODO * Clean up tests * Add migration and fix clippy errors * Make tree depth a generic * Make tree depth a config parameter * Update runtime complexities * Add benchmarking utilities * Fix runtime complexity for `deploy_pool` * Add missing lazy propagation * Fix comment * Fix error type * Add `join` benchmarking and fix a bug in `LiquidityTree` * Clean up benchmarks * Fix clippy issues * Remove unnecessary type hint * Fix bugs in liquidity tree * Fix comments * Some fixes in benchmarks * Implement `BenchmarkHelper` * Update benchmarks to use the LT * Clean up and format * Add testing framework for liquidity trees * Add first extensive test and fix a bug * Add more tests * Clean up test * Add news tests and use better numerics for ratio calculations * Make docs more explicit * Add tests for `exit` * Add tests for deposit fees * Add tests for getters * Clean up tests some more * Finalize liquidity tree tests * Clean up comments * Introduce exit fees * Rewrite `exit_works` * Fix liquidity parameter calculation * Make test a bit more complex * Test liquidity shares * Clean up tests * Update test for destruction * Enhance `exit_destroys_pool` test * More cleanup * Add test for full tree * Add tests for `join` * Improve test * Test withdrawal * Clean up the test * Add test for noop * Add minimum relative liquidity * Verify that buys deduct the correct amount of fees * Add last tests * Add notes about the liquidity tree * Fix benchmarks * Fix clippy errors * Fix benchmarks * Do more work on benchmarks * Fix benchmarks, deduce max tree depth * Remove already solved TODO * Document macros * Remove TODO (not a good idea to edit LaTeX docs now) * Fix `bmul_bdiv` * Make `bmul_bdiv_*` not implemented * Double-check that there's a non-zero check for `ratio` * Fix formatting * Fix taplo formatting * Remove TODO * Remove TODOs and fix documents * Update primitives/src/math/fixed.rs Co-authored-by: Chralt * Mark `SoloLp` as deprecated * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Make `bmul_bdiv` a little more idiomatic * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Update zrml/neo-swaps/README.md Co-authored-by: Chralt * Rewrite and format `README.md` * Fix comment about existential deposit * Remove FIXME * Add a check against misconfiguration of the pallet * Fix field docstrings * Add comment about `assert_ok_with_transaction` * Update zrml/neo-swaps/src/mock.rs Co-authored-by: Chralt * Format code * Fix comment * Prettify extrinsic calls in benchmarks * Improve code quality of `assert_pool_state!` * Extend comment about order of abandoned nodes * Clarify the meaning of "leaf" in `is_leaf` * Rename `index_maybe` to `opt_index` * Add unexpected storage overflow error for bounded objects * Rename `UnclaimedFees` to `UnwithdrawnFees` * Fix documentation * Use enum to signal update direction in `update_descendant_stake` * Add verification to `join_*` benchmarks * Improve documentation * Use builtin log * Remove illegal token from `README.md` * Update zrml/neo-swaps/src/types/liquidity_tree.rs Co-authored-by: Chralt * Fix unintentional doctest * Improve `mutate_children` * Add helpful comment * Update zrml/neo-swaps/src/types/liquidity_tree.rs Co-authored-by: Chralt * Fix migration * Fix balances in parachain mock * use PartialEqNoBound and CloneNoBound for tree * Fix formatting * Make `debug_assert!` more clear * Redesign node assignment * Clean up comments * Add some storage overflow errors * Introduce `LiquidityTreeChildIndices` * Remove outdated docs * Rename `update_descendant_stake` * Remove `Default` usage * Make liquidity tree types `pub(crate)` where possible * Make all fields of `Node` only `pub(crate)` * Make `Node` an associated type of `LiquidityTreeHelper` * Update zrml/neo-swaps/src/lib.rs Co-authored-by: Harald Heckmann * Fix comment * Update zrml/neo-swaps/src/types/liquidity_tree.rs Co-authored-by: Harald Heckmann * Fix tests * Prettify `path_to_node` * Add max iterations to `path_to_node` * Add test for complex liquidity tree interactions * Improve documentation of `LiquidityTreeChildIndices` * Reorganize crate structure * Update weights and fix formatting --------- Co-authored-by: Chralt Co-authored-by: Chralt98 Co-authored-by: Harald Heckmann * Improve XCM fee handling (#1225) * Fix padding of foreign fees in Zeitgeist runtime * Fix padding of foreign fees in Battery Station runtime * Format * Update copyright * Use adjusted_balance function * Remove court and global disputes from call filter for the main-net (#1226) * remove from call filter * update copyright * Sunset old AMMs and their pools (#1197) * Replace `bmul` and `bdiv` with traited versions * Restructure directories * Replace `saturating_*` from neo-swaps * Fix formatting * Restructure zrml-swaps math * Implement and test `b*` * Fix formatting * Use new math in orderbook-v1 * Replace checked multiplication with new math * Use correct rounding in neo-swaps * Add docs * Update licenses * Remove `fixed` module from `primitives` * Fix formatting * . * Rewrite math functions * Remove training wheels * Fix docs.pdf * Fix quotes * Add tests for buying * Add tests for selling and improve error names * Update docs * Check adjusted amount in for numerical bounds * Remove unused implementations * Adjust docs * Add stress test exploring various scenarios * Add swap fees to stress test * Add underscore separators * Clean up * Benchmark `buy` as function of `asset_count` * Update benchmarks * Clippy fix * Fix benchmark tests * Update benchmarks of zrml-prediction-markets * Fix broken comment * Add comment explaining benchmark spot prices * Use clearer constants for `amount_in` in tests * Update zrml/neo-swaps/src/traits/pool_operations.rs Co-authored-by: Chralt * Fix botched merge * Fix merge * Update benchmarks * Remove `pool_*_subsidy` * Remove `distribute_pool_share_rewards` * Remove `end_subsidy_phase` * Remove `destroy_pool_in_subsidy_phase` * Remove `MinSubsidy*` * Remove `SubsidyProviders` * Remove `start_subsidy` * Rewrite `create_pool` * Rewrite `swap_exact_amount_in` * Rewrite `swap_exact_amount_out` * Rewrite utility functions * Remove Rikiddo from weight calculation * Remove Rikiddo from zrml-swaps * Remove unused errors * Remove `ScoringRule::Rikiddo...` * Remove `*SubsidyPeriod` * Remove Rikiddo-related storage and events * Remove automatic opening of pools * Remove `open_pool` from prediction-markets * Remove `Swaps::close_pool` from prediction-markets * Remove `clean_up_pool` from prediction-markets * Remove `clean_up_pool` from `Swaps` trait * Remove CPMM deployment from prediction-markets * Remove automatic arbitrage * Move `market_account` back to prediction-markets * Remove unused market states * Fix fuzz tests * Implement market migration * Minor changes * Fix migration behavior * Remove creator fees from swaps * Fix try-runtime * Fix clippy issues * Remove `LiquidityMining` from swaps * Fix `get_spot_prices` * Take first step to remove `MarketCommons` from swaps * Remove `MarketCommons` from swaps * Rewrite `PoolStatus` * Move `Pool*` to swaps * Use `Bounded*` types in `Pool` * Finish swaps migration * Add missing files * Fix formatting and clippy errors * Remove `pool_status.rs` * Ignore doctests * Fix fuzz tests * Add prediciton-markets migration * Test prediction-markets migration * Finish tests of the market-commons migration * Add migrations to runtime and fix various errors * Clean up * Clean up * Format code * Fix pool migration behavior * Remove `MarketId` from swaps * Fix formatting * Fix formatting * Remove `CPMM` and allow other scoring rules on Battery Station * Update macros/Cargo.toml Co-authored-by: Harald Heckmann * Update primitives/src/traits/zeitgeist_asset.rs Co-authored-by: Harald Heckmann * Update zrml/market-commons/src/migrations.rs Co-authored-by: Harald Heckmann * Update zrml/swaps/src/migrations.rs Co-authored-by: Harald Heckmann * Update zrml/swaps/src/migrations.rs Co-authored-by: Harald Heckmann * Update zrml/prediction-markets/src/migrations.rs Co-authored-by: Harald Heckmann * Update zrml/market-commons/src/migrations.rs Co-authored-by: Harald Heckmann * Clean up TODOs/FIXMEs * Update changelog * Make more changes to changelog * Clear zrml-swaps storage * Remove cfg-if dependency * Fix formatting * Trigger CI * Update copyright notices * Update docs/changelog_for_devs.md Co-authored-by: Chralt * Make benchmark helper only available if feature flags are set * Remove `ZeitgeistAsset` trait * Remove preliminary benchmarks with more steps * Format code * Fix copyright notice --------- Co-authored-by: Chralt Co-authored-by: Harald Heckmann * Merge release v0.4.3 (#1211) * Use hotfixed `exp` * Reorganize tests * Fix formatting * Bump versions to v0.4.3 * Update spec versions * Add missing version bumps * Format * Update licenses --------- Co-authored-by: Malte Kliemann Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Reduce `market_status_manager` aka `on_initialize` iterations (#1160) * remove dangerous loop * limit iterations of dangerous loop * reintegrate last time frame storage item * wip * benchmark manual close and open * fix stall test * emit event and log for recovery time frame * add tests * add trailing comma * Update zrml/prediction-markets/src/benchmarks.rs Co-authored-by: Malte Kliemann * change should_be_closed condition * Apply suggestions from code review Co-authored-by: Malte Kliemann * change recursion limit line * regard period not started yet * add error tests * correct benchmarks * fix after merge and clippy * use turbofish, add test checks * remove manually open broken market * correct errors and call index * correct wrong error name * correct position of call index * correct error position * update copyrights * fix after merge * Update zrml/prediction-markets/src/benchmarks.rs Co-authored-by: Malte Kliemann * set market end for manual close --------- Co-authored-by: Malte Kliemann Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Update style guide to streamline reviews (#1228) * Reduce benchmark runs of Zeitgeist pallets (#1233) Reduce bencharm runs of Zeitgeist pallets Running benchmarks of Zeitgeist pallets on the Zeitgeist reference machine currently takes four days. * Set inflation to more than zero for a full benchmark of handle_inflation (#1234) Update benchmarks.rs * Implement `force_pool_exit` and disable other zrml-swaps functions (#1235) * Abstract `pool_exit` business logic into `do_*` function * Add `force_pool_exit` and test * Install call filters for zrml-swaps * Implement and test `bmul_bdiv_*`; use in zrml-orderbook and zrml-parimutuel (#1223) * Implement and test `bmul_bdiv_*` * Use `bmul_bdiv_*` in pallets * Update copyright * Utilize Merigify's Merge Queue (#1243) ci(Mergify): configuration update Signed-off-by: Harald Heckmann * Set in-progress when needed and rerun CI in merge queue (#1244) * Set in-progress when need and rerun CI in merge queue --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Avoid mergify dequeue (#1245) * Avoid mergify deque * Set review needed only shortly after Mergify commit * Extend neo-swaps tests and clean up `math.rs` (#1238) * Add tests to neo-swaps that check large buy/sell amounts at high liquidity * Use new implementation of HydraDX's `exp` * Add failure tests to neo-swaps's `math.rs` * Fix formatting * Update copyright notices --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Remove migrations and dead code (#1241) Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Reorganize prediction-market tests (#1242) * Rename `tests.rs` to `old_tests.rs` to avoid naming conflicts * Move `buy_complete_set` tests to new tests * Clean up `buy_complete_set` tests * Extract `sell_complete_set_tests` * Clean up `sell_complete_set` tests * Extract `admin_move_market_to_closed` tests * Extract `create_market` tests * Extract `admin_move_market_to_resolved` tests * Remove superfluous test * Extract more `create_market` tests * Extract `approve_market` tests * Extract `edit_market` tests * Extract `edit_market` tests * Add `on_market_close` tests * Extract `manually_close_market` tests * Extract `on_initialize` tests * Extract `report` tests * Extract `dispute` tests * Extract `schedule_early_close` tests * Extract `dispute_early_close` tests * Extract `reject_early_close` tests * Extract more `dispute` tests * Extract `close_trusted_market` tests * Extract `start_global_dispute` tests * Extract `redeem_shares` tests and add missing tests * Extract `on_resolution` and additional `redeem_shares` tests * Move integration tests into new test module * Automatically set block to `1` at the start of test * Replace `crate::Config` with `Config` * Access constant through `Config` * Add TODOs for missing execution paths * Fix formatting --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Improve fee payment management (#1246) * Improve fee payment management * Make code compileable * Do not remit TX fees for redeem_shares Co-authored-by: Malte Kliemann --------- Co-authored-by: Malte Kliemann Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Fix Rust and Discord badge (#1247) Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Fix neo-swaps doc strings (#1250) * Improve `SellExecuted` documentation * Clean up math in comments and doc strings * Fix formatting * Adjust style guide (loops) and add unreachable macro (#1252) * Adjust style guide (loops) and add unreachable macro * Add macros module to lib.rs * Update docs/STYLE_GUIDE.md Co-authored-by: Malte Kliemann * Move macro to zeitgeist-macros and add examples --------- Co-authored-by: Malte Kliemann * Merge Old* and New* asset variants * Partially integrate lazy migration routing * Integrate lazy migration routing * Fix ExistentialDeposit mapping & Satisfy Clippy * Integrate Moonwall (#1192) * modify integration tests * wip * correct typescript to be utilized by zndsl * integrate moonwall * use faster pnpm package manager * get moonwall network running * add scripts folder * add moonwall readme * update readme * add runtime upgrade integration tests * update readme * wip chopticks runtime upgrade test * prepare chopsticks battery station upgrade test * add chopsticks and sqlite3 * chopsticks runs locally after python installation * battery station rt-upgrade works, but not main-net * fix zeitgeist chopsticks upgrade test * add zndsl test to workflow * update integration test workflow * wip * update download polkadot * wip * wip * wip * wip * wip * wip * use artifact storage in github actions * use release instead of debug * update ci * update ci * update ci * correct CI * avoid creating zeitgeist folder * download to target/release * add executive permission * dump chopsticks * log chopsticks * increase timeouts for CI workflows * resolve ws port conflict, add xcm transfer test * add xcm tests to ci * fix log print for chopsticks * use polkadot v1.1.0 for it-tests * add xcm test to post rt upgrade suite * correct ci * manually increase blocks for hydradx * divide main and test-net it tests * avoid port conflict for parallel chopsticks jobs * fix CI and typescript errors * update ci * exit cat command in ci * update CI to stop immediately * restructure jobs * update CI to only show logs for failure * update readme * update readme * delete outdated test instruction * delete unused files * add license to integration tests * add copyright * add copyrights * add copyrights * mkdir integration-tests/tmp * update integration test readme * Update integration-tests/scripts/download-polkadot.sh Co-authored-by: Harald Heckmann * update gitignore * update download polkadot comment * build node for deploy-zombienet script * remove mkdir * Update integration-tests/scripts/download-polkadot.sh Co-authored-by: Harald Heckmann * Update integration-tests/scripts/download-polkadot.sh Co-authored-by: Harald Heckmann * Update .github/workflows/integration-tests.yml Co-authored-by: Harald Heckmann * build node in non CI environments * change integration test execution directory * remove CI run for this branch --------- Co-authored-by: Harald Heckmann * Use `Balance` instead of `u128` as type for Balancer weights (#1251) * Replace hard-coded `u128` fo weights with balance types * Replace modulo operator with `checked_rem_res` * Update copyright notices * Revert changes to modulo operations * Remove primitives/macros * Filter certain asset destroy calls (they're managed) * Remove unchecked modulo operations from production (#1254) * Remove unchecked modulo operations from production * Update copyright * Refactor swaps (#1255) * First pass fixing docs, comments and code style * Fix typos * Use `do_*` pattern, fix docs, remove unnecessary clippy exceptions * Replace `slash` with `withdraw` * Replace `slash` with `withdraw` * Remove reference to CPMM from weight function names * Hard-code `Max*Ratio` * Clean up, fix formatting * Fix `pool_exit` behavior * Remove unnecessary clones * Clean up events * Fix `pool_exit` behavior on odd pools and add a test * Fix test * Update copyright notices * Update docs * Update primitives/src/traits/swaps.rs Co-authored-by: Harald Heckmann * Update primitives/src/traits/swaps.rs Co-authored-by: Harald Heckmann * Remove fixed TODO * Fix merge --------- Co-authored-by: Harald Heckmann * Integrate asset destruction into prediction markets * Add BaseAssetClass * Update prediction-markets & market-commons * Update authorized * Update liquidity-mining * Update simple-disputes * Update parimutuels (wip) * Merge release v0.5.0 into main (#1262) * Update versions (#1227) * Update weights (#1232) * Update copyright years * Revert Court handle_inflation() weight * Move functions into market struct and properly delete assets * Add ParimutuelAssetClass * Add parimutuel.rs * Remove duplicate code * Adjust asset type and managed destroy after refund in parimutuels * Add MarketTransitionApi This will allow prediction-markets to signal other pallets that state transitions happened * Add MarketTransitionApi * Implement MarketTransitionApi for Parimutuels * Only run copyright CI when merging into `main` (#1263) * Bring README up to date (#1264) * Update proxy types (#1259) * Replace `Swaps` with `NeoSwaps` proxy types * Add `withdraw_fees` to liquidity-related proxies * Update toolchain to fix codecov and fuzz errors (#1269) * Update toolchain * Fix formatting and linter errors * Update copyright notices * Fix copyright notice * Use GitHub action to free up space (#1271) * Use GitHub action to freee up space * Try deleting tool-cache as well * Add missing free disk calls; don't remove tool-cache * Remove unused dependencies (#1270) * License checker: Replace incorrect `push` with `append` (#1268) Replace incorrect `push` with `append` Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> * Partially implement asset creation/destruction in parimutuels * Add all asset creation / destruction tests to parimutuels * Adjust Court * Update global-disputes * Update swaps * Update neo-swaps * Integrate OnStateTransition hooks into prediction-markets * Use proper state transition weights * Make cargo check succeed * Partially update orderbook * Update orderbook * Update orderbook * Finalize orderbook update * Improve style * Add XcmAssetClass * Add sub asset classes, extend Market, provide market transition trait * Update asset-router * Integrate asset system into prediction-market, market-commons and parimutuel - Market commons now uses the BaseAsset class for base assets - Prediction markets now creates and destroys MarketAssets only if market.is_redeemable - Prediction markets now calls OnStateTransition when transitioning it's state - Parimutuel markets now implements StateTransitionApi - Parimutuel markets now properly creates and destroys ParimutuelShares * Implement support for non-reservable assets in orderbook * Update Codeowners (#1286) * Integrate new asset system into Battery Station XCM * Integrate new asset system into Zeitgeist XCM * Implement Unbalanced for asset-router * Enable fee payment for campaign assets * Fix conditional import * Format * Fix unfillable / unremovable order bug Co-authored-by: Chralt * Add tests for Unbalanced impl * Implement fee charging tests * Undo unnecessray change * Undo last commit * Add previous stake information after rejoin (#1285) * update joined_at after rejoin * Add additional fields to CourtPoolItem struct, refactor * complete tests * add migration * revert benchmark verify check * remove migration comment * satisfy clippy * implement different approach * adopt uneligble stake and index info * update benchmark * apply review comments * correct current period index calculation * apply review suggestions * Update zrml/court/src/tests.rs Co-authored-by: Harald Heckmann * shorten test * add try-runtime checks --------- Co-authored-by: Harald Heckmann * Update asset-router readme * Extended changelog for devs * Remove deprecated ExistentialDeposits type --------- Signed-off-by: Harald Heckmann Co-authored-by: Chralt Co-authored-by: Malte Kliemann Co-authored-by: Chralt98 Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- .github/workflows/copyright.yml | 34 + .github/workflows/coverage.yml | 23 +- .github/workflows/integration-tests.yml | 269 + .github/workflows/migration.yml | 5 + .github/workflows/rust.yml | 78 +- .github/workflows/try-runtime.yml | 10 + .gitignore | 4 +- CODEOWNERS | 3 + Cargo.lock | 50 +- GH-banner.jpg | Bin 684061 -> 0 bytes GH-banner.svg | 21 + HEADER_GPL3 | 2 +- README.md | 75 +- docs/changelog_for_devs.md | 105 +- integration-tests/LICENSE | 674 ++ integration-tests/README.md | 104 + integration-tests/configs/basilisk.yml | 21 + integration-tests/configs/battery-station.yml | 29 + integration-tests/configs/hydradx.yml | 111 + integration-tests/configs/zeitgeist.yml | 29 + .../configs/zombieZeitgeist.json | 44 + integration-tests/moonwall.config.json | 130 + integration-tests/package-lock.json | 3732 ----------- integration-tests/package.json | 26 +- integration-tests/pnpm-lock.yaml | 5630 +++++++++++++++++ .../scripts/build-battery-station-spec.sh | 10 + .../scripts/build-node-configuration.sh | 5 + integration-tests/scripts/build-node.sh | 11 + .../scripts/build-zeitgeist-spec.sh | 10 + .../scripts/deploy-zombienet.sh | 18 +- .../scripts/download-polkadot.sh | 67 + integration-tests/tests/block.ts | 15 - integration-tests/tests/common-tests.ts | 195 + ...tery-station-chopsticks-runtime-upgrade.ts | 133 + ...st-zeitgeist-chopsticks-runtime-upgrade.ts | 125 + .../test-zombienet-runtime-upgrade.ts | 125 + integration-tests/tsconfig.json | 19 +- .../zombienet/0001-balance-transfer.ts | 83 + .../zombienet/produce-blocks.toml | 4 +- .../zombienet/produce-blocks.zndsl | 53 +- macros/Cargo.toml | 2 +- node/Cargo.toml | 2 +- node/src/cli.rs | 4 +- node/src/service.rs | 6 +- package-lock.json | 6 + primitives/Cargo.toml | 2 +- primitives/src/constants/mock.rs | 14 +- primitives/src/math/checked_ops_res.rs | 21 +- primitives/src/math/fixed.rs | 44 +- primitives/src/math/root.rs | 3 +- primitives/src/traits/swaps.rs | 114 +- runtime/battery-station/Cargo.toml | 2 +- runtime/battery-station/src/lib.rs | 4 +- runtime/battery-station/src/parameters.rs | 4 - runtime/common/Cargo.toml | 2 +- runtime/common/src/fees.rs | 9 + runtime/common/src/lib.rs | 25 +- .../src/weights/cumulus_pallet_xcmp_queue.rs | 32 +- runtime/common/src/weights/frame_system.rs | 68 +- runtime/common/src/weights/orml_currencies.rs | 52 +- runtime/common/src/weights/orml_tokens.rs | 46 +- .../src/weights/pallet_author_inherent.rs | 24 +- .../src/weights/pallet_author_mapping.rs | 56 +- .../src/weights/pallet_author_slot_filter.rs | 20 +- runtime/common/src/weights/pallet_balances.rs | 44 +- runtime/common/src/weights/pallet_bounties.rs | 79 +- .../common/src/weights/pallet_collective.rs | 208 +- .../common/src/weights/pallet_contracts.rs | 1167 ++-- .../common/src/weights/pallet_democracy.rs | 178 +- runtime/common/src/weights/pallet_identity.rs | 194 +- .../common/src/weights/pallet_membership.rs | 103 +- runtime/common/src/weights/pallet_multisig.rs | 96 +- .../src/weights/pallet_parachain_staking.rs | 328 +- runtime/common/src/weights/pallet_preimage.rs | 76 +- runtime/common/src/weights/pallet_proxy.rs | 119 +- .../common/src/weights/pallet_scheduler.rs | 101 +- .../common/src/weights/pallet_timestamp.rs | 26 +- runtime/common/src/weights/pallet_treasury.rs | 69 +- runtime/common/src/weights/pallet_utility.rs | 48 +- runtime/common/src/weights/pallet_vesting.rs | 118 +- runtime/zeitgeist/Cargo.toml | 2 +- runtime/zeitgeist/src/lib.rs | 4 +- runtime/zeitgeist/src/parameters.rs | 4 - rust-toolchain | 2 +- .../src/check_license/copyright.py | 2 +- zrml/asset-router/README.md | 27 +- zrml/authorized/Cargo.toml | 2 +- zrml/authorized/src/mock_storage.rs | 4 +- zrml/authorized/src/weights.rs | 50 +- zrml/court/Cargo.toml | 3 +- zrml/court/src/benchmarks.rs | 12 +- zrml/court/src/lib.rs | 224 +- zrml/court/src/migrations.rs | 239 +- zrml/court/src/mock_storage.rs | 3 +- zrml/court/src/tests.rs | 318 +- zrml/court/src/types.rs | 9 +- zrml/court/src/weights.rs | 253 +- zrml/global-disputes/Cargo.toml | 2 +- zrml/global-disputes/src/tests.rs | 14 +- zrml/global-disputes/src/weights.rs | 101 +- zrml/liquidity-mining/Cargo.toml | 2 +- zrml/liquidity-mining/src/lib.rs | 7 +- zrml/liquidity-mining/src/weights.rs | 12 +- zrml/market-commons/Cargo.toml | 2 +- zrml/neo-swaps/Cargo.toml | 6 +- zrml/neo-swaps/src/mock.rs | 4 +- zrml/neo-swaps/src/weights.rs | 153 +- zrml/orderbook/Cargo.toml | 2 +- zrml/orderbook/src/mock.rs | 4 +- zrml/orderbook/src/weights.rs | 38 +- zrml/parimutuel/Cargo.toml | 2 +- zrml/parimutuel/src/mock.rs | 4 +- zrml/parimutuel/src/weights.rs | 38 +- zrml/prediction-markets/Cargo.toml | 6 +- .../prediction-markets/runtime-api/Cargo.toml | 2 +- zrml/prediction-markets/src/mock.rs | 8 +- zrml/prediction-markets/src/weights.rs | 338 +- zrml/rikiddo/Cargo.toml | 2 +- .../src/tests/rikiddo_sigmoid_mv/cost.rs | 5 +- .../src/tests/rikiddo_sigmoid_mv/misc.rs | 5 +- .../src/tests/rikiddo_sigmoid_mv/price.rs | 4 +- zrml/simple-disputes/Cargo.toml | 2 +- zrml/simple-disputes/src/mock.rs | 4 +- zrml/styx/Cargo.toml | 2 +- zrml/styx/src/benchmarks.rs | 6 +- zrml/styx/src/weights.rs | 16 +- zrml/swaps/Cargo.toml | 4 +- zrml/swaps/README.md | 35 +- zrml/swaps/rpc/Cargo.toml | 2 +- zrml/swaps/runtime-api/Cargo.toml | 2 +- zrml/swaps/src/benchmarks.rs | 18 +- zrml/swaps/src/fixed.rs | 10 +- zrml/swaps/src/lib.rs | 1261 ++-- zrml/swaps/src/math.rs | 10 +- zrml/swaps/src/mock.rs | 10 +- zrml/swaps/src/tests.rs | 73 +- zrml/swaps/src/types/pool.rs | 6 +- zrml/swaps/src/utils.rs | 12 +- zrml/swaps/src/weights.rs | 155 +- 139 files changed, 12286 insertions(+), 6859 deletions(-) create mode 100644 .github/workflows/copyright.yml create mode 100644 .github/workflows/integration-tests.yml delete mode 100644 GH-banner.jpg create mode 100644 GH-banner.svg create mode 100644 integration-tests/LICENSE create mode 100644 integration-tests/configs/basilisk.yml create mode 100644 integration-tests/configs/battery-station.yml create mode 100644 integration-tests/configs/hydradx.yml create mode 100644 integration-tests/configs/zeitgeist.yml create mode 100644 integration-tests/configs/zombieZeitgeist.json create mode 100644 integration-tests/moonwall.config.json delete mode 100644 integration-tests/package-lock.json create mode 100644 integration-tests/pnpm-lock.yaml create mode 100755 integration-tests/scripts/build-battery-station-spec.sh create mode 100755 integration-tests/scripts/build-node-configuration.sh create mode 100755 integration-tests/scripts/build-node.sh create mode 100755 integration-tests/scripts/build-zeitgeist-spec.sh rename scripts/tests/spawn_network.sh => integration-tests/scripts/deploy-zombienet.sh (84%) create mode 100755 integration-tests/scripts/download-polkadot.sh delete mode 100644 integration-tests/tests/block.ts create mode 100644 integration-tests/tests/common-tests.ts create mode 100644 integration-tests/tests/rt-upgrade-battery-station-chopsticks/test-battery-station-chopsticks-runtime-upgrade.ts create mode 100644 integration-tests/tests/rt-upgrade-zeitgeist-chopsticks/test-zeitgeist-chopsticks-runtime-upgrade.ts create mode 100644 integration-tests/tests/rt-upgrade-zombienet/test-zombienet-runtime-upgrade.ts create mode 100644 integration-tests/zombienet/0001-balance-transfer.ts create mode 100644 package-lock.json diff --git a/.github/workflows/copyright.yml b/.github/workflows/copyright.yml new file mode 100644 index 000000000..f7136a793 --- /dev/null +++ b/.github/workflows/copyright.yml @@ -0,0 +1,34 @@ +name: Copyright + +on: + pull_request: + types: [ labeled ] + branches: [ main ] + push: + branches: [ main ] + +jobs: + copyright: + name: Copyright Notices + if: | + github.event_name == 'pull_request' && + (contains(github.event.pull_request.labels.*.name, 's:review-needed') || + contains(github.event.pull_request.labels.*.name, 's:accepted')) || + github.event_name == 'push' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + - name: Install check-license and dependencies + run: | + pip install scripts/check-license + pip install -r scripts/check-license/requirements.txt + - name: Query files changed + id: files_changed + uses: Ana06/get-changed-files@v1.2 + with: + filter: '*.rs$' + - name: Check copyright notices + run: check-license ${{ steps.files_changed.outputs.added_modified }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 8a43c0520..8affb0d66 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -22,27 +22,18 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + - name: Install rust toolchain run: rustup show - uses: actions-rs/install@v0.1 with: crate: grcov - use-tool-cache: true - - # No disk space: https://github.com/zeitgeistpm/zeitgeist/actions/runs/5085081984/jobs/9144298675?pr=1006 - # Workaround: https://github.com/actions/runner-images/issues/2840#issuecomment-790492173 - - name: Free up disk space on GitHub hosted runners - run: | - # Ensure context is GitHub hosted runner - # https://docs.github.com/en/actions/learn-github-actions/contexts#runner-context - if [[ "${{ runner.name }}" == "GitHub Actions"* ]]; then - echo "Freeing up space in GitHub hosted runner" - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - fi + use-tool-cache: false - name: Cache Dependencies uses: Swatinem/rust-cache@v1 @@ -58,4 +49,4 @@ jobs: fail_ci_if_error: true flags: tests verbose: true - name: unit-tests \ No newline at end of file + name: unit-tests diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml new file mode 100644 index 000000000..e0333d9d7 --- /dev/null +++ b/.github/workflows/integration-tests.yml @@ -0,0 +1,269 @@ +name: Integration Tests + +on: + push: + tags: + - '^v[0-9]+.[0-9]+.[0-9]+(-rc[0-9]+)?$' + +env: + CARGO_TERM_COLOR: always + +jobs: + build_parachain: + name: Build Parachain + runs-on: ubuntu-20.04 + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install build tools + run: ./scripts/init.sh + + - name: Build Parachain + run: cargo build --release --features parachain + + - name: Save runtime wasm + run: | + mkdir -p runtimes + cp target/release/wbuild/battery-station-runtime/battery_station_runtime.compact.compressed.wasm runtimes/; + cp target/release/wbuild/zeitgeist-runtime/zeitgeist_runtime.compact.compressed.wasm runtimes/; + + - name: Upload runtimes + uses: actions/upload-artifact@v3.1.2 + with: + name: runtimes + path: runtimes + + - name: Save zeitgeist binary + run: | + mkdir -p binaries + cp target/release/zeitgeist binaries/; + + - name: Upload binary + uses: actions/upload-artifact@v3.1.2 + with: + name: binaries + path: binaries + + zombienet_zndsl: + name: ZNDSL Tests + runs-on: ubuntu-20.04 + needs: ["build_parachain"] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install build tools + run: ./scripts/init.sh + + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3 + with: + node-version: 20.x + cache: "pnpm" + cache-dependency-path: "./integration-tests/pnpm-lock.yaml" + + - name: Install pnpm packages + run: | + cd integration-tests + pnpm install + + - name: Cache Dependencies + uses: Swatinem/rust-cache@v1 + + - name: Create local folders + run: | + mkdir -p target/release/wbuild/zeitgeist-runtime/ + mkdir -p integration-tests/tmp + + - name: Download runtime + uses: actions/download-artifact@v3.0.2 + with: + name: runtimes + path: target/release/wbuild/zeitgeist-runtime/ + + - name: Download binary + uses: actions/download-artifact@v3.0.2 + with: + name: binaries + path: target/release + + - name: Display structure of downloaded files + run: ls -R + working-directory: target/ + + - name: Run ZNDSL integration tests + run: | + chmod uog+x target/release/zeitgeist + + cd integration-tests + ./scripts/download-polkadot.sh + ./scripts/deploy-zombienet.sh --no-build --test + + zombienet_zeitgeist_upgrade: + name: Zeitgeist Zombienet Post-Upgrade Tests + runs-on: ubuntu-20.04 + needs: ["build_parachain"] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install build tools + run: ./scripts/init.sh + + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3 + with: + node-version: 20.x + cache: "pnpm" + cache-dependency-path: "./integration-tests/pnpm-lock.yaml" + + - name: Install pnpm packages + run: | + cd integration-tests + pnpm install + + - name: Cache Dependencies + uses: Swatinem/rust-cache@v1 + + - name: Create local folders + run: | + mkdir -p target/release/wbuild/zeitgeist-runtime/ + mkdir -p integration-tests/tmp + + - name: Download runtime + uses: actions/download-artifact@v3.0.2 + with: + name: runtimes + path: target/release/wbuild/zeitgeist-runtime/ + + - name: Download binary + uses: actions/download-artifact@v3.0.2 + with: + name: binaries + path: target/release + + - name: Display structure of downloaded files + run: ls -R + working-directory: target/ + + - name: Test zeitgeist runtime upgrade using Zombienet + run: | + chmod uog+x target/release/zeitgeist + + cd integration-tests + pnpm exec moonwall test zombienet_zeitgeist_upgrade + + chopsticks_battery_station_upgrade: + name: Battery Station Chopsticks Post-Upgrade Tests + runs-on: ubuntu-20.04 + needs: ["build_parachain"] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install build tools + run: ./scripts/init.sh + + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3 + with: + node-version: 20.x + cache: "pnpm" + cache-dependency-path: "./integration-tests/pnpm-lock.yaml" + + - name: Install pnpm packages + run: | + cd integration-tests + pnpm install + + - name: Cache Dependencies + uses: Swatinem/rust-cache@v1 + + - name: Create local folders + run: | + mkdir -p target/release/wbuild/battery-station-runtime/ + mkdir -p integration-tests/tmp/node_logs + + - name: Download runtime + uses: actions/download-artifact@v3.0.2 + with: + name: runtimes + path: target/release/wbuild/battery-station-runtime/ + + - name: Display structure of downloaded files + run: ls -R + working-directory: target/ + + - name: Battery Station post-upgrade tests using Chopsticks + run: | + cd integration-tests + pnpm exec moonwall test chopsticks_battery_station_upgrade + + - name: Show chopsticks logs + if: ${{ failure() }} + run: | + cd integration-tests + ls -R tmp/node_logs/ + cat tmp/node_logs/*.log | tail -n 1000 + + chopsticks_zeitgeist_upgrade: + name: Zeitgeist Chopsticks Post-Upgrade Tests + runs-on: ubuntu-20.04 + needs: ["build_parachain"] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install build tools + run: ./scripts/init.sh + + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3 + with: + node-version: 20.x + cache: "pnpm" + cache-dependency-path: "./integration-tests/pnpm-lock.yaml" + + - name: Install pnpm packages + run: | + cd integration-tests + pnpm install + + - name: Cache Dependencies + uses: Swatinem/rust-cache@v1 + + - name: Create local folders + run: | + mkdir -p target/release/wbuild/zeitgeist-runtime/ + mkdir -p integration-tests/tmp/node_logs + + - name: "Download runtime" + uses: actions/download-artifact@v3.0.2 + with: + name: runtimes + path: target/release/wbuild/zeitgeist-runtime/ + + - name: Display structure of downloaded files + run: ls -R + working-directory: target/ + + - name: Zeitgeist post-upgrade tests using Chopsticks + run: | + cd integration-tests + pnpm exec moonwall test chopsticks_zeitgeist_upgrade + + - name: Show chopsticks logs + if: ${{ failure() }} + run: | + cd integration-tests + ls -R tmp/node_logs/ + cat tmp/node_logs/*.log | tail -n 1000 diff --git a/.github/workflows/migration.yml b/.github/workflows/migration.yml index 967dc6510..6387503c2 100644 --- a/.github/workflows/migration.yml +++ b/.github/workflows/migration.yml @@ -17,4 +17,9 @@ jobs: - name: Install build tools run: ./scripts/init.sh + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + - run: ./scripts/runtime-upgrade/test_runtime_upgrade.sh ${{ github.event.inputs.block }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 4d52a85ec..a814b4d88 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -36,31 +36,6 @@ jobs: - name: Format run: ./scripts/tests/format.sh --check - copyright: - name: Copyright Notices - if: | - github.event_name == 'pull_request' && - (contains(github.event.pull_request.labels.*.name, 's:review-needed') || - contains(github.event.pull_request.labels.*.name, 's:accepted')) || - github.event_name == 'push' - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - - name: Install check-license and dependencies - run: | - pip install scripts/check-license - pip install -r scripts/check-license/requirements.txt - - name: Query files changed - id: files_changed - uses: Ana06/get-changed-files@v1.2 - with: - filter: '*.rs$' - - name: Check copyright notices - run: check-license ${{ steps.files_changed.outputs.added_modified }} - checks: name: Checks if: | @@ -80,6 +55,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + - name: Install build tools run: ./scripts/init.sh @@ -101,6 +81,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + - name: Install build tools run: ./scripts/init.sh @@ -118,22 +103,13 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + - name: Install build tools run: ./scripts/init.sh - - # No disk space: https://github.com/zeitgeistpm/zeitgeist/actions/runs/5085081984/jobs/9144298675?pr=1006 - # Workaround: https://github.com/actions/runner-images/issues/2840#issuecomment-790492173 - - name: Free up disk space on GitHub hosted runners - run: | - # Ensure context is GitHub hosted runner - # https://docs.github.com/en/actions/learn-github-actions/contexts#runner-context - if [[ "${{ runner.name }}" == "GitHub Actions"* ]]; then - echo "Freeing up space in GitHub hosted runner" - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - fi - name: Cache Dependencies uses: Swatinem/rust-cache@v1 @@ -153,22 +129,13 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + - name: Install build tools run: ./scripts/init.sh - - # No disk space: https://github.com/zeitgeistpm/zeitgeist/actions/runs/5085081984/jobs/9144298675?pr=1006 - # Workaround: https://github.com/actions/runner-images/issues/2840#issuecomment-790492173 - - name: Free up disk space on GitHub hosted runners - run: | - # Ensure context is GitHub hosted runner - # https://docs.github.com/en/actions/learn-github-actions/contexts#runner-context - if [[ "${{ runner.name }}" == "GitHub Actions"* ]]; then - echo "Freeing up space in GitHub hosted runner" - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - fi - name: Cache Dependencies uses: Swatinem/rust-cache@v1 @@ -188,6 +155,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + - name: Install build tools run: ./scripts/init.sh diff --git a/.github/workflows/try-runtime.yml b/.github/workflows/try-runtime.yml index 676368afa..0d5d4b99d 100644 --- a/.github/workflows/try-runtime.yml +++ b/.github/workflows/try-runtime.yml @@ -13,6 +13,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + - name: Install build tools run: ./scripts/init.sh @@ -27,6 +32,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Free up disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + - name: Install build tools run: ./scripts/init.sh diff --git a/.gitignore b/.gitignore index a962176f6..5aeff784e 100644 --- a/.gitignore +++ b/.gitignore @@ -157,4 +157,6 @@ dmypy.json # Pyre type checker .pyre/ -/tmp \ No newline at end of file +/integration-tests/tmp + +/integration-tests/specs \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS index 758a6baa0..03f736322 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -12,7 +12,10 @@ /zrml/authorized/ @Chralt98 /zrml/court/ @Chralt98 /zrml/global-disputes/ @Chralt98 +/zrml/market-commons/ @maltekliemann /zrml/neo-swaps/ @maltekliemann +/zrml/orderbook/ @Chralt98 +/zrml/parimutuel/ @Chralt98 /zrml/prediction-markets/ @maltekliemann /zrml/rikiddo/ @sea212 /zrml/simple-disputes/ @Chralt98 diff --git a/Cargo.lock b/Cargo.lock index 190de72c1..824c2949e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -532,7 +532,7 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "battery-station-runtime" -version = "0.4.3" +version = "0.5.0" dependencies = [ "cfg-if", "common-runtime", @@ -1208,7 +1208,7 @@ dependencies = [ [[package]] name = "common-runtime" -version = "0.4.3" +version = "0.5.0" dependencies = [ "cfg-if", "cumulus-pallet-xcmp-queue", @@ -14297,11 +14297,11 @@ dependencies = [ [[package]] name = "zeitgeist-macros" -version = "0.4.3" +version = "0.5.0" [[package]] name = "zeitgeist-node" -version = "0.4.3" +version = "0.5.0" dependencies = [ "battery-station-runtime", "cfg-if", @@ -14393,7 +14393,7 @@ dependencies = [ [[package]] name = "zeitgeist-primitives" -version = "0.4.3" +version = "0.5.0" dependencies = [ "arbitrary", "fixed", @@ -14417,7 +14417,7 @@ dependencies = [ [[package]] name = "zeitgeist-runtime" -version = "0.4.3" +version = "0.5.0" dependencies = [ "cfg-if", "common-runtime", @@ -14563,7 +14563,7 @@ dependencies = [ [[package]] name = "zrml-authorized" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14581,7 +14581,7 @@ dependencies = [ [[package]] name = "zrml-court" -version = "0.4.3" +version = "0.5.0" dependencies = [ "arrayvec 0.7.4", "env_logger 0.10.1", @@ -14600,13 +14600,14 @@ dependencies = [ "sp-io", "sp-runtime", "test-case", + "zeitgeist-macros", "zeitgeist-primitives", "zrml-market-commons", ] [[package]] name = "zrml-global-disputes" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14627,7 +14628,7 @@ dependencies = [ [[package]] name = "zrml-liquidity-mining" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14646,7 +14647,7 @@ dependencies = [ [[package]] name = "zrml-market-commons" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-support", @@ -14664,7 +14665,7 @@ dependencies = [ [[package]] name = "zrml-neo-swaps" -version = "0.4.3" +version = "0.5.0" dependencies = [ "cfg-if", "env_logger 0.10.1", @@ -14704,14 +14705,12 @@ dependencies = [ "zrml-neo-swaps", "zrml-prediction-markets", "zrml-prediction-markets-runtime-api", - "zrml-rikiddo", "zrml-simple-disputes", - "zrml-swaps", ] [[package]] name = "zrml-orderbook" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14749,7 +14748,7 @@ dependencies = [ [[package]] name = "zrml-parimutuel" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14774,7 +14773,7 @@ dependencies = [ [[package]] name = "zrml-prediction-markets" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14808,9 +14807,7 @@ dependencies = [ "zrml-market-commons", "zrml-prediction-markets", "zrml-prediction-markets-runtime-api", - "zrml-rikiddo", "zrml-simple-disputes", - "zrml-swaps", ] [[package]] @@ -14828,7 +14825,7 @@ dependencies = [ [[package]] name = "zrml-prediction-markets-runtime-api" -version = "0.4.3" +version = "0.5.0" dependencies = [ "parity-scale-codec", "sp-api", @@ -14837,7 +14834,7 @@ dependencies = [ [[package]] name = "zrml-rikiddo" -version = "0.4.3" +version = "0.5.0" dependencies = [ "arbitrary", "cfg-if", @@ -14871,7 +14868,7 @@ dependencies = [ [[package]] name = "zrml-simple-disputes" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14892,7 +14889,7 @@ dependencies = [ [[package]] name = "zrml-styx" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14909,7 +14906,7 @@ dependencies = [ [[package]] name = "zrml-swaps" -version = "0.4.3" +version = "0.5.0" dependencies = [ "env_logger 0.10.1", "frame-benchmarking", @@ -14931,7 +14928,6 @@ dependencies = [ "test-case", "zeitgeist-macros", "zeitgeist-primitives", - "zrml-liquidity-mining", "zrml-market-commons", "zrml-swaps", "zrml-swaps-runtime-api", @@ -14953,7 +14949,7 @@ dependencies = [ [[package]] name = "zrml-swaps-rpc" -version = "0.4.3" +version = "0.5.0" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -14966,7 +14962,7 @@ dependencies = [ [[package]] name = "zrml-swaps-runtime-api" -version = "0.4.3" +version = "0.5.0" dependencies = [ "parity-scale-codec", "sp-api", diff --git a/GH-banner.jpg b/GH-banner.jpg deleted file mode 100644 index 2d7e3b25bba1aafdae3d59d12164c2ad23bc01a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684061 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