<!-- Canonical: https://docs.linea.build/network/how-to/deploy-smart-contract/thirdweb -->

> For the complete Linea documentation index, see [llms.txt](/llms.txt).
> Agents can fetch this page as Markdown at [https://docs.linea.build/network/how-to/deploy-smart-contract/thirdweb.md](https://docs.linea.build/network/how-to/deploy-smart-contract/thirdweb.md).

# thirdweb

thirdweb is a complete web3 development framework that provides everything you need to connect your apps and games to decentralized networks.

## Create a smart contract

To create a new smart contract using thirdweb [CLI](https://portal.thirdweb.com/cli), follow these steps:

1.  In your CLI run the following command:

```text
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, [ERC-20](https://portal.thirdweb.com/contracts/build/base-contracts/erc-20/base), [ERC-721](https://portal.thirdweb.com/solidity/base-contracts/erc721base), or [ERC-1155](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 [ERC-721A](https://github.com/thirdweb-dev/contracts/blob/main/contracts/eip/ERC721A.sol) standard.

```bash
// 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 the [Linea testnet](https://thirdweb.com/linea-sepolia) using [`deploy`](https://portal.thirdweb.com/deploy).

* * *

Alternatively, you can deploy a prebuilt contract for NFTs, tokens, or marketplace directly from the thirdweb Explore page:

1.  Navigate to the thirdweb Explore page: [https://thirdweb.com/explore](https://thirdweb.com/explore)

![thirdweb explore page](/img/get_started/how_to/deploy_smart_contract/thirdweb/Linea_thirdweb_explore_page.png)

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

> For more information on different contracts available on Explore, check out [thirdweb’s documentation.](https://portal.thirdweb.com/pre-built-contracts)

## Deploy a smart contract

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:

```bash
npx thirdweb deploy
```

    Executing this command will trigger the following actions:

    -   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 this process is completed, a dashboard interface will open, where you will need to finish filling out the parameters:

    -   `_name`: contract name
    -   `_symbol`: symbol or "ticker"
    -   `_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%
3.  Select [Linea testnet](https://thirdweb.com/linea-sepolia) as the network

4.  Manage additional settings on your contract’s dashboard as needed, such as uploading NFTs, configuring permissions, and more.

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

If you have any further questions or encounter any issues during the process, please [reach out to thirdweb support](https://support.thirdweb.com).
