# How Waymont works

### Architecture

**Each Waymont Vault is a 2-of-2 multi-signature Safe.** You control both signers, and you can take full control of your Safe - _with or without Waymont's help._

* **Signer 1 is your "trusted signing device."**  You can enroll the Waymont Mobile App (or your preferred EOA) as your trusted signing device. You sign & approve transactions from this device.&#x20;
* **Signer 2 is the Waymont Policy Guardian** smart contract. It verifies that a transactions 1) are initiated by you and 2) meet your custom limits & policies. If it finds no violations, then it autonomously signs and relays your transaction.&#x20;

**Only you are able to initiate account activity from your Waymont Web account. Signer 1 and Signer 2 must approve every transaction.**

**You can offboard and remove the Waymont Policy Guardian as a signer (and take control of your Safe) at any time** via the instructions: [here](https://github.com/pentagonxyz/waymont-vaults-global-recovery-script#export-private-key).\


***

### A customizable security experience&#x20;

On top of this architecture, are SAFE modules that you can opt into.&#x20;

* **Recovery Module:** enables you to change your "trusted signing device" via social recovery or iCloud recovery. Learn more: [here](waymont-recovery-module).&#x20;
* **External Signer Module:** enables you to enroll your own external signing device as your "trusted sigining device." Require your favorite hardware or EOA to sign transactions.&#x20;

***

### Designed for robustness

&#x20;At any time, transacting on Waymont requires 3 things:

1. Your trusted signing device (protected by biometrics if Waymont Mobile)
2. Your SSO login & Waymont account
3. Your compliant transaction policies

This limits the ability for anyone besides you to access your funds. It also minimizes the risk of you doing something wrong. \
\
More: [here](https://www.waymont.co/security).

***

### Contracts

Waymont Vault contracts are the core Safe (Gnosis Safe) v1.4.0 contracts, found [here](https://github.com/safe-global/safe-contracts/blob/v1.4.0/contracts/Safe.sol) (Safe Core SDK for v1.4.0 found [here](https://github.com/pentagonxyz/safe-core-sdk/commit/27f05bb6e77ede7006c934b0c8d04aa1d3a25835)). \
\
In addition, there is the Trusted Signer module, Waymont Policy Guardian module, and Recovery module. All have been audited by Trail of Bits [here](https://drive.google.com/file/d/16rBnIeFG_oswP-WeCK-Leu7cZIKZHcMF/view).

The Trusted Signer module is a multi-sig with your trusted signing devices enrolled as its signers. This supports Waymont Mobile & external signing devices.\
\
The Policy Guardian module is a contract that checks your transaction policies to confirm every transactions validity. In the case that a transaction does not meet your policies, it rejects the transaction. \
\
The Recovery Module is an opt-in module that enrolls a multi-sig with your _trusted guardians_ as its signers. It may sign and trigger a change of your trusted signing device if 51% of your guardians approve recovery. \
\
Signer and recovery module contracts can be found [here](https://github.com/pentagonxyz/waymont-contracts) (uses code isolated from the Safe contracts seen [here](https://github.com/pentagonxyz/safe-contracts)).&#x20;

Our Trail of Bits Audit report of all contracts can be found [here](https://drive.google.com/file/d/16rBnIeFG_oswP-WeCK-Leu7cZIKZHcMF/view).
