Add Agent deployment tooling (#3)

* Add staging-community environment

* Agent deploy tooling

* Finalize agent tooling

* dev deploy

* Add dev tooling

* Dev deployment

* Add env var output script

* changes

* PR comments

* Fix missed replacements

* PR comments
nambrot/add-gcp-address-to-allconfigs
Nam Chu Hoai 3 years ago committed by GitHub
parent bad1351686
commit f5f1addc8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 86
      rust/config/1640049457801/alfajores_config.json
  2. 39
      rust/config/1640049457801/alfajores_contracts.json
  3. 121
      rust/config/1640049457801/alfajores_verification.json
  4. 12
      rust/config/1640049457801/bridge/1640051502436/alfajores_contracts.json
  5. 46
      rust/config/1640049457801/bridge/1640051502436/alfajores_verification.json
  6. 13
      rust/config/1640049457801/bridge/1640051502436/fuji_contracts.json
  7. 54
      rust/config/1640049457801/bridge/1640051502436/fuji_verification.json
  8. 13
      rust/config/1640049457801/bridge/1640051502436/gorli_contracts.json
  9. 54
      rust/config/1640049457801/bridge/1640051502436/gorli_verification.json
  10. 13
      rust/config/1640049457801/bridge/1640051502436/kovan_contracts.json
  11. 54
      rust/config/1640049457801/bridge/1640051502436/kovan_verification.json
  12. 13
      rust/config/1640049457801/bridge/1640051502436/mumbai_contracts.json
  13. 54
      rust/config/1640049457801/bridge/1640051502436/mumbai_verification.json
  14. 86
      rust/config/1640049457801/fuji_config.json
  15. 39
      rust/config/1640049457801/fuji_contracts.json
  16. 121
      rust/config/1640049457801/fuji_verification.json
  17. 86
      rust/config/1640049457801/gorli_config.json
  18. 39
      rust/config/1640049457801/gorli_contracts.json
  19. 121
      rust/config/1640049457801/gorli_verification.json
  20. 8
      rust/config/1640049457801/kathy-partial.json
  21. 86
      rust/config/1640049457801/kovan_config.json
  22. 39
      rust/config/1640049457801/kovan_contracts.json
  23. 121
      rust/config/1640049457801/kovan_verification.json
  24. 86
      rust/config/1640049457801/mumbai_config.json
  25. 39
      rust/config/1640049457801/mumbai_contracts.json
  26. 121
      rust/config/1640049457801/mumbai_verification.json
  27. 3
      rust/config/1640049457801/processor-partial.json
  28. 3
      rust/config/1640049457801/relayer-partial.json
  29. 8
      rust/config/1640049457801/updater-partial.json
  30. 33
      rust/config/1640049457801/watcher-partial.json
  31. 72
      rust/config/staging-community/alfajores_config.json
  32. 34
      rust/config/staging-community/alfajores_contracts.json
  33. 112
      rust/config/staging-community/alfajores_verification.json
  34. 12
      rust/config/staging-community/bridge/1637369833021/alfajores_contracts.json
  35. 46
      rust/config/staging-community/bridge/1637369833021/alfajores_verification.json
  36. 13
      rust/config/staging-community/bridge/1637369833021/gorli_contracts.json
  37. 54
      rust/config/staging-community/bridge/1637369833021/gorli_verification.json
  38. 13
      rust/config/staging-community/bridge/1637369833021/kovan_contracts.json
  39. 54
      rust/config/staging-community/bridge/1637369833021/kovan_verification.json
  40. 13
      rust/config/staging-community/bridge/1637369833021/ropsten_contracts.json
  41. 54
      rust/config/staging-community/bridge/1637369833021/ropsten_verification.json
  42. 72
      rust/config/staging-community/gorli_config.json
  43. 34
      rust/config/staging-community/gorli_contracts.json
  44. 112
      rust/config/staging-community/gorli_verification.json
  45. 8
      rust/config/staging-community/kathy-partial.json
  46. 72
      rust/config/staging-community/kovan_config.json
  47. 34
      rust/config/staging-community/kovan_contracts.json
  48. 112
      rust/config/staging-community/kovan_verification.json
  49. 3
      rust/config/staging-community/processor-partial.json
  50. 3
      rust/config/staging-community/relayer-partial.json
  51. 72
      rust/config/staging-community/ropsten_config.json
  52. 34
      rust/config/staging-community/ropsten_contracts.json
  53. 112
      rust/config/staging-community/ropsten_verification.json
  54. 8
      rust/config/staging-community/updater-partial.json
  55. 33
      rust/config/staging-community/watcher-partial.json
  56. 21
      rust/helm/optics-agent/values.yaml
  57. 2
      tools/keymaster/helm/keymaster/values.yaml
  58. 4
      typescript/optics-deploy/.env.example
  59. 12
      typescript/optics-deploy/config/testnets/alfajores.ts
  60. 38
      typescript/optics-deploy/config/testnets/fuji.ts
  61. 51
      typescript/optics-deploy/config/testnets/gorli.ts
  62. 13
      typescript/optics-deploy/config/testnets/kovan.ts
  63. 38
      typescript/optics-deploy/config/testnets/mumbai.ts
  64. 1
      typescript/optics-deploy/config/testnets/rinkeby.ts
  65. 51
      typescript/optics-deploy/config/testnets/ropsten.ts
  66. 23
      typescript/optics-deploy/scripts/dev/agentConfig.ts
  67. 52
      typescript/optics-deploy/scripts/dev/bridge.ts
  68. 43
      typescript/optics-deploy/scripts/dev/core.ts
  69. 3
      typescript/optics-deploy/scripts/dev/create-keys.ts
  70. 3
      typescript/optics-deploy/scripts/dev/delete-keys.ts
  71. 10
      typescript/optics-deploy/scripts/dev/deploy-agents.ts
  72. 8
      typescript/optics-deploy/scripts/dev/deploy-keymaster.ts
  73. 16
      typescript/optics-deploy/scripts/dev/output-agent-env-vars.ts
  74. 10
      typescript/optics-deploy/scripts/dev/update-agents.ts
  75. 8
      typescript/optics-deploy/scripts/dev/upgrade-keymaster.ts
  76. 26
      typescript/optics-deploy/scripts/staging-community/agentConfig.ts
  77. 18
      typescript/optics-deploy/scripts/staging-community/bridge.ts
  78. 19
      typescript/optics-deploy/scripts/staging-community/core.ts
  79. 10
      typescript/optics-deploy/scripts/staging-community/deploy-agents.ts
  80. 10
      typescript/optics-deploy/scripts/staging-community/update-agents.ts
  81. 389
      typescript/optics-deploy/src/agents.ts
  82. 10
      typescript/optics-deploy/src/chain.ts
  83. 5
      typescript/optics-deploy/src/core/index.ts
  84. 74
      typescript/optics-deploy/src/utils.ts
  85. 2
      typescript/optics-deploy/src/verification/readDeployOutput.ts

@ -0,0 +1,86 @@
{
"environment": "dev",
"index": {
"from": "7712249",
"chunk": "2000"
},
"signers": {
"alfajores": {
"key": "",
"type": "hexKey"
},
"mumbai": {
"key": "",
"type": "hexKey"
},
"fuji": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"mumbai": {
"address": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"domain": "80001",
"name": "mumbai",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"fuji": {
"address": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"domain": "43113",
"name": "fuji",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"gorli": {
"address": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xeA057840858645bb68134a913A252a44a0C58652",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,39 @@
{
"upgradeBeaconController": "0x745C5161161D42464Dbcc9485C1DF679306d095b",
"xAppConnectionManager": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"updaterManager": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"governance": {
"implementation": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"proxy": "0xBF79333049D140fCa12355f1F896c8ebedAf8707",
"beacon": "0x6B7854e955E06c00Bfb27e807C2f46B371dCeF8e"
},
"home": {
"implementation": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"proxy": "0xeA057840858645bb68134a913A252a44a0C58652",
"beacon": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964"
},
"replicas": {
"5": {
"implementation": "0x10A861D75bD5884F6A4d83675a709de87c7418DF",
"proxy": "0x3354D5956612C38D0dD831dcdf83CF30BC674231",
"beacon": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A"
},
"3000": {
"implementation": "0x10A861D75bD5884F6A4d83675a709de87c7418DF",
"proxy": "0x6AdB8ba7C826d70506D26eDdc74236fB88Fa647F",
"beacon": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A"
},
"43113": {
"implementation": "0x10A861D75bD5884F6A4d83675a709de87c7418DF",
"proxy": "0x570EDeF0c271E3f1ba6B5C66D040195750a79762",
"beacon": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A"
},
"80001": {
"implementation": "0x10A861D75bD5884F6A4d83675a709de87c7418DF",
"proxy": "0xbA00eF80A55d4EefcF3d7971270D2c233F9d315e",
"beacon": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A"
}
},
"recoveryManager": "0x4FbBB2b0820CF0cF027BbB58DC7F7f760BC0c57e",
"updater": "0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
}

@ -0,0 +1,121 @@
[
{
"name": "UpgradeBeaconController",
"address": "0x745C5161161D42464Dbcc9485C1DF679306d095b",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"constructorArguments": [
"0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
]
},
{
"name": "XAppConnectionManager",
"address": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"constructorArguments": [
1000
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0x745C5161161D42464Dbcc9485C1DF679306d095b"
]
},
{
"name": "Home Proxy",
"address": "0xeA057840858645bb68134a913A252a44a0C58652",
"constructorArguments": [
"0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"0xc4d66de800000000000000000000000011e94700d9e5ab1f8bd0b3bd13e331cefe3aceb7"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"constructorArguments": [
1000,
180
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x6B7854e955E06c00Bfb27e807C2f46B371dCeF8e",
"constructorArguments": [
"0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"0x745C5161161D42464Dbcc9485C1DF679306d095b"
]
},
{
"name": "Governance Proxy",
"address": "0xBF79333049D140fCa12355f1F896c8ebedAf8707",
"constructorArguments": [
"0x6B7854e955E06c00Bfb27e807C2f46B371dCeF8e",
"0x485cc9550000000000000000000000002d230eb17f3afe032809ec13a0e516e297b17aa30000000000000000000000004fbbb2b0820cf0cf027bbb58dc7f7f760bc0c57e"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0x10A861D75bD5884F6A4d83675a709de87c7418DF",
"constructorArguments": [
1000,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"constructorArguments": [
"0x10A861D75bD5884F6A4d83675a709de87c7418DF",
"0x745C5161161D42464Dbcc9485C1DF679306d095b"
]
},
{
"name": "Replica Proxy",
"address": "0x6AdB8ba7C826d70506D26eDdc74236fB88Fa647F",
"constructorArguments": [
"0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000001388100000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x570EDeF0c271E3f1ba6B5C66D040195750a79762",
"constructorArguments": [
"0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a86900000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x3354D5956612C38D0dD831dcdf83CF30BC674231",
"constructorArguments": [
"0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000000500000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x6AdB8ba7C826d70506D26eDdc74236fB88Fa647F",
"constructorArguments": [
"0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,12 @@
{
"bridgeRouter": {
"implementation": "0x67332da74d81bF41cAcB6f80969b8079E4075518",
"proxy": "0x684C74fBA4dF7F7A542709C5f9688AB806C7B828",
"beacon": "0x5c84fa1f09788A0267859C45651026775C35fa9B"
},
"bridgeToken": {
"implementation": "0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA",
"proxy": "0xf325A30c76b5c54a9D106189E9adfc790dbB0F79",
"beacon": "0xD4D52d64eC5e600Aa4c75BEcecc48f8Da358A9e0"
}
}

@ -0,0 +1,46 @@
[
{
"name": "BridgeToken Implementation",
"address": "0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0xD4D52d64eC5e600Aa4c75BEcecc48f8Da358A9e0",
"constructorArguments": [
"0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA",
"0x745C5161161D42464Dbcc9485C1DF679306d095b"
]
},
{
"name": "BridgeToken Proxy",
"address": "0xf325A30c76b5c54a9D106189E9adfc790dbB0F79",
"constructorArguments": [
"0xD4D52d64eC5e600Aa4c75BEcecc48f8Da358A9e0",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x67332da74d81bF41cAcB6f80969b8079E4075518",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x5c84fa1f09788A0267859C45651026775C35fa9B",
"constructorArguments": [
"0x67332da74d81bF41cAcB6f80969b8079E4075518",
"0x745C5161161D42464Dbcc9485C1DF679306d095b"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0x684C74fBA4dF7F7A542709C5f9688AB806C7B828",
"constructorArguments": [
"0x5c84fa1f09788A0267859C45651026775C35fa9B",
"0x485cc955000000000000000000000000d4d52d64ec5e600aa4c75bececc48f8da358a9e00000000000000000000000002d230eb17f3afe032809ec13a0e516e297b17aa3"
],
"isProxy": true
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"proxy": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761",
"beacon": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F"
},
"bridgeToken": {
"implementation": "0x89F54EE76473c387f4039662E3974e433D374165",
"proxy": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"beacon": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F"
},
"ethHelper": "0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0x89F54EE76473c387f4039662E3974e433D374165",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"constructorArguments": [
"0x89F54EE76473c387f4039662E3974e433D374165",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeToken Proxy",
"address": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"constructorArguments": [
"0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"constructorArguments": [
"0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761",
"constructorArguments": [
"0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"0x485cc9550000000000000000000000008915d3af5467ec2a07d413d43b09a567bdfcea9f000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c9"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA",
"constructorArguments": [
"0xd00ae08403b9bbb9124bb305c09058e32c39a48c",
"0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761"
]
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"proxy": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"beacon": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f"
},
"bridgeToken": {
"implementation": "0x8EFF097c9e1695FC32a276474b402cDb45EC0F50",
"proxy": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"beacon": "0x89F54EE76473c387f4039662E3974e433D374165"
},
"ethHelper": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0x8EFF097c9e1695FC32a276474b402cDb45EC0F50",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0x89F54EE76473c387f4039662E3974e433D374165",
"constructorArguments": [
"0x8EFF097c9e1695FC32a276474b402cDb45EC0F50",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeToken Proxy",
"address": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"constructorArguments": [
"0x89F54EE76473c387f4039662E3974e433D374165",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"constructorArguments": [
"0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"constructorArguments": [
"0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"0x485cc95500000000000000000000000089f54ee76473c387f4039662e3974e433d374165000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c9"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761",
"constructorArguments": [
"0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",
"0x53d09A4B49443F7f7C66321C306601dC9d483D4F"
]
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"proxy": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"beacon": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f"
},
"bridgeToken": {
"implementation": "0x8EFF097c9e1695FC32a276474b402cDb45EC0F50",
"proxy": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"beacon": "0x89F54EE76473c387f4039662E3974e433D374165"
},
"ethHelper": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0x8EFF097c9e1695FC32a276474b402cDb45EC0F50",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0x89F54EE76473c387f4039662E3974e433D374165",
"constructorArguments": [
"0x8EFF097c9e1695FC32a276474b402cDb45EC0F50",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeToken Proxy",
"address": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"constructorArguments": [
"0x89F54EE76473c387f4039662E3974e433D374165",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"constructorArguments": [
"0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"constructorArguments": [
"0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"0x485cc95500000000000000000000000089f54ee76473c387f4039662e3974e433d374165000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c9"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761",
"constructorArguments": [
"0xd0a1e359811322d97991e03f863a0c30c2cf029c",
"0x53d09A4B49443F7f7C66321C306601dC9d483D4F"
]
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"proxy": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761",
"beacon": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F"
},
"bridgeToken": {
"implementation": "0x89F54EE76473c387f4039662E3974e433D374165",
"proxy": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"beacon": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F"
},
"ethHelper": "0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0x89F54EE76473c387f4039662E3974e433D374165",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"constructorArguments": [
"0x89F54EE76473c387f4039662E3974e433D374165",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeToken Proxy",
"address": "0xD9F6Db61D0C38362F3BBfA4B112F3Ed1Acf21943",
"constructorArguments": [
"0x8915d3aF5467Ec2a07d413D43B09A567bDfCeA9F",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"constructorArguments": [
"0x20d0510023d203e9B4F9CFdE34F180B38113Fd6f",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761",
"constructorArguments": [
"0x53d09A4B49443F7f7C66321C306601dC9d483D4F",
"0x485cc9550000000000000000000000008915d3af5467ec2a07d413d43b09a567bdfcea9f000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c9"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0x7B99a9cf26c9813b16E3DDb3D6E593c3624c9EBA",
"constructorArguments": [
"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889",
"0xFE7c9Cc7116429Ae50823a218315C7E01EC7A761"
]
}
]

@ -0,0 +1,86 @@
{
"environment": "dev",
"index": {
"from": "3485934",
"chunk": "2000"
},
"signers": {
"fuji": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
},
"mumbai": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"alfajores": {
"address": "0x570EDeF0c271E3f1ba6B5C66D040195750a79762",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"mumbai": {
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"domain": "80001",
"name": "mumbai",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"gorli": {
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"domain": "43113",
"name": "fuji",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,39 @@
{
"upgradeBeaconController": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"xAppConnectionManager": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"updaterManager": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"governance": {
"implementation": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"proxy": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"beacon": "0x745C5161161D42464Dbcc9485C1DF679306d095b"
},
"home": {
"implementation": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"proxy": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"beacon": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d"
},
"replicas": {
"5": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"1000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"3000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"80001": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
}
},
"recoveryManager": "0x4FbBB2b0820CF0cF027BbB58DC7F7f760BC0c57e",
"updater": "0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
}

@ -0,0 +1,121 @@
[
{
"name": "UpgradeBeaconController",
"address": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"constructorArguments": [
"0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
]
},
{
"name": "XAppConnectionManager",
"address": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"constructorArguments": [
43113
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"constructorArguments": [
"0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Home Proxy",
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"constructorArguments": [
"0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"0xc4d66de80000000000000000000000006d0c9b8722b37f1096ee50fa8773320281c3d456"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"constructorArguments": [
43113,
180
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x745C5161161D42464Dbcc9485C1DF679306d095b",
"constructorArguments": [
"0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Governance Proxy",
"address": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"constructorArguments": [
"0x745C5161161D42464Dbcc9485C1DF679306d095b",
"0x485cc955000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c90000000000000000000000004fbbb2b0820cf0cf027bbb58dc7f7f760bc0c57e"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"constructorArguments": [
43113,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"constructorArguments": [
"0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000001388100000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000000500000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,86 @@
{
"environment": "dev",
"index": {
"from": "4879884",
"chunk": "2000"
},
"signers": {
"gorli": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
},
"mumbai": {
"key": "",
"type": "hexKey"
},
"fuji": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"alfajores": {
"address": "0x3354D5956612C38D0dD831dcdf83CF30BC674231",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"mumbai": {
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"domain": "80001",
"name": "mumbai",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"fuji": {
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"domain": "43113",
"name": "fuji",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,39 @@
{
"upgradeBeaconController": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"xAppConnectionManager": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"updaterManager": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"governance": {
"implementation": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"proxy": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"beacon": "0x745C5161161D42464Dbcc9485C1DF679306d095b"
},
"home": {
"implementation": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"proxy": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"beacon": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d"
},
"replicas": {
"1000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"3000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"43113": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"80001": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
}
},
"recoveryManager": "0x4FbBB2b0820CF0cF027BbB58DC7F7f760BC0c57e",
"updater": "0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
}

@ -0,0 +1,121 @@
[
{
"name": "UpgradeBeaconController",
"address": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"constructorArguments": [
"0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
]
},
{
"name": "XAppConnectionManager",
"address": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"constructorArguments": [
5
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"constructorArguments": [
"0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Home Proxy",
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"constructorArguments": [
"0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"0xc4d66de80000000000000000000000006d0c9b8722b37f1096ee50fa8773320281c3d456"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"constructorArguments": [
5,
180
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x745C5161161D42464Dbcc9485C1DF679306d095b",
"constructorArguments": [
"0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Governance Proxy",
"address": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"constructorArguments": [
"0x745C5161161D42464Dbcc9485C1DF679306d095b",
"0x485cc955000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c90000000000000000000000004fbbb2b0820cf0cf027bbb58dc7f7f760bc0c57e"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"constructorArguments": [
5,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"constructorArguments": [
"0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000001388100000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a86900000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,8 @@
{
"interval": "100",
"chat": {
"message": "static message",
"recipient": "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd",
"type": "static"
}
}

@ -0,0 +1,86 @@
{
"environment": "dev",
"index": {
"from": "25000000",
"chunk": "2000"
},
"signers": {
"kovan": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
},
"mumbai": {
"key": "",
"type": "hexKey"
},
"fuji": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"alfajores": {
"address": "0x6AdB8ba7C826d70506D26eDdc74236fB88Fa647F",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"mumbai": {
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"domain": "80001",
"name": "mumbai",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"fuji": {
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"domain": "43113",
"name": "fuji",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"gorli": {
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,39 @@
{
"upgradeBeaconController": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"xAppConnectionManager": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"updaterManager": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"governance": {
"implementation": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"proxy": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"beacon": "0x745C5161161D42464Dbcc9485C1DF679306d095b"
},
"home": {
"implementation": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"proxy": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"beacon": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d"
},
"replicas": {
"5": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"1000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"43113": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"80001": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
}
},
"recoveryManager": "0x4FbBB2b0820CF0cF027BbB58DC7F7f760BC0c57e",
"updater": "0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
}

@ -0,0 +1,121 @@
[
{
"name": "UpgradeBeaconController",
"address": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"constructorArguments": [
"0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
]
},
{
"name": "XAppConnectionManager",
"address": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"constructorArguments": [
3000
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"constructorArguments": [
"0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Home Proxy",
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"constructorArguments": [
"0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"0xc4d66de80000000000000000000000006d0c9b8722b37f1096ee50fa8773320281c3d456"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"constructorArguments": [
3000,
180
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x745C5161161D42464Dbcc9485C1DF679306d095b",
"constructorArguments": [
"0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Governance Proxy",
"address": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"constructorArguments": [
"0x745C5161161D42464Dbcc9485C1DF679306d095b",
"0x485cc955000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c90000000000000000000000004fbbb2b0820cf0cf027bbb58dc7f7f760bc0c57e"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"constructorArguments": [
3000,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"constructorArguments": [
"0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000001388100000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a86900000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000000500000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,86 @@
{
"environment": "dev",
"index": {
"from": "20957110",
"chunk": "2000"
},
"signers": {
"mumbai": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
},
"fuji": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"alfajores": {
"address": "0xbA00eF80A55d4EefcF3d7971270D2c233F9d315e",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"fuji": {
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"domain": "43113",
"name": "fuji",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"gorli": {
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"domain": "80001",
"name": "mumbai",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,39 @@
{
"upgradeBeaconController": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"xAppConnectionManager": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"updaterManager": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"governance": {
"implementation": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"proxy": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"beacon": "0x745C5161161D42464Dbcc9485C1DF679306d095b"
},
"home": {
"implementation": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"proxy": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"beacon": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d"
},
"replicas": {
"5": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"1000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xEdDA4762fe6388C69d37b8Ee15B1deC10cA3B964",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"3000": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
},
"43113": {
"implementation": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"proxy": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"beacon": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057"
}
},
"recoveryManager": "0x4FbBB2b0820CF0cF027BbB58DC7F7f760BC0c57e",
"updater": "0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
}

@ -0,0 +1,121 @@
[
{
"name": "UpgradeBeaconController",
"address": "0xEf6E698463616abfC8248c26ECd5C71d362C0584",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x6d0c9B8722b37F1096ee50fA8773320281C3D456",
"constructorArguments": [
"0x91631845fab02614e53e5F5A68dFBB0E2f1a9B6d"
]
},
{
"name": "XAppConnectionManager",
"address": "0xf9db87020527A5A5aeFd95099051Fb14058916C9",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"constructorArguments": [
80001
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"constructorArguments": [
"0xC501AC1Ccc44AA3332899a933ACf71FF4165fF49",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Home Proxy",
"address": "0xc53F82FAF17B4c521A85C514791593847Bdf1655",
"constructorArguments": [
"0xA797e4bB7b52Aa4F118f4b63059bdaF81643FD4d",
"0xc4d66de80000000000000000000000006d0c9b8722b37f1096ee50fa8773320281c3d456"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"constructorArguments": [
80001,
180
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x745C5161161D42464Dbcc9485C1DF679306d095b",
"constructorArguments": [
"0xc328163720f3c6F3dC9475804Feb091B041a09f4",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Governance Proxy",
"address": "0x11E94700D9E5Ab1F8Bd0b3bd13e331CEFe3acEB7",
"constructorArguments": [
"0x745C5161161D42464Dbcc9485C1DF679306d095b",
"0x485cc955000000000000000000000000f9db87020527a5a5aefd95099051fb14058916c90000000000000000000000004fbbb2b0820cf0cf027bbb58dc7f7f760bc0c57e"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"constructorArguments": [
80001,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"constructorArguments": [
"0x2d230eB17F3AFe032809EC13A0E516E297b17AA3",
"0xEf6E698463616abfC8248c26ECd5C71d362C0584"
]
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xeAc82476aF67dca63B04a66EA8D7230EfB4028DB",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000a86900000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xf3855B99b7cEfa56C66f0C2d0550b545df11d54A",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b7000000000000000000000000000000000000000000000000000000000000000500000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xc501ad2163Ebd9921B4a6E46B344Ef7bA76A2cBa",
"constructorArguments": [
"0x5ccc046f7c156a621d6Da5ffd79f96a731122057",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000091631845fab02614e53e5f5a68dfbb0e2f1a9b6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,8 @@
{
"interval": "5",
"pause": "15",
"updater": {
"key": "",
"type": "hexKey"
}
}

@ -0,0 +1,33 @@
{
"interval": "100",
"watcher": {
"key": "",
"type": "hexKey"
},
"connectionManagers": [
{
"address": "0x0000000000000000000000000000000000000000",
"domain": "60",
"name": "ethereum",
"rpcStyle": "ethereum",
"config": {
"connection": {
"type": "ws",
"url": "ws://localhost:8545"
}
}
},
{
"address": "0x0000000000000000000000000000000000000000",
"domain": "61",
"name": "eth-classic",
"rpcStyle": "ethereum",
"config": {
"connection": {
"type": "ws",
"url": "ws://localhost:8545"
}
}
}
]
}

@ -0,0 +1,72 @@
{
"environment": "staging-community",
"index": {
"from": "7712249",
"chunk": "2000"
},
"signers": {
"alfajores": {
"key": "",
"type": "hexKey"
},
"ropsten": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"ropsten": {
"address": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"domain": "3",
"name": "ropsten",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"gorli": {
"address": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,34 @@
{
"upgradeBeaconController": "0xFDe298594005650F314A680aedCeb721f9362D23",
"xAppConnectionManager": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"updaterManager": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"governance": {
"implementation": "0x60a890Ee1EBb25202e4051627bC068b5B9Ed3dF9",
"proxy": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"beacon": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d"
},
"home": {
"implementation": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"proxy": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"beacon": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69"
},
"replicas": {
"3": {
"implementation": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"proxy": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"beacon": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86"
},
"5": {
"implementation": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"proxy": "0x4eAD31e37b950B32b9EBbE747f0ef4BffAc336a5",
"beacon": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86"
},
"3000": {
"implementation": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"proxy": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"beacon": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86"
}
},
"recoveryManager": "0x075fE802D26a983423caE0a16b8250F155AbeB03",
"updater": "0x075fE802D26a983423caE0a16b8250F155AbeB03"
}

@ -0,0 +1,112 @@
[
{
"name": "UpgradeBeaconController",
"address": "0xFDe298594005650F314A680aedCeb721f9362D23",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"constructorArguments": [
"0x075fE802D26a983423caE0a16b8250F155AbeB03"
]
},
{
"name": "XAppConnectionManager",
"address": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"constructorArguments": [
1000
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"constructorArguments": [
"0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "Home Proxy",
"address": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"constructorArguments": [
"0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"0xc4d66de800000000000000000000000020a8853b8888173954c7ebfcdc62819d77fd533a"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0x60a890Ee1EBb25202e4051627bC068b5B9Ed3dF9",
"constructorArguments": [
1000,
1
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"constructorArguments": [
"0x60a890Ee1EBb25202e4051627bC068b5B9Ed3dF9",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "Governance Proxy",
"address": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"constructorArguments": [
"0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"0x485cc95500000000000000000000000056bf96be9ab395aa2861e7ae4acefc11d8c2ec49000000000000000000000000075fe802d26a983423cae0a16b8250f155abeb03"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"constructorArguments": [
1000,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"constructorArguments": [
"0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "Replica Proxy",
"address": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000000030000000000000000000000006f37cae0b16589fa55152732f2e04f6f0f7dce970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x4eAD31e37b950B32b9EBbE747f0ef4BffAc336a5",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000005000000000000000000000000dd89dca09ef81154daf919b4d7c33f9d8dcf6c7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000ed576b49c3bd42862340e21a7a0acca3814bfe180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,12 @@
{
"bridgeRouter": {
"implementation": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"proxy": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"beacon": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0"
},
"bridgeToken": {
"implementation": "0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"proxy": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"beacon": "0xc346163A82f397253C7a41B5040159C11Ae2A369"
}
}

@ -0,0 +1,46 @@
[
{
"name": "BridgeToken Implementation",
"address": "0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0xc346163A82f397253C7a41B5040159C11Ae2A369",
"constructorArguments": [
"0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "BridgeToken Proxy",
"address": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"constructorArguments": [
"0xc346163A82f397253C7a41B5040159C11Ae2A369",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"constructorArguments": [
"0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"constructorArguments": [
"0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"0x485cc955000000000000000000000000c346163a82f397253c7a41b5040159c11ae2a36900000000000000000000000056bf96be9ab395aa2861e7ae4acefc11d8c2ec49"
],
"isProxy": true
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"proxy": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"beacon": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0"
},
"bridgeToken": {
"implementation": "0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"proxy": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"beacon": "0xc346163A82f397253C7a41B5040159C11Ae2A369"
},
"ethHelper": "0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0xc346163A82f397253C7a41B5040159C11Ae2A369",
"constructorArguments": [
"0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "BridgeToken Proxy",
"address": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"constructorArguments": [
"0xc346163A82f397253C7a41B5040159C11Ae2A369",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"constructorArguments": [
"0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"constructorArguments": [
"0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"0x485cc955000000000000000000000000c346163a82f397253c7a41b5040159c11ae2a36900000000000000000000000056bf96be9ab395aa2861e7ae4acefc11d8c2ec49"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C",
"constructorArguments": [
"0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",
"0xe29Abbc3669064d8aF9F6BE378179a133664a92C"
]
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"proxy": "0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C",
"beacon": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C"
},
"bridgeToken": {
"implementation": "0xc346163A82f397253C7a41B5040159C11Ae2A369",
"proxy": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"beacon": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815"
},
"ethHelper": "0x8c7510966c0312dEb2305A5E1C923CE48bbf55Ce"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0xc346163A82f397253C7a41B5040159C11Ae2A369",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"constructorArguments": [
"0xc346163A82f397253C7a41B5040159C11Ae2A369",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "BridgeToken Proxy",
"address": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"constructorArguments": [
"0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"constructorArguments": [
"0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C",
"constructorArguments": [
"0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"0x485cc9550000000000000000000000005bb837223780a03b8a01b5b12662a46e52eb6815000000000000000000000000e5c92bc2a443016c00b3908dfa63f55bee1a7a16"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0x8c7510966c0312dEb2305A5E1C923CE48bbf55Ce",
"constructorArguments": [
"0xd0a1e359811322d97991e03f863a0c30c2cf029c",
"0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C"
]
}
]

@ -0,0 +1,13 @@
{
"bridgeRouter": {
"implementation": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"proxy": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"beacon": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0"
},
"bridgeToken": {
"implementation": "0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"proxy": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"beacon": "0xc346163A82f397253C7a41B5040159C11Ae2A369"
},
"ethHelper": "0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C"
}

@ -0,0 +1,54 @@
[
{
"name": "BridgeToken Implementation",
"address": "0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"constructorArguments": []
},
{
"name": "BridgeToken UpgradeBeacon",
"address": "0xc346163A82f397253C7a41B5040159C11Ae2A369",
"constructorArguments": [
"0xbA6361799476E50aa2d9022747c522cCFd0c2A4A",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "BridgeToken Proxy",
"address": "0x5Bb837223780A03b8A01b5B12662A46E52EB6815",
"constructorArguments": [
"0xc346163A82f397253C7a41B5040159C11Ae2A369",
"0x"
],
"isProxy": true
},
{
"name": "BridgeRouter Implementation",
"address": "0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"constructorArguments": []
},
{
"name": "BridgeRouter UpgradeBeacon",
"address": "0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"constructorArguments": [
"0x690265af6079090CA2416ffEB3B7ccb3687D2024",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "BridgeRouter Proxy",
"address": "0xe29Abbc3669064d8aF9F6BE378179a133664a92C",
"constructorArguments": [
"0x3057ef99C5aC54277d3B7cBF4A4df4edb28dF2a0",
"0x485cc955000000000000000000000000c346163a82f397253c7a41b5040159c11ae2a369000000000000000000000000e5c92bc2a443016c00b3908dfa63f55bee1a7a16"
],
"isProxy": true
},
{
"name": "ETH Helper",
"address": "0x9A0e88a3D8CF09F3dc5Ba65640299DE3D87f926C",
"constructorArguments": [
"0xc778417E063141139Fce010982780140Aa0cD5Ab",
"0xe29Abbc3669064d8aF9F6BE378179a133664a92C"
]
}
]

@ -0,0 +1,72 @@
{
"environment": "staging-community",
"index": {
"from": "4879884",
"chunk": "2000"
},
"signers": {
"gorli": {
"key": "",
"type": "hexKey"
},
"ropsten": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"ropsten": {
"address": "0x15C1edbf6E6161d50d58682dF7587F0d61db5C38",
"domain": "3",
"name": "ropsten",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0xF782C67AA111a9D75f6ccEf3d7aDB54620D5A8e9",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"alfajores": {
"address": "0x4eAD31e37b950B32b9EBbE747f0ef4BffAc336a5",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,34 @@
{
"upgradeBeaconController": "0xFDe298594005650F314A680aedCeb721f9362D23",
"xAppConnectionManager": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"updaterManager": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"governance": {
"implementation": "0x60a890Ee1EBb25202e4051627bC068b5B9Ed3dF9",
"proxy": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"beacon": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d"
},
"home": {
"implementation": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"proxy": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"beacon": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69"
},
"replicas": {
"3": {
"implementation": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"proxy": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"beacon": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86"
},
"1000": {
"implementation": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"proxy": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"beacon": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86"
},
"3000": {
"implementation": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"proxy": "0x4eAD31e37b950B32b9EBbE747f0ef4BffAc336a5",
"beacon": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86"
}
},
"recoveryManager": "0xDd89dCA09Ef81154dAf919b4d7C33f9d8DCf6c7C",
"updater": "0xDd89dCA09Ef81154dAf919b4d7C33f9d8DCf6c7C"
}

@ -0,0 +1,112 @@
[
{
"name": "UpgradeBeaconController",
"address": "0xFDe298594005650F314A680aedCeb721f9362D23",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"constructorArguments": [
"0xDd89dCA09Ef81154dAf919b4d7C33f9d8DCf6c7C"
]
},
{
"name": "XAppConnectionManager",
"address": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"constructorArguments": [
5
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"constructorArguments": [
"0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "Home Proxy",
"address": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"constructorArguments": [
"0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"0xc4d66de800000000000000000000000020a8853b8888173954c7ebfcdc62819d77fd533a"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0x60a890Ee1EBb25202e4051627bC068b5B9Ed3dF9",
"constructorArguments": [
5,
1
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"constructorArguments": [
"0x60a890Ee1EBb25202e4051627bC068b5B9Ed3dF9",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "Governance Proxy",
"address": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"constructorArguments": [
"0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"0x485cc95500000000000000000000000056bf96be9ab395aa2861e7ae4acefc11d8c2ec49000000000000000000000000dd89dca09ef81154daf919b4d7c33f9d8dcf6c7c"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"constructorArguments": [
5,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"constructorArguments": [
"0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"0xFDe298594005650F314A680aedCeb721f9362D23"
]
},
{
"name": "Replica Proxy",
"address": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000000030000000000000000000000006f37cae0b16589fa55152732f2e04f6f0f7dce970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x4eAD31e37b950B32b9EBbE747f0ef4BffAc336a5",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000ed576b49c3bd42862340e21a7a0acca3814bfe180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000075fe802d26a983423cae0a16b8250f155abeb030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,8 @@
{
"interval": "100",
"chat": {
"message": "static message",
"recipient": "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd",
"type": "static"
}
}

@ -0,0 +1,72 @@
{
"environment": "staging-community",
"index": {
"from": "25000000",
"chunk": "2000"
},
"signers": {
"kovan": {
"key": "",
"type": "hexKey"
},
"ropsten": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"ropsten": {
"address": "0xF782C67AA111a9D75f6ccEf3d7aDB54620D5A8e9",
"domain": "3",
"name": "ropsten",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"gorli": {
"address": "0x4eAD31e37b950B32b9EBbE747f0ef4BffAc336a5",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"alfajores": {
"address": "0x15fA9169F7495162ac52b4A7957c9054097Ab0FF",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0x7E26E170dB94E81979927d2D39CB703048Ad599D",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,34 @@
{
"upgradeBeaconController": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"xAppConnectionManager": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"updaterManager": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"governance": {
"implementation": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"proxy": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"beacon": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888"
},
"home": {
"implementation": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"proxy": "0x7E26E170dB94E81979927d2D39CB703048Ad599D",
"beacon": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328"
},
"replicas": {
"3": {
"implementation": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"proxy": "0x15C1edbf6E6161d50d58682dF7587F0d61db5C38",
"beacon": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93"
},
"5": {
"implementation": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"proxy": "0xF782C67AA111a9D75f6ccEf3d7aDB54620D5A8e9",
"beacon": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93"
},
"1000": {
"implementation": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"proxy": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"beacon": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93"
}
},
"recoveryManager": "0xED576b49c3bD42862340e21a7A0AcCA3814bfE18",
"updater": "0xED576b49c3bD42862340e21a7A0AcCA3814bfE18"
}

@ -0,0 +1,112 @@
[
{
"name": "UpgradeBeaconController",
"address": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"constructorArguments": [
"0xED576b49c3bD42862340e21a7A0AcCA3814bfE18"
]
},
{
"name": "XAppConnectionManager",
"address": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"constructorArguments": [
3000
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"constructorArguments": [
"0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "Home Proxy",
"address": "0x7E26E170dB94E81979927d2D39CB703048Ad599D",
"constructorArguments": [
"0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"0xc4d66de800000000000000000000000056bf96be9ab395aa2861e7ae4acefc11d8c2ec49"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"constructorArguments": [
3000,
1
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"constructorArguments": [
"0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "Governance Proxy",
"address": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"constructorArguments": [
"0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"0x485cc955000000000000000000000000e5c92bc2a443016c00b3908dfa63f55bee1a7a16000000000000000000000000ed576b49c3bd42862340e21a7a0acca3814bfe18"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"constructorArguments": [
3000,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "Replica Proxy",
"address": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"constructorArguments": [
"0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000000030000000000000000000000006f37cae0b16589fa55152732f2e04f6f0f7dce970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xF782C67AA111a9D75f6ccEf3d7aDB54620D5A8e9",
"constructorArguments": [
"0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000005000000000000000000000000dd89dca09ef81154daf919b4d7c33f9d8dcf6c7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"constructorArguments": [
"0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000075fe802d26a983423cae0a16b8250f155abeb030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,72 @@
{
"environment": "staging-community",
"index": {
"from": "9000000",
"chunk": "2000"
},
"signers": {
"ropsten": {
"key": "",
"type": "hexKey"
},
"gorli": {
"key": "",
"type": "hexKey"
},
"kovan": {
"key": "",
"type": "hexKey"
},
"alfajores": {
"key": "",
"type": "hexKey"
}
},
"replicas": {
"gorli": {
"address": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"domain": "5",
"name": "gorli",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"kovan": {
"address": "0x15C1edbf6E6161d50d58682dF7587F0d61db5C38",
"domain": "3000",
"name": "kovan",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"alfajores": {
"address": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"domain": "1000",
"name": "alfajores",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
}
},
"home": {
"address": "0x7E26E170dB94E81979927d2D39CB703048Ad599D",
"domain": "3",
"name": "ropsten",
"rpcStyle": "ethereum",
"connection": {
"type": "http",
"url": ""
}
},
"tracing": {
"level": "debug",
"fmt": "json"
},
"db": "db_path"
}

@ -0,0 +1,34 @@
{
"upgradeBeaconController": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"xAppConnectionManager": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"updaterManager": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"governance": {
"implementation": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"proxy": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"beacon": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888"
},
"home": {
"implementation": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"proxy": "0x7E26E170dB94E81979927d2D39CB703048Ad599D",
"beacon": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328"
},
"replicas": {
"5": {
"implementation": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"proxy": "0x15C1edbf6E6161d50d58682dF7587F0d61db5C38",
"beacon": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93"
},
"1000": {
"implementation": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"proxy": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"beacon": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93"
},
"3000": {
"implementation": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"proxy": "0xF782C67AA111a9D75f6ccEf3d7aDB54620D5A8e9",
"beacon": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93"
}
},
"recoveryManager": "0x6f37CaE0b16589FA55152732f2E04f6F0F7dcE97",
"updater": "0x6f37CaE0b16589FA55152732f2E04f6F0F7dcE97"
}

@ -0,0 +1,112 @@
[
{
"name": "UpgradeBeaconController",
"address": "0x20a8853B8888173954C7EbFCdC62819D77FD533A",
"constructorArguments": []
},
{
"name": "UpdaterManager",
"address": "0x56Bf96be9ab395aa2861E7Ae4aCEFc11D8C2Ec49",
"constructorArguments": [
"0x6f37CaE0b16589FA55152732f2E04f6F0F7dcE97"
]
},
{
"name": "XAppConnectionManager",
"address": "0xe5C92bC2a443016c00b3908dFA63f55bEe1a7a16",
"constructorArguments": []
},
{
"name": "Home Implementation",
"address": "0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"constructorArguments": [
3
]
},
{
"name": "Home UpgradeBeacon",
"address": "0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"constructorArguments": [
"0xcB2F9D3466748ecee87c1f3203a644561e5D3e69",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "Home Proxy",
"address": "0x7E26E170dB94E81979927d2D39CB703048Ad599D",
"constructorArguments": [
"0xDf89d5d4039ada018BCDb992Bb6C2e05fEf86328",
"0xc4d66de800000000000000000000000056bf96be9ab395aa2861e7ae4acefc11d8c2ec49"
],
"isProxy": true
},
{
"name": "Governance Implementation",
"address": "0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"constructorArguments": [
3,
1
]
},
{
"name": "Governance UpgradeBeacon",
"address": "0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"constructorArguments": [
"0xd7c7a1Aa68b2Efe1DbcC6734148Ca5Ce9FD5360d",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "Governance Proxy",
"address": "0xa8C889D257d9eE02cb957941cd785CfffDe5a453",
"constructorArguments": [
"0x1E2DE9CD3f64c4e9AadE11a60C7b3620dD026888",
"0x485cc955000000000000000000000000e5c92bc2a443016c00b3908dfa63f55bee1a7a160000000000000000000000006f37cae0b16589fa55152732f2e04f6f0f7dce97"
],
"isProxy": true
},
{
"name": "Replica Implementation",
"address": "0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"constructorArguments": [
3,
850000,
15000
]
},
{
"name": "Replica UpgradeBeacon",
"address": "0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"constructorArguments": [
"0xA3f4e4D4763dC9e9b55DbD11a3229448bB12FE86",
"0x20a8853B8888173954C7EbFCdC62819D77FD533A"
]
},
{
"name": "Replica Proxy",
"address": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"constructorArguments": [
"0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000005000000000000000000000000dd89dca09ef81154daf919b4d7c33f9d8dcf6c7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0xF782C67AA111a9D75f6ccEf3d7aDB54620D5A8e9",
"constructorArguments": [
"0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"0xe7e7a7b70000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000ed576b49c3bd42862340e21a7a0acca3814bfe180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
},
{
"name": "Replica Proxy",
"address": "0x30dAE25E9eBd644841d1A1fF25e303331B1CdEb3",
"constructorArguments": [
"0xC9e581Cd4fF6533f5ccBA4Dc5d5f642B8b658B93",
"0xe7e7a7b700000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000075fe802d26a983423cae0a16b8250f155abeb030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"
],
"isProxy": true
}
]

@ -0,0 +1,8 @@
{
"interval": "5",
"pause": "15",
"updater": {
"key": "",
"type": "hexKey"
}
}

@ -0,0 +1,33 @@
{
"interval": "100",
"watcher": {
"key": "",
"type": "hexKey"
},
"connectionManagers": [
{
"address": "0x0000000000000000000000000000000000000000",
"domain": "60",
"name": "ethereum",
"rpcStyle": "ethereum",
"config": {
"connection": {
"type": "ws",
"url": "ws://localhost:8545"
}
}
},
{
"address": "0x0000000000000000000000000000000000000000",
"domain": "61",
"name": "eth-classic",
"rpcStyle": "ethereum",
"config": {
"connection": {
"type": "ws",
"url": "ws://localhost:8545"
}
}
}
]
}

@ -82,20 +82,11 @@ optics:
transactionSigners:
- name: "kovan"
hexKey: ""
aws:
keyId: ""
region: ""
- name: "alfajores"
hexKey: ""
aws:
keyId: ""
region: ""
# -- Specialized key used by updater and watcher used to sign attestations, separate from updater.transactionSigners
attestationSigner:
hexKey: ""
aws:
keyId: ""
region: ""
# -- How long to wait between checking for updates
pollingInterval: # 5
updatePause: # 15
@ -113,14 +104,8 @@ optics:
transactionSigners:
- name: "kovan"
hexKey: ""
aws:
keyId: ""
region: ""
- name: "alfajores"
hexKey: ""
aws:
keyId: ""
region: ""
pollingInterval: # 10
processor:
@ -136,14 +121,8 @@ optics:
transactionSigners:
- name: "kovan"
hexKey: ""
aws:
keyId: ""
region: ""
- name: "alfajores"
hexKey: ""
aws:
keyId: ""
region: ""
pollingInterval: # 10
kathy:

@ -4,7 +4,7 @@ image:
repository: gcr.io/clabs-optics/keymaster
pullPolicy: Always
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
tag: 0.0.2
keymaster:
config: # Contents of JSON Config File

@ -9,3 +9,7 @@ RINKEBY_RPC=
ARBITRUM_RINKEBY_DEPLOYER_KEY=
ARBITRUM_RINKEBY_RPC=
AWS_REGION=
AWS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

@ -15,6 +15,7 @@ export const chainJson: ChainJson = {
rpc,
deployerKey: process.env.ALFAJORES_DEPLOYER_KEY,
domain: 1000,
confirmations: 1,
};
export const chain = toChain(chainJson);
@ -41,4 +42,15 @@ export const stagingConfig: CoreConfig = {
reserveGas: 15_000,
};
export const stagingCommunityConfig: CoreConfig = {
environment: 'staging-community',
updater: '0x075fE802D26a983423caE0a16b8250F155AbeB03',
watchers: ['0xC3Ef93917f0d0AC4D70E675824270b290E0a2667'],
recoveryManager: '0x075fE802D26a983423caE0a16b8250F155AbeB03',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
}
export const bridgeConfig: BridgeConfig = {};

@ -0,0 +1,38 @@
import * as dotenv from 'dotenv';
import { ChainJson, toChain } from '../../src/chain';
import { CoreConfig } from '../../src/core/CoreDeploy';
import { BridgeConfig } from '../../src/bridge/BridgeDeploy';
dotenv.config();
const rpc = process.env.FUJI_RPC;
if (!rpc) {
throw new Error('Missing RPC URI');
}
export const chainJson: ChainJson = {
name: 'fuji',
rpc,
deployerKey: process.env.FUJI_DEPLOYER_KEY,
domain: 43113,
confirmations: 3,
};
export const chain = toChain(chainJson);
export const devConfig: CoreConfig = {
environment: 'dev',
updater: '0x4177372FD9581ceb2367e0Ce84adC5DAD9DF8D55',
watchers: ['0x20aC2FD664bA5406A7262967C34107e708dCb18E'],
recoveryManager: '0x24F6c874F56533d9a1422e85e5C7A806ED11c036',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const bridgeConfig: BridgeConfig = {
weth: '0xd00ae08403b9bbb9124bb305c09058e32c39a48c',
};

@ -0,0 +1,51 @@
import * as dotenv from 'dotenv';
import { ChainJson, toChain } from '../../src/chain';
import { CoreConfig } from '../../src/core/CoreDeploy';
import { BigNumber } from 'ethers';
import { BridgeConfig } from '../../src/bridge/BridgeDeploy';
dotenv.config();
const rpc = process.env.GORLI_RPC;
if (!rpc) {
throw new Error('Missing RPC URI');
}
export const chainJson: ChainJson = {
name: 'gorli',
rpc,
deployerKey: process.env.GORLI_DEPLOYER_KEY,
domain: 5,
confirmations: 3,
gasPrice: BigNumber.from(10_000_000_000),
};
export const devConfig: CoreConfig = {
environment: 'dev',
updater: '0x4177372FD9581ceb2367e0Ce84adC5DAD9DF8D55',
watchers: ['0x20aC2FD664bA5406A7262967C34107e708dCb18E'],
recoveryManager: '0x24F6c874F56533d9a1422e85e5C7A806ED11c036',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const chain = toChain(chainJson);
export const stagingCommunityConfig: CoreConfig = {
environment: 'staging-community',
updater: '0xDd89dCA09Ef81154dAf919b4d7C33f9d8DCf6c7C',
watchers: ['0x0b2bABd063CDc3e663489e32Bf9F74ACA1C6286f'],
recoveryManager: '0xDd89dCA09Ef81154dAf919b4d7C33f9d8DCf6c7C',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const bridgeConfig: BridgeConfig = {
weth: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',
};

@ -12,7 +12,7 @@ if (!rpc) {
throw new Error('Missing RPC URI');
}
const chainJson: ChainJson = {
export const chainJson: ChainJson = {
name: 'kovan',
rpc,
deployerKey: process.env.KOVAN_DEPLOYER_KEY,
@ -44,6 +44,17 @@ export const stagingConfig: CoreConfig = {
reserveGas: 15_000,
};
export const stagingCommunityConfig: CoreConfig = {
environment: 'staging-community',
updater: '0xED576b49c3bD42862340e21a7A0AcCA3814bfE18',
watchers: ['0x5830e4a749e0eAEF5955069f12B37Fd82C234c23'],
recoveryManager: '0xED576b49c3bD42862340e21a7A0AcCA3814bfE18',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const bridgeConfig: BridgeConfig = {
weth: '0xd0a1e359811322d97991e03f863a0c30c2cf029c',
};

@ -0,0 +1,38 @@
import * as dotenv from 'dotenv';
import { ChainJson, toChain } from '../../src/chain';
import { CoreConfig } from '../../src/core/CoreDeploy';
import { BridgeConfig } from '../../src/bridge/BridgeDeploy';
dotenv.config();
const rpc = process.env.MUMBAI_RPC;
if (!rpc) {
throw new Error('Missing RPC URI');
}
export const chainJson: ChainJson = {
name: 'mumbai',
rpc,
deployerKey: process.env.MUMBAI_DEPLOYER_KEY,
domain: 80001,
confirmations: 3,
};
export const chain = toChain(chainJson);
export const devConfig: CoreConfig = {
environment: 'dev',
updater: '0x4177372FD9581ceb2367e0Ce84adC5DAD9DF8D55',
watchers: ['0x20aC2FD664bA5406A7262967C34107e708dCb18E'],
recoveryManager: '0x24F6c874F56533d9a1422e85e5C7A806ED11c036',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const bridgeConfig: BridgeConfig = {
weth: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889',
};

@ -16,6 +16,7 @@ const chainJson: ChainJson = {
rpc,
deployerKey: process.env.RINKEBY_DEPLOYER_KEY,
domain: 2000,
confirmations: 3,
};
export const chain = toChain(chainJson);

@ -0,0 +1,51 @@
import * as dotenv from 'dotenv';
import { ChainJson, toChain } from '../../src/chain';
import { CoreConfig } from '../../src/core/CoreDeploy';
import { BigNumber } from 'ethers';
import { BridgeConfig } from '../../src/bridge/BridgeDeploy';
dotenv.config();
const rpc = process.env.ROPSTEN_RPC;
if (!rpc) {
throw new Error('Missing RPC URI');
}
export const chainJson: ChainJson = {
name: 'ropsten',
rpc,
deployerKey: process.env.ROPSTEN_DEPLOYER_KEY,
domain: 3,
confirmations: 3,
gasPrice: BigNumber.from(10_000_000_000),
};
export const chain = toChain(chainJson);
export const devConfig: CoreConfig = {
environment: 'dev',
updater: '0x4177372FD9581ceb2367e0Ce84adC5DAD9DF8D55',
watchers: ['0x20aC2FD664bA5406A7262967C34107e708dCb18E'],
recoveryManager: '0x24F6c874F56533d9a1422e85e5C7A806ED11c036',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const stagingCommunityConfig: CoreConfig = {
environment: 'staging-community',
updater: '0x6f37CaE0b16589FA55152732f2E04f6F0F7dcE97',
watchers: ['0x405a8C080Ca64e038554a2B03eA1bdA96DAFA52C'],
recoveryManager: '0x6f37CaE0b16589FA55152732f2E04f6F0F7dcE97',
optimisticSeconds: 10,
recoveryTimelock: 180,
processGas: 850_000,
reserveGas: 15_000,
};
export const bridgeConfig: BridgeConfig = {
weth: '0xc778417E063141139Fce010982780140Aa0cD5Ab',
};

@ -0,0 +1,23 @@
import * as alfajores from '../../config/testnets/alfajores';
import * as gorli from '../../config/testnets/gorli';
import * as kovan from '../../config/testnets/kovan';
import * as mumbai from '../../config/testnets/mumbai';
import * as fuji from '../../config/testnets/fuji';
import { AgentChainConfigs, AgentConfig } from '../../src/agents';
export const configs: AgentChainConfigs = {
alfajores: alfajores.chainJson,
gorli: gorli.chainJson,
kovan: kovan.chainJson,
mumbai: mumbai.chainJson,
fuji: fuji.chainJson
}
// Environment specific config
export const agentConfig: AgentConfig = {
environment: 'dev',
namespace: 'optics-dev',
runEnv: '1640049457801',
dockerImageRepo: "gcr.io/clabs-optics/optics-agent",
dockerImageTag: "dev-2021-12-20"
}

@ -0,0 +1,52 @@
import { deployBridges } from '../../src/bridge';
import * as alfajores from '../../config/testnets/alfajores';
import * as gorli from '../../config/testnets/gorli';
import * as kovan from '../../config/testnets/kovan';
import * as mumbai from '../../config/testnets/mumbai';
import * as fuji from '../../config/testnets/fuji';
import { updateChainConfigWithKeys } from '../../src/agents';
import { BridgeDeploy } from '../../src/bridge/BridgeDeploy';
import { getPathToLatestDeploy } from '../../src/verification/readDeployOutput';
let alfajoresConfig = alfajores.bridgeConfig;
let gorliConfig = gorli.bridgeConfig;
let kovanConfig = kovan.bridgeConfig;
let mumbaiConfig = mumbai.bridgeConfig;
let fujiConfig = fuji.bridgeConfig;
const environment = 'dev';
async function main() {
const path = getPathToLatestDeploy();
const alfajoresDeploy = new BridgeDeploy(
await updateChainConfigWithKeys(environment, alfajores.chain),
alfajoresConfig,
path
);
const gorliDeploy = new BridgeDeploy(
await updateChainConfigWithKeys(environment, gorli.chain),
gorliConfig,
path
);
const kovanDeploy = new BridgeDeploy(
await updateChainConfigWithKeys(environment, kovan.chain),
kovanConfig,
path
);
const mumbaiDeploy = new BridgeDeploy(
await updateChainConfigWithKeys(environment, mumbai.chain),
mumbaiConfig,
path
);
const fujiDeploy = new BridgeDeploy(
await updateChainConfigWithKeys(environment, fuji.chain),
fujiConfig,
path
);
await deployBridges([alfajoresDeploy, mumbaiDeploy, fujiDeploy, gorliDeploy, kovanDeploy]);
}
main().then(console.log).catch(console.error)

@ -0,0 +1,43 @@
import { deployNChains } from '../../src/core';
import * as alfajores from '../../config/testnets/alfajores';
import * as gorli from '../../config/testnets/gorli';
import * as kovan from '../../config/testnets/kovan';
import * as mumbai from '../../config/testnets/mumbai';
import * as fuji from '../../config/testnets/fuji';
import { updateChainConfigWithKeys, updateCoreConfigWithKeys } from '../../src/agents';
import { CoreDeploy } from '../../src/core/CoreDeploy';
let alfajoresConfig = alfajores.devConfig;
let gorliConfig = gorli.devConfig;
let kovanConfig = kovan.devConfig;
let mumbaiConfig = mumbai.devConfig;
let fujiConfig = fuji.devConfig;
const environment = 'dev';
async function main() {
const alfajoresDeploy = new CoreDeploy(
await updateChainConfigWithKeys(environment, alfajores.chain),
await updateCoreConfigWithKeys(environment, alfajoresConfig)
);
const gorliDeploy = new CoreDeploy(
await updateChainConfigWithKeys(environment, gorli.chain),
await updateCoreConfigWithKeys(environment, gorliConfig)
);
const kovanDeploy = new CoreDeploy(
await updateChainConfigWithKeys(environment, kovan.chain),
await updateCoreConfigWithKeys(environment, kovanConfig)
);
const mumbaiDeploy = new CoreDeploy(
await updateChainConfigWithKeys(environment, mumbai.chain),
await updateCoreConfigWithKeys(environment, mumbaiConfig)
);
const fujiDeploy = new CoreDeploy(
await updateChainConfigWithKeys(environment, fuji.chain),
await updateCoreConfigWithKeys(environment, fujiConfig)
);
await deployNChains([alfajoresDeploy, mumbaiDeploy, fujiDeploy, gorliDeploy, kovanDeploy]);
}
main().then(console.log).catch(console.error)

@ -0,0 +1,3 @@
import { createAgentGCPKeys } from "../../src/agents"
createAgentGCPKeys('dev').then(console.log).catch(console.error)

@ -0,0 +1,3 @@
import { deleteAgentGCPKeys } from "../../src/agents"
deleteAgentGCPKeys('dev').then(console.log).catch(console.error)

@ -0,0 +1,10 @@
import { HelmCommand, runAgentHelmCommand } from '../../src/agents';
import { agentConfig, configs } from './agentConfig';
async function deploy() {
for (const config in configs) {
await runAgentHelmCommand(HelmCommand.Install, agentConfig, configs[config], configs), { depth: null }
}
}
deploy().then(console.log).catch(console.error)

@ -0,0 +1,8 @@
import { HelmCommand, runKeymasterHelmCommand } from "../../src/agents"
import { agentConfig, configs } from './agentConfig';
async function main() {
return runKeymasterHelmCommand(HelmCommand.Install, agentConfig, configs)
}
main().then(console.log).catch(console.error)

@ -0,0 +1,16 @@
import { writeFile } from "fs/promises";
import { getAgentEnvVars } from "../../src/agents"
import { agentConfig, configs } from './agentConfig';
async function main() {
const args = process.argv.slice(2)
if (args.length != 3) {
throw new Error("unknown arguments, usage: cmd network role filePath")
}
// @ts-ignore
const envVars = await getAgentEnvVars(args[0], args[1], agentConfig, configs)
await writeFile(args[2], envVars.join('\n'))
}
main().then(console.log).catch(console.error)

@ -0,0 +1,10 @@
import { HelmCommand, runAgentHelmCommand } from "../../src/agents"
import { agentConfig, configs } from "./agentConfig"
async function deploy() {
for (const config in configs) {
await runAgentHelmCommand(HelmCommand.Upgrade, agentConfig, configs[config], configs), { depth: null }
}
}
deploy().then(console.log).catch(console.error)

@ -0,0 +1,8 @@
import { HelmCommand, runKeymasterHelmCommand } from '../../src/agents';
import { agentConfig, configs } from './agentConfig';
async function main() {
return runKeymasterHelmCommand(HelmCommand.Upgrade, agentConfig, configs);
}
main().then(console.log).catch(console.error);

@ -0,0 +1,26 @@
import * as alfajores from '../../config/testnets/alfajores';
import * as gorli from '../../config/testnets/gorli';
import * as kovan from '../../config/testnets/kovan';
import * as ropsten from '../../config/testnets/ropsten';
import { AgentChainsConfig, AgentConfig } from '../../src/agents';
// Assumes kubectl is pointed at the right cluster
export const configs: AgentChainsConfig = {
alfajores: alfajores.chainJson,
gorli: gorli.chainJson,
kovan: kovan.chainJson,
ropsten: ropsten.chainJson
}
// Environment specific config
export const agentConfig: AgentConfig = {
environment: 'staging-community',
namespace: 'optics-staging-community',
runEnv: 'staging-community',
awsRegion: process.env.AWS_REGION!,
awsKeyId: process.env.AWS_KEY_ID!,
awsSecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
dockerImageRepo: "gcr.io/clabs-optics/optics-agent",
dockerImageTag: "staging-community"
}

@ -0,0 +1,18 @@
import { getPathToLatestDeploy } from '../../src/verification/readDeployOutput';
import { deployBridges } from '../../src/bridge';
import * as alfajores from '../../config/testnets/alfajores';
import * as gorli from '../../config/testnets/gorli';
import * as kovan from '../../config/testnets/kovan';
import * as ropsten from '../../config/testnets/ropsten';
import { BridgeDeploy } from '../../src/bridge/BridgeDeploy';
// get the path to the latest core system deploy
const path = getPathToLatestDeploy();
const alfajoresDeploy = new BridgeDeploy(alfajores.chain, alfajores.bridgeConfig, path);
const gorliDeploy = new BridgeDeploy(gorli.chain, gorli.bridgeConfig, path);
const kovanDeploy = new BridgeDeploy(kovan.chain, kovan.bridgeConfig, path);
const ropstenDeploy = new BridgeDeploy(ropsten.chain, ropsten.bridgeConfig, path);
deployBridges([alfajoresDeploy, gorliDeploy, kovanDeploy, ropstenDeploy]);

@ -0,0 +1,19 @@
import { deployNChains } from '../../src/core';
import * as alfajores from '../../config/testnets/alfajores';
import * as gorli from '../../config/testnets/gorli';
import * as kovan from '../../config/testnets/kovan';
import * as ropsten from '../../config/testnets/ropsten';
import { CoreDeploy } from '../../src/core/CoreDeploy';
let alfajoresConfig = alfajores.stagingCommunityConfig;
let gorliConfig = gorli.stagingCommunityConfig
let kovanConfig = kovan.stagingCommunityConfig
let ropstenConfig = ropsten.stagingCommunityConfig
const alfajoresDeploy = new CoreDeploy(alfajores.chain, alfajoresConfig);
const gorliDeploy = new CoreDeploy(gorli.chain, gorliConfig);
const kovanDeploy = new CoreDeploy(kovan.chain, kovanConfig);
const ropstenDeploy = new CoreDeploy(ropsten.chain, ropstenConfig);
deployNChains([ropstenDeploy, gorliDeploy, kovanDeploy, alfajoresDeploy]);

@ -0,0 +1,10 @@
import { runHelmCommand } from '../../src/agents';
import { agentConfig, configs } from './agentConfig';
async function deploy() {
for (const config in configs) {
await runHelmCommand('install', agentConfig, configs[config], configs), { depth: null }
}
}
deploy().then(console.log).catch(console.error)

@ -0,0 +1,10 @@
import { runAgentHelmCommand } from "../../src/agents"
import { agentConfig, configs } from "./agentConfig"
async function deploy() {
for (const config in configs) {
await runAgentHelmCommand('upgrade', agentConfig, configs[config], configs), { depth: null }
}
}
deploy().then(console.log).catch(console.error)

@ -0,0 +1,389 @@
import { Wallet } from '@ethersproject/wallet';
import { rm, writeFile } from 'fs/promises';
import { Chain, ChainJson, replaceDeployer } from './chain';
import { CoreConfig } from './core/CoreDeploy';
import { ensure0x, execCmd, strip0x } from './utils';
export interface AgentConfig {
environment: string;
namespace: string;
runEnv: string;
awsRegion?: string;
awsKeyId?: string;
awsSecretAccessKey?: string;
dockerImageRepo: string;
dockerImageTag: string;
}
export interface AgentChainConfigs {
[name: string]: ChainJson;
}
interface SecretManagerPersistedKeys {
privateKey: string;
address: string;
role: string;
environment: string;
}
export enum KEY_ROLE_ENUM {
UpdaterAttestation = 'updater-attestation',
UpdaterSigner = 'updater-signer',
ProcessorSigner = 'processor-signer',
RelayerSigner = 'relayer-signer',
WatcherAttestation = 'watcher-attestation',
WatcherSigner = 'watcher-signer',
Deployer = 'deployer',
Bank = 'bank',
}
export const KEY_ROLES = [
'updater-attestation',
'updater-signer',
'processor-signer',
'relayer-signer',
'watcher-attestation',
'watcher-signer',
'deployer',
'bank',
];
export enum HelmCommand {
Install = 'install',
Upgrade = 'upgrade'
}
export async function deleteAgentGCPKeys(environment: string) {
await Promise.all(
KEY_ROLES.map(async (role) => {
await execCmd(
`gcloud secrets delete optics-key-${environment}-${role} --quiet`,
);
}),
);
await execCmd(
`gcloud secrets delete optics-key-${environment}-addresses --quiet`,
);
}
async function createAgentGCPKey(environment: string, role: string) {
const wallet = Wallet.createRandom();
const address = await wallet.getAddress();
await writeFile(
`optics-key-${environment}-${role}.txt`,
JSON.stringify({
role,
environment,
privateKey: wallet.privateKey,
address,
}),
);
await execCmd(
`gcloud secrets create optics-key-${environment}-${role} --data-file=optics-key-${environment}-${role}.txt --replication-policy=automatic --labels=environment=${environment},role=${role}`,
);
await rm(`optics-key-${environment}-${role}.txt`);
return {
role,
environment,
address,
};
}
export async function createAgentGCPKeys(environment: string) {
const keys = await Promise.all(
KEY_ROLES.map((role) => createAgentGCPKey(environment, role)),
);
await writeFile(
`optics-key-${environment}-addresses.txt`,
JSON.stringify(keys.map((_) => ({ role: _.role, address: _.address }))),
);
await execCmd(
`gcloud secrets create optics-key-${environment}-addresses --data-file=optics-key-${environment}-addresses.txt --replication-policy=automatic --labels=environment=${environment}`,
);
await rm(`optics-key-${environment}-addresses.txt`);
}
async function getAgentGCPKey(environment: string, role: string) {
const [secretRaw] = await execCmd(
`gcloud secrets versions access latest --secret optics-key-${environment}-${role}`,
);
const secret: SecretManagerPersistedKeys = JSON.parse(secretRaw);
return [role, secret] as [string, SecretManagerPersistedKeys];
}
async function getAgentGCPKeys(environment: string) {
const secrets = await Promise.all(
KEY_ROLES.map((role) => getAgentGCPKey(environment, role)),
);
return Object.fromEntries(secrets);
}
// Modifies a Chain configuration with the deployer key pulled from GCP
export async function addDeployerGCPKey(environment: string, chain: Chain) {
const [deployerSecretRaw] = await execCmd(
`gcloud secrets versions access latest --secret optics-key-${environment}-deployer`,
);
const deployerSecret = JSON.parse(deployerSecretRaw).privateKey;
return replaceDeployer(chain, strip0x(deployerSecret));
}
// Modifies a Core configuration with the relevant watcher/updater addresses pulled from GCP
export async function addAgentGCPAddresses(
environment: string,
config: CoreConfig,
) {
const [addressesRaw] = await execCmd(
`gcloud secrets versions access latest --secret optics-key-${environment}-addresses`,
);
const addresses = JSON.parse(addressesRaw);
const watcher = addresses.find(
(_: any) => _.role === 'watcher-attestation',
).address;
const updater = addresses.find(
(_: any) => _.role === 'updater-attestation',
).address;
const deployer = addresses.find((_: any) => _.role === 'deployer').address;
return {
...config,
updater: updater,
recoveryManager: deployer,
watchers: [watcher],
};
}
function include(condition: boolean, data: any) {
return condition ? data : {};
}
async function helmValuesForChain(
chainName: string,
agentConfig: AgentConfig,
configs: AgentChainConfigs,
) {
let gcpKeys: { [role: string]: SecretManagerPersistedKeys } | undefined =
undefined;
try {
gcpKeys = await getAgentGCPKeys(agentConfig.environment);
} catch (error) {
if (
!agentConfig.awsRegion ||
!agentConfig.awsKeyId ||
!agentConfig.awsSecretAccessKey
) {
throw new Error("agents' keys are neither in GCP nor in AWS");
}
}
const credentials = (role: KEY_ROLE_ENUM) => {
if (!!gcpKeys) {
return { hexKey: strip0x(gcpKeys![role].privateKey) };
} else {
// When staging-community was deployed, we mixed up the attestation and signer keys, so we have to switch for this environment
const adjustedRole =
agentConfig.environment === 'staging-community' &&
role === KEY_ROLE_ENUM.UpdaterAttestation
? KEY_ROLE_ENUM.UpdaterSigner
: agentConfig.environment === 'staging-community' &&
role === KEY_ROLE_ENUM.UpdaterSigner
? KEY_ROLE_ENUM.UpdaterAttestation
: role;
return {
aws: {
keyId: `alias/${agentConfig.runEnv}-${chainName}-${adjustedRole}`,
region: agentConfig.awsRegion,
},
};
}
};
return {
image: {
repository: agentConfig.dockerImageRepo,
tag: agentConfig.dockerImageTag,
},
optics: {
runEnv: agentConfig.runEnv,
baseConfig: `${chainName}_config.json`,
homeChain: {
name: chainName,
connectionUrl: configs[chainName].rpc,
},
...include(!gcpKeys, {
aws: {
accessKeyId: agentConfig.awsKeyId,
secretAccessKey: agentConfig.awsSecretAccessKey,
},
}),
replicaChains: Object.keys(configs)
.filter((_) => _ !== chainName)
.map((replica) => {
const replicaConfig = configs[replica];
return {
name: replica,
connectionUrl: replicaConfig.rpc,
};
}),
updater: {
enabled: true,
transactionSigners: Object.keys(configs).map((chain) => ({
name: configs[chain].name,
...credentials(KEY_ROLE_ENUM.UpdaterSigner),
})),
attestationSigner: {
...credentials(KEY_ROLE_ENUM.UpdaterAttestation),
},
},
relayer: {
enabled: true,
transactionSigners: Object.keys(configs).map((chain) => ({
name: configs[chain].name,
...credentials(KEY_ROLE_ENUM.RelayerSigner),
})),
},
processor: {
enabled: true,
transactionSigners: Object.keys(configs).map((chain) => ({
name: configs[chain].name,
...credentials(KEY_ROLE_ENUM.ProcessorSigner),
})),
},
},
};
}
function helmifyValues(config: any, prefix?: string): string[] {
if (typeof config !== 'object') {
return [`--set ${prefix}=${JSON.stringify(config)}`];
}
if (config.flatMap) {
return config.flatMap((value: any, index: number) => {
return helmifyValues(value, `${prefix}[${index}]`);
});
}
return Object.keys(config).flatMap((key) => {
const value = config[key];
return helmifyValues(value, prefix ? `${prefix}.${key}` : key);
});
}
export async function getAgentEnvVars(
home: string,
role: KEY_ROLE_ENUM,
agentConfig: AgentConfig,
configs: AgentChainConfigs,
) {
const gcpKeys = await getAgentGCPKeys(agentConfig.environment);
const valueDict = await helmValuesForChain(home, agentConfig, configs);
const envVars: string[] = [];
// Base vars from config map
envVars.push(`BASE_CONFIG=${valueDict.optics.baseConfig}`);
envVars.push(
`OPT_BASE_HOME_CONNECTION_URL=${valueDict.optics.homeChain.connectionUrl}`,
);
envVars.push(`RUN_ENV=${agentConfig.runEnv}`);
valueDict.optics.replicaChains.forEach((replicaChain: any) => {
envVars.push(
`OPT_BASE_REPLICAS_${replicaChain.name.toUpperCase()}_CONNECTION_URL=${
replicaChain.connectionUrl
}`,
);
});
// Signer key
Object.keys(configs).forEach((network) => {
envVars.push(
`OPT_BASE_SIGNERS_${network.toUpperCase()}_KEY=${strip0x(
gcpKeys[role].privateKey,
)}`,
);
});
if (role.startsWith('updater')) {
envVars.push(
`OPT_BASE_UPDATER_KEY=${strip0x(
gcpKeys[KEY_ROLE_ENUM.UpdaterAttestation].privateKey,
)}`,
);
}
return envVars;
}
export async function runAgentHelmCommand(
action: HelmCommand,
agentConfig: AgentConfig,
homeConfig: ChainJson,
configs: AgentChainConfigs,
) {
const valueDict = await helmValuesForChain(homeConfig.name, agentConfig, configs);
const values = helmifyValues(valueDict);
return execCmd(
`helm ${action} ${
homeConfig.name
} ../../rust/helm/optics-agent/ --namespace ${
agentConfig.namespace
} ${values.join(' ')}`,
{},
false,
true,
);
}
export async function runKeymasterHelmCommand(
action: HelmCommand,
agentConfig: AgentConfig,
configs: AgentChainConfigs,
) {
const gcpKeys = await getAgentGCPKeys(agentConfig.environment);
const bankKey = gcpKeys[KEY_ROLE_ENUM.Bank];
const config = {
networks: mapPairs(configs, (home, chain) => {
return [
home,
{
endpoint: chain.rpc,
bank: {
signer: ensure0x(bankKey.privateKey),
address: bankKey.address,
},
threshold: 200000000000000000,
},
];
}),
homes: mapPairs(configs, (home, chain) => {
return [
home,
{
replicas: Object.keys(configs),
addresses: Object.fromEntries(
KEY_ROLES.filter((_) => _.endsWith('signer')).map((role) => [
role,
gcpKeys[role].address,
]),
),
},
];
}),
};
await writeFile(`config.json`, JSON.stringify(config));
await execCmd(
`helm ${action} keymaster-${agentConfig.environment} ../../tools/keymaster/helm/keymaster/ --namespace ${agentConfig.namespace} --set-file keymaster.config=config.json`,
{},
false,
true,
);
await rm('config.json');
return;
}
function mapPairs<V, R>(
dict: { [k: string]: V },
f: (key: string, value: V) => [string, R],
) {
return Object.fromEntries(Object.keys(dict).map((key) => f(key, dict[key])));
}

@ -76,6 +76,16 @@ export function toChain(config: ChainJson): Chain {
};
}
export function replaceDeployer(chain: Chain, privateKey: string): Chain {
const provider = new ethers.providers.JsonRpcProvider(chain.config.rpc);
const signer = new ethers.Wallet(privateKey, provider);
const deployer = new NonceManager(signer);
return {
...chain,
deployer
}
}
export type RustSigner = {
key: string;
type: string; // TODO

@ -569,10 +569,7 @@ export async function deployNChains(deploys: CoreDeploy[]) {
]);
log(isTestDeploy, 'done readying');
// Do it sequentially
for (const deploy of deploys) {
await deployOptics(deploy)
}
await Promise.all(deploys.map(deployOptics))
// enroll remotes on every chain
//

@ -1,3 +1,5 @@
import { exec } from 'child_process'
/*
* Converts address to Bytes32
*
@ -7,3 +9,75 @@
export function toBytes32(address: string): string {
return '0x' + '00'.repeat(12) + address.slice(2);
}
/**
* Map an async function over a list xs with a given concurrency level
*
* @param concurrency number of `mapFn` concurrent executions
* @param xs list of value
* @param mapFn mapping function
*/
export async function concurrentMap<A, B>(
concurrency: number,
xs: A[],
mapFn: (val: A, idx: number) => Promise<B>
): Promise<B[]> {
let res: B[] = []
for (let i = 0; i < xs.length; i += concurrency) {
const remaining = xs.length - i
const sliceSize = Math.min(remaining, concurrency)
const slice = xs.slice(i, i + sliceSize)
res = res.concat(await Promise.all(slice.map((elem, index) => mapFn(elem, i + index))))
}
return res
}
export function execCmd(
cmd: string,
execOptions: any = {},
rejectWithOutput = false,
pipeOutput = false
): Promise<[string, string]> {
return new Promise((resolve, reject) => {
if (process.env.VERBOSE === 'true') {
console.debug('$ ' + cmd)
pipeOutput = true
}
const execProcess = exec(
cmd,
{ maxBuffer: 1024 * 10000, ...execOptions },
(err, stdout, stderr) => {
if (process.env.VERBOSE === 'true') {
console.debug(stdout.toString())
}
if (err || process.env.VERBOSE === 'true') {
console.error(stderr.toString())
}
if (err) {
if (rejectWithOutput) {
reject([err, stdout.toString(), stderr.toString()])
} else {
reject(err)
}
} else {
resolve([stdout.toString(), stderr.toString()])
}
}
)
if (pipeOutput) {
if (execProcess.stdout) {
execProcess.stdout.pipe(process.stdout)
}
if (execProcess.stderr) {
execProcess.stderr.pipe(process.stderr)
}
}
})
}
export const ensure0x = (hexstr: string) => (hexstr.startsWith('0x') ? hexstr : '0x' + hexstr)
export const strip0x = (hexstr: string) => (hexstr.startsWith('0x') ? hexstr.slice(2) : hexstr)

@ -62,7 +62,7 @@ export function getPathToLatestDeployConfig() {
* */
function getPathToLatestConfig(
configPath: string,
ignoreFolders = ['development', 'staging', 'mainnet', 'default'],
ignoreFolders = ['development', 'staging', 'mainnet', 'default', 'staging-community', 'production-community'],
) {
// get the names of all non-default config directories within the relative configPath
let configFolders: string[] = fs

Loading…
Cancel
Save