Simple bridge between ValidatorSet-based parity chain (foreign) with any other Parity chain (home).
cargo build -p bridge-cli --release
Ethereum-Kovan bridge.
Copyright 2017 Parity Technologies (UK) Limited
Usage:
bridge --config <config> --database <database>
bridge -h | --help
Options:
-h, --help Display help message and exit.
--config- location of the configuration file. configuration file must exist--database- location of the database file. if there is no file at specified location, new bridge contracts will be deployed and new database will be created
configuration file example
[home]
account = "0x006e27b6a72e1f34c626762f3c4761547aff1421"
ipc = "/Users/marek/Library/Application Support/io.parity.ethereum/jsonrpc.ipc"
required_confirmations = 0
[home.contract]
bin = "contracts/EthereumBridge.bin"
[foreign]
account = "0x006e27b6a72e1f34c626762f3c4761547aff1421"
ipc = "/Users/marek/Library/Application Support/io.parity.ethereum/jsonrpc.ipc"
required_confirmations = 0
[foreign.contract]
bin = "contracts/KovanBridge.bin"
[authorities]
accounts = [
"0x006e27b6a72e1f34c626762f3c4761547aff1421",
"0x006e27b6a72e1f34c626762f3c4761547aff1421",
"0x006e27b6a72e1f34c626762f3c4761547aff1421"
]
required_signatures = 2
[transactions]
home_deploy = { gas = 500000 }
foreign_deploy = { gas = 500000 }home.account- authority address on the home (required)home.ipc- path to home parity ipc handle (required)home.contract.bin- path to the compiled bridge contract (required)home.required_confirmations- number of confirmation required to consider transaction final on home (default: 12)home.poll_interval- specify how often home node should be polled for changes (in seconds, default: 1)home.request_timeout- specify request timeout (in seconds, default: 5)
foreign.account- authority address on the foreign (required)foreign.ipc- path to foreign parity ipc handle (required)foreign.contract.bin- path to the compiled bridge contract (required)foreign.required_confirmations- number of confirmation required to consider transaction final on foreign (default: 12)foreign.poll_interval- specify how often home node should be polled for changes (in seconds, default: 1)foreign.request_timeout- specify request timeout (in seconds, default: 5)
authorities.account- all authorities (required)authorities.required_signatures- number of authorities signatures required to consider action final (required)
transaction.home_deploy.gas- specify how much gas should be consumed by home contract deploytransaction.home_deploy.gas_price- specify gas price for home contract deploytransaction.foreign_deploy.gas- specify how much gas should be consumed by foreign contract deploytransaction.foreign_deploy.gas_price- specify gas price for home contract deploytransaction.deposit_relay.gas- specify how much gas should be consumed by deposit relaytransaction.deposit_relay.gas_price- specify gas price for deposit relaytransaction.withdraw_confirm.gas- specify how much gas should be consumed by withdraw confirmtransaction.withdraw_confirm.gas_price- specify gas price for withdraw confirmtransaction.withdraw_relay.gas- specify how much gas should be consumed by withdraw relaytransaction.withdraw_relay.gas_price- specify gas price for withdraw relay
home_contract_address = "0x49edf201c1e139282643d5e7c6fb0c7219ad1db7"
foreign_contract_address = "0x49edf201c1e139282643d5e7c6fb0c7219ad1db8"
home_deploy = 100
foreign_deploy = 101
checked_deposit_relay = 120
checked_withdraw_relay = 121
checked_withdraw_confirm = 121all fields are required
home_contract_address- address of the bridge contract on home chainforeign_contract_address- address of the bridge contract on foreign chainhome_deploy- block number at which home contract has been deployedforeign_deploy- block number at which foreign contract has been deployedchecked_deposit_relay- number of the last block for which an authority has relayed deposits to the foreignchecked_withdraw_relay- number of the last block for which an authority has relayed withdraws to the homechecked_withdraw_confirm- number of the last block for which an authirty has confirmed withdraw
./target/debug/bridge --config examples/config.toml --database db.toml
- example run requires a parity instance running
- this parity instance can be started by running
examples/parity_start.sh - it connects to this parity instance twice. one connection treats the node as
home, whereas the other asforeign - by default, parity tries to unlock account generates from seedphrase
this is sparta-0x006e27b6a72e1f34c626762f3c4761547aff1421 - this is just an example. the 'real world' bridge needs to connect to the two different parity instances

