Moccasin¶
Moccasin is a fast, pythonic smart contract development framework heavily powered by titanoboa.
Note
This project is under active development.
usage: Moccasin CLI [-h] [-d] [-q] {init,compile,build,test,run,script,deploy,wallet,console,install,purge,config,explorer,vyper,format,inspect,deployments,utils,u,util} ...
🐍 Pythonic Smart Contract Development Framework
positional arguments:
{init,compile,build,test,run,script,deploy,wallet,console,install,purge,config,explorer,vyper,format,inspect,deployments,utils,u,util}
init Initialize a new project.
compile (build) Compiles the project.
test Runs all tests in the project.
run (script) Runs a script with the project's context.
deploy Deploys a contract named in the config with a deploy script.
wallet Wallet management utilities.
console BETA, USE AT YOUR OWN RISK: Interact with the network in a python shell.
install Installs the project's dependencies.
purge Purge a given dependency
config View the Moccasin configuration.
explorer Work with block explorers to get data.
vyper Run Vyper compiler commands with Moccasin's dependency resolution.
format Run Mamushi formatter commands with Moccasin's dependency resolution.
inspect Inspect compiler data of a contract.
deployments View deployments of the project from your DB.
utils (u, util) Helpful utilities - right now it's just the one.
options:
-h, --help show this help message and exit
-d, --debug Run in debug mode
-q, --quiet Suppress all output except errors
How to read the documentation¶
The moccasin documentation assumes macOS or a Linux-like system. If you use Windows, we recommend watching the first 10 minutes of this WSL tutorial and working in WSL (Windows Subsystem for Linux), which lets you run Linux commands on your Windows machine.
TOML Formatting¶
In TOML, you can think of each section as a giant JSON object. Each of these are essentially identical:
TOML (Expanded) |
TOML (Compact) |
JSON |
|---|---|---|
[project]
src = "contracts"
[project.networks.sepolia]
url = "https://..."
chain_id = 11155111
[project.networks.zksync]
url = "https://..."
chain_id = 324
|
[project]
src = "contracts"
networks = {
sepolia = {
url = "https://...",
chain_id = 11155111
},
zksync = {
url = "https://...",
chain_id = 324
}
}
|
{
"project": {
"src": "contracts",
"networks": {
"sepolia": {
"url": "https://...",
"chain_id": 11155111
},
"zksync": {
"url": "https://...",
"chain_id": 324
}
}
}
}
|
Why Moccasin?¶
We think web3 needs the following:
- A python smart contract development framework.
We need this because python is the 2nd most popular language on earth and is the number one choice for artificial intelligence and new computer engineers!
- An easy way to run devops on contracts.
Running scripts to interact with contracts needs to be easy in a language that humans can understand.
And finally… it needs to be fast!
Then, we have some fun plans for AI, formal verification, fuzzing, and more in the future of moccasin, so stay tuned!
Head over to installing moccasin to get started.