thirdweb SDK
thirdweb SDK is a library that enables developers to build web3 applications and interact with any EVM-compatible blockchain.
You can use the thirdweb SDK to build apps and interact with smart contracts deployed on the Funki network.
The thirdweb SDK is available in various programming languages, including: React, React Native, TypeScript, Python, Go, and Unity.
Visit the thirdweb documentation for more instructions on using the thirdweb SDKs.
Install
To install the thirdweb SDK, run:
npm install @thirdweb-dev/sdk ethers@5
Initializing the SDK with Funki
To get started using the SDK, you must first initialize an instance of ThirdWebSDK
, and connect to the Funki network by passing in the Funki
chain.
To initialize the SDK with the Funki network and get a contract:
import { Funki } from '@thirdweb-dev/chains';
import { ThirdwebSDK } from '@thirdweb-dev/sdk/evm';
const sdk = new ThirdwebSDK(Funki);
const contract = await sdk.getContract('0x0000000000000000000000000000000000000000');
The code snippet above uses the React SDK. The thirdweb SDKs are also available in React Native, TypeScript, Python, Go, and Unity.
If alternatively you'd like to initialize the SDK with Funki Sepolia (testnet), use the following code instead:
import { FunkiSepoliaSandbox } from '@thirdweb-dev/chains';
import { ThirdwebSDK } from '@thirdweb-dev/sdk/evm';
const sdk = new ThirdwebSDK(FunkiSepoliaSandbox);
const contract = await sdk.getContract('0x0000000000000000000000000000000000000000');
Interacting with smart contracts
Once you initialize the SDK and connect to a smart contract deployed to Funki, you can start calling functions on it using the SDK.
Any interaction you make with a smart contract will be made from the connected wallet automatically.
Using contract extension functions
The thirdweb SDK provides convenience functions when your smart contract uses extensions. This is the easiest way to read data and write transactions with your smart contracts.
For example, if your contract implements the ERC721 extension, you can utilize all of the functions of the corresponding erc721 standard in the SDK.
As an example, below is a code snippet that uses useOwnedNFTs
hook to get a list of NFTs owned by a single wallet address:
import { useOwnedNFTs } from '@thirdweb-dev/react';
const { data, isLoading, error } = useOwnedNFTs(contract, '{{wallet_address}}');
Usage
import { useOwnedNFTs, useContract, useAddress } from '@thirdweb-dev/react';
// Your smart contract address
const contractAddress = '{{contract_address}}';
function App() {
const address = useAddress();
const { contract } = useContract(contractAddress);
const { data, isLoading, error } = useOwnedNFTs(contract, address);
}
For more examples on using contract extension functions, visit the thirdweb developer documentation.
Reading contract data
If your contract doesn’t use any extensions, or you want to directly call functions on your smart contract to read data, you can use the useContractRead
hook.
Read data on your contract from a connected wallet:
const { contract } = useContract('{{contract_address}}');
const { data: myData, isLoading } = useContractRead(contract, 'myFunction');
Writing transactions
If your contract doesn’t use any extensions, or you want to directly call functions on your smart contract to write data, you can use the useContractWrite
hook.
Make transactions on your contract from a connected wallet:
const { contract } = useContract('{{contract_address}}');
const { mutateAsync: myFunctionAsync } = useContractWrite(contract, 'myFunction');
const tx = await myFunctionAsync(['argument1', 'argument2']); // Call the function