A cross-chain messaging protocol - a portal betwen blockchains.
Note: Technical overview available here. Docs available here.
To connect the Chia and Ethereum/Base blockchains, a trusted set of parties (validators) is needed. These parties independently observe messages on the supported chains and generate a signature attesting the details. On the destination chain, a puzzle or contract accepts a majority of signatures and acts as an oracle, effectively allowing apps to send and receive messages between chains.
This repository also contains the code required to enable bridging tokens and native assets between the supported chains. The poral (trusted oracle) is controlled by a validator multisig and can be upgraded at any time. The bridge contracts and puzzles are immutable, and rely on the bridge as an oracle. A 0.3% tip is given to the portal for each transaction.
To ensure uniqueness, each side of the portal assigns a nonce (a unique, increasing integer on Ethereum; a coin id on Chia) to each message. On the other side, the user has the ability to execute messages out-of-order, but can only use each message exactly once.
On Chia, messages are picked up by looking for the following output condition:
(list CREATE_COIN
[bridging_puzzle_hash]
[bridging_fee_or_more]
([destination_chain] [destination] . [content])
)
services:
warp-cli:
image: ghcr.io/warpdotgreen/cli:master
volumes:
- ./config.json:/app/config.json
- /mnt/disk/warp-cli/data.db:/app/data.db
command: listen
Clone this repository and enter the cli
directory by running:
git clone https://github.com/warpdotgreen/cli.git -b master
cd cli
docker build . -t cli
echo '{}' > config.json
touch data.db
docker run -it -v "$(pwd)"/config.json:/app/config.json -v "$(pwd)"/data.db:/app/data.db cli --help
-
Clone this repository and enter the
cli
directory by running:git clone https://github.com/warpdotgreen/cli.git -b master
cd cli
-
Ensure prerequisite software is installed. This repo has been tested with
python 3.10/3.11
andnodejs v18
. If you have a different node version, uninstall and install the correct version via:curl -sL https://deb.nodesource.com/setup_18.x -o /tmp/nodesource_setup.sh chmod +x /tmp/nodesource_setup.sh && /tmp/nodesource_setup.sh
-
Create and activate a virtual environment:
python3 -m venv venv
-
Install all required packages:
pip install --extra-index-url https://pypi.chia.net/simple/ chia-dev-tools==1.2.5 pip install -r requirements.txt
-
Compile EVM contracts
Create
hardhat.config.ts
in the root directory:cp hardhat.config.example.ts hardhat.config.ts
Then, run:
npm i npx hardhat compile
The repository includes several tests. To run tests:
./test.sh
npx hardhat test
To check contract test coverage: npx hardhat coverage
.
This repository is licensed under the MIT License. For more details, please see the LICENSE file.