Documentation
EPITAPH PROTOCOL v0.1.0 · BETA
Epitaph is a non-custodial, on-chain last will protocol. It allows any wallet owner to deploy immutable final instructions — asset transfers, token burns, encrypted messages — that execute automatically when predefined trigger conditions are met.
No lawyers. No notaries. No intermediaries. Just code.
Epitaph is currently in beta. Smart contracts are pending audit. Use on mainnet at your own risk.
Key Properties
- Non-custodial — Epitaph never holds your assets
- Trustless — Smart contracts execute without human intermediary
- Immutable on execution — Once trigger fires, cannot be stopped
- Owner-controlled — Only you can modify before execution
- Multi-chain — Base, Ethereum, Solana, Polygon
Quick Start
1. Connect Your Wallet
Visit epitaph-agent.xyz and connect your wallet via MetaMask, Coinbase Wallet, or any WalletConnect-compatible wallet.
2. Configure Your Will
Set your trigger condition, beneficiary wallets, asset distribution, and an optional encrypted final message.
$ epitaph connect --wallet 0x7f3a...9c2b ``` → Found: 4.2 ETH | 12,000 USDC | 3 NFTs ✓ Wallet connected. $ epitaph will –trigger inactivity_180d –beneficiary 0x4e1…b83f:60 –beneficiary 0x9a2…c11d:40 –message “encrypted://QmHash…” $ epitaph deploy –sign ⚠ Irreversible. Confirm? [y/N]: y ✓ Will deployed. Block #21847293. Immutable. Eternal.
3. Stay Active
For inactivity-based wills, any on-chain transaction from your wallet resets the timer. You can also explicitly ping:
$ epitaph ping --will-id 7 ``` ✓ Activity confirmed. Timer reset.
Core Concepts
Will Lifecycle
DEPLOY → ACTIVE → [trigger met] → EXECUTED
↓
[owner revokes]
↓
REVOKED
Protocol Fee
Epitaph charges a 0.5% fee (50 basis points) on assets distributed upon execution. There are no upfront costs, no subscriptions, and no gas fees beyond network costs.
| Action | Fee |
|---|---|
| Deploy will | Gas only |
| Ping activity | Gas only |
| Revoke will | Gas only |
| Execute will | 0.5% of distributed assets |
Trigger Types
INACTIVITY
Executes if the owner wallet has no on-chain activity for a specified number of days. Minimum 30 days, maximum 3,650 days (10 years).
TriggerType.INACTIVITY ``` inactivityDays: 180 // 6 months of silence
DATE
Executes at a specific Unix timestamp. Useful for time-locked transfers or scheduled distributions.
TriggerType.DATE ``` triggerDate: 1893456000 // Jan 1, 2030
MULTISIG
Requires 2-of-3 designated guardian addresses to confirm before execution. Useful as an additional safeguard against false inactivity triggers.
TriggerType.MULTISIG ``` guardians: [0xGuardian1, 0xGuardian2, 0xGuardian3] threshold: 2 // 2 of 3 must confirm
PRICE SOON
Executes when an asset price crosses a threshold, verified via Chainlink oracle.
Actions
| Action | Description | Status |
|---|---|---|
| TRANSFER | Send ETH and ERC20 tokens to beneficiaries per share | LIVE |
| BURN | Send tokens to 0x000...dead address permanently | LIVE |
| DAO_DONATE | Transfer assets to a specified DAO treasury | LIVE |
| ALL | Transfer + deliver final message simultaneously | LIVE |
Smart Contracts
| Contract | Network | Address |
|---|---|---|
| EpitaphCore | Base Mainnet | pending deployment |
| EpitaphCore | Base Sepolia | pending deployment |
deployWill()
function deployWill( ``` TriggerType _triggerType, ActionType _actionType, uint256 _inactivityDays, uint256 _triggerDate, Beneficiary[] _beneficiaries, string _encryptedMsg, address[3] _guardians ) external returns (uint256 willId)
executeWill()
Can be called by anyone — designed for Chainlink Automation or Gelato.
function executeWill( ``` uint256 willId, address[] tokens ) external nonReentrant
revokeWill()
function revokeWill(uint256 willId) external ``` // Only callable by will owner. Irreversible.
pingActivity()
function pingActivity(uint256 willId) external ``` // Resets inactivity timer. Prove you are still alive.
Automation
Epitaph wills are executed by on-chain automation networks. No centralized server is required.
Chainlink Automation
Register your will with Chainlink Automation to have it monitored and executed automatically when trigger conditions are met.
Gelato Network
Alternative automation provider. Lower cost for high-frequency monitoring.
If no automation is registered, the will must be manually executed by calling executeWill() after the trigger fires.
EPITAPH PROTOCOL v0.1.0 · epitaph-agent.xyz · GitHub
```