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