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ı:
| Fonksiyon | Açıklama |
|---|---|
ivyIdOf(address) → uint256 | Cüzdandan ivyId. 0 ise hesap yok. |
profileOf(uint256) → Profile | Tam profil (aşağıda). |
coreOf(uint256) → (address,bool,uint256) | wallet, verified, referrerIvyId. |
activeUsernameOf(uint256) → uint256 | Aktif kullanıcı adı token id'si. |
totalSupply() → uint256 | Toplam 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