5.7 KiB
Local Docker-First Stack
This workspace can be run locally on Arch without shell-profile exports.
For the current live checkpoint, known blocker, and exact repo matrix, see
CHECKPOINT-2026-04-03.md and WORKSPACE-MANIFEST.md.
The setup below uses top-level dependency checkouts:
wire-sysioin Docker, using the maintained Dockerfile underwire-sysio/etc/docker/Dockerfilewire-ethereumin a Node 20 container on a local Hardhat networkcapital-stakingin a custom Anchor/Solana toolchain container against the localsolana-docker-setupgenesis validator
What I Could Confirm
- The remote setup document at
swarm.gitgo.app/.../TESTNET-SETUP-README.mdreturnedNot foundon April 2, 2026, so this runbook is based on the local repos andOPP.pdf. OPP.pdfis still useful for the protocol shape, but message encoding details are stale because the live code is moving to protobuf-backed payloads.wire-ethereumstill models OPP delivery around sequential epoch envelopes.capital-stakingis the Solana-side outpost/wire harness in this workspace.solana-docker-setupis now the intended local validator path so epoch timing is configurable throughSOLANA_SLOTS_PER_EPOCH.wire-sysiocontains the local node/bootstrap path plus the batch-operator relay implementation we are exercising in this workspace.- The current Solana withdraw flow still has a placeholder instead of real OPP emission:
capital-staking/programs/liqsol-core/src/instructions/wire_syndication/desyndicate_liqsol.rs
One-Time Setup
cd /home/dtaghavi/Documents/Projects/skunk-net
cp .env.local.example .env.local
Then use the checked-in wrapper:
./local-compose.sh ps
Nothing in this flow depends on ~/.bashrc, and the wrapper injects your live uid/gid at runtime so container-generated files stay owned by your Arch user. Adjust .env.local if you want different ports, wallet path, or ledger location.
Important Solana knobs:
SOLANA_SLOTS_PER_EPOCH=64keeps local epoch turnover fast for tests.SOLANA_RUN_SH_VALIDATOR_ARGSlets you append rawagave-validatorflags from.env.local.
Build The Containers
./local-compose.sh build capital-staking-dev wire-sysio-dev
If you also need to rebuild the Solana validator image explicitly:
./local-compose.sh build solana-validator
wire-sysio-dev is the expensive image because it builds the Wire toolchain and Clang 18 layer. The upstream Wire docs call out a 32 GiB RAM expectation for this build path.
Solana / Capital Staking
Start the local validator:
./local-compose.sh up -d solana-validator
Check the local epoch cadence:
./local-compose.sh run --rm --no-deps capital-staking-dev bash -lc '
solana -u "$ANCHOR_PROVIDER_URL" epoch-info
'
Reset the local Solana ledger when you want a fresh cluster:
./local-compose.sh down -v
./local-compose.sh up -d solana-validator
Prepare program IDs, build, deploy, and initialize the local cluster:
./local-compose.sh run --rm capital-staking-dev bash -lc '
solana config set --url "$ANCHOR_PROVIDER_URL" --keypair "$ANCHOR_WALLET" &&
./bash-scripts/prep-anchor-toml.sh &&
npm ci &&
./bash-scripts/reset-local-cluster.sh --wait-for-cluster
'
Run the Wire-related Solana suites:
./local-compose.sh run --rm capital-staking-dev bash -lc '
solana config set --url "$ANCHOR_PROVIDER_URL" --keypair "$ANCHOR_WALLET" &&
npm ci &&
npm run test:wire-syndication &&
npm run test:wire-pretokens &&
npm run test:bar
'
Those are the closest existing local tests to the instant-swap / outpost lifecycle in this checkout.
Ethereum / OPP
For contract-level OPP validation you can either run one-shot tests or keep a local Hardhat node up.
One-shot OPP tests:
./local-compose.sh run --rm wire-ethereum-dev bash -lc '
cd /workspace/wire-ethereum &&
npm ci &&
npx hardhat test src/test/outpost/OPPSend.ts src/test/outpost/OPPRecv.ts
'
Long-lived local JSON-RPC:
./local-compose.sh up -d hardhat
Then run additional tests or scripts from a disposable shell:
./local-compose.sh run --rm wire-ethereum-dev bash
Inside the container:
cd /workspace/wire-ethereum
npm ci
npx hardhat test src/test/outpost/Depositor.integration.ts
Wire SysIO
Make sure the Wire submodules are present once on the host:
git -C wire-sysio submodule update --init --recursive
Bring up the local Wire node:
./local-compose.sh up wire-nodeop
That service now:
- builds the required
wire-sysiotargets inside Docker - applies the local BoringSSL/OpenSSL pkg-config shim needed by this checkout
- runs
sys-util chain-configure - boots
kiodandnodeopwith the canonical 5-part--signature-providerformat
If you want it detached:
./local-compose.sh up -d wire-nodeop
Check the node:
curl -s http://127.0.0.1:${WIRE_HTTP_PORT:-8887}/v1/chain/get_info -X POST
Current Protocol Gap
From the code currently in this directory:
- Ethereum OPP is still epoch-based and sequential, but outbound epoch rollover no longer stalls on an unsubmitted prior epoch.
- Solana wire syndication is still mostly local-accounting plus admin completion hooks.
- The Solana PostLaunch withdraw path logs that it should send an OPP message, but does not do it yet.
- I do not see the inbound Wire-side OPP gate you described inside
wire-sysioitself in this checkout.
That means the fastest path to a real end-to-end instant-swap test is:
- Stand up the local Solana and Ethereum stacks above.
- Use the existing wire-related Solana tests and OPP Ethereum tests as the starting harness.
- Identify where the missing Wire-side depot / batch-operator logic actually lives if it is not in these repos.