Lewati ke konten utama

Tantangan Panggilan Kontrak EVM

Tantangan Panggilan Kontrak EVM adalah mekanisme anti-spam yang memverifikasi kondisi on-chain sebelum mengizinkan publikasi. Hal ini memungkinkan pemilik komunitas mewajibkan penulis untuk memenuhi kriteria yang ditentukan dalam kontrak pintar -- misalnya, memiliki saldo token minimum -- untuk dapat memposting.

Kode sumber: github.com/bitsocialnet/evm-contract-call

Persyaratan

  • Node.js >= 22
  • Khusus ESM -- paket ini tidak mengirimkan build CommonJS.

Instalasi

npm install @bitsocial/evm-contract-challenge

Opsi Konfigurasi

PilihanKetikDeskripsi
chainTickerstringRantai yang akan dikueri (misalnya, eth, matic, avax).
addressstringAlamat kontrak pintar untuk dihubungi.
abistringFragmen ABI untuk fungsi yang dipanggil.
conditionstringEkspresi perbandingan yang dievaluasi terhadap nilai pengembalian kontrak (misalnya, > 1000).
errorstringPesan kesalahan ditampilkan kepada penulis yang tidak memenuhi ketentuan.

Contoh

Pemilik komunitas yang ingin membatasi pengeposan kepada penulis yang memiliki lebih dari 1.000 token ERC-20 tertentu akan mengonfigurasi tantangan tersebut dengan:

  • chainTicker: "eth"
  • address: alamat kontrak token
  • abi: ABI untuk balanceOf(address)
  • condition: "> 1000"
  • error: "You must hold more than 1,000 tokens to post in this community."

Saat penulis mencoba menerbitkan, tantangan memanggil balanceOf dengan alamat penulis dan memeriksa apakah nilai yang dikembalikan memenuhi ketentuan. Jika ya, publikasi akan dilanjutkan; jika tidak, pesan kesalahan yang dikonfigurasi akan dikembalikan.

Kapan Menggunakannya

Tantangan Panggilan Kontrak EVM sangat ideal untuk:

  • Komunitas dengan gerbang token yang membatasi postingan hanya untuk pemegang token.
  • Akses dengan gerbang NFT yang memerlukan kepemilikan NFT tertentu.
  • Ruang tata kelola DAO yang partisipasinya terbatas pada pemegang token tata kelola.

Untuk komunitas yang tidak bergantung pada identitas on-chain, pertimbangkan Pemblokiran Spam atau Tantangan Voucher sebagai gantinya.