Getting Started
All contracts by default are interacting with the Coinweb DEVNET (you can find its explorer here). It is a public test network and no registration is needed. You may or may not experience some delays or outages.
The following is the simplest way to create a new Coinweb dApp project. It will
create the Hello World example in the directory called my-dapp
inside your
current folder. The created workspace includes a yarn monorepo with a contract
module and a simple UI with the most basic interaction possibilities.
The public repository for the Hello World example can be found here.
Prerequisites
Before starting, please make sure you have the following installed:
- Node.js, version
^20.12.0 || ^21.7.0 || >=22.0.0
- Corepack, installed globally
npm install -g corepack
Coinweb modules and repositories rely on
corepack
which is a
zero-runtime-dependency package acting as bridge between Node projects and their
package managers. If you have not enabled it, you need to enable it by running:
corepack enable
Additionally Yarn Berry is used as the package manager. It is not needed nor possible to install it globally. It will be preset per project.
Create Your First dApp
create coinweb-dapp
is an officially supported way to create Coinweb dApps. It
offers a modern build setup with no configuration.
npm.coinweb.io
is the official Coinweb public npm registry.
- npm
- yarn
npm create coinweb-dapp@latest
yarn create coinweb-dapp
This will setup a default Hello World dApp in the my-dapp
directory and
install all dependencies utilising Yarn Berry which is preset within the
project. You can check the folder structure explanation
here to have a better
overview over the files and folders.
Inside the contract module's package the src/onchain
folder contains the smart
contract logic and the src/offchain
folder contains the offchain logic which
is used to interact with the smart contract applications front end or back end.
Read more about working with contract modules
here.
Build the Modules
cd my-dapp
yarn build
The project's root build
script is used to build the contract module and the
UI subsequently. This is important when one module is another one's dependency
and therefore the dist
folder has to exist before the other module can be
built. In this example all contract modules are built first. You can find the
build script in the
package.json
file:
Publish the Contract Module to Coinweb
After your project was built successfully, you can deploy the contract module to Coinweb.
yarn deploy-contracts
The smart contract is published to Coinweb by the root yarn deploy-contracts
script. After publishing a smart contract to Coinweb it can be invoked/called by
anyone. The transaction id that deploys the smart contract is printed by the
script and can be tracked at the
DEVNET explorer.
Call the Deployed Contract
To execute the root-level script that calls the deployed smart contract, run:
yarn call-contracts
Calling the smart contract executes the logic in the smart contract. This logic
writes a claim containing the words "hello world"
. The transaction id that
invokes the smart contract is printed by the script and can be tracked at the
DEVNET explorer
Finally we can check that the "hello world"
claim was actually written by
executing a program in the dapp-ui
folder.
yarn workspace dapp-ui dev
It will show the UI for hello world. You can superficially interact with the
contract by changing the parameters and validating them by clicking the button.
All the UI component does is fetching the deployed claim from Coinweb by
utilising the @coinweb/wallet-lib
and displaying it in a form
Keep on reading to familiarize youself with more complex examples and the underlying concepts. The possibilities using Coinweb are endless.