GithubHelp home page GithubHelp logo

bridgeevm's Introduction

Bridge ETH/BSC

Принцип работы следующий:

Контракт моста разворачивается в обоих сетях с указанием, в конструкторе, chainid и и адрес валидатора(бэкенд). После деплоя контракта необходимо добавить адрес токена для передачи в другую сеть. Добавление токена осуществляется функцией:

includeToken((адрес контракта токена) => (chainID сети назначения => (адрес токена в сети назначения)))

Для передачи токенов из ETH в BSC сеть необходимо: 1 - Вызвать функцию swap(...), контракта BridgeEmv, в сети ETH: swap() Данная функция сжигает передаваемые токены и генерирует event, который позволит БЭКЕНДУ сгенерировать подпись, которая в свою очередь позволит нам доказать, в другой сети, что swap() уже вызывался и можно переводить токены на указанный адрес. 2 - Вызвать функцию Redeem(.......) контракта BridgeEmv в сети BSC Данная функция проверяет что принимаемая сигнатура была подписана ВАЛИДАТОРОМ для данных, которые переданы в параметрах и минтит токены.

Тестовые контракты и транзакции
Функционал:
  • Функция swap(): списывает токены с пользователя и испускает event ‘swapInitialized’
  • Функция redeem(): вызывает функцию ecrecover и восстанавливает по хэшированному сообщению и сигнатуре адрес валидатора, если адрес совпадает с адресом указанным на контракте моста то пользователю отправляются токены
  • Функция updateChainById(): добавить блокчейн или удалить по его chainID
  • Функция includeToken(): добавить токен для передачи его в другую сеть
  • Функция excludeToken(): исключить токен для передачи
npx hardhat test:
Bridge
    ✔ Checking that contract BridgeBSC is deployed
    ✔ Checking that contract TokenBSC is deployed
    ✔ Checking that contract TokenETH is deployed
    ✔ Checking that contract BridgeETH is deployed
    ✔ Checking that bridgeBSC has role a BRIDGE_ROLE
    ✔ Checking that bridgeETH has role a BRIDGE_ROLE
    ✔ Checking function swap() (151ms)
    ✔ Checking that emission token is in ETH
    ✔ Checking function redeem() ETH => BSC => ETH (328ms)
    ✔ Checking function includeToken() (48ms)
    ✔ Checking function excludeToken() (45ms)
    ✔ Checking function updateChainById()
npx hardhat coverage:
---------------------|----------|----------|----------|----------|----------------|
File                 |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
---------------------|----------|----------|----------|----------|----------------|
 contracts\          |      100 |      100 |      100 |      100 |                |
  BridgeEVM.sol      |      100 |      100 |      100 |      100 |                |
  TokenForBridge.sol |      100 |      100 |      100 |      100 |                |
---------------------|----------|----------|----------|----------|----------------|
All files            |      100 |      100 |      100 |      100 |                |
---------------------|----------|----------|----------|----------|----------------|

bridgeevm's People

Contributors

hostlime avatar

Watchers

 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.