Entegrasyon
viem ile Entegrasyon
viem ile Ivy sözleşmelerini okuma ve kullanıcı adına işlem gönderme.
viem, Ivy ile çalışmanın en pratik yollarından biridir. Kurulum için Hızlı Başlangıç'a bak.
#Okuma (public client)
import {createPublicClient, http} from "viem";
import {kaia} from "./kaia"; // Hızlı Başlangıç'taki chain tanımı
const client = createPublicClient({chain: kaia, transport: http()});
// Örnek: toplam Ivy hesabı sayısı
const total = await client.readContract({
address: "0x43522E0aB410246C014359B7F5c55F7a196dddFc",
abi: [{type:"function", name:"totalSupply", stateMutability:"view", inputs:[], outputs:[{type:"uint256"}]}],
functionName: "totalSupply",
});
#Yazma (wallet client)
Kullanıcının cüzdanıyla işlem imzalanır. Örnek: bir gönderiye bahşiş gönder.
import {createWalletClient, custom, parseEther, keccak256, toBytes} from "viem";
import {kaia} from "./kaia";
const wallet = createWalletClient({chain: kaia, transport: custom(window.ethereum)});
const [account] = await wallet.requestAddresses();
const TIP_ENGINE = "0x098366647c8e5C07242f8787Aa4E75579D5C7551";
// postId, içeriğin benzersiz kimliğidir; zincire keccak256 özeti olarak verilir.
const postIdHash = keccak256(toBytes("post-uuid-veya-id"));
const hash = await wallet.writeContract({
account,
address: TIP_ENGINE,
abi: [{
type: "function", name: "tip", stateMutability: "payable",
inputs: [{name:"creatorIvyId", type:"uint256"}, {name:"postIdHash", type:"bytes32"}],
outputs: [],
}],
functionName: "tip",
args: [123n, postIdHash], // 123n = içerik üreticisinin ivyId'si
value: parseEther("0.5"), // 0.5 KAIA bahşiş (min 0.1)
});
#Simülasyon (önerilir)
Yazma işleminden önce simulateContract ile revert sebebini önceden yakala:
await client.simulateContract({
account,
address: TIP_ENGINE,
abi: [/* ... */],
functionName: "tip",
args: [123n, postIdHash],
value: parseEther("0.5"),
});
İşlem motorlarının imzaları için: Sosyal Motorlar. Ücretler için: Ücretler & Dağıtım.
Takıldığın bir yer mi var?
Teknik destek, entegrasyon ve ortaklık için ekibe ulaş: info@ivy.live