25 Hari Belajar Blockchain (Hari ke-1)

25 cara mudah untuk memahami Blockchain

Ilyas Perlindungan
5 min readJun 20, 2021
Photo by Hitesh Choudhary on Unsplash

Judul dari artikel ini terinspirasi dari buku karya Daniel Drescher yang berjudul Blockchain Basics: A Non-Technical Introduction in 25 Steps[1]. Dilihat dari judul mungkin kita awalnya mengira bahwa buku ini pasti ngga panjang kan? Karena terdiri dari 25 langkah. Ternyata tidak, steps yang disebut dalam buku ini adalah BAB yang kita kenal pada buku lainnya. Dalam buku ini digunakan metaphor dan analogi sehingga akan memudahkan pembaca untuk memahami apa itu blockchain. Buku ini sangat cocok bagi pembaca yang tidak memiliki latar belakang Computer Science. Karena dalam buku ini tidak akan ada programming, cryptography secara detil, maupun algortima kompleks yang muncul dipikiran kita ketika berbicara tentang blockchain.

25 steps atau BAB dari buku ini dibagi kedalam 5 bagian utama. Bagian yang pertama membahas mengenai istilah-istilah dan pondasi dasar untuk memahami blockchain. Pada bagian yang pertama ini terdapat steps 1–3. Bagian kedua menjelaskan mengenai kenapa blockchain dibutuhkan, apa masalah yang bisa diselesaikan oleh blockchain, apa potensi yang dimiliki blockchain. Bagian kedua terdiri dari steps 4–7. Bagian ketiga menjelaskan mengenai cara kerja dari blockchain. Bagian ini adalah bagian utama dari buku ini yang terdiri dari steps 8–21. Selanjutnya, bagian keempat menjelaskan mengenai batasan-batasan (limitations, constraints) yang dimiliki oleh blockchain. Disini juga akan digambarkan mengenai cara yang mungkin untuk melewati (tackle) batasan-batasan tersebut. Dan terakhir adalah kesimpulan dan bagaimana aplikasi blockchain dikehidupan nyata.

Source: http://www.blockchain-basics.com/

Hari ini kita akan membahas step 1 dari 25 steps buku ini. Step 1 terdapat pada bagian yang pertama mengenai istilah-istilah dan pondasi dasar dari blockchain, ingat? Di paragraph sebelumnya. Step 1 ini mengajak kita untuk menyelaraskan pemahaman kita ketika berbicara tentang suatu teknologi untuk mempermudah komunikasi pada steps selanjutnya. Step 1 ini juga akan menjelaskan cara menganalisa suatu software system dan pentingnya untuk berpikir bahwa suatu software system adalah kumpulan dari lapisan-lapisan (layers). Selain itu, step 1 ini juga akan menjelaskan mengenai software integrity.

The Metaphor

Punya telepon genggam? Pastinya punya kan. Tahu ngga apa itu wireless communication protocols? apa aja contoh wireless communication protocols? Tahu ngga kalau gelombang elektromagnetik (electromagnetic waves) merupakan pondasi dasar dari komunikasi nirkabel antar perangkat elektronik? Tentunya kebanyakan dari kita ngga tahu hal-hal tersebut, karena untuk menggunakan sebuah telepon genggan kita ngga perlu tahu hal-hal tersebut kan? Yap. Jadi, ada bagian dari sebuah telepon genggam ataupun perangkat elektronik lain (cth: komputer, televisi, mesin cuci, dll.) yang perlu kita ketahui dan bisa kita abaikan.

Namun, cara tersebut membuat kita memiliki pemahaman yang berbeda ketika berbicara tentang telepon genggam. Bagi orang yang belum pernah mengenal mengenai istilah-istilah seperti wireless communication protocols, electromagnetic waves telepon genggam bagi mereka berbeda dengan orang yang sudah paham istilah-istilah tersebut. Itulah kenapa kita perlu untuk memiliki pemahaman yang sama mengenai adanya lapisan-lapisan (layers) ketika berbicara tentang suatu teknologi terutama suatu software system.

Layers of a Software System

Jadi ketika berbicara mengenai suatu sistem perangkat lunak agar mudah dipahami dibagi menjadi seperti berikut:

  • Application vs. Implementation
  • Aspek Functional vs. Nonfunctional

Application vs. Implementation

