[Discussion] Self-locked assets for individuals

Authors: Me, a solo investor concerned by physical threats. Web developer, solidity experience.

Abstract

As an individual, I’d like to prevent myself from moving funds instantly, while keeping the ability to make swaps without delay. The main goal is to produce credible and compelling arguments in case of duress situation / ransom.

Proposal details

Must have:

  • Ability to delay all transactions (including wallet configuration changes) for several days (e.g. 7 days)
  • Ability to swap any amount of assets without delays, using a whitelist of swaping contracts addresses
  • Retain compatibility with existing Safe features like spending limits and social recovery

Nice to have:

  • Native integration in the Safe{Wallet} UI.

Purpose and Background

Recent security incidents, such as kidnappings and significant data breaches targeting individuals, highlight the need for enhanced personal asset protection measures like the one proposed. This can be considered as an additional layer of security that can improve peace of mind.

Effects and Impact Analysis

Funds are to be blocked for 7 days (configurable) without any bypass mechanism. One should only transfer amounts intended for long-term storage. However, swapping is allowed without delay in order to manage investment portfolio reactively.

Alternative Solutions

It seems that the Zodiac delay implementation could be put in place, but there is no whitelist feature, and I’m not sure of the non-bypassness capability of this solution.

Implementation

Safe Guards alone are insufficient as they are stateless; a reverted transaction would mean any state change intended by the guard (like starting a delay timer) would also be reverted.
Safe Modules can implement the delay and whitelist logic. However, because modules can be removed by the Safe owner, a Module-only solution could be bypassed.

A hybrid approach, combining a Guard and a Module, appears to be feasible. The Guard would enforce that all transactions (except whitelisted transactions) must pass through the Delay Module. The Module would then manage the delay logic and the transaction queue. An accompanying application could provide a user interface for interacting with the module (e.g., initiating transactions, viewing pending transactions, managing the whitelist with the inherent delay for additions)

Own implementation possible

Own implementation but with funding (how much % to implementation)
Too soon to say, maybe for auditing the smart contracts.

Open Questions

Are there other existing solutions, either within the Safe ecosystem or in other wallet platforms, that offer a similar combination of transaction delays with whitelisting capabilities for specific actions like swaps?

Is the combination of a Zodiac Scope guard, and Delay module could also work? I’m not sure the UI will be adequate.

4 Likes

This is an interesting topic — and as you pointed out, the tools to implement this are available. I’ll propose one possible design, but note that there are multiple ways to solve this

Goals

  1. Delay all transactions (including wallet configuration changes) for several days (e.g., 7 days).
  2. Allow instant asset swaps of any amount via a whitelist of contract addresses.
  3. Retain compatibility with existing Safe features like spending limits and social recovery.

Recommended Approach

If you want to use native Safe modules, I suggest relying only on:

  • The Delay Modifier module
  • The Roles Module

Alternatively, you could explore implementing this using EIP-7579 and Rhinestone modules.


Design Steps

  1. Create an ownerless Safe
  • Set the sole owner to address(1) or another dead address.
  1. Set up two roles in the Roles Module:
  • Trader Role
    • Can execute trades immediately via whitelisted contract addresses.
    • Likely needs approve() permissions for specific ERC-20 tokens.
  • Admin Role
    • Has full access, but must go through the Delay Modifier module.
  1. Configure Delay Modifier
  • Assign the Admin role to the Delay Modifier.
  • Whitelist a trusted address (controlled by you) to interact with the Delay Modifier.

Outcome

  • Trader Role: Can trade without delay, but is limited to specific whitelisted contracts and actions.
  • Admin Role: Has broader permissions, but all actions are delayed.

This setup preserves flexibility while enforcing security boundaries.

You can optionally:

  • Add other Safe modules that operate outside the Roles Module.
  • Extend the Roles Module for custom features like social recovery.
1 Like