Publish and deploy smart contracts without dealing with private keys
The thirdweb CLI is your one-stop-shop for publishing custom contracts for your team or the world to use. The CLI uploads all necessary data to decentralized storage and makes it available to deploy via the thirdweb sdk or thirdweb dashboard.
This brings all the capabilities of thirdweb to your own custom contracts.
In order to publish a contract and get all the benefits of the thirdweb platform, your contract needs to extend ThirdwebContract
.
From your project, add the thirdweb contracts dependency:
npm i @thirdweb-dev/contracts
Once installed, in your Solidity contract you want to publish, import and extend ThirdwebContract
. Here's an example:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@thirdweb-dev/contracts/ThirdwebContract.sol";
contract HellowWorldContract is ThirdwebContract {
// your contract code
}
Once your contract code is setup like above, you can now publish it by running:
npx thirdweb deploy
Alternatively, you install the CLI as a global command on your machine:
npm i -g @thirdweb-dev/cli
thirdweb deploy
This command will:
- auto-detect any contract that extends
ThirdwebContract
in your project - compile your project
- Upload ABIs to IPFS
- Open the deploy flow in your thirdweb dashboard in a browser
From the thirdweb dashboard, you can review and deploy your contracts.
thirdweb deploy
- Compile & deploy contracts through your dashboardthirdweb publish
- Compile & publish contracts, makes them available for easy deployment later directly from your dashboard.
To publish, you need to be in a directory that contains a project which the CLI is compatible with. The projects we support so far:
- hardhat
- forge
- truffle
- brownie
- solc
Clone the repo and run this command after installing the CLI tool:
$ cd examples/hardhat
$ thirdweb publish
The simplest way to work on the CLI locally is to:
- Install the package locally
- Run the
build:watch
command to compile any changes in realtime
$ npm install -g ./
$ yarn run build:watch