Dua istilah ini memisahkan antara apa yang kita sebagai pengguna akhir bisa lakukan (contoh: memutar musik di telepon genggam, mengambil gambar, memesan tiket pesawat melalui Traveloka, dll.) yang disebut dengan application layer. Sedangkan implementation layer adalah segala hal untuk membuat application layer dapat berjalan (contoh: konversi informasi digital ke sinyal akustik, mengenali warna dari piksel-piksel yang membentuk gambar, proses pengiriman pesan melalui internet ke sistem Traveloka terkait pemesanan tiket pesawat, dll.). Intinya implementation layer adalah hal-hal teknikal yang membuat suatu software system dapat disajikan kepada pengguna akhir (end user).

Aspek Functional vs. Nonfunctional

Aspek functional dari suatu telepon genggam atau suatu software system adalah apa yang bisa dilakukan oleh telepon genggam atau software system tersebut. Dan aspek nonfunctional adalah bagaimana suatu telepon genggam melakukan apa yang telepon genggam tersebut bisa lakukan. Untuk mempermudah aspek functional bisa dikatakan seperti kata kerja, sedangkan aspek nonfunctional seperti kata keterangan dari kata kerja tersebut. Contoh aspek functional dari sebuah telepon genggam atau suatu software system adalah mengirim gambar melalui internet, memutar musik, mengambil gambar, mengedit photo, dll. Sedangkan contoh dari aspek nonfunctional adalah tampilan (user interface) suatu software system yang indah, software system yang loading nya cepat, dan kemampuan suatu software system untuk membuat data penggunanya private (only belong to authorized user). Keamanan (security) dan integrity merupakan contoh aspek nonfunctional yang juga cukup penting. Dimana integrity artinya suatu soffware system bekerja dengan seharusnya atau tidak ada error.

Tabel 1.1 berikut akan memperlihatkan contoh dari masing-masing layer dan aspek diatas:

Tabel 1.1: Contoh dari masing-masing layers dan aspek pada telepon genggam

Tabel 1.1 diatas memperlihatkan bahwa aspek functional pada layer application adalah hal yang paling familiar bagi kita sebelumnya sebagai pengguna akhir (end user). Aspek functional pada layer application ini disebut juga sebagai user’s need atau hal yang perlu kita ketahui jika hanya untuk menggunakan sebuah telepon genggam. Sedangkan bagian lainnya merupakan hal-hal yang teknikal untuk diketahui saja saat ini. While we’re moving to the next steps :)

Integrity

Integrity merupakan salah satu dari aspek nonfunctional yang sangat penting. Ada tiga komponen utama pada integrity[2]:

  • Data integrity: Data yang di maintain oleh sistem harus lengkap, correct, dan bebas dari kontradiksi.
  • Behavioral integrity: Sistem bekerja dengan semestinyam, tidak ada error.
  • Security: Sistem mampu membatasi akses terhadap data pengguna hanya kepada pengguna yang terautorisasi (authorized user only).

Untuk menjamin sisi integrity dari suatu software system adalah kerjanya seorang sotware engineer. Jika suatu software system yang sisi integrity nya tidak bekerja dengan baik kita akan menemui hal-hal seperti kehilangan akses terhadap akun kita, akun kita diakses orang lain, dll. Itulah kenapa aspek integrity dari suatu software system sangatlah penting.

Outlook and Summary

Pada step 1 diatas telah dibahas mengenai prinsip-prinsip umum pada rekayasa perangkat lunak (software engineering). Dan pemahaman pada konsep-konsep yang telah dijelaskan akan memudahkan kita untuk memahami konsep Blockchain pada tahap selanjutnya.

Software system bisa dilihat dengan cara membagi menjadi:
- Apllication dan implementation layer
- Aspek functional dan nonfunctional
Selain itu, integrity merupakan salah satu dari aspek nonfunctional yang sangat penting. Dimana ada 3 komponen utama dari integrity:
- Data integrity
- Behavioral integrity
- Security

Disclaimer: Ini adalah bagian dari notes saya dalam rangka mempelajari Blockchain. Jika ada kesalahan akan direvisi dikemudian hari ketika saya memiliki pemahaman yang lebih baik mengenai Blockchain.
Fell free to connect with me on LinkedIn:
https://www.linkedin.com/in/ilyas-perlindungan-558187162/

Referensi:

[1] Drescher, D. (2017). Blockchain basics: A non-technical introduction in 25 steps. In Blockchain Basics: A Non-Technical Introduction in 25 Steps. Apress. https://doi.org/10.1007/978-1-4842-2604-9
[2] Boritz, J. Efrim. IS practitioners’ views on core concepts of information integrity. International Journal of Accounting Information Systems 6.4 (2005): 260–279.

--

--