NFT Bridge connecting Harmony to 10+ EVM & Non-EVM chains XP.Network

Name of Project / DAO / Company

XP.NETWORK

Application type

NFT Multichain Bridge

Proposal overview

  • The first of the kind NFT multi-chain bridge connecting a wide range of EVM to a number of Non-EVM chains. At the moment of writing, the bridge allows transferring NFTs to and from the mainnets of:
    • Ethereum
    • Binance Smart Chain
    • Avalanche
    • Polygon
    • Algorand (The only NFT Bridge)
    • Fantom
    • Tron (The only NFT Bridge)
    • Elrond (The only NFT Bridge)
    • Tezos (The only NFT Bridge)
    • Velas (The only NFT Bridge)
    • xDai (The only NFT Bridge)
    • Fuse (The only NFT Bridge)
      For many of the integrated chains, ours is the only NFT bridge they have. And the number of integrated chains keeps growing. We’re planning to integrate with the Polkadot, Cosmos, EOS ecosystems, as well as Cardano and Solana networks this year.

The bridge will open the new markets to the NFT community on Harmony and will open Harmony to a wide range of other ecosystems. The bridge we’re building is the new Silk Road of the NFT world. The communities will enrich each other with new ideas and technologies. Cross-chain games, metaverses, and marketplaces will become possible. Cross-chain battles or peaceful events will become a reality, including the Harmony community to the big family of highly developed ecosystems.

We expect at least a million users per month sending and receiving NFTs between chains. And we believe the Harmony community needs a connection to a transport corridor like this.

Team

Proposal ask

$35,000

Justification

Milestone 1 Total
Estimated Duration 3 weeks 3 weeks
Full-time equivalent (FTE) 28 28
Cost $ 35,000 $ 35,000

Compared to all the bridging solutions described above, XP.network has a number of important advantages:

  1. The first bridge designed exclusively for NFTs, tackling every aspect of asset transition and compatibility across multiple protocols;
  2. A much wider range of supported blockchains: any chain can be connected to the bridge;
  3. Linking EVM to a range of non-EVM chains with fundamentally different tech stacks, such as Elrond, Solana, Cardano, Algorand, etc.
  4. A simple and seamless UI for minting, transfering, and exploring NFTs;
  5. Attractively low transaction fees, payable in the currency of the origin blockchain (ETH, BNB, SOL etc.);
  6. Highly scalable: the capacity of the bridge is limited only by the TPS of the bridged chains;
  7. Possibility to mint NFTs on multiple chains from an easy-to-use UI;
  8. Superior security and reliability: a multilayer security system capable of preventing all common types of attacks, with no single points of failure;
  9. A more versatile technological stack, and provide the same level of security and reliability;
  10. Possibility to integrate the bridge with any NFT dApp, allowing users to trade and exchange NFTs the way they are used to, while the bridge operates behind the scenes.
  11. Possibility of transferring NFTs in Batches
  12. Possibility of transferring NFT smart contract logic
  13. Option of choosing the smart contract to mint wrapped NFTs with on the target chain

Metrics for success

Number Deliverable Specification
0a. License Apache 2.0 / MIT / Unlicense
0b. Documentation We will provide both inline documentation of the code and a basic tutorial that can interact with the deployed smart contracts and backend service.
0c. Testing Guide The code will have proper unit-test coverage 85% to ensure functionality and robustness. In the guide, we will describe how to run these tests
1 Smart Contracts We will develop smart contracts that will:
1. Support ERC-721
2. Support ERC-1155
3. Freeze/Unfreeze Native NFTs
4. Mint/Burn wrapped NFTs
5. Pay the TX fees on the target chain in native tokens
6. Send / Receive NFTs in batches
2 Validators Adding the logic to the validators
3 Backend Integration of Harmony in the:
1. NFT Index
2. TX Fee Estimator
3. Crypto-currency converter
4 Frontend Integration of Harmony in the:
1. User Interface
2. Wallets (Metamask, TrustWallet, WalletConnect)

External links

Project link: https://bridge.xp.network/
whitepaper: XP.NETWORK Whitepaper | Welcome to the XP.NETWORK Docs

4 Likes

Thank you for the proposal. I’d like to propose 3 deliverable for the payout:

$10k - launch on testnet
$10k - launch on mainnet
$15k - reaching 1k users of the bridge on Harmony

Can we agree to these terms?

2 Likes

Hi, Giv.

Thanks for your proposal. We spoke with Nick earlier today, and he suggested that we apply for the $50K grant.

We spoke internally and decided - we prefer our initial offer.

We’re suggesting the following roadmap:
$10k - launch on testnet
$15k - launch on mainnet
$10k - reaching 1k users of the bridge on Harmony

