Demam cryptocurrency dan blockchain. Apakah bisa diimplementasikan?

Muhamad Septian
6 min readMay 12, 2021

--

Mulai tahun 2020 hingga saat ini. blockchain dan cryptocurrency sedang naik daun. Seperti yang diberitakan oleh salah satu portal berita dengan judul Transaksi Harian Saham Turun, Investor Pindah ke Uang Kripto?” mulai dari remaja hingga orang tua mulai mencoba cryptocurrency (Termasuk saya 😅). Selain cryptocurrency memiliki sifat high volatility dan high risk ada teknologi yang luar biasa dibaliknya yaitu blockchain.

Apa itu blockchain?

Saya suka dengan pengertian blockchain disalah satu portal berita. Di sana dijelaskan apa itu blockchain dengan bahasa yang sangat mudah dimengerti.

Blockchain adalah buku besar digital. Jadi saat seseorang memasukkan transaksi, tidak akan mudah untuk menggantinya.

Salah satu keuntungan Blockhain adalah informasi di dalamnya tidak bisa benar-benar diubah setelah dicatat. Terdapat catatan permanen dan karena buku besar dipegang banyak entitas sangat tidak mungkin diretas.

Seluruh entri dibuat dengan samaran, jadi ada tingkatan privasi. Serta tidak ada orang yang memiliki otoritas paling besar di sana. — cnbcindonesia.com

gisreportsonline.com

Contoh Implementasi blockchain

Ada banyak sekali jaringan blockchain yang saat ini tersedia mulai dari Ethereum, Polkadot, Tron hingga Binance smart chain. Sebenarnya sudah banyak sekali teknologi blockchain yang diimplementasikan kedalam kehidupan sehari-hari, saya kasih contoh untuk jaringan Ethereum.

Dalam bidang asuransi:
1. https://etherisc.com
2. https://nexusmutual.io

Dalam bidang credit dan lending:
1.
https://lendroid.com
2. https://compound.finance
3. https://www.colendi.com

Dalam bidang KYC dan Identity:
1.
https://selfkey.org
2. https://sovrin.org

Di atas adalah sedikit contoh implementasi blockchain dikehidupan sehari-hari yang berdiri di atas jaringan Ethereum.

Lalu apakah kita bisa implementasi blockchain dikehidupan sehari-hari? tentu saja bisa. Di sini saya akan mencoba implementasi blockchain dengan cita rasa indonesia yaitu “penyewaan kos-kosan menggunakan teknologi blockchain” (Hey kamu, iyah kamu. yang lagi ngerjain tugas atau skripsi dengan tema ini, jangan lupa mencantumkan sumber yah 😆) .

Ngoding time!

Sebelum memulai, saya akan berikan list apa saja yang saya butuhkan untuk implementasi blockchain:

1. Doa
2. Niat
3. Pengertian dasar terhadap bahasa pemograman solidity.
4. https://remix.ethereum.org untuk IDE nya. Sebenarnya bisa ngoding di local dengan menggunakan truffle.

Di sini saya akan membuat beberapa fungsi besarnya
1. Pendaftaran calon penghuni (Walaupun salah satu sifat blockchain itu anonim tapi kan gak mungkin kita biarin yang ngekost juga anonim 🤣)
2. Input list kamar kos-kosan.
3. Pembayaran kos-kosan.

Fungsi pendaftaran calon penghuni

Kita bahas baris per baris.

  • Line 2. dituliskan bahwa saya menggunakan solidity versi 0.8.0 keatas.
  • Line 4. Saya import module untuk AccessControl. Saya buat 2 role, pengurus dan penghuni.
  • Line 11. Saya membuat variabel publik untuk menghitung total yang sudah mendaftar.
  • Line 13–19 saya membuat struct untuk variabel apa saja yang dibutuhkan untuk mendaftar.
  • Line 21 saya membuat mapping _daftarUser dengan struct DaftarStruct. kira-kira kalo dibuat json akan seperti di bawah ini:
  • Line 23–25 adalah constructor yang di mana saat deploy smart contract (kodingannya) ke blockchain, akan menetapkan alamat yang mendeploy sebagai pengurus.
  • Line 27–42 adalah fungsi dari pendaftaran calon penghuni. Line 33 adalah pengecekan kondisi jika calon penghuni sudah pernah mendaftar maka tidak diperbolehkan lagi untuk mendaftar. Line 34–40 adalah kodingan untuk mencatatnya. Line 41 adalah kodingan untuk increment
  • Line 44 hingga 57 adalah fungsi untuk mengedit data calon penghuni. Hanya bisa diakses oleh orang yang memiliki role pengurus.
  • Line 59–63 adalah fungsi untuk melihat data dari calon penghuni. Hanya bisa diakses oleh orang yang memiliki role pengurus.
  • Line 65–67 adalah fungsi untuk menambahkan orang dengan role pengurus.

Pengujian fungsi pendaftaran calon penghuni

Pertama-tama saya deploy dan verifikasi kontrak terlebih dahulu di Binance Smart Chain dan didapatkan alamat kontrak 0xdb6ac15E48eC7fE608Fad94AfC8B4Bdfc8F297E0. Lalu saya mencoba untuk mendaftar seperti gambar dibawah ini.

Sebelum daftar

Perlu diketahui, segala sesuatu yang berhubungan dengan masuknya data kedalam blockchain wajib memiliki coin jaringan itu sendiri untuk pembayaran gas untuk memproses data. Ethereum membutuhkan ETH, Tron membutuhkan TRX dan Binance smart chain membutuhkan BNB. Maka, ketika menjalankan fungsi daftar penghuni dibutukan coin BNB untuk membayar gas tersebut (Jadi, kalo blockchain diimplentasikan kedalam pemerintahan udah gak heran kalo dimintai biaya pendaftaran 😋). Contohnya seperti di bawah ini:

Membutuhkan BNB untuk membayar gas senilai Rp 6500 (Rate 12 Mei 2021)

Setelah saya konfirmasi maka akan diproses pendaftaran saya kedalam blockchain dengan trx id 0x9693e1488837b4807f98b949b4ede69c465a1bcc6b00c618443b82baa3bcec7c. Setelah dinyatakan Success oleh blockchain maka pendaftaran saya dinyatakan berhasil dan bisa dibuktikan dengan memanggil fungsi infoPenghuni.

Fungsi Input list kamar kos-kosan

Hampir sama dengan kodingan pendaftaran calon penghuni tetapi ada beberapa bagian yang berbeda.

  • Line 5 dan Line 8 adalah module safemath untuk membantu menghandle tipe variabel uint.
  • Line 15–20 membuat status untuk kamar.
  • Line 30 dibuat array, berbeda dengan fungsi pendaftaran yang menggunakan mapping

Pengujian fungsi Input list kamar kos-kosan

Pertama-tama saya deploy dan verifikasi kontrak terlebih dahulu di Binance Smart Chain dan didapatkan alamat kontrak 0x42a2c6798a346e48464fd757625dff0ac2a69a56. Lalu saya mencoba untuk memasukkan list kamar dan mendapatkan trx id 0x9b650bdfdfecd1bf42a4c3af7387915ba0674c437daa62f3053986d5130a8930.

“Loh kok harga perbulannya mahal banget sampe 100000000000000000?” karena 100000000000000000 menggunakan satuan wei atau 10^-18 yang artinya jika diubah ke BNB menjadi 0.1 atau sekitar Rp 1.000.000 dengan rate saat ini (12 May 2021)

“Loh kok nomor kamarnya 0? mana ada nomor kamar 0.” karena _kamarList menggunakan tipe data array ya dimulai dari 0 (Macem SPBU 😁).

Fungsi Pembayaran kos-kosan

Karena kodingan di atas adalah full source dari materi artikel ini maka saya akan menjelaskan apa saja yang belum saya jelaskan.

  • Line 7–30 adalah library TransferHelper di mana lib ini akan kita gunakan untuk mengirim BNB dari smart contract ke orang.
  • Line 49–52 adalah PenghuniStruct untuk menyimpan informasi penghuni.
  • Line 72 adalah mapping untuk _daftarPenghuni, sama seperti mapping _daftarUser di atas.
  • Line 78–99 adalah fungsi untuk menyewa kamar.
  • Line 81 ada kata “payable” yang di mana fungsi ini menerima sejumlah BNB dari orang.
  • Line 87 ada msg.value di mana ini ada value dari jumlah BNB yang dikirim.
  • Line 89 di situ ditulis 4 weeks. kenapa gak 1 months? Karena satuan waktu di solidity paling besar ya weeks. ada years tapi sejak versi 0.5.0 dihapus.
  • Line 98 adalah untuk mengembalikan uang jika membayar lebih. misalkan harga sewa kamar nomor 0 seharga 0.1 BNB sedangkan saya mengirim 1 BNB untuk menyewa 1 bulan, maka 0.9 BNB yang lebih akan dikembalikan oleh kontrak (Baik banget yah kelebihan bayar dibalikin 🥺)
Bukti dikembalikannya 0.9 BNB
  • Lin 101–105 adalah fungsi untuk membuka pintu. kalo waktu sewanya habis pintunya gak bisa dibuka hehehe.

Pengujian fungsi Pembayaran kos-kosan

Pertama-tama saya deploy dan verifikasi kontrak terlebih dahulu di Binance Smart Chain dan didapatkan alamat kontrak 0x4481aa4935e4885fd3b4968683b575ab43efc589. Lalu saya mencoba untuk menyewa kamar 0 dengan waktu sewa 1 bulan sedangkan saya mengirim 1 BNB maka didapatkan trx id 0x262a2c920367d27dcbc98e58df758d64052b27b78cc3f0e3762c394496473366 dengan detail 0.9 BNB yang lebih dikembalikan lagi ke saya.

Ini ketika saya coba bayarnya kurang
Ini ketika saya sewa tetapi belum daftar

Kesimpulan

Nah jadi itu dia untuk membuktikan apakah teknologi blockchain bisa diimplementasikan kedalam kehidupan sehari-hari. mungkin ada beberapa pertanyaan yang terlintas dari kalian

Q: Kak kok katanya blockchain itu datanya gak bisa diubah tapi kok ada fungsi edit?

A: data blockchain memang tidak bisa diubah tetapi itu berlaku untuk data yang tercatat dimasa lalu. misalkan bulan lalu saya menyewa kamar 0 lalu bulan ini saya menyewa kamar 3. Maka data saya saat bulan lalu tidak bisa diubah jadi menyewa kamar 1 misalnya.

Q: Sampai kapan data di blockchain akan tersimpan?

A: Sampai jaringan blockchain itu tutup.

Kodingan materi ini bisa di download disini

Yuk berkenalan 😇

--

--