This document is intended for external audiences.
Application Infrastructure
This section is an overview of the interactions of the various systems on an application level to outline what information is shared across different systems.
Architecture Diagram
.png)
https://app.diagrams.net/#G1241yVCiMfGPDKyh3jTCPfFK3Xwu3El7i
Note: Sandbox Controller / Auth Provider / Chain Provider / Keyring Provider are Typescript classes that are abstractions for interfacing with different systems.
Relayer
- Client application (example: opensea.com) uses the SDK to initiate authentication and wallet functionalities
- Relayer (relayer.marblewallet.com) loads through the SDK as an
<iframe>
- SDK communicates with the relayer through
window.postMesage
- Relayer opens modals for information that needs to be directly communicated to and from the user (e.g. accepting user credentials, displaying transaction information).
- Relayer communicates with the MPC Server for authentication + distributed key generation, threshold signatures (MPC crypto operations).
- Relayer uses the WASM binary for MPC crypto operations.
MPC Server
- Written based on Go-Chi library that support various REST APIs for the client.
- Postgres as data store.
- AWS KMS used for additional encryption of sensitive info.