diff --git a/Tiltfile b/Tiltfile index cfba626e..f93d773c 100644 --- a/Tiltfile +++ b/Tiltfile @@ -240,6 +240,10 @@ k8s_resource("eth-devnet", port_forwards = [ port_forward(8545, name = "Ganache RPC [:8545]"), ]) +k8s_resource("eth-devnet2", port_forwards = [ + port_forward(8546, name = "Ganache RPC [:8546]"), +]) + # bigtable def build_cloud_function(container_name, go_func_name, path, builder): diff --git a/devnet/eth-devnet.yaml b/devnet/eth-devnet.yaml index 5cdc2c3b..54df6a5d 100644 --- a/devnet/eth-devnet.yaml +++ b/devnet/eth-devnet.yaml @@ -14,6 +14,22 @@ spec: selector: app: eth-devnet --- +apiVersion: v1 +kind: Service +metadata: + name: eth-devnet2 + labels: + app: eth-devnet2 +spec: + ports: + - port: 8546 + targetPort: 8545 + name: rpc + protocol: TCP + clusterIP: None + selector: + app: eth-devnet2 +--- apiVersion: apps/v1 kind: StatefulSet metadata: @@ -52,7 +68,59 @@ spec: command: - /bin/sh - -c - - "npm run migrate && npx truffle exec scripts/deploy_test_token.js && npx truffle exec scripts/register_solana_chain.js && npx truffle exec scripts/register_terra_chain.js && nc -lkp 2000 0.0.0.0" + - "npm run migrate && npx truffle exec scripts/deploy_test_token.js && npx truffle exec scripts/register_solana_chain.js && npx truffle exec scripts/register_terra_chain.js && npx truffle exec scripts/register_bsc_chain.js && nc -lkp 2000 0.0.0.0" + readinessProbe: + periodSeconds: 1 + failureThreshold: 300 + tcpSocket: + port: 2000 + - name: mine + image: eth-node + command: + - /bin/sh + - -c + - "npx truffle exec mine.js" +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: eth-devnet2 +spec: + selector: + matchLabels: + app: eth-devnet2 + serviceName: eth-devnet2 + replicas: 1 + template: + metadata: + labels: + app: eth-devnet2 + spec: + terminationGracePeriodSeconds: 1 + containers: + - name: ganache + image: eth-node + command: + - npx + - ganache-cli + - --deterministic + - --time="1970-01-01T00:00:00+00:00" + - --host=0.0.0.0 + - -i 1337 + ports: + - containerPort: 8545 + name: rpc + protocol: TCP + readinessProbe: + tcpSocket: + port: rpc + - name: tests + image: eth-node + stdin: true + command: + - /bin/sh + - -c + - "sed -i 's/CHAIN_ID=0x2/CHAIN_ID=0x4/g' .env && npm run migrate && npx truffle exec scripts/deploy_test_token.js && npx truffle exec scripts/register_solana_chain.js && npx truffle exec scripts/register_terra_chain.js && npx truffle exec scripts/register_eth_chain.js && nc -lkp 2000 0.0.0.0" readinessProbe: periodSeconds: 1 failureThreshold: 300 diff --git a/devnet/node.yaml b/devnet/node.yaml index 984589dc..abaf6b3d 100644 --- a/devnet/node.yaml +++ b/devnet/node.yaml @@ -79,7 +79,7 @@ spec: - --ethRPC - ws://eth-devnet:8545 - --bscRPC - - ws://eth-devnet:8545 + - ws://eth-devnet2:8545 - --terraWS - ws://terra-terrad:26657/websocket - --terraLCD diff --git a/ethereum/.env.test b/ethereum/.env.test index 1588e9e4..ea4f07c9 100644 --- a/ethereum/.env.test +++ b/ethereum/.env.test @@ -5,7 +5,7 @@ INIT_GOV_CHAIN_ID=0x1 INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 # Bridge Migrations -BRIDGE_INIT_CHAIN_ID=0x02 +BRIDGE_INIT_CHAIN_ID=0x2 BRIDGE_INIT_GOV_CHAIN_ID=0x1 BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 BRIDGE_INIT_WETH=0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E diff --git a/ethereum/scripts/register_bsc_chain.js b/ethereum/scripts/register_bsc_chain.js new file mode 100644 index 00000000..2fe3a181 --- /dev/null +++ b/ethereum/scripts/register_bsc_chain.js @@ -0,0 +1,26 @@ +// run this script with truffle exec + +const jsonfile = require("jsonfile"); +const TokenBridge = artifacts.require("TokenBridge"); +const TokenImplementation = artifacts.require("TokenImplementation"); +const BridgeImplementationFullABI = jsonfile.readFileSync("../build/contracts/BridgeImplementation.json").abi + +module.exports = async function (callback) { + try { + const accounts = await web3.eth.getAccounts(); + const initialized = new web3.eth.Contract(BridgeImplementationFullABI, TokenBridge.address); + + // Register the BSC endpoint + await initialized.methods.registerChain("0x01000000000100719b4ada436f614489dbf87593c38ba9aea35aa7b997387f8ae09f819806f5654c8d45b6b751faa0e809ccbc294794885efa205bd8a046669464c7cbfb03d183010000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000002c8bb0600000000000000000000000000000000000000000000546f6b656e42726964676501000000040000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16").send({ + value: 0, + from: accounts[0], + gasLimit: 2000000 + }); + + callback(); + } + catch (e) { + callback(e); + } +} + diff --git a/ethereum/scripts/register_eth_chain.js b/ethereum/scripts/register_eth_chain.js new file mode 100644 index 00000000..2f308594 --- /dev/null +++ b/ethereum/scripts/register_eth_chain.js @@ -0,0 +1,26 @@ +// run this script with truffle exec + +const jsonfile = require("jsonfile"); +const TokenBridge = artifacts.require("TokenBridge"); +const TokenImplementation = artifacts.require("TokenImplementation"); +const BridgeImplementationFullABI = jsonfile.readFileSync("../build/contracts/BridgeImplementation.json").abi + +module.exports = async function (callback) { + try { + const accounts = await web3.eth.getAccounts(); + const initialized = new web3.eth.Contract(BridgeImplementationFullABI, TokenBridge.address); + + // Register the ETH endpoint + await initialized.methods.registerChain("0x01000000000100e2e1975d14734206e7a23d90db48a6b5b6696df72675443293c6057dcb936bf224b5df67d32967adeb220d4fe3cb28be515be5608c74aab6adb31099a478db5c01000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000546f6b656e42726964676501000000020000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16").send({ + value: 0, + from: accounts[0], + gasLimit: 2000000 + }); + + callback(); + } + catch (e) { + callback(e); + } +} + diff --git a/solana/devnet_setup.sh b/solana/devnet_setup.sh index df4925af..fae5fb44 100755 --- a/solana/devnet_setup.sh +++ b/solana/devnet_setup.sh @@ -94,6 +94,7 @@ pushd /usr/src/clients/token_bridge # Register the Token Bridge Endpoint on ETH node main.js solana execute_governance_vaa $(node main.js generate_register_chain_vaa 2 0x0000000000000000000000000290FB167208Af455bB137780163b7B7a9a10C16) node main.js solana execute_governance_vaa $(node main.js generate_register_chain_vaa 3 0x000000000000000000000000784999135aaa8a3ca5914468852fdddbddd8789d) +node main.js solana execute_governance_vaa $(node main.js generate_register_chain_vaa 4 0x0000000000000000000000000290FB167208Af455bB137780163b7B7a9a10C16) popd pushd /usr/src/clients/nft_bridge diff --git a/terra/tools/deploy.py b/terra/tools/deploy.py index d394ea94..894f4e83 100644 --- a/terra/tools/deploy.py +++ b/terra/tools/deploy.py @@ -208,6 +208,7 @@ async def main(): registrations = [ '01000000000100c9f4230109e378f7efc0605fb40f0e1869f2d82fda5b1dfad8a5a2dafee85e033d155c18641165a77a2db6a7afbf2745b458616cb59347e89ae0c7aa3e7cc2d400000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000546f6b656e4272696467650100000001c69a1b1a65dd336bf1df6a77afb501fc25db7fc0938cb08595a9ef473265cb4f', '01000000000100e2e1975d14734206e7a23d90db48a6b5b6696df72675443293c6057dcb936bf224b5df67d32967adeb220d4fe3cb28be515be5608c74aab6adb31099a478db5c01000000010000000100010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000546f6b656e42726964676501000000020000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16' + '01000000000100719b4ada436f614489dbf87593c38ba9aea35aa7b997387f8ae09f819806f5654c8d45b6b751faa0e809ccbc294794885efa205bd8a046669464c7cbfb03d183010000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000002c8bb0600000000000000000000000000000000000000000000546f6b656e42726964676501000000040000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16' ] for reg in registrations: