# ThirdWeb

### Introduction[​](https://docs.astar.network/docs/build/EVM/developer-tooling/thirdweb#introduction) <a href="#introduction" id="introduction"></a>

Pre-built contracts are proxy contracts created by the thirdweb team to cover most common use cases and patterns for smart contracts. Contracts cover various use cases across NFTs, airdrops, staking, marketplaces, memberships, and more.

### Deploy on Website <a href="#prerequisites" id="prerequisites"></a>

{% hint style="info" %}
Set the max base fee as 0.05 GWei and the max priority fee as 0.05 GWei at Metamask for BEVM Canary (Chain ID: 1501)
{% endhint %}

ThirdWeb provides a very convenient graphical interface, allowing the deployment of commonly used contracts with just a few clicks and inputs. It offers a user-friendly experience.

1. Go to the thirdweb Explore page: <https://thirdweb.com/explore>

<figure><img src="/files/kxpYmXRcdqxi1SPLOzWk" alt=""><figcaption><p>Explore</p></figcaption></figure>

2. Choose the type of contract you want to deploy from the available options: NFTs, tokens, and more.
3. Follow the on-screen prompts to configure and deploy your contract.

{% hint style="info" %}
For more information on different contracts available on Explore, check out [thirdweb’s documentation.](https://portal.thirdweb.com/pre-built-contracts)
{% endhint %}

### Deploy by Code <a href="#prerequisites" id="prerequisites"></a>

#### Prerequisites[​](https://docs.astar.network/docs/build/EVM/developer-tooling/thirdweb#prerequisites) <a href="#prerequisites" id="prerequisites"></a>

1. Ensure that you have the latest version of Node.js installed.
2. Sufficient funds in the wallet for contract deployment gas fees.
3. Basic knowledge of Solidity.
4. API Key is required to access the thirdweb infrastracture such as RPC Endpoint&#x20;

#### *<mark style="color:orange;">Getting started</mark>*[*<mark style="color:orange;">​</mark>*](https://docs.astar.network/docs/build/EVM/developer-tooling/thirdweb#getting-started) <a href="#getting-started" id="getting-started"></a>

**Creating contract**[**​**](https://docs.astar.network/docs/build/EVM/developer-tooling/thirdweb#creating-contract)

To create a new smart contract using thirdweb CLI, follow these steps:

1. In your CLI run the following command:

   ```
   npx thirdweb create contract
   ```
2. Input your preferences for the command line prompts:
   1. Give your project a name
   2. Choose your preferred framework: Hardhat or Foundry
   3. Name your smart contract
   4. Choose the type of base contract: Empty, [ERC20](https://portal.thirdweb.com/solidity/base-contracts/erc20base), [ERC721](https://portal.thirdweb.com/solidity/base-contracts/erc721base), or [ERC1155](https://portal.thirdweb.com/solidity/base-contracts/erc1155base)
   5. Add any desired [extensions](https://portal.thirdweb.com/solidity/extensions)
3. Once created, navigate to your project’s directory and open in your preferred code editor.
4. If you open the `contracts` folder, you will find your smart contract; this is your smart contract written in Solidity.

   The following is code for an ERC721Base contract without specified extensions. It implements all of the logic inside the [`ERC721Base.sol`](https://github.com/thirdweb-dev/contracts/blob/main/contracts/base/ERC721Base.sol) contract; which implements the [`ERC721A`](https://github.com/thirdweb-dev/contracts/blob/main/contracts/eip/ERC721A.sol) standard.

   ```solidity
   // SPDX-License-Identifier: MIT
   pragma solidity ^0.8.0;

   import "@thirdweb-dev/contracts/base/ERC721Base.sol";

   contract Contract is ERC721Base {
       constructor(
           string memory _name,
           string memory _symbol,
           address _royaltyRecipient,
           uint128 _royaltyBps
       ) ERC721Base(_name, _symbol, _royaltyRecipient, _royaltyBps) {}
   }
   ```

   This contract inherits the functionality of ERC721Base through the following steps:

   * Importing the ERC721Base contract
   * Inheriting the contract by declaring that our contract is an ERC721Base contract
   * Implementing any required methods, such as the constructor.
5. After modifying your contract with your desired custom logic, you may deploy it to BEVM using [Deploy](https://portal.thirdweb.com/deploy).

**Deploying contract**[**​**](https://docs.astar.network/docs/build/EVM/developer-tooling/thirdweb#deploying-contract)

{% hint style="info" %}
Set the max base fee as 0.05 GWei and the max priority fee as 0.05 GWei at Metamask for BEVM Canary (Chain ID: 1501)
{% endhint %}

Deploy allows you to deploy a smart contract to any EVM compatible network without configuring RPC URLs, exposing your private keys, writing scripts, and other additional setup such as verifying your contract.

1. To deploy your smart contract using deploy, navigate to the root directory of your project and execute the following command:

   ```
   npx thirdweb deploy
   ```

   Executing this command will trigger the following actions(automatical):

   * Compiling all the contracts in the current directory.
   * Providing the option to select which contract(s) you wish to deploy.
   * Uploading your contract source code (ABI) to IPFS.
2. When it is completed, it will open a dashboard interface to finish filling out the parameters.
   * `_royaltyRecipient`: wallet address to receive royalties from secondary sales
   * `_royaltyBps`: basis points (bps) that will be given to the royalty recipient for each secondary sale, e.g. 500 = 5%&#x20;
   * `_name`: contract name
   * `_symbol`: symbol or "ticker"
3. Connect wallet
4. Select BEVM as the network
5. Adjust additional settings on your contract's dashboard as required, including tasks like uploading NFTs, configuring permissions, and more

For additional information on Deploy, please reference [thirdweb’s documentation](https://portal.thirdweb.com/deploy).

#### Learn more[​](https://docs.astar.network/docs/build/EVM/developer-tooling/thirdweb#learn-more) <a href="#learn-more" id="learn-more"></a>

If you have any additional questions or face any challenges throughout the process, feel free to [reach out to thirdweb support](https://support.thirdweb.com/).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documents.geb.network/evm-development/smart-contract/thirdweb.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
