{"id":37188671,"url":"https://github.com/wetrustplatform/poa-interchain-node","last_synced_at":"2026-01-14T21:56:50.590Z","repository":{"id":96879419,"uuid":"133621881","full_name":"WeTrustPlatform/poa-interchain-node","owner":"WeTrustPlatform","description":"Transfer ether between a main chain and a PoA side chain using multisig wallets","archived":false,"fork":false,"pushed_at":"2018-06-27T08:51:33.000Z","size":84,"stargazers_count":1,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-01-14T19:24:18.817Z","etag":null,"topics":["dapp","ethereum","native-dapp","proof-of-authority","sidechain"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeTrustPlatform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-05-16T06:41:12.000Z","updated_at":"2023-02-03T08:55:59.000Z","dependencies_parsed_at":"2023-04-21T10:05:58.187Z","dependency_job_id":null,"html_url":"https://github.com/WeTrustPlatform/poa-interchain-node","commit_stats":null,"previous_names":["wetrustplatform/interchain-node"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WeTrustPlatform/poa-interchain-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTrustPlatform%2Fpoa-interchain-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTrustPlatform%2Fpoa-interchain-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTrustPlatform%2Fpoa-interchain-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTrustPlatform%2Fpoa-interchain-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeTrustPlatform","download_url":"https://codeload.github.com/WeTrustPlatform/poa-interchain-node/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTrustPlatform%2Fpoa-interchain-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28436249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T21:32:52.117Z","status":"ssl_error","status_checked_at":"2026-01-14T21:32:33.442Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dapp","ethereum","native-dapp","proof-of-authority","sidechain"],"created_at":"2026-01-14T21:56:49.776Z","updated_at":"2026-01-14T21:56:50.581Z","avatar_url":"https://github.com/WeTrustPlatform.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PoA Interchain Node [![Build Status](https://travis-ci.com/WeTrustPlatform/poa-interchain-node.svg?token=52dbeJVrfqXvGhWfS1U6\u0026branch=develop)](https://travis-ci.com/WeTrustPlatform/poa-interchain-node)\n\nThe PoA Interchain Node allows ethereum users to transfer funds between a main chain and a PoA side chain using multisig wallets.\n\n## Dependencies\n\n * solc\n * abigen\n * go\n\n### Dependencies of the development environment:\n\n * geth\n * bootnode\n * eth-contract-address\n\n### GOPATH\n\nIn your .bashrc:\n\n```\nexport GOPATH=\"$HOME/go\"\nexport PATH=\"$GOPATH/bin:$PATH\"\n```\n\n### Setup dependencies on OSX:\n\n```\nbrew tap ethereum/ethereum\nbrew install ethereum\nbrew install solidity\ngo get github.com/kivutar/eth-contract-address\ngo install github.com/kivutar/eth-contract-address\n```\n\n`abigen` is supposed to be provided by the ethereum brew package on OSX. For some reasons, the installation of abigen doesn't always happen. (But it does install properly in Travis CI)\nYou may have to build it from source:\n\n```\ngo get github.com/ethereum/go-ethereum\ncd $GOPATH/src/github.com/ethereum/go-ethereum/cmd/abigen/\ngo build\nsudo cp abigen /usr/local/bin/abigen\n```\n\n## Getting the source code\n\n    go get github.com/WeTrustPlatform/poa-interchain-node\n\nBut as the repo is still private, you will have to clone the repo directly in your go path:\n\n    mkdir -p $GOPATH/src/github.com/WeTrustPlatform/\n    cd $GOPATH/src/github.com/WeTrustPlatform/\n    git clone --recurse-submodules git@github.com:WeTrustPlatform/poa-interchain-node.git\n    cd poa-interchain-node\n    go generate ./...\n    go get -t -v ./...\n\n## Run the test suite\n\n    go test -cover -v ./...\n\n## Run the development environment\n\nThe interchain node comes with a helper in the form of a Makefile. This Makefile is not required to build the interchain node and use it. It is there to test the interchain node with the real geth. It will setup 3 instances of geth, 2 chains, and a few test accounts.\n\nIf you don't need to test the interchain node on geth, please skip all of the following steps and rely on the test suite only.\n\nIn 3 separate terminals:\n\n```\ncd dev/\nmake run_mainchain\nmake run_sidechain\nmake run_sidechain2\n```\n\nWait 10 seconds between each call\n\n## Deploy the multisig wallet on both chains\n\n    make mainchain_wallet sidechain_wallet\n\n## Sending ether to arbitrary addresses offchain\n\nOur multisig wallets have a function called `deposit` which allows you to transfer ether from your address on the chain A to a receiver on the chain B.\n\nInstead of paying to the wallet address, you call the `deposit` method using the geth console or our utility program `icn-deposit.go`:\n\n    go run ../cmd/icn-deposit/main.go --mainchain --keyjson=mainchain/keystore/\u003cyour_key_json\u003e --password=\"dummy\" --endpoint=mainchain/geth.ipc --wallet=`cat mainchain/wallet` --receiver=`cat sidechain/sealer` --value=\"25000000000000000000\"\n\nUsage:\n\n```\nUsage:\n  main [OPTIONS]\n\nApplication Options:\n  -m, --mainchain  Target the main chain wallet\n  -s, --sidechain  Target the side chain wallet\n  -k, --keyjson=   Path to the JSON private key file of the sealer\n  -p, --password=  Passphrase needed to unlock the sealer's JSON key\n  -e, --endpoint=  URL or path of the origin chain endpoint\n  -w, --wallet=    Ethereum address of the multisig wallet on the origin chain\n  -r, --receiver=  Ethereum address of the receiver on the target chain\n  -v, --value=     Value (wei) to transfer to the receiver\n\nHelp Options:\n  -h, --help       Show this help message\n```\n\nThe interchain node will notice your call and mirror the transaction on the other chain.\n\n## Run the interchain node\n\nFor each sealer, run the interchain node:\n\n    go run ../cmd/icn/main.go -k sidechain/keystore/\u003csealer1_key_json\u003e --mainchainendpoint=mainchain/geth.ipc --sidechainendpoint=sidechain/geth.ipc -p dummy --mainchainwallet=`cat mainchain/wallet` --sidechainwallet=`cat sidechain/wallet` -d=sealer1db\n\n    go run ../cmd/icn/main.go -k sidechain2/keystore/\u003csealer2_key_json\u003e --mainchainendpoint=mainchain/geth.ipc --sidechainendpoint=sidechain2/geth.ipc -p dummy --mainchainwallet=`cat mainchain/wallet` --sidechainwallet=`cat sidechain/wallet` -d=sealer2db\n\n```\nUsage:\n  main [OPTIONS]\n\nApplication Options:\n  -m, --mainchain          Watch the main chain\n  -s, --sidechain          Watch the side chain\n  -k, --keyjson=           Path to the JSON private key file of the sealer\n  -p, --password=          Passphrase needed to unlock the sealer's JSON key\n      --mainchainendpoint= URL or path of the main chain endpoint\n      --sidechainendpoint= URL or path of the side chain endpoint\n      --mainchainwallet=   Ethereum address of the multisig wallet on the main chain\n      --sidechainwallet=   Ethereum address of the multisig wallet on the side chain\n\nHelp Options:\n  -h, --help               Show this help message\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwetrustplatform%2Fpoa-interchain-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwetrustplatform%2Fpoa-interchain-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwetrustplatform%2Fpoa-interchain-node/lists"}