Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/giveth/giveth-bridge
Giveth bridge
https://github.com/giveth/giveth-bridge
Last synced: 8 days ago
JSON representation
Giveth bridge
- Host: GitHub
- URL: https://github.com/giveth/giveth-bridge
- Owner: Giveth
- License: gpl-3.0
- Created: 2018-04-04T17:22:38.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2024-06-06T00:14:13.000Z (5 months ago)
- Last Synced: 2024-11-01T02:48:51.826Z (13 days ago)
- Language: JavaScript
- Size: 1.64 MB
- Stars: 12
- Watchers: 11
- Forks: 6
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Giveth Bridge
Giveth specific bridge between 2 ethereum based blockchains
## General idea
home chain -> foreign chain:
`GivethBridge` contract will be deployed on the home chain. When one `donate` functions are called, the sent value is locked in the bridge and an event is emitted. A node app will be watching for events and relay to the foreignChain, calling the `deposit` function. This will mint tokens and forward the donation to the liquidPledging contract.
foreign chain -> home chain:
`ForeignGivethBridge` contract will be deployed on the foreign chain. When a user wants to move tokens to the home chain they will call the `withdraw` function. The tokens will then be burnt and an event is emitted. A node app will be watching for events and relay to the homeChain, calling the `authorizePayment` function.
Once the payment is approved, the sender will be able to collect their funds from the `GivethBridge` contract.The `GivethBridge` contract is an extension of the vault, which provides a safe and secure way to store funds. Vist [the vault repo](https://github.com/giveth/vaultcontract#readme) to lean more about the vault.
Currently these contracts are a temporary solution until, a more robust bridging system is ready. Both contracts are pausable which will allow use to migrate to a new bridge at a future date.
# Config
See `config/default.json` for example. This will be loaded and extended by additional configuration if found. You can specify the `ENVIRONMENT` env variable to load the file `config/${ENVIRONMENT}.json` if found. `ENVIRONMENT` defaults to `local`.
`dataDir`: directory to store bridge db
`homeNodeUrl`: ethereum node connection url for homeBridge
`homeBridge`: address of the home bridge
`homeGasPrice`: price in wei to use for gas (can be set to 'ethGasStation` to fetch current price)
`homeConfirmations`: # of confirmations required before relaying tx to foreignBridge
`homeBridgeDeployBlock`: (optional) block to start looking for events from
`foreignNodeUrl`: ethereum node connection url for foreignBridge
`foreignBridge`: address of the foreign bridge
`foreignGasPrice`: price in wei to use for gas (can be set to 'ethGasStation` to fetch current price)
`foreignConfirmations`: # of confirmations required before relaying tx to homeBridge
`foreignBridgeDeployBlock`: (optional) block to start looking for events from
`pollTime`: how often in miliseconds to check for txs to relay
`liquidPledging`: address of liquidPledging contract on foreign network
`pk`: pk of the account to send txs fromIf you would like to receive an email on any errors, the following are required:
`mailApiKey`: mailgun api key
`mailDomain`: mailgun domain
`mailFrom`: address to send mail from
`mailTo`: address sto send mail to## Upgrading
see [Upgrade doc](docs/upgrade.md)
## Help
Reach out to us on [join](http://join.giveth.io) for any help or to share ideas.