원클릭으로
thirdweb
Use thirdweb SDK for Celo development. Includes wallet connection, contract deployment, and pre-built UI components.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use thirdweb SDK for Celo development. Includes wallet connection, contract deployment, and pre-built UI components.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
ERC-8004 Agent Trust Protocol for AI agent identity, reputation, and validation on Celo. Use when building AI agents that need identity registration, reputation tracking, or trust verification across organizational boundaries.
x402 HTTP-native payment protocol for AI agents on Celo. Use when implementing pay-per-use APIs, agent micropayments, or HTTP 402 Payment Required flows with stablecoins.
Verify smart contracts on Celo. Use when publishing contract source code to Celoscan or Blockscout.
Integrate wallets into Celo dApps. Covers RainbowKit, Dynamic, and wallet connection patterns.
Pay gas fees with ERC-20 tokens on Celo. Covers supported tokens, implementation, and wallet compatibility.
Use viem for Celo development. Includes fee currency support, transaction signing, and Celo-specific configurations.
| name | thirdweb |
| description | Use thirdweb SDK for Celo development. Includes wallet connection, contract deployment, and pre-built UI components. |
| license | Apache-2.0 |
| metadata | {"author":"celo-org","version":"1.0.0"} |
Thirdweb is a full-stack Web3 development platform with SDK support for Celo.
Source: https://docs.celo.org/tooling/libraries-sdks/thirdweb-sdk/index.md
npm install thirdweb
Or create a new project:
npx thirdweb create app
import { createThirdwebClient } from "thirdweb";
export const client = createThirdwebClient({
clientId: process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID!,
});
For server-side usage:
const client = createThirdwebClient({
secretKey: process.env.THIRDWEB_SECRET_KEY!,
});
Source: https://portal.thirdweb.com/typescript/v5/getting-started
import { celo } from "thirdweb/chains";
// Use directly
const chain = celo;
import { defineChain } from "thirdweb";
const celoChain = defineChain(42220);
// Or with custom RPC
const celoCustom = defineChain({
id: 42220,
rpc: "https://forno.celo.org",
});
Source: https://portal.thirdweb.com/typescript/v5/chain
import { ThirdwebProvider } from "thirdweb/react";
function App({ children }: { children: React.ReactNode }) {
return (
<ThirdwebProvider>
{children}
</ThirdwebProvider>
);
}
import { ConnectButton } from "thirdweb/react";
import { celo } from "thirdweb/chains";
import { client } from "./client";
function WalletConnect() {
return (
<ConnectButton
client={client}
chain={celo}
/>
);
}
import { ConnectButton } from "thirdweb/react";
import { createWallet } from "thirdweb/wallets";
const wallets = [
createWallet("io.metamask"),
createWallet("com.coinbase.wallet"),
createWallet("app.valora"),
];
function WalletConnect() {
return (
<ConnectButton
client={client}
wallets={wallets}
/>
);
}
import { getContract } from "thirdweb";
import { celo } from "thirdweb/chains";
const contract = getContract({
client,
chain: celo,
address: "0x...",
});
import { useReadContract } from "thirdweb/react";
import { balanceOf } from "thirdweb/extensions/erc20";
function TokenBalance({ address }: { address: string }) {
const { data, isLoading } = useReadContract(
balanceOf,
{
contract,
address,
}
);
if (isLoading) return <div>Loading...</div>;
return <div>Balance: {data?.toString()}</div>;
}
import { useSendTransaction } from "thirdweb/react";
import { transfer } from "thirdweb/extensions/erc20";
function TransferTokens() {
const { mutate: sendTransaction, isPending } = useSendTransaction();
async function handleTransfer() {
const transaction = transfer({
contract,
to: "0x...",
amount: "10",
});
sendTransaction(transaction);
}
return (
<button onClick={handleTransfer} disabled={isPending}>
Transfer
</button>
);
}
import { useActiveAccount } from "thirdweb/react";
function Account() {
const account = useActiveAccount();
if (!account) return <div>Not connected</div>;
return <div>Connected: {account.address}</div>;
}
import { useWalletBalance } from "thirdweb/react";
import { celo } from "thirdweb/chains";
function Balance() {
const account = useActiveAccount();
const { data, isLoading } = useWalletBalance({
client,
chain: celo,
address: account?.address,
});
if (isLoading) return <div>Loading...</div>;
return <div>{data?.displayValue} {data?.symbol}</div>;
}
import { createThirdwebClient } from "thirdweb";
import { getContract } from "thirdweb";
import { celo } from "thirdweb/chains";
import { getNFTs } from "thirdweb/extensions/erc1155";
const client = createThirdwebClient({
secretKey: process.env.THIRDWEB_SECRET_KEY!,
});
const contract = getContract({
client,
chain: celo,
address: "0x...",
});
const nfts = await getNFTs({ contract });
Thirdweb provides type-safe extensions for common contracts:
| Extension | Import Path |
|---|---|
| ERC20 | thirdweb/extensions/erc20 |
| ERC721 | thirdweb/extensions/erc721 |
| ERC1155 | thirdweb/extensions/erc1155 |
Deploy to decentralized storage:
npx thirdweb deploy --app
# .env
NEXT_PUBLIC_THIRDWEB_CLIENT_ID=your_client_id
THIRDWEB_SECRET_KEY=your_secret_key # Server-side only
{
"dependencies": {
"thirdweb": "^5.0.0"
}
}