Problem
The EVM network driver under development (feature/evm-network-driver) has no way to be exercised inside NWO. NWO today can only bootstrap Fabric and FabricX backends — there is no machinery to stand up an EVM-speaking node, deploy the token contracts onto it, and wire FSC nodes to talk to it. Nothing in integration/ currently knows how to launch an external JSON-RPC node, deploy Solidity contracts, or emit an EVM network config block.
The token integration suites should be able to bootstrap a fabricx + EVM gateway backend by switching topology, so the existing fungible test bodies run against it exactly like dlog vs dlogx today. The platform should be buildable and testable in isolation, without waiting on the driver's end-to-end methods.
Solution
Add a standalone NWO platform + token backend for the fabricx+EVM gateway, mirroring integration/nwo/token/fabricx/, and make it testable in isolation.
- Token-layer backend — new package integration/nwo/token/evm/ implementing the token Backend interface (integration/nwo/token/fabric/fabric.go): PrepareNamespace(tms) registers the token namespace; UpdatePublicParams(tms, ppRaw) seeds public parameters on-chain (EVM analog of the FabricX TMSDeploy path). Register it as a NetworkHandler under a new platform name in integration/nwo/token/factory.go, reusing the backend-agnostic crypto/PP generation.
- FSC-level EVM platform/topology — boot the fabric-x-evm gateway node, reusing the FSC container-lifecycle pattern (nwo/fabricx/extensions/scv2: port allocation, container create/start, log stream, readiness wait, cleanup). Expose an evm.Topology implementing api.Topology + BackedTopology.
- Contract deployment — deploy EndorsementVerifier + a per-TMS TokenState clone, seeding PP v0 + endorser set + threshold + graphHiding, and inject the resulting addresses back into node config via the existing TMS.BackendParams seam. (Deploy mechanism — forge vs a JSON-RPC/view path — to confirm; leaning forge.)
- EVM config + identity generation — emit the token.tms..services.network.evm.* block per node (endpoint, chainID, contract addresses, finality/gas, submitter/endorser keystores), including the endorser Ethereum-address ↔ FSC view.Identity registry + threshold + allowlist the driver expects (design §6.1/§10). New secp256k1 crypto-material path alongside the x509/idemix generators.
- Topology switch — add a case in integration/token/fungible/topology/topology.go so common.Opts.Backend selects the EVM topology, keeping the token→FSC binding via AddTMS(...). Integration suites then flip the backend, dlog/dlogx-style.
- evmdlog composed SDK — wire evm.NewDriver + token driver over viewsdk in the integration module (integration/token/common/sdk/evmdlog/, mirroring fxdlog), with the require+replace for the isolated EVM Go module.
- Isolation test + Makefile target — a test that boots the node, deploys the contracts, and asserts reachability + a basic contract query, independent of the driver's end-to-end flow. Add integration-tests-evm.
Checklist:
Problem
The EVM network driver under development (feature/evm-network-driver) has no way to be exercised inside NWO. NWO today can only bootstrap Fabric and FabricX backends — there is no machinery to stand up an EVM-speaking node, deploy the token contracts onto it, and wire FSC nodes to talk to it. Nothing in integration/ currently knows how to launch an external JSON-RPC node, deploy Solidity contracts, or emit an EVM network config block.
The token integration suites should be able to bootstrap a fabricx + EVM gateway backend by switching topology, so the existing fungible test bodies run against it exactly like dlog vs dlogx today. The platform should be buildable and testable in isolation, without waiting on the driver's end-to-end methods.
Solution
Add a standalone NWO platform + token backend for the fabricx+EVM gateway, mirroring integration/nwo/token/fabricx/, and make it testable in isolation.
Checklist: