nikitavorobie/MultiVault
nikitavorobie/MultiVault has 26 GitHub stars and 5 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 09:45 UTC. Last push 2025-12-12.
What you can do
- Multiple Vaults: Create unlimited independent treasuries
- Weighted Voting: Assign different voting power to signers
- Flexible Thresholds: Set custom approval requirements per vault
- Programmable Payouts: One-time, vesting, and streaming payments
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Multi‑vault treasury OS for Base that manages many segmented vaults, roles and policies under a single upgradeable controller.
DataREADME.md
OriginalMultiVault
Multi-signature treasury protocol for DAOs on Base. Manage multiple independent vaults with weighted approvals and programmable payouts.
Overview
MultiVault enables DAOs and teams to create isolated treasury vaults with customizable governance. Each vault maintains its own signers, voting weights, and approval thresholds.
Documentation
- Vault Model Specification - Comprehensive technical documentation covering vault lifecycle, data model, configuration rules, and integration guidelines for developers and auditors
- Role System Design - Complete role hierarchy, access control matrix, and privilege escalation protection mechanisms
- Governance Patterns - Recommended governance configurations for DAOs, companies, and hybrid organizations
Key Features
- Multiple Vaults: Create unlimited independent treasuries
- Weighted Voting: Assign different voting power to signers
- Flexible Thresholds: Set custom approval requirements per vault
- Programmable Payouts: One-time, vesting, and streaming payments
- USDC Transfers: Native Base Pay integration
- Role-Based Access Control: Granular permissions with GLOBAL_ADMIN, VAULT_ADMIN, OPERATOR, and PAUSER roles
- Emergency Pause: Circuit breaker for security incidents
- Fully Upgradeable: UUPS proxy pattern with safe storage layout
Use Cases
DAO Treasury Management
// Create DAO treasury vault
uint256 daoVault = multiVault.createVault(
"DAO Treasury",
"ipfs://QmMetadata..."
);
// Add council members with weights
multiVault.addSigner(daoVault, member1, 100); // 100 votes
multiVault.addSigner(daoVault, member2, 150); // 150 votes
multiVault.addSigner(daoVault, member3, 200); // 200 votes
// Set threshold (need 300+ votes to execute)
multiVault.setThreshold(daoVault, 300);
Multi-Department Budgets
// Separate vaults for different teams
uint256 devFund = multiVault.createVault("Development", "ipfs://...");
uint256 marketingFund = multiVault.createVault("Marketing", "ipfs://...");
uint256 grantsFund = multiVault.createVault("Grants", "ipfs://...");
// Each vault has independent signers and rules
Contributor Payroll
// Create proposal for payment
uint256 proposalId = multiVault.createProposal(
contributor,
5000 * 1e6, // 5000 USDC
USDC_ADDRESS,
""
);
// Signers approve
multiVault.approveProposal(proposalId);
// Execute when threshold met
multiVault.executeProposal(proposalId);
Deployed Contracts
Base Mainnet:
- MultiVault:
0xB4FD2402c97c0F2E38B3Be91596aDe8927A36439 - PayoutExecutor:
0x5828179353Ad884B10f40Be9122747e1415d7Ea1
Base Sepolia:
- MultiVault:
0xB4FD2402c97c0F2E38B3Be91596aDe8927A36439 - PayoutExecutor:
0x5828179353Ad884B10f40Be9122747e1415d7Ea1
Core Functions
Vault Management
createVault(string name, string metadataRef) returns (uint256 vaultId)
addSigner(uint256 vaultId, address signer, uint256 weight)
removeSigner(uint256 vaultId, address signer)
setThreshold(uint256 vaultId, uint256 threshold)
Proposals
createProposal(address recipient, uint256 amount, address token, bytes data) returns (uint256)
approveProposal(uint256 proposalId)
executeProposal(uint256 proposalId)
cancelProposal(uint256 proposalId)
Payouts
createOneTimePayout(address recipient, address token, uint256 amount)
createVestingPayout(address recipient, address token, uint256 amount, uint256 duration, uint256 cliff)
createStreamingPayout(address recipient, address token, uint256 amount, uint256 duration)
License
MIT
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,721 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,897 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,491 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,523 stars