2 Likes

Thanks @Dima_Brook that works. Approved! :tada:

Meanwhile, to prepare receiving funds, email your identification documents to kyc@harmony.one and create a Gnosis Safe MultiSig wallet at https://multisig.harmony.one and using instructions below
:arrow_right: Setup Gnosis Safe with MetaMask & 1Wallet

Checkout the Funding FAQ for further info at Harmony Funding FAQ. Join the Harmony Grants Telegram channel to share your story and to gain partnerships there by growing your own ecosystem.

Please join the Harmony Grants Telegram channel and Harmony’s Discord server.

We’d love :blue_heart: to see weekly updates on this thread here, to keep the community posted on this proposal’s progress!

2 Likes
  1. It’s the 3rd Grant Awarded to XP Network within the last 1 month.

  2. New integrated chains with the bridge:

  1. Wallets integrations:
  • Temple
  • Kukai
  • Beacon
  1. In progress:
  • IoTeX blockchain integration
  • Off-Chain Multisig collection for the bridge validators
  • Bridge Widget - live on staging
  • ERC-1155 standard integration
  • Support for direct NFT transfers A → B → C instead of A->B; B->A->C
  • Support for transfer of NFTs with logic
  • Support for custom NFT collection name on the target chain
  1. Next planned:
  • Harmony
  • VeChain
  • Aurora
  • Solana - testing before auditing
  • Auditing Solana Smart Contract
1 Like

@giv @Daniel_Ayuko

Harmony Testnet has been successfully integrated into the XP.network Multi-Chain NFT Bridge.

Fantastic! Go ahead and send in your invoice for the testnet milestone. I will DM you the details.

2 Likes

$10k testnet milestones has been funded: Harmony Blockchain Explorer

1 Like

Thanks! We’re starting the Harmony Mainnet integration into the NFT Bridge! We’ll keep you informed.

Hi @Dima_Brook - would love to hear progress on Mainnet and if you need assistance. Thank you.

@giv @lij @cheualx

Our mainnet integration is almost over. We have one question that could speed up the final integration:

Is there an API service in Harmony that returns an array of assets, like NFTs if queried by a user address?

If yes - how can we use it? Is there any documentation?

If not - what is the fastest way to create it other than reading all the blocks from Genesis since it takes too much time?

Most excellent, we are excited to see this!

We’ve integrated Harmony into the mainnet of the Multi-Chain NFT Bridge

Milestone Delivery

Mainnet UI Integration

Harmony can be found the production version of the bridge connecting 14+ blockchain mainnets.

Harmony Mainnet

Wallets Support

Harmony is supported though Metamask & WalletConnect (for the mobile interaction)

Wallets

Switching Metamask to Harmony:

switching to Harmony

NFT Indexing for Harmony

NFT Indexing

Mainnet transactions

1.1. Sending an NFT Polygon → Harmony

Polygon - Harmony

Transaction on Polygon: 0x31fc6ea9493fb85e7c6b0ce6d22b8fc2172840bd5b9222c629f50007ac3046f7

Polygon-Harmony-tx

1.2 Destination Transaction on Harmony: 0x35533f9b3c97e7ced6ebeb14cb90b954e1131c02b15b2a635923cd827e4ae973

Arrival on Harmony

2.1 Sending from Harmony → Polygon

Harmony to Polygon

Transaction on Harmony: 0x290e695463e621f46405f3edd8caf4cc70173182c3a35cea1c1f07c065eb11fc

Sending from Harmony

2.2. Receiving on Polygon

Transaction on Polygon: 0xe8db8d1dd9a5e08798727727b2e17c4242955a5c9f5285b9aafee8247acaec5f

Receiving on Polygon

Fee estimation on Harmony

Fee estimation

Smart Contracts Whitelisted on Harmony

https://xpnet-whitelisted-api.herokuapp.com/12

Testing JavaScript Library

1. Install the libraries required for the project:


yarn add xp.network @elrondnetwork/erdjs ethers @taquito/taquito @temple-wallet/dapp

OR

npm i --save xp.network @elrondnetwork/erdjs ethers @taquito/taquito @temple-wallet/dapp

To import the latest version of xp.network v.2.0 library:

yarn add "git+https://github.com/xp-network/xpjs#bleeding-edge" @elrondnetwork/erdjs ethers @taquito/taquito @temple-wallet/dapp

2. Importing the dependencies

import {
    ChainFactoryConfigs,
    ChainFactory,
    Chain,
    AppConfigs,
    ChainParams
} from "xp.network";

