Přejít na hlavní obsah
Change page

Interakce s chytrými kontrakty

Ne vždy musíte psát a nasadit svůj vlastní chytrý kontrakt. Většinou budete jako vývojář chtít interagovat s chytrými kontrakty, které už do sítě Ethereum nasadil někdo jiný.

Tato stránka pokrývá dva základní způsoby interakce s chytrým kontraktem – čtení dat a zápis dat – a nástroje, které k obojímu potřebujete.

Předpoklady

Měli byste rozumět:

Dva způsoby interakce s chytrým kontraktem

Interakce s chytrým kontraktem spadá do dvou kategorií:

Čtení z kontraktu

Čtení je operace zdarma, která nevytváří transakci a nemění žádný stav na blockchainu.

Když čtete z kontraktu, jednoduše se dotazujete na data, která už existují. Například:

  • Kontrola zůstatku ERC-20 tokenu
  • Čtení aktuální ceny z decentralizované burzy
  • Zjištění vlastníka NFT

Protože čtení nemění stav, nestojí žádný gas a může ho provést kdokoli bez potřeby ETH.

Zápis do kontraktu

Zápis je operace měnící stav, která vyžaduje transakci a stojí gas.

Když zapisujete do kontraktu, spouštíte funkci, která mění stav blockchainu. Například:

  • Převod tokenů
  • Výměna tokenů na decentralizované burze
  • Ražení NFT

Zápis vždy vyžaduje:

  1. Externě vlastněný účet (EOA) s dostatkem ETH na gas
  2. Transakci podepsanou soukromým klíčem účtu
  3. Vytěžení transakce a její zahrnutí do bloku

Díky abstrakci účtu může zápisy iniciovat i účet chytrého kontraktu a paymaster může pokrýt gas jménem uživatele – takže EOA držící ETH není striktně vyžadován.

Porozumění ABI kontraktu

Aby mohla vaše aplikace interagovat s chytrým kontraktem, musí vědět, co kontrakt umí. Zde přichází na řadu Application Binary Interface (ABI).

ABI je JSON dokument, který popisuje:

  • Každou funkci, kterou kontrakt nabízí (název, vstupy, výstupy)
  • Každou událost, kterou může kontrakt vyvolat
  • Jak kódovat a dekódovat data při komunikaci s kontraktem

Představte si ABI jako návod k použití kontraktu – bez něj vaše aplikace neví, jaké funkce existují nebo jaké parametry očekávají.

Kde najít ABI kontraktu

  • Ověřené kontrakty na Etherscanu - Etherscan (otevře se v nové kartě) automaticky zpřístupňuje ABI pro ověřený zdrojový kód
  • Od vývojáře - mnoho projektů publikuje svá ABI ve své dokumentaci nebo v npm balíčcích
  • Vygenerování ze zdrojového kódu - pokud máte zdrojový kód v Solidity, můžete ho zkompilovat a ABI vytvořit

Nástroje a knihovny pro interakci s kontrakty

Vývojáři obvykle používají JavaScript/TypeScript knihovnu pro interakci s kontrakty z webové aplikace, backendu nebo skriptu.

Klientské knihovny (JavaScript/TypeScript)

Backendové knihovny

Příklad: čtení zůstatku tokenu pomocí Viem

Příklad: odeslání transakce pomocí ethers.js

Události a logy

Chytré kontrakty mohou vyvolávat události, aby signalizovaly, že se něco stalo. Vaše aplikace může těmto událostem naslouchat a reagovat v reálném čase.

Simulace transakcí

Před odesláním transakce ji můžete simulovat, abyste zjistili, zda by byla úspěšná – a viděli její návratovou hodnotu – bez utrácení gasu. To je užitečné pro včasné zachycení chyb a pro náhled výsledků.

Většina klientských knihoven to podporuje prostřednictvím eth_call:

// Pomocí Viem
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

Peněženky a podepisování

V decentralizované aplikaci (dapp) řeší podepisování uživatelova peněženka (jako MetaMask, Rainbow nebo WalletConnect). Soukromé klíče nespravujete přímo.

Knihovny peněženek a nástroje pro připojení toto abstrahují, takže se můžete soustředit na budování logiky vaší aplikace.

Další čtení