Komputer, seperti halnya manusia, berkomunikasi dalam berbagai bahasa. Soliditas dan Vyper adalah dua bahasa terkenal di dunia blockchain Ethereum. Kami memperkenalkan Vyper, bahasa pemrograman kontrak pintar Ethereum, dan membandingkannya dengan Solidity di pelajaran 1. Di bagian ini, kita akan mempelajari lebih dalam tentang sintaksis Vyper, yang sangat mirip dengan sintaksis Python. Salah satu tujuan Vyper adalah membuat pengkodean kontrak pintar lebih mudah dengan tetap menjaga keamanan yang baik. Sintaksnya dimaksudkan sesederhana dan sejelas mungkin. Anda akan merasa betah jika Anda seorang pembuat kode Python. Bahkan jika Anda tidak melakukannya, sintaksis mirip Python Vyper mudah dipelajari. Mari kita lihat komponen sintaksis utama Vyper.
Python
@external def salam(nama: string[10]) -> string[30]: return concat("Halo, ", nama, "!")
Tipe data adalah elemen penyusun bahasa pemrograman apa pun. Mereka menentukan jenis data apa yang dapat disimpan dan dimanipulasi dalam suatu program. Mari kita bahas beberapa tipe data dasar yang ditawarkan Vyper:
Boolean: Ini adalah tipe data biner yang dapat memiliki salah satu dari dua kemungkinan nilai, benar atau salah. Contoh: flag: bool = True
Bilangan bulat: Vyper mendukung bilangan bulat, yaitu bilangan bulat yang bisa positif, negatif, atau nol. Mereka datang dalam berbagai ukuran dari 8 hingga 256 bit, dengan yang paling umum adalah int128. Contoh: count: int128 = 10
Desimal: Ini digunakan untuk mewakili bilangan floating point, yaitu bilangan yang memiliki koma desimal. Contoh: price: decimal = 123.45
Byte dan String: Byte adalah rangkaian data byte, sedangkan string adalah rangkaian karakter unicode. Contoh: name: string[20] = 'Alice'
Daftar dan Array: Daftar adalah kumpulan item dengan tipe data yang sama. Array, di sisi lain, adalah tipe daftar khusus yang panjangnya tetap. Contoh: numbers: int128[5] = [1, 2, 3, 4, 5]
Masing-masing tipe data ini memiliki tempatnya sendiri dalam penulisan kontrak pintar. Anda harus memilih tipe data yang tepat untuk setiap bagian data yang ingin Anda simpan, berdasarkan jenis operasi yang ingin Anda lakukan pada data tersebut.
Singkatnya, beberapa nilai tersedia di Vyper:
bodoh
int128
uint256
desimal
alamat
byte32
Byte
Rangkaian
Python
b: public(bool) i: public(int128) # -2 ** 127 hingga (2 ** 127 - 1) u: public(uint256) # 0 hingga 2 * * 256 - 1 Des: publik(desimal) # -2 ** 127 hingga (2 ** 127 - 1), 10 tempat desimal alamat: publik(alamat) b32: publik(bytes32) bs: publik(Bytes [100]) detik: publik(String[100])
@eksternal def init(): self.b = Salah diri.i = -1 diri.u = 123 self.dec = 3,14 self.addr = 0x704534A22F03Ea46f76A07a195568D115E2e6d52 self.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206e2 6ae84b525cdacb mandiri.bs = b"\x01" mandiri.s = "Halo Vyper"
Fungsi di Vyper, sama seperti banyak bahasa lainnya, adalah blok kode yang dapat digunakan kembali yang melakukan tugas tertentu. Mereka memberikan modularitas yang lebih baik untuk aplikasi Anda dan memungkinkan penggunaan kembali kode.
Di Vyper, Anda dapat mendefinisikan suatu fungsi menggunakan kata kunci def , seperti di Python. Fungsi juga memiliki daftar parameter dan tipe kembalian. Berikut fungsi Vyper sederhana:
Python
@external
def add(a: int128, b: int128) -> int128:
kembalikan a + b
Dekorator [@external](https://github.com/external)membuat fungsi ini dapat dipanggil dari luar kontrak (melalui transaksi atau kontrak lain). Tanpa dekorator ini, fungsi hanya dapat dipanggil dalam kontrak yang telah ditentukan.
@fungsi [@internal](https://github.com/internal) hanya dapat dipanggil di dalam kontrak.
@fungsi [@external](https://github.com/external) hanya dapat dipanggil dari luar kontrak.
Contoh:
Python
@internal @pure def _add(x: uint256, y: uint256) -> uint256: return x + y
@external @view def extFunc() -> bool: return True
@external @view def avg(x: uint256, y: uint256) -> uint256:
# dapat memanggil fungsi internal
z: uint256 = self._add(x, y)
kembali (x + y) / 2
@internal @pure def _sqr(x: uint256) -> uint256: kembali x * x
@eksternal @view def sumOfSquares(x: uint256, y: uint256) -> uint256: kembalikan diri._sqr(x) + diri._sqr(y)
Struktur kontrol digunakan untuk melakukan tindakan berbeda berdasarkan keputusan berbeda. Vyper menawarkan beberapa struktur kontrol termasuk if, for loop, dan while loop.
Pernyataan if adalah struktur kontrol paling dasar. Itu mengeksekusi blok kode hanya jika kondisi yang ditentukan benar.
Python
@external
def is_greater_than_ten(a: int128) -> bool:
jika a > 10:
kembalikan Benar
yang lain:
kembalikan Salah
Perulangan for di Vyper memiliki sintaks yang sama seperti di Python. Anda dapat mengeksekusi serangkaian pernyataan, satu kali untuk setiap item dalam daftar, tuple, set, dll.
Angka Python : int128[5] = [1, 2, 3, 4, 5]
@external
def sum_numbers() -> int128:
jumlah: int128 = 0
untuk i dalam rentang(5):
jumlah + = diri.angka[i]
jumlah pengembalian
Perulangan while di Vyper berulang kali mengeksekusi pernyataan target selama kondisi tertentu benar.
Python
@external
def count_to_ten() -> int128:
hitungan: int128 = 0
sementara hitungan ## Penanganan Kesalahan di Vyper
Dalam pemrograman, penanganan kesalahan sangat penting untuk menangani kesalahan runtime dan memberikan pesan kesalahan yang berarti kepada pengguna. Vyper menggunakan pernyataan assert untuk menangani kesalahan.
Python
@external
def membagi(a: desimal, b: desimal) -> desimal:
menegaskan b != 0, "Tidak dapat membagi dengan nol"
mengembalikan a / b
Pada kode di atas, jika b adalah nol, pesan kesalahan “Tidak dapat membagi dengan nol” akan muncul, dan transaksi akan dikembalikan. Jika tidak, maka akan dilanjutkan ke operasi pembagian.
Vyper juga menyediakan pernyataan revert yang dapat digunakan untuk menghentikan eksekusi panggilan saat ini dan mengembalikan perubahan status, sekaligus memberikan pesan kesalahan.
Itulah ikhtisar singkat tentang sintaksis dan prinsip dasar Vyper. Kunci untuk menguasai Vyper, seperti halnya bahasa pemrograman lainnya, adalah latihan. Saya menganjurkan penggunaan teknik ini untuk menulis aplikasi sederhana. Di sesi berikutnya, kita akan membahas cara menggunakan Vyper untuk membuat dan memelihara kontrak pintar. Mengawasi!
Selamat Anda berhasil menyelesaikan Pelajaran 2! Anda telah membuat kemajuan luar biasa dalam memahami sintaksis Vyper dan konstruksi dasar. Kami telah membahas pengenalan sintaks Vyper, tipe data dasar, dan fungsi, struktur kontrol, dan penanganan kesalahan di Vyper. Ingatlah bahwa masing-masing komponen ini adalah dasar dari setiap program Vyper. Sangat penting untuk memiliki pemahaman yang kuat tentang komponen-komponen inti ini, dan cara terbaik untuk melakukannya adalah dengan berlatih dan mengeksplorasi. Buat program sederhana yang menggabungkan apa yang telah Anda pelajari hari ini. Tidak ada alternatif lain selain pengalaman langsung dalam hal coding.
Bersiaplah untuk mendalami dunia kontrak pintar Ethereum dengan Vyper di masa depan. Dalam Pelajaran 3, kita akan melihat prinsip Vyper yang lebih canggih. Kami akan mengambil pendekatan yang lebih praktis, berkonsentrasi pada perancangan, penerapan, dan interaksi dengan kontrak pintar di jaringan Ethereum. Pahami bahwa dunia teknologi blockchain sangat luas dan terus berubah. Sebagai insinyur blockchain, perjalanan penemuan dan pembelajaran Anda tidak pernah berakhir. Anda sedang berada di jalan menuju penguasaan, dan setiap langkah maju, betapapun kecilnya, adalah sebuah langkah maju. Lanjutkan upaya luar biasa Anda, dan sampai jumpa di Pelajaran 3!
Pernyataan Formal
* Investasi Kripto melibatkan risiko besar. Lanjutkan dengan hati-hati. Kursus ini tidak dimaksudkan sebagai nasihat investasi.
* Kursus ini dibuat oleh penulis yang telah bergabung dengan Gate Learn. Setiap opini yang dibagikan oleh penulis tidak mewakili Gate Learn.