/hashi-app

Our Webapp for the protocol

Primary LanguageJavaScriptMIT LicenseMIT

Hashi app

We built the first and only bridge for all your Non Fungible Tokens between Tezos and Ethereum.

  • You can wrap any FA2 token to Ethereum
  • Or any ERC-721 token to Tezos

Convinience

Any FA2 or ERC-721 token can be bridged through Hashi. The tokens can be wrapped or recovered at any time. If you decide to sell the wrap NFT, to new owner will be able to unwrap it in its principal chain.

Decentralization

The protocol, unlike most of the bridges out there, can be use in a full trustless manner. We just deploy the 4 contracts needed to achieve this (2 per chain), and everything can happen without us now. Of course we also build an app, for non-nerds that just want to expand the field of possibilities for their NFTs.

Security

We imagined the protocol in such a way that there is no multi chain transactions, which are often attack vectors for bridges. Plus, it allow to add other blockchains in the protocol quickly, to expand the ecosystem of NFT tezos again and again.

Quick start

Clone the project

git clone https://github.com/hashi-protocol/hashi-app.git && cd hashi-app

Dependancies

yarn install

Connect your Ethereum wallet on the Ropsten testnet

Connect your Tezos wallet on the Florencenet testnet

You are ready to try Hashi ! ✨

(We deployed a nice NFT faucet so that everyone can try and give feedback)

Useful links

Operation (simplified)

Idea

Each chain has two contracts:

  • a locker, which store the NFT on their main chain until the wrap version is burn.
  • a minter, or wrapper, which mint the wrap token, with the same metadata.

The operation is pretty simple: a user comes and lock its NFT into the locker on chain A. Then he mint a wrapped token on chain B. And when he wants to recover its original NFT, he burns the wrapped one (we have equipped it with this function) and he can unlock it on blockchain A.

Security

Now we are able to lock, mint, burn and unlock NFTs from Tezos to Ethereum. But what is to stop someone from mining his own nft several times, or even mining a nft that is not his ? And what happen if the wrapped NFT has been sold ?

So we have some checks to do before letting these operations take place :

  • check if an NFT has already been wrapped before wrapping it
  • check if a wrapped NFT has been burned on blockchain B before unlocking it on blockchain A
  • check that user who wants to wrap an NFT on blockchain B is the owner of it on blockchain A
  • check that user who wants to unlock an NFT on blockchain A was the last owner of it on blockchain A

Decentralization

Of course we could have done this of chain, one a secured server. But that is not what we wanted to do here. We wanted Hashi to be fully trustless, fully decentralized, and fully autonomous.

So we managed to find solutions to these security checks with decentralized oracles and with adding on chain storage on certain functions. More on that in the coming whitepaper...

Summary

Let's take an example. Alice owns a beautful NFT on the Ethereum blockchain, and wants to use it in art galleries or games, but with low fees, and with the minor ecological impact of Tezos.

She wraps it using Hashi :

hashi - wrap

And when she wants to recover it :

hashi - unwrap

About

This project was built by :

  • Nikita Terekhov
  • Pierre-Antoine Arsaguet
  • Mathis Gontier Delaunay

We are all engineering student from Telecom SudParis, and INSA Lyon. We met with KRYPTOSPHERE, the first and biggest french student association working on blockchain and new technologies.