Project Layout

A typical moccasin project is structured as follows:

.
├── README.md
├── moccasin.toml
├── script/
├── src/
├── tests/
└── out/

Where:

  • README.md is a markdown file that you can use to describe your project.

  • moccasin.toml is a configuration file that moccasin uses to manage the project.

  • script is a directory that contains python scripts that you can use to deploy your project.

  • src` is a directory that contains your vyper smart contracts.

  • tests is a directory that contains your tests.

  • out` is an optional directory that contains the compiled contracts. In moccasin and titanoboa, contracts are compiled on the fly!

Changing your layout

If you wanted to adjust your contracts location, for example, have your smart contracts folder be named contracts instead of src, you’d update your moccasin.toml file to reflect this change:

[project]
src = "contracts"

Vyper Compiler Options

By default, moccasin discourages passing compiler options in the moccasin.toml file or CLI. Instead, if you wish to use vyper CLI commands, you’ll just put them right in the pragma of the contract:

# pragma version 0.4.0
# pragma enable-decimals

some_value: public(decimal)