LogoLogo
  • Venn Network
    • Introduction to Venn
    • Getting Started
      • Protocols & Developers
        • Installation
        • Testnet Guide
        • Venn CLI
        • Venn DApp SDK
        • How It Works
        • Roles
      • Node Operators
        • Installation
        • Configuration
        • Testnet Guide
      • Security Teams
        • Build Custom Detector
        • API Reference
        • Security Sandbox
      • Venn Safe Guard
        • Bypass Mechanism
      • Venn Wallet RPC
        • Custom RPC in MetaMask
    • Explorer
    • Playground
    • Use Cases
    • Roadmap
    • Consensus Model
    • Litepaper
    • FAQ
    • Community
    • Audit Reports
Powered by GitBook
On this page
  • Bypass Mechanism Purpose
  • How It Works
  • Step 1: Create and Sign the Transaction
  • Step 2: Collect Required Signatures
  • Step 3: Submit Bypass Request
  • Step 4: Wait for the Time-Lock Period
  • Step 5: Execute the Transaction
  • Technical Details
  • Security Considerations
  • Troubleshooting
  • Emitted Events

Was this helpful?

  1. Venn Network
  2. Getting Started
  3. Venn Safe Guard

Bypass Mechanism

Bypass Mechanism Purpose

The bypass functionality enables Safe owners to execute transactions that don't meet the normal Venn Guard validation requirements when:

  • Emergency situations require actions that don't conform to standard rules

  • Technical issues prevent normal transaction patterns

  • System upgrades or migrations are needed

  • Unanticipated scenarios arise that were unknown during the initial guard setup


How It Works

The bypass mechanism uses a time-lock approach:

  1. Safe owners propose and sign a transaction

  2. A bypass request is submitted with signatures meeting the Safe threshold

  3. After a waiting period (set once when the guard is deployed and configurable for up to 7 days), the transaction can be executed

This provides a security balance - allowing flexibility while preventing the immediate execution of potentially high-risk transactions.


Step 1: Create and Sign the Transaction

Create the transaction you want to bypass through the Safe UI:

  • Specify the transaction details (recipient, value, data, etc.)

  • Have the required number of owners sign it

Important: Don't execute the transaction yet - keep it in the transaction queue by selecting: No, later option, and then you can Sign the transaction.

Step 2: Collect Required Signatures

  • Ensure enough Safe owners have signed the transaction to meet the Safe's threshold requirement.

  • Signers can add their signature just as they normally would - through the Safe UI, or via API integration with the Safe Transaction Service.

Step 3: Submit Bypass Request

  • Call the ⁠bypassGuard() function on the VennGuard contract with the following parameters copied from the queued transaction:

Tip: You can find the address of the guard from the Safe UI under Settings --> Modules

Parameter

Description

Where to Find It

to

Destination address

Transaction details in Safe UI

value

ETH amount (in wei)

Transaction details in Safe UI

data

Transaction calldata

Transaction details in Safe UI (0x for no data)

operation

Call type (0=Call, 1=DelegateCall)

Usually 0 (Call)

safeTxGas

Gas for the Safe transaction

Transaction details in Safe UI

baseGas

Base gas amount

Transaction details in Safe UI

gasPrice

Gas price for the transaction

Transaction details in Safe UI

gasToken

Token used for gas payment

Transaction details in Safe UI (0x0 for ETH)

refundReceiver

Address to receive gas refund

Transaction details in Safe UI

signatures

Collected owner signatures

Transaction details in Safe UI

  • To send this bypassGuard()transaction, you could either use Etherscan's Write Contract functionality or write a custom script interacting with the guard contract.

Step 4: Wait for the Time-Lock Period

After submitting the bypass request, you must wait for the configured ⁠bypassGuardWaitTime to pass. This period is set during guard initialization, cannot be changed afterward, and cannot exceed 7 days.

Step 5: Execute the Transaction

Once the waiting period has elapsed:

  1. Return to the Safe UI

  2. Find the queued transaction

  3. Execute it normally

The guard will now recognize it as a bypassed transaction and allow execution.


Technical Details

The bypass mechanism works through these key processes:

Transaction Identification The guard calculates a unique hash for each transaction based on its parameters

Bypass Registry Stores the timestamp when a bypass was initiated for each transaction hash

Time Verification During transaction execution, the guard checks if:

  1. The transaction has a registered bypass request

  2. The required wait time has elapsed since the bypass was initiated


Security Considerations

  • The bypass mechanism requires signatures meeting the Safe's threshold

  • The mandatory waiting period provides time to detect and react to unauthorized bypass attempts

  • Safe owners should be notified when bypass requests are submitted

  • Monitor bypass requests carefully - they circumvent normal security controls

  • Consider setting a longer wait time for higher-value Safes


Troubleshooting

Issue

Solution

Error: bypassGuard already called

A bypass request has already been submitted for this transaction. You may proceed to execute the transaction as normal

Transaction still fails after waiting

Verify the wait time has fully elapsed and the bypass request transaction parameters exactly match the proposed transaction parameters

Signatures rejected

Ensure signatures meet the Safe's threshold and are properly formatted

Emitted Events

The bypass mechanism emits the following events:

Event
Signature
Description

Bypass Guard

Transaction Bypassed

PreviousVenn Safe GuardNextVenn Wallet RPC

Last updated 7 days ago

Was this helpful?

Emitted when a Bypass Request transaction was submitted to the guard (see above)

Emitted when a Bypass Transaction was Executed on chain (see above)

BypassGuard(
   bytes32 safeTxHash,
   uint256 initTime
)
TransactionBypassed(
    bytes32 safeTxHash
)
Step 3
Step 5