Skip to content
This repository has been archived by the owner on Mar 7, 2023. It is now read-only.

Latest commit

 

History

History
executable file
·
102 lines (79 loc) · 4.6 KB

README.md

File metadata and controls

executable file
·
102 lines (79 loc) · 4.6 KB

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.

BTP (Block Transmission Protocol) Relay System

Introduction

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

Components

  • 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

Blockchain specifics

BTP Project

Documents

Layout

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

BTP implement for ICON blockchain

BMR module

Directory Description
/cmd/btpsimple/module/icon BMR module for ICON blockchain

Python SCORE of ICON

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

Java SCORE of ICON

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