The following architecture describes the relationship between the Boundless Market proxy, the verifier router, and the emergency stop mechanisms:
---
title: Smart Contract Relationships
---
flowchart LR
subgraph IRiscZeroVerifier
subgraph routers["Routers"]
router["RiscZeroVerifierRouter [managed]"]
end
subgraph emergencyStops["Emergency Stop Proxies"]
groth16v1ES["RiscZeroVerifierEmergencyStop"]
groth16v2ES["RiscZeroVerifierEmergencyStop"]
setv1ES["RiscZeroVerifierEmergencyStop"]
setv2ES["RiscZeroVerifierEmergencyStop"]
end
subgraph impls["Base Implementations"]
groth16v1["RiscZeroGroth16Verifier [v1]"]
groth16v2["RiscZeroGroth16Verifier [v2]"]
setv1["RiscZeroSetVerifier [v1]"]
setv2["RiscZeroSetVerifier [v2]"]
end
router -- calls --> groth16v1ES
router -- calls --> groth16v2ES
router -- calls --> setv1ES
router -- calls --> setv2ES
groth16v1ES -- calls --> groth16v1
groth16v2ES -- calls --> groth16v2
setv1ES -- calls --> setv1
setv2ES -- calls --> setv2
end
subgraph Boundless market
subgraph proxy["ERC1967Proxy"]
marketProxy["BoundlessMarket [proxy]"]
end
subgraph BoundlessMarket["Boundless market implementations"]
boundlessMarketv1["BoundlessMarket [v1]"]
boundlessMarketv2["BoundlessMarket [v2]"]
end
marketProxy -- calls --> boundlessMarketv2
end
timelock[TimelockController]
multisig["RISC Zero Multisig"]
timelock -- admin --> router
multisig -- proposer --> timelock
multisig -- guardian --> emergencyStops
multisig -- upgrade --> proxy
setv1 -- calls --> router
setv2 -- calls --> router
boundlessMarketv2 -- calls --> router