Compare commits

..
Author SHA1 Message Date
dboreham 6396e43c68 Update for demo
Former-commit-id: 5fed0cdacace4eb7c490dd9df9a53ffc166ff4ad
2023-04-10 14:52:23 -06:00
dboreham 6cb7bbf1d0 Remove test file
Former-commit-id: 0b6578a182
2023-04-10 11:46:52 -06:00
dboreham acbadc83fc Workaround for ref being different in production
Former-commit-id: f5c2e28065
2023-04-10 11:43:04 -06:00
dboreham 728bf653cc Merge branch 'main' into publish-test
Former-commit-id: 9a657e05a1
2023-04-10 11:29:29 -06:00
dboreham 607b85f447 Fix weird whitespace
Former-commit-id: 23d5d563e1
2023-04-10 11:26:53 -06:00
dboreham a5b5054af5 Merge branch 'main' into publish-test
Former-commit-id: b2070dfaa9
2023-04-10 11:20:33 -06:00
dboreham ce6ef81fe5 Publish drafts on the test branch
Former-commit-id: 49f14f3191
2023-04-10 11:20:15 -06:00
dboreham 3cdad5b2d6 Merge main
Former-commit-id: 4d1f339188
2023-04-10 09:20:26 -06:00
dboreham 7bcad7b936 Fix publish workflow
Former-commit-id: e5cf52f188
2023-04-10 09:18:39 -06:00
dboreham d72dcb6c74 Add test code
Former-commit-id: c934ffe18e
2023-04-10 07:48:22 -06:00
dboreham 1559330fd7 Add test code
Former-commit-id: a225d5034b
2023-04-10 07:44:14 -06:00
dboreham bb33cdffec Force build
Former-commit-id: df37e03287
2023-04-10 07:41:02 -06:00
dboreham 79891b9128 Merge master
Former-commit-id: 00b7ddf1f0
2023-04-10 07:40:13 -06:00
dboreham 75958adf82 Go back to all branches
Former-commit-id: 862cc4d448
2023-04-10 07:37:48 -06:00
dboreham 1abde44a31 Try quotes
Former-commit-id: 008f42ad38
2023-04-10 07:35:55 -06:00
dboreham 19eb67ed08 Force build
Former-commit-id: 32198aba12
2023-04-10 07:29:34 -06:00
dboreham c69ce45190 Merge branch 'main' into publish-test
Former-commit-id: 9a5fa577f2
2023-04-10 07:28:18 -06:00
dboreham b3732bc7a6 Publish only on push to test branch
Former-commit-id: 5201138d6d
2023-04-10 07:27:31 -06:00
dboreham 9cd3ac2567 Force build
Former-commit-id: 77d5c8e9ea
2023-04-10 07:20:51 -06:00
dboreham 0c1170e51c Merge branch 'publish-test' of github.com:cerc-io/stack-orchestrator into publish-test
Former-commit-id: c5a42b7ddf
2023-04-10 07:10:36 -06:00
dboreham 3b9fe60e59 Add file to force a job
Former-commit-id: d01b2215c4
2023-04-10 07:09:56 -06:00
dboreham 6bd84e5b2f Add test code
Former-commit-id: 355c3e179e
2023-04-10 07:02:05 -06:00
dboreham 317608140f Trigger publish on PR and merge to main (#306)
Former-commit-id: c359188b3d
2023-04-10 06:59:08 -06:00
dboreham 21d7a1ba61 Add v prefix
Former-commit-id: 1389559bc6
2023-04-10 06:55:25 -06:00
dboreham 17d5e37368 Remove comment
Former-commit-id: a26ec970bc
2023-04-10 06:54:30 -06:00
dboreham f90000d9cc New build version scheme (#305)
* Use separate build tag file

* Implement new versioning scheme

* Update workflow file

Former-commit-id: 80bbbafeb6
2023-04-10 06:43:23 -06:00
dboreham bf85c61711 Update for new tagging scheme
Former-commit-id: dbb959f648
2023-04-10 06:24:00 -06:00
dboreham 59afaf66ae Make version manually updated
Former-commit-id: f92a2fb3fc
2023-04-10 06:17:12 -06:00
nabarun 18279fcef3 Add env variable to enable/disable sending txs to L2 from watcher peer (#293)
* Add flag to enable/disable watcher peer L2 txs

* Update watcher-ts version in readme

Former-commit-id: d3715d1952
2023-04-10 10:42:56 +05:30
dboreham a8815924c6 Fix typo
Former-commit-id: 93a2e1c864
2023-04-09 22:44:15 -06:00
dboreham fe77955845 Enable publishing with fixed version
Former-commit-id: 751ed2e157
2023-04-09 22:41:01 -06:00
dboreham 8fb9e6d39b Try to enable request logging
Former-commit-id: a930ad0d1c
2023-04-07 07:36:53 -06:00
dboreham 0d6bc81233 Try to enable request logging
Former-commit-id: 628954f060
2023-04-07 07:27:39 -06:00
dboreham 35d7649689 Try to enable request logging
Former-commit-id: c90790d0d7
2023-04-07 07:19:12 -06:00
dboreham 504ed542c3 Try to upload
Former-commit-id: 749b302f5f
2023-04-06 19:47:15 -06:00
dboreham 6dad03c031 Get the tag right
Former-commit-id: eb16a97def
2023-04-06 19:35:17 -06:00
dboreham 124a838ab5 Try forcing a tag
Former-commit-id: a559c2e90f
2023-04-06 19:33:27 -06:00
dboreham b36f9bc974 Fix errors
Former-commit-id: 8fe0b2dc29
2023-04-06 19:07:47 -06:00
dboreham 4ae959eb4f Add prototype publish workflow
Former-commit-id: 681112cf07
2023-04-06 19:04:00 -06:00
Zach af82c8c431 Merge pull request #297 from cerc-io/zramsay-patch-1
Update README.md

Former-commit-id: fa37b186ca
2023-04-06 19:40:25 -04:00
Zach d2c85e6f1d Update README.md
Former-commit-id: 1e130b2a29
2023-04-06 19:39:12 -04:00
Zach 53516f3109 Merge pull request #278 from cerc-io/update-docs
update registry install instructions

Former-commit-id: 055fa14cfb
2023-04-06 19:32:29 -04:00
zramsay 5a27a94a7d more little updates
Former-commit-id: 579fa6ff66
2023-04-06 19:31:57 -04:00
dboreham 4fa9d675ba Ubuntu install script (#289)
* Copy of Zach's install script

* Few small fixes after testing on DO droplet

* Update scripts

* Rename script

* Add sudo notice

* Fix typo

* Fix another typo

* Update docker instructions

Former-commit-id: 9e2b140e10
2023-04-06 13:50:50 -06:00
dboreham dcc0f91140 Change step name
Former-commit-id: 4f137915bb
2023-04-06 13:36:58 -06:00
dboreham e8139bd372 Use correct path
Former-commit-id: 2e2927f788
2023-04-06 13:35:16 -06:00
dboreham b915db426d Add the smoke test
Former-commit-id: b850322f57
2023-04-06 13:32:56 -06:00
dboreham 69d215e8ec Merge pull request #294 from cerc-io/dboreham/enable-tests-ci
Enable tests ci

Former-commit-id: 47275a50d4
2023-04-06 13:26:27 -06:00
dboreham 060ac520e4 Bump CI
Former-commit-id: e7a4de5940
2023-04-06 13:24:17 -06:00
dboreham 484d80be5f Add build
Former-commit-id: 90210e439f
2023-04-06 13:20:22 -06:00
dboreham 792887a121 Try adding job name
Former-commit-id: 7dd07beec6
2023-04-06 07:28:13 -06:00
dboreham 129d581141 Merge pull request #290 from cerc-io/dboreham/enable-ci
Try to enable CI

Former-commit-id: f7def488d9
2023-04-06 07:21:07 -06:00
dboreham 44421049ae Try to enable CI
Former-commit-id: 0432a4bf29
2023-04-06 07:19:08 -06:00
nabarunandprathamesh 86f13e9c6b Separate out watcher and web-apps in mobymask-v2 stack (#287)
* Separate out watcher and web-apps in mobymask stack

* Take L2 RPC endpoint from the env file

* Changes to run watcher and mobymask web-app separately

* Support running watcher without contract deployment and L2 txs

* Remove duplicate mobymask params env

* Add code comments

* Add instructions for running web-apps separately

* Self review fixes

* Fix timeout for mobymask-app on watcher server

---------

Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
Former-commit-id: 6f781ae303
2023-04-06 15:17:00 +05:30
prathamesh0 72737bfa29 Handle restarts in mobymask-v2 stack (#286)
* Verify existing contract deployment

* Update mobymask-v2 demo instructions

Former-commit-id: 59fe9aae59
2023-04-05 17:52:12 +05:30
nabarun 63fbaa7ae3 Add ability to run mobymask-v2 stack with external optimism endpoint (#279)
* Set optimism geth endpoint from env file

* Set L1 account private keys from env

* Only deploy contract and generate invite in mobymask container

* Add readme for running mobymask v2 stack independently

* Modify mobymask container to stop running server and update readmes

* Check deployer account balance before deploying contract

* Fix for checking account balance before deploying

* Update readme description

* Update MobyMask repo tag in readme

Former-commit-id: 94e38ceaba
2023-04-05 17:26:38 +05:30
prathamesh0 464ef89a01 Handle restarts for services in fixturenet-optimism stack (#282)
* Check existing L1 contracts deployment

* Rename volume used for generated L2 config

* Check for existing L2 geth data directory

* Cross check existing L2 config against L1 deployment config

* Verify sequencer key in existing L2 geth data directory

* Add instructions to troubleshoot corrupt L2 geth dir

* Separate out instructions to run L2 with external L1

* Update docs

Former-commit-id: 9ffa9bb5a9
2023-04-05 10:25:50 +05:30
dboreham 0c5f252465 Merge pull request #285 from cerc-io/dboreham/fix-gerbil-builder
Fail on error installing package

Former-commit-id: 18bb8194fe
2023-04-04 20:26:52 -06:00
dboreham b4d9a3a831 Fail on error installing package
Former-commit-id: 11375fed0c
2023-04-04 20:26:19 -06:00
dboreham 4da19b652e Update version
Former-commit-id: 9e4240df07
2023-04-04 11:29:16 -06:00
prathamesh0 be08ee81ea Add ability to run Optimism fixturenet with external L1 endpoint (#273)
* Remove unnecessary todos

* Set option to log commands in shell scripts

* Replace fixturenet-eth dependency with wait on endpoint

* Skip lighthouse node dependency check

* Update all services in the stack

* Use debug flag to enable shell commands logging

* Add bash in op-batcher container

* Update mobymask-v2 instructions

* Update fixturenet-optimism instructions

* Add descriptions for services

* Move ts files to container-build

* Take L1 RPC endpoint from the env file

* Add dev mode restriction for editing env file

Former-commit-id: 2515878eeb
2023-04-04 14:53:28 +05:30
zramsay 22bb1a0bfa key missing line
Former-commit-id: 358c7ea168
2023-04-03 16:41:07 -04:00
telackey 287468b7c0 Update run script to support COPY and WebSockets. (#275)
Former-commit-id: 4da69ebf4c
2023-04-03 14:59:31 -05:00
nabarun f23c22d5b9 Replace laconicd with optimism in mobymask-v2 stack (#272)
* Remove laconicd to use optimism endpoint

* Use fixturenet-optimism stack for mobymask-v2-watcher

* Fix setting L1 account private key in mobymask-v2 stack

Former-commit-id: b266ac78b4
2023-04-03 18:13:29 +05:30
1881554ae0 Add Optimism Fixturenet stack (#266)
* Initial version

* Update readme

* Build op-geth container

* Add optimism go code containers

* Add optimism contracts container

* Update optimism contracts container build

* Add fixturenet-optimism-contracts service to deploy L1 contracts

* Add fixturenet-optimism op-node and op-geth

* Avoid reading addresses from a file when sending balances

* Fixes for running op-geth container

* Fix image name and command in optimism-contracts service

* Add a healthcheck to lighthouse bootnode to avoid failing eth txs

* Avoid using hardhat ethers to send balances from an account

* Update script to send balance to L1 bridge proxy contract

* Implement op-node container

* Wait for a finalized L1 block to exist

* Fix for running op-batcher

* Add a todo for restart support

* Integrate optimism-contracts service and update instructions

* Update clean-up to remove docker volumes

* Update volume access permissions

* Add a todo to replace foundry usage with web3 js

* Add known issues

* Fix README

* Fix indentation

* Update known issues

---------

Co-authored-by: David Boreham <david@bozemanpas.com>
Co-authored-by: David Boreham <david@bozemanpass.com>
Co-authored-by: nabarun <nabarun@deepstacksoft.com>
Former-commit-id: fc522140ba
2023-04-03 12:33:47 +05:30
dboreham 21d6e33dab Merge pull request #271 from cerc-io/dboreham/add-foundry-to-erc20-stack
Add missing repo and container

Former-commit-id: 432fc4755b
2023-04-02 08:26:07 -06:00
dboreham 009ce95914 Add missing repo and container
Former-commit-id: 045117c6fb
2023-04-02 08:25:26 -06:00
dboreham f7bb8f2735 Merge pull request #236 from cerc-io/dboreham/add-console
Add laconic console in fixturenet-laconic-loaded

Former-commit-id: f2c6ebbc23
2023-04-01 13:32:29 -06:00
dboreham bddf72ee46 Temporary punch the port through to the host to make things work
Former-commit-id: f6cb041634
2023-04-01 10:06:39 -06:00
dboreham 2b94ed12c2 Run template substitution on start
Former-commit-id: e072a6bc4b
2023-03-31 16:33:48 -06:00
dboreham 31f9f0e864 Implement deploy time config
Former-commit-id: 409f61d68d
2023-03-31 16:29:59 -06:00
dboreham 1342be5723 Add a temporary version of config to the hosting container
Former-commit-id: 3372cac35e
2023-03-31 08:00:24 -06:00
dboreham d25de90df2 Add console host container to stack
Former-commit-id: c45dd545dd
2023-03-31 07:59:43 -06:00
dboreham 1fdfb9f568 Add console container pod
Former-commit-id: 3fb968c9cf
2023-03-30 00:27:19 -06:00
dboreham 9b22685484 Add web server to host container
Former-commit-id: d01fb777d4
2023-03-30 00:15:36 -06:00
dboreham 8ee702f6ff Merge branch 'main' into dboreham/add-console
Former-commit-id: 8bfc97bfbe
2023-03-29 22:50:22 -06:00
dboreham fddd728037 Merge pull request #265 from cerc-io/dboreham/fix-yarn-lock-processing
Handle semver spec in package.json local dependencies

Former-commit-id: 7f155023d2
2023-03-29 22:47:48 -06:00
dboreham fbe76f4713 Handle semver spec in package.json local dependencies
Former-commit-id: c5a532c02b
2023-03-29 22:46:58 -06:00
prathamesh0andnabarun 79ad4fb15a Upgrade dependencies and start inline watcher peer in mobymask-v2 stack (#256)
* Upgrade dependencies in mobymask-v2 stack

* Run inline watcher peer in mobymask v2 stack

---------

Co-authored-by: nabarun <nabarun@deepstacksoft.com>
Former-commit-id: 71aaa41069
2023-03-30 09:44:15 +05:30
dboreham 46cc0e8b94 Merge branch 'main' into dboreham/add-console
Former-commit-id: c5cf8dda79
2023-03-29 21:25:57 -06:00
dboreham 75ca36e5f7 Update version
Former-commit-id: e23ee1b176
2023-03-28 20:00:16 -06:00
dboreham 398c834b0b Merge pull request #255 from cerc-io/dboreham/fix-js-builder-gid-problem
Do not switch gid/uid for root and system users

Former-commit-id: df23476f0b
2023-03-28 19:54:37 -06:00
dboreham 51ad55b1d1 Do not switch gid/uid for root and system users
Former-commit-id: b6fb3b396b
2023-03-28 19:52:42 -06:00
dboreham cb7b6f05f2 Update version
Former-commit-id: 1266ab88be
2023-03-28 11:49:58 -06:00
dboreham c358dd554f Merge pull request #253 from cerc-io/dboreham/wait-for-export-cluster-config
Detect transient errors exporting variables and re-try

Former-commit-id: a4a9607ea8
2023-03-28 11:44:54 -06:00
dboreham 75ca0d4138 Detect transient errors exporting variables and re-try
Former-commit-id: 15c0a92f30
2023-03-28 11:44:02 -06:00
dboreham 29f0302fb0 Merge pull request #252 from cerc-io/dboreham/fix-go-ethereum-foundry-startup
Fix health checks in erc20 containers

Former-commit-id: bb63035fcc
2023-03-28 10:47:07 -06:00
dboreham b3ae2159ee Fix health checks in erc20 containers
Former-commit-id: 35ca979068
2023-03-28 10:46:26 -06:00
dboreham bd61d823d7 Merge pull request #251 from cerc-io/dboreham/fix-ethereum-foundry
Update go-ethereum-foundry container for Debian base image

Former-commit-id: b1f4f2e4e3
2023-03-28 09:53:22 -06:00
dboreham ce04ca2be5 Update go-ethereum-foundry container for Debian base image
Former-commit-id: 82acc99e2d
2023-03-28 09:52:34 -06:00
dboreham 126d671bb0 Update version
Former-commit-id: 3caf0da956
2023-03-28 07:17:06 -06:00
dboreham 616f85ce6b Update version
Former-commit-id: 7e1137f811
2023-03-27 08:00:19 -06:00
nabarun bed5e262cc Add missing notes and steps in mobymask-v2 stack readme (#241)
* Add missing notes and steps in readme

* Mention clearing of browser cache before opening invite link

Former-commit-id: 1aeb44d5ad
2023-03-27 11:17:12 +05:30
dboreham 97da39c68b Update version
Former-commit-id: 3706dfd7db
2023-03-26 21:35:01 -06:00
dboreham e7c5d5157e Fix missing container name change
Former-commit-id: e70dca7687
2023-03-25 18:57:36 -06:00
dboreham 9adf48f6c8 Merge pull request #240 from cerc-io/dboreham/fix-act-container-names
Use dashes not underscore to match docker-compose file

Former-commit-id: 685ebdfb15
2023-03-25 18:27:38 -06:00
dboreham 16ff576413 Use dashes not underscore to match docker-compose file in hosting repo and convention
Former-commit-id: 022afdc352
2023-03-25 18:26:21 -06:00
dboreham f4e9837ed2 Merge pull request #238 from cerc-io/telackey/act_runner
Add Gitea action support via act_runner.

Former-commit-id: 7af7f654f6
2023-03-25 11:35:07 -06:00
dboreham 0eb890edaf Merge pull request #230 from cerc-io/dboreham/update-node-version
Update to Node 18

Former-commit-id: ece01730fd
2023-03-25 11:34:07 -06:00
telackey 788b214116 Add Gitea action support via act_runner.
Former-commit-id: 74077d7704
2023-03-24 22:24:40 -05:00
David Boreham 94c69d6596 Merge main
Former-commit-id: 4a04d20bb2
2023-03-24 19:43:46 -06:00
dboreham aa7697dd3e Add lirewine packages
Former-commit-id: ca82d39c0c
2023-03-25 12:07:44 -06:00
David Boreham 741b225706 Console host container builds
Former-commit-id: 4ad2729ae8
2023-03-24 19:32:41 -06:00
David Boreham 99f41a3f9f Merge branch 'dboreham/add-console' of github.com:cerc-io/stack-orchestrator into dboreham/add-console
Former-commit-id: 2ca48fd2a2
2023-03-24 18:38:50 -06:00
David Boreham 4b0f46bb1b Merge branch 'main' into dboreham/add-console
Former-commit-id: 62d2d37417
2023-03-24 18:36:36 -06:00
dboreham 8e056c1b0c Merge pull request #237 from cerc-io/dboreham/use-local-foundry
Use our locally built foundry container

Former-commit-id: b2cef16462
2023-03-24 18:27:48 -06:00
David Boreham 5767b93e6a Use our locally built foundry container
Former-commit-id: da24a4edf6
2023-03-24 18:23:35 -06:00
dboreham e608dca175 Add sdk repo and npm
Former-commit-id: f67e367ead
2023-03-24 17:31:41 -06:00
dboreham 38feddb266 Update version file
Former-commit-id: 07de83e6d7
2023-03-24 10:26:48 -06:00
Zach 862b75de1e Merge pull request #235 from cerc-io/zramsay-patch-1
doc jq requirement

Former-commit-id: 3d03b1099a
2023-03-24 08:57:38 -04:00
Zach af44d005c3 doc jq requirement
Former-commit-id: a5dd62e457
2023-03-24 08:56:01 -04:00
nabarunandprathamesh 1951a5d398 Add web-apps and laconicd in MobyMask v2 watcher stack (#226)
* Rename .env file

* Add web app services to docker compose file

* Add laconicd to deploy contract and send txs

* Add demo with steps for running mobymask app with L2 chain

* Add fix for yarn install on M1 platform in react-peer

* Update multiaddrs to use websockets

* Add notes in readmes

---------

Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
Former-commit-id: cacd306b22
2023-03-24 15:53:54 +04:00
dboreham 2d64f49dc5 Fix npm config
Former-commit-id: 5b8c91d19d
2023-03-24 02:59:03 -06:00
dboreham 7c69d9477b Merge branch 'main' into dboreham/add-console
Former-commit-id: af1b5b5cfc
2023-03-24 02:56:03 -06:00
dboreham 8a4f189286 Merge pull request #234 from cerc-io/dboreham/lirewine-builds
Add support for lirewine npm package build and consumption

Former-commit-id: ebe1dfa4bf
2023-03-24 02:54:21 -06:00
dboreham aa01feb98a Fix up script and npm list
Former-commit-id: e6b91acdea
2023-03-24 02:52:37 -06:00
dboreham c4e3aa54f1 Remove trailing whitespace
Former-commit-id: 2e7ef1e52e
2023-03-24 02:31:19 -06:00
dboreham 364a71d694 Support the @lirewine npm scope
Former-commit-id: 9e322203e9
2023-03-24 02:30:04 -06:00
dboreham d96a6def14 Add lirewine repos and npms
Former-commit-id: 870a987760
2023-03-24 02:08:56 -06:00
dboreham db925bfe35 Merge branch 'main' into dboreham/add-console
Former-commit-id: 44ba54f4a1
2023-03-23 18:47:54 -06:00
dboreham 1a75a270f5 Merge pull request #232 from cerc-io/dboreham/foundry-debian-container
Foundry debian-based container

Former-commit-id: 76029d24de
2023-03-23 17:46:42 -06:00
David Boreham 23fab04ec8 Fix filename
Former-commit-id: 06288fd9e1
2023-03-23 16:09:27 -06:00
David Boreham 4420f45924 Build foundry with Debian base container
Former-commit-id: 21e9f96771
2023-03-23 16:03:35 -06:00
dboreham 9e138d8a6a Initial commit
Former-commit-id: c9e931c212
2023-03-23 16:02:55 -06:00
David Boreham 653f4c7d0a Update to Node 18
Former-commit-id: 56ff7d210b
2023-03-23 14:04:31 -06:00
dboreham eb45899433 Merge branch 'main' into dboreham/add-console
Former-commit-id: c307b0a1af
2023-03-22 21:37:23 -06:00
dboreham dac22b19b7 Update version
Former-commit-id: d5fd880bba
2023-03-22 21:35:48 -06:00
David Boreham be761d10b1 Initial commit
Former-commit-id: f55aeee583
2023-03-22 17:05:04 -06:00
dboreham 08ed69e4cd Merge pull request #227 from cerc-io/dboreham/fix-fixturenet-laconicd
Update fixturenet create script

Former-commit-id: 5fca9bdac7
2023-03-22 15:01:59 -06:00
David Boreham 84bad13934 Update fixturenet create script
Former-commit-id: 01c6999027
2023-03-22 14:52:39 -06:00
dboreham c537d787c2 Update version
Former-commit-id: 91ba0ae011
2023-03-21 09:55:40 -06:00
Zach 538bccd19a Merge pull request #225 from cerc-io/dboreham/update-readme
Update README to reflect user experience and to use --stack

Former-commit-id: 8fb93758ee
2023-03-21 09:25:53 -04:00
David Boreham d5f5ecceda Update README to reflect user experience and to use --stack directive in examples
Former-commit-id: 2c151cb8ce
2023-03-20 19:36:05 -06:00
dboreham 39741b2e8f Add Gitea note
Former-commit-id: 74be51b892
2023-03-20 10:14:58 -06:00
dboreham 2ce04afd1e Merge pull request #224 from cerc-io/dboreham/update-registry-doc
Update registry deploy instructions

Former-commit-id: 33bbbccef7
2023-03-20 10:09:49 -06:00
dboreham 48a761875a Update registry deploy instructions
Former-commit-id: ea6f28a3de
2023-03-20 10:08:59 -06:00
dboreham 6ee7c3bbba Update version
Former-commit-id: 4c92391faf
2023-03-20 08:21:41 -06:00
Nabarun Gogoi 4d3042bfcc Add a stack for mobymask-v2-watcher to run peer tests (#222)
* Add mobymask-v2-watcher stack with peer tests

* Rename stack and container

* Avoid building react-peer container

* Improve step for getting container ID

Former-commit-id: 7831078872
2023-03-20 18:25:39 +05:30
dboreham 49092305e4 Remove now unnecessary commands
Former-commit-id: a354158680
2023-03-19 17:30:22 -06:00
dboreham 5c3384c7ae Merge pull request #216 from cerc-io/dboreham/fixturenet-eth-deploy-contracts
deploy contracts and use foundry with fixturenet-eth

Former-commit-id: f8155cb29a
2023-03-10 16:11:04 -07:00
dboreham b47d303ba4 Merge branch 'main' into dboreham/fixturenet-eth-deploy-contracts
Former-commit-id: c8ba07739e
2023-03-09 17:10:16 -07:00
dboreham abdf561704 Merge pull request #214 from cerc-io/dboreham/use-local-foundry
Build foundry locally

Former-commit-id: 3aa9e427c2
2023-03-09 17:06:49 -07:00
dboreham 8d3bca602a Build foundry locally
Former-commit-id: 6735a0d378
2023-03-09 17:06:07 -07:00
dboreham 75e5c1d7f1 Drive by bug fix
Former-commit-id: 21104f6b18
2023-03-09 14:26:15 -07:00
dboreham 5b79195f86 Merge branch 'main' into dboreham/fixturenet-eth-deploy-contracts
Former-commit-id: 7191dd8518
2023-03-09 08:37:45 -07:00
dboreham 139626ef8e Update version
Former-commit-id: 01c1230cd1
2023-03-09 08:37:20 -07:00
dboreham 4356e09440 Merge pull request #213 from cerc-io/dboreham/fix-non-stack-deploy
Fix for #212 - exception on non-stack deploy

Former-commit-id: ee778356c0
2023-03-09 08:31:01 -07:00
dboreham 030ad25b78 Fix for #212 - exception on non-stack deploy
Former-commit-id: ecc4302c34
2023-03-09 08:30:18 -07:00
dboreham f096c014ce Add omitted file
Former-commit-id: a3440ad05b
2023-03-09 06:43:51 -07:00
dboreham 49b9983b3a Update doc
Former-commit-id: c07f6c51e2
2023-03-08 22:49:00 -07:00
dboreham 4fd9e71c84 Configure foundry container
Former-commit-id: b708bb2122
2023-03-08 22:22:43 -07:00
dboreham c12418222a Merge pull request #211 from cerc-io/dboreham/container-dependent-config
Add very basic cluster config mechanism

Former-commit-id: d9a7ea19a3
2023-03-08 17:04:06 -07:00
dboreham f57b8b4ba0 Add very basic cluster config mechanism
Former-commit-id: 9cae493458
2023-03-08 17:03:14 -07:00
dboreham e29ae7ac93 Merge pull request #210 from cerc-io/dboreham/laconicd-stack-doc
Update fixturenet-laconicd docs

Former-commit-id: 75376d7baf
2023-03-07 16:05:21 -07:00
dboreham edd7d549d9 Update fixturenet-laconicd docs
Former-commit-id: 89b33c0e38
2023-03-07 16:04:43 -07:00
dboreham 4092a127ef Merge pull request #208 from cerc-io/dboreham/implement-logs-command
Implement logs command

Former-commit-id: ba5cc68794
2023-03-07 11:58:41 -07:00
dboreham fae8fbed5e Implement logs command
Former-commit-id: b488d82b8f
2023-03-07 11:57:24 -07:00
dboreham a900945698 Update version
Former-commit-id: f97b1e4720
2023-03-07 10:14:20 -07:00
dboreham 2937a07cd8 Merge pull request #207 from cerc-io/dboreham/run-cli-in-cluster
Run laconic registry cli in cluster

Former-commit-id: d80fb5dd16
2023-03-07 10:10:26 -07:00
dboreham 6ae3c252ea Very basic key export/import implementation
Former-commit-id: 8a8fef6845
2023-03-07 10:08:04 -07:00
dboreham 178de8f496 Add simple export/import scheme
Former-commit-id: 277be07dcd
2023-03-07 09:07:15 -07:00
dboreham 05cdd2ed01 Merge pull request #205 from cerc-io/dboreham/eth-tooling
Add foundry cli to fixturenet-eth

Former-commit-id: 99fcdf9d40
2023-03-06 15:20:07 -07:00
dboreham e801c28f60 Add foundry cli to fixturenet-eth
Former-commit-id: b43886a1a9
2023-03-06 15:19:19 -07:00
dboreham eb70f2526e Initial commit
Former-commit-id: 49c524e8ed
2023-03-04 18:45:57 -07:00
dboreham 199a4036a8 Merge pull request #203 from cerc-io/dboreham/pass-uid-to-compose-up
Pass environment variables for both exec and up

Former-commit-id: f7285be425
2023-03-02 10:56:53 -07:00
dboreham f0b711912a Pass environment variables for both exec and up
Former-commit-id: be6a473772
2023-03-02 10:53:48 -07:00
dboreham d3d3f92953 Merge pull request #202 from cerc-io/dboreham/remove-debug-output
Remove debug output

Former-commit-id: c0b4cefdce
2023-03-02 10:35:26 -07:00
dboreham c3101bc25a Remove debug output
Former-commit-id: f99dbfbdf5
2023-03-02 10:32:18 -07:00
dboreham 6c49520e69 Merge pull request #197 from cerc-io/dboreham/uid-gid-to-deploy
Pass uid and gid to compose

Former-commit-id: 900917b548
2023-02-28 10:23:34 -07:00
dboreham 70d34e6751 Pass uid and gid to compose
Former-commit-id: cea4e5a51f
2023-02-28 10:22:27 -07:00
dboreham c6de6d6067 Merge pull request #196 from cerc-io/dboreham/fix-project-name
Make cluster/docker-compose project name unique

Former-commit-id: 4353418fa6
2023-02-28 08:47:52 -07:00
dboreham 69b6b9a873 Make cluster/docker-compose project name unique
Former-commit-id: a1fdeac3b7
2023-02-28 08:47:02 -07:00
dboreham 430b884d72 Update version
Former-commit-id: 2f29e283de
2023-02-28 08:01:36 -07:00
dboreham 5d456f5600 Merge pull request #193 from cerc-io/dboreham/disable-docker-buildkit
Revert move to BuildKit in new Docker releases

Former-commit-id: 4fdb442263
2023-02-24 23:34:48 -07:00
dboreham ca40ffb012 Revert move to BuildKit in new Docker releases
Former-commit-id: ced6925e02
2023-02-24 23:31:17 -07:00
dboreham 6a73d3adee Merge pull request #191 from cerc-io/dboreham/builder-js-uid
Support docker containers with non-root users and host user uid not equal to 1000

Former-commit-id: 10548beedf
2023-02-24 23:06:13 -07:00
dboreham 9480b4082e usermod does not change group ownership of home dir
Former-commit-id: 17355c9e42
2023-02-24 22:44:50 -07:00
dboreham 467ff235ba Propagate build env vars
Former-commit-id: 5022e355ed
2023-02-24 22:26:02 -07:00
dboreham 25a755982e Implement new approach: build a uid-specific container
Former-commit-id: 6704cd7527
2023-02-24 22:14:28 -07:00
dboreham e3e96fa75e Work around docker uid/gid insanity
Former-commit-id: b84a28592d
2023-02-23 20:50:20 -07:00
dboreham 42696f8165 Add build stack doc
Former-commit-id: 187c06ef5a
2023-02-23 07:22:46 -07:00
dboreham c26f8552e1 Merge pull request #187 from cerc-io/dboreham/document-build-stack
Add some doc for build stack

Former-commit-id: c52f9e655d
2023-02-21 11:26:43 -07:00
dboreham 8352893d92 Add some doc
Former-commit-id: 1f57ec5326
2023-02-21 11:25:49 -07:00
RickM a92cabcb39 Merge pull request #186 from cerc-io/erc721-stack-syntax
Stack syntax for ERC721.

Former-commit-id: 9ccf3ca1af
2023-02-21 09:38:09 -06:00
RickM f841f8a2de Stack syntax for ERC721.
Former-commit-id: 463b11bb23
2023-02-21 09:30:07 -06:00
dboreham 7f652708bb Merge pull request #185 from cerc-io/dboreham/immutable-js-build
Copy build tree

Former-commit-id: b1e618142d
2023-02-21 06:59:38 -07:00
dboreham c769fce491 Copy build tree
Former-commit-id: 3b55d012be
2023-02-21 06:56:33 -07:00
dboreham 02335795fb Merge pull request #184 from cerc-io/dboreham/kubo
Add a kubo pod

Former-commit-id: 25ae0cac7d
2023-02-21 06:17:41 -07:00
dboreham c717fd8a59 Add ipfs pod
Former-commit-id: 6dddceec27
2023-02-21 06:16:59 -07:00
dboreham 0de2db7e90 Add kubo pod
Former-commit-id: 9c00aba8f3
2023-02-21 05:59:28 -07:00
dboreham 92f325a09b Update version
Former-commit-id: c4fa7fee30
2023-02-21 05:40:57 -07:00
dboreham 964edbec6f Merge pull request #182 from cerc-io/dboreham/check-for-js-builder
Check for builder container in npm build

Former-commit-id: 6c1bedc67e
2023-02-20 16:16:43 -07:00
dboreham 6f2a44ba2f Check for builder container in npm build
Former-commit-id: 156758bfa7
2023-02-20 16:16:15 -07:00
dboreham 9053d2d782 Merge pull request #180 from cerc-io/dboreham/npm-build-with-package-stack
npm build with package-registry stack

Former-commit-id: 9f07a0ed4b
2023-02-20 12:49:20 -07:00
dboreham 628fed4ef7 Working feature
Former-commit-id: f14a4a33d7
2023-02-20 12:46:56 -07:00
dboreham c737ec7ed6 Wire up to build-npms
Former-commit-id: 7e6268c39d
2023-02-20 06:43:06 -07:00
dboreham d927c92c0a Call from base stack class
Former-commit-id: f1cbce1d00
2023-02-20 06:23:21 -07:00
dboreham 142be179f4 Initial implementation
Former-commit-id: 68293cbaa3
2023-02-20 06:09:35 -07:00
dboreham 547ca561c0 Update python on whales
Former-commit-id: 7d51e4b9aa
2023-02-19 17:46:47 -07:00
dboreham 863e19211e Remove debug code
Former-commit-id: 5ceed34160
2023-02-17 15:38:24 -07:00
dboreham e20f9993d2 Merge pull request #178 from cerc-io/dboreham/package-registry-stack
Support for the package registry stack

Former-commit-id: e5197e4918
2023-02-17 15:36:28 -07:00
dboreham 9dab9b815c Add newline
Former-commit-id: 63c93acb83
2023-02-17 15:36:09 -07:00
dboreham 83115bcb9d Fix comment
Former-commit-id: 88d81f7df6
2023-02-17 15:35:31 -07:00
dboreham 46c22f4e4f Add pre/post script support
Former-commit-id: bb39d90522
2023-02-17 15:31:43 -07:00
dboreham 912483df58 Basic functionality
Former-commit-id: a1893aa153
2023-02-17 14:15:35 -07:00
dboreham ff69670db6 Initial commit
Former-commit-id: 60c1da725e
2023-02-17 13:34:51 -07:00
dboreham 871cd90456 Missed one update
Former-commit-id: 2bf50383dd
2023-02-17 11:53:58 -07:00
dboreham 639ab8cbc3 Update to use stack syntax
Former-commit-id: 6569a2a2b6
2023-02-17 11:53:05 -07:00
telackey bc5eff71b5 Use latest keycloak plugin. (#173)
Former-commit-id: 8645ab0619
2023-02-01 16:02:49 -06:00
dboreham 5ec774a300 Update version
Former-commit-id: b0520a042a
2023-01-30 22:29:38 +01:00
dboreham 9a750f0d9e Update version
Former-commit-id: 10f2fbaa37
2023-01-30 22:28:33 +01:00
dboreham 8a6ba6d01b Merge pull request #172 from cerc-io/dboreham/revert-foundry-image
Revert local foundry build

Former-commit-id: 3bd0c74e1f
2023-01-30 22:06:26 +01:00
dboreham b4ddef7ff0 Revert local foundry build
Former-commit-id: e850923e1a
2023-01-30 14:05:48 -07:00
dboreham a38ac5470d Merge pull request #171 from cerc-io/dboreham/fixturenet-loaded
Initial commit

Former-commit-id: 82c2bb78f2
2023-01-30 19:12:06 +01:00
dboreham 77380aec94 Initial commit
Former-commit-id: f01bc27660
2023-01-30 16:53:57 +01:00
dboreham ce7e5f2d82 Merge pull request #169 from cerc-io/dboreham/fix-gerbil-package-install
Install gerbil packages globally not locally in the project directory

Former-commit-id: db5775621d
2023-01-28 11:35:44 -07:00
dboreham 4dda8e2a87 Install gerbil packages globally not locally in the project directory
Former-commit-id: 5928e40721
2023-01-28 18:56:43 +01:00
dboreham 24ab259741 Merge pull request #167 from cerc-io/dboreham/release-doc
Add release process doc

Former-commit-id: 605a9aeda1
2023-01-27 22:25:53 -07:00
David Boreham 607575e4f4 Add release process doc
Former-commit-id: 1b3a14d86f
2023-01-27 21:22:43 -07:00
dboreham 86e245e272 Merge pull request #166 from cerc-io/dboreham/fix-fixturenet-status
Fix status script

Former-commit-id: fc31b44b5a
2023-01-27 08:10:32 -07:00
dboreham d677e5f369 Fix status script
Former-commit-id: 5a3bdd269d
2023-01-27 08:10:04 -07:00
dboreham 9991baa8d6 Update version
Former-commit-id: 04f61293b5
2023-01-27 07:30:14 -07:00
dboreham d033d4ff93 Merge pull request #164 from cerc-io/dboreham/fixturenet-eth-fixes
Fixes to fixturenet-eth

Former-commit-id: ecf943b593
2023-01-26 21:36:23 -07:00
dboreham f02bbee3bf Fixes to fixturenet-eth
Former-commit-id: e4229e4ceb
2023-01-26 16:47:06 -07:00
telackey bdde1b2c9e Include all eth API operation metrics. (#162)
Former-commit-id: ce0c7ee9ba
2023-01-26 13:53:02 -06:00
dboreham 96a83422e7 Merge pull request #161 from cerc-io/dboreham/run-command-in-container
Exec command inside container

Former-commit-id: 6770f7af6e
2023-01-25 23:22:57 -07:00
dboreham af03208da7 Exec command inside container
Former-commit-id: ade20fb2f5
2023-01-25 23:22:05 -07:00
dboreham 86e2407800 Update version
Former-commit-id: bf91048dbb
2023-01-25 22:47:08 -07:00
dboreham c01ff28b4f Add release description
Former-commit-id: a520cce17c
2023-01-25 22:46:37 -07:00
dboreham ec54258285 Merge pull request #159 from cerc-io/dboreham/enhanced-publish-script
Better publish scripts

Former-commit-id: e1421045eb
2023-01-25 22:40:24 -07:00
dboreham 1f2ee33b42 Update version
Former-commit-id: 0b08d7ba65
2023-01-25 22:38:25 -07:00
dboreham a2b700727c Better publish scripts
Former-commit-id: 7fdf9bc4db
2023-01-25 22:37:43 -07:00
dboreham fa8ba7f9ef Merge pull request #158 from cerc-io/dboreham/publish-package
Basic GitHub release publishing script

Former-commit-id: a144dde4c1
2023-01-25 14:34:19 -07:00
dboreham dd0b8ae81f Basic GitHub release publishing script
Former-commit-id: 465d16e50f
2023-01-25 14:28:41 -07:00
telackey b5c7ad114c Integrate grafana/prometheus with fixturenet-eth. (#156)
* Integrate grafana/prometheus with fixturenet-eth.

* Integrate grafana/prometheus with fixturenet-eth.

* Revert port change

* EOL

* EOL

* Simplify ipld-eth-server config.

Former-commit-id: c279bd49a4
2023-01-25 11:50:08 -06:00
dboreham d0d29717e1 Update version
Former-commit-id: 080451f3df
2023-01-24 08:27:12 -07:00
dboreham 368091e125 Merge pull request #155 from cerc-io/dboreham/stack-test
Add stack tests

Former-commit-id: 8b19e0f194
2023-01-24 08:19:51 -07:00
dboreham 27195fc977 Add stack tests
Former-commit-id: c80ed2b245
2023-01-24 08:19:24 -07:00
Zach 91ad0f39e6 Merge pull request #144 from cerc-io/docs-updates
Docs updates

Former-commit-id: 3cef5eb262
2023-01-24 09:14:45 -05:00
dboreham b47b2200ce Merge pull request #154 from cerc-io/dboreham/port-command
Implement deploy-system port command

Former-commit-id: 208df97c96
2023-01-23 22:12:14 -07:00
David Boreham 2e291b3e4c Add trailing newline
Former-commit-id: 5f22afc78b
2023-01-23 22:11:24 -07:00
David Boreham 629e484c30 Implement deploy-system port command
Former-commit-id: ea6f932e00
2023-01-23 22:09:56 -07:00
dboreham 3d7d23b68b Merge pull request #151 from cerc-io/dboreham/build-foundry-local
Build foundry container locally

Former-commit-id: 9464c47163
2023-01-23 17:09:11 -07:00
dboreham c6c9e229d2 Revert debugging code
Former-commit-id: 14e57abfbf
2023-01-23 17:07:23 -07:00
telackey c77cc4e111 Update keycloak to include X-User-Id header. (#147)
Former-commit-id: 65cdba7705
2023-01-23 10:39:15 -06:00
dboreham 26c654f3ef Merge pull request #153 from cerc-io/dboreham/add-guile-to-gerbil-builder
Add guile to gertbil builder container

Former-commit-id: 5b9b259494
2023-01-23 08:00:46 -07:00
dboreham b6a84db6a2 Add guile to gertbil builder container
Former-commit-id: c7970d09b3
2023-01-23 08:00:24 -07:00
dboreham e7d31e78ad Merge pull request #150 from cerc-io/dboreham/gerbil-builder
Add gerbil builder container

Former-commit-id: f982a7632e
2023-01-23 07:24:55 -07:00
dboreham 86b7e6957c Enhance readme
Former-commit-id: 4ab84eb7ca
2023-01-23 07:24:27 -07:00
dboreham 7812490434 Merge pull request #152 from cerc-io/dboreham/fix-fixturenet-eth-stack
Fix stack file

Former-commit-id: fb8eabb28e
2023-01-23 06:52:27 -07:00
dboreham 161cd37b9c Fix stack file
Former-commit-id: a12e06dcbb
2023-01-23 06:51:51 -07:00
David Boreham e183e2a880 Build foundry container locally
Former-commit-id: f3f4033937
2023-01-22 22:19:23 -07:00
dboreham 7bd8045d6e Fix bugs
Former-commit-id: 46bcc2f882
2023-01-22 22:12:05 -07:00
dboreham b2268a6518 Add gerbil builder container
Former-commit-id: 8843b894e2
2023-01-22 21:50:50 -07:00
zramsay dfef77f35f update CONTRIBUTING
Former-commit-id: d3f63b8975
2023-01-20 11:35:57 -05:00
zramsay 78cd4e2e3e fixup spec
Former-commit-id: 00c1515807
2023-01-20 11:21:14 -05:00
zramsay dca9a36633 stack diagram: fix diagram & compress img
Former-commit-id: 4c84896090
2023-01-20 11:04:24 -05:00
Zach e799c9eaef Merge pull request #138 from cerc-io/fix-pods
Fix pods (db -> ipld-eth-db)

Former-commit-id: 59a9714d19
2023-01-20 09:38:54 -05:00
zramsay 42dac0e712 db -> ipld-eth-db
Former-commit-id: e9c24a0b82
2023-01-20 08:03:54 -05:00
dboreham a44c063e5a Update version
Former-commit-id: c949fe091f
2023-01-19 14:21:33 -07:00
dboreham 6ad2684de3 Update version
Former-commit-id: 1cdf0f3015
2023-01-19 14:21:13 -07:00
dboreham 5e7b51ee6a Update version
Former-commit-id: 6ae86dbcec
2023-01-19 14:19:39 -07:00
dboreham 50103fcc9c Merge pull request #137 from cerc-io/dboreham/missing-stack-error
Error check stack config

Former-commit-id: edbf674df7
2023-01-19 14:14:34 -07:00
dboreham edb7346f31 Error check stack config
Former-commit-id: d454a4ffc1
2023-01-19 14:13:57 -07:00
dboreham 377d18d540 Merge pull request #136 from cerc-io/dboreham/small-fixes
Some small fixes

Former-commit-id: cefe10d124
2023-01-19 13:39:06 -07:00
dboreham 6ed90536cf Implement continue on error for npm builds
Former-commit-id: 34aa613d04
2023-01-19 13:38:04 -07:00
dboreham 7d00228ca2 Remove result code check
Former-commit-id: 6faa933d42
2023-01-19 13:30:01 -07:00
dboreham 8f9f23b1c4 Implement stop on error building containers
Former-commit-id: bbbb57ec06
2023-01-19 13:20:53 -07:00
dboreham 429e04f81d Catch docker run exceptions
Former-commit-id: 68c7f91052
2023-01-19 13:00:35 -07:00
dboreham 7a9926b695 Remove extraneous stderr output
Former-commit-id: 3b5efc8f0f
2023-01-19 13:00:06 -07:00
dboreham 0372504f44 Merge pull request #135 from cerc-io/dboreham/fix-npm-builds
Fix various npm build issues

Former-commit-id: d94ed55642
2023-01-19 11:34:19 -07:00
dboreham b29537ad7c Fix various npm build issues
Former-commit-id: 9fb96d8458
2023-01-19 11:33:34 -07:00
dboreham 1cf58c900e Update version
Former-commit-id: d05a47946a
2023-01-18 22:07:04 -07:00
dboreham c6df9ae0c1 Merge pull request #131 from cerc-io/dboreham/stack-for-npm-build
Stack for build-npms

Former-commit-id: 683341a66f
2023-01-18 22:02:49 -07:00
dboreham f1cd13d988 Stack for build-npms
Former-commit-id: 0b8b3123fe
2023-01-18 22:01:55 -07:00
dboreham edc24e4fc8 Merge pull request #130 from cerc-io/dboreham/stack-for-deploy-system
Implement stack for deploy-system

Former-commit-id: 7740dccf4c
2023-01-18 15:37:41 -07:00
dboreham 533ed4ee9b Implement stack for deploy-system
Former-commit-id: 6bf413e002
2023-01-18 15:37:12 -07:00
dboreham ba5eecaada Merge pull request #129 from cerc-io/dboreham/stack-for-build-containers
Implement stack for container build

Former-commit-id: d1f9c3d152
2023-01-18 15:28:53 -07:00
dboreham 5f73a93f5f Implement stack for container build
Former-commit-id: d5875954b8
2023-01-18 15:27:52 -07:00
dboreham 135295f0f9 Update version
Former-commit-id: 5e2df891cf
2023-01-17 22:43:07 -07:00
dboreham 5b4f935afd Merge pull request #128 from cerc-io/dboreham/stack-for-setup-repositories
Implement stack config file for setup-repositories

Former-commit-id: 4e1366df60
2023-01-17 22:40:12 -07:00
dboreham 5a4220ff41 Update version info
Former-commit-id: b0947081de
2023-01-17 22:38:30 -07:00
dboreham a60fb08c8a Make code compatible with Pyton 3.8
Former-commit-id: 04a3049162
2023-01-17 22:25:04 -07:00
dboreham 2b15eff104 Initial implementation of stack
Former-commit-id: 1d7128c6e1
2023-01-17 16:05:50 -07:00
dboreham fc3bcdef74 Merge pull request #127 from cerc-io/dboreham/update-version
Update version

Former-commit-id: 65f5382bfe
2023-01-17 13:52:33 -07:00
dboreham 500c481d6b Update version
Former-commit-id: cf3120d6c2
2023-01-17 13:52:00 -07:00
telackey 08d5c22f32 Enable metrics endpoint in fixturenet.
Former-commit-id: 0ea29bc480
2023-01-17 12:04:28 -06:00
Zach 8fb71711bc Merge pull request #122 from cerc-io/update-readme-67
Update readme

Former-commit-id: 5e7db36c75
2023-01-17 09:27:42 -05:00
dboreham 32b4c00261 Merge pull request #124 from cerc-io/dboreham/fix-fixturenet-geth-build
Fix fixturenet container builds in shiv mode
2023-01-16 21:58:03 -07:00
dboreham 71425b93f6 Package deep enough into the data tree to get all the files that are there 2023-01-16 21:56:07 -07:00
zramsay b90e4ad6cd update readme
Former-commit-id: 70723dd6d4
2023-01-16 07:27:52 -05:00
telackey b13300ca81 Add CERC_STATEDIFF_DB_LOG_STATEMENTS=true|false option. (#120) 2023-01-13 16:33:59 -06:00
telackey 6396de1ecf Improvements for building/deploying geth. (#119)
* Improvements for building/deploying geth.

* Improvements for building/deploying geth.
2023-01-12 11:37:23 -06:00
dboreham 18a7e59a8a Merge pull request #116 from cerc-io/dboreham/fix-imports
Fix imports
2023-01-11 21:57:26 -07:00
David Boreham 0a66b7e9d2 Fix odd import problem 2023-01-11 21:56:05 -07:00
David Boreham 7edfa1bb29 Add import-resources dependency 2023-01-11 21:01:48 -07:00
telackey 8e184f509d Add remote debugging support to fixturenet-geth. (#113)
* Add remote debugging support to fixturenet-geth.
2023-01-11 12:54:22 -06:00
dboreham 5697a39640 Merge pull request #112 from cerc-io/dboreham/version-command
Version command
2023-01-10 14:32:56 -07:00
dboreham df469786ca Add version to smoke test 2023-01-10 14:32:12 -07:00
dboreham d315941f21 Version command implemented 2023-01-10 14:23:59 -07:00
dboreham ae7a17cecd Make script file names consistent 2023-01-10 14:10:22 -07:00
dboreham 261b513d68 Initial implementation 2023-01-10 14:09:38 -07:00
dboreham 9278d09096 Merge pull request #111 from cerc-io/dboreham/simple-test
A simple test
2023-01-10 10:25:14 -07:00
dboreham b8b83768d8 Add trailing newline 2023-01-10 10:24:48 -07:00
dboreham ddd2ea2724 Add a simple smoke test and shiv build script 2023-01-10 10:24:04 -07:00
Zach 787a5228ea Merge pull request #107 from cerc-io/zramsay-patch-1
Update repository-list.txt (rebrand)
2023-01-10 10:18:31 -05:00
dboreham 2ea87a3a80 Merge pull request #108 from cerc-io/telackey/path
fix: import Path
2023-01-10 08:09:24 -07:00
telackey 8669a822df fix: import Path 2023-01-09 21:43:04 -06:00
Zach 738aa1907b Update repository-list.txt 2023-01-09 20:03:09 -05:00
Zach 4b1ca04620 Merge pull request #104 from cerc-io/zramsay-patch-2
Fix build; laconic-cns-cli -> laconic-registry-cli
2023-01-09 17:21:36 -05:00
zramsay 48dc431704 fix laconicd stack README 2023-01-09 15:39:23 -05:00
dboreham 2eee4d1fb2 Merge pull request #105 from cerc-io/dboreham/fix-env-var-error
Default the npm token env var
2023-01-09 13:37:48 -07:00
Zach 8e5d0d6c58 Update stack.yml 2023-01-09 15:35:03 -05:00
dboreham 9d9eb791d1 Default the npm token env var 2023-01-09 13:34:02 -07:00
dboreham 4494f2ca62 Merge pull request #99 from cerc-io/dboreham/fix-shiv
Refactor for shiv package
2023-01-08 20:12:33 -07:00
dboreham f04726f08d Fix remaining commands 2023-01-08 20:11:30 -07:00
dboreham b4b1ec3df8 Try another way to access packaged files 2023-01-08 20:08:35 -07:00
dboreham 0435a71b5e Refactor for shiv package 2023-01-07 21:02:14 -07:00
dboreham c99687cc80 Switch to Python3 importlib 2023-01-07 20:44:08 -07:00
dboreham cd2735fa24 Merge pull request #97 from cerc-io/dboreham/fix-db-pod-name
Rename compose file
2023-01-06 16:12:31 -07:00
dboreham 9b2a58e3bd Rename compose file 2023-01-06 16:11:20 -07:00
dboreham dcefebc721 Merge pull request #94 from cerc-io/dboreham/registry-cli-container
Build registry cli container
2023-01-06 15:59:02 -07:00
dboreham 82755a27f2 Build a CLI container 2023-01-06 15:57:14 -07:00
dboreham 318d70020e Add build environment 2023-01-06 13:54:03 -07:00
dboreham 6e67a59251 Initial implementation 2023-01-06 13:44:52 -07:00
dboreham 92743d7390 Rename directory 2023-01-06 13:13:56 -07:00
dboreham 731a9f2072 Merge pull request #92 from cerc-io/dboreham/check-npm-version-exists
Add test for package version already exists
2023-01-06 10:21:59 -07:00
dboreham d77a42b36f Add test for package version already exists 2023-01-06 10:20:18 -07:00
dboreham af1aee09ff Merge pull request #89 from cerc-io/dboreham/npm-build-command
npm build command
2023-01-06 09:33:51 -07:00
dboreham ff76cdad61 Back out debug code 2023-01-05 07:40:05 -07:00
dboreham 765db5937d Default to from-repo package version 2023-01-04 21:23:17 -07:00
dboreham 68c6eaf0b4 Use the right script 2023-01-04 20:50:23 -07:00
dboreham 073d94e288 Brand token env var 2023-01-04 20:43:13 -07:00
dboreham ee1ecbd217 Initial implementation of npm-build 2023-01-04 16:16:40 -07:00
dboreham 36f7d4ca26 Merge branch 'main' into dboreham/npm-build-command 2023-01-04 15:23:05 -07:00
dboreham fdb04d46b4 Merge pull request #88 from cerc-io/dboreham/fix-ps-command
Fix ps display for containers with no mapped ports
2023-01-04 10:39:49 -07:00
dboreham 778550754d Fix ps display for containers with no mapped ports 2023-01-04 10:39:16 -07:00
dboreham 2ba3ffac84 Add lirewine scope 2023-01-04 07:39:01 -07:00
dboreham db4899229d Merge pull request #86 from cerc-io/dboreham/build-laconic-cli
Allow building of npm packages using locally published dependencies
2023-01-03 22:40:26 -07:00
dboreham a5b1f6e107 Update readme 2023-01-03 22:38:51 -07:00
dboreham c059745af9 Working builds 2023-01-03 22:37:44 -07:00
dboreham 1b0407ae3c Add scripts to image 2023-01-03 21:39:06 -07:00
dboreham 47b7a47160 Add comments 2023-01-03 21:17:30 -07:00
dboreham 1b4b47e9a4 Add more output 2023-01-03 21:16:20 -07:00
dboreham b10b6c19f9 Use variable for local package scope 2023-01-03 21:14:35 -07:00
dboreham b6f1fd029d Add npm package build with local dependencies script 2023-01-03 21:10:53 -07:00
dboreham be889d893a Merge branch 'main' into dboreham/build-laconic-cli 2023-01-03 13:11:08 -07:00
dboreham 63378a5c7e Add redirect follow to curl command for github 2022-12-22 12:52:23 -07:00
prathamesh0 3b031329b4 Upgrade watcher-ts version in the mobymask stack (#83)
* Upgrade watcher-ts version in mobymask setup

* Change watcher db service name

* Add a clean-up step
2022-12-22 19:43:13 +05:30
prathamesh0 d51508b01d [WIP] Add a Uniswap v3 watcher-only stack (#82)
* Add a stack for uniswap watcher with info app

* Add deployment instructions

* Use docker interactive option while loading the db dumps
2022-12-22 19:30:56 +05:30
prathamesh0 27c3efabe2 Add a local stack for ERC721 watcher (#81)
* Add a stack for erc721 watcher

* Add a demo

* Avoid watcher db service and volume name conflicts across watchers

* Avoid host port conflicts across watchers

* Avoid watcher-db port conflicts
2022-12-22 13:13:59 +05:30
prathamesh0 a7221ddc24 Add a local stack for ERC20 watcher (#80)
* Add a healthcheck for ipld-eth-server

* Update ipld-eth-server ports in mobymask watcher config

* Update clique period to 5s in geth-foundry config

* Add a stack for erc20 watcher

* Add a demo for erc20 watcher

* Upgrade watcher-ts version

* Update instructions

* Pass option to pull while setting up repos
2022-12-22 11:33:39 +05:30
telackey e7296c2ce3 Add tx-spammer (#74)
* Add tx-spammer

* Update README
2022-12-21 09:59:40 -06:00
dboreham 2c2df6ebbd Remove extraneous repo
This repo was included erroneously in the original move from old-stack-orchestrator.
2022-12-20 20:37:33 -07:00
dboreham d138bb1a72 Add warning on user mode install 2022-12-20 19:15:36 -07:00
dboreham 543afe1808 Fix typo 2022-12-20 19:10:23 -07:00
telackey 8f63328d60 fixturenet-eth README (#73)
* fixturenet-eth README

* Fix bullets

* Minor edit

* Update README.md
2022-12-20 14:08:10 -06:00
telackey efbc86bdea Moved repos. (#72) 2022-12-20 14:06:48 -06:00
dboreham 23b12cc8f1 Fix typo 2022-12-19 09:44:51 -07:00
dboreham 717391d835 Add comments 2022-12-19 09:37:24 -07:00
dboreham b8c244bbdc Merge branch 'main' into dboreham/build-laconic-cli 2022-12-19 09:31:02 -07:00
telackey 8a9c1fb781 Use new repo (#68) 2022-12-16 15:57:26 -06:00
telackey 5d482658a7 Download pre-built keycloak api-key-module-0.1.jar rather than building it. (#66) 2022-12-16 14:15:56 -06:00
telackey df0bf549a2 Keycloak + nginx reverse proxy (#63)
* Example Keycloak config.

* Proxy for geth, ipld-eth-server, and lighthouse.

* Add metrics.
2022-12-14 12:59:40 -06:00
dboreham d96546a3c5 Put script into the container 2022-12-14 09:26:18 -07:00
dboreham 680f227967 Add yarn fixup script for local registry 2022-12-14 09:23:12 -07:00
dboreham c85b29c237 Update README.md 2022-12-12 14:44:43 -07:00
dboreham 8d2788d1c1 Merge pull request #62 from cerc-io/dboreham/build-ts-repos
Build js/ts projects
2022-12-12 14:42:14 -07:00
dboreham 46375082d6 Support building an npm package to gitea 2022-12-12 14:40:11 -07:00
dboreham faa6027772 Fix entrypoint 2022-12-12 12:42:07 -07:00
dboreham d6e90c2dbd Add generic entrypoint 2022-12-12 12:38:12 -07:00
dboreham c2f6544f51 Merge pull request #60 from cerc-io/dboreham/node-builder
Add js builder container
2022-12-07 11:59:47 -07:00
dboreham d0903a2780 Build js builder container 2022-12-07 11:38:32 -07:00
telackey 32edd7aea7 46: Make it possible to launch fixturenet with or without the statediff DB. (#59)
* 46: Make it possible to launch fixturenet with or without the statediff DB.

* Require the hostname as well.
2022-12-06 17:17:24 -06:00
telackey bd9aaebe3d eth-probe with fixturenet (#57)
* eth-probe with fixturenet

* Add ability to wait on geth to be up and minting blocks before launching the probe.
2022-12-06 11:10:38 -06:00
dboreham b538011a7b Merge pull request #55 from cerc-io/dboreham/display-mapped-ports
Display mapped ports, revert to ps command name
2022-11-29 21:15:10 -07:00
dboreham d87a2387e5 Display mapped ports, revert to ps command name 2022-11-29 21:14:40 -07:00
dboreham 3308328524 Fix copy/paste 2022-11-29 19:58:18 -07:00
dboreham c502aae162 Merge pull request #54 from cerc-io/dboreham/fix-verbose-output
Quiet verbose output
2022-11-29 19:56:26 -07:00
dboreham 43d59a9e28 Quiet verbose output 2022-11-29 19:54:08 -07:00
dboreham 28a3880fcf Add deploy command 2022-11-29 06:33:46 -07:00
dboreham acb06feac4 Fix typo 2022-11-29 06:29:18 -07:00
dboreham f7e9cf4ba4 Update README.md 2022-11-15 22:24:11 -07:00
dboreham b94cfb4de8 Merge pull request #51 from cerc-io/dboreham/use-git-http
Allow http for git (as the default)
2022-11-15 22:19:25 -07:00
dboreham ed4352911d Allow http for git (as the default) 2022-11-15 22:18:43 -07:00
dboreham e5c18ba77a Update README.md
Update download url version.
2022-11-15 22:06:04 -07:00
249 changed files with 9602 additions and 522 deletions
+47
View File
@@ -0,0 +1,47 @@
name: Publish
on:
push:
branches:
- main
- publish-test
jobs:
publish:
name: "Build and publish"
runs-on: ubuntu-latest
steps:
- name: "Clone project repository"
uses: actions/checkout@v3
- name: "Get build info"
id: build-info
run: |
build_tag=$(./scripts/create_build_tag_file.sh)
echo "build-tag=v${build_tag}" >> $GITHUB_OUTPUT
- name: "Install Python"
uses: cerc-io/setup-python@v4
with:
python-version: '3.8'
- name: "Print Python version"
run: python3 --version
- name: "Install shiv"
run: pip install shiv
- name: "Build local shiv package"
id: build
run: |
./scripts/build_shiv_package.sh
result_code=$?
echo "package-file=$(ls ./package/*)" >> $GITHUB_OUTPUT
exit $result_code
- name: "Stage artifact file"
run: |
cp ${{ steps.build.outputs.package-file }} ./laconic-so
- name: "Create release"
uses: cerc-io/action-gh-release@gitea-v1
with:
tag_name: ${{ steps.build-info.outputs.build-tag }}
# On the publish test branch, mark our release as a draft
# Hack using endsWith to workaround Gitea sometimes sending "publish-test" vs "refs/heads/publish-test"
draft: ${{ endsWith('publish-test', github.ref ) }}
files: ./laconic-so
+27
View File
@@ -0,0 +1,27 @@
name: Test
on:
pull_request:
branches: '*'
push:
branches: '*'
jobs:
test:
name: "Run basic test suite"
runs-on: ubuntu-latest
steps:
- name: "Clone project repository"
uses: actions/checkout@v3
- name: "Install Python"
uses: cerc-io/setup-python@v4
with:
python-version: '3.8'
- name: "Print Python version"
run: python3 --version
- name: "Install shiv"
run: pip install shiv
- name: "Build local shiv package"
run: ./scripts/build_shiv_package.sh
- name: "Run smoke tests"
run: ./tests/smoke-test/run-smoke-test.sh
+67 -183
View File
@@ -1,214 +1,98 @@
# Stack Orchestrator # Stack Orchestrator
Stack Orchestrator allows building and deployment of a Laconic stack on a single machine with minimial prerequisites. Stack Orchestrator allows building and deployment of a Laconic Stack on a single machine with minimial prerequisites. It is a Python3 CLI tool that runs on any OS with Python3 and Docker. The following diagram summarizes the relevant repositories in the Laconic Stack - and the relationship to Stack Orchestrator.
![The Stack](/docs/images/laconic-stack.png)
## Install
**To get started quickly** on a fresh Ubuntu instance (e.g, Digital Ocean); [try this script](./scripts/quick-install-ubuntu.sh). **WARNING:** always review scripts prior to running them so that you know what is happening on your machine.
For any other installation, follow along below and **adapt these instructions based on the specifics of your system.**
## Setup
### User Mode
User mode runs the orchestrator from a "binary" single-file release and does not require special Python environment setup. Use this mode unless you plan to make changes to the orchestrator source code.
#### Prerequisites
Stack Orchestrator is a Python3 CLI tool that runs on any OS with Python3 and Docker. Tested on: Ubuntu 20/22.
Ensure that the following are already installed: Ensure that the following are already installed:
1. Python3 (the stock Python3 version available in Ubuntu 20 and 22 is suitable) - [Python3](https://wiki.python.org/moin/BeginnersGuide/Download): `python3 --version` >= `3.8.10` (the Python3 shipped in Ubuntu 20+ is good to go)
``` - [Docker](https://docs.docker.com/get-docker/): `docker --version` >= `20.10.21`
$ python3 --version - [jq](https://stedolan.github.io/jq/download/): `jq --version` >= `1.5`
Python 3.8.10
```
2. Docker (Install a current version from dockerco, don't use the version from any Linux distro)
```
$ docker --version
Docker version 20.10.17, build 100c701
```
3. If installed from regular package repository (not Docker Desktop), BE AWARE that the compose plugin may need to be installed, as well.
```
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
# see https://docs.docker.com/compose/install/linux/#install-the-plugin-manually for further details
# or to install for all users.
```
#### Install
1. Download the latest release from [this page](https://github.com/cerc-io/stack-orchestrator/tags), into a suitable directory (e.g. `~/bin`):
```
$ cd ~/bin
$ curl https://github.com/cerc-io/stack-orchestrator/releases/download/v1.0.1-alpha/laconic-so
```
1. Ensure `laconic-so` is on the `PATH`
1. Verify operation:
```
$ ~/bin/laconic-so --help
Usage: python -m laconic-so [OPTIONS] COMMAND [ARGS]...
Laconic Stack Orchestrator Note: if installing docker-compose via package manager on Linux (as opposed to Docker Desktop), you must [install the plugin](https://docs.docker.com/compose/install/linux/#install-the-plugin-manually), e.g. :
Options: ```bash
--quiet mkdir -p ~/.docker/cli-plugins
--verbose curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
--dry-run chmod +x ~/.docker/cli-plugins/docker-compose
--local-stack ```
-h, --help Show this message and exit.
Commands: Next decide on a directory where you would like to put the stack-orchestrator program. Typically this would be
build-containers build the set of containers required for a complete... a "user" binary directory such as `~/bin` or perhaps `/usr/local/laconic` or possibly just the current working directory.
deploy-system deploy a stack
setup-repositories git clone the set of repositories required to build...
```
### Developer mode
Suitable for developers either modifying or debugging the orchestrator Python code:
#### Prerequisites
In addition to the binary install prerequisites listed above, the following are required:
1. Python venv package
This may or may not be already installed depending on the host OS and version. Check by running:
```
$ python3 -m venv
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] ENV_DIR [ENV_DIR ...]
venv: error: the following arguments are required: ENV_DIR
```
If the venv package is missing you should see a message indicating how to install it, for example with:
```
$ apt install python3.8-venv
```
#### Install
1. Clone this repository:
```
$ git clone (https://github.com/cerc-io/stack-orchestrator.git
```
4. Enter the project directory:
```
$ cd stack-orchestrator
```
5. Create and activate a venv:
```
$ python3 -m venv venv
$ source ./venv/bin/activate
(venv) $
```
6. Install the cli in edit mode:
```
$ pip install --editable .
```
7. Verify installation:
```
(venv) $ laconic-so
Usage: laconic-so [OPTIONS] COMMAND [ARGS]...
Laconic Stack Orchestrator Now, having selected that directory, download the latest release from [this page](https://github.com/cerc-io/stack-orchestrator/tags) into it (we're using `~/bin` below for concreteness but edit to suit if you selected a different directory). Also be sure that the destination directory exists and is writable:
Options: ```bash
--quiet curl -L -o ~/bin/laconic-so https://github.com/cerc-io/stack-orchestrator/releases/latest/download/laconic-so
--verbose ```
--dry-run
-h, --help Show this message and exit.
Commands: Give it execute permissions:
build-containers build the set of containers required for a complete... ```bash
deploy-system deploy a stack chmod +x ~/bin/laconic-so
setup-repositories git clone the set of repositories required to build... ```
```
#### Build a zipapp (single file distributable script) Ensure `laconic-so` is on the [`PATH`](https://unix.stackexchange.com/a/26059)
Use shiv to build a single file Python executable zip archive of laconic-so:
1. Install [shiv](https://github.com/linkedin/shiv):
```
$ (venv) pip install shiv
$ (venv) pip install wheel
```
1. Run shiv to create a zipapp file:
```
$ (venv) shiv -c laconic-so -o laconic-so .
```
This creates a file `./laconic-so` that is executable outside of any venv, and on other machines and OSes and architectures, and requiring only the system Python3:
1. Verify it works:
```
$ cp stack-orchetrator/laconic-so ~/bin
$ laconic-so
Usage: python -m laconic-so [OPTIONS] COMMAND [ARGS]...
Laconic Stack Orchestrator Verify operation (your version will probably be different, just check here that you see some version outut and not an error):
Options: ```
--quiet laconic-so version
--verbose Version: v1.0.27-7831078
--dry-run ```
-h, --help Show this message and exit.
Commands:
build-containers build the set of containers required for a complete...
deploy-system deploy a stack
setup-repositories git clone the set of repositories required to build...
```
### CI Mode
_write-me_
## Usage ## Usage
There are three sub-commands: `setup-repositories`, `build-containers` and `deploy-system` that are generally run in order:
Note: $ laconic-so will run the version installed to ~/bin, while ./laconic-so can be invoked to run locally built Three sub-commands: `setup-repositories`, `build-containers` and `deploy-system` are generally run in order. The following is a slim example for standing up the `erc20-watcher`. Go further with the [erc20 watcher demo](/app/data/stacks/erc20) and other pieces of the stack, within the [`stacks` directory](/app/data/stacks).
version in a checkout
### Setup Repositories ### Setup Repositories
Clones the set of git repositories necessary to build a system.
Note: the use of `ssh-agent` is recommended in order to avoid entering your ssh key passphrase for each repository. Clone the set of git repositories necessary to build a system:
```
$ laconic-so --verbose setup-repositories #this will default to ~/cerc or CERC_REPO_BASE_DIR from an env file ```bash
#$ ./laconic-so --verbose --local-stack setup-repositories #this will use cwd ../ as dev_root_path laconic-so --stack erc20 setup-repositories
``` ```
This will default to cloning git reposiories into: `~/cerc` or - if set - the environment variable `CERC_REPO_BASE_DIR`
### Build Containers ### Build Containers
Builds the set of docker container images required to run a system. It takes around 10 minutes to build all the containers from cold.
```
$ laconic-so --verbose build-containers #this will default to ~/cerc or CERC_REPO_BASE_DIR from an env file
#$ ./laconic-so --verbose --local-stack build-containers #this will use cwd ../ as dev_root_path
Build the set of docker container images required to run a system. It takes around 10 minutes to build all the containers from scratch.
```bash
laconic-so --stack erc20 build-containers
``` ```
### Deploy System ### Deploy System
Uses `docker compose` to deploy a system.
Use `---include <list of components>` to deploy a subset of all containers: Uses `docker compose` to deploy a system (with most recently built container images).
```bash
laconic-so --stack erc20 deploy-system up
``` ```
$ laconic-so --verbose deploy-system --include db-sharding,contract,ipld-eth-server,go-ethereum-foundry up
Check out he GraphQL playground here: [http://localhost:3002/graphql](http://localhost:3002/graphql)
See the [erc20 watcher demo](/app/data/stacks/erc20) to continue further.
### Cleanup
```bash
laconic-so --stack erc20 deploy-system down
``` ```
```
$ laconic-so --verbose deploy-system --include db-sharding,contract,ipld-eth-server,go-ethereum-foundry down ## Contributing
```
Note: deploy-system command interacts with most recently built container images. See the [CONTRIBUTING.md](/docs/CONTRIBUTING.md) for developer mode install.
## Platform Support ## Platform Support
Native aarm64 is _not_ currently supported. x64 emulation on ARM64 macos should work (not yet tested).
## Implementation
The orchestrator's operation is driven by files shown below. `repository-list.txt` container the list of git repositories; `container-image-list.txt` contains
the list of container image names, while `clister-list.txt` specifies the set of compose components (corresponding to individual docker-compose-xxx.yml files which may in turn specify more than one container).
Files required to build each container image are stored under `./container-build/<container-name>`
Files required at deploy-time are stored under `./config/<component-name>`
```
├── pod-list.txt
├── compose
│   ├── docker-compose-contract.yml
│   ├── docker-compose-db-sharding.yml
│   ├── docker-compose-db.yml
│   ├── docker-compose-eth-statediff-fill-service.yml
│   ├── docker-compose-go-ethereum-foundry.yml
│   ├── docker-compose-ipld-eth-beacon-db.yml
│   ├── docker-compose-ipld-eth-beacon-indexer.yml
│   ├── docker-compose-ipld-eth-server.yml
│   ├── docker-compose-lighthouse.yml
│   └── docker-compose-prometheus-grafana.yml
├── config
│   └── ipld-eth-server
├── container-build
│   ├── cerc-eth-statediff-fill-service
│   ├── cerc-go-ethereum
│   ├── cerc-go-ethereum-foundry
│   ├── cerc-ipld-eth-beacon-db
│   ├── cerc-ipld-eth-beacon-indexer
│   ├── cerc-ipld-eth-db
│   ├── cerc-ipld-eth-server
│   ├── cerc-lighthouse
│   └── cerc-test-contract
├── container-image-list.txt
├── repository-list.txt
```
_write-more-of-me_ Native aarm64 is _not_ currently supported. x64 emulation on ARM64 macos should work (not yet tested).
+71
View File
@@ -0,0 +1,71 @@
# Copyright © 2022, 2023 Cerc
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
import os
from abc import ABC, abstractmethod
from .deploy_system import get_stack_status
def get_stack(config, stack):
if stack == "package-registry":
return package_registry_stack(config, stack)
else:
return base_stack(config, stack)
class base_stack(ABC):
def __init__(self, config, stack):
self.config = config
self.stack = stack
@abstractmethod
def ensure_available(self):
pass
@abstractmethod
def get_url(self):
pass
class package_registry_stack(base_stack):
def ensure_available(self):
self.url = "<no registry url set>"
# Check if we were given an external registry URL
url_from_environment = os.environ.get("CERC_NPM_REGISTRY_URL")
if url_from_environment:
if self.config.verbose:
print(f"Using package registry url from CERC_NPM_REGISTRY_URL: {url_from_environment}")
self.url = url_from_environment
else:
# Otherwise we expect to use the local package-registry stack
# First check if the stack is up
registry_running = get_stack_status(self.config, "package-registry")
if registry_running:
# If it is available, get its mapped port and construct its URL
if self.config.debug:
print("Found local package registry stack is up")
# TODO: get url from deploy-stack
self.url = "http://gitea.local:3000/api/packages/cerc-io/npm/"
else:
# If not, print a message about how to start it and return fail to the caller
print("ERROR: The package-registry stack is not running, and no external registry specified with CERC_NPM_REGISTRY_URL")
print("ERROR: Start the local package registry with: laconic-so --stack package-registry deploy-system up")
return False
return True
def get_url(self):
return self.url
+60 -16
View File
@@ -1,4 +1,4 @@
# Copyright © 2022 Cerc # Copyright © 2022, 2023 Cerc
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by # it under the terms of the GNU Affero General Public License as published by
@@ -25,8 +25,9 @@ import sys
from decouple import config from decouple import config
import subprocess import subprocess
import click import click
import pkg_resources import importlib.resources
from .util import include_exclude_check from pathlib import Path
from .util import include_exclude_check, get_parsed_stack_config
# TODO: find a place for this # TODO: find a place for this
# epilog="Config provided either in .env or settings.ini or env vars: CERC_REPO_BASE_DIR (defaults to ~/cerc)" # epilog="Config provided either in .env or settings.ini or env vars: CERC_REPO_BASE_DIR (defaults to ~/cerc)"
@@ -43,6 +44,11 @@ def command(ctx, include, exclude):
verbose = ctx.obj.verbose verbose = ctx.obj.verbose
dry_run = ctx.obj.dry_run dry_run = ctx.obj.dry_run
local_stack = ctx.obj.local_stack local_stack = ctx.obj.local_stack
stack = ctx.obj.stack
continue_on_error = ctx.obj.continue_on_error
# See: https://stackoverflow.com/questions/25389095/python-get-path-of-root-project-structure
container_build_dir = Path(__file__).absolute().parent.joinpath("data", "container-build")
if local_stack: if local_stack:
dev_root_path = os.getcwd()[0:os.getcwd().rindex("stack-orchestrator")] dev_root_path = os.getcwd()[0:os.getcwd().rindex("stack-orchestrator")]
@@ -56,30 +62,68 @@ def command(ctx, include, exclude):
if not os.path.isdir(dev_root_path): if not os.path.isdir(dev_root_path):
print('Dev root directory doesn\'t exist, creating') print('Dev root directory doesn\'t exist, creating')
with pkg_resources.resource_stream(__name__, "data/container-image-list.txt") as container_list_file: # See: https://stackoverflow.com/a/20885799/1701505
containers = container_list_file.read().decode().splitlines() from . import data
with importlib.resources.open_text(data, "container-image-list.txt") as container_list_file:
all_containers = container_list_file.read().splitlines()
containers_in_scope = []
if stack:
stack_config = get_parsed_stack_config(stack)
containers_in_scope = stack_config['containers']
else:
containers_in_scope = all_containers
if verbose: if verbose:
print(f'Containers: {containers}') print(f'Containers: {containers_in_scope}')
if stack:
print(f"Stack: {stack}")
# TODO: make this configurable
container_build_env = {
"CERC_NPM_URL": "http://gitea.local:3000/api/packages/cerc-io/npm/",
"CERC_NPM_AUTH_TOKEN": config("CERC_NPM_AUTH_TOKEN", default="<token-not-supplied>"),
"CERC_REPO_BASE_DIR": dev_root_path,
"CERC_HOST_UID": f"{os.getuid()}",
"CERC_HOST_GID": f"{os.getgid()}",
"DOCKER_BUILDKIT": "0"
}
def process_container(container): def process_container(container):
if not quiet: if not quiet:
print(f"Building: {container}") print(f"Building: {container}")
build_script_filename = os.path.join("container-build", container.replace("/", "-"), "build.sh") build_dir = os.path.join(container_build_dir, container.replace("/", "-"))
build_script_filename = os.path.join(build_dir, "build.sh")
if verbose: if verbose:
print(f"Script: {build_script_filename}") print(f"Build script filename: {build_script_filename}")
if not os.path.exists(build_script_filename): if os.path.exists(build_script_filename):
print(f"Error, script: {build_script_filename} doesn't exist") build_command = build_script_filename
sys.exit(1) else:
if verbose:
print(f"No script file found: {build_script_filename}, using default build script")
repo_dir = container.split('/')[1]
# TODO: make this less of a hack -- should be specified in some metadata somewhere
# Check if we have a repo for this container. If not, set the context dir to the container-build subdir
repo_full_path = os.path.join(dev_root_path, repo_dir)
repo_dir_or_build_dir = repo_dir if os.path.exists(repo_full_path) else build_dir
build_command = os.path.join(container_build_dir, "default-build.sh") + f" {container}:local {repo_dir_or_build_dir}"
if not dry_run: if not dry_run:
# We need to export CERC_REPO_BASE_DIR if verbose:
build_result = subprocess.run(build_script_filename, shell=True, env={'CERC_REPO_BASE_DIR': dev_root_path}) print(f"Executing: {build_command} with environment: {container_build_env}")
# TODO: check result in build_result.returncode build_result = subprocess.run(build_command, shell=True, env=container_build_env)
print(f"Result is: {build_result}") if verbose:
print(f"Return code is: {build_result.returncode}")
if build_result.returncode != 0:
print(f"Error running build for {container}")
if not continue_on_error:
print("FATAL Error: container build failed and --continue-on-error not set, exiting")
sys.exit(1)
else:
print("****** Container Build Error, continuing because --continue-on-error is set")
else: else:
print("Skipped") print("Skipped")
for container in containers: for container in containers_in_scope:
if include_exclude_check(container, include, exclude): if include_exclude_check(container, include, exclude):
process_container(container) process_container(container)
else: else:
+165
View File
@@ -0,0 +1,165 @@
# Copyright © 2022, 2023 Cerc
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
# Builds or pulls containers for the system components
# env vars:
# CERC_REPO_BASE_DIR defaults to ~/cerc
import os
import sys
from shutil import rmtree, copytree
from decouple import config
import click
import importlib.resources
from python_on_whales import docker, DockerException
from .base import get_stack
from .util import include_exclude_check, get_parsed_stack_config
builder_js_image_name = "cerc/builder-js:local"
@click.command()
@click.option('--include', help="only build these packages")
@click.option('--exclude', help="don\'t build these packages")
@click.pass_context
def command(ctx, include, exclude):
'''build the set of npm packages required for a complete stack'''
quiet = ctx.obj.quiet
verbose = ctx.obj.verbose
dry_run = ctx.obj.dry_run
local_stack = ctx.obj.local_stack
debug = ctx.obj.debug
stack = ctx.obj.stack
continue_on_error = ctx.obj.continue_on_error
_ensure_prerequisites()
# build-npms depends on having access to a writable package registry
# so we check here that it is available
package_registry_stack = get_stack(ctx.obj, "package-registry")
registry_available = package_registry_stack.ensure_available()
if not registry_available:
print("FATAL: no npm registry available for build-npms command")
sys.exit(1)
npm_registry_url = package_registry_stack.get_url()
npm_registry_url_token = config("CERC_NPM_AUTH_TOKEN", default=None)
if not npm_registry_url_token:
print("FATAL: CERC_NPM_AUTH_TOKEN is not defined")
sys.exit(1)
if local_stack:
dev_root_path = os.getcwd()[0:os.getcwd().rindex("stack-orchestrator")]
print(f'Local stack dev_root_path (CERC_REPO_BASE_DIR) overridden to: {dev_root_path}')
else:
dev_root_path = os.path.expanduser(config("CERC_REPO_BASE_DIR", default="~/cerc"))
build_root_path = os.path.join(dev_root_path, "build-trees")
if verbose:
print(f'Dev Root is: {dev_root_path}')
if not os.path.isdir(dev_root_path):
print('Dev root directory doesn\'t exist, creating')
os.makedirs(dev_root_path)
if not os.path.isdir(dev_root_path):
print('Build root directory doesn\'t exist, creating')
os.makedirs(build_root_path)
# See: https://stackoverflow.com/a/20885799/1701505
from . import data
with importlib.resources.open_text(data, "npm-package-list.txt") as package_list_file:
all_packages = package_list_file.read().splitlines()
packages_in_scope = []
if stack:
stack_config = get_parsed_stack_config(stack)
# TODO: syntax check the input here
packages_in_scope = stack_config['npms']
else:
packages_in_scope = all_packages
if verbose:
print(f'Packages: {packages_in_scope}')
def build_package(package):
if not quiet:
print(f"Building npm package: {package}")
repo_dir = package
repo_full_path = os.path.join(dev_root_path, repo_dir)
# Copy the repo and build that to avoid propagating JS tooling file changes back into the cloned repo
repo_copy_path = os.path.join(build_root_path, repo_dir)
# First delete any old build tree
if os.path.isdir(repo_copy_path):
if verbose:
print(f"Deleting old build tree: {repo_copy_path}")
if not dry_run:
rmtree(repo_copy_path)
# Now copy the repo into the build tree location
if verbose:
print(f"Copying build tree from: {repo_full_path} to: {repo_copy_path}")
if not dry_run:
copytree(repo_full_path, repo_copy_path)
build_command = ["sh", "-c", f"cd /workspace && build-npm-package-local-dependencies.sh {npm_registry_url}"]
if not dry_run:
if verbose:
print(f"Executing: {build_command}")
# Originally we used the PEP 584 merge operator:
# envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token} | ({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
# but that isn't available in Python 3.8 (default in Ubuntu 20) so for now we use dict.update:
envs = {"CERC_NPM_AUTH_TOKEN": npm_registry_url_token}
envs.update({"CERC_SCRIPT_DEBUG": "true"} if debug else {})
try:
docker.run(builder_js_image_name,
remove=True,
interactive=True,
tty=True,
user=f"{os.getuid()}:{os.getgid()}",
envs=envs,
# TODO: detect this host name in npm_registry_url rather than hard-wiring it
add_hosts=[("gitea.local", "host-gateway")],
volumes=[(repo_copy_path, "/workspace")],
command=build_command
)
# Note that although the docs say that build_result should contain
# the command output as a string, in reality it is always the empty string.
# Since we detect errors via catching exceptions below, we can safely ignore it here.
except DockerException as e:
print(f"Error executing build for {package} in container:\n {e}")
if not continue_on_error:
print("FATAL Error: build failed and --continue-on-error not set, exiting")
sys.exit(1)
else:
print("****** Build Error, continuing because --continue-on-error is set")
else:
print("Skipped")
for package in packages_in_scope:
if include_exclude_check(package, include, exclude):
build_package(package)
else:
if verbose:
print(f"Excluding: {package}")
def _ensure_prerequisites():
# Check that the builder-js container is available and
# Tell the user how to build it if not
images = docker.image.list(builder_js_image_name)
if len(images) == 0:
print(f"FATAL: builder image: {builder_js_image_name} is required but was not found")
print("Please run this command to create it: laconic-so --stack build-support build-containers")
sys.exit(1)
View File
@@ -0,0 +1,59 @@
version: '3.2'
services:
eth-probe-db:
restart: always
image: timescale/timescaledb:latest-pg14
environment:
POSTGRES_USER: "probe"
POSTGRES_DB: "probe"
POSTGRES_PASSWORD: "probe"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "5432"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
volumes:
- ../../eth-probe/db/schema.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- 5432
eth-probe-mq:
restart: always
image: cerc/eth-probe:local
environment:
MODE: "mq"
PROBE_DEV: "false"
PGPORT: 5432
PGPASSWORD: "probe"
DB_USER: "probe"
PROBE_DB_NAME: "probe"
PROBE_DB_LOCATION: "eth-probe-db"
MQ_HOST: "0.0.0.0"
MQ_PORT: 33333
DEBUG: "vulcanize:*,cerc:*"
healthcheck:
test: [ "CMD", "nc", "-v", "localhost", "33333" ]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
depends_on:
eth-probe-db:
condition: service_healthy
eth-probe-probe:
restart: always
image: cerc/eth-probe:local
environment:
MODE: "probe"
PROBE_DEV: "false"
MQ_HOST: "eth-probe-mq"
MQ_PORT: 33333
PROBE_ID: 0
GETH_HOST: "fixturenet-eth-geth-1"
GETH_MIN_BLOCK: 5
GETHJSON_URL: "http://fixturenet-eth-geth-1:9898/geth.json"
DEBUG: "vulcanize:*,cerc:*,-vulcanize:sniffer:dpt:error"
depends_on:
eth-probe-mq:
condition: service_healthy
@@ -0,0 +1,23 @@
version: "3.2"
services:
prometheus:
restart: always
image: prom/prometheus
depends_on:
fixturenet-eth-geth-1:
condition: service_healthy
volumes:
- ../config/fixturenet-eth-metrics/prometheus/etc:/etc/prometheus
ports:
- "9090"
grafana:
restart: always
image: grafana/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=changeme6325
volumes:
- ../config/fixturenet-eth-metrics/grafana/etc/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- ../config/fixturenet-eth-metrics/grafana/etc/provisioning/datasources:/etc/grafana/provisioning/datasources
- ../config/fixturenet-eth-metrics/grafana/etc/dashboards:/etc/grafana/dashboards
ports:
- "3000"
@@ -8,12 +8,24 @@ services:
environment: environment:
RUN_BOOTNODE: "true" RUN_BOOTNODE: "true"
image: cerc/fixturenet-eth-geth:local image: cerc/fixturenet-eth-geth:local
ports:
- "9898"
- "30303"
fixturenet-eth-geth-1: fixturenet-eth-geth-1:
hostname: fixturenet-eth-geth-1 hostname: fixturenet-eth-geth-1
cap_add:
- SYS_PTRACE
environment:
CERC_REMOTE_DEBUG: "true"
CERC_RUN_STATEDIFF: "detect"
CERC_STATEDIFF_DB_NODE_ID: 1
CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG}
env_file: env_file:
- ../config/fixturenet-eth/fixturenet-eth.env - ../config/fixturenet-eth/fixturenet-eth.env
image: cerc/fixturenet-eth-geth:local image: cerc/fixturenet-eth-geth:local
volumes:
- fixturenet_geth_accounts:/opt/testnet/build/el
healthcheck: healthcheck:
test: ["CMD", "nc", "-v", "localhost", "8545"] test: ["CMD", "nc", "-v", "localhost", "8545"]
interval: 30s interval: 30s
@@ -24,12 +36,11 @@ services:
- fixturenet-eth-bootnode-geth - fixturenet-eth-bootnode-geth
ports: ports:
- "8545" - "8545"
- "40000"
- "6060"
fixturenet-eth-geth-2: fixturenet-eth-geth-2:
hostname: fixturenet-eth-geth-2 hostname: fixturenet-eth-geth-2
environment:
CERC_RUN_STATEDIFF: "true"
CERC_STATEDIFF_DB_NODE_ID: 2
healthcheck: healthcheck:
test: ["CMD", "nc", "-v", "localhost", "8545"] test: ["CMD", "nc", "-v", "localhost", "8545"]
interval: 30s interval: 30s
@@ -40,7 +51,6 @@ services:
- ../config/fixturenet-eth/fixturenet-eth.env - ../config/fixturenet-eth/fixturenet-eth.env
image: cerc/fixturenet-eth-geth:local image: cerc/fixturenet-eth-geth:local
depends_on: depends_on:
- migrations
- fixturenet-eth-bootnode-geth - fixturenet-eth-bootnode-geth
fixturenet-eth-bootnode-lighthouse: fixturenet-eth-bootnode-lighthouse:
@@ -71,7 +81,7 @@ services:
condition: service_healthy condition: service_healthy
ports: ports:
- "8001" - "8001"
fixturenet-eth-lighthouse-2: fixturenet-eth-lighthouse-2:
hostname: fixturenet-eth-lighthouse-2 hostname: fixturenet-eth-lighthouse-2
healthcheck: healthcheck:
@@ -93,3 +103,6 @@ services:
condition: service_started condition: service_started
fixturenet-eth-geth-2: fixturenet-eth-geth-2:
condition: service_healthy condition: service_healthy
volumes:
fixturenet_geth_accounts:
@@ -0,0 +1,6 @@
services:
laconic-console:
restart: unless-stopped
image: cerc/laconic-console-host:local
ports:
- "80"
@@ -5,17 +5,21 @@ services:
image: cerc/laconicd:local image: cerc/laconicd:local
command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"] command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"]
volumes: volumes:
# TODO: look at folding this script into the container # TODO: look at folding these scripts into the container
- ../config/fixturenet-laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh - ../config/fixturenet-laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh
- ../config/fixturenet-laconicd/export-mykey.sh:/docker-entrypoint-scripts.d/export-mykey.sh
# TODO: determine which of the ports below is really needed # TODO: determine which of the ports below is really needed
ports: ports:
- "6060" - "6060"
- "26657" - "26657"
- "26656" - "26656"
- "9473" - "9473:9473"
- "8545" - "8545"
- "8546" - "8546"
- "9090" - "9090"
- "9091" - "9091"
- "1317" - "1317"
cli:
image: cerc/laconic-registry-cli:local
volumes:
- ../config/fixturenet-laconicd/registry-cli-config-template.yml:/registry-cli-config-template.yml
@@ -0,0 +1,116 @@
version: '3.7'
services:
# Generates and funds the accounts required when setting up the L2 chain (outputs to volume l2_accounts)
# Creates / updates the configuration for L1 contracts deployment
# Deploys the L1 smart contracts (outputs to volume l1_deployment)
fixturenet-optimism-contracts:
hostname: fixturenet-optimism-contracts
image: cerc/optimism-contracts:local
env_file:
- ../config/fixturenet-optimism/l1-params.env
# Waits for L1 endpoint to be up before running the script
command: |
"./wait-for-it.sh -h $${L1_HOST} -p $${L1_PORT} -s -t 60 -- ./run.sh"
volumes:
- ../config/wait-for-it.sh:/app/packages/contracts-bedrock/wait-for-it.sh
- ../container-build/cerc-optimism-contracts/hardhat-tasks/verify-contract-deployment.ts:/app/packages/contracts-bedrock/tasks/verify-contract-deployment.ts
- ../container-build/cerc-optimism-contracts/hardhat-tasks/rekey-json.ts:/app/packages/contracts-bedrock/tasks/rekey-json.ts
- ../container-build/cerc-optimism-contracts/hardhat-tasks/send-balance.ts:/app/packages/contracts-bedrock/tasks/send-balance.ts
- ../config/fixturenet-optimism/optimism-contracts/update-config.js:/app/packages/contracts-bedrock/update-config.js
- ../config/fixturenet-optimism/optimism-contracts/run.sh:/app/packages/contracts-bedrock/run.sh
- fixturenet_geth_accounts:/geth-accounts:ro
- l2_accounts:/l2-accounts
- l1_deployment:/app/packages/contracts-bedrock
extra_hosts:
- "host.docker.internal:host-gateway"
# Generates the config files required for L2 (outputs to volume l2_config)
op-node-l2-config-gen:
image: cerc/optimism-op-node:local
depends_on:
fixturenet-optimism-contracts:
condition: service_completed_successfully
env_file:
- ../config/fixturenet-optimism/l1-params.env
volumes:
- ../config/fixturenet-optimism/generate-l2-config.sh:/app/generate-l2-config.sh
- l1_deployment:/contracts-bedrock:ro
- l2_config:/app
command: ["sh", "/app/generate-l2-config.sh"]
extra_hosts:
- "host.docker.internal:host-gateway"
# Initializes and runs the L2 execution client (outputs to volume l2_geth_data)
op-geth:
image: cerc/optimism-l2geth:local
depends_on:
op-node-l2-config-gen:
condition: service_started
volumes:
- ../config/fixturenet-optimism/run-op-geth.sh:/run-op-geth.sh
- l2_config:/op-node:ro
- l2_accounts:/l2-accounts:ro
- l2_geth_data:/datadir
entrypoint: "sh"
command: "/run-op-geth.sh"
ports:
- "0.0.0.0:8545:8545"
healthcheck:
test: ["CMD", "nc", "-vz", "localhost:8545"]
interval: 30s
timeout: 10s
retries: 10
start_period: 10s
# Runs the L2 consensus client (Sequencer node)
op-node:
env_file:
- ../config/fixturenet-optimism/l1-params.env
depends_on:
op-geth:
condition: service_healthy
image: cerc/optimism-op-node:local
volumes:
- ../config/fixturenet-optimism/run-op-node.sh:/app/run-op-node.sh
- l2_config:/op-node-data:ro
- l2_accounts:/l2-accounts:ro
command: ["sh", "/app/run-op-node.sh"]
ports:
- "0.0.0.0:8547:8547"
healthcheck:
test: ["CMD", "nc", "-vz", "localhost:8547"]
interval: 30s
timeout: 10s
retries: 10
start_period: 10s
extra_hosts:
- "host.docker.internal:host-gateway"
# Runs the batcher (takes transactions from the Sequencer and publishes them to L1)
op-batcher:
env_file:
- ../config/fixturenet-optimism/l1-params.env
depends_on:
op-node:
condition: service_healthy
op-geth:
condition: service_healthy
image: cerc/optimism-op-batcher:local
volumes:
- ../config/wait-for-it.sh:/wait-for-it.sh
- ../config/fixturenet-optimism/run-op-batcher.sh:/run-op-batcher.sh
- l2_accounts:/l2-accounts:ro
entrypoint: ["sh", "-c"]
# Waits for L1 endpoint to be up before running the batcher
command: |
"/wait-for-it.sh -h $${L1_HOST} -p $${L1_PORT} -s -t 60 -- /run-op-batcher.sh"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
fixturenet_geth_accounts:
l1_deployment:
l2_accounts:
l2_config:
l2_geth_data:
@@ -0,0 +1,8 @@
# Add-on pod to include foundry tooling within a fixturenet
services:
foundry:
image: cerc/foundry:local
command: ["while :; do sleep 600; done"]
volumes:
- ../config/foundry/foundry.toml:/foundry.toml
- ./foundry/workspace:/workspace
@@ -8,7 +8,7 @@ services:
condition: service_healthy condition: service_healthy
image: cerc/go-ethereum-foundry:local image: cerc/go-ethereum-foundry:local
healthcheck: healthcheck:
test: ["CMD", "nc", "-v", "localhost", "8545"] test: ["CMD", "nc", "-vz", "localhost", "8545"]
interval: 30s interval: 30s
timeout: 3s timeout: 3s
retries: 10 retries: 10
@@ -20,14 +20,27 @@ services:
DATABASE_USER: "vdbm" DATABASE_USER: "vdbm"
DATABASE_PASSWORD: "password" DATABASE_PASSWORD: "password"
ETH_CHAIN_ID: 99 ETH_CHAIN_ID: 99
ETH_FORWARD_ETH_CALLS: $eth_forward_eth_calls ETH_FORWARD_ETH_CALLS: "false"
ETH_PROXY_ON_ERROR: $eth_proxy_on_error ETH_FORWARD_GET_STORAGE_AT: "false"
ETH_HTTP_PATH: $eth_http_path ETH_PROXY_ON_ERROR: "false"
METRICS: "true"
PROM_HTTP: "true"
PROM_HTTP_ADDR: "0.0.0.0"
PROM_HTTP_PORT: "8090"
LOGRUS_LEVEL: "debug"
CERC_REMOTE_DEBUG: "true"
volumes: volumes:
- type: bind - type: bind
source: ../config/ipld-eth-server/chain.json source: ../config/ipld-eth-server/chain.json
target: /tmp/chain.json target: /tmp/chain.json
ports: ports:
- "127.0.0.1:8081:8081" - "8081"
- "127.0.0.1:8082:8082" - "8082"
- "8090"
- "40000"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "8081"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
@@ -0,0 +1,45 @@
version: '3.8'
services:
keycloak-db:
image: postgres:14-alpine
env_file:
- ../config/keycloak/keycloak.env
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "5432"]
interval: 30s
timeout: 10s
retries: 10
start_period: 3s
ports:
- 5432
keycloak:
image: cerc/keycloak:local
env_file:
- ../config/keycloak/keycloak.env
environment:
JAVA_OPTS_APPEND: "-Dkeycloak.migration.action=import -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=/import -Dkeycloak.migration.strategy=IGNORE_EXISTING"
volumes:
- ../config/keycloak/import:/import
ports:
- 8080
command: ["start"]
depends_on:
keycloak-db:
condition: service_healthy
keycloak-nginx:
image: nginx:1.23-alpine
restart: always
volumes:
- ../config/keycloak/nginx:/etc/nginx/conf.d
ports:
- 80
depends_on:
- keycloak
keycloak-nginx-prometheus-exporter:
image: nginx/nginx-prometheus-exporter
restart: always
environment:
- SCRAPE_URI=http://keycloak-nginx:80/stub_status
depends_on:
- keycloak-nginx
+13
View File
@@ -0,0 +1,13 @@
version: "3.2"
# See: https://docs.ipfs.tech/install/run-ipfs-inside-docker/#set-up
services:
ipfs:
image: ipfs/kubo:master-2023-02-20-714a968
restart: always
volumes:
- ./ipfs/import:/import
- ./ipfs/data:/data/ipfs
ports:
- "8080"
- "4001"
- "5001"
@@ -0,0 +1,31 @@
version: '3.2'
services:
# Builds and serves the MobyMask react-app
mobymask-app:
image: cerc/mobymask-ui:local
env_file:
- ../config/watcher-mobymask-v2/mobymask-params.env
# Waits for watcher server to be up before app build
# Required when running with watcher stack to get deployed contract address
command:
- sh
- -c
- ./wait-for-it.sh -h $${WATCHER_HOST} -p $${WATCHER_PORT} -s -t 0 -- ./mobymask-app-start.sh
volumes:
- ../config/wait-for-it.sh:/app/wait-for-it.sh
- ../config/watcher-mobymask-v2/mobymask-app-config.json:/app/src/mobymask-app-config.json
- ../config/watcher-mobymask-v2/mobymask-app-start.sh:/app/mobymask-app-start.sh
- mobymask_deployment:/server
ports:
- "0.0.0.0:3002:3000"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "3000"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
shm_size: '1GB'
volumes:
mobymask_deployment:
@@ -0,0 +1,21 @@
version: '3.2'
services:
peer-test-app:
# Builds and serves the peer-test react-app
image: cerc/react-peer:local
working_dir: /app/packages/test-app
env_file:
- ../config/watcher-mobymask-v2/mobymask-params.env
command: ["sh", "./test-app-start.sh"]
volumes:
- ../config/watcher-mobymask-v2/test-app-config.json:/app/packages/test-app/src/test-app-config.json
- ../config/watcher-mobymask-v2/test-app-start.sh:/app/packages/test-app/test-app-start.sh
ports:
- "0.0.0.0:3003:3000"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "3000"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
@@ -3,3 +3,5 @@ services:
test: test:
image: cerc/test-container:local image: cerc/test-container:local
restart: always restart: always
ports:
- "80"
@@ -0,0 +1,18 @@
version: '3.2'
services:
tx-spammer:
restart: always
image: cerc/tx-spammer:local
env_file:
- ../config/tx-spammer/tx-spammer.env
environment:
ACCOUNTS_CSV_URL: http://fixturenet-eth-bootnode-geth:9898/accounts.csv
ETH_HTTP_PATH: http://fixturenet-eth-geth-1:8545
LOG_LEVEL: debug
SPAMMER_COMMAND: autoSend
depends_on:
fixturenet-eth-bootnode-geth:
condition: service_started
fixturenet-eth-geth-1:
condition: service_healthy
@@ -0,0 +1,49 @@
version: '3.2'
services:
erc20-watcher-db:
restart: unless-stopped
image: postgres:14-alpine
environment:
- POSTGRES_USER=vdbm
- POSTGRES_MULTIPLE_DATABASES=erc20-watcher,erc20-watcher-job-queue
- POSTGRES_EXTENSION=erc20-watcher-job-queue:pgcrypto
- POSTGRES_PASSWORD=password
volumes:
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
- erc20_watcher_db_data:/var/lib/postgresql/data
ports:
- "0.0.0.0:15433:5432"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "5432"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
erc20-watcher:
restart: unless-stopped
depends_on:
ipld-eth-server:
condition: service_healthy
erc20-watcher-db:
condition: service_healthy
image: cerc/watcher-erc20:local
environment:
- ETH_RPC_URL=http://go-ethereum:8545
command: ["sh", "-c", "yarn server"]
volumes:
- ../config/watcher-erc20/erc20-watcher.toml:/app/packages/erc20-watcher/environments/local.toml
ports:
- "0.0.0.0:3002:3001"
- "0.0.0.0:9002:9001"
healthcheck:
test: ["CMD", "nc", "-vz", "localhost", "3001"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
volumes:
erc20_watcher_db_data:
@@ -0,0 +1,49 @@
version: '3.2'
services:
erc721-watcher-db:
restart: unless-stopped
image: postgres:14-alpine
environment:
- POSTGRES_USER=vdbm
- POSTGRES_MULTIPLE_DATABASES=erc721-watcher,erc721-watcher-job-queue
- POSTGRES_EXTENSION=erc721-watcher-job-queue:pgcrypto
- POSTGRES_PASSWORD=password
volumes:
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
- erc721_watcher_db_data:/var/lib/postgresql/data
ports:
- "0.0.0.0:15434:5432"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "5432"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
erc721-watcher:
restart: unless-stopped
depends_on:
ipld-eth-server:
condition: service_healthy
erc721-watcher-db:
condition: service_healthy
image: cerc/watcher-erc721:local
environment:
- ETH_RPC_URL=http://go-ethereum:8545
command: ["sh", "-c", "yarn server"]
volumes:
- ../config/watcher-erc721/erc721-watcher.toml:/app/packages/erc721-watcher/environments/local.toml
ports:
- "0.0.0.0:3009:3009"
- "0.0.0.0:9003:9001"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "3009"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
volumes:
erc721_watcher_db_data:
@@ -0,0 +1,90 @@
version: '3.2'
services:
# Starts the PostgreSQL database for watcher
mobymask-watcher-db:
restart: unless-stopped
image: postgres:14-alpine
environment:
- POSTGRES_USER=vdbm
- POSTGRES_MULTIPLE_DATABASES=mobymask-watcher,mobymask-watcher-job-queue
- POSTGRES_EXTENSION=mobymask-watcher-job-queue:pgcrypto
- POSTGRES_PASSWORD=password
volumes:
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
- mobymask_watcher_db_data:/var/lib/postgresql/data
ports:
- "0.0.0.0:15432:5432"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "5432"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
# Deploys MobyMask contract and generates an invite link
# Deployment is skipped if DEPLOYED_CONTRACT env is already set
mobymask:
image: cerc/mobymask:local
working_dir: /app/packages/server
env_file:
- ../config/watcher-mobymask-v2/optimism-params.env
- ../config/watcher-mobymask-v2/mobymask-params.env
environment:
- ENV=PROD
# Waits for L2 Optimism Geth and Node servers to be up before deploying contract
command:
- sh
- -c
- |
./wait-for-it.sh -h $${L2_GETH_HOST} -p $${L2_GETH_PORT} -s -t 0 && \
./wait-for-it.sh -h $${L2_NODE_HOST} -p $${L2_NODE_PORT} -s -t 0 && \
./deploy-and-generate-invite.sh
volumes:
- ../config/wait-for-it.sh:/app/packages/server/wait-for-it.sh
- ../config/watcher-mobymask-v2/secrets-template.json:/app/packages/server/secrets-template.json
- ../config/watcher-mobymask-v2/deploy-and-generate-invite.sh:/app/packages/server/deploy-and-generate-invite.sh
- mobymask_deployment:/app/packages/server
- fixturenet_geth_accounts:/geth-accounts:ro
extra_hosts:
- "host.docker.internal:host-gateway"
# Starts the mobymask-v2-watcher server
mobymask-watcher-server:
restart: unless-stopped
depends_on:
mobymask-watcher-db:
condition: service_healthy
mobymask:
condition: service_completed_successfully
image: cerc/watcher-mobymask-v2:local
env_file:
- ../config/watcher-mobymask-v2/optimism-params.env
- ../config/watcher-mobymask-v2/mobymask-params.env
command: ["sh", "start-server.sh"]
volumes:
- ../config/watcher-mobymask-v2/watcher-config-template.toml:/app/packages/mobymask-v2-watcher/environments/watcher-config-template.toml
- ../config/watcher-mobymask-v2/peer.env:/app/packages/peer/.env
- ../config/watcher-mobymask-v2/relay-id.json:/app/packages/mobymask-v2-watcher/relay-id.json
- ../config/watcher-mobymask-v2/peer-id.json:/app/packages/mobymask-v2-watcher/peer-id.json
- ../config/watcher-mobymask-v2/start-server.sh:/app/packages/mobymask-v2-watcher/start-server.sh
- mobymask_deployment:/server
- fixturenet_geth_accounts:/geth-accounts:ro
# Expose GQL, metrics and relay node ports
ports:
- "0.0.0.0:3001:3001"
- "0.0.0.0:9001:9001"
- "0.0.0.0:9090:9090"
healthcheck:
test: ["CMD", "busybox", "nc", "localhost", "9090"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
mobymask_watcher_db_data:
mobymask_deployment:
fixturenet_geth_accounts:
@@ -4,7 +4,7 @@ version: '3.2'
services: services:
watcher-db: mobymask-watcher-db:
restart: unless-stopped restart: unless-stopped
image: postgres:14-alpine image: postgres:14-alpine
environment: environment:
@@ -14,7 +14,7 @@ services:
- POSTGRES_PASSWORD=password - POSTGRES_PASSWORD=password
volumes: volumes:
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh - ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
- watcher_db_data:/var/lib/postgresql/data - mobymask_watcher_db_data:/var/lib/postgresql/data
ports: ports:
- "0.0.0.0:15432:5432" - "0.0.0.0:15432:5432"
healthcheck: healthcheck:
@@ -27,12 +27,12 @@ services:
mobymask-watcher-server: mobymask-watcher-server:
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
watcher-db: mobymask-watcher-db:
condition: service_healthy condition: service_healthy
image: cerc/watcher-mobymask:local image: cerc/watcher-mobymask:local
command: ["sh", "-c", "yarn server"] command: ["sh", "-c", "yarn server"]
volumes: volumes:
- ../config/watcher-mobymask/mobymask-watcher.toml:/app/watcher-ts/packages/mobymask-watcher/environments/local.toml - ../config/watcher-mobymask/mobymask-watcher.toml:/app/packages/mobymask-watcher/environments/local.toml
ports: ports:
- "0.0.0.0:3001:3001" - "0.0.0.0:3001:3001"
- "0.0.0.0:9001:9001" - "0.0.0.0:9001:9001"
@@ -50,18 +50,16 @@ services:
depends_on: depends_on:
mobymask-watcher-server: mobymask-watcher-server:
condition: service_healthy condition: service_healthy
watcher-db: mobymask-watcher-db:
condition: service_healthy condition: service_healthy
image: cerc/watcher-mobymask:local image: cerc/watcher-mobymask:local
command: ["sh", "-c", "yarn job-runner"] command: ["sh", "-c", "yarn job-runner"]
volumes: volumes:
- ../config/watcher-mobymask/mobymask-watcher.toml:/app/watcher-ts/packages/mobymask-watcher/environments/local.toml - ../config/watcher-mobymask/mobymask-watcher.toml:/app/packages/mobymask-watcher/environments/local.toml
ports: ports:
- "0.0.0.0:9000:9000" - "0.0.0.0:9000:9000"
extra_hosts: extra_hosts:
- "ipld-eth-server:host-gateway" - "ipld-eth-server:host-gateway"
volumes: volumes:
indexer_db_data: mobymask_watcher_db_data:
watcher_db_data:
@@ -0,0 +1,170 @@
version: '3.2'
services:
uniswap-watcher-db:
restart: unless-stopped
image: postgres:14-alpine
environment:
- POSTGRES_USER=vdbm
- POSTGRES_MULTIPLE_DATABASES=erc20-watcher,uni-watcher,uni-info-watcher,erc20-watcher-job-queue,uni-watcher-job-queue,uni-info-watcher-job-queue
- POSTGRES_EXTENSION=erc20-watcher-job-queue:pgcrypto,uni-watcher-job-queue:pgcrypto,uni-info-watcher-job-queue:pgcrypto
- POSTGRES_PASSWORD=password
command: ["postgres", "-c", "shared_preload_libraries=pg_stat_statements", "-c", "pg_stat_statements.track=all", "-c", "work_mem=2GB"]
volumes:
- ../config/postgresql/multiple-postgressql-databases.sh:/docker-entrypoint-initdb.d/multiple-postgressql-databases.sh
- ../config/postgresql/create-pg-stat-statements.sql:/docker-entrypoint-initdb.d/create-pg-stat-statements.sql
- uniswap_watcher_db_data:/var/lib/postgresql/data
ports:
- "0.0.0.0:15435:5432"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "5432"]
interval: 20s
timeout: 5s
retries: 15
start_period: 10s
shm_size: '8GB'
erc20-watcher-server:
restart: unless-stopped
depends_on:
uniswap-watcher-db:
condition: service_healthy
image: cerc/watcher-uniswap-v3:local
working_dir: /app/packages/erc20-watcher
environment:
- DEBUG=vulcanize:*
command: ["node", "--enable-source-maps", "dist/server.js"]
volumes:
- ../config/watcher-uniswap-v3/erc20-watcher.toml:/app/packages/erc20-watcher/environments/local.toml
ports:
- "0.0.0.0:3005:3001"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "3001"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
extra_hosts:
- "host.docker.internal:host-gateway"
uni-watcher-job-runner:
restart: unless-stopped
depends_on:
uniswap-watcher-db:
condition: service_healthy
image: cerc/watcher-uniswap-v3:local
working_dir: /app/packages/uni-watcher
environment:
- DEBUG=vulcanize:*
command: ["sh", "-c", "./watch-contract.sh && node --enable-source-maps dist/job-runner.js"]
volumes:
- ../config/watcher-uniswap-v3/uni-watcher.toml:/app/packages/uni-watcher/environments/local.toml
- ../config/watcher-uniswap-v3/watch-contract.sh:/app/packages/uni-watcher/watch-contract.sh
ports:
- "0.0.0.0:9004:9000"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "9000"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
extra_hosts:
- "host.docker.internal:host-gateway"
uni-watcher-server:
restart: unless-stopped
depends_on:
uniswap-watcher-db:
condition: service_healthy
uni-watcher-job-runner:
condition: service_healthy
image: cerc/watcher-uniswap-v3:local
environment:
- UNISWAP_START_BLOCK=12369621
- DEBUG=vulcanize:*
working_dir: /app/packages/uni-watcher
command: ["./run.sh"]
volumes:
- ../config/watcher-uniswap-v3/uni-watcher.toml:/app/packages/uni-watcher/environments/local.toml
- ../config/watcher-uniswap-v3/run.sh:/app/packages/uni-watcher/run.sh
ports:
- "0.0.0.0:3003:3003"
- "0.0.0.0:9005:9001"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "3003"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
extra_hosts:
- "host.docker.internal:host-gateway"
uni-info-watcher-job-runner:
restart: unless-stopped
depends_on:
uniswap-watcher-db:
condition: service_healthy
erc20-watcher-server:
condition: service_healthy
uni-watcher-server:
condition: service_healthy
image: cerc/watcher-uniswap-v3:local
working_dir: /app/packages/uni-info-watcher
environment:
- DEBUG=vulcanize:*
command: ["node", "--enable-source-maps", "dist/job-runner.js"]
volumes:
- ../config/watcher-uniswap-v3/uni-info-watcher.toml:/app/packages/uni-info-watcher/environments/local.toml
ports:
- "0.0.0.0:9006:9002"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "9002"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
extra_hosts:
- "host.docker.internal:host-gateway"
uni-info-watcher-server:
restart: unless-stopped
depends_on:
uniswap-watcher-db:
condition: service_healthy
erc20-watcher-server:
condition: service_healthy
uni-watcher-server:
condition: service_healthy
uni-info-watcher-job-runner:
condition: service_healthy
image: cerc/watcher-uniswap-v3:local
environment:
- UNISWAP_START_BLOCK=12369621
working_dir: /app/packages/uni-info-watcher
command: ["./run.sh"]
volumes:
- ../config/watcher-uniswap-v3/uni-info-watcher.toml:/app/packages/uni-info-watcher/environments/local.toml
- ../config/watcher-uniswap-v3/run.sh:/app/packages/uni-info-watcher/run.sh
ports:
- "0.0.0.0:3004:3004"
- "0.0.0.0:9007:9003"
healthcheck:
test: ["CMD", "nc", "-v", "localhost", "3004"]
interval: 20s
timeout: 5s
retries: 15
start_period: 5s
extra_hosts:
- "host.docker.internal:host-gateway"
uniswap-v3-info:
depends_on:
uni-info-watcher-server:
condition: service_healthy
image: cerc/uniswap-v3-info:local
ports:
- "0.0.0.0:3006:3000"
volumes:
uniswap_watcher_db_data:
@@ -0,0 +1,9 @@
apiVersion: 1
providers:
- name: dashboards
type: file
updateIntervalSeconds: 10
options:
path: /etc/grafana/dashboards
foldersFromFilesStructure: true
@@ -0,0 +1,19 @@
apiVersion: 1
datasources:
- id: 1
uid: jZUuGao4k
orgId: 1
name: Prometheus
type: prometheus
typeName: Prometheus
typeLogoUrl: public/app/plugins/datasource/prometheus/img/prometheus_logo.svg
access: proxy
url: http://prometheus:9090
user: ""
database: ""
basicAuth: false
isDefault: true
jsonData:
httpMethod: POST
readOnly: false
@@ -0,0 +1,34 @@
global:
scrape_interval: 5s
evaluation_interval: 15s
scrape_configs:
# ipld-eth-server
- job_name: 'ipld-eth-server'
metrics_path: /metrics
scrape_interval: 5s
static_configs:
- targets: ['ipld-eth-server:8090']
# geth
- job_name: 'geth'
metrics_path: /debug/metrics/prometheus
scheme: http
static_configs:
- targets: ['fixturenet-eth-geth-1:6060']
# nginx
- job_name: 'nginx'
scrape_interval: 5s
metrics_path: /metrics
scheme: http
static_configs:
- targets: ['keycloak-nginx-prometheus-exporter:9113']
# keycloak
- job_name: 'keycloak'
scrape_interval: 5s
metrics_path: /auth/realms/cerc/metrics
scheme: http
static_configs:
- targets: ['keycloak:8080']
@@ -2,6 +2,7 @@
ACCOUNT_PASSWORD=secret1212 ACCOUNT_PASSWORD=secret1212
# ENODE of the geth bootnode. # ENODE of the geth bootnode.
BOOTNODE_KEY="b0ac22adcad37213c7c565810a50f1772291e7b0ce53fb73e7ec2a3c75bc13b5"
ENODE="enode://af22c29c316ad069cf48a09a4ad5cf04a251b411e45098888d114c6dd7f489a13786620d5953738762afa13711d4ffb3b19aa5de772d8af72f851f7e9c5b164a@fixturenet-eth-bootnode-geth:30303" ENODE="enode://af22c29c316ad069cf48a09a4ad5cf04a251b411e45098888d114c6dd7f489a13786620d5953738762afa13711d4ffb3b19aa5de772d8af72f851f7e9c5b164a@fixturenet-eth-bootnode-geth:30303"
# JWT shared by geth and lighthouse for authentication. # JWT shared by geth and lighthouse for authentication.
@@ -16,3 +17,7 @@ CERC_STATEDIFF_DB_PORT=5432
CERC_STATEDIFF_DB_NAME="cerc_testing" CERC_STATEDIFF_DB_NAME="cerc_testing"
CERC_STATEDIFF_DB_USER="vdbm" CERC_STATEDIFF_DB_USER="vdbm"
CERC_STATEDIFF_DB_PASSWORD="password" CERC_STATEDIFF_DB_PASSWORD="password"
CERC_STATEDIFF_DB_GOOSE_MIN_VER=23
CERC_STATEDIFF_DB_LOG_STATEMENTS="false"
CERC_GETH_VMODULE="statediff/*=5,rpc/*=5"
@@ -1,8 +1,8 @@
#!/bin/sh #!/bin/bash
# Originally from: https://github.com/cerc-io/laconicd/blob/main/init.sh
# TODO: fold this back into the laconicd repo
# TODO: this file is now an unmodified copy of cerc-io/laconicd/init.sh
# so we should have a mechanism to bundle it inside the container rather than link from here
# at deploy time.
KEY="mykey" KEY="mykey"
CHAINID="laconic_9000-1" CHAINID="laconic_9000-1"
@@ -10,7 +10,7 @@ MONIKER="localtestnet"
KEYRING="test" KEYRING="test"
KEYALGO="eth_secp256k1" KEYALGO="eth_secp256k1"
LOGLEVEL="info" LOGLEVEL="info"
# to trace evm # trace evm
TRACE="--trace" TRACE="--trace"
# TRACE="" # TRACE=""
@@ -28,7 +28,7 @@ laconicd config chain-id $CHAINID
# if $KEY exists it should be deleted # if $KEY exists it should be deleted
laconicd keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO laconicd keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO
# Set moniker and chain-id for laconic (Moniker can be anything, chain-id must be an integer) # Set moniker and chain-id for Ethermint (Moniker can be anything, chain-id must be an integer)
laconicd init $MONIKER --chain-id $CHAINID laconicd init $MONIKER --chain-id $CHAINID
# Change parameter token denominations to aphoton # Change parameter token denominations to aphoton
@@ -37,28 +37,28 @@ cat $HOME/.laconicd/config/genesis.json | jq '.app_state["crisis"]["constant_fee
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
# Custom modules # Custom modules
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["record_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["record_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_commit_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_commit_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_reveal_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_reveal_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_minimum_bid"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_minimum_bid"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
if [[ "$TEST_NAMESERVICE_EXPIRY" == "true" ]]; then if [[ "$TEST_REGISTRY_EXPIRY" == "true" ]]; then
echo "Setting timers for expiry tests." echo "Setting timers for expiry tests."
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["record_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["record_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_grace_period"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_grace_period"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
fi fi
if [[ "$TEST_AUCTION_ENABLED" == "true" ]]; then if [[ "$TEST_AUCTION_ENABLED" == "true" ]]; then
echo "Enabling auction and setting timers." echo "Enabling auction and setting timers."
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_enabled"]=true' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_enabled"]=true' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_grace_period"]="300s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_grace_period"]="300s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_commits_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_commits_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_reveals_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json cat $HOME/.laconicd/config/genesis.json | jq '.app_state["registry"]["params"]["authority_auction_reveals_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json
fi fi
# increase block time (?) # increase block time (?)
@@ -0,0 +1,2 @@
#!/bin/sh
echo y | laconicd keys export mykey --unarmored-hex --unsafe
@@ -0,0 +1,7 @@
services:
cns:
restEndpoint: 'http://laconicd:1317'
gqlEndpoint: 'http://laconicd:9473/api'
userKey: REPLACE_WITH_MYKEY
bondId:
chainId: laconic_9000-1
+35
View File
@@ -0,0 +1,35 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# Check existing config if it exists
if [ -f /app/jwt.txt ] && [ -f /app/rollup.json ]; then
echo "Found existing L2 config, cross-checking with L1 deployment config"
SOURCE_L1_CONF=$(cat /contracts-bedrock/deploy-config/getting-started.json)
EXP_L1_BLOCKHASH=$(echo "$SOURCE_L1_CONF" | jq -r '.l1StartingBlockTag')
EXP_BATCHER=$(echo "$SOURCE_L1_CONF" | jq -r '.batchSenderAddress')
GEN_L2_CONF=$(cat /app/rollup.json)
GEN_L1_BLOCKHASH=$(echo "$GEN_L2_CONF" | jq -r '.genesis.l1.hash')
GEN_BATCHER=$(echo "$GEN_L2_CONF" | jq -r '.genesis.system_config.batcherAddr')
if [ "$EXP_L1_BLOCKHASH" = "$GEN_L1_BLOCKHASH" ] && [ "$EXP_BATCHER" = "$GEN_BATCHER" ]; then
echo "Config cross-checked, exiting"
exit 0
fi
echo "Existing L2 config doesn't match the L1 deployment config, please clear L2 config volume before starting"
exit 1
fi
op-node genesis l2 \
--deploy-config /contracts-bedrock/deploy-config/getting-started.json \
--deployment-dir /contracts-bedrock/deployments/getting-started/ \
--outfile.l2 /app/genesis.json \
--outfile.rollup /app/rollup.json \
--l1-rpc $L1_RPC
openssl rand -hex 32 > /app/jwt.txt
@@ -0,0 +1,14 @@
# Change if pointing to an external L1 endpoint
# L1 endpoint
L1_CHAIN_ID=1212
L1_RPC="http://fixturenet-eth-geth-1:8545"
L1_HOST="fixturenet-eth-geth-1"
L1_PORT=8545
# Credentials for accounts on L1 to send balance to Optimism Proxy contract from
# (enables them to do transactions on L2)
L1_ADDRESS=
L1_PRIV_KEY=
L1_ADDRESS_2=
L1_PRIV_KEY_2=
@@ -0,0 +1,120 @@
#!/bin/bash
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
echo "Using L1 RPC endpoint ${L1_RPC}"
IMPORT_1="import './verify-contract-deployment'"
IMPORT_2="import './rekey-json'"
IMPORT_3="import './send-balance'"
# Append mounted tasks to tasks/index.ts file if not present
if ! grep -Fxq "$IMPORT_1" tasks/index.ts; then
echo "$IMPORT_1" >> tasks/index.ts
echo "$IMPORT_2" >> tasks/index.ts
echo "$IMPORT_3" >> tasks/index.ts
fi
# Update the chainId in the hardhat config
sed -i "/getting-started/ {n; s/.*chainId.*/ chainId: $L1_CHAIN_ID,/}" hardhat.config.ts
# Exit if a deployment already exists (on restarts)
# Note: fixturenet-eth-geth currently starts fresh on a restart
if [ -d "deployments/getting-started" ]; then
echo "Deployment directory deployments/getting-started found, checking SystemDictator deployment"
# Read JSON file into variable
SYSTEM_DICTATOR_DETAILS=$(cat deployments/getting-started/SystemDictator.json)
# Parse JSON into variables
SYSTEM_DICTATOR_ADDRESS=$(echo "$SYSTEM_DICTATOR_DETAILS" | jq -r '.address')
SYSTEM_DICTATOR_TXHASH=$(echo "$SYSTEM_DICTATOR_DETAILS" | jq -r '.transactionHash')
if yarn hardhat verify-contract-deployment --contract "${SYSTEM_DICTATOR_ADDRESS}" --transaction-hash "${SYSTEM_DICTATOR_TXHASH}"; then
echo "Deployment verfication successful, exiting"
exit 0
else
echo "Deployment verfication failed, please clear L1 deployment volume before starting"
exit 1
fi
fi
# Generate the L2 account addresses
yarn hardhat rekey-json --output /l2-accounts/keys.json
# Read JSON file into variable
KEYS_JSON=$(cat /l2-accounts/keys.json)
# Parse JSON into variables
ADMIN_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Admin.address')
ADMIN_PRIV_KEY=$(echo "$KEYS_JSON" | jq -r '.Admin.privateKey')
PROPOSER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Proposer.address')
BATCHER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Batcher.address')
SEQUENCER_ADDRESS=$(echo "$KEYS_JSON" | jq -r '.Sequencer.address')
# Read the private key of L1 accounts
if [ -f /geth-accounts/accounts.csv ]; then
echo "Using L1 account credentials from the mounted volume"
L1_ADDRESS=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 2)
L1_PRIV_KEY=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
L1_ADDRESS_2=$(awk -F, 'NR==2{print $(NF-1)}' /geth-accounts/accounts.csv)
L1_PRIV_KEY_2=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
else
echo "Using L1 account credentials from env"
fi
# Select a finalized L1 block as the starting point for roll ups
until FINALIZED_BLOCK=$(cast block finalized --rpc-url "$L1_RPC"); do
echo "Waiting for a finalized L1 block to exist, retrying after 10s"
sleep 10
done
L1_BLOCKNUMBER=$(echo "$FINALIZED_BLOCK" | awk '/number/{print $2}')
L1_BLOCKHASH=$(echo "$FINALIZED_BLOCK" | awk '/hash/{print $2}')
L1_BLOCKTIMESTAMP=$(echo "$FINALIZED_BLOCK" | awk '/timestamp/{print $2}')
echo "Selected L1 block ${L1_BLOCKNUMBER} as the starting block for roll ups"
# Send balances to the above L2 addresses
yarn hardhat send-balance --to "${ADMIN_ADDRESS}" --amount 2 --private-key "${L1_PRIV_KEY}" --network getting-started
yarn hardhat send-balance --to "${PROPOSER_ADDRESS}" --amount 5 --private-key "${L1_PRIV_KEY}" --network getting-started
yarn hardhat send-balance --to "${BATCHER_ADDRESS}" --amount 1000 --private-key "${L1_PRIV_KEY}" --network getting-started
echo "Balances sent to L2 accounts"
# Update the deployment config
sed -i 's/"l2OutputOracleStartingTimestamp": TIMESTAMP/"l2OutputOracleStartingTimestamp": '"$L1_BLOCKTIMESTAMP"'/g' deploy-config/getting-started.json
jq --arg chainid "$L1_CHAIN_ID" '.l1ChainID = ($chainid | tonumber)' deploy-config/getting-started.json > tmp.json && mv tmp.json deploy-config/getting-started.json
node update-config.js deploy-config/getting-started.json "$ADMIN_ADDRESS" "$PROPOSER_ADDRESS" "$BATCHER_ADDRESS" "$SEQUENCER_ADDRESS" "$L1_BLOCKHASH"
echo "Updated the deployment config"
# Create a .env file
echo "L1_RPC=$L1_RPC" > .env
echo "PRIVATE_KEY_DEPLOYER=$ADMIN_PRIV_KEY" >> .env
echo "Deploying the L1 smart contracts, this will take a while..."
# Deploy the L1 smart contracts
yarn hardhat deploy --network getting-started
echo "Deployed the L1 smart contracts"
# Read Proxy contract's JSON and get the address
PROXY_JSON=$(cat deployments/getting-started/Proxy__OVM_L1StandardBridge.json)
PROXY_ADDRESS=$(echo "$PROXY_JSON" | jq -r '.address')
# Send balance to the above Proxy contract in L1 for reflecting balance in L2
# First account
yarn hardhat send-balance --to "${PROXY_ADDRESS}" --amount 1 --private-key "${L1_PRIV_KEY}" --network getting-started
# Second account
yarn hardhat send-balance --to "${PROXY_ADDRESS}" --amount 1 --private-key "${L1_PRIV_KEY_2}" --network getting-started
echo "Balance sent to Proxy L2 contract"
echo "Use following accounts for transactions in L2:"
echo "${L1_ADDRESS}"
echo "${L1_ADDRESS_2}"
echo "Done"
@@ -0,0 +1,36 @@
const fs = require('fs')
// Get the command-line argument
const configFile = process.argv[2]
const adminAddress = process.argv[3]
const proposerAddress = process.argv[4]
const batcherAddress = process.argv[5]
const sequencerAddress = process.argv[6]
const blockHash = process.argv[7]
// Read the JSON file
const configData = fs.readFileSync(configFile)
const configObj = JSON.parse(configData)
// Update the finalSystemOwner property with the ADMIN_ADDRESS value
configObj.finalSystemOwner =
configObj.portalGuardian =
configObj.controller =
configObj.l2OutputOracleChallenger =
configObj.proxyAdminOwner =
configObj.baseFeeVaultRecipient =
configObj.l1FeeVaultRecipient =
configObj.sequencerFeeVaultRecipient =
configObj.governanceTokenOwner =
adminAddress
configObj.l2OutputOracleProposer = proposerAddress
configObj.batchSenderAddress = batcherAddress
configObj.p2pSequencerAddress = sequencerAddress
configObj.l1StartingBlockTag = blockHash
// Write the updated JSON object back to the file
fs.writeFileSync(configFile, JSON.stringify(configObj, null, 2))
+24
View File
@@ -0,0 +1,24 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# Get BACTHER_KEY from keys.json
BATCHER_KEY=$(jq -r '.Batcher.privateKey' /l2-accounts/keys.json | tr -d '"')
op-batcher \
--l2-eth-rpc=http://op-geth:8545 \
--rollup-rpc=http://op-node:8547 \
--poll-interval=1s \
--sub-safety-margin=6 \
--num-confirmations=1 \
--safe-abort-nonce-too-low-count=3 \
--resubmission-timeout=30s \
--rpc.addr=0.0.0.0 \
--rpc.port=8548 \
--rpc.enable-admin \
--max-channel-duration=1 \
--target-l1-tx-size-bytes=2048 \
--l1-eth-rpc=$L1_RPC \
--private-key=$BATCHER_KEY
+77
View File
@@ -0,0 +1,77 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# TODO: Add in container build or use other tool
echo "Installing jq"
apk update && apk add jq
# Get SEQUENCER key from keys.json
SEQUENCER_KEY=$(jq -r '.Sequencer.privateKey' /l2-accounts/keys.json | tr -d '"')
# Initialize op-geth if datadir/geth not found
if [ -f /op-node/jwt.txt ] && [ -d datadir/geth ]; then
echo "Found existing datadir, checking block signer key"
BLOCK_SIGNER_KEY=$(cat datadir/block-signer-key)
if [ "$SEQUENCER_KEY" = "$BLOCK_SIGNER_KEY" ]; then
echo "Sequencer and block signer keys match, skipping initialization"
else
echo "Sequencer and block signer keys don't match, please clear L2 geth data volume before starting"
exit 1
fi
else
echo "Initializing op-geth"
mkdir -p datadir
echo "pwd" > datadir/password
echo $SEQUENCER_KEY > datadir/block-signer-key
geth account import --datadir=datadir --password=datadir/password datadir/block-signer-key
while [ ! -f "/op-node/jwt.txt" ]
do
echo "Config files not created. Checking after 5 seconds."
sleep 5
done
echo "Config files created by op-node, proceeding with the initialization..."
geth init --datadir=datadir /op-node/genesis.json
echo "Node Initialized"
fi
SEQUENCER_ADDRESS=$(jq -r '.Sequencer.address' /l2-accounts/keys.json | tr -d '"')
echo "SEQUENCER_ADDRESS: ${SEQUENCER_ADDRESS}"
# Run op-geth
geth \
--datadir ./datadir \
--http \
--http.corsdomain="*" \
--http.vhosts="*" \
--http.addr=0.0.0.0 \
--http.api=web3,debug,eth,txpool,net,engine \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=8546 \
--ws.origins="*" \
--ws.api=debug,eth,txpool,net,engine \
--syncmode=full \
--gcmode=full \
--nodiscover \
--maxpeers=0 \
--networkid=42069 \
--authrpc.vhosts="*" \
--authrpc.addr=0.0.0.0 \
--authrpc.port=8551 \
--authrpc.jwtsecret=/op-node/jwt.txt \
--rollup.disabletxpoolgossip=true \
--password=./datadir/password \
--allow-insecure-unlock \
--mine \
--miner.etherbase=$SEQUENCER_ADDRESS \
--unlock=$SEQUENCER_ADDRESS
+23
View File
@@ -0,0 +1,23 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# Get SEQUENCER KEY from keys.json
SEQUENCER_KEY=$(jq -r '.Sequencer.privateKey' /l2-accounts/keys.json | tr -d '"')
op-node \
--l2=http://op-geth:8551 \
--l2.jwt-secret=/op-node-data/jwt.txt \
--sequencer.enabled \
--sequencer.l1-confs=3 \
--verifier.l1-confs=3 \
--rollup.config=/op-node-data/rollup.json \
--rpc.addr=0.0.0.0 \
--rpc.port=8547 \
--p2p.disable \
--rpc.enable-admin \
--p2p.sequencer.key=$SEQUENCER_KEY \
--l1=$L1_RPC \
--l1.rpckind=any
+2
View File
@@ -0,0 +1,2 @@
[profile.default]
eth-rpc-url = "http://fixturenet-eth-geth-1:8545"
File diff suppressed because it is too large Load Diff
+17
View File
@@ -0,0 +1,17 @@
POSTGRES_DB=keycloak
POSTGRES_USER=keycloak
POSTGRES_PASSWORD=keycloak
KC_DB=postgres
KC_DB_URL_HOST=keycloak-db
KC_DB_URL_DATABASE=${POSTGRES_DB}
KC_DB_USERNAME=${POSTGRES_USER}
KC_DB_PASSWORD=${POSTGRES_PASSWORD}
KC_DB_SCHEMA=public
KC_HOSTNAME=localhost
KC_HTTP_ENABLED="true"
KC_HTTP_RELATIVE_PATH="/auth"
KC_HOSTNAME_STRICT_HTTPS="false"
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=admin
X_API_CHECK_REALM=cerc
X_API_CHECK_CLIENT_ID="%api_key%"
@@ -0,0 +1,72 @@
server {
listen 80;
listen [::]:80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
### geth
location ~ ^/eth/?([^/]*)$ {
set $apiKey $1;
if ($apiKey = '') {
set $apiKey $http_X_API_KEY;
}
auth_request /auth;
proxy_buffering off;
rewrite /.*$ / break;
proxy_pass http://fixturenet-eth-geth-1:8545;
}
## ipld-eth-server
# location ~ ^/ipld/eth/([^/]*)$ {
# set $apiKey $1;
# if ($apiKey = '') {
# set $apiKey $http_X_API_KEY;
# }
# auth_request /auth;
# auth_request_set $user_id $sent_http_x_user_id;
# proxy_buffering off;
# rewrite /.*$ / break;
# proxy_pass http://ipld-eth-server:8081;
# proxy_set_header X-Original-Remote-Addr $remote_addr;
# proxy_set_header X-User-Id $user_id;
# }
#
# location ~ ^/ipld/gql/([^/]*)$ {
# set $apiKey $1;
# if ($apiKey = '') {
# set $apiKey $http_X_API_KEY;
# }
# auth_request /auth;
# proxy_buffering off;
# rewrite /.*$ / break;
# proxy_pass http://ipld-eth-server:8082;
# }
## lighthouse
location /beacon/ {
set $apiKey $http_X_API_KEY;
auth_request /auth;
proxy_buffering off;
proxy_pass http://fixturenet-eth-lighthouse-1:8001/;
}
location = /auth {
internal;
proxy_buffering off;
resolver 127.0.0.11 ipv6=off;
proxy_pass http://keycloak:8080/auth/realms/cerc/check?apiKey=$apiKey;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Original-Remote-Addr $remote_addr;
proxy_set_header X-Original-Host $host;
}
location = /stub_status {
stub_status;
}
}
@@ -0,0 +1 @@
CREATE EXTENSION pg_stat_statements;
@@ -0,0 +1,2 @@
ETH_CALL_FREQ=1000
ETH_SEND_FREQ=1000
+182
View File
@@ -0,0 +1,182 @@
#!/usr/bin/env bash
# Use this script to test if a given TCP host/port are available
WAITFORIT_cmdname=${0##*/}
echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
usage()
{
cat << USAGE >&2
Usage:
$WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST Host or IP under test
-p PORT | --port=PORT TCP port under test
Alternatively, you specify the host and port as host:port
-s | --strict Only execute subcommand if the test succeeds
-q | --quiet Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
USAGE
exit 1
}
wait_for()
{
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
else
echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
fi
WAITFORIT_start_ts=$(date +%s)
while :
do
if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
nc -z $WAITFORIT_HOST $WAITFORIT_PORT
WAITFORIT_result=$?
else
(echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
WAITFORIT_result=$?
fi
if [[ $WAITFORIT_result -eq 0 ]]; then
WAITFORIT_end_ts=$(date +%s)
echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
break
fi
sleep 1
done
return $WAITFORIT_result
}
wait_for_wrapper()
{
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
if [[ $WAITFORIT_QUIET -eq 1 ]]; then
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
else
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
fi
WAITFORIT_PID=$!
trap "kill -INT -$WAITFORIT_PID" INT
wait $WAITFORIT_PID
WAITFORIT_RESULT=$?
if [[ $WAITFORIT_RESULT -ne 0 ]]; then
echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
fi
return $WAITFORIT_RESULT
}
# process arguments
while [[ $# -gt 0 ]]
do
case "$1" in
*:* )
WAITFORIT_hostport=(${1//:/ })
WAITFORIT_HOST=${WAITFORIT_hostport[0]}
WAITFORIT_PORT=${WAITFORIT_hostport[1]}
shift 1
;;
--child)
WAITFORIT_CHILD=1
shift 1
;;
-q | --quiet)
WAITFORIT_QUIET=1
shift 1
;;
-s | --strict)
WAITFORIT_STRICT=1
shift 1
;;
-h)
WAITFORIT_HOST="$2"
if [[ $WAITFORIT_HOST == "" ]]; then break; fi
shift 2
;;
--host=*)
WAITFORIT_HOST="${1#*=}"
shift 1
;;
-p)
WAITFORIT_PORT="$2"
if [[ $WAITFORIT_PORT == "" ]]; then break; fi
shift 2
;;
--port=*)
WAITFORIT_PORT="${1#*=}"
shift 1
;;
-t)
WAITFORIT_TIMEOUT="$2"
if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
shift 2
;;
--timeout=*)
WAITFORIT_TIMEOUT="${1#*=}"
shift 1
;;
--)
shift
WAITFORIT_CLI=("$@")
break
;;
--help)
usage
;;
*)
echoerr "Unknown argument: $1"
usage
;;
esac
done
if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
echoerr "Error: you need to provide a host and port to test."
usage
fi
WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
# Check to see if timeout is from busybox?
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
WAITFORIT_BUSYTIMEFLAG=""
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
WAITFORIT_ISBUSY=1
# Check if busybox timeout uses -t flag
# (recent Alpine versions don't support -t anymore)
if timeout &>/dev/stdout | grep -q -e '-t '; then
WAITFORIT_BUSYTIMEFLAG="-t"
fi
else
WAITFORIT_ISBUSY=0
fi
if [[ $WAITFORIT_CHILD -gt 0 ]]; then
wait_for
WAITFORIT_RESULT=$?
exit $WAITFORIT_RESULT
else
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
wait_for_wrapper
WAITFORIT_RESULT=$?
else
wait_for
WAITFORIT_RESULT=$?
fi
fi
if [[ $WAITFORIT_CLI != "" ]]; then
if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
exit $WAITFORIT_RESULT
fi
exec "${WAITFORIT_CLI[@]}"
else
exit $WAITFORIT_RESULT
fi
@@ -0,0 +1,41 @@
[server]
host = "0.0.0.0"
port = 3001
mode = "storage"
kind = "lazy"
[metrics]
host = "127.0.0.1"
port = 9000
[metrics.gql]
port = 9001
[database]
type = "postgres"
host = "erc20-watcher-db"
port = 5432
database = "erc20-watcher"
username = "vdbm"
password = "password"
synchronize = true
logging = false
maxQueryExecutionTime = 100
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server:8082/graphql"
rpcProviderEndpoint = "http://ipld-eth-server:8081"
[upstream.cache]
name = "requests"
enabled = false
deleteOnStart = false
[jobQueue]
dbConnectionString = "postgres://vdbm:password@erc20-watcher-db:5432/erc20-watcher-job-queue"
maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 100
eventsInBatch = 50
blockDelayInMilliSecs = 2000
prefetchBlocksInMem = true
prefetchBlockCount = 10
@@ -0,0 +1,56 @@
[server]
host = "0.0.0.0"
port = 3009
kind = "lazy"
# Checkpointing state.
checkpointing = true
# Checkpoint interval in number of blocks.
checkpointInterval = 2000
# Enable state creation
enableState = true
# Boolean to filter logs by contract.
filterLogs = false
# Max block range for which to return events in eventsInRange GQL query.
# Use -1 for skipping check on block range.
maxEventsBlockRange = 1000
[metrics]
host = "127.0.0.1"
port = 9000
[metrics.gql]
port = 9001
[database]
type = "postgres"
host = "erc721-watcher-db"
port = 5432
database = "erc721-watcher"
username = "vdbm"
password = "password"
synchronize = true
logging = false
maxQueryExecutionTime = 100
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server:8082/graphql"
rpcProviderEndpoint = "http://ipld-eth-server:8081"
[upstream.cache]
name = "requests"
enabled = false
deleteOnStart = false
[jobQueue]
dbConnectionString = "postgres://vdbm:password@erc721-watcher-db:5432/erc721-watcher-job-queue"
maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 100
eventsInBatch = 50
blockDelayInMilliSecs = 2000
prefetchBlocksInMem = true
prefetchBlockCount = 10
@@ -0,0 +1,69 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
echo "Using L2 RPC endpoint ${L2_GETH_RPC}"
if [ -f /geth-accounts/accounts.csv ]; then
echo "Using L1 private key from the mounted volume"
# Read the private key of L1 account to deploy contract
PRIVATE_KEY_DEPLOYER=$(head -n 1 /geth-accounts/accounts.csv | cut -d ',' -f 3)
else
echo "Using PRIVATE_KEY_DEPLOYER from env"
fi
# Set the private key
jq --arg privateKey "$PRIVATE_KEY_DEPLOYER" '.privateKey = $privateKey' secrets-template.json > secrets.json
# Set the RPC URL
jq --arg rpcUrl "$L2_GETH_RPC" '.rpcUrl = $rpcUrl' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
# Set the MobyMask app base URI
jq --arg baseURI "$MOBYMASK_APP_BASE_URI" '.baseURI = $baseURI' secrets.json > secrets_updated.json && mv secrets_updated.json secrets.json
export RPC_URL="${L2_GETH_RPC}"
# Check if DEPLOYED_CONTRACT environment variable set to skip contract deployment
if [[ -n "$DEPLOYED_CONTRACT" ]]; then
echo "DEPLOYED_CONTRACT is set to '$DEPLOYED_CONTRACT'"
echo "Exiting without deploying contract"
exit 0
fi
# Check and exit if a deployment already exists (on restarts)
if [ -f ./config.json ]; then
echo "config.json already exists, checking the contract deployment"
# Read JSON file
DEPLOYMENT_DETAILS=$(cat config.json)
CONTRACT_ADDRESS=$(echo "$DEPLOYMENT_DETAILS" | jq -r '.address')
cd ../hardhat
if yarn verifyDeployment --network optimism --contract "${CONTRACT_ADDRESS}"; then
echo "Deployment verfication successful"
cd ../server
else
echo "Deployment verfication failed, please clear MobyMask deployment volume before starting"
exit 1
fi
fi
# Wait until balance for deployer account is updated
cd ../hardhat
while true; do
ACCOUNT_BALANCE=$(yarn balance --network optimism "$PRIVATE_KEY_DEPLOYER" | grep ETH)
if [ "$ACCOUNT_BALANCE" != "0.0 ETH" ]; then
echo "Account balance updated: $ACCOUNT_BALANCE"
break # exit the loop
fi
echo "Account balance not updated: $ACCOUNT_BALANCE"
echo "Checking after 2 seconds"
sleep 2
done
cd ../server
npm run deployAndGenerateInvite
@@ -0,0 +1,9 @@
{
"name": "MobyMask",
"relayNodes": [
"/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
],
"peer": {
"enableDebugInfo": true
}
}
+25
View File
@@ -0,0 +1,25 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# Use config from mounted volume if available (when running web-app along with watcher stack)
if [ -f /server/config.json ]; then
echo "Merging config for deployed contract from mounted volume"
# Merging config files to get deployed contract address
jq -s '.[0] * .[1]' /app/src/mobymask-app-config.json /server/config.json > /app/src/config.json
else
echo "Setting deployed contract details from env"
# Set config values from environment variables
jq --arg address "$DEPLOYED_CONTRACT" \
--argjson chainId $CHAIN_ID \
--argjson relayNodes "$RELAY_NODES" \
'.address = $address | .chainId = $chainId | .relayNodes = $relayNodes' \
/app/src/mobymask-app-config.json > /app/src/config.json
fi
REACT_APP_WATCHER_URI="$APP_WATCHER_URL/graphql" npm run build
serve -s build
@@ -0,0 +1,20 @@
# Change if pointing web app to external watcher endpoint
WATCHER_HOST="mobymask-watcher-server"
WATCHER_PORT=3001
APP_WATCHER_URL="http://localhost:3001"
# Base URI for mobymask-app (used for generating invite)
MOBYMASK_APP_BASE_URI="http://127.0.0.1:3002/#"
# Set to false for disabling watcher peer to send txs to L2
ENABLE_PEER_L2_TXS=true
# Set deployed MobyMask contract address to avoid deploying contract in stack
# mobymask-app will use this contract address in config if run separately
DEPLOYED_CONTRACT=
# Chain ID is used by mobymask web-app for txs
CHAIN_ID=42069
# Set relay nodes to be used by web-apps
RELAY_NODES=["/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"]
@@ -0,0 +1,13 @@
# Change if pointing to an external optimism geth endpoint
# L2 endpoints
L2_GETH_RPC="http://op-geth:8545"
L2_GETH_HOST="op-geth"
L2_GETH_PORT=8545
L2_NODE_HOST="op-node"
L2_NODE_PORT=8547
# Credentials for accounts to perform txs on L2
PRIVATE_KEY_DEPLOYER=
PRIVATE_KEY_PEER=
@@ -0,0 +1,5 @@
{
"id": "12D3KooWK6myjc8r1KBnfP9igp31qJkPaVfsKDjKrjoSefV5SDEo",
"privKey": "CAESQJMHbMaH+UEOtjGOzXYtoPO/cdHakCtN1hcnknIWzx/6ie1lxb+8kfzBjwt7apfj8fHlTCYSIVK8Q2AWu9a2h3g=",
"pubKey": "CAESIIntZcW/vJH8wY8Le2qX4/Hx5UwmEiFSvENgFrvWtod4"
}
@@ -0,0 +1 @@
RELAY="/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
@@ -0,0 +1,5 @@
{
"id": "12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t",
"privKey": "CAESQGsqG5o4VlWJZM9XlA3MjabyZOXWQ2MLZU5AhBQsjXGt9iSlGtTuNOrHX5xSRgLBxLuMoqWsjGxE/dDB9c46RI8=",
"pubKey": "CAESIPYkpRrU7jTqx1+cUkYCwcS7jKKlrIxsRP3QwfXOOkSP"
}
@@ -0,0 +1,5 @@
{
"rpcUrl": "",
"privateKey": "",
"baseURI": ""
}
+38
View File
@@ -0,0 +1,38 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
echo "Using L2 RPC endpoint ${L2_GETH_RPC}"
# Use contract address from environment variable or set from config.json in mounted volume
if [ -n "$DEPLOYED_CONTRACT" ]; then
CONTRACT_ADDRESS="${DEPLOYED_CONTRACT}"
else
# Assign deployed contract address from server config (created by mobymask container after deploying contract)
CONTRACT_ADDRESS=$(jq -r '.address' /server/config.json | tr -d '"')
fi
if [ -f /geth-accounts/accounts.csv ]; then
echo "Using L1 private key from the mounted volume"
# Read the private key of L1 account for sending txs from peer
PRIVATE_KEY_PEER=$(awk -F, 'NR==2{print $NF}' /geth-accounts/accounts.csv)
else
echo "Using PRIVATE_KEY_PEER from env"
fi
# Read in the config template TOML file and modify it
WATCHER_CONFIG_TEMPLATE=$(cat environments/watcher-config-template.toml)
WATCHER_CONFIG=$(echo "$WATCHER_CONFIG_TEMPLATE" | \
sed -E "s/REPLACE_WITH_ENABLE_PEER_L2_TXS/${ENABLE_PEER_L2_TXS}/g; \
s/REPLACE_WITH_PRIVATE_KEY_PEER/${PRIVATE_KEY_PEER}/g; \
s/REPLACE_WITH_CONTRACT_ADDRESS/${CONTRACT_ADDRESS}/g; \
s|REPLACE_WITH_L2_GETH_RPC_ENDPOINT|${L2_GETH_RPC}| ")
# Write the modified content to a new file
echo "$WATCHER_CONFIG" > environments/local.toml
echo 'yarn server'
yarn server
@@ -0,0 +1,8 @@
{
"relayNodes": [
"/ip4/127.0.0.1/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t"
],
"peer": {
"enableDebugInfo": true
}
}
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
set -e
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# Set relay nodes in config from RELAY_NODES environment variable
jq --argjson relayNodes "$RELAY_NODES" \
'.relayNodes = $relayNodes' \
./src/test-app-config.json > ./src/config.json
yarn build
serve -s build
@@ -0,0 +1,75 @@
[server]
host = "0.0.0.0"
port = 3001
kind = "lazy"
# Checkpointing state.
checkpointing = true
# Checkpoint interval in number of blocks.
checkpointInterval = 2000
# Enable state creation
enableState = true
# Boolean to filter logs by contract.
filterLogs = true
# Max block range for which to return events in eventsInRange GQL query.
# Use -1 for skipping check on block range.
maxEventsBlockRange = -1
[server.p2p]
enableRelay = true
enablePeer = true
[server.p2p.relay]
host = "0.0.0.0"
port = 9090
relayPeers = []
peerIdFile = './relay-id.json'
enableDebugInfo = true
[server.p2p.peer]
relayMultiaddr = '/dns4/mobymask-watcher-server/tcp/9090/ws/p2p/12D3KooWSPCsVkHVyLQoCqhu2YRPvvM7o6r6NRYyLM5zeA6Uig5t'
pubSubTopic = 'mobymask'
peerIdFile = './peer-id.json'
enableDebugInfo = true
enableL2Txs = REPLACE_WITH_ENABLE_PEER_L2_TXS
[server.p2p.peer.l2TxsConfig]
privateKey = 'REPLACE_WITH_PRIVATE_KEY_PEER'
contractAddress = 'REPLACE_WITH_CONTRACT_ADDRESS'
[metrics]
host = "0.0.0.0"
port = 9000
[metrics.gql]
port = 9001
[database]
type = "postgres"
host = "mobymask-watcher-db"
port = 5432
database = "mobymask-watcher"
username = "vdbm"
password = "password"
synchronize = true
logging = false
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server:8083/graphql"
rpcProviderEndpoint = "REPLACE_WITH_L2_GETH_RPC_ENDPOINT"
blockDelayInMilliSecs = 60000
[upstream.cache]
name = "requests"
enabled = false
deleteOnStart = false
[jobQueue]
dbConnectionString = "postgres://vdbm:password@mobymask-watcher-db/mobymask-watcher-job-queue"
maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 100
eventsInBatch = 50
@@ -27,7 +27,7 @@
[database] [database]
type = "postgres" type = "postgres"
host = "watcher-db" host = "mobymask-watcher-db"
port = 5432 port = 5432
database = "mobymask-watcher" database = "mobymask-watcher"
username = "vdbm" username = "vdbm"
@@ -47,7 +47,7 @@
deleteOnStart = false deleteOnStart = false
[jobQueue] [jobQueue]
dbConnectionString = "postgres://vdbm:password@watcher-db/mobymask-watcher-job-queue" dbConnectionString = "postgres://vdbm:password@mobymask-watcher-db/mobymask-watcher-job-queue"
maxCompletionLagInSecs = 300 maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 100 jobDelayInMilliSecs = 100
eventsInBatch = 50 eventsInBatch = 50
@@ -0,0 +1,39 @@
[server]
host = "0.0.0.0"
port = 3001
mode = "eth_call"
kind = "lazy"
[metrics]
host = "127.0.0.1"
port = 9000
[metrics.gql]
port = 9001
[database]
type = "postgres"
host = "uniswap-watcher-db"
port = 5432
database = "erc20-watcher"
username = "vdbm"
password = "password"
synchronize = true
logging = false
maxQueryExecutionTime = 100
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server.example.com:8083/graphql"
rpcProviderEndpoint = "http://ipld-eth-server.example.com:8082"
[upstream.cache]
name = "requests"
enabled = false
deleteOnStart = false
[jobQueue]
dbConnectionString = "postgres://vdbm:password@uniswap-watcher-db:5432/erc20-watcher-job-queue"
maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 100
eventsInBatch = 50
blockDelayInMilliSecs = 2000
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
set -e
set -u
echo "Initializing watcher..."
yarn fill --start-block $UNISWAP_START_BLOCK --end-block $((UNISWAP_START_BLOCK + 1))
echo "Running active server"
DEBUG=vulcanize:* exec node --enable-source-maps dist/server.js
@@ -0,0 +1,90 @@
[server]
host = "0.0.0.0"
port = 3004
mode = "prod"
kind = "active"
# Checkpointing state.
checkpointing = true
# Checkpoint interval in number of blocks.
checkpointInterval = 50000
# Enable state creation
enableState = false
# Max block range for which to return events in eventsInRange GQL query.
# Use -1 for skipping check on block range.
maxEventsBlockRange = 1000
# Interval in number of blocks at which to clear entities cache.
clearEntitiesCacheInterval = 1000
# Boolean to skip updating entity fields required in state creation and not required in the frontend.
skipStateFieldsUpdate = false
# Boolean to load GQL query nested entity relations sequentially.
loadRelationsSequential = false
# Max GQL API requests to process simultaneously (defaults to 1).
maxSimultaneousRequests = 1
# GQL cache settings
[server.gqlCache]
enabled = true
# Max in-memory cache size (in bytes) (default 8 MB)
# maxCacheSize
# GQL cache-control max-age settings (in seconds)
maxAge = 15
timeTravelMaxAge = 86400 # 1 day
[metrics]
host = "0.0.0.0"
port = 9002
[metrics.gql]
port = 9003
[database]
type = "postgres"
host = "uniswap-watcher-db"
port = 5432
database = "uni-info-watcher"
username = "vdbm"
password = "password"
synchronize = true
logging = false
maxQueryExecutionTime = 100
[database.extra]
# maximum number of clients the pool should contain
max = 20
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server.example.com:8083/graphql"
rpcProviderEndpoint = "http://ipld-eth-server.example.com:8082"
[upstream.cache]
name = "requests"
enabled = false
deleteOnStart = false
[upstream.uniWatcher]
gqlEndpoint = "http://uni-watcher-server:3003/graphql"
gqlSubscriptionEndpoint = "ws://uni-watcher-server:3003/graphql"
[upstream.tokenWatcher]
gqlEndpoint = "http://erc20-watcher-server:3001/graphql"
gqlSubscriptionEndpoint = "ws://erc20-watcher-server:3001/graphql"
[jobQueue]
dbConnectionString = "postgres://vdbm:password@uniswap-watcher-db:5432/uni-info-watcher-job-queue"
maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 1000
eventsInBatch = 50
subgraphEventsOrder = true
blockDelayInMilliSecs = 2000
prefetchBlocksInMem = true
prefetchBlockCount = 10
@@ -0,0 +1,41 @@
[server]
host = "0.0.0.0"
port = 3003
kind = "active"
[metrics]
host = "0.0.0.0"
port = 9000
[metrics.gql]
port = 9001
[database]
type = "postgres"
host = "uniswap-watcher-db"
port = 5432
database = "uni-watcher"
username = "vdbm"
password = "password"
synchronize = true
logging = false
maxQueryExecutionTime = 100
[upstream]
[upstream.ethServer]
gqlApiEndpoint = "http://ipld-eth-server.example.com:8083/graphql"
rpcProviderEndpoint = "http://ipld-eth-server.example.com:8082"
[upstream.cache]
name = "requests"
enabled = false
deleteOnStart = false
[jobQueue]
dbConnectionString = "postgres://vdbm:password@uniswap-watcher-db:5432/uni-watcher-job-queue"
maxCompletionLagInSecs = 300
jobDelayInMilliSecs = 0
eventsInBatch = 50
lazyUpdateBlockProgress = true
blockDelayInMilliSecs = 2000
prefetchBlocksInMem = true
prefetchBlockCount = 10
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
set -e
set -u
echo "Watching factory contract 0x1F98431c8aD98523631AE4a59f267346ea31F984"
yarn watch:contract --address 0x1F98431c8aD98523631AE4a59f267346ea31F984 --kind factory --startingBlock 12369621 --checkpoint
echo "Watching nfpm contract 0xC36442b4a4522E871399CD717aBDD847Ab11FE88"
yarn watch:contract --address 0xC36442b4a4522E871399CD717aBDD847Ab11FE88 --kind nfpm --startingBlock 12369651 --checkpoint
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
# Build a local version of the task executor for act-runner
docker build -t cerc/act-runner-task-executor:local -f ${CERC_REPO_BASE_DIR}/act_runner/Dockerfile.task-executor ${CERC_REPO_BASE_DIR}/act_runner
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
# Build a local version of the act-runner image
docker build -t cerc/act-runner:local -f ${CERC_REPO_BASE_DIR}/act_runner/Dockerfile ${CERC_REPO_BASE_DIR}/act_runner
@@ -0,0 +1,31 @@
# From: https://github.com/vyzo/gerbil/blob/master/docker/Dockerfile
FROM gerbil/ubuntu
# Install the Solidity compiler (latest stable version)
# and guile
# and libsecp256k1-dev
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && export DEBCONF_NOWARNINGS="yes" && \
apt-get install -y software-properties-common && \
add-apt-repository ppa:ethereum/ethereum && \
apt-get update && \
apt-get install -y solc && \
apt-get install -y guile-3.0 && \
apt-get install -y libsecp256k1-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN mkdir /scripts
COPY install-dependencies.sh /scripts
# Override the definition of GERBIL_PATH in the base image, but
# is safe because (at present) no gerbil packages are installed in the base image
# We do this in order to allow a set of pre-installed packages from the container
# to be used with an arbitrary, potentially different set of projects bind mounted
# at /src
ENV GERBIL_PATH=/.gerbil
RUN bash /scripts/install-dependencies.sh
# Needed to prevent git from raging about /src
RUN git config --global --add safe.directory /src
COPY entrypoint.sh /scripts
ENTRYPOINT ["/scripts/entrypoint.sh"]
@@ -0,0 +1,21 @@
## Gerbil Scheme Builder
This container is designed to be used as a simple "build runner" environment for building and running Scheme projects using Gerbil and gerbil-ethereum. Its primary purpose is to allow build/test/run of gerbil code without the need to install and configure all the necessary prerequisites and dependencies on the host system.
### Usage
First build the container with:
```
$ laconic-so build-containers --include cerc/builder-gerbil
```
Now, assuming a gerbil project located at `~/projects/my-project`, run bash in the container mounting the project with:
```
$ docker run -it -v $HOME/projects/my-project:/src cerc/builder-gerbil:latest bash
root@7c4124bb09e3:/src#
```
Now gerbil commands can be run.
@@ -0,0 +1,2 @@
#!/bin/sh
exec "$@"
@@ -0,0 +1,16 @@
DEPS=(github.com/fare/gerbil-utils
github.com/fare/gerbil-poo
github.com/fare/gerbil-crypto
github.com/fare/gerbil-persist
github.com/fare/gerbil-ethereum
github.com/drewc/gerbil-swank
github.com/drewc/drewc-r7rs-swank
github.com/drewc/smug-gerbil
github.com/drewc/ftw
github.com/vyzo/gerbil-libp2p
) ;
for i in ${DEPS[@]} ; do
echo "Installing gerbil package: $i"
gxpkg install $i
gxpkg build $i
done
@@ -0,0 +1,69 @@
# Originally from: https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile
# Which depends on: https://github.com/nodejs/docker-node/blob/main/Dockerfile-debian.template
# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster
ARG VARIANT=18-bullseye
FROM node:${VARIANT}
# Set these args to change the uid/gid for the base container's "node" user to match that of the host user (so bind mounts work as expected).
ARG CERC_HOST_UID=1000
ARG CERC_HOST_GID=1000
# Make these values available at runtime to allow a consistency check.
ENV HOST_UID=${CERC_HOST_UID}
ENV HOST_GID=${CERC_HOST_GID}
ARG USERNAME=node
ARG NPM_GLOBAL=/usr/local/share/npm-global
# Add NPM global to PATH.
ENV PATH=${NPM_GLOBAL}/bin:${PATH}
SHELL ["/bin/bash", "-c"]
RUN \
# Don't switch container uid/gid if the host uid/gid is 1000 (which means it's already correct),
# or root (which won't work anyway) or <= 100 (which also won't work).
if [[ ${CERC_HOST_GID} -ne 1000 && ${CERC_HOST_GID} -ne 0 && ${CERC_HOST_GID} -gt 100 ]]; then \
groupmod -g ${CERC_HOST_GID} ${USERNAME}; \
fi \
&& if [[ ${CERC_HOST_UID} -ne 1000 && ${CERC_HOST_UID} -ne 0 && ${CERC_HOST_UID} -gt 100 ]]; then \
usermod -u ${CERC_HOST_UID} -g ${CERC_HOST_GID} ${USERNAME} && chown ${CERC_HOST_UID}:${CERC_HOST_GID} /home/${USERNAME}; \
fi
RUN \
# Configure global npm install location, use group to adapt to UID/GID changes
if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi \
&& usermod -a -G npm ${USERNAME} \
&& umask 0002 \
&& mkdir -p ${NPM_GLOBAL} \
&& touch /usr/local/etc/npmrc \
&& chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc \
&& chmod g+s ${NPM_GLOBAL} \
&& npm config -g set prefix ${NPM_GLOBAL} \
&& su ${USERNAME} -c "npm config -g set prefix ${NPM_GLOBAL}" \
# Install eslint
&& su ${USERNAME} -c "umask 0002 && npm install -g eslint" \
&& npm cache clean --force > /dev/null 2>&1
# [Optional] Uncomment this section to install additional OS packages.
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends jq
# [Optional] Uncomment if you want to install an additional version of node using nvm
# ARG EXTRA_NODE_VERSION=10
# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}"
# [Optional] Uncomment if you want to install more global node modules
# RUN su node -c "npm install -g <your-package-list-here>"
RUN mkdir /scripts
COPY build-npm-package.sh /scripts
COPY yarn-local-registry-fixup.sh /scripts
COPY build-npm-package-local-dependencies.sh /scripts
COPY check-uid.sh /scripts
ENV PATH="${PATH}:/scripts"
COPY entrypoint.sh .
ENTRYPOINT ["./entrypoint.sh"]
# Placeholder CMD : generally this will be overridden at run time like :
# docker run -it -v /home/builder/cerc/laconic-sdk:/workspace cerc/builder-js sh -c 'cd /workspace && yarn && yarn build'
CMD node --version
@@ -0,0 +1,17 @@
## JS/TS Package Builder
This container is designed to be used as a simple "build runner" environment for building and publishing JS/TS projects
using `yarn`.
### Running a build
As a temporary measure while the necessary functionality is being added to Stack Orchestrator,
it is possible to build packages manually by invoking `docker run` , for example as follows:
```
$ docker run --rm -it --add-host gitea.local:host-gateway \
-v ${HOME}/cerc/laconic-registry-cli:/workspace cerc/builder-js \
sh -c 'cd /workspace && CERC_NPM_AUTH_TOKEN=6613572a28ebebaee20ccd90064251fa8c2b94f6 \
build-npm-package-local-dependencies.sh http://gitea.local:3000/api/packages/cerc-io/npm/ 0.1.8'
```
@@ -0,0 +1,37 @@
#!/bin/bash
# Usage: build-npm-package-local-dependencies.sh <registry-url> <publish-with-this-version>
# Runs build-npm-package.sh after first fixing up yarn.lock to use a local
# npm registry for all packages in a spcific scope (currently @cerc-io and @lirewine)
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
if ! [[ $# -eq 1 || $# -eq 2 ]]; then
echo "Illegal number of parameters" >&2
exit 1
fi
if [[ -z "${CERC_NPM_AUTH_TOKEN}" ]]; then
echo "CERC_NPM_AUTH_TOKEN is not set" >&2
exit 1
fi
# Exit on error
set -e
local_npm_registry_url=$1
package_publish_version=$2
# If we need to handle an additional scope, add it to the list below:
npm_scopes_to_handle=("@cerc-io" "@lirewine")
for npm_scope_for_local in ${npm_scopes_to_handle[@]}
do
# We need to configure the local registry
npm config set ${npm_scope_for_local}:registry ${local_npm_registry_url}
npm config set -- ${local_npm_registry_url}:_authToken ${CERC_NPM_AUTH_TOKEN}
# Find the set of dependencies from the specified scope
mapfile -t dependencies_from_scope < <(cat package.json | jq -r '.dependencies | with_entries(if (.key|test("^'${npm_scope_for_local}'/.*$")) then ( {key: .key, value: .value } ) else empty end ) | keys[]')
echo "Fixing up dependencies in scope ${npm_scope_for_local}"
for package in "${dependencies_from_scope[@]}"
do
echo "Fixing up package ${package}"
yarn-local-registry-fixup.sh $package ${local_npm_registry_url}
done
done
echo "Running build"
build-npm-package.sh ${local_npm_registry_url} ${package_publish_version}
@@ -0,0 +1,37 @@
#!/bin/bash
# Usage: build-npm-package.sh <registry-url> <publish-with-this-version>
# Note: supply the registry auth token in CERC_NPM_AUTH_TOKEN
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
if ! [[ $# -eq 1 || $# -eq 2 ]]; then
echo "Illegal number of parameters" >&2
exit 1
fi
if [[ -z "${CERC_NPM_AUTH_TOKEN}" ]]; then
echo "CERC_NPM_AUTH_TOKEN is not set" >&2
exit 1
fi
if [[ $# -eq 2 ]]; then
package_publish_version=$2
else
package_publish_version=$( cat package.json | jq -r .version )
fi
# Exit on error
set -e
# Get the name of this package from package.json since we weren't passed that
package_name=$( cat package.json | jq -r .name )
local_npm_registry_url=$1
npm config set @cerc-io:registry ${local_npm_registry_url}
npm config set @lirewine:registry ${local_npm_registry_url}
npm config set -- ${local_npm_registry_url}:_authToken ${CERC_NPM_AUTH_TOKEN}
# First check if the version of this package we're trying to build already exists in the registry
package_exists=$( yarn info --json ${package_name}@${package_publish_version} 2>/dev/null | jq -r .data.dist.tarball )
if [[ ! -z "$package_exists" && "$package_exists" != "null" ]]; then
echo "${package_publish_version} of ${package_name} already exists in the registry, skipping build"
exit 0
fi
echo "Build and publish ${package_name} version ${package_publish_version}"
yarn install
yarn build
yarn publish --non-interactive --new-version ${package_publish_version} --no-git-tag-version
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# Make the container usable for uid/gid != 1000
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
current_uid=$(id -u)
current_gid=$(id -g)
# Don't check if running as root
if [[ ${current_uid} == 0 ]]; then
exit 0
fi
# Check the current uid/gid vs the uid/gid used to build the container.
# We do this because both bind mounts and npm tooling require the uid/gid to match.
if [[ ${current_gid} != ${HOST_GID} ]]; then
echo "Warning: running with gid: ${current_gid} which is not the gid for which this container was built (${HOST_GID})"
exit 0
fi
if [[ ${current_uid} != ${HOST_UID} ]]; then
echo "Warning: running with gid: ${current_uid} which is not the uid for which this container was built (${HOST_UID})"
exit 0
fi
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
/scripts/check-uid.sh
exec "$@"
@@ -0,0 +1,58 @@
#!/bin/bash
# Usage: yarn-local-registry-fixup.sh <package-to-fix> <registry-url>
# Assumes package.json and yarn.lock are in the cwd
# The purpose of this script is to take a project cloned from git
# and "fixup" its yarn.lock file such that specified dependency
# will be fetched from a registry other than the one used when
# yarn.lock was generated. It updates all checksums using data
# from the "new" registry (because due to embedded timestamps etc
# the same source code re-built later will not have the same checksum).
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
if [[ $# -ne 2 ]]; then
echo "Illegal number of parameters" >&2
exit 1
fi
# Exit on error
set -e
target_package=$1
local_npm_registry_url=$2
# Extract the actual version pinned in yarn.lock
# See: https://stackoverflow.com/questions/60454251/how-to-know-the-version-of-currently-installed-package-from-yarn-lock
versioned_target_package=$(yarn list --pattern ${target_package} --depth=0 --json --non-interactive --no-progress | jq -r '.data.trees[].name')
# Use yarn info to get URL checksums etc from the new registry
yarn_info_output=$(yarn info --json $versioned_target_package 2>/dev/null)
# First check if the target version actually exists.
# If it doesn't exist there will be no .data.dist.tarball element,
# and jq will output the string "null"
package_tarball=$(echo $yarn_info_output | jq -r .data.dist.tarball)
if [[ $package_tarball == "null" ]]; then
echo "FATAL: Target package version ($versioned_target_package) not found" >&2
exit 1
fi
# Code below parses out the values we need
# When running inside a container, the registry can return a URL with the wrong host name due to proxying
# so we need to check if that has happened and fix the URL if so.
if ! [[ "${package_tarball}" =~ ^${local_npm_registry_url}.* ]]; then
# HACK: I've hard-wired the host names below. Replace with proper implementation
# TODO: remove the hack when proven no longer necessary
package_tarball=$( echo ${package_tarball} | sed -e 's/localhost/gitea.local/g' )
fi
package_integrity=$(echo $yarn_info_output | jq -r .data.dist.integrity)
package_shasum=$(echo $yarn_info_output | jq -r .data.dist.shasum)
package_resolved=${package_tarball}#${package_shasum}
# Some strings need to be escaped so they work when passed to sed later
escaped_package_integrity=$(printf '%s\n' "$package_integrity" | sed -e 's/[\/&]/\\&/g')
escaped_package_resolved=$(printf '%s\n' "$package_resolved" | sed -e 's/[\/&]/\\&/g')
escaped_target_package=$(printf '%s\n' "$target_package" | sed -e 's/[\/&]/\\&/g')
if [ -n "$CERC_SCRIPT_VERBOSE" ]; then
echo "Tarball: ${package_tarball}"
echo "Integrity: ${package_integrity}"
echo "Shasum: ${package_shasum}"
echo "Resolved: ${package_resolved}"
fi
# Use magic sed regex to replace the values in yarn.lock
# Note: yarn.lock is not json so we can not use jq for this
sed -i -e '/^\"'${escaped_target_package}'.*\":$/ , /^\".*$/ s/^\([[:space:]]\{1,\}resolved \).*$/\1'\"${escaped_package_resolved}\"'/' yarn.lock
sed -i -e '/^\"'${escaped_target_package}'.*\":$/ , /^\".*$/ s/^\([[:space:]]\{1,\}integrity \).*$/\1'${escaped_package_integrity}'/' yarn.lock
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env bash
# Build cerc/eth-probe
docker build -t cerc/eth-probe:local ${CERC_REPO_BASE_DIR}/eth-probe
@@ -1,10 +1,17 @@
FROM skylenet/ethereum-genesis-generator@sha256:210353ce7c898686bc5092f16c61220a76d357f51eff9c451e9ad1b9ad03d4d3 AS ethgen FROM skylenet/ethereum-genesis-generator@sha256:210353ce7c898686bc5092f16c61220a76d357f51eff9c451e9ad1b9ad03d4d3 AS ethgen
FROM cerc/go-ethereum:local # Using the same golang image as used to build geth: https://github.com/cerc-io/go-ethereum/blob/HEAD/Dockerfile
RUN apk add --no-cache python3 python3-dev py3-pip curl wget jq build-base gettext libintl openssl bash FROM golang:1.18-alpine as delve
RUN go install github.com/go-delve/delve/cmd/dlv@latest
COPY --from=ethgen /usr/local/bin/eth2-testnet-genesis /usr/local/bin/eth2-testnet-genesis FROM cerc/go-ethereum:local as geth
COPY --from=ethgen /usr/local/bin/eth2-val-tools /usr/local/bin/eth2-val-tools
FROM alpine:latest
RUN apk add --no-cache python3 python3-dev py3-pip curl wget jq build-base gettext libintl openssl bash bind-tools postgresql-client
COPY --from=delve /go/bin/dlv /usr/local/bin/
COPY --from=ethgen /usr/local/bin/eth2-testnet-genesis /usr/local/bin/
COPY --from=ethgen /usr/local/bin/eth2-val-tools /usr/local/bin/
COPY --from=ethgen /apps /apps COPY --from=ethgen /apps /apps
RUN cd /apps/el-gen && pip3 install -r requirements.txt RUN cd /apps/el-gen && pip3 install -r requirements.txt
@@ -14,6 +21,7 @@ COPY run-el.sh /opt/testnet/run.sh
RUN cd /opt/testnet && make genesis-el RUN cd /opt/testnet && make genesis-el
COPY --from=geth /usr/local/bin/geth /usr/local/bin/
RUN geth init /opt/testnet/build/el/geth.json && rm -f ~/.ethereum/geth/nodekey RUN geth init /opt/testnet/build/el/geth.json && rm -f ~/.ethereum/geth/nodekey
ENTRYPOINT ["/opt/testnet/run.sh"] ENTRYPOINT ["/opt/testnet/run.sh"]

Some files were not shown because too many files have changed in this diff Show More