Tolong jelaskan mengenai Kontrak pintar dari Algorand

Algorand mendukung tiga tipe kontrak pintar, yakni kontrak pintar tanpa state,  kontrak pintar dengan state, dan kontrak pintar Algogeneous. Kontrak pintar tanpa state bertujuan untuk mengesahkan transaksi. Kontrak pintar tanpa state memiliki perbedaan di mana cara mereka mengesahkan transaksi di antara pihak mirip seperti sebuah wasiat. Kontrak pintar tanpa state pada jaringan Algorand juga bertindak sebagai tanda tangan delegator untuk mengesahkan transaksi pada jaringan rantai blok utama. Kontrak pintar bisa disamakan seperti surat wasiat pada umumnya.

Kontrak pintar dengan state menyimpan data dengan persisten dan bisa digunakan untuk tujuan yang lebih luas. "Dengan state" mengacu pada kemampuan kontrak untuk menyimpan informasi dalam sebuah keadaan yang spesifik pada jaringan. Sebagai contoh, salah satu tipe dari Kontrak pintar dengan state adalah fungsi untuk meminta pembayaran yang akan mengizinkan pengguna untuk meminta pembayaran dari pengguna lain. Secara umum, Kontrak pintar dengan state adalah sebuah program logis yang menyimpan data pada rantai blok. Kontrak pintar Algogenous menggabungkan fungsi dari state dan tanap state, merepresentasikan sebuah konvergensi teknikal di dalam arsitektur kontrak pintar. Di mana kontrak pintar Algorand sebelumnya hanya bisa dengan atau tanpa state, kontrak Algogenous bisa memilih salah satu, atau keduanya sekaligus.

Kontrak pintar Algorand mampu ditulis dalam bahasa pemograman bernama Transaction Execution Approval Language (TEAL). TEAL adalah sebuah bahasa pemograman stack berbasis bytecode, yang memiliki antarmuka pemrograman aplikasi untuk Python yang disebut PyTeal. Model kontrak pintar Algorand mendukung atomicity sebuah transaksi, yang memastikan bahwa data transaksi pasti disimpan. Dalam sistem rantai blok lain, kontrak pintar digunakan untuk mendefinisikan aset yang didefinisikan pengguna. Contohnya, dalam Ethereum, kontrak pintar mengimplementasikan antarmuka ERC20 dan ERC721 untuk mendefinisikan asset baru. Sebaliknya, dalam Algorand, aset yang didefinisikan pengguna didukung secara native. Dan mampu memanipulasi aset yang didefinisikan pengguna menggunakan tipe transaksi bawaan.