Kontratlar

Kimlik & Kullanıcı Adı

IvyRegistry ve IvyUsername — kullanıcı kimliği ve devredilebilir kullanıcı adları.


Ivy'de kimlik iki sözleşmeye ayrılır: IvyRegistry (çekirdek kimlik) ve IvyUsername (devredilebilir kullanıcı adı, ERC-721).

#IvyRegistry

Adres: 0x43522E0aB410246C014359B7F5c55F7a196dddFc

Her hesabın bir ivyId'si vardır. Faydalı okuma fonksiyonları:

FonksiyonAçıklama
ivyIdOf(address) → uint256Cüzdandan ivyId. 0 ise hesap yok.
profileOf(uint256) → ProfileTam profil (aşağıda).
coreOf(uint256) → (address,bool,uint256)wallet, verified, referrerIvyId.
activeUsernameOf(uint256) → uint256Aktif kullanıcı adı token id'si.
totalSupply() → uint256Toplam hesap sayısı.

Profile yapısı:

struct Profile {
  uint256 ivyId;
  address wallet;
  string  displayName;
  bool    verified;
  uint256 referrerIvyId;
  uint256 activeUsernameTokenId;
  uint256 lastUsernameChange;
  uint256 createdAt;
}

verified alanı önemlidir: beğeni, yorum, bahşiş gibi etkileşimler doğrulanmış hesap gerektirir.

#IvyUsername (ERC-721)

Adres: 0x3a5a665B9D1de5Bf87FC53Ff4Cd712754EEa474a

Kullanıcı adları ayrı bir ERC-721 NFT'dir; devredilebilir ve IvyUsernameMarket üzerinden alınıp satılabilir (gelirler Paylaşım Havuzu'na gider). Bir ivyId'nin gösterdiği aktif kullanıcı adını çözmek için activeUsernameOf(ivyId) ile token id'yi al, sonra IvyUsername üzerinden adını oku.

#Örnek: cüzdandan profile

const ivyId = await client.readContract({
  address: "0x43522E0aB410246C014359B7F5c55F7a196dddFc",
  abi: ivyIdOfAbi,
  functionName: "ivyIdOf",
  args: ["0x..."],
});
if (ivyId !== 0n) {
  const profile = await client.readContract({
    address: "0x43522E0aB410246C014359B7F5c55F7a196dddFc",
    abi: profileOfAbi,
    functionName: "profileOf",
    args: [ivyId],
  });
}

Takıldığın bir yer mi var?

Teknik destek, entegrasyon ve ortaklık için ekibe ulaş: info@ivy.live