Code Monkey home page Code Monkey logo

bridge-v2's Introduction

ren bridge v2

An easy way to bridge cross-chain assets between blockchains.

bridge

Development guide

.env

Copy .env.example into .env and add missing environment variables. Bridge uses Infura internally, so you'll need to go to infura.io, create a key and set REACT_APP_INFURA_ID in the .env file.

yarn

Ensure the dependencies are installed by running yarn.

Available commands:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn test

Launches the test runner in the interactive watch mode.

yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance. The build is minified and the filenames include the hashes.

Architecture

The app was build on top of CRA, Material-UI with redux-toolkit for shared state management.

The core RenVM libraries on which the application is built are as follows:

@renproject/multiwallet-ui - provides extensible wallet selection, connection and management features for React apps. It comes together with default UI, but can be adapted to any React UI framework.

@renproject/rentx - RenTX is for managing transactions. Allows transactions state tracing and makes it easier to build UI for appropriate transaction stages.

@renproject/ren - RenJS is the core library for interacting with RenVM. RenTX uses it internally. Bridge uses it for things such as fees calculation.

Forking

You are free to fork this app and adapt/extend it to your needs.

git clone https://github.com/renproject/bridge-v2.git

Requirements

RenBridge requires an Infura key provided as an environment variable. You can create one by going to infura.io. If another Ethereum provider is being used, it can be changed in Multiwallet.tsx.

Common cases

Here are some common cases you can run into:

Adding new asset

If you want to add a new asset, follow these steps:

  • add asset source chain and appropriate mappings to rentx.ts
  • add a new asset and its chain data in assetConfigs.ts. Ensure you covered following points:
    • add a new asset symbol to BridgeCurrency enum
    • add the newly installed chain to RenChain and BridgeChain enums
    • add a new BridgeCurrencyConfig entry in currenciesConfig. Should include labels, icons/coloring, source chain and network mappings.
    • add a new BridgeChainConfig entry in chainsConfig. Should include labels, icons, block time/confirmations data and native currency mapping
    • extend toMintedCurrency and toReleasedCurrency functions with new asset mappings
    • enable newly added asset in supportedLockCurrencies, supportedReleaseCurrencies

Changing visual appearance

Most of the visual - related configuration lies in a theme folder. To find out how to style Material UI, check this link. Icons, logos and other images can be found in assets folder.

Deploying

Any static hosting site can be used, such as GitHub pages, Netlify or Cloudflare pages, or on IPFS through a service like Fleek.

For GitHub pages, instructions can be found here: https://create-react-app.dev/docs/deployment#github-pages.

bridge-v2's People

Contributors

0x31 avatar eshaben avatar ryanswrt avatar xnyl avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.