Teknologi blockchain yang pada awalnya dikembangkan pada sistem uang elektronik peer-to-peer Bitcoin pada tahun 2008, kini berkembang menjadi sektor industri yang menjanjikan. Di sinilah sumber daya manusia, seperti programer blockchain sangat dibutuhkan agar pengembangannya sesuai dengan kebutuhan bisnis masa kini.
Sekarang sejumlah perusahaan besar, seperti IBM, Amazon, Microsoft, JPMorgan, Walmart dan lain sebagainya menawarkan banyak layanan berbasis blockchain privat demi efisiensi proses bisnis. Di sisi lain blockchain publik, seperti Bitcoin, Ethereum, EOS dan lain-lain terus dikembangkan secara terbuka oleh programer dan developer program, utamanya membuat Decentralized App (dApp) di atas blockchain tersebut.
Dimaz Ankaa Wijaya, Peneliti blockchain di Monash University mengatakan, pada dasarnya tidak banyak perbedaan antara backend dan front-end programming dengan pemrograman smart contract pada blockchain.
“Sebenarnya tak banyak perbedaan antara pemrograman pada aplikasi berbasis sistem operasi komputer Windows ataupun sistem operasi smart phone dengan pemrograman berbasis blockchain. Secara teknis kami menyebutnya sebagai backend dan front-end programming. Hanya saja, pada blockchain, yang perlu diperhatikan adalah secure programing, karena menyangkut tata kelola transaksi keuangan. Selain itu, faktor efisiensi juga penting.
Dimaz menyebutkan, bagi programmer pemula di blockchain, harus mempelajari tentang bahasa pemrograman khusus pada blockchain. Itu tergantung pada jenis blockchain-nya.
“Pada Ethereum misalnya, untuk smart contract perlu memahami bahasa pemrograman Solidity. Sedang untuk front end-nya, bisa menggunakan sejumlah bahasa pemrograman lain yang lebih umum. Pun demikian, untuk mendapatkan hasil yang lebih maksimal, seorang programmer harus mempelajari banyak hal soal seluk beluk blockchain ini,” saran Dimaz.
Relatif Mudah Dipelajari
Sementara itu, seorang programer blockchain bernama samaran “Mbah Kripto” dalam wawancara dengan Blockchainmedia, menyarankan agar programer menguasai soal kriptografi, khususnya bagi yang hendak membuat node (simpul) jaringan blockchain sendiri.
“Bagi para pemula, saya pikir bisa mulai membuat token ERC-20, lalu smart contract pada blockchain Ethereum. Untuk yang satu ini relatif mudah dipelajari. Mungkin yang palin sulit adalah membut coin baru, karena mengharuskan membuat sistem blockchain tersendiri,” katanya.
Mbah Kripto menyarankan bisa memulai belajar menggunakan Cryptozombie. Di situs web itu, pemula bisa belajar membuat dApp berjenis game menggunakan bahasa pemrograman Solidity di blockchain Ethereum. Selain itu dasar-dasar blockchain bisa dipelajari di tautan ini.
Mbah Kripto juga mengomentari soal perbedaan penting antara public blockchain dengan private blockchain. Menurutnya, private blockchain seperti hyperledger, Corda dan tentunya Libra, tak lebih dari “fake blockchain”.
“Kalau sebutan ‘private blockchain’, saya pikir tak perlu pakai embel-embel ‘blockchain’. Pakai MySQL saja sudah cukup. Nah, berbeda dengan public blockchain yang sangat sulit diinterferensi,” katanya.
Masalah Mind Set Saja
Programer asal Jakarta, Gilang Bagaskara menyebutkan, sebenarnya pembeda utama di blockchain adalah soal mindset saja.
“Kalau programming biasa pada umumnya kita membuat tiering, ada database, backend, logic, API, front end, dan lain sebagainya yang bersifat centralized. Tapi untuk programming blockchain, mindset kita harus decentralized. Artinya, perlu diperhatikan kalau setiap data dan logic yang ditulis akan disimpan di seluruh node,” kata Gilang.
Perlu diperhatikan juga bahwa umumnya blockchain memproses sejumlah transaksi dalam blok-blok yang di-generate dalam periode waktu tertentu. Transaksi yang kita tulis di blockchain belum tentu akan tereksekusi saat itu juga dan harus memperhatikan kondisi (state) terakhir blok yang di-generate. Kata Gilang, mungkin saja transaksi kita dapat diterima oleh blockchain pada blok tertentu, namun di blok berikutnya menjadi invalid karena kondisi yang sudah berubah.
“Kalau perihal tingkat kesulitan sifatnya subjektif, karena berhubungan dengan programming skill dan pengetahuan bahasa pemrograman. Pada umumnya programer akan lebih nyaman dengan sebuah platform blockchain jika menemui bahasa pemrograman yang dia suka digunakan sebagai bahasa smart contract atau SDK untuk bahasa tersebut telah tersedia,” ujarnya.
Pada blockchain, kata Gilang, umumnya pembuatan front end untuk berinteraksi dengan smart contract relatif lebih mudah, karena akan sama dengan cara pemrograman aplikasi biasa. Hanya saja triknya adalah setiap transaksi yang perlu dieksekusi di blockchain, maka harus dijalankan secara asynchronous dan “fire and forget“.
“Jika ingin melihat hasil transaksi, maka perlu dibuat fungsi tambahan yang memerikasa selama beberapa block ke depan terhadap hasil transaksi tersebut,” tambahnya.
Pemrograman smart contract ternyata sedikit lebih sulit daripada front end. Platform blockchain yang menyediakan smart contract paling popular, Ethereum, mewajibkan programer untuk menggunakan bahasa pemrograman khusus (Solidity/Vyper) yang relatif sulit dipelajari.
Solidity memang agak mirip dengan Javascript, jadi programmer akan lebih cepat mempelajarinya. Akan tetapi kesulitan utama dari sebuah smart contract adalah pada manajemen transaction fee (di Ethereum disebut Gas) & kompleksitas fungsi. Smart contract tidak dirancang untuk menangani transaksi yang rumit, dan setiap langkah akan dieksekusi dan ditulis di semua node. Setiap function pun harus ringkas, cepat, dan murah untuk dieksekusi.
Perlu diingat bahwa tidak semua blockchain platform memiliki aturan yang sama. Yang tersulit adalah pemrograman untuk membuat blockchain network itu sendiri. Perlu ada pengetahuan mendalam tentang peer to peer, database, consensus dan security. Mau pakai bahasa apapun setiap blockchain harus kuat dalam keempat aspek tersebut,” tegas Gilang.
Gilang menyarankan, pada awalnya Anda harus familiar dengan konsep wallet/account, block, dan transaction. Cara paling mudah untuk mempelajarinya adalah dengan membuka blockchain explorer dan melihat bagaimana block baru muncul setiap beberapa saat dan membuka informasi block tersebut.
“Di dalamnya kita dapat melihat hash block sebelumnya dan daftar transaksi pada block tersebut. Di dalam transaksi kita dapat melihat account yang terlibat dan fungsi smart contract yang dipanggil, jika ada. Hal ini penting karena berkaitan dengan struktur data dan logic untuk setiap transaksi. Berikutnya yang penting juga adalah cara membuat smart contract, tools yang digunakan, bahasa pemrogramannya, dan cara men-deploy-nya ke blockchain. Terakhir, penting untuk membuat simulasi blockchain di komputer sendiri dengan menjalankan testnet, jika ada. Ini memungkinkan programer untuk berkreasi sebebas mungkin tanpa perlu ikut aturan blockchain platform versi publik,” jelasnya. [red]