Skip to content

Central repository for Ionic Protocol's frontend, SDK, and bots

Notifications You must be signed in to change notification settings

ionicprotocol/monorepo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2e3e91f · Nov 26, 2024
Feb 8, 2024
Nov 13, 2024
Oct 25, 2024
Nov 13, 2024
Nov 13, 2024
Nov 26, 2024
Jul 21, 2023
Sep 11, 2024
Jul 21, 2023
Oct 24, 2024
Aug 26, 2024
Apr 11, 2024
Jul 21, 2023
Jul 21, 2023
Oct 25, 2024
Jun 5, 2024
May 24, 2024
Sep 11, 2024
Nov 26, 2024
Oct 11, 2024
Apr 24, 2024
Nov 26, 2024

Repository files navigation

Netlify Status

monorepo

Installation

Clone

Make sure you clone submodules together

git clone --recurse-submodules

If you already pulled using just git clone, you can use below command to update submodules.

git submodule update --init --recursive

Dependencies

From fresh clone:

  • yarn
  • yarn workspace @ionicprotocol/sdk forge install
  • yarn workspace @ionicprotocol/sdk build

Tips

Run everything from the top level.

Ask for .env file from the team and add it under packages/sdk

If you want to add packages to modules, you can do so like:

  • yarn workspace @ionicprotocol/sdk add ethers

To run forge commands inside the sdk package, run:

  • yarn workspace @ionicprotocol/sdk forge install <SOME_DEP>
  • yarn workspace @ionicprotocol/sdk forge build
  • etc

Adding a Package

  • Copy source into packages/my-new-package.
  • Add reference to root tsconfig.json:
{
  ...
  "references": [
    ...
    {
      "path": "./packages/my-new-package"
    }
  ]
}
  • Add workspace-level dependencies to package.json inside the package:
{
  ...
  "dependencies": {
    ...
    "@ionicprotocol/some-other-package": "workspace:*"
  }
}
- `yarn` from top-level to update dependencies/symlinks.

Working with Forks

Forking requires access to a archive RPC node. For BSC we had a great experience using an RPC Node from NodeReals MegaNode service - https://nodereal.io/meganode .

For forking Polygon we haven't found a free service to use an archive node yet.

You general purpose forking you have to set FORK_RPC_URL and FORK_CHAIN_ID in your packages/sdk/.env file.

And than start a forked local node by running.

> yarn dev:node:fork

In order to start multiple forks at once we streamlined the process a bit. In your executing shell make sure to set BSC_RPC_URL and or POLYGON_RPC_URL.

> yarn dev:node:bsc
// Will start a CHAIN_ID=56 fork using $BSC_RPC_URL at https://localhost:8545
> yarn dev:node:polygon
// Will start a CHAIN_ID=137 fork using $POLYGON_RPC_URL at https://localhost:8546

The idea is to increase the port number with each fork we want to support.

8545: BSC
8546: Polygon
8547: Moonbeam?

For convenience we have a Hardhat task to make some token swaps to on the forked node for you.

> yarn workspace @ionicprotocol/sdk hardhat fork:fund-accounts --network fork
// Works with https://localhost:8545

> yarn workspace @ionicprotocol/sdk hardhat fork:fund-accounts --network localbsc
// Works with https://localhost:8545

> yarn workspace @ionicprotocol/sdk hardhat fork:fund-accounts --network localpolygon
// Works with https://localhost:8546

Running UI Tests

We are using ChainSafe/dappeteer to test our UI with Metamask. The test are expecting to work on a fork of BSC mainnet for now.

Follow this step to run the UI test locally

  1. Start local forked BSC node
> yarn dev:node:fork
  1. Start local UI dev server
> yarn dev:ui
  1. Fund test accounts
> yarn workspace @ionicprotocol/sdk hardhat fork:fund-accounts --network fork
  1. Run dAppateer
> yarn test:ui

UI Test With WSL2

If you are on windows you need an X-server to run dappeteer. These instructions were taken from here: https://www.rickmakes.com/windows-subsystem-for-linux-2-installing-vcxrv-x-server/

Follow these steps before running yarn test:ui

  1. Download VcXsrv, this is your X-server that will display the GUI https://sourceforge.net/projects/vcxsrv/
  2. Run VcXsrv. Use these settings
Multiple Windows -> Start No Client -> Check All Boxes in Extra Settings -> Finish

If Windows Defender Firewall prompts you, check both Private & Public Networks and Allow Access

  1. Find your Windows IP Address by running the following command
cat /etc/resolv.conf
  1. Set DISPLAY Variable (replace ip_address with your IP Address found above)
export DISPLAY=ip_address:0.0
  1. export opengl Variable
export LIBGL_ALWAYS_INDIRECT=1