Llama is an onchain governance and access control framework for smart contracts. This repository contains supporting modules for operating Llama instances. For the core contracts, see the Llama repository.
Llama modules are extensions to Llama instances that can be adopted by using a Llama action to configure and deploy.
- Token Voting: smart contract policies that allow voting token holders to create actions enforced by delegated token thresholds or collectively approve or disapprove an action through token voting.
Foundry must be installed. You can find installation instructions in the Foundry docs.
We use just to save and run a few larger, more complex commands.
You can find installation instructions in the just docs.
All commands can be listed by running just -l
from the repo root, or by viewing the justfile
.
You can get Solidity support for Visual Studio Code by installing the Hardhat Solidity extension.
$ git clone https://github.com/llamaxyz/llama-periphery.git
$ cd llama
$ forge install
Copy .env.example
and rename it to .env
.
The comments in that file explain what each variable is for and when they're needed:
- The
MAINNET_RPC_URL
variable is the only one that is required for running tests. - You may also want a mainnet
ETHERSCAN_API_KEY
for better traces when running fork tests. - The rest are only needed for deployment verification with forge scripts. An anvil default private key is provided in the
.env.example
file to facilitate testing.
forge build
- build the projectforge test
- run tests
just deploy
- deploy and verify payload on mainnet- Run
just -l
or see thejustfile
for other commands such as dry runs.
Name | Ethereum | Optimism | Arbitrum | Base | Polygon |
---|---|---|---|---|---|
Factory | |||||
LlamaTokenVotingFactory | 0xFBE17545dffD75A92A5A72926AE581478973FE65 | 0xFBE17545dffD75A92A5A72926AE581478973FE65 | 0xFBE17545dffD75A92A5A72926AE581478973FE65 | 0xFBE17545dffD75A92A5A72926AE581478973FE65 | 0xFBE17545dffD75A92A5A72926AE581478973FE65 |
Governor | |||||
LlamaTokenGovernor (logic contract) | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A |
Token Adapters | |||||
LlamaTokenAdapterVotesTimestamp (logic contract) | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 |
Name | Sepolia | Holesky | Base Sepolia |
---|---|---|---|
Factory | |||
LlamaTokenVotingFactory | 0xFBE17545dffD75A92A5A72926AE581478973FE65 | 0xFBE17545dffD75A92A5A72926AE581478973FE65 | 0xFBE17545dffD75A92A5A72926AE581478973FE65 |
Governor | |||
LlamaTokenGovernor (logic contract) | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A | 0x3f3DAB3ab8cEc2FBd06767c2A5F66Cb6BFF21A4A |
Token Adapters | |||
LlamaTokenAdapterVotesTimestamp (logic contract) | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 | 0x088C268cb00226D6A9b29e5488905Aa94D2f0239 |
Run the following command to generate smart contract reference documentation from our NatSpec comments and serve those static files locally:
$ forge doc -o reference/ -b -s
We received an audit from Spearbit. You can find the link to the report below:
This repository is subject to the Llama bug bounty program.
Use our bash script to prevent slither from analyzing the test and script directories.
$ chmod +x slither.sh
$ ./slither.sh