Nomad Monorepo -- SDKs, Contracts, and more!

Overview

Nomad

Nomad is a cross-chain communication protocol. This repo contains the following:

  • Smart contracts for the core Nomad protocol
  • Smart contracts for the Nomad token bridge
  • SDKs for Nomad's core protocol, bridge, and governance systems
  • Tooling for local environment simulation
  • Smart contract deployment tooling

Development setup

Please read CONTRIBUTING.md.

Design

Pleaes see docs.nomad.xyz

Comments
  • deploy from tagged contract version

    deploy from tagged contract version

    Motivation

    Deploy repo was deploying from workspace version of the contracts, not tagged npm version. This didn't affect the source code deploys as we had frozen the contract code, but needs to be changed nevertheless.

    Solution

    Update deploy package to use tagged contract versions rather than workspace.

    PR Checklist

    • [ ] Added Tests
    • [ ] Updated Documentation
    • [ ] Updated CHANGELOG.md for the appropriate package
    opened by anna-carroll 8
  • test: reboot fork test setup

    test: reboot fork test setup

    Motivation

    Want mainnet fork tests for all of the components of the reboot scripts together.

    Solution

    Create a reboot fork test

    PR Checklist

    • [ ] Added Tests
    • [x] Updated Documentation
    • [x] Updated CHANGELOG.md for the appropriate package
    solidity 
    opened by anna-carroll 7
  • feat: Nomad Local Environment Full Documentation Addition

    feat: Nomad Local Environment Full Documentation Addition

    Motivation

    Currently, the NomadEnv does not have any documentation. This PR adds related documentation and a few small modifications on the Nomad Environment.

    Solution

    • Wrote and attached the Local Environment docs as a link in the readme (unsure if I should just include the whole markdown in the readme.

    PR Checklist

    • [x] Added Tests (not required, peer feedback required)
    • [x] Updated Documentation
    • [x] Updated CHANGELOG.md for the appropriate package
    opened by xBalbinus 7
  • feat: LE unit testing improvements; mainnet forking

    feat: LE unit testing improvements; mainnet forking

    Motivation

    Lots of things:

    • 'Unit tests' (not really) used to rely on Docker and used to pull containers from the cloud. Now they no longer do. We have achieved > 50% coverage on all unit-testable items.
    • We want to be able to fork mainnet and be able to write tests accordingly (for end to end tests on contract upgrades, contract to contract calls, etc.). Local environment is now capable of supporting integration tests on a mainnet fork. *CAVEAT: There will be additional refactoring of LE for being able to test by reading from config files of existing Nomad deployments. Current integration tests are not designed to be done on a forked mainnet. Additional tests that fit mainnet not included within this PR and will most likely be included in a future one.
    • Needed to refactor the whole local environment to accept Jest's Docker mocks.

    Solution

    • Refactored all unit tests of local environment - unit tests no longer pull Docker containers from the cloud.
    • Implemented (and tested) local environment's capability to now interact with live contract instances (see wETH used as instantiation)
    • Mainnet forked, hardhat funded accounts. Of course, mainnet doesn't have to be just ETH (any Alchemy-supported network)
    • Jest Docker mocks implemented on container creation (testing whether or not all modules are able to interact with Docker)
    • Docker as optional input into localenv instantiation
    • CI Time for all integration tests: (~1200 seconds). LE Unit tests reduced to sub 30 seconds.
    • Cleaned up abstractions (included a new abstraction, ForkedNetwork to represent mainnet forks).

    PR Checklist

    • [x] Added Tests
    • [x] Updated Documentation (incoming in a separate document)
    • [x] Updated CHANGELOG.md for the appropriate package
    opened by xBalbinus 7
  • feat: transfer with hook

    feat: transfer with hook

    Motivation

    Integrate Connext Amarok into Nomad BridgeRouter to enable native fast liquidity.

    Solution

    PR Checklist

    • [ ] Added Tests
    • [x] Updated Documentation
    • [x] Updated CHANGELOG.md for the appropriate package
    solidity 
    opened by anna-carroll 7
  • [DONTMERGE] config, verification, and gov transactions for xdai + point-to-point

    [DONTMERGE] config, verification, and gov transactions for xdai + point-to-point

    Motivation

    We want to deploy Nomad to Gnosis Chain (xDai)

    Solution

    Deploy Nomad to Gnosis Chain (xDai)! Save the updated config, governance actions, and verification for posterity + peer review.

    PR Checklist

    • [ ] Added Tests
    • [ ] Updated Documentation
    • [ ] Updated CHANGELOG.md for the appropriate package
    opened by anna-carroll 7
  • Feat: Upgrade Callbatches

    Feat: Upgrade Callbatches

    Motivation

    To realise an upgrade (and update the implementation address of the beacons) we need to execute some governance call batches,

    Solution

    Build a script that reads an updated configuration file (meaning that it has the new implementations) and produce the required call batches in a JSON file

    PR Checklist

    • [ ] Added Tests
    • [x] Updated Documentation
    • [x] Updated CHANGELOG.md for the appropriate package
    opened by odyslam 6
  • [QSP-9, QSP-20] add bounds to optimisticSeconds

    [QSP-9, QSP-20] add bounds to optimisticSeconds

    Motivation

    We wish to add some reasonable input validation to the optimisticSeconds field

    Solution

    Ensure optimisticSeconds is greater than 25 minutes & less than 1 year.

    PR Checklist

    • [ ] Added Tests
    • [ ] Updated Documentation
    • [ ] Updated CHANGELOG.md for the appropriate package
    solidity 
    opened by anna-carroll 6
  • totalAffected Calculations

    totalAffected Calculations

    Motivation

    Methodology

    • for each asset, totalAffected is equal to the total outstanding bridged amount.
    • this equals
      • (1) the amount of that asset ever bridged out to other chains,
      • minus (2) the total amount of that asset ever bridged in to its origin domain
    • the resulting figure is the total outstanding amount it is still possible to bridge in
    • total amount bridged out can be determined by
      • querying all Send events where token = asset address and taking the sum of amount field
    • total amount bridged in can be determined by
      • querying all Receive events where token = asset address and taking the sum of amount field

    Solution

    Attached in the PR's changelog is a GRAPHQL file demonstrating the queries currently used to get to the target numbers. This is to be deleted upon merge.

    PR Checklist

    • [ ] Added Tests
    • [ ] Updated Documentation
    • [ ] Updated CHANGELOG.md for the appropriate package
    solidity 
    opened by xBalbinus 5
  • [feature] Local environment setup

    [feature] Local environment setup

    Motivation

    This is a followup to the local environment RFC https://doc.clickup.com/14205595/d/h/dhgmv-10480/8b498d6fedd36f7, which should help contributors and developers set up local testing environments for Nomad.

    Solution

    The RFC Spec listed here

    Changelog:

    • Restored and cleaned up previously broken contract and agent deployment abstractions (it works now!)
    • Dockerized hardhat and agent image are now ready to use for further integration tests (integration tests themselves are WIP and coming in a later ticket)
    • Yarn bootup / yarn start scripts ready for booting up the local environment (further yarn scripts for individual integration tests to be implemented in following PR)
    • Removed jokes on variables, set up changelog to track oncoming additions and changes
    • Added Bunyan for logging capabilities

    Testing:

    • Tested multiple times on local machine, with the help of the tooling team @yourbuddyconner @kekonen @luketchang @Imti et. al.
    • Documentation and .env.examples updated to fit the currently running setup.

    PR Checklist

    • [x] Added Tests
    • [x] Updated Documentation
    • [x] Updated CHANGELOG.md for the appropriate package
    opened by xBalbinus 5
  • feat: mock accountant for testing recovery UI

    feat: mock accountant for testing recovery UI

    Motivation

    Enable UI testing of recovery flows

    Solution

    A mock accountant that implements most basic flows

    PR Checklist

    • [ ] Added Tests
    • [ ] Updated Documentation
    • [x] Updated CHANGELOG.md for the appropriate package
    solidity 
    opened by prestwich 4
  • refactor: fork tests can easily be modified to any chain

    refactor: fork tests can easily be modified to any chain

    Motivation

    We'd like the ability to run the fork tests on any chain

    Solution

    Refactor to use CallBatch domain wherever possible so that the test domain can be changed in one single place in Reboot.t.sol.

    PR Checklist

    • [ ] Added Tests
    • [ ] Updated Documentation
    • [ ] Updated CHANGELOG.md for the appropriate package
    opened by anna-carroll 0
  • Add instructions for enrolling watcher in da-bridge demo

    Add instructions for enrolling watcher in da-bridge demo

    Motivation

    Add watcher enrollment to Avail bridge demo.

    Solution

    Add enrollment and changes to env vars to pass.

    PR Checklist

    • [ ] Added Tests
    • [x] Updated Documentation
    • [ ] Updated CHANGELOG.md for the appropriate package
    opened by luketchang 0
  • Support rpc overrides for deployment/upgrade

    Support rpc overrides for deployment/upgrade

    Package

    deploy

    Describe the feature you would like

    Enable the easy override of the default RPC endpoints that exist in the protocol configuration via an overrides file.

    Additional context

    No response

    opened by odyslam 0
  • feat: versioning for deploys

    feat: versioning for deploys

    Package

    deploy, contracts-core, contracts-bridge, contracts-router

    Describe the feature you would like

    need to design how we will handle versioning between contracts-core, contracts-bridge, contracts-router, and deploy packages

    As the contract code changes, the deploy script must sometimes also change (namely, if constructor / initialize / setup function interfaces change)

    However, these packages are used in different places which each have different needs

    Use cases:

    • production deploys: always want to deploy from tagged contract version
    • development + staging deploys: probably want to deploy from tagged contract version?
    • local environment testing: by default, want the local workspace version; may also want to be able to choose tagged versions too

    We cannot just update the package.json of deploy package to choose which contracts to use, as we also need to use the right version of the deploy package itself

    Additional context

    Relevant: all comments / discussion on this PR: https://github.com/nomad-xyz/monorepo/pull/312

    help wanted typescript 
    opened by anna-carroll 8
Owner
Nomad
Nomad
Make clone chrome. With the help of a nomad coder

clone_momentum Make clone momentum. With the help of a nomad coder https://taeminchoe.github.io/clone_momentum/ Description of each function 1. Login

최태민(Taemin Choe) 1 Dec 26, 2021
A simple project to learn more about developing smart contracts on polygon.

polygon-books-hardhat A simple project to learn more about developing smart contracts using Solidity. Local Development Environment Setup Install all

Lionel Bersee 1 Jan 25, 2022
A demo for E2E build piplelines in Design Systems using monorepo's and automation :zap:.

Design System Pipelines demo What is it? A working demonstration for end-to-end build piplelines in Design Systems using Primer Primitives, Primer CSS

Rez 7 Oct 20, 2022
A template application for setting up a mobile app video game with IONIC, PHASER, ANGULAR and a Monorepo strategy

OpenForge Ionic Monorepo Example This is a template project for all you aspiring video game developers out there! Want to use your web application ski

OpenForge 67 Dec 22, 2022
A monorepo for comma.ai web interfaces and packages

comma webapps This mono-repository contains the web applications and packages for the web UIs of comma.ai Contributing Just pick something and work on

null 5 Sep 27, 2022
Monorepo project that shows the current weather data and weather forecast for next 7 days. Created from scratch to participate in a 14-days hackathon.

Climatic Monorepo project that shows the current weather data and weather forecast for next 7 days. Created from scratch to participate in a 14-days h

Luis Marsiglia 6 Jun 23, 2022
A monorepo that uses the AWS Cloud Development Kit to deploy and configure nanomdm on AWS lambda.

NanoMDM on AWS This repo builds and configures a nanomdm server to run on AWS lambda. It uses the Cloud Development Kit and tries to follow best pract

Stevie Clifton 4 May 26, 2022
NX monorepo showing the TMDB Watchlist mobile app with Expo, tRPC, Next, and Prisma

tmdb-watchlist-prisma This app uses TMDB to retrieve a list of Now Playing movies. You can add/remove movies to track which ones you've watched. There

Mat Warger 65 Dec 28, 2022
It is a monorepo that includes all end-to-end resolutions. You can create a website, API and mobile application.

Discord Website http://localhost:3000 - vue http://localhost:5000 - vue-mobile http://localhost:4000/graphql - api Setup pnpm install docker-compose u

Mehmet 34 Dec 7, 2022
This monorepo stores all code and assets of all projects with which we develop regels.overheid.nl

Welcome Introduction In 2021 Utrecht started developing the Virtual Income Desk with Open Rules. An initiative with the aim for citizens to always and

Ministerie van Binnenlandse Zaken en Koninkrijksrelaties 5 Dec 8, 2022
Remix TypeScript monorepo with Turborepo pipelines, Prisma, PostgreSQL, Docker deploy to Fly.io, pnpm, TailwindCSS and Tsyringe for DI.

Remix template with Turborepo, TypeScript and pnpm. The remix app deploys to fly.io or build to Docker image. Example packages for Database with prisma, Tsyringe dependency injection, UI, and internal TypeScript packages.

Philippe L'ATTENTION 33 Dec 29, 2022
Projen project type for Turborepo monorepo setup.

?? projen-turborepo Projen project type for Turborepo monorepo setup. Getting Started To create a new project, run the following command and follow th

Roman 23 Oct 4, 2022
Plugin to run NestJS Apps from Nest Monorepo

Serverless Nest Monorepo Plugin Plugin that adds support to run NestJS Apps from Nest Monorepo, which is set up using Nest CLI with several microservi

Blub Blub 13 Dec 1, 2022
A monorepo containing both the $CODE token contract & the claim web app.

DeveloperDAO $CODE contract & claim site A monorepo containing both the $CODE token contract & the claim web app. Contents Related Development Prerequ

Developer DAO 27 Jul 12, 2022
Unified-myst is a monorepo containing packages for using MyST

unified-myst (IN-DEVELOPMENT) unified-myst is a monorepo containing packages for using MyST (Markedly Structured Text), within the unified ecosystem.

Executable Books 5 Apr 14, 2022
Get packages from a monorepo (pnpm, yarn, npm, lerna)

?? You can help the author become a full-time open-source maintainer by sponsoring him on GitHub. @egoist/get-packages Get packages from a monorepo (p

EGOIST 45 Jun 1, 2022
⚙️ Monorepo for shared configurations used in Alphaworks

@alpha-dao/shared-config Usage Shared Config Wondering which configuration to use when starting a new project? Then you're probably looking for this m

Alphaworks 8 Nov 17, 2022
🚀 The Ultimate Monorepo Starter for Node.js Serverless Applications

Nx Serverless The Ultimate Monorepo Starter for Node.js Serverless Applications ✅ First-Class Typescript Support ✅ DynamoDB Single Table Design ✅ Shar

ngneat 301 Jan 1, 2023
Monorepo management scripts

Monorepo management scripts

hrsh7th 2 Jan 26, 2022