|
1 | 1 | # ibc-rs
|
2 | 2 |
|
3 |
| -Rust implementation of IBC modules and relayer. |
| 3 | +Rust implementation of Interblockchain Communication (IBC) |
| 4 | +[modules](/modules) and |
| 5 | +[relayer](/relayer). |
| 6 | + |
| 7 | +Includes [TLA+ specifications](/docs/spec). |
4 | 8 |
|
5 | 9 | ## Disclaimer
|
6 | 10 |
|
7 | 11 | THIS PROJECT IS UNDER HEAVY DEVELOPMENT AND IS NOT IN A WORKING STAGE NOW, USE AT YOUR OWN RISK.
|
8 | 12 |
|
9 |
| -## Requirements |
10 |
| - |
11 |
| -- Rust 1.42+ (might work on earlier versions but this has not been tested yet) |
| 13 | +## Releases |
12 | 14 |
|
| 15 | +This project is still a pre v0.1.0 prototype. Releases can be found |
| 16 | +[here](https://github.com/informalsystems/ibc-rs/releases) |
13 | 17 |
|
14 |
| -## Relayer usage |
| 18 | +## Installation |
15 | 19 |
|
| 20 | +Requires Rust 1.42+ (might work on earlier versions but this has not been tested yet) |
16 | 21 |
|
17 |
| -### Requirements |
| 22 | +These are instructions for setting up a local development environment with two |
| 23 | +IBC-enabled local blockchains that the relayer can run against. |
18 | 24 |
|
19 |
| -Prerequisites to run the instructions below: |
| 25 | +Dependencies: |
20 | 26 |
|
21 | 27 | - `jq`, a command-line JSON processor
|
22 |
| -- To use and test the present relayer implementation, we first need a Tendermint instance that supports IBC; see more details on setting up a basic instance in the [development environment](#development-environment) part below. |
| 28 | +- [`gaia`](https://github.com/cosmos/gaia), a blockchain supporting IBC |
23 | 29 |
|
| 30 | +Clone the relayer implementation from [iqlusioninc/relayer](https://github.com/iqlusioninc/relayer/). |
| 31 | +We are interested in two commands we can run from this repo: |
24 | 32 |
|
25 |
| -### Instructions |
| 33 | +- `bash scripts/two-chainz "local" "skip"`. Running this script will instantiate two chains, listening on ports `26557` and `26657`, respectively. |
| 34 | + |
| 35 | + |
| 36 | +- `bash dev-env`. Running this script from your local source instantiates two chains, on ports `26557` and `26657`, and starts a relayer that sets up one connection, one channel and sends a few packets over the channel. |
| 37 | + |
| 38 | +Note that these script rely on the [cosmos/gaia](https://github.com/cosmos/gaia) implementation, which is a Cosmos-SDK application for the cosmos hub. |
| 39 | + |
| 40 | +## Running the Relayer |
26 | 41 |
|
27 | 42 | Assuming two Tendermint nodes running on local ports `26557` and `26657`.
|
28 | 43 | Suppose we use the name `chain_A` to refer to the node running on port `26657`, and the name `chain_B` for the node running on port `26557`.
|
@@ -73,23 +88,30 @@ The `relayer/cli/src/commands.rs` file contains further description of the CLI s
|
73 | 88 |
|
74 | 89 | **Note:** Add a `-v` flag to the commands above to see detailed log output, eg. `cargo run --bin relayer -- -v -c ./relayer/relay/tests/config/fixtures/relayer_conf_example.toml run`
|
75 | 90 |
|
| 91 | +## Contributing |
76 | 92 |
|
77 |
| -### Development environment |
78 |
| - |
79 |
| -To set up a local development environment, clone the relayer implementation from [iqlusioninc/relayer](https://github.com/iqlusioninc/relayer/). |
80 |
| -We are interested in two commands we can run from this repo: |
| 93 | +IBC is specified in English in the [cosmos/ics repo](https://github.com/cosmos/ics). Any |
| 94 | +protocol changes or clarifications should be contributed there. |
81 | 95 |
|
82 |
| -- `bash scripts/two-chainz "local" "skip"`. Running this script will instantiate two chains, listening on ports `26557` and `26657`, respectively. |
| 96 | +This repo contains the TLA+ specification and Rust implementation for the IBC |
| 97 | +modules and relayer. If you're interested in contributing, please comment on an issue or open a new |
| 98 | +one! |
83 | 99 |
|
| 100 | +## Versioning |
84 | 101 |
|
85 |
| -- `bash dev-env`. Running this script script from your local source instantiates two chains, on ports `26557` and `26657`, and starts a relayer that sets up one connection, one channel and sends a few packets over the channel. |
| 102 | +We follow [Semantic Versioning](https://semver.org/), but none of the APIs are stable yet. Expect |
| 103 | +anything to break with each release until `v0.1.0`. |
86 | 104 |
|
87 |
| -Note that these script rely on the [cosmos/gaia](https://github.com/cosmos/gaia) implementation, which is a Cosmos-SDK application for the cosmos hub. |
| 105 | +## Resources |
88 | 106 |
|
| 107 | +- [IBC Website](https://cosmos.network/ibc) |
| 108 | +- [IBC Specification](https://github.com/cosmos/ics) |
| 109 | +- [IBC Modules in Go](https://github.com/cosmos/cosmos-sdk/tree/master/x/ibc) |
| 110 | +- [IBC Relayer in Go](https://github.com/iqlusioninc/relayer) |
89 | 111 |
|
90 | 112 | ## License
|
91 | 113 |
|
92 |
| -Copyright © 2020 Informal Systems |
| 114 | +Copyright © 2020 Informal Systems Inc. and ibc-rs authors. |
93 | 115 |
|
94 | 116 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
|
95 | 117 |
|
|
0 commit comments