Selamat datang di Pelajaran 3! Dalam pelajaran ini, kita akan fokus pada penerapan konsep dan sintaksis yang telah kita pelajari dari pelajaran sebelumnya untuk mengembangkan kontrak pintar Ethereum menggunakan Vyper dengan Remix IDE. Kami akan membuat, menerapkan, dan berinteraksi dengan kontrak pintar sederhana, memberi Anda pengalaman langsung dengan Vyper dan Ethereum. Kontrak pertama akan menjadi kontrak penyimpanan data sederhana, sedangkan kontrak kedua akan mensimulasikan sistem pemungutan suara dasar.
Kontrak pertama yang akan kami terapkan adalah SimpleStorage
. Kontrak ini, seperti namanya, adalah kontrak penyimpanan data sederhana yang menyimpan satu nomor. SimpleStorage
terdiri dari storedData
, dan dua fungsi, set
dan get
. Fungsi set
memungkinkan pengguna untuk menyimpan nomor, dan fungsi get
memungkinkan siapa saja mengambil nomor ini.
Kami akan melalui langkah-langkah untuk menerapkan dan berinteraksi dengan kontrak SimpleStorage
di blockchain Ethereum. Menyebarkan kontrak ke blockchain Ethereum adalah proses transmisi bytecode kontrak dan ABI ke jaringan Ethereum, tempat kontrak tersebut dapat dipanggil dan dieksekusi. Setelah kontrak diterapkan, kontrak tersebut menerima alamat unik yang dapat dihubungi.
Berikut kode untuk SimpleStorage
:
Python
# @title SimpleStorage
StoredData: int128
@external
def set(x: int128):
self.storedData = x
@external
def get() -> int128:
return self.storedData
Dalam kontrak ini, kita mendefinisikan variabel bilangan bulat storedData
, fungsi publik set(x: int128)
untuk menetapkan storedData
, dan fungsi konstanta publik get() -> int128
untuk mengambil storedData
saat ini.
Berikut panduan langkah demi langkah tentang cara menerapkan kontrak ini menggunakan Remix:
Buka browser web Anda dan navigasikan ke Remix Ethereum IDE.
Aktifkan Plugin Vyper
Alihkan lingkungan ke Injected Web3
di bagian Deploy & Run Transactions
. Ini akan menghubungkan Remix ke dompet MetaMask Anda.
Di bagian File Explorer
, klik ikon +
untuk membuat file baru. Beri nama SimpleStorage.vy
.
Tempelkan kode kontrak SimpleStorage
ke dalam file baru ini.
Sekarang buka tab VyperCompile
dan pilih kontrak SimpleStorage
.
Beralih ke tab Deploy & Run Transactions
, lalu klik tombol Deploy
.
MetaMask akan membuka popup konfirmasi transaksi. Konfirmasikan transaksi.
Setelah transaksi dikonfirmasi, Anda akan melihat kontrak SimpleStorage
yang diterapkan di bagian Deployed Contracts
.
Anda sekarang dapat berinteraksi dengan kontrak. Misalnya, untuk menyimpan nomor, masukkan nomor di fungsi set
dan klik transact
. Untuk mengambil nomor yang disimpan, klik get
.
Setelah kita menguasai SimpleStorage
, kita akan beralih ke sesuatu yang sedikit lebih kompleks: SimpleVoting
. Kontrak SimpleVoting
akan mensimulasikan sistem pemungutan suara sederhana. Kami akan memiliki daftar kandidat, masing-masing direpresentasikan sebagai string. Pengguna akan dapat memilih kandidat ini, dan kami akan melacak jumlah suara yang diterima setiap kandidat. Kontrak tersebut akan memberikan fungsi untuk menambah calon, memilih calon, dan mendapatkan total suara yang diterima seorang calon.
Kontrak SimpleVoting
sedikit lebih rumit daripada SimpleStorage
. Di SimpleVoting
, kita akan memiliki daftar kandidat, masing-masing diwakili oleh sebuah string.
Berikut kode untuk SimpleVoting
:
Python
# Kontrak Pemungutan Suara Vyper
# Deklarasikan variabel status `suara` sebagai HashMap untuk menyimpan suara setiap kandidat.
suara: HashMap[bytes32, uint256]
@external
suara pasti (kandidat: bytes32):
"""
Memberikan suara untuk seorang kandidat.
Argumen:
kandidat: bytes32 - Pengidentifikasi kandidat yang akan dipilih.
"""
# Menambah penghitungan suara untuk kandidat yang ditentukan.
self.votes[kandidat] += 1
@external
@view
def get_votes(kandidat: bytes32) -> uint256:
"""
Dapatkan jumlah total suara untuk seorang kandidat.
Argumen:
kandidat: bytes32 - Pengidentifikasi kandidat yang akan diambil suaranya.
Pengembalian:
uint256 - Jumlah total suara yang diterima kandidat.
"""
mengembalikan self.votes[kandidat]
Kontrak ini cukup mendasar, tanpa adanya tindakan pencegahan terhadap pemungutan suara ganda atau tidak sah. Dalam praktiknya, Anda perlu memasukkan prosedur untuk mencegah kesulitan ini, seperti pendaftaran pemilih dan pemeriksaan untuk memastikan bahwa setiap alamat hanya dapat memberikan suara satu kali.
Anda telah menciptakan dasar yang kuat untuk pemrograman blockchain dengan Vyper dengan menyelesaikan kursus ini. Anda sekarang memiliki pemahaman yang kuat tentang Ethereum, kontrak pintar, dan cara membuatnya di Remix IDE dengan Vyper. Pemahaman ini memberikan banyak peluang untuk mengembangkan aplikasi terdesentralisasi dan berpartisipasi dalam ekosistem blockchain.
Untuk lebih meningkatkan keterampilan dan pengetahuan Anda, pertimbangkan untuk menjelajahi bidang-bidang berikut:
Pemrograman Soliditas Tingkat Lanjut: Soliditas adalah bahasa pemrograman populer lainnya untuk kontrak pintar Ethereum. Mempelajari Soliditas akan memperluas kemampuan Anda untuk bekerja dengan kontrak yang ada dan berkontribusi pada komunitas Ethereum. Periksa kursus kami di sini: [masukkan Tautan kursus Soliditas saat online]
Pengembangan Aplikasi Terdesentralisasi (DApp): Selidiki lebih dalam pembuatan aplikasi terdesentralisasi yang lengkap dengan menggabungkan kontrak pintar dengan pengembangan front-end menggunakan kerangka kerja seperti Web3.js, React, atau Vue.js. Ini akan memungkinkan Anda membuat antarmuka pengguna interaktif yang berinteraksi dengan kontrak pintar Anda.
Keamanan dan Audit: Jelajahi praktik terbaik untuk mengamankan kontrak pintar dan melakukan audit kode secara menyeluruh. Memahami potensi kerentanan dan mitigasi risiko akan memastikan keandalan dan keamanan kontrak pintar Anda.
Interoperabilitas Blockchain: Selidiki integrasi berbagai jaringan dan protokol blockchain. Pelajari tentang komunikasi lintas rantai dan pengembangan kontrak pintar yang dapat dioperasikan dan berinteraksi dengan banyak blockchain.
Ingat, teknologi blockchain terus berkembang, dan sangat penting untuk selalu mengikuti perkembangan terkini. Terlibat dengan komunitas blockchain, berpartisipasi aktif dalam diskusi, dan jelajahi konsep dan teknologi baru agar tetap mendapat informasi dan terkini.
Selamat datang di Pelajaran 3! Dalam pelajaran ini, kita akan fokus pada penerapan konsep dan sintaksis yang telah kita pelajari dari pelajaran sebelumnya untuk mengembangkan kontrak pintar Ethereum menggunakan Vyper dengan Remix IDE. Kami akan membuat, menerapkan, dan berinteraksi dengan kontrak pintar sederhana, memberi Anda pengalaman langsung dengan Vyper dan Ethereum. Kontrak pertama akan menjadi kontrak penyimpanan data sederhana, sedangkan kontrak kedua akan mensimulasikan sistem pemungutan suara dasar.
Kontrak pertama yang akan kami terapkan adalah SimpleStorage
. Kontrak ini, seperti namanya, adalah kontrak penyimpanan data sederhana yang menyimpan satu nomor. SimpleStorage
terdiri dari storedData
, dan dua fungsi, set
dan get
. Fungsi set
memungkinkan pengguna untuk menyimpan nomor, dan fungsi get
memungkinkan siapa saja mengambil nomor ini.
Kami akan melalui langkah-langkah untuk menerapkan dan berinteraksi dengan kontrak SimpleStorage
di blockchain Ethereum. Menyebarkan kontrak ke blockchain Ethereum adalah proses transmisi bytecode kontrak dan ABI ke jaringan Ethereum, tempat kontrak tersebut dapat dipanggil dan dieksekusi. Setelah kontrak diterapkan, kontrak tersebut menerima alamat unik yang dapat dihubungi.
Berikut kode untuk SimpleStorage
:
Python
# @title SimpleStorage
StoredData: int128
@external
def set(x: int128):
self.storedData = x
@external
def get() -> int128:
return self.storedData
Dalam kontrak ini, kita mendefinisikan variabel bilangan bulat storedData
, fungsi publik set(x: int128)
untuk menetapkan storedData
, dan fungsi konstanta publik get() -> int128
untuk mengambil storedData
saat ini.
Berikut panduan langkah demi langkah tentang cara menerapkan kontrak ini menggunakan Remix:
Buka browser web Anda dan navigasikan ke Remix Ethereum IDE.
Aktifkan Plugin Vyper
Alihkan lingkungan ke Injected Web3
di bagian Deploy & Run Transactions
. Ini akan menghubungkan Remix ke dompet MetaMask Anda.
Di bagian File Explorer
, klik ikon +
untuk membuat file baru. Beri nama SimpleStorage.vy
.
Tempelkan kode kontrak SimpleStorage
ke dalam file baru ini.
Sekarang buka tab VyperCompile
dan pilih kontrak SimpleStorage
.
Beralih ke tab Deploy & Run Transactions
, lalu klik tombol Deploy
.
MetaMask akan membuka popup konfirmasi transaksi. Konfirmasikan transaksi.
Setelah transaksi dikonfirmasi, Anda akan melihat kontrak SimpleStorage
yang diterapkan di bagian Deployed Contracts
.
Anda sekarang dapat berinteraksi dengan kontrak. Misalnya, untuk menyimpan nomor, masukkan nomor di fungsi set
dan klik transact
. Untuk mengambil nomor yang disimpan, klik get
.
Setelah kita menguasai SimpleStorage
, kita akan beralih ke sesuatu yang sedikit lebih kompleks: SimpleVoting
. Kontrak SimpleVoting
akan mensimulasikan sistem pemungutan suara sederhana. Kami akan memiliki daftar kandidat, masing-masing direpresentasikan sebagai string. Pengguna akan dapat memilih kandidat ini, dan kami akan melacak jumlah suara yang diterima setiap kandidat. Kontrak tersebut akan memberikan fungsi untuk menambah calon, memilih calon, dan mendapatkan total suara yang diterima seorang calon.
Kontrak SimpleVoting
sedikit lebih rumit daripada SimpleStorage
. Di SimpleVoting
, kita akan memiliki daftar kandidat, masing-masing diwakili oleh sebuah string.
Berikut kode untuk SimpleVoting
:
Python
# Kontrak Pemungutan Suara Vyper
# Deklarasikan variabel status `suara` sebagai HashMap untuk menyimpan suara setiap kandidat.
suara: HashMap[bytes32, uint256]
@external
suara pasti (kandidat: bytes32):
"""
Memberikan suara untuk seorang kandidat.
Argumen:
kandidat: bytes32 - Pengidentifikasi kandidat yang akan dipilih.
"""
# Menambah penghitungan suara untuk kandidat yang ditentukan.
self.votes[kandidat] += 1
@external
@view
def get_votes(kandidat: bytes32) -> uint256:
"""
Dapatkan jumlah total suara untuk seorang kandidat.
Argumen:
kandidat: bytes32 - Pengidentifikasi kandidat yang akan diambil suaranya.
Pengembalian:
uint256 - Jumlah total suara yang diterima kandidat.
"""
mengembalikan self.votes[kandidat]
Kontrak ini cukup mendasar, tanpa adanya tindakan pencegahan terhadap pemungutan suara ganda atau tidak sah. Dalam praktiknya, Anda perlu memasukkan prosedur untuk mencegah kesulitan ini, seperti pendaftaran pemilih dan pemeriksaan untuk memastikan bahwa setiap alamat hanya dapat memberikan suara satu kali.
Anda telah menciptakan dasar yang kuat untuk pemrograman blockchain dengan Vyper dengan menyelesaikan kursus ini. Anda sekarang memiliki pemahaman yang kuat tentang Ethereum, kontrak pintar, dan cara membuatnya di Remix IDE dengan Vyper. Pemahaman ini memberikan banyak peluang untuk mengembangkan aplikasi terdesentralisasi dan berpartisipasi dalam ekosistem blockchain.
Untuk lebih meningkatkan keterampilan dan pengetahuan Anda, pertimbangkan untuk menjelajahi bidang-bidang berikut:
Pemrograman Soliditas Tingkat Lanjut: Soliditas adalah bahasa pemrograman populer lainnya untuk kontrak pintar Ethereum. Mempelajari Soliditas akan memperluas kemampuan Anda untuk bekerja dengan kontrak yang ada dan berkontribusi pada komunitas Ethereum. Periksa kursus kami di sini: [masukkan Tautan kursus Soliditas saat online]
Pengembangan Aplikasi Terdesentralisasi (DApp): Selidiki lebih dalam pembuatan aplikasi terdesentralisasi yang lengkap dengan menggabungkan kontrak pintar dengan pengembangan front-end menggunakan kerangka kerja seperti Web3.js, React, atau Vue.js. Ini akan memungkinkan Anda membuat antarmuka pengguna interaktif yang berinteraksi dengan kontrak pintar Anda.
Keamanan dan Audit: Jelajahi praktik terbaik untuk mengamankan kontrak pintar dan melakukan audit kode secara menyeluruh. Memahami potensi kerentanan dan mitigasi risiko akan memastikan keandalan dan keamanan kontrak pintar Anda.
Interoperabilitas Blockchain: Selidiki integrasi berbagai jaringan dan protokol blockchain. Pelajari tentang komunikasi lintas rantai dan pengembangan kontrak pintar yang dapat dioperasikan dan berinteraksi dengan banyak blockchain.
Ingat, teknologi blockchain terus berkembang, dan sangat penting untuk selalu mengikuti perkembangan terkini. Terlibat dengan komunitas blockchain, berpartisipasi aktif dalam diskusi, dan jelajahi konsep dan teknologi baru agar tetap mendapat informasi dan terkini.