Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kleros/vea
Vea bridge
https://github.com/kleros/vea
backend blockchain bridge ethereum middleware monorepo protocol smart-contracts solidity typescript under-construction vea
Last synced: 6 days ago
JSON representation
Vea bridge
- Host: GitHub
- URL: https://github.com/kleros/vea
- Owner: kleros
- License: mit
- Created: 2022-11-07T19:22:15.000Z (almost 2 years ago)
- Default Branch: dev
- Last Pushed: 2024-10-23T06:57:22.000Z (14 days ago)
- Last Synced: 2024-10-23T08:03:43.597Z (14 days ago)
- Topics: backend, blockchain, bridge, ethereum, middleware, monorepo, protocol, smart-contracts, solidity, typescript, under-construction, vea
- Language: TypeScript
- Homepage: https://vea.ninja
- Size: 8.98 MB
- Stars: 10
- Watchers: 7
- Forks: 6
- Open Issues: 53
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
VEA---
# Vea
Vea is a cross-chain message bridge which enables fast and secure interoperability specifically designed with optimistic rollups in mind.
## About Vea
### What type of bridge is this?
A trust-minimized optimistically-verified bridge, open to any participant to fulfill the roles of Oracle, Challenger or Relayer. The [trust model](https://vitalik.eth.limo/general/2020/08/20/trust.html) requires only 1 live honest verifier, similar to optimistic rollups.
### How is this secure?
As an optimistic bridge, it is cheap and fast to use in the happy case, where an Oracle makes an unchallenged claim.
While in the unhappy case, it is no different than using the canonical bridges operated by a particular rollup or side-chain.
There is no need for any additional trust assumption on say a 3rd-party oracle or some slow governance mechanism or trusted DAO multisig to ensure that the message is relayed correctly.
As long as there is one honest participant running a working implementation of the light client specifications at any time, and anybody can take on this role.### Learn more...
##### ๐ [Website](https://vea.ninja)
##### ๐ [Documentation](https://docs.vea.ninja)
##### ๐ต๏ธ [Security disclosures](/SECURITY.md)
## Deployments
##### โ๏ธ [Contracts addresses](contracts/README.md#deployed-addresses)
##### โ๏ธ [VeaScan explorer](https://veascan.io)
##### ๐๏ธ Subgraph endpoints
- [Inbox for VeaScan](veascan-subgraph-inbox/README.md#deployments)
- [Outbox for VeaScan](veascan-subgraph-outbox/README.md#deployments)
- [Inbox for the Relayer CLI](relayer-subgraph-inbox/README.md#deployments)## Content
| Package | Description |
| ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **[contracts](/contracts)** | Smart contracts of the Vea bridge protocol. |
| **[relayer-cli](/relayer-cli)** | Convenience utility capable of automating the relaying of messages for verified state roots. |
| **[relayer-subgraph-inbox](/relayer-subgraph-inbox)** | Indexing of the bridge inbox for relaying purposes, in particular for the computation of the proof of inclusion of a message in a state root. |
| **[services](/services)** | Supporting services such as a graph-node container. |
| **[validator-cli](/validator-cli)** | Validator implementation in TypeScript capable of fulfilling the roles of Oracle and Challenger. |
| **[veascan-subgraph-inbox](/veascan-subgraph-inbox)** | Indexing of the bridge inbox for retrieval by the Veascan frontend. |
| **[veascan-subgraph-outbox](/veascan-subgraph-outbox)** | Indexing of the bridge outbox for retrieval by the Veascan frontend. |
| **[veascan-web](/veascan-web)** | Explorer of snapshot and messages crossing the bridge. |
| | |## Toolchain:
- Solidity v0.8
- Hardhat
- Ethers v5
- Chai + Mocha
- Node v16
- Typescript
- Yarn v3 without [PlugnPlay](https://yarnpkg.com/getting-started/migration/#switching-to-plugnplay)## Contributing
### Prerequisites
- Install NodeJS 16:
- on Red Hat Linux: `sudo dnf module install nodejs:16`
- on Ubuntu Linux: `sudo snap install node --classic`
- on MacOS via [brew](https://brew.sh/): `brew install node`
- Install Yarn v1 (Classic): `npm install -g yarn`
- Then [upgrade](https://yarnpkg.com/getting-started/install#updating-to-the-latest-versions) Yarn to v3: `yarn set version berry`
- Install Volta.sh: `curl https://get.volta.sh | sh`
- Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) to run the local graph node.
- Shell utilities: [jq](https://stedolan.github.io/jq/), [yq](https://mikefarah.gitbook.io/yq/)
- on Red Hat Linux: `sudo dnf install jq yq`
- on Ubuntu Linux: `sudo snap install jq yq`
- on MacOS via [brew](https://brew.sh/): `brew install jq yq`### Install the dependencies
```bash
$ yarn install
```### [Hardhat CLI auto-completion](https://hardhat.org/guides/shorthand.html) (optional)
```bash
$ npm i -g hardhat-shorthand$ hardhat-completion install
โ Which Shell do you use ? ยท bash
โ We will install completion to ~/.bashrc, is it ok ? (y/N) ยท true$ exec bash
```