GithubHelp home page GithubHelp logo

safudex / smartbnb Goto Github PK

View Code? Open in Web Editor NEW
31.0 3.0 5.0 4.03 MB

Smart contracts on Binance Chain via a decentralized sidechain bridge with NEO

Home Page: https://smartbnb.net

License: MIT License

C# 75.39% Go 7.49% Python 3.07% JavaScript 5.42% TypeScript 8.62%
binance-chain neo neo-blockchain

smartbnb's Introduction

smartBNB

Smart contracts on Binance Chain via a decentralized sidechain bridge with NEO

TL;DR

SmartBNB is a project that enables Binance Chain tokens to trustlessly use smart contracts in the NEO blockchain through sidechains.

What is smartBNB?

SmartBNB is a trustless bridge that enables tokens on Binance Chain to be transferred to Neo’s blockchain and back. This enables tokens issued on Binance chain to use smart contracts in the Neo blockchain. As such, token issuers can benefit from Binance Chain’s DEX while taking advantage of Neo’s smart contracting capabilities.

Sending tokens from Binance Chain to Neo is done by locking tokens on Binance Chain, at which point the same number of tokens are minted on Neo. Once tokens are minted on Neo, they can be used for Neo-based smart contracts. User can later redeem tokens by burning them and unlocking the original tokens on Binance Chain. A collateral-based system is used to ensure that, in the event of any irregularity, users are fully compensated.

How does it work?

Like sidechains, SmartBNB system employs a lock=mint and burn=unlock system. The protocol ensures the secure locking of tokens on Binance Chain by using fully-collateralized custodians.

First, custodians have to deposit GAS tokens as collateral in a smart contract. These custodians can then receive and safekeep tokens from SmartBNB users who want to port tokens from Binance Chain to Neo.

When a user sends tokens to a custodian on Binance Chain, they are locked in the custodian’s vault. The protocol then mints new tokens on Neo to represent the locked tokens and sends them to the user. Later, users can burn their Neo-based tokens to retrieve their original tokens on Binance Chain. The custodian is forced to send these tokens back to the users, as the custodian will lose his/her collateral if this doesn’t happen.

Because of this collateral, which is set to be more than 150% of the locked tokens, the protocol is trustless. Custodians are heavily incentivized to behave honestly, as they will incur significant financial losses if they don’t. Users are fully protected from dishonest behavior by custodians, as their collateral would be given to affected users.

Custodians are rewarded for their custodial services. Anyone can become a custodian by depositing Neo as a bond. For the first time, it is possible to receive a return on capital that is locked on the Neo blockchain.

For more information, check out our protocol specification.

Deploy smartBNB for your own token

  1. Change the following constants inside Contract.cs:
    • PriceOracle (you will need to generate the private key to be used in the oracle contract)
    • Denom
    • Name()
    • Symbol()
  2. Deploy a full node along with NeoPubSub
  3. Deploy the updated Contract.cs to MainNet or TestNet
  4. Deploy a price oracle for your token
  5. Deploy a collateral provider
  6. Deploy a system that sends alerts on collateral liquidations for arbitrageurs

smartbnb's People

Contributors

corollari avatar dependabot[bot] avatar salahzsh avatar thijsmaaslaw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

smartbnb's Issues

Release shortlist

  • CHALLENGE COMPROBAR FROM, TO, AMOUNT DE UNA TRANSACCION dado un json string que compruebe from to amount se correponde al estado del contrato individual entre usuario y collateral

  • Hacer flujo del protocolo en el smart contract

    • Funcion para que un individuo pueda registrarse como collateral (debe registrar su addr y la cantidad de collateral que quiere meter, esta funcion tambien sirve para añadir o reducir su collateral) guardar en el storage + si quiere reducir entonces comprobar eso no compromete el deposito de ningun usuario
    • Funcion para que el usuario pueda reservar un collateral (sacar del storage un collateral que corresponda a la cantidad que quiere el usuario + marcar collateral como reservado) + bloquear cierta cantidad de neos del usuario
    • Funcion para que el collateral le diga al contrato que se ha enviado el deposito correctamente y puede crear los sBNB y los asigna al usuario
    • Funcion para que el usuario justifique que ha enviado el dinero al collateral en caso de que este no haya indicado al contrato que le han hecho deposito correctamente, el usuario adjunta la prueba de que ha enviado el deposito, si el collateral no puede ejecutar ningun challenge como falso, se castiga al collateral quitandole collateral
    • Funcion para que el usuario pueda decir que quiere sus BNB de vuelta, esta funcion crea un evento devolucion de deposito que el software del collateral escuchara para hacer la devolucion, se destruyen los sBNB
    • Funcion para que el usuario cree un challenge en caso que el collateral no devuelva el deposito
  • SOFTWARE COLLATERAL

    • Programa para que el collateral se pueda registrar/aumentar/reducir collat
    • Programa que escucha la blockchain a los eventos:
      • Devolucion de deposito:
        • El usuario B quiere recuperar sus BNB y quema sBNB en NEO, el script envia X BNB de la cuenta del collateral A al usuario B
      • Challenge requerido:
        • El usuario B no ha recibido sus BNB y pide un challenge, el script pilla la tx en la que ha enviado los BNB y crea una proof, la envia al contrato
      • Se ha realizado un deposito:
        • El usuario B ha reservado un collateral y le ha enviado el deposito en BNB a la direccion de ese collateral. El script comprueba que el usuario que le ha enviado el dinero y la cantidad realmente estan registrados en el contrato y si es asi, el script da el visto bueno al contrato para que se creen sBNB en NEO
  • SOFTWARE USUARIO

    • Programa para que el usuario pueda realizar challenges en local, dado un txHash le devuelve que parte falla
    • Programa para que el usuario pueda consultar y reservar un collateral, llamada al contrato que devuelve una direccion donde enviar BNB
  • ORACULO

  • NEP5

    • Algoritmo para aplicar interés a los sBNB guardados
  • smartbnb.net website

Improve UX

  • SOFTWARE COLLATERAL

    • Programa para que el collateral se pueda registrar/aumentar/reducir collat
    • Programa que escucha la blockchain a los eventos:
      • Devolucion de deposito:
        • El usuario B quiere recuperar sus BNB y quema sBNB en NEO, el script envia X BNB de la cuenta del collateral A al usuario B
      • Challenge requerido:
        • El usuario B no ha recibido sus BNB y pide un challenge, el script pilla la tx en la que ha enviado los BNB y crea una proof, la envia al contrato
      • Se ha realizado un deposito:
        • El usuario B ha reservado un collateral y le ha enviado el deposito en BNB a la direccion de ese collateral. El script comprueba que el usuario que le ha enviado el dinero y la cantidad realmente estan registrados en el contrato y si es asi, el script da el visto bueno al contrato para que se creen sBNB en NEO
  • SOFTWARE USUARIO

    • Programa para que el usuario pueda realizar challenges en local, dado un txHash le devuelve que parte falla
    • Programa para que el usuario pueda consultar y reservar un collateral, llamada al contrato que devuelve una direccion donde enviar BNB

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.