Common Errors


Value Error: Account Not Defined

Error

ValueError: <boa.network.NetworkEnv object at 0xXXXXXXXXX>.eoa not defined!

This is the most common error you’ll encounter, and it means you’ll need to add an account to your moccasin.toml file. You can do this by following the wallet guide.


File Not Found Error: Missing ‘lib’ Directory

Error

FileNotFoundError: [Errno 2] No such file or directory: ‘lib’

This error occurs when Moccasin cannot find the lib directory in your project, or it is missing github and/or pypi directory. To fix this, you can create the lib directory in your project root:

mkdir lib
mkdir lib/github
mkdir lib/pypi

Or with recent versions of Moccasin, you can run mox install to automatically create the lib directory and its subdirectories.


VersionException: Compiler Incompatibility

Error

VersionException: Version specification "==x.x.x" is not compatible with compiler version

This error usually occurs with VSCode and its Vyper extension. By default, the extension will use your global Vyper installation, which may not match the version specified in your pyproject.toml file. If you have initialized your project with mox init --vscode, you can fix this by changing the following setting in your VSCode .vscode/settings.json file:

{
    // ...
    "vyper.command": "vyper -p ./lib/github -p ./lib/pypi"
}

You can change it like this to get the vyper version from your project’s virtual environment:

{
    // ...
    "vyper.command": "./.venv/bin/vyper -p ./lib/github -p ./lib/pypi"
}

AssertionError: Bytecode Length (ZKsync)

Error

AssertionError: Bytecode length must be a multiple of 32 bytes (ZKsync)

This error occurs when you try to deploy a contract on ZKsync and it might not be related to the feedback from the compiler. Usually, it is because moccasin installed with uv tool comes with its own dependencies installed by default to the latest version. Therefore, if you use mox from the tool, it will try to deploy with its own vyper depedency.

To fix this, you need to add moccasin to your project’s virtual environment and install the dependencies there. You can do this by running the following command in your project directory:

uv add moccasin
uv add vyper==0.4.x

Ensure that you replace 0.4.x with the version of vyper that is compatible with your project. Check your pyproject.toml file for the required version of vyper. For example:

dependencies = ["moccasin==0.4.0", "vyper==0.4.1"]

AssertionError: create_copy_of Not Supported

Error

AssertionError: Built-in function create_copy_of is not supported

This error occurs when you try to use the create_copy_of function in your Vyper code while using ZKsync as the network. create_copy_of is forbidden in zkvyper, which is the Vyper version used by ZKsync. To fix this, you can use another method called create_from_blueprint instead:

@external
def create_favorite_contract() -> address:
    new_favorite_contract: address = create_from_blueprint(self.original_favorite_contract)
    self.list_of_new_favorite_contract.append(new_favorite_contract)
    return new_favorite_contract