---
# System prepended metadata

title: Hackthon Resources - Tusima zkBridge
tags: [zkBridge, zeroKnowledge]

---

# Tusima zkBridge Resources - ETH London Hackathon (27-29 Oct ’23)

![image alt](https://ucarecdn.com/f4e08f06-c238-47f8-b98a-97629c199377/bridgelogo.png "title")   

[TOC]

Tusima zkBridge is offering total of $5,000 in prizes. On this page, you can find a brief introduction for how to send **inter-chain messages** with **Tusima zkBridge**. This will help you to build any cross-chain DAPPs.

## What is Tusima zkBridge?

Tusima zkBridge is a one-stop cross-chain solution which is powered by zkSnarks technology. We endeavor to establish a trustless and permissionless cross-chain infrastructure that facilitates seamless and secure cross-chain communication.

Tusima zkBridge consists of three main components, which are:
- On-chain light client
- Messaging
- Token bridge

:::warning
Notice: 
We are currently still in the testnet stage. We cannot guarantee that the product will be free from any defects. But it won't cause any damage to your property anyway.
:::

## Which chain do we support now?
- **Goerli --> BSC testnet**, this means that you can send messages from Goerli to BSC testnet, but cannot back.
- **Goerli <--> zkSync era testnet**, this means that you can send messages from either of the two chains to the another.


## Sending and receiving messages

To send and receive messages, you only need to use the **Messaging** component of Tusima zkBridge. Messaging component is composed of smart contracts and written in Solidity, so you should use it in Solidity. The following is a nutshell to the usage of Messaging component.

We have a Interface repo on github: [TusimaNetwork/zkBridge-messaging-interfaces](https://github.com/TusimaNetwork/zkBridge-messaging-interfaces). First of all, please make sure to include it in your code.

### Receiving

```solidity=
import { Receiver } from "zkBridge-messaging-interfaces/src/interfaces/Receiver.sol";

contract MsgReceiver is Receiver {

    string public message;

    constructor(address _tusimaMessaging) Receiver(_tusimaMessaging) {}

    function handleMsgImpl(
        uint32 _sourceChainId, 
        address _sourceAddress, 
        bytes memory _message
    )internal override
    {
        message = string(_message);
        // you can do anything here
    }
}
```

### Sending

```solidity=
import { ISender } from "zkBridge-messaging-interfaces/src/interfaces/IMessaging.sol";

contract MsgSender {
    
    ISender public tusimaMessaging;

    constructor(address _tusimaMessaging) {
        tusimaMessaging = ISender(_tusimaMessaging);
    }

    function sendMsg(
        uint32 _targetChainId, 
        address _targetAddr, 
        bytes memory _message
    ) external
    {
        string memory data = "Hello world";
        tusimaMessaging.send(_targetChainId, _targetAddr, bytes(data));
    }
}
```

For more details please refer to the [documents](https://tusima.gitbook.io/zkbridge/build-with-messaging/overview). If you have any questions, feel free to reach out to our team on [Discord](https://discord.com/invite/tusimanetwork).

## Helpful information


| Chain              | Chain ID | RPC                                             | Messaging Address                          |
| ------------------ | -------- | ----------------------------------------------- | ------------------------------------------ |
| Goerli             | 5        | https://goerli.infura.io/v3/<your api key>      | 0x7D433CE673387604ad811c9DaECAfb041d74ee23 |
| BSC testnet        | 97       | https://data-seed-prebsc-1-s2.bnbchain.org:8545 | 0xB8A1B5a29842498c581CD0D954b669D4b1A33A0A |
| zkSync era testnet | 280      | https://testnet.era.zksync.dev                  | 0x13045DDfd3fB1A080cA97A9689657A058A21c60C |



## 💰Bounty Prizes Details

Build one of the following:

1. Omnichain DApp
    Based on our zkBridge cross-chain protocol, develop a succinct full-chain DApp;
3. Cross-chain Voting
    Tokens and assets held on one chain can be verified and voted on another chain utilising the zkBridge;
5. Cross-chain Airdrop
    Allow owners of ERC721 on Ethereum to claim other tokens on another chain (such as BSC);
7. Cross-chain ENS Analysis
    Analyse an Ethereum ENS name on another chain. Have mainnet ENS addresses to be used on other chains via the zkBridge; 
9. Cross-chain Lending
    Deposit assets on one chain as collateral, allowing user to lend assets on another chain.
    
**Best Project - $5k**

## Links

- [Website](https://bridgetest.tusima.network/)
- Github
    - On-chain light client repository: [TusimaNetwork/zkBridge-lightClient](https://github.com/TusimaNetwork/zkBridge-lightClient)
    - Messaging repository: [TusimaNetwork/zkBridge-messaging](https://github.com/TusimaNetwork/zkBridge-messaging)
- [Token bridge](https://bridgetest.tusima.network/transfer)
- [Documents](https://tusima.gitbook.io/zkbridge/)
- Social media
    - [Discord](https://discord.com/invite/tusimanetwork)
    - [Twitter](https://twitter.com/TusimaNetwork)
    - [Telegram](https://t.me/tusimaofficial)
    - [Medium](https://medium.com/@TusimaNetwork)
    - [Youtube](https://www.youtube.com/c/TusimaNetwork)
    - Email: <contact@tusima.network>