Note The ongoing development of this project has migrated to btp2 and other repositories (btp2-java, btp2-solidity). Please use those repositories instead of this repository.
We need to build a usable BTP Relay System which can deliver digital tokens between multiple chains.
Target chains
- ICON (goloop)
- Polkadot parachain
Terminologies
| Word | Description |
|---|---|
| BTP | Blockchain Transmission Protocol, ICON BTP Standard defined by ICON. |
| BTP Message | A verified message which is delivered by the relay |
| Service Message | A payload in a BTP message |
| Relay Message | A message including BTPMessages with proofs for that, and other block update messages. |
| NetworkAddress | Network Type and Network ID 0x1.icon |
| ContractAddress | Addressing contract in the network btp://0x1.icon/cx87ed9048b594b95199f326fc76e76a9d33dd665b |
BTP Standard
-
BTP Message Verifier(BMV) - smart contract
- Update blockchain verification information
- Verify delivered BTP message and decode it
-
BTP Message Center(BMC) - smart contract
- Receive BTP messages through transactions.
- Send BTP messages through events.
-
BTP Service Handler(BSH) - smart contract
- Handle service messages related to the service.
- Send service messages through the BMC
-
BTP Message Relay(BMR) - external software
- Monitor BTP events
- Gather proofs for the events
- Send BTP Relay Message
| Directory | Description |
|---|---|
| /cmd | Root of implement of BMR |
| /cmd/btpsimple | Reference implement of BMR. only provide unidirectional relay. (golang) |
| /cmd/btpsimple/chain | Implement of common logic of BMR, use module |
| /cmd/btpsimple/module | BMR module interface and common codes |
/cmd/btpsimple/module/<chain> |
Implement of BMR module (Sender,Receiver), <chain> is name of blockchain |
| /common | Common codes (golang) |
| /doc | Documents |
| /docker | Docker related resources |
/<env> |
Root of implement of BTP smart contracts, <env> is name of smart contract execution environment |
/<env>/bmc |
Implement of BMC smart contract |
/<env>/bmv |
Root of implement of BMV smart contract |
/<env>/bmv/<src> |
Implement of BMV smart contract, <src> is name of source blockchain |
/<env>/lib |
Library for execution environment |
/<env>/<svc> |
Root of implement of BSH smart contract, <svc> is name of BTP service |
| Directory | Description |
|---|---|
| /cmd/btpsimple/module/icon | BMR module for ICON blockchain |
| Directory | Description |
|---|---|
| /pyscore | Implement of BTP smart contracts for Python SCORE of ICON blockchain |
| /pyscore/bmc | Implement of BMC smart contract |
| /pyscore/bmv/icon | Implement of BMV smart contract for ICON blockchain |
| /pyscore/lib | BTP interface and common codes for Python SCORE |
| /pyscore/lib/icon | ICON related common codes |
| /pyscore/token_bsh | Reference implement of BSH smart contract for Interchain-Token transfer service |
| /pyscore/token_bsh/sample/irc2_token | Implement of IRC-2.0 smart contract, example for support legacy smart contract |
| Directory | Description |
|---|---|
| /javascore | Implement of BTP smart contracts for Java SCORE of ICON blockchain |
| /javascore/bmc | Implement of BMC smart contract |
| /javascore/bmv/icon | Implement of BMV smart contract for ICON blockchain |
| /javascore/lib | BTP interface and common codes for Python SCORE |