Tantangan dalam membuat Decentralized Applications (Dapps) pada platform teknologi blockchain
Blockchain menjadi topik yang menarik perhatian banyak pihak dalam beberapa tahun belakangan. Baik para penggiat investasi (trader) sampai dengan pelaku industri teknologi informasi tidak begitu saja menghiraukan trend dari teknologi ini. Mungkin banyak dari kita yang sudah mengetahui keuntungan yang ditawarkan oleh teknologi blockchain dengan konsep desentralisasi dan efisiensi biaya yang ditawarkan. Teknologi ini terus berkembang dan dengan munculnya utilitas smart contract pada blockchain, dimana kita dapat membuat aplikasi yang berinteraksi dengan jaringan blockchain dan menyimpan beberapa data dan proses dalam aplikasi secara terdesentralisasi dan terbuka.
Bagi beberapa dari kita yang telah memahami keuntungan dari blockchain dan memiliki ide bisnis dan ketertarikan untuk membangun sebuah aplikasi yang terdesentralisasi, hal yang mungkin pertama kali muncul dipikiran kita ialah “Hey saya ingin membangun sebuah bisnis dengan memanfaatkan Blockchain Dapps dengan menggunakan smart contract dan seluruh fungsionalitas dari Blockchain”. Namun nyatanya realisasi dari kalimat ini bukanlah hal yang mudah untuk dilakukan. Beberapa orang memiliki pemahaman bahwa membangun sebuah aplikasi berbasis blockchain akan sama seperti aplikasi pada umumnya dan belum menyadari bahwa pengembangan ini akan sangat berbeda dibanding dengan aplikasi pada umumnya atau saya sebut dengan “aplikasi konvensional”. Pada artikel ini saya akan mencoba untuk membahas beberapa perbedaaannya secara sederhana.
Seperti yang digambarkan pada gambar (a), pada aplikasi pada umumnya secara sederhana kita memerlukan: (a.1) Client Application yang dapat berjalan di browser atau aplikasi pada perangkat desktop/mobile dan berisi User Interface untuk berinteraksi dengan pengguna, (a.2) Application Layer untuk melakukan komputasi dan menjalankan business logic serta web service dari aplikasi, dan (a.3) Database Server untuk menyimpan data dari aplikasi kita. Banyak persepsi orang yang menganggap bahwa dengan membangun aplikasi diatas platform blockchain, kita hanya perlu menggantikan bagian (a.2) dan (a.3) dengan smart contract dan penyimpanan data pada blockchain. Namun pada penerapannya, pemahaman ini bisa dikatakan kurang tepat. Effort yang dibutuhkan untuk membangun sebuah aplikasi pada platform blockchain saya rasa cukup besar.
Aplikasi berbasis blockchain memerlukan beberapa fitur tambahan yang tentunya perlu dipahami dengan baik oleh pengembang aplikasi. Sebuah aplikasi blockchain tetap akan memerlukan Application Layer (b.2) untuk melakukan komputasi, menjalankan business logic, serta penyediaan web service. Kita juga masih akan memerlukan Database Layer (b.3) untuk menyimpan data yang tidak mungkin kita letakkan pada blockchain terkait dengan data size dan complexity karena akan tekait dengan gas cost pada aplikasi. Konsep pemisahan ini biasa disebut dengan off-chain application. Setelah selesai dengan Poin (b.2) dan Poin (b.3), kita juga perlu untuk membuat sebuah Smart Contract (b.5) yang nantinya akan kita gunakan untuk menjalankan program secara on-chain. Smart contract ini juga memerlukan interaksi dengan aplikasi off-chain yang telah kita bahas sebelumnya melalui web service (b.2). Tak lupa, komponen paling penting yang tidak boleh kita lupakan ialah baik setiap ingin melakukan transaksi, developer aplikasi dan pengguna harus memiliki crypto wallet (b.4) untuk mengakses smart contract yang telah kita deploy pada jaringan blockchain.
Pengguna aplikasi perlu menginstall aplikasi crypto wallet seperti metamask untuk mengontrol private key mereka untuk berinteraksi dengan aplikasi yang kita buat. Tentu saja hal ini membawa konsekuensi bagi tingkat kemudahan dalam menggunakan aplikasi kita. Pengguna aplikasi bisa saja akan merasa kerepotan apabila diminta untuk menginstall aplikasi pihak ketiga dan ini bisa berdampak kepada turunnya minat untuk menggunakan aplikasi. Dalam mengatasi hal ini, developer aplikasi memiliki pilihan untuk membiarkan user mengontrol private key, atau kita membantu untuk mengontrol private key mereka. Tentunya
jika kita memilih untuk mengontrol private key dari pengguna, kita memiliki resiko yang lebih tinggi karena kita akan berperan sebagai money transmitter dan memunculkan legal serta security aspect yang perlu kita pertimbangkan.
Pembuatan Smart Contract dan tantangannya
Application layer (b2) serta web service yang telah dibangun akan berinteraksi dengan smart contract yang dijalankan pada sebuah virtual machine pada blockchain. Proses pembuatan sebuah smart contract memerlukan keahlian khusus dan belum banyak programmer yang memiliki keahlian dibidang ini. Pada tahap pembuatan smart contract ini biasanya orang akan mengalami overbudget terkait dengan cost dan timeline. Ada 2 hal penting yang biasanya teabaikan saat membangun sebuah smart contract: (1) Membuat smart contract yang baik tentunya membutuhkan developer yang berpengalaman dan harganya tidak murah, (2) Membuat smart contract yang kita buat teraudit dengan baik juga merupakan sebuah tantangan yang membutuhkan alokasi waktu dan biaya lebih. Audit smart contract yang baik akan membuat proses development beriterasi, dan membutuhkan banyak waktu. Disisi lain, kita tidak bisa membiarkan smart contract kita berjalan di mainnet tanpa teraudit dengan baik, karena akan berdampak buruk seperti membuat orang kehilangan uang, atau dampak lain yang menjadi hal buruk bagi bisnis kita.
Setelah selesai dengan seluruh hal diatas, kita masih memiliki tantangan besar dalam melakukan integrasi seluruh komponen dengan baik. Menjaga interaksi antar komponen bisa menjadi proses yang amat melelahkan. Perbaruan versi dari setiap aplikasi pihak ketiga seperti crypto wallet dan virtual machine juga menjadi tantangan tersendiri yang harus selalu dipahami oleh pengembang aplikasi. Banyaknya komponen dan moving parts ini menjadi tantangan bagi pengembang aplikasi untuk menjaga aplikasi off-chain dan on-chain dapat terus berinteraksi dengan baik. Blockchain merupakan teknologi yang masih berkembang dan dirasa masih berada pada early stage. Saat ini beberapa akademisi dan praktisi sedang bekerja untuk merumuskan sebuah standard dan framework dalam pembuatan blockchain dan smart contract. Sebagai contoh, lembaga sertifikasi besar seperti International Standard Organization (ISO) melalui ISO/TC 307 sedang merumuskan standarisasi terkait dengan blockchain. Hal ini menunjukkan bahwa teknologi blockchain dan decentralized applications akan terus berkembang kedepannya. Kita mengharapkan bahwa teknologi ini akan semakin accesible bagi para pengembang aplikasi maupun para pengguna.