{"id":28545603,"url":"https://github.com/fluencelabs/ipc-load-test","last_synced_at":"2025-08-22T03:12:27.881Z","repository":{"id":223516923,"uuid":"751268211","full_name":"fluencelabs/ipc-load-test","owner":"fluencelabs","description":"Load testing for Fluence IPC infrastructure","archived":true,"fork":false,"pushed_at":"2024-06-21T09:09:12.000Z","size":18450,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-17T18:52:05.741Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluencelabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-02-01T09:14:44.000Z","updated_at":"2025-07-10T14:06:34.000Z","dependencies_parsed_at":"2024-04-15T11:33:25.989Z","dependency_job_id":"360c9937-be0f-46b2-8a03-3d6ba523dc3b","html_url":"https://github.com/fluencelabs/ipc-load-test","commit_stats":null,"previous_names":["fluencelabs/ipc-load-test"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fluencelabs/ipc-load-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluencelabs%2Fipc-load-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluencelabs%2Fipc-load-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluencelabs%2Fipc-load-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluencelabs%2Fipc-load-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluencelabs","download_url":"https://codeload.github.com/fluencelabs/ipc-load-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluencelabs%2Fipc-load-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271578517,"owners_count":24784051,"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-08-22T02:00:08.480Z","response_time":65,"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":[],"created_at":"2025-06-09T23:08:12.219Z","updated_at":"2025-08-22T03:12:27.873Z","avatar_url":"https://github.com/fluencelabs.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fluence on IPC load test\n\n## Deploying local testnet\n\n### Prerequisites\n\nInstall [IPC prerequisites](https://github.com/fluencelabs/ipc/blob/fluence/README.md#prerequisites).\n\n### Init submodules\n\n```bash\ngit submodule update --init --recursive\n```\n\n### Build Fendermint Docker image\n\n```bash\ncd ipc/fendermint\nmake BUILD_TAG=fendermint:fluence docker-build\n```\n\nNOTE: `fendermint:fluence` image is implicitly used in next steps.\n\n### Start local testnet\n\n```bash\ncd ipc/infra/fendermint\ncargo make --profile fluence --makefile ./Makefile.toml testnet\n```\n\nThis will create 7 IPC nodes. ETH API of node `n` (starting from `0`) is accessible at `0.0.0.0:854\u003c5 + n\u003e`.\n\nConfiguration related to network is located in `~/.ipc/r0/ipc-node` (`r0` is a default IPC subnet name).\n\nNOTE: To stop local testnet run\n\n```bash\ncargo make --profile fluence --makefile ./Makefile.toml testnet-down\n```\n\nNOTES:\n\n- To modify number of nodes in local testnet, set `TESTNET_NODES_NUMBER` in `ipc/infra/fendermint/Makefile.toml`\n- To modify `Cpuset` property of nodes containers, use `ipc/infra/fendermint/run.sh` and `ipc/infra/fendermint/docker-compose.yml`\n\n### Obtain a key\n\nTo deploy contracts, a key of an account with some ETH is required. A key of a validator created by default can be obtained as follows:\n\n```bash\nPRIVATE_KEY=0x$(cat ~/.ipc/r0/ipc-node/node0/keys/validator_key.sk | base64 -d | xxd -p -c 256 -u)\n```\n\n### Deploy contracts\n\nFirst of all: build contracts:\n\n```bash\ncd deal\nmake build-contracts\n```\n\nBefore deploying contracts, set some additional env parameters:\n\n```bash\n# Use real RandomX\nexport IS_MOCKED_RANDOMX=false\nexport CONTRACTS_ENV_NAME=local\n# Do not limit max proofs per epoch\nexport MAX_PROOFS_PER_EPOCH=1000000\n# Set epoch duration (in seconds)\nexport EPOCH_DURATION=300\n# Set no difficulty (32 * \"FF\" = 32 bytes)\nexport DIFFICULTY=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n```\n\nDeploy contracts with:\n\n```bash\nforge script script/Deploy.s.sol \\\n    --rpc-url local \\\n    --skip-simulation \\\n    --private-key $PRIVATE_KEY \\\n    --broadcast \\\n    --slow\n```\n\nNOTE: `--slow` is required to work around transaction reordering in Fendermint ETH API.\n\n### Build ts-client\n\n```bash\n# Build ts-client after deploy\nmake install-npms\nmake build-ts-client\n```\n\nNOTE: This will update contracts addresses in ts-client from deployment info.\n\n### Run prover\n\nMake directory for capacity commitment prover state (path to it is specified in `ccp_config.toml`):\n\n```bash\nmkdir ./ccp_state\n```\n\nRun prover:\n\n```bash\ncd ccp\nCCP_LOG=trace cargo run --release -p ccp-main ../ccp_config.toml\n```\n\nNOTE: If you rerun the test, it is better to clean CCP state:\n\n```bash\nrm -rf ./ccp_state\n```\n\n### Run test\n\nFirst of all, review test parameters in `client/src/const.ts`. **Important:** sync `IPC_NODES_COUNT` const with number of testnet nodes.\n\nThen, ensure that `PRIVATE_KEY` is still set as an environment variable, then run:\n\n```bash\ncd client\nnpm i\nnpm run run\n```\n\nThis will start script that:\n\n- Creates wallets for providers and peers and adds funds to them. It is done on the first run, then file `client/providers.json` is created with all the wallets. This file is read again on consequent runs. **Important:** Remove `client/providers.json` if you want to regenerate wallets (e.g. after testnet restart)\n- Registers providers each with one peer and one CU\n- Listens to chain events and updates `globalNonce` in prover through JSON RPC\n- Requests proof solutions from prover through JSON RPC\n- On solution, submits it to the network\n- Prints proof submit statistics each 30 seconds\n- Collects proof submit statistics and dumps them to `client/metrics.json` file each minute\n\nNOTES:\n\n- By default, script instructs CCP to use `4 + idx`th physical core for provider `idx`. To change that, modify `cu_allocation` variable in `client/src/index.ts`\n- Be default, script uses node `idx + 1` for provider `idx`. Node `0` is used for \"utility\" purposes (e.g. updating global nonce)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluencelabs%2Fipc-load-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluencelabs%2Fipc-load-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluencelabs%2Fipc-load-test/lists"}