Lewati ke konten utama

Deploy Smart Contract dengan thirdweb

Di halaman ini, Anda akan mempelajari cara membuat, mendeploy dan memverifikasi smart contract dengan thirdweb ke testnet Lisk Sepolia.

thirdweb adalah framework end-to-end untuk pengembangan dan deployment smart contract.

Kerangka ini memungkinkan developer untuk deploy contract standar seperti ERC-20, ERC-721, atau ERC-1155, tanpa menulis satu baris kode pun.
Lebih banyak informasi tentang ini dapat ditemukan di bagian thirdweb Explore.

Selain itu, developer yang ingin mengembangkan dan deploy smart contract kustom dapat menggunakan Solidity SDK yang disediakan oleh thirdweb, serta opsi lainnya seperti TypeScript SDK dan Unity SDK.
Namun, dalam panduan ini, kami akan lebih fokus pada thirdweb Explore dan Solidity SDK.

Fitur:

  • Explore: Deploy contract bawaan siap pakai.
  • Build (Solidity SDK): Menulis smart contract kustom.
  • Deploy: Mendukung deployment contract untuk berbagai kasus penggunaan.
  • Publish: Mempublikasikan contract Anda secara on-chain.

Deploy Contract Bawaan melalui thirdweb Explore

Jika Anda ingin deploy contract bawaan tanpa kustomisasi, thirdweb menyediakan cara yang mudah untuk melakukannya menggunakan Explore.
Tonton video berikut untuk pengenalan singkat tentang Explore:

catatan

Sebelum mencoba panduan berikut, pastikan bahwa wallet Anda terhubung ke Jaringan Lisk dan memiliki dana yang cukup.
Untuk informasi lebih lanjut, lihat bagian Dana Wallet.

Video-video berikut menjelaskan langkah-langkah untuk deploy berbagai token dengan contract bawaan di Lisk:

Menggunakan Solidity SDK

Prasyarat

Node.js v18+

Download dan instal Node v18+.

Jika Anda menggunakan nvm untuk mengelola versi Node.js Anda, cukup jalankan perintah: nvm install 18.

Menginstal dan Mengonfigurasi thirdweb

Untuk mengembangkan contract kustom, Anda perlu men-download dan mengonfigurasi thirdweb.

  1. Untuk menginstal thirdweb, jalankan perintah berikut:
    npm i -g thirdweb
  2. Atur API key thirdweb Anda.

Login menggunakan API key Anda.

  1. Langkah berikutnya adalah login ke thirdweb melalui CLI. Untuk melakukannya, ketik perintah berikut:
    thirdweb login
  2. Setelah Anda menjalankan perintah di atas, terminal akan membuka aplikasi browser yang meminta Anda untuk mengautentikasi perangkat:
    .......

    💎 thirdweb v0.13.60 💎

    Automatically attempting to open a link to authenticate with our dashboard...

    If the browser doesn't open, please use this link to authenticate:

    https://thirdweb.com/cli/login?payload=%7B%22payload%22%3A%7B%22type%22%3A%22evm%22%2C%22domain%22%3A%22thirdweb.com%22%2C%22address%22%3A%220x4fA5f77Fadcc319c626b28Ea6260FB0c3Ba6e41C%22%2C%22statement%22%3A%22Please%20ensure%20that%20the%20domain%20above%20matches%20the%20URL%20of%20the%20cuhdksjahjkdhkshajkdhkshakjhsjhdsajkhhdhs

    ⠙ Waiting for a response from the dashboard
  3. Setelah Anda melakukan autentikasi melalui browser, terminal akan mencatat pesan berikut:
    Successfully linked your account to this device 
  4. Anda dapat memverifikasi status login Anda dengan menjalankan kembali perintah thirdweb login.
    💎 thirdweb v0.13.60 💎

Membuat Proyek

