Era kripto tidak lagi bisa terelakkan. Sampai sejauh ini, jumlah kripto dan token sudah mencapai ribuan, dari berbagai macam platform yang ada. Hal ini membuat jumlah bursa kripto pun tumbuh mengiringi. Berbagai enterpreneur, startup baru, mencoba masuk untuk menjajal peluang-peluang baru di dunia kripto.
Lantas bagaimana cara membuat bursa kripto sendiri? Membuat bursa kripto sendiri tentu saja tidaklah sesederhana yang kita bayangkan. Bursa kripto ini menjadikan sebuah wadah untuk memperdagangkan berbagai macam varian kripto yang ada, dengan berbagai pasangan trading tertentu.
Bursa kripto atau crypto exchange juga bisa memfasilitasi perdagangan kripto dengan menggunakan mata uang Fiat seperti Dolar, Rupiah, Yen, atau mata uang Fiat lainnya. Nah, sebelum memutuskan untuk membuat bursa kripto sendiri, tentu akan cukup berguna untuk mengetahui hal-hal mendasar dan penting untuk diperhatikan.
Pertama, kita perlu mengetahui bahwa bursa kripto itu berada di luar ekosistem inti dunia cryptocurreny. Bursa-bursa kripto yang ada, merupakan sebuah badan, dan umumnya didirikan oleh perusahaan ataupun startup.
Bursa kripto tentu saja akan bersinggungan langsung dengan ranah regulasi, karena jelas, bursa kripto tersebut berlaku juga untuk menghimpun dana dari pelanggan. Maka jelaslah, kita juga harus mengetahui regulasi dan mentaati peraturan yang ada.
Kedua, ada dua tipe bursa kripto, yakni bursa kripto dengan tipikal Decentralized Exchange, dan juga Centralized Exchage. Untuk saat ini, baik keduanya, sudah sepatutnya pula untuk mentaati peraturan yang berlaku. Meskipun bursa kripto itu Decentralized Exchange, namun kenyataan yang ada sebagian besar bursa itu tetaplah berbentuk sebuah lembaga atau perusahaan, ataupun juga startup.
Pada bursa kripto dengan tipikal decentralized exchange, sampai sejauh ini masih belum bisa menerapkan fungsi yang decentralized sepenuhnya. Kenyataannya, bursa-bursa tersebut juga masih menggunakan pool tertentu, sebagai penampung dana atau aset pengguna.
Mentaati regulasi yang ada, misalnya dengan kepatuhan untuk KYC dan hal lain, selanjutnya akan berguna dalam memproses pembayaran. Karena tentu, bursa kripto juga akan membutuhkan proses pembayaran tersebut agar bisa tertaut langsung dengan rekening pengguna.
Ketiga, menentukan managemen likuiditas apa yang akan diterapkan pada bursa nantinya. Likuiditas ini tentu saja memegang peranan penting untuk mengukur potensi besar tidaknya sebuah bursa. Dengan pola managemen liquiditas ini, nantinya akan bisa diturunkan menjadi interface API yang bisa diakses oleh publik. Misalnya saja dengan API untuk volume trading antara satu bursa dengan bursa kripto lainnya. Dan juga banyak hal lain seperti chart, ataupun trading history.
Secara umum, untuk bisa membuat bursa kripto sendiri, bagian terpenting selanjutnya adalah memahami 4 komponen dasar di dalam sebuah bursa kripto.
- Wallet kripto
- Trading Engine
- Front-end user interface
- Admin Console
Wallet Kripto
Bagian pertama ini tentu saja cukup penting, yakni menyiapkan wallet kripto untuk kebutuhan bursa itu. Wallet kripto ini nantinya, akan berfungsi sebagai payment gateway, bisa juga dipersiapkan untuk fitur atomic swap, atau juga hal lain.
Untuk menyiapkan wallet kripto di Bitcoin, mungkin sudah tidak akan kesulitan lagi, karena hal itu sudah cukup banyak referensi yang ada. Di bagian ini, kita perlu melihat bagaimana menyiapkan untuk wallet kripto yang mendukung untuk varian kripto Ethereum.
Dalam hal ini, kita akan coba untuk membuat Ethereum wallet manager. Fungsinya, tidak lain karena sebuah bursa tentu saja akan membutuhkan managemen wallet untuk para pengguna. Di dalam bursa kripto nanti, akan dipergunakan dalam berbagai macam kebutuhan:
- Proses generate address atau membuat address baru
- Menampilkan pesan notifikasi jika ada deposit baru yang masuk pada address tersebut menggunakan watch addresses.
- Mengirim transaksi
- Menangani deposit untuk varian token ethereum yang berbasis standar token ERC20.
- Membuat kontrak baru, sekaligus menangani transaksi tersebut.
Lantas apa saja yang dibutuhkan? Untuk menyiapkan wallet ethereum ini, aplikasi bursa anda akan membutuhkan peran penting dari Docker. Fungsi Docker ini nantinya tidak lain agar lebih mudah dalam proses build aplikasi bursa anda. Dan satu lagi yakni Docker Compose untuk menangani segala hal yang berkaitan dengan proses tersebut.
Koneksi ke Blockchain Ethereum
Sebuah bursa kripto, perlu agar bisa terkoneksi langsung ke blockchain Ethereum. Mengapa demikian? Karena anda tentu tidak akan bisa mengelola wallet tersebut jika tidak mempunyai node yang bisa terhubung langsung pada blockchain. Namun, jika bursa tersebut tidak punya full node sendiri, mungkin bisa menggunakan Ganache.
Nah, sedangkan untuk proses penyimpanan dan managerial data address yang telah dibuat, lalu agar bisa terus tracking transaksi, perlu menggunakan Redis. Dan untuk keperluan managerial server bursa nantinya, mungkin bisa juga menggunakan Vault.
Apache Kafka
Kafka memiliki peran penting untuk menangani segala pesan yang dikirimkan didalam menangani transaksi. Sehingga pesan-pesan dalam transaksi itu, dapat didistribusikan pada node di dalam jaringan. Baik untuk menuliskan perintah, address, transaksi dan error report.
Secara umum, Apache Kafka ini dapat bertindak secara independen dalam menangani berbagai pesan pada layanan yang berbeda. Di dalam pengembangan aplikasi untuk ethereum, yang cukup dipertimbangkan untuk digunakan adalah Node.js ataupun Javascript. Karena dua komponen tersebut sudah banyak yang tinggal pakai saja.
Untuk memulainya, kita membutuhkan 3 dependency penting yang diperlukan, yakni web3, redis, dan kafka-node. Web3 diperlukan agar bisa terhubung pada Ganache dan terkoneksi pada node ethereum melalui websocket. Dependency Redis digunakan untuk bisa terhubung pada server Redis dalam menyimpan atau meminta data. Sedangkan Kafka-node aga bisa terhubung pada Zookeeper, sehingga bisa memproses semua pesan pengguna.
Trading Engine
Trading Engine adalah piranti lunak yang digunakan dalam mencocokkan order pengguna, baik untuk order penjualan atau beli masing-masing pengguna. Sehingga, antara pembelian seorang pengguna, dapat dipertemukan dengan penjualan yang dilakukan orang lain sesuai dengan nilai yang telah ditentukan.
Trading engine ini sama halnya dengan pencocokan order, karena memang berfungsi sama. Lantas bagaimana tipe order dapat dibuat dalam sebuah bursa kripto? Order dalam sebuah kripto, setidaknya dapat mencakup dua hal:
- Membuat order baru (baik jual/beli)
- Cancle Order atau membatalkan order. Pembatalan order ini nantinya juga dapat dilakukan dengan beberapa persayaratan tertentu untuk bisa dipergunakan. Misalnya, pembatalan order dapat dilakukan jika order itu masih terbuka dan belum diambil oleh pengguna lain.
Dengan dua opsi yang bisa dilakukan diatas, maka sebuah bursa akhirnya akan bisa membuat sebuah perdagangan baru, dan juga opsi untuk bisa membatalkan perdagangan tersebut. Order atau pesanan pengguna di dalam sebuah bursa kripto, kita umumnya sudah tidak asing mendengar istilahnya denggan sebutan “Order Book”.
Order Book ini, berisi sekian banyak deretan order yang telah dibuat oleh penjual dan pembeli. Masing-masing order yang telah dibuat itu, juga telah berisikan sejumlah nominal tertentu dengan penunjuk waktu kapan order jual/beli itu dilakukan.
Kita dapat melihat dan mempelajari trading engine untuk bursa kripto ini pada beberapa opensource code yang telah ada, seperti pada ViaBTC, atau yang lainnya. Berikut ini adalah open source untuk Trading engine tersebut:
- ViaBTC: Github
- CATEd: Github
- QuantConnect: Github
- OsEngine: Github
- CryptoTradingEngine (Deephanwang): Github
- CryptoTradingEngine (peterkeen): Github
- Paritytrading: Github
- Arj-cryptotradingengine: Github
- Tuaris-tradeengine: Github
Secara umum, fungsi trading engine yang dapat kita pelajari dari beberapa open source diatas, akan dapat memproses beberapa hal penting dalam sebuah bursa kripto. Beberapa hal penting itu adalah:
- Menentukan tipe order, baik jumlah, harga, id, dan waktu
- Konsumen
- Order Book
- Produksi order
- Monitoring
Anda juga dapat lebih leluasa untuk menggunakan jenis bahasa pemprograman yang dapat digunakan. Misalnya C/C++, Golang, Java, ataupun Rust. Nah, anda tentu saja dapat meningkatkan efiensi untuk bursa kripto itu.
Misalnya dengan menggunakan algoritma maching order yang lebih efisien, kemampuan membatalkan order dengan menambahkan persyaratan-persyaratan tertentu, meningkatkan performa, backup orderbook, atau juga yang lain. Sebagai gambaran saja, sudah cukup banyak bursa-bursa kripto yang mampu untuk memproses jutaan order.
Front-end user interface
Komponen untuk front-end user interface ini tidak lain sebagai perwajahan bursa kripto anda secara keseluruhan. Perwajahan yang lebih user friendly, minimalis, cepat, dan lebih mudah digunakan mungkin dapat meningkatkan performa.
Secara umum, front-end user interface ini dapat terdiri dari beberapa fungsi berikut:
- Registrasi dan login user
- Deposit/Withdrawal
- Melihat order book, transaksi, saldo, statistik, chart dan yang lain
- Order buy/sel
- Support atau layanan pelanggan
Admin Console
Admin console ini nantinya berfungsi dalam penanganan dan pengelolaan bursa kripto oleh administrator atau pengelola bursa. Fitur-fitur didalamnya sebaiknya juga dapat diatur sesuai dengan kebutuhan yang ada.
Beberapa hal agar bisa dan sesuai dengan kebutuhan yang ada tersebut misalnya dapat menambahkan mata uang kripto baru, edit biaya atau fee trading, serta fitur-fitur yang dapat mengatasi permasalahan yang kerap dihadapi pengguna.