{"id":31783909,"url":"https://github.com/stacks-network/hacknet","last_synced_at":"2025-10-10T10:57:44.248Z","repository":{"id":316112867,"uuid":"1001495254","full_name":"stacks-network/hacknet","owner":"stacks-network","description":"Stacks blockchain hacknet for testing several peered nodes in a controlled environment","archived":false,"fork":false,"pushed_at":"2025-09-24T16:12:18.000Z","size":102766,"stargazers_count":1,"open_issues_count":7,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-10T10:57:40.641Z","etag":null,"topics":["blockchain","stacks","stacks-blockchain"],"latest_commit_sha":null,"homepage":"https://github.com/stacks-network/stacks-core","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stacks-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-13T13:31:01.000Z","updated_at":"2025-09-24T16:12:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"2c3e3388-75b9-4180-9068-103e504698f5","html_url":"https://github.com/stacks-network/hacknet","commit_stats":null,"previous_names":["wileyj/devnet","stacks-network/hacknet"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/stacks-network/hacknet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fhacknet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fhacknet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fhacknet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fhacknet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stacks-network","download_url":"https://codeload.github.com/stacks-network/hacknet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Fhacknet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003566,"owners_count":26083595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","stacks","stacks-blockchain"],"created_at":"2025-10-10T10:57:39.261Z","updated_at":"2025-10-10T10:57:44.229Z","avatar_url":"https://github.com/stacks-network.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hacknet \n- Configured for 3 stacks miners and signers\n- bind-mounts a local filesystem for data persistence\n- Uses a chainstate archive to boot the network quickly\n- Configurable signing weight across the 3 signers\n\n## Quickstart\n\n### Start network using a chainstate archive\n*Note*: default chainstate archive at `./docker/chainstate.tar.zstd` will be used unless overridden by `CHAINSTATE_ARCHIVE` env var.\n\nCreates a dynamic chainstate folder at `./docker/chainstate/$(date +%s)` from a chainstate archive\n```sh\nmake up\n```\nTo override the archive used to restore the network:\n```sh\nCHAINSTATE_ARCHIVE=./docker/chainsate_new.tar.zstd make up\n```\nTo override the chainstate dir and resume a stopped network:\n*Note*: will not work for the `genesis` chainstate dir and absolute path is required\n```sh\nCHAINSTATE_DIR=$(pwd)/docker/chainsate/\u003cexisting chainstate dir\u003e make up\n```\n\n### Start network from genesis\nCreates a static chainstate folder at `./docker/chainstate/genesis`\n```sh\nmake genesis\n```\n\n### Stop the network\n```sh\nmake down\n```\n\n## Full list of options\n### Logs\n`docker logs -f \u003cservice\u003e` will work, along with some defined Makefile targets\n\n#### Store logs from all services under the current chainstate folder\n```sh\nmake backup-logs\n```\n\n#### Stream logs from all services\n```sh\nmake log-all\n```\n#### Stream single service logs\n```sh\nmake log stacks-signer-1 -- -f\n```\n\n#### Log from a single service\n*note* this will not follow the logs\n```sh\nmake log stacks-signer-1\n```\n\n#### Pause/Unpause service\nTo pause all services on the network\n```sh\nmake pause\n```\nTo resume the network\n```sh\nmake unpause\n```\n\n#### Restart a service\nUsed to simulate a node dropping off of the network\n```sh\nmake restart \u003ccontainer name\u003e \u003cnumber of seconds before restarting\u003e\n```\nex:\n```sh\nmake restart stacks-miner-3 61\n```\n\n#### Stop/Start service (kill)\nStop a single service\n```sh\nmake stop \u003cservice name\u003e\n```\nRestart the stopped service\n```sh\nmake start \u003cservice name\u003e\n```\n\n#### Stress the CPU\nTo simulate CPU load. Can be modified with:\n- `STRESS_CORES` to target how many worker threads (default will use all cores)\n- `STRESS_TIMEOUT` set a timeout (default of 120s)\n```sh\nmake stress\n```\n```sh\nSTRESS_CORES=10 STRESS_TIMEOUT=60 make stress\n```\n\n#### Create a chainstate snapshot\n- Setting the env var `PAUSE_HEIGHT` is optional to pause the chain at a specific height, else a default of Bitcoin block `999999999999` is used.\n- Setting the env var `MINE_INTERVAL_EPOCH3` is recommended to reach the `PAUSE_HEIGHT` more quickly to create the snapshot\n- Optionally, the `CHAINSTATE_ARCHIVE` env var may be set to store the archive in a non-default location/name\n**This operation will work with either the `up` or `genesis` targets**\n```sh\nmake genesis\n```\nor with env vars set:\n```sh\nMINE_INTERVAL_EPOCH3=10 PAUSE_HEIGHT=240 make genesis\n```\nFollowed by waiting until the Bitcoin miner reaches the specified height (ex: `docker logs -f bitcoin-miner`)\nOnce the Bitcoin miner has reached the specified height:\n```sh\nmake snapshot\n```\nThis will first bring down the network, then replace the existing `./docker/chainstate.tar.zstd` archive file used with the `up` Makefile target.\n\nTo create the chainstate archive in a non-default location/name *File path must be absolute*:\n```sh\nCHAINSTATE_ARCHIVE=$(pwd)/docker/chainstate_new.tar.zstd make snapshot\n```\n\n**Note**: `CHAINSTATE_ARCHIVE` must be defined to use with `make up` to use a non-default snapshot.\nex:\n```sh\nCHAINSTATE_ARCHIVE=./docker/chainstate_new.tar.zstd make up\n```\n\n#### Force stop the hacknet network\nIf the network is in a \"stuck\" state where the Makefile targets are not stopping the services (i.e. the `.current-chainstate-dir` file was removed while network was running), `down-force` may be used to force stop the network.\n\n```sh\nmake down-force\n```\n\nAdditionally, `clean` target will call `down-force` *and also* delete any chainstates on disk in `./docker/chainstate/*`\n```sh\nmake clean\n```\n\n\n## Containers\n\n- **bitcoin**: Runs a bitcoin regtest node\n- **bitcoin-miner**: creates 3 bitcoin regtest wallets and mines regtest blocks at a configurable cadence\n- **stacks-miner-1**: mines stacks blocks and sends events to stacks-signer-1\n- **stacks-miner-2**: mines stacks blocks and sends events to stacks-signer-2\n- **stacks-miner-3**: mines stacks blocks and sends events to stacks-signer-3\n- **stacks-signer-1**: event observer for stacks-miner-1\n- **stacks-signer-2**: event observer for stacks-miner-2\n- **stacks-signer-3**: event observer for stacks-miner-3\n- **stacks-api**: API instance receiving events from stacks-miner-1\n- **postgres**: postgres DB used by stacks-api\n- **stacker**: stack for `stacks-signer-1`, `stacks-signer-2` and `stacks-signer-3`\n- **tx-broadcaster**: submits token transfer txs to ensure stacks block production during a sortition\n\n## Stacks Miner Accounts\n\n### Miner 1\n\n```text\n‣ Mnemonic:               lunar amount hard result reunion aisle goat fluid sorry modify minute pretty point visa cart material left tilt travel sausage library clutch wire tuna\n‣ Private Key:            23ad69119000a241706486b9349556bdc6dfabdf9d9131b153a57c6b0330fb0d01\n‣ Public Key:             0383bca67d28fce336ea7c2fc1120ecc63fbe55e89251e20587c2eb877f971e56b\n‣ BTC Address:            miEJtNKa3ASpA19v5ZhvbKTEieYjLpzCYT\n‣ Stacks Address:         ST19XY8C456FWH704JR77ZKFTPBNVNK52Q1CK01JD\n‣ WIF:                    cNn45HMeSuFeqg3pQESEuLz9FnmiYS83s11snXqDFqX4audaJbcb\n‣ Miner Rewards\n  ‣ Stacks address:         ST1XVSVQN0KP5SDYFNT8E5TXWVW0XZVQEDBMCJ3XM\n  ‣ Private Key:            a6143d20cd73d0dce2179e2af7771372a95b9d6795924492bd4d15d17709531e01\n  ‣ Mnemonic:               federal reform visual spot pioneer side knife crouch hazard happy home stem gentle squeeze brother scorpion fuel accident blade tonight world arch raw poet\n  ‣ WIF:                    cT9Y8q23uyUkfzPwLvfQQDmHacBdyZKhSKBWTCQ9QZz2tkaL6g4e\n```\n\n### Miner 2\n\n```text\n‣ Mnemonic:               cherry lawn pull huge drift wisdom capable bulk tragic street first foam onion above come smart eyebrow about soon jungle select used front ecology\n‣ Private Key:            1415e80bf3fe30fe95889c676681b4f64447f8888f718381840224b14ef4b97801\n‣ Public Key:             03a1940aedd43c39a39c73a1686faaabc67b6bd918d9710292e6c400308df0130e\n‣ BTC Address:            mxxRn3xP98tSJCUXxABq4dgg4SziNacF1Y\n‣ Stacks Address:         ST2ZMPYMHV80HGY99P9B81CN8E66JHBYVXB8P5F55\n‣ WIF:                    cNFkBfqr4tz3V7pcKbBvcibKsZ6XnTmcTwyWoqGm4CStmqN1bqh8\n‣ Miner Rewards\n  ‣ Stacks address:         ST2FW15NGB4H76FMVXKHYYSM865YVS6V3SA1GNABC\n  ‣ Private Key:            fe3087801196d8027008146b13e6d365920c2e4b7bc9969729ec2f0f22ef74fc01\n  ‣ Mnemonic:               acoustic physical genre canal today zone confirm whale fashion payment blanket slush crumble version exercise catch candy birth meadow penalty until protect kid wage\n  ‣ WIF:                    cW6p6zjVTXFXKQu3JmwfvRtkM5nAqCe1nakyhbd1VrZU59FJLew1\n\n```\n\n### Miner 3\n\n```text\n‣ Mnemonic:               identify test gallery pave now pet just gospel erupt walnut demand oyster old trigger soup zoo sheriff oyster twenty tragic license casual twelve depth\n‣ Private Key:            c1c3f3f7bb8cc0b64c3be0f79488a3b1e3dbca62f23a5ac84e13beba78cc961301\n‣ Public Key:             025511871cb065df0ac108d149b5abe2267242745fd02b1d7a5fafb8dcf3ad66ce\n‣ BTC Address:            miBGjFEQveJSbzFwB9XJ9a4GmkY3Unmb7b\n‣ Stacks Address:         STEJYWJ2Y7E72AF9JMRWZWNR11ADBJBHD45P7D7K\n‣ WIF:                    cU5McyYQu1VJw6tzekyAJd1Jm9NVtjkPhrcbyVm8LgGdiW1Htrf4\n‣ Miner Rewards\n  ‣ Stacks address:         ST2MES40ZEXTX9M4YXW9QSWHRVC9HYT419S198VPM\n  ‣ Private Key:            ed7eb063c61b8e892987228f1fcfb74eab5009568861613dc4b074b708a7893701\n  ‣ Mnemonic:               verb face bag shaft snack alcohol consider fork boat gate any energy property vessel olive system spin seek mean recipe layer catch anger bacon\n  ‣ WIF:                    cVYMsUwHAZCdwfXZ2rgXWrFJDfqW2TrvLBAVpWCLCteCTTbv7UXL\n\n\n```\n\n## Signer Accounts\n\n### Signer 1\n\n```text\n‣ Mnemonic:     number pause unfold flash cover thank spray road moment scatter wreck scrap cricket enemy enlist chest all dog force magnet giggle canyon spatial such\n‣ Private Key:  41634762d89dfa09133a4a8e9c1378d0161d29cd0a9433b51f1e3d32947a73dc01\n‣ Public Key:   035249137286c077ccee65ecc43e724b9b9e5a588e3d7f51e3b62f9624c2a49e46\n‣ STX Address:  ST24VB7FBXCBV6P0SRDSPSW0Y2J9XHDXNHW9Q8S7H\n‣ BTC Address:  mt56SJB4aQRz8xA13gnkNnqxZc2dESq6Sq\n‣ WIF:          cPmokz1FLbW5KyZGMeSoDBeoRB51358dPzRJatiazpjLUnfaDe55\n```\n\n### Signer 2\n\n```text\n‣ Mnemonic:     puppy ladder save liar close fix deliver later victory ugly rural artwork topic camera orphan depart power pottery retreat walk ignore army employ turkey\n‣ Private Key:  9bfecf16c9c12792589dd2b843f850d5b89b81a04f8ab91c083bdf6709fbefee01\n‣ Public Key:   031a4d9f4903da97498945a4e01a5023a1d53bc96ad670bfe03adf8a06c52e6380\n‣ STX Address:  ST2XAK68AR2TKBQBFNYSK9KN2AY9CVA91A7CSK63Z\n‣ BTC Address:  mxXw9bceXuFB6HZjqriS527kTqt5H9VczT\n‣ WIF:          cSowFfhhyLhwsxCQHYzFGLKZYGjob3oQ6ZwH1v4WAAcxeb4Wn4ro\n```\n\n### Signer 3\n\n```text\n‣ Mnemonic:     want stove parent truly label duck small aspect pumpkin image purity stove pottery check voyage person weasel category cat inspire portion sun lab piece\n‣ Private Key:  3ec0ca5770a356d6cd1a9bfcbf6cd151eb1bd85c388cc00648ec4ef5853fdb7401\n‣ Public Key:   02007311430123d4cad97f4f7e86e023b28143130a18099ecf094d36fef0f6135c\n‣ STX Address:  ST1J9R0VMA5GQTW65QVHW1KVSKD7MCGT27X37A551\n‣ BTC Address:  mpgvmF9DSDBrbxUY4rbsPmWkYakoDXr19j\n‣ WIF:          cPggi5foghgcKAGnbRwCLMDpQCCmWVUZ9r7PkWQ7cCfK69BWLXdk\n```\n\n## Transaction-Generation Accounts\n\n### Account 1\n\n```text\n‣ Mnemonic:     sorry door captain volume century wood soap asset scheme idea alley mammal effort shoulder gravity car pistol reform aisle gadget gown future lawsuit tone\n‣ Private Key:  e26e611fc92fe535c5e2e58a6a446375bb5e3b471440af21bbe327384befb50a01\n‣ Public Key:   03fb84a4a2931e7d0ec36bf6e695233bec878fd545bad580751cf4a49d78a7bb27\n‣ STX Address:  ST1YEHRRYJ4GF9CYBFFN0ZVCXX1APSBEEQ5KEDN7M\n‣ BTC Address:  mruR58H7NvUgmDydv1BM8zMT8og6QxN1Rx\n‣ WIF:          cVArVw9FJPeygtZhRtHJEhDqEQTeC3Ybw3UjXt1ir6RgMkMj1Mcz\n```\n\n### Account 2\n\n```text\n‣ Mnemonic:     album bid grant because narrow unusual unknown machine quick core dolphin occur repair decade toilet betray word people mule assume gesture faint trend about\n‣ Private Key:  e3ebd73a51da9a2ab0c6679145420876bf4338554a8972e3ab200cef7adbec6001\n‣ Public Key:   03e5049566e351debe8c4d9918faafac751fdcc0e80d3db59069b45761b39015f5\n‣ STX Address:  ST1WNJTS9JM1JYGK758B10DBAMBZ0K23ADP392SBV\n‣ BTC Address:  mrabBBLKnSZq8fziECh4TsNwVbmdGv6JDV\n‣ WIF:          cVDkVrPTBEVa9fFGwFQT4zKi9dXFUJqLym3Ct6MJTepT6Wh5413g\n```\n\n### Account 3\n\n```text\n‣ Mnemonic:     action still web blush proud cat axis barrel tower assault cram catch more soup auction require again valley letter calm license release fruit industry\n‣ Private Key:  0bfff38daea4561a4343c9b3f29bfb06e32a988868fc68beed31a6c0f6de4cf701\n‣ Public Key:   03a89261c20768ce41930371cd4c0d756c872e96b8ff749ac044199cc7100ccd71\n‣ STX Address:  ST1MDWBDVDGAANEH9001HGXQA6XRNK7PX7A7X8M6R\n‣ BTC Address:  mq5SjFHAPh93ZnFLc6Jev8yqn2iLg28Q5B\n‣ WIF:          cMz2ZSsaVgWPFUkE44zHpJepB4NdwB9L938h53hQfFoot81AZFb3\n```\n\n\n## Testing Accounts\n*Unused but funded accounts that may be used to deploy contracts or other txs*\n\n### Deployer Account\n\n*Unused but funded account that may be used to deploy contracts or other txs*\n\n```text\n‣ Mnemonic:     keep can record bracket note hip face pudding castle detail few sunset review burger enhance foil lamp estate reopen butter then wasp pen kick\n‣ Private Key:  27e27a9c242bcf79784bb8b19c8d875e23aaf65c132d54a47c84e1a5a67bc62601\n‣ Public Key:   025fa7693cfe4b7c7beccdd9e4bfe77f77a3779d5a58faeb69ead7d1ba94d64f76\n‣ STX Address:  ST2SBXRBJJTH7GV5J93HJ62W2NRRQ46XYBK92Y039\n‣ BTC Address:  mwp5EpXXVsZxzQRC7yrDe1CJBsyub9f91n\n‣ WIF:          cNvERZ1Ci4NQydr5dTuW8K2JuoyfjLJgYVskrLzBoXREnRVbS9qx\n```\n\n### Tester 1\n\n```text\n‣ Mnemonic:     turkey collect myth access museum demise beef sugar soccer regret frozen will accuse report carpet act grid always satoshi cruise heavy truck avocado dry\n‣ Private Key:  38369c150fa7dd132a09a1baf78675a6af3e0612008f299612445f0a5c9f022601\n‣ Public Key:   023b7b8652527648bae8efc9153c9b51ccf69f17547b92c70ac33b07de8124ec91\n‣ STX Address:  ST332DWHNM323264X869MKXFZABSE5WZ60EA07TJ1\n‣ BTC Address:  myagk4VdbTPZpmJsMiw2bmkY3SmSF9zAp3\n‣ WIF:          cPTyPP8MtzppSCidZCCAdvecqakCrJ5NPNPs8N4ENGiB11c93hh6\n```\n\n### Tester 2\n\n```text\n‣ Mnemonic:     cheap render bench token hobby quiz food home twenty fresh until pool whip reduce snack draft club trim boost consider tired symptom amount utility\n‣ Private Key:  c3201a1a063c452dda2c27ed5c5d1f8bd12e0c82a1c55ba79dc542c5414441f801\n‣ Public Key:   02ea179e664324f495a74c717f128410503c18724ffa8356c5f9f66b9fb241c87a\n‣ STX Address:  ST2FY5WGSFA209NFHDT08NCB8Y9J3P1H19YR2D674\n‣ BTC Address:  mv6Mc23a3442ZxAbnfzMoSiev6HrYD1wdj\n‣ WIF:          cU7zwyRUPanpZDvjSwsaivNjrqN9d8KYVYJuhPn52zCnELasvBMA\n```\n\n### Tester 3\n\n```text\n‣ Mnemonic:     mixed recycle enroll celery jar object access west loan quantum country race crouch achieve trend mesh invite inch cake wise gospel kick frog hour\n‣ Private Key:  6b1474ff9fd29d281f1f3f204b13989a030b5451cc2e840c8c540328cd580cf801\n‣ Public Key:   0205930579d15354f3b536f44113fde6ee0aea830a09ab09e89814260fa9e43501\n‣ STX Address:  ST3SW0AXHXFDHGQY2XMMDHN6T7VPY395WS7ZRGQCD\n‣ BTC Address:  n3jnhvRqD5S7uLRgXQRUeiyLmwLxAcYGt6\n‣ WIF:          cRArJzg1NRQKtJQJSa7bT4EKxoR1QoxjLYyj1c4jLGYgaiQcdsXJ\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacks-network%2Fhacknet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstacks-network%2Fhacknet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacks-network%2Fhacknet/lists"}