Skip to main content

Easing Confusions

There is a possibility you will experience some pain points. You are always welcome to go to our Discord channel and seek help from us directly. We mean it, visit us on Discord. Though if you have the DIY mindset you can also read this page and try to answer your question yourself. This page is a collection of some issues we know of or we consider may raise some confusion during the working process with the Hello-World example.

Why are my actions filtered out?

In case you try for example to deploy a contract that is already deployed, given it is the exact same contract, which is internally compared by the hashes, the cweb-tool will filter all unnecessary actions out. This may result in an empty list of actions. Please also read this section about lazy smart contract deployments.

Loading asciinema cast...

My transaction succeeded with L2Unknown

The TransactionStatus.L2Unknown is used for transactions that currently cannot be tracked due to Custom operations type. This may change soon, but for now you will probably have to check the transcations life cycle through our explorer.

Where is my node_modules folder?

We use Corepack together with Yarn Berry and encourage you as well to use yarn's Plug'n'Play modules feature. This means there are not going to be any modules installed in the node_modules folder in your project. All dependencies are stored in a global cache and a single Node.js loader file .pnp.cjs (and .pnp.loader.mjs for ES modules) is used to resolve them.

info

You can still use the node_modules folder in your project. You will have to opt-out from the pnp modules by explicitly add the nodeLinker config to your .yarnrc.yml file.

yarn config set nodeLinker node-modules
yarn install

There is a possibility you will face some issues with your IDE or other tools given pnp modules are not yet omnipresent. Please check these docs for more details.

Why does the contract module use Babel?

Our current JS interpreter that is used to execute the smart contract logic written in Javascript on Coinweb's DEVNET lacks some features that are needed, like the Encoding API. Therefore we use Babel to polyfill the onchain code.

DEVELOPMENT

This is a temporary solution. We are working on introducing a more efficient way that includes the missing features thus we will not be forced to extract them to the contract modules source code.

Is there a way to see more detailed logs?

It is possible to run the scripts that utilise the @coinweb/cweb-tool with the --verbose flag or prepend your commands with LOG_LEVEL=trace to see more detailed logs. Trace logs are prepended by and are highlighted with an outstanding background color.

Loading asciinema cast...

note

The TransactionStatuses that are logged by the transaction monitor can/will be inconsistent as some are leapt over in between the pollings.

How to read Coinweb's DEVNET explorer?

DEVELOPMENT

The Coinweb DEVNET explorer's information visualisation is not optimal. We are working on it.

Devnet Container Throws Port is in Use

If you are running the devnet container and you get an error that the port is already in use you will have to adapt the docker-compose.yaml file and properly bind the ports accordingly.

note

Please keep in mind that there are several services running inside the container, such as the GQL endpoint, the explorer, LinkMint etc. Because the services communicate with each other it is important to set the BACKEND_EXTERNAL_PORT so that it matches the external port of the API.

Please also monitor the generated .env.yarn.devnet file as it exports global endpoint variables.

.env.yarn.devnet
#API_ENDPOINT_DEVNET=https://api-devnet.coinweb.io/wallet
API_ENDPOINT_DEVNET=http://localhost:5555/wallet

Devnet Container Throws ECONNREFUSED

When working from inside the devnet container in your IDE, you will have to use the local ports inside the container, not the externally bound ports.

note

Your environment variable API_ENDPOINT_DEVNET should point to 5100 by default to match the internal API port the container is using.

Please also monitor the generated .env.yarn.devnet file as it exports global endpoint variables.

.env.yarn.devnet
#API_ENDPOINT_DEVNET=https://api-devnet.coinweb.io/wallet
API_ENDPOINT_DEVNET=http://localhost:5100/wallet