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