/amm

HydraDX node - cross-chain liquidity protocol built on Substrate

Primary LanguageRustApache License 2.0Apache-2.0

HydraDX node

CROSS-CHAIN LIQUIDITY PROTOCOL BUILT ON SUBSTRATE

Contributions & Code of Conduct

Please follow the contributions guidelines as outlined in docs/CONTRIBUTING.md. We are welcoming and friendly community please follow our Code of Conduct.

Local Development

Follow these steps to prepare a local Substrate development environment 🛠️

Simple Setup

Install all the required dependencies with a single command (be patient, this can take up to 30 minutes).

curl https://getsubstrate.io -sSf | bash -s -- --fast

Manual Setup

Find manual setup instructions at the Substrate Developer Hub.

Build

Once the development environment is set up, build the node. This command will build the Wasm and native code:

cargo build --release

Run

Single Node Development Chain

Purge any existing dev chain state:

./target/release/hydra-dx purge-chain --dev

Start a dev chain:

./target/release/hydra-dx --dev

Or, start a dev chain with detailed logging:

RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/hydra-dx -lruntime=debug --dev

Interaction with the node

Go to the polkadot apps at https://dotapps.io

Then open settings screen -> developer and paste

NOTE - FixedU128 type is not yet implemented for polkadot apps. Balance is a measure so price can be reasonably selected. If using polkadot apps to create pool:

  • 1 Mega Units equals 1:1 price
  • 20 Mega Units equals 20:1 price
  • 50 Kilo Units equals 0.05:1 price
{
  "Amount": "i128",
  "AmountOf": "Amount",
  "Address": "AccountId",
  "Fee": {
    "numerator": "u32",
    "denominator": "u32"
  },
  "BalanceInfo": {
    "amount": "Balance",
    "assetId": "AssetId"
  },
  "CurrencyId": "AssetId",
  "CurrencyIdOf": "AssetId",
  "Intention": {
    "who": "AccountId",
    "asset_sell": "AssetId",
    "asset_buy": "AssetId",
    "amount": "Balance",
    "discount": "bool",
    "sell_or_buy": "IntentionType"
  },
  "IntentionId": "u128",
  "IntentionType": {
    "_enum": [
      "SELL",
      "BUY"
    ]
  },
  "LookupSource": "AccountId",
  "Price": "Balance",
  "Chain": {
    "genesisHash": "Vec<u8>",
    "lastBlockHash": "Vec<u8>"
  }
}

Connect to the

  • Hacknet: wss://hack.hydradx.io:9944
  • Stakenet: wss://rpc-01.snakenet.hydradx.io
  • or local node – if you are on chromium based browser, set chrome://flags/#allow-insecure-localhost

Performance check

Prerequisites: rust/cargo, python 3.8+

With the following script it is possible to run a simple performance check. It might be useful to determine whether your machine is suitable to run HydraDX node.

From the top-level node directory:

./scripts/check_performance.sh

This will run series of benchmarks ( which may take a while). The output will show benchmark results of HydraDX pallets and comparison against reference values.

The most interesting information would be the difference between the HydraDx benchmark value and the local machine's benchmark.

If the difference is >= 0, performance is similar or better. However, if the difference < 0 - your machine might not suitable to run HydraDX node. Contact HydraDX devs to discuss the results.

Running a stakenet node

./target/release/hydra-dx --chain lerna

Honorable contributions

@apopiak for great reviews #87 and support.