(async () => {
    // Instantiate the chain factory for the
    // Connecting to the mainnnets of all the blockchains:
    const mainnetConfig = await ChainFactoryConfigs.MainNet()
    const mainnetFactory: ChainFactory = ChainFactory(
        AppConfigs.MainNet(),
        mainnetConfig
    );

    // Connecting to the testnets of all the blockchains:
    const testnetConfig = await ChainFactoryConfigs.TestNet();
    const testnetFactory: ChainFactory = ChainFactory(
        AppConfigs.TestNet(),
        testnetConfig
    );

    // Switching between the mainnets & the testnets:
    const factory: ChainFactory = mainnetFactory;
    const CONFIG: Partial<ChainParams> = mainnetConfig;
})();


3. Get the signer objects

3.1 Example of getting the signer object (for manual EVM testing in the BE)

Avoid using 3.1 setup in production. Use it for initial or backend testing only.

Add your private key to the environment:

touch .env
echo "SK=<Replace this with your Private Key>" >> .env
// EVM chains compatible wallet:
import { Wallet } from "ethers";
import { config } from 'dotenv';
config();
// EVM signer for testing in the BE
const signer = new Wallet(
     process.env.SK!,
     // Replace 'polygonParams'
     // with the relevant parameter
     // from the table below
     CONFIG.harmonyParams?.provider
);
Chain Parameters Chain Nonce
Elrond elrondParams 2
BSC bscParams 4
Ethereum ropstenParams 5
Avalanche avalancheParams 6
Polygon polygonParams 7
Fantom fantomParams 8
Tron tronParams 9
Harmony harmonyParams 12
xDai xDaiParams 14
Algorand algorandParams 15
Fuse fuseParams 16
Tezos tezosParams 18
Velas velasParams 19
Aurora auroraParams 21
Godwoken godwokenParams 22
Gatechain gatechainParams 23
VeChain vechainParams 25

3.2 Example of getting the signer object (in the FE for web3):

// EVM chains compatible signer:
import ethers from "ethers";
const signer = new ethers.providers.Web3Provider(window.ethereum).getSigner();

4. Getting the inner objects from this factory to be used for transferring, minting, and estimation of gas fees.

(async () => {
// Inner Object ================================ Chain Nonce
    const bsc       = await factory.inner(Chain.BSC);       // 4
    const ethereum  = await factory.inner(Chain.ETHEREUM);  // 5
    const avax      = await factory.inner(Chain.AVALANCHE); // 6
    const polygon   = await factory.inner(Chain.POLYGON);   // 7
    const fantom    = await factory.inner(Chain.FANTOM);    // 8
    const harmony   = await factory.inner(Chain.HARMONY);   // 12 <==========
    const gnosis    = await factory.inner(Chain.XDAI);      // 14
    const fuse      = await factory.inner(Chain.FUSE);      // 16
    const velas     = await factory.inner(Chain.VELAS);     // 19
    const aurora    = await factory.inner(Chain.AURORA);    // 21
    const godwoken  = await factory.inner(Chain.GODWOKEN);  // 22
    const gatechain = await factory.inner(Chain.GATECHAIN); // 23
    const vechain   = await factory.inner(Chain.VECHAIN);   // 25

    // Non-EVM chains:
    // Inner Object ================================ Chain Nonce
    const elrond    = await factory.inner(Chain.ELROND);    // 2
    const tron      = await factory.inner(Chain.TRON);      // 9
    const algorand  = await factory.inner(Chain.ALGORAND);  // 15
    const tezos     = await factory.inner(Chain.TEZOS);     // 18
})();


5.1 Listing NFTs Owned by the sender.

This operation does not depend on a wallet since reading operations are free and, therefore, do not require signing.

(async () => {
  // EVM:
  const web3Nfts = await factory.nftList(
    harmony, // The chain of interest
    "0x...." // The public key of the NFT owner in a web3 chain
  );
})();

7. Transferring an NFT

(async () => {
  // EVM compatible chains example:
  const web3Result = await factory.transferNft(
    harmony,        // The Source Chain.
    polygon,        // The Destination Chain.
    theChosenOne,   // The NFT object you have chosen from the list.
    signer,         // The web3 signer object (see p. 3.2 above).
    "ADDRESS OF THE RECEIVER" // The address whom you are transferring the NFT to.
  );
  console.log(web3Result);
})();

Congratulations on completing #2 milestone! Grant funding form received.

Keep the community posted on active users. Looking forward to seeing the growth of your project.

$10k - launch on testnet
$15k - launch on mainnet
$10k - reaching 1k users of the bridge on Harmony

1 Like

Milestone #2 funded:
0x6b3c5fcec5d2d0c059740fb542e77bbf2125eb2e53ce95fa6983a5fed989d671

1 Like