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.
- Token Voting: smart contract policies that allow
ERC20Votes
orERC721Votes
tokenholders 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.
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
This repository is subject to the Llama bug bounty program. Details can be found here.
Use our bash script to prevent slither from analyzing the test and script directories.
$ chmod +x slither.sh
$ ./slither.sh