Langkah pertama untuk deploy smart contract ke Lisk adalah menyiapkan environment pengembangan Anda dengan membuat sebuah proyek.
thirdweb mendukung dua framework pengembangan smart contract paling populer, yaitu Foundry dan Hardhat.

Dalam panduan ini, kami menggunakan Foundry untuk pengembangan smart contract.
Namun, Anda dapat menggunakan Hardhat jika Anda lebih nyaman dengan itu.
Langkah-langkah pembuatan proyek serupa untuk Foundry maupun Hardhat.

  1. Untuk Foundry, instal prasyaratnya di sistem Anda sebelum melanjutkan pembuatan proyek thirdweb.

  2. Setelah semua yang disebutkan di atas terinstal, lanjutkan dengan langkah-langkah berikut:

    npx thirdweb create
  3. Pilih Contract sebagai jenis proyek Anda dan berikan nama yang sesuai untuk proyek tersebut.

    .......

    💎 thirdweb v0.13.60 💎

    ✔ What type of project do you want to create? › Contract
    ✔ What is your project named? … thirdweb-contracts
  4. Selanjutnya, pilih Forge sebagai framework, NFT sebagai nama contract, ERC721 sebagai jenis smart contract, dan None untuk opsi ekstensi.

    info

    Jika Anda ingin menggunakan framework Hardhat, pilih Hardhat sebagai pengganti Forge dalam dialog berikutnya.

    ✔ What framework do you want to use? › Forge
    ✔ What will be the name of your new smart contract? … NFT
    ✔ What type of contract do you want to start from? › ERC721
    ✔ What extensions do you want to add to your contract? › None
  5. thirdweb akan menginstal semua dependensi yang relevan dan mengatur proyek contract untuk Anda.

    Log eksekusi dari pembuatan proyek contract thirdweb:
    Creating a new thirdweb contracts project in /Users/XYZ/Lightcurve-Code/L2/thirdweb-contracts.

    Downloading files. This might take a moment.
    Installing packages. This might take a couple of minutes.

    yarn install v1.22.19
    warning ../../../package.json: No license field
    info No lockfile found.
    [1/4] 🔍 Resolving packages...
    [2/4] 🚚 Fetching packages...
    [3/4] 🔗 Linking dependencies...
    [4/4] 🔨 Building fresh packages...
    success Saved lockfile.
    ✨ Done in 9.73s.

    Initialized a git repository.

    Success! Created thirdweb-contracts at /Users/XYZ/Lightcurve-Code/L2/thirdweb-contracts

    Inside that directory, you can run several commands:

    yarn build
    Compiles your contracts and detects thirdweb extensions implemented on them.

    yarn deploy
    Deploys your contracts with the thirdweb deploy flow.

    yarn publish
    Publishes your contracts with the thirdweb publish flow.

    We suggest that you begin by typing:

    cd thirdweb-contracts
  6. Aplikasi Foundry yang dibuat dengan thirdweb memiliki struktur direktori yang mirip seperti ini:

    .
    ├── .github
    ├── .cache
    ├── lib
    ├── node_modules
    ├── out
    ├── src
    │   └── NFT.sol
    ├── test
    │ └── Contract.t.sol
    ├── .gitignore
    ├── .gitmodules
    ├── foundry.toml
    └── README.md

Membuat Smart Contract

Untuk kemudahan dan keamanan, thirdweb sudah menyediakan contract dasar yang dapat dengan mudah dikustomisasi dengan kode.
Karena sebelumnya kita memilih untuk membuat token ERC721, file NFT.sol akan tersedia di folder src/.
File NFT.sol ini sudah memiliki kode dasar yang diperlukan untuk sebuah contract NFT.

src/NFT.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

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

Membangun Smart Contract

Setelah kode smart contract siap, contract tersebut harus di-build menggunakan thirdweb.

  1. Untuk melakukannya, cukup jalankan perintah berikut:

    npx thirdweb build
  2. Jika smart contract tidak memiliki error, Anda akan melihat output berikut di terminal:

    .......

    💎 thirdweb v0.13.62 💎

    ✔ Detected project type: foundry
    ✔ Compilation successful
    ✔ Choose which contracts to run detection on · NFT


    🔎 Detected extension on NFT
    ✔️ ERC721
    ✔️ ERC721Burnable
    ✔️ ERC721Supply
    ✔️ ERC721AQueryable
    ✔️ ERC721Mintable
    ✔️ ERC721BatchMintable
    ✔️ Royalty
    ✔️ ContractMetadata
    ✔️ Ownable
    ✔️ Fallback

    ℹ Suggested extensions
    - ERC721Enumerable - https://portal.thirdweb.com/interfaces/erc721enumerable
    - ERC721LazyMintable - https://portal.thirdweb.com/interfaces/erc721lazymintable
    - ERC721SignatureMintV1 - https://portal.thirdweb.com/interfaces/erc721signaturemintv1
    - ERC721SignatureMintV2 - https://portal.thirdweb.com/interfaces/erc721signaturemintv2
    - ERC721TieredDrop - https://portal.thirdweb.com/interfaces/erc721tiereddrop
    - ERC721ClaimCustom - https://portal.thirdweb.com/interfaces/erc721claimcustom
    - ERC721ClaimZora - https://portal.thirdweb.com/interfaces/erc721claimzora
    - ERC721ClaimConditionsV1 - https://portal.thirdweb.com/interfaces/erc721claimconditionsv1
    - ERC721ClaimConditionsV2 - https://portal.thirdweb.com/interfaces/erc721claimconditionsv2
    - ERC721ClaimPhasesV1 - https://portal.thirdweb.com/interfaces/erc721claimphasesv1
    - ERC721ClaimPhasesV2 - https://portal.thirdweb.com/interfaces/erc721claimphasesv2
    - ERC721SharedMetadata - https://portal.thirdweb.com/interfaces/erc721sharedmetadata
    - ERC721LoyaltyCard - https://portal.thirdweb.com/interfaces/erc721loyaltycard
    - ERC721UpdatableMetadata - https://portal.thirdweb.com/interfaces/erc721updatablemetadata
    - Permissions - https://portal.thirdweb.com/interfaces/permissions

    ℹ Once you're done writing your contracts, you can run the following command to deploy them:

    yarn deploy

Deploy Smart Contract

Semua pemeriksaan berhasil dilewati, yang berarti smart contract siap untuk di-deploy menggunakan thirdweb.

  1. Untuk melakukannya, cukup jalankan perintah berikut:

    npx thirdweb deploy
  2. Jika smart contract tidak memiliki error, Anda akan melihat output berikut di terminal:

    .......

    💎 thirdweb v0.13.60 💎

    ✔ Detected project type: foundry
    ✔ Compilation successful
    ✔ Choose which contract(s) to deploy · NFT
    ✔ Upload successful
    ✔ Open this link to deploy your contracts: https://thirdweb.com/contracts/deploy/QmSJExQJfPYFuaRZuDu9XRR2jUu9yp3kaFX3Sdc1KRWxiP
  3. Terminal juga akan membuka aplikasi browser yang mengarah ke URL khusus, seperti yang ter-highlight diatas.

  4. Isi formulir sesuai dengan petunjuk di bagian Fill Parameter.

  5. Setelah Anda mengisi detail smart contract ERC721, klik tombol Deploy Now dan contract tersebut akan dideploy ke jaringan yang dipilih dari wallet Anda.

info

Jika Anda ingin menguji contract berbasis Foundry Anda, ikuti langkah-langkah yang disebutkan dalam panduan Menguji Smart Contract.

Berinteraksi dengan Smart Contract

Setelah contract di-deploy, Anda dapat berinteraksi dengan contract tersebut melalui Explore.
Video berikut menjelaskan langkah demi langkah bagaimana berinteraksi dengan bermacam-macam contract token di Lisk.