Skip to content

Instantly share code, notes, and snippets.

@yourbuddyconner
Last active August 27, 2020 03:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yourbuddyconner/41b7944cf6403cb7c80b39bdcde8ce78 to your computer and use it in GitHub Desktop.
Save yourbuddyconner/41b7944cf6403cb7c80b39bdcde8ce78 to your computer and use it in GitHub Desktop.
import docker
import os
import subprocess
import click
import glob
import json
import random
import re
import sys
from pathlib import Path
# This script is designed to run a local seed node that can be used to bootstrap a network
# Example Invocation for a Seed Node:
# python3 scripts/testnet-validation/local_seed.py run --seed --working-directory ~/Desktop/config --coda-docker-image codaprotocol/coda-daemon:0.0.12-beta-rosetta-dockerfile-aec5631 --gossip-port 10000
# Example Invocation for a Joiner Node:
# python3 scripts/testnet-validation/local_seed.py run --peer /dns4/seed-one.genesis-redux.o1test.net/tcp/10002/p2p/12D3KooWP7fTKbyiUcYJGajQDpCFo2rDexgTHFJTxCH8jvcL1eAH --working-directory ~/Desktop/config/ --docker-image codaprotocol/coda-daemon:0.0.12-beta-rosetta-dockerfile-aec5631 --gossip-port 10001
# Example daemon.json
# {
# "daemon": {},
# "genesis": {
# "genesis_state_timestamp": "2020-07-27T22:53:52Z",
# "k": 20,
# "delta": 3
# },
# "proof": {
# "c": 8
# },
# "ledger": {"accounts":[{"balance":"100.000000000","delegate":null,"pk":"4vsRCViQQRxXfkgEspR9vPWLypuSEGkZtHxjYF7srq5M1mZN4LSoX7wWCFZGitJLmdoozDXmrCugvBBKsePd6hfBAp9P3eTCHs5HwdC763A1FbjzskfrCvWMq9KXXsmFxWhYpG9nnhWzqSC1","sk":null},{"balance":"100000.000000000","delegate":null,"pk":"4vsRCVU6WJwRfmJP7AvmSrMKUy18qofK5GNuSoptHHipXk7TDKGwevzVikRi9TWwWnT4J73pBKKMDxYgnCwkp8kxHGvbq7MqaFFfagV6MvJaH4CAotkUQT95oLCu3Cr5pyFUgomBv7PWxVPm","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVg1924cL4LDHpRcZdRpPFroo46TiqwtsWrMgxJvPDAgiiGGfw8FwqGjKFV5A1rdNACogLDW1wTxZTN384PEVjchkdiUh1iYY21Srs6ftKne91Lpyih6gsfV5TFDATppprkcvzXC6dNH","pk":"4vsRCVYSiMpo1m8xyW1Ttfbp3TaDxbpqRrbf52cWw4aWAQv3oiXcwS7CFfYJXXkNM5xuMtP1boiue5hA32Rmyw8LoYrFKifXmBnyKPbWjE5cxHh4fAKos7cntrA4rJqwsCrLMNbWQdeiqCrv","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVg1924cL4LDHpRcZdRpPFroo46TiqwtsWrMgxJvPDAgiiGGfw8FwqGjKFV5A1rdNACogLDW1wTxZTN384PEVjchkdiUh1iYY21Srs6ftKne91Lpyih6gsfV5TFDATppprkcvzXC6dNH","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVVhYpjYuMKYS6PxtdqPkDhAYNM5QGiDkzxTvydZ3rrYFx2GehgzabJNCcYftwv1Vhv2oY8boCaVjcBU87ppHX8StndSc9Sh3Zi7FeHkB6YDgDhWmzHisWKsDVJEA2zvq5zRnQmE9fko","pk":"4vsRCVNaT9zydAYU1Xpjrc68f6G9MB5J57F4mYt4PVDdoHxfi1bNDRa9Jv1fCStH5ZKDSL7YgaAUEi2NYJxQFpfegkVwGHGAtAtgzdzzE2vgsuzr9wjocVf8NywmM5Z9oeEctHEKiBitDgE3","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVVhYpjYuMKYS6PxtdqPkDhAYNM5QGiDkzxTvydZ3rrYFx2GehgzabJNCcYftwv1Vhv2oY8boCaVjcBU87ppHX8StndSc9Sh3Zi7FeHkB6YDgDhWmzHisWKsDVJEA2zvq5zRnQmE9fko","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVcLFNhaZfCRGVHJG5PFqNEVb1tAqW729z3DpcV5V5NoengKurdhHKwniHsgNvGxeERyK8QMDtoC1Tcgg2euZmAAS62PyRnpZKrwfyfWQ8fCLfExGcZ2bC22Br47bf8MUg6iyQ4HyRHQ","pk":"4vsRCVPs2GmGPbALtNXHEUjqx5DvyZ8X1Wxxf6xLGw1udrkbxHMSTVeyKzFvvM2KESk5RjMHfrAjqZhwQKJGRKWsfgLtJcZeyqxQVffvpNvttFQ5cBiki89NAbZrYBxjFnSsA44VKJYZWqCs","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVcLFNhaZfCRGVHJG5PFqNEVb1tAqW729z3DpcV5V5NoengKurdhHKwniHsgNvGxeERyK8QMDtoC1Tcgg2euZmAAS62PyRnpZKrwfyfWQ8fCLfExGcZ2bC22Br47bf8MUg6iyQ4HyRHQ","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVHDz8m4GQ5Cn8J3qkpyfFnyQuuQGQFQSak4jXWJVNmFXKVsmMCpyXhNyNjwyHokJGepqNZXWtzSqc3ixk2Gxu4fghgW24ShnDYSvNE8qr19zpd3ZubsdUWAK8hD4mCbbiJZ91HM5tt5","pk":"4vsRCVxbQbW13f3iFr8yLsAnjYHHuCVgqwHD2jVTi3EhHkcqGFzB6y6746d38KmWhm6VG6n43BFHVibqMTLAn4XBE8CnpYQrB9hDKHxipV9ahraEvkkhX7NsCVneLbBJsKFnRkdqEasAM64m","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVHDz8m4GQ5Cn8J3qkpyfFnyQuuQGQFQSak4jXWJVNmFXKVsmMCpyXhNyNjwyHokJGepqNZXWtzSqc3ixk2Gxu4fghgW24ShnDYSvNE8qr19zpd3ZubsdUWAK8hD4mCbbiJZ91HM5tt5","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVRQDKe74xgCzAHiydG2Upr8BYNmzLA6HHSk3PGVMLZXg1rBu7ww4FtSGV6NVr7QL5u4rDQp8bKrxH2DJpF56PuTbThQxoJX4fVZrxkcd6gPvPFfjSu8v96KNtzA3ppvapTh26HUzN3B","pk":"4vsRCVpEEPmmeXXWvQtXRmXzK2gCYwACNsojXj8FHt8GDnCYLyvrfkMojXGaVzEVadaBzHzjio9bR25RsKRcnDDDLt5pRQvrLW3JncSzodWj162rDKuz7dVhu4ZQwAR35JABTWVbhLL3KQfC","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVRQDKe74xgCzAHiydG2Upr8BYNmzLA6HHSk3PGVMLZXg1rBu7ww4FtSGV6NVr7QL5u4rDQp8bKrxH2DJpF56PuTbThQxoJX4fVZrxkcd6gPvPFfjSu8v96KNtzA3ppvapTh26HUzN3B","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVK9hGdT6pSJ9xztgy22XLGFwYKP8mRKr3oUpE773VhcoERJEdw7WcazjGvAZk4pi2xrzuY9JujBAHcBYQHTRebFAVvVGnAAvwrUeWt1VecX75h8DtLv4xvte9j5GB3QdExebFQHYpwP","pk":"4vsRCVGSa9bEKn491z4FajyrDX63KVMv4z2tar1pNTRDNeGgSNpcHbXdiYfKf6vzY9QzosDrwVGZjobcZrny7L2kuZXmy2diB6PiUgsDA8sUQkh9PYfAFdxUZhUhe298EjjxqbatRFJEuqCu","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVK9hGdT6pSJ9xztgy22XLGFwYKP8mRKr3oUpE773VhcoERJEdw7WcazjGvAZk4pi2xrzuY9JujBAHcBYQHTRebFAVvVGnAAvwrUeWt1VecX75h8DtLv4xvte9j5GB3QdExebFQHYpwP","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVt1dJiM7BK5b2kWpkqN5AeFZW1EMiCrBzs1BJHRTRf4gbVtvrchtQyWepfckMxZUA3nABA2QSfWCLmuQAJYxMPiQptiA7hE9t5DQuinT71FVs4xWMcBKCrwHuGHRcKgZunjmvZcnpg6","pk":"4vsRCVFznZhKBPta48HAwhxATkJ7r7TCB5zi1vDuw7tApsEa9VWoy2z9NGWZL15Nqch1kvpykepxzzFxjLjXjKhvNppfrtEDayq8BYU1wpePCrWMFQZMFyM5C4sbXvsrdpzdwasBedCD9fa6","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVt1dJiM7BK5b2kWpkqN5AeFZW1EMiCrBzs1BJHRTRf4gbVtvrchtQyWepfckMxZUA3nABA2QSfWCLmuQAJYxMPiQptiA7hE9t5DQuinT71FVs4xWMcBKCrwHuGHRcKgZunjmvZcnpg6","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVz9X2o8LeeQom8Yh3e9Br3sNSpUaTxzKeu8oxz1XRWmCys64Py4nnzEFXhRJyYY5Z72UNuhPxSdpDxQGCVyQL8cZPvPiBenxdeZLj9kE9pTV5wDGKZgJzrP6AEP7X3k9nP2WQhipVvt","pk":"4vsRCVnAghYLJnT7ZcJ3HbH9ockQT8zJtSyaofxTL27wHK1cK5vrDoQJSYHH8Wb3ASMXNgtJXn7VNEV8ar1TRk5sr28K5oqxKjHwrmQBcjo26dzuTLZ1LKScxsbzLwxbQzCC1ZoMiGEtFkJs","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVz9X2o8LeeQom8Yh3e9Br3sNSpUaTxzKeu8oxz1XRWmCys64Py4nnzEFXhRJyYY5Z72UNuhPxSdpDxQGCVyQL8cZPvPiBenxdeZLj9kE9pTV5wDGKZgJzrP6AEP7X3k9nP2WQhipVvt","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVtqUDBF2R55tbnoqwaG168a445zjgy6N1y5VJvjT2zHKVMqbciumUsimqWfMoCqULYCdXr2EHHCHBw6fvEMn6Xqd5qztcXJADA9U1RbMbGFoc1gyXrrmoMbdo4wcbmR3SLmgPArFLuc","pk":"4vsRCVXbfvEnjWASpXEBERx4Urw4u3aV5tHGekhjxPqGpi9s6QZgoYiJePXkahRaEdfXFZdf632BYAnj1T3EN6txuQ1gTNWS8KGLm3L4HL6ddhHkqGpGgw67W3c8HCuf6cfxwR1nuhnf8xd4","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVtqUDBF2R55tbnoqwaG168a445zjgy6N1y5VJvjT2zHKVMqbciumUsimqWfMoCqULYCdXr2EHHCHBw6fvEMn6Xqd5qztcXJADA9U1RbMbGFoc1gyXrrmoMbdo4wcbmR3SLmgPArFLuc","sk":null},{"balance":"65500.000000000","delegate":"4vsRCVX2dpXxBCXwhDkLyKuWJkyh5HCX6B6F7ko3mhVCKShn3k8DAonB63ACqRTrB1st7VV97mYcUvLSLvLW4KMcQtdWkAmSCSnfTPfnfcFULrDpCmMRuJAfkJzpJYQLZHvLHTgTvC4Zx5au","pk":"4vsRCVrQCFrw7kps5Nt1Tqk9mgxbsQMZ2KHVD4snibBQEjXzS7ngbisNgmVaXznHuQnmYESRot3fNGxdo4ndLJXrp87LiU6xbvUab3MXYT1qXBMHA4JSKcuCp5B7UNGRKh6Gy4PYkBhKvzQd","sk":null},{"balance":"5000.000000000","delegate":null,"pk":"4vsRCVX2dpXxBCXwhDkLyKuWJkyh5HCX6B6F7ko3mhVCKShn3k8DAonB63ACqRTrB1st7VV97mYcUvLSLvLW4KMcQtdWkAmSCSnfTPfnfcFULrDpCmMRuJAfkJzpJYQLZHvLHTgTvC4Zx5au","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVV7zJm77J8JohqkG9u1TrLrbziPA7weuSXvFuMHFo7mL5FG8Zaj7BUxaQuqk4sw7sfTsSUQa8xuxGSBxqU3fdHRi69fe1tc1N9wps8RB9CMtqcSeampT39j8accqv6GUrpoXYK9enj5","pk":"4vsRCVNCeF6w3LTt2j42gGqup7RgXpv2mpicmYd9KUuyZrR4GqqmjR1nKPNt9Hn2rGoj8U5v9FAmdRrmPPvNqiSAofCLv8NFSUinMBZS8m1qbuSL3Zkj3m9nYtNfbRoUZdfRtXu6bmt72JbY","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVV7zJm77J8JohqkG9u1TrLrbziPA7weuSXvFuMHFo7mL5FG8Zaj7BUxaQuqk4sw7sfTsSUQa8xuxGSBxqU3fdHRi69fe1tc1N9wps8RB9CMtqcSeampT39j8accqv6GUrpoXYK9enj5","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVuQ4HKXULxUJAjXXHHodD92be3xVbYhPyDbyTmojjJST83QESNDfuBMpoJ4n1qQ98JP3WaZKGqLHu7a2Wfy9cSxLHmbAtu6g8g4uDYgSjQJVpVSEsZkncMuxnVnhSBCD3WJdtvELaEk","pk":"4vsRCVk7tXf3DtbcbyHJLPvR1dR6mKCT6sUeT2mVeTX88Hi2tfoXyD7ptHv1NhQr8mQoboUuKTnSHq6sQmPnKb23475S8xFMxgpAkDZNLnVDWTYbMFaBA5zdVNYSZUQF61skWpkfeGAD9JwG","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVuQ4HKXULxUJAjXXHHodD92be3xVbYhPyDbyTmojjJST83QESNDfuBMpoJ4n1qQ98JP3WaZKGqLHu7a2Wfy9cSxLHmbAtu6g8g4uDYgSjQJVpVSEsZkncMuxnVnhSBCD3WJdtvELaEk","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVNR6FxPsKsFJCzwVu7SKXzkAhPyKiqSzuUGsCbiFDA5aaSkNf822KxEED3ejDpaF3jp37hKnCjntL5LSSku82NSHNnAWcCgBHMigfGuQDiPcRA23G5Zzuw9r6YHThPDPZ6VHW69DTyd","pk":"4vsRCVvwmnRtx2MPsHxRDx5ZThxrSfThGQDQxXzzGHp5uqUSbooNi7pmvituEH41muxABkdPfcNZ99QCzv9cKV9CfDTRtbdCrXH7PK2tEzcSiBiMYZU1KtcXuscjHFZGf42iY3uZasjdmAPC","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVNR6FxPsKsFJCzwVu7SKXzkAhPyKiqSzuUGsCbiFDA5aaSkNf822KxEED3ejDpaF3jp37hKnCjntL5LSSku82NSHNnAWcCgBHMigfGuQDiPcRA23G5Zzuw9r6YHThPDPZ6VHW69DTyd","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVTRyp7sU7UKjEbFRCxYzGxMz5ahx2xAr1uxgLXnLJm7AApdqEGgbwGNTm6r8Rp7e4tCEuR6AAcuoRas652hjhJw3jKZ5wm9VT2tS7TXhnWSVqWmo26Sd8ttGUbJoKxaPKEbESzcMtbm","pk":"4vsRCVLz3a15hs1jEvXHkNBGeA8omtbLtBP6ofJUG73XZsoxAmd6TQve9tzEwUBNXrxc1RaMQwV4R63QcxUADibjf9fiwCNwWV9qKMYEDXXcgK7D9EfTfiPV8BunMHYACsbJq2amqwtJD1y2","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVTRyp7sU7UKjEbFRCxYzGxMz5ahx2xAr1uxgLXnLJm7AApdqEGgbwGNTm6r8Rp7e4tCEuR6AAcuoRas652hjhJw3jKZ5wm9VT2tS7TXhnWSVqWmo26Sd8ttGUbJoKxaPKEbESzcMtbm","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVroGEX3V3SaxLaU3hTdi3aurg81TPV2CF1aUf7ADSPbFPWatYsK99KQPe5jXJUnNRTPjW4VC6cALffJFpgMK7SZBWNxMQLzBtmd3YZghhnNTXZqJ8wGVZR9iw8moRkgkFqgsNYokua8","pk":"4vsRCVMshhwCberzrZBeqAFjapUrm4K7k3UYFFGYz72oYcyNzdQpGBuFayz41bswPePft5MT5JEdfvDs4VQfPkVUw9fmdQanBmgY8Ux6t2CxNEw1UjQp8CZVYzBkB57kFwA37JXnWUZBx7bf","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVroGEX3V3SaxLaU3hTdi3aurg81TPV2CF1aUf7ADSPbFPWatYsK99KQPe5jXJUnNRTPjW4VC6cALffJFpgMK7SZBWNxMQLzBtmd3YZghhnNTXZqJ8wGVZR9iw8moRkgkFqgsNYokua8","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVh74sPRnerTsQAemt3QojcXWoNABgs1kXYmC5hGFPJqEXyuNKP21wbe1dtgKj9Z7YykWwWD5ArmQvpva9RsXb4M25LPfUjUDT7LGhLgCWXKErwzrqP9q1w5qUmZDiQVVHGGp7Wh2ZdZ","pk":"4vsRCVpv7UA4T9nbwyGuK2vstmEdoM1ZpGmmZSJgakcFPRvfNap22GVgRDz4bT29wVrzGfTQgVMfPXuo9FNnDUXVTWSxDH8B8j27T99f8wkCqhXTTDqM3xY1jwYpH26Dawb87XFCS7EioB9w","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVh74sPRnerTsQAemt3QojcXWoNABgs1kXYmC5hGFPJqEXyuNKP21wbe1dtgKj9Z7YykWwWD5ArmQvpva9RsXb4M25LPfUjUDT7LGhLgCWXKErwzrqP9q1w5qUmZDiQVVHGGp7Wh2ZdZ","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVvijdHf976fpKUnu4fycYZ5fogBvGxVn1xusZMfw6ebdCox2WuNgpougEfjEZAtUd9ab1q8N5fhkfm6xyTmoBXdFnkKpt1uDvjfw938Gxxx9YZGaM8LX6bHaDYS2AsviyLnZsK3u2eD","pk":"4vsRCVR2kWgAWMPg9pPiSjZxNFGTPAAAuqXtqQhfQqKdBoDgrDo4DsqJKoWj4Sy9qhNU6AEqfb8CzfVXvmVUkfxD6yxfYC5Myudo8rUXUrMqh8phZryZ6XLiZdsyYyphzmiDQfxRw9o1A6UW","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVvijdHf976fpKUnu4fycYZ5fogBvGxVn1xusZMfw6ebdCox2WuNgpougEfjEZAtUd9ab1q8N5fhkfm6xyTmoBXdFnkKpt1uDvjfw938Gxxx9YZGaM8LX6bHaDYS2AsviyLnZsK3u2eD","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVLfDppdFh1u4guUoLERTkTFVspj25VLtANkhZezTMp4n6AF8Fz7Qa71CsGKr4QDKJDiMSdKRUpyKCHDj76Zu5HwuU4MUb6hcMAB4zQEz6xUTQoqzjnhJcdxCcZU67RjzX3fTJeuo8ED","pk":"4vsRCVrykcVoLjATArSyhuQafgvN17MHwcdmWejQ7dznuNFEMZhPAmFgNB7LQLCgv3L1BxeXhEYt6596gc6T3C6UpdbX45YmtG77Khm1yL2rKVmvVrNv9y8UjL5RhsoLehPEzZwBFTp9cCQ8","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVLfDppdFh1u4guUoLERTkTFVspj25VLtANkhZezTMp4n6AF8Fz7Qa71CsGKr4QDKJDiMSdKRUpyKCHDj76Zu5HwuU4MUb6hcMAB4zQEz6xUTQoqzjnhJcdxCcZU67RjzX3fTJeuo8ED","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVkwcWQZNLTT6Lnrekbsk2C6fJk5XKozzfi9cVwgb8Q8QRQ976Ads69Lg7zeJFFnJ9YjQVVJqFXoHrSrjRgPvR2AFRGqrhAf2pdEJKjp5s6dZZ5KGeapXFqVoEFEQY7uCB7WDRxRxdLG","pk":"4vsRCVyuvMAnZ97AWKr3zQJazYCVG3gnJYT1Ns84gHn3x6r4epBxPfGLqQbQ1Qy1Yv7WbuuH6BPQkduJtuF789VizjTZGAB357e47QwCQQqE5d4SQzrQihbRi2bbngu6oT2hg1ppTseekduc","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVkwcWQZNLTT6Lnrekbsk2C6fJk5XKozzfi9cVwgb8Q8QRQ976Ads69Lg7zeJFFnJ9YjQVVJqFXoHrSrjRgPvR2AFRGqrhAf2pdEJKjp5s6dZZ5KGeapXFqVoEFEQY7uCB7WDRxRxdLG","sk":null},{"balance":"11550000.000000000","delegate":"4vsRCVY8qhHBGhGZrqnPEzHYZF1bg4rmVPqDrCRYwRfXUkAUf4pSXUcXJ8SoXTLcTQS15dcWFffD9zXts9AdAWn3BZ6LbqFWJ8HCAvoR4v8Ee3EospumHd12JfE3vNczoytMDN8ffyihRXwm","pk":"4vsRCVYYNfUtDL9NbgyrLL5LDa2qWihihkiTnkBYWy6JVnDMhQD5JKk3cg8hhXnLsqkYdCDYLpyJibSEkN8DSpEcqSKMXcmgLA2GTWnQnEUe7mZ23BsamGFJ3ZEEkq8qkH8YxqMc9JchsTDt","sk":null},{"balance":"0.000000000","delegate":null,"pk":"4vsRCVY8qhHBGhGZrqnPEzHYZF1bg4rmVPqDrCRYwRfXUkAUf4pSXUcXJ8SoXTLcTQS15dcWFffD9zXts9AdAWn3BZ6LbqFWJ8HCAvoR4v8Ee3EospumHd12JfE3vNczoytMDN8ffyihRXwm","sk":null}],"name":"release","num_accounts":250}
# }
# Each node bootstrapping to the network will need this IDENTICAL daemon.json in order for it to work.
SCRIPT_DIR = Path(__file__).parent.absolute()
@click.group()
@click.option('--debug/--no-debug', default=False)
def cli(debug):
pass
def run_docker(daemon_image, gossip_port, working_directory, peer):
if peer is None:
command = f"""
daemon \
-external-port {gossip_port} \
-generate-genesis-proof true \
-config-dir /root/.coda-config \
-config-file /tmp/daemon.json \
-seed
"""
else:
command = f"""
daemon \
-external-port {gossip_port} \
-generate-genesis-proof true \
-config-dir /root/.coda-config \
-config-file /tmp/daemon.json \
-peer {peer}
"""
print(command)
dClient = docker.from_env()
container = dClient.containers.run(
daemon_image,
# entrypoint="bash -c",
command=command,
ports={f"{gossip_port}/tcp": gossip_port},
volumes={working_directory.absolute(): {'bind': '/tmp', 'mode': 'rw'}},
detach=True
)
print(container.logs())
@cli.command()
@click.option("--seed", is_flag=True, default=False, help="Whether to run the local daemon as a seed node or not.")
@click.option("--peer", default=None, help="A peer to bootstrap off of.")
@click.option("--gossip-port", default=10000, help="The port to expose on the Coda Daemon Docker Container.")
@click.option("--docker-image", default="codaprotocol/coda-daemon:latest", help="The Coda Daemon Docker Image to use.")
@click.option("--working-directory", default=".", help="The location to download temporary files to, namely the daemon.json")
def run(seed, peer, gossip_port, docker_image, working_directory):
if working_directory == ".":
working_directory = SCRIPT_DIR
else:
working_directory = Path(working_directory)
if seed:
run_docker(docker_image, gossip_port, working_directory, peer=None)
else:
if peer is None:
raise Exception("Please pass a --peer to this CLI if not running as a seed.")
run_docker(docker_image, gossip_port, working_directory, peer=peer)
if __name__ == "__main__":
cli()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment