• Stars
    star
    433
  • Rank 100,464 (Top 2 %)
  • Language
    TypeScript
  • License
    GNU Lesser Genera...
  • Created over 3 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A library for composable tooling for onchain entities

Zodiac: The expansion pack for DAOs

Build Status Coverage Status Contributor Covenant

A composable design philosophy for DAOs, Zodiac is a collection of tools built according to an open standard.

Zodiac Icons

The Zodiac collection of tools can be accessed through the Zodiac App available on Gnosis Safe, as well as through the repositories below. If you have any questions about Zodiac, join the Gnosis Guild Discord.

This repository links to technical tutorials on how to configure each using the CLI.

Zodiac enables:

  • Flexible, module-based control of programmable accounts
  • Un-opinionated standards for programmable account interaction
  • Reusable implementations of core and factory logic

The Zodiac open standard consists of Avatars, Modules, Modifiers, and Guards architecture:

1. Avatars are programmable Ethereum accounts, like the Gnosis Safe. Avatars are the address that holds balances, owns systems, executes transaction, is referenced externally, and ultimately represents your DAO. Avatars must expose an interface like IAvatar.sol.

2. Modules are contracts enabled by an Avatar that implement some decision making logic. They should import Module.sol.

3. Modifiers are contracts that sit between Modules and Avatars to modify the Module's behavior. For example, they might enforce a delay on all functions a Module attempts to execute. Modifiers should import Modifier.sol and must expose an interface like IAvatar.sol

4. Guards are contracts that can be enabled on Modules and implement pre- or post-checks on each transaction that the Module executes. This allows Avatars to do things like limit the scope of addresses and functions that a module can call or ensure a certain state is never changed by a module. Guards should import BaseGuard.sol.

Overview

Installation

yarn add @gnosis.pm/zodiac

Usage

Once installed, you can use the contracts in the library by importing them to your contract:

pragma solidity ^0.8.6;

import "@gnosis.pm/zodiac/contracts/core/Module.sol";

contract MyModule is Module {
  /// insert your code here
}

Zodiac compliant tools

Avatars

  • Gnosis Safe: The most trusted platform for managing digital assets on Ethereum. Zodiac embraces Gnosis Safe as a powerful, extensible and programmable account standard. Gnosis Safe is the reference implementation of the IAvatar.sol interface specified in this library. However, all Zodiac tools are framework agnostic, and they can be plugged into any programmable account that implements the IAvatar interface.

Modules

  • Bridge (developed by Gnosis Guild): This module allows an address on one chain to control an avatar on another chain using an Arbitrary Message Bridge (AMB). This enables a DAO on one chain to control assets and interact with systems like a Gnosis Safe on a different chain.
  • Exit (developed by Gnosis Guild): This module allows users to redeem a designated token for a relative share of an avatar's assets, similar to MolochDAO's infamous rageQuit() function.
  • Governor (Developed by Gnosis Guild): An opinionated implementation of OpenZeppelin's Governor contracts designed to be used in a Zodiac-style setup, allowing a Avatar (like a Gnosis Safe) to controlled by on-chain governance similar to Compound's Governor Alpha and Bravo.
  • Optimistic Governor (developed by Outcome Finance: This module allows on-chain executions based on Snapshot proposal results. The module utilizes UMA's optimistic oracle to govern a Gnosis Safe based on a set of rules defined off-chain.
  • Reality (developed by Gnosis Guild): This module allows on-chain execution based on the outcome of events reported by Reality.eth. While built initially to execute Gnosis Safe transactions according to Snapshot proposals, this module is framework agnostic. It can enable proposal execution from just about anywhere. For example, it can bring Discord polls on-chain.
  • Safe Minion (developed by DAOHaus): This module allows Moloch DAOs to manage the assets in a Gnosis Safe based on the outcome of v2 Moloch DAO proposals. Safe Minion enables Moloch DAOs to manage collections of NFTs, manage LP positions with AMMs, and initiate any other arbitrary interactions. It enables DAOs that start as a Gnosis Safe to later delegate governance to a Moloch DAO.
  • Tellor (developed by Tellor): This module allows on-chain executions based on Snapshot proposal results, it uses the Tellor oracle to retrieve the data in a secure and decentralized manner.
  • Usul (developed by SekerDAO): This module allows avatars to operate with trustless tokenized DeGov, similar to Compound or Gitcoin, with a time-boxed proposal core that can register swappable voting contracts. This enables DAOs to choose from various on-chain voting methods that best suit their needs.

Modifiers

  • Delay (developed by Gnosis Guild): This modifier allows avatars to enforce a time delay between when a module initiates a transaction and when it will be executed by an avatar.
  • Roles (developed by Gnosis Guild): This modifier allows for fine-grained, role-based, access control for enabled modules. Scopes for a given role include allowed addresses, and optionally include allowed functions on allowed addresses, allowed parameters on allowed functions, whether or not delegate calls are allowed to an allowed address, and whether or not value (ETH) can be sent to an allowed address.

Guards

  • Meta (developed by Cardstack): This guard allows an avatar to have multiple checking processes by registering multiple guards to this meta guard.
  • Scope (developed by Gnosis Guild): This guard allows an avatar to limit the scope of the addressable functions with which its owners can interact. This enables the avatar to define granular permissions for different control mechanisms.

Support and Contributions

Have you built something cool that belongs in this collection of Zodiac tools and want to add it to the list? Follow our contribution guidelines to open a PR!

If you have any questions about Zodiac, join the Gnosis Guild Discord. Follow @GnosisGuild on Twitter for updates.

The Zodiac documentation offers tutorials on how to use the Zodiac App, and detailed developer resources on how to build your own Zodiac module, modifier, or guard will be available soon.

Audits

Zodiac has been audited by the G0 group.

All issues and notes of the audit have been addressed in the release candidate v0.1.0 with commit hash 8a77e7b224af8004bd9f2ff4e2919642e93ffd85 and the subsequent release v1.0.0.

The audit results are available as a pdf in this repo or in the g0-group's github repo.

Security and Liability

All contracts are WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

License

Zodiac is created under the LGPL-3.0+ license.

More Repositories

1

MultiSigWallet

Allows multiple parties to agree on transactions before execution.
JavaScript
1,071
star
2

ethcontract-rs

Generate type-safe bindings for interacting with Ethereum contracts.
Rust
242
star
3

gp-v2-contracts

Smart contracts for the Gnosis Protocol v2
TypeScript
158
star
4

pm-contracts

Collection of smart contracts for the Gnosis prediction market platform.
Solidity
158
star
5

hashi

An EVM hash oracle aggregator
TypeScript
134
star
6

GECO

Gnosis Ecosystem Fund
130
star
7

conditional-tokens-contracts

Smart contracts for conditional tokens.
Solidity
128
star
8

cowswap

🐮 CowSwap: First Gnosis Protocol v2 UI
TypeScript
112
star
9

ido-contracts

Smart contracts for IDO usecase
TypeScript
111
star
10

zodiac-module-reality

A Zodiac module that uses Reality.eth as an oracle for triggering execution on a Safe.
TypeScript
101
star
11

dex-contracts

Smart contracts for the Gnosis Protocol v1
TypeScript
94
star
12

mock-contract

Simple Solidity contract to mock dependent contracts in truffle tests.
JavaScript
94
star
13

dex-research

Collection of research papers written within Gnosis
TeX
88
star
14

conditional-tokens-market-makers

Automated Market Maker (AMM) smart contracts for Conditional Tokens Markets.
JavaScript
85
star
15

cow-token

Repository containing the CowSwap Governance Token smart contract
TypeScript
69
star
16

evm-proxy-detection

Detect proxy contracts and their target addresses using an EIP-1193 compatible JSON-RPC request function
TypeScript
66
star
17

pm-js

Gnosis Prediction Markets JavaScript Library
JavaScript
66
star
18

zodiac-modifier-roles

TypeScript
56
star
19

bivrost-swift

🔥 🌈 Bridge between Solidity Contracts and Swift
Swift
56
star
20

ethers-multisend

An npm package for crafting multi-send transaction from a Zodiac Avatar, such as a Gnosis Safe, based on ethers.js
TypeScript
55
star
21

dex-zksnarks

Code to generate snark proofs for batch auction result validation of the Gnosis d.exchange
C++
45
star
22

dx-contracts

🇳🇱✖️DutchX core smart contracts
JavaScript
45
star
23

util-contracts

Utility contracts for Gnosis
Solidity
44
star
24

gp-v2-services

Off-chain services for Gnosis Protocol v2
Rust
44
star
25

canonical-weth

Canonical WETH package (see https://blog.0xproject.com/canonical-weth-a9aa7d0279dd)
JavaScript
44
star
26

django-eth-events

Python
43
star
27

safe-ios-legacy

Gnosis Safe is a multi signature (2FA) wallet for personal usage.
Swift
41
star
28

zodiac-pilot

Chrome extension to simulate Dapp interactions and record transactions
TypeScript
41
star
29

1155-to-20

ERC 1155 to ERC 20 converter
Solidity
37
star
30

cow-dex-solver

Rust
36
star
31

verify-on-etherscan

Automates verification on etherscan.io of ethereum contracts that were compiled and deployed with truffle
JavaScript
35
star
32

mech

Smart account with programmable ownership
TypeScript
33
star
33

dex-services

Off-chain services for the Gnosis Protocol v1.
Rust
31
star
34

dx-uniswap-arbitrage

Solidity
30
star
35

tabula

Instant web3 publications for writers, DAOs, and any Ethereum-based account.
TypeScript
30
star
36

dx-react

🇳🇱✖️DutchX Protocol Slow.Trade Interface - React Web
TypeScript
30
star
37

zodiac-guard-scope

A transaction guard that allows the owner to limit the multisig signers to calling specific function signatures on specific contracts.
TypeScript
30
star
38

zodiac-module-exit

TypeScript
29
star
39

dx-services

🇳🇱✖️DutchX Services, Bots and CLI
JavaScript
28
star
40

thegraph-subgraphs-monitor

Monitor subgraphs from https://thegraph.com/
Python
25
star
41

research

You will find an index of our research work here.
25
star
42

ido-ux

Interface for the ido-platform
TypeScript
24
star
43

zodiac-safe-app

TypeScript
24
star
44

cow-token-allocation

Data Collection and Processing for vCoW Token Allocation
Python
24
star
45

delegate-registry

A registry contract that contains delegates for addresses/ contracts.
JavaScript
24
star
46

fund-recovery

Recovery mechanisms for multi-signature wallets beyond backing up private keys.
24
star
47

token-lock

Lock ERC-20 tokens for a pre-defined amount of time
TypeScript
24
star
48

dx-daostack

🇳🇱✖️ Decentralized Autonomous Organization (DAO) for managing the DutchX
JavaScript
23
star
49

zodiac-module-bridge

TypeScript
20
star
50

dkg

Distributed key generation
Go
19
star
51

pm-trading-ui

Prediction Market Trading Interface for Gnosis Contracts
JavaScript
19
star
52

dx-docs

🇳🇱✖️Dutch X Documentation
Python
18
star
53

safe-browser-extension

JavaScript
18
star
54

reth

Mono repo for reth ethereum client
Rust
18
star
55

gp-v1-ui

TypeScript
16
star
56

pm-trading-db

Gnosis Core Database Layer
Python
16
star
57

solidity-arithmetic

A solidity library for performing arithmetic.
JavaScript
15
star
58

dex-subgraph

dFusion subgraph
TypeScript
14
star
59

conditional-markets-interface

Interface for conditional markets for Gnosis' Conditional Token Standard
JavaScript
13
star
60

truffle-nice-tools

A simple yet nice toolset for Truffle Framework development.
JavaScript
13
star
61

pydkg

A python implementation of distributed key generation over secp256k1
Python
12
star
62

dex-liquidity-provision

JavaScript
12
star
63

gnosis-exchange

Allows trading of any token pair with an on-chain market maker. Exchange rates serve as price oracle.
JavaScript
12
star
64

gp-v2-trading-bot

Script(s) to interact with gp-v2-contracs
TypeScript
11
star
65

dex-open-solver

Open source solver to the batch auction problem.
Python
11
star
66

heimdall-ios

🔐 App to manage and interact with Gnosis MultiSig Wallets https://wallet.gnosis.pm
Swift
11
star
67

ido-starter

Gnosis safe app to start auction on gnosis auction
TypeScript
11
star
68

module-factory

A factory for gnosis safe modules, deployed as minimal proxies.
TypeScript
10
star
69

safe-web3-provider

JavaScript
10
star
70

zodiac-modifier-delay

A Safe module that allows approved addresses to execute transactions after a time delay, during which transactions can be marked as invalid by the Safe.
TypeScript
10
star
71

dx-examples-dev

🇳🇱✖️DutchX Examples: How to build on top of DutchX
JavaScript
10
star
72

safe-app-template

A create-react-app template for a Gnosis Safe App
TypeScript
9
star
73

zodiac-module-nomad

TypeScript
9
star
74

dex-telegram

dFusion bot
TypeScript
9
star
75

dx-examples-liquidity-bots

🇳🇱✖️DutchX Example: How to run the Bots
JavaScript
9
star
76

wand-nft

TypeScript
8
star
77

pm-scripts

A command line tool that allows users to create and resolve prediction markets on top of Gnosis
JavaScript
8
star
78

zodiac-module-connext

TypeScript
8
star
79

Zodiac-Transaction-Encoder

Transaction Encoder
TypeScript
8
star
80

conditional-tokens-explorer

TypeScript
8
star
81

gp-ui

TypeScript
7
star
82

subgraph-voting-power

TypeScript
7
star
83

zodiac-module-siphon

Solidity
7
star
84

conditional-tokens-tutorial

TypeScript
7
star
85

react-multisend

A headless React library for crafting multi-send transactions from a Gnosis Safe
TypeScript
7
star
86

dappcon-website

Website for the Dappcon conference
JavaScript
6
star
87

pm-kyc-service

KYC Service written in Go for Prediction Markets application
Go
6
star
88

dex-plasma

Contracts for dex plasma batch auctions
JavaScript
6
star
89

dx-tools

🇳🇱✖️DutchX Tools: include Bots and CLI scripts
Shell
6
star
90

hg-subgraph

This repository contains the subgraph for Gnosis Prediction Markets 2.0
JavaScript
6
star
91

dtl

Decentralized token lending using DutchX
JavaScript
5
star
92

run-with-testrpc

Runs commands with TestRPC in the background
JavaScript
5
star
93

pm-apollo-contracts

Contracts related to Gnosis Apollo and Olympia
JavaScript
5
star
94

safe-multisig-electron

JavaScript
5
star
95

owl-token

The OWL token and related smart contracts
JavaScript
5
star
96

gp-v2-dune

A collection of tools to manage queries on Dune Analytics
TypeScript
5
star
97

zodiac-mod-starter-kit

Out of the box starting point for building Zodiac modules
TypeScript
5
star
98

token-splitter

Smart contract to split tokens between addresses
JavaScript
5
star
99

safe-token-distribution

TypeScript
5
star
100

sight-subgraph

This repository contains the subgraph (thegraph.com) for Conditional Tokens platform
TypeScript
5
star