Pencelupan dalam pengembangan pada Ethereum. Bagian 0: tidak perlu blockchain

Tentunya banyak dari Anda bertanya-tanya mengapa Anda bahkan membutuhkan blockchain dan Ethereum pada khususnya. Seseorang mungkin telah melangkah lebih jauh dan menemukan banyak karakteristik yang indah: desentralisasi, transparansi, kepercayaan tanpa perantara, perlawanan pembobolan. Bagus, bukan? Ya, tapi ...


Blockchain dalam bentuknya saat ini ideal hanya untuk berbagai tugas yang sempit, kecuali untuk tugas "tambahkan nanoteknologi untuk efek wow" (dan untuk tugas ini Anda dapat menyesuaikan apa saja). Tentu saja, Anda harus mulai di suatu tempat, eksperimen yang berbeda menguji tanah, menunjukkan di mana permintaan dapat diharapkan, di mana ada jalan buntu yang tidak terduga, di mana kelemahannya tidak sepenting yang diperkirakan. Tetapi perlu untuk mengetahui tentang perbatasan untuk secara sadar memutuskan apakah dalam kasus khusus ini adalah mungkin untuk mencoba melangkahi perbatasan.

Omong-omong, Ethereum bukanlah satu-satunya dan bukan pilihan terbaik dalam semua hal. Mungkin blockchain hanya sesuai dengan tugas Anda, tetapi beberapa lainnya. Tapi kemudian kita mengatakan "blockchain", maksud kami "Ethereum"

Mari kita coba untuk menggambarkan fitur-fitur dari blockchain dan kontrak pintar yang membuat solusi pada pandangan pertama tugas yang menjanjikan tidak efektif atau bahkan tidak mungkin. Saya juga ingin mengatakan bahwa poin-poin tersebut digeneralisasi, oleh karena itu secara teoritis mungkin ada solusi yang cukup normal untuk kasus penggunaan khusus. Oleh karena itu, perlakukan daftar ini sebagai kelemahan Ethereum yang perlu diselesaikan sebelum memulai proyek.

Dan juga, tolong maafkan jika banyak dari ini nampak jelas bagi Anda. Seperti yang telah ditunjukkan oleh praktik, sering kali Anda harus berbicara dengan klien terlebih dahulu.

1. Ambang entri tinggi


Jika audiens Anda adalah pengguna biasa, dan bukan penggemar blockchain, maka sebagian sangat kecil akan repot untuk mulai menggunakan aplikasi Anda. Bayangkan: Anda tidak hanya perlu menginstal Metamask atau Mist dengan sebuah node, tetapi juga membeli eter, dan ini juga merupakan proses non-sepele pada awalnya. Artinya, jika tujuan Anda adalah memaksimalkan jangkauan audiens, maka Ethereum belum cocok. Misalnya, membuat toko secara eksklusif berdasarkan kontrak pintar kemungkinan besar merupakan ide yang buruk.
Apa yang harus dilakukan

  • Menawarkan manfaat untuk mengatasi ketidaknyamanan
  • Targetkan pemirsa "dalam topik"
  • Mungkin saja menyembunyikan logika blockchain dari pengguna dengan meletakkannya di backend, jika bukan untuk item berikutnya

2. Sentralisasi terpusat


Namun, kelebihan dari blockchain adalah bahwa peserta tidak dapat saling mempercayai sebanyak mungkin, tetapi ini hanya mungkin jika pengguna adalah pemilik kunci pribadinya. Maka hanya dia yang bisa menandatangani transaksi dan melakukan berbagai tindakan dari alamatnya. Apa yang terjadi dalam kasus logika blockchain di backend? Kunci dikelola secara terpusat dan tidak ada perlindungan terhadap transaksi yang tidak konsisten dengan pengguna - yang berarti Anda hanya perlu memercayai integritas dan keamanan server. Jadi misalnya, sebagian besar pertukaran cryptocurrency beroperasi dengan cryptocurrency, tetapi mereka tidak menggunakan kelebihan apa pun yang terkait dengan ini.
Apa yang harus dilakukan

  • Memahami apakah transparansi dan kekebalan atau kemampuan untuk memanipulasi crypts diperlukan. Jika tidak, lebih murah dan nyaman menggunakan basis data reguler.
  • Untuk memikirkan dan bekerja melalui mekanisme kerja untuk menjaga jaminan teknologi

3. Semua data bersifat publik


Terlepas dari bagaimana kontrak pintar ditulis, jika diinginkan, Anda bisa mendapatkan nilai dari setiap bidang data di dalamnya. Dan riwayat transaksi. Karena itu, jika Anda menuliskan sesuatu yang mengidentifikasi pengguna, seperti surat atau nama, maka semua yang membuat pengguna ini menjadi publik. Sangat mungkin untuk memiliki semacam enkripsi di atas. Dalam hal ini, kunci untuk ini harus disimpan di sisi penerima, yaitu, pengguna lagi harus mempercayakan datanya kepada pihak ketiga. Oleh karena itu, untuk data yang lebih atau kurang sensitif, penyimpanan pribadi biasa mungkin lebih dibenarkan. Jika Anda akan menyimpulkan perjanjian tentang blockchain, Anda mungkin kehilangan lebih dari keuntungan.
Apa yang harus dilakukan

Memahami jika data pribadi diperlukan untuk logika kontrak pintar. Jika demikian, pertimbangkan untuk menangani hash alih-alih data itu sendiri.

4. Blockchain bukan superkomputer


Seseorang mungkin mendapat kesan bahwa para penambang mengerahkan kekuatan yang sangat besar untuk melakukan perhitungan yang bermanfaat, tetapi ini jelas jauh dari kasus. Untuk berjaga-jaga, saya ingin mengklarifikasi: Kinerja Ethereum lebih mirip dengan kinerja sistem yang tertanam - sumber daya terbatas, memori terbatas, ukuran terbatas "firmware" (byte dari kode kontrak pintar). Oleh karena itu, perhitungan yang tidak kritis harus dimatikan secara maksimal. Karena alasan ini, dalam kontrak pintar tidak mungkin lebih sulit untuk menganalisis data atau, katakanlah, untuk melakukan enkripsi
Apa yang harus dilakukan

  • Jangan gunakan blockchain sebagai kalkulator
  • Jika Anda memerlukan perhitungan yang dikendalikan pada blockchain, Anda dapat mempertimbangkan fitur perhitungan di oraclize

5. Blockchain bukan penyimpanan universal


Seringkali Anda dapat mendengar permintaan untuk menyimpan sesuatu di blockchain: informasi atau dokumen. Di sini masalahnya jelas: pertama, menyimpan data itu mahal, dan kedua, blockchain tidak cocok untuk pencarian, misalnya - apakah Anda memiliki pemetaan (nilai kunci) yang, omong-omong, juga menambah nilai pada setiap catatan, atau Anda harus mencari dengan kekuatan kasar. Ditambah lagi tidak ada manajemen izin. Oleh karena itu, Anda tidak boleh hanya mengubah database ke blockchain, penting untuk memahami mengapa ini diperlukan pada prinsipnya. Secara terpisah untuk file, perlu diingat tentang publisitas data: jika Anda mengatakan menyimpan tautan ke IPFS, maka semua orang melihatnya dan dapat mengunduh apa yang ada di dalamnya. Jadi jika Anda ingin menyimpan foto di blockchain, Anda harus memikirkannya.
Apa yang harus dilakukan

  • Sebagai aturan, semua yang dibutuhkan hanyalah menyimpan hash untuk memverifikasi apa yang ada pada off-chain
  • Simpan hanya data yang diperlukan untuk logika kontrak pintar

6. Menghubungkan blockchain ke dunia nyata


Blockchain itu sendiri mentransfer koin / token tanpa masalah, tetapi bagaimana cara mentransfer apa yang dibeli untuk mereka? Sekalipun itu file, bagaimana cara memberikan konfirmasi transfernya tanpa pihak ketiga? Jawaban singkatnya: ini tidak terlalu sederhana, karena kami berasumsi bahwa kedua belah pihak ingin saling menipu dan mereka akan membutuhkan banyak pemeriksaan, enkripsi-dekripsi, dan jika perselisihan muncul, maka Anda tidak dapat melakukannya tanpa perhitungan tanpa rantai atau arbiter. Seperti yang Anda pahami, untuk produk atau layanan fisik, semuanya dipersulit oleh fakta bahwa seseorang harus memasukkan informasi yang, secara kasar, barang telah diterima. Seseorang ini tidak bisa menjadi orang yang tertarik, maka ini adalah pihak ketiga, yang lagi-lagi harus kita percayai. Maka solusi blockchain kami memiliki titik lemah dalam bentuk arbiter ini, dan karena kami mempercayainya, mengapa tidak mempercayakan semua yang lain, katakan tuan rumah basis reguler dan melakukan pembayaran. Sebelum melakukan sesuatu, Anda harus menjawab pertanyaan ini dengan jelas. Misalnya, arti dari token yang Anda tawarkan untuk ditukar dengan diskon di toko offline, menurut kami pribadi ragu.
Apa yang harus dilakukan

Jawab sendiri dengan jelas mengapa logika terpusat tidak cocok. Jika tidak ada jawaban, tolak blockchain tersebut.

7. Tidak ada asuransi kesalahan pengguna


Jika Anda salah mengirim uang ke bank atau meretas akun, artinya ada opsi untuk menulis dukungan, ada waktu untuk membatalkan atau mengembalikan transaksi. Dalam kontrak pintar, Anda tidak dapat secara manual melakukan apa yang tidak diberikan kode. Sekali lagi kita dihadapkan dengan kebutuhan untuk memperkenalkan seorang arbiter yang diberi hak istimewa yang sebanding dengan sentralisasi seluruh keputusan.
Apa yang harus dilakukan

Jika perlu, pengenalan penundaan buatan dalam transfer dana dalam kontrak pintar

8. Lead time yang panjang


Jika Anda memiliki sistem dinamis dengan status penulisan ulang yang konstan dan logika berdasarkan pada mereka, maka kemungkinan besar Anda tidak akan senang dengan waktu tunggu, karena setidaknya di Ethereum, waktu konfirmasi transaksi normal dapat dianggap setengah menit, dan jika Anda tidak bangkrut, maka biasanya lebih. Bahkan jika akun tidak berlangsung selama beberapa detik, ada baiknya mempertimbangkan kemungkinan menunda transaksi untuk waktu yang tidak terbatas dan memberikan interval yang cukup. Jadi, sementara permainan seperti poker tidak mungkin dalam bentuk murni pada kontrak pintar Ethereum, atau non-sepele dan membutuhkan penekanan pada logika off-chain
Apa yang harus dilakukan

  • Jika Anda berencana untuk beralih ke blockchain sangat sering, Anda seharusnya tidak melihat ke Ethereum, tetapi mungkin tidak ke arah blockchain sama sekali.
  • Jika memungkinkan, kumpulkan beberapa transaksi dalam satu, melakukan bagian dari logika off-chain
  • Sebagai upaya terakhir, Anda dapat meningkatkan harga gas sesuai kebutuhan
  • Jika transaksi tidak memakan waktu lama, Anda dapat menentukan kenaikan harga dan mengirimkannya lagi (transaksi harus tetap tidak berubah, termasuk nonce). Yang lebih mahal akan menggantikan yang lebih murah

9. Bypass sensor belum sempurna


Jika Anda ingin berkonfrontasi dengan pemerintah atau sesuatu seperti itu dengan bantuan blockchain, ketahuilah bahwa layanan web masih merupakan hal yang tersentralisasi, bahkan jika didasarkan pada blockchain. Artinya, nama domain atau ip masih dapat dengan mudah diblokir dan pengguna perlu mencari tahu alamat mirrornya. Keuntungan - Anda tidak perlu membuat cadangan basis data dan mengetahui alamat di jaringan Ethereum, Anda selalu bisa mendapatkan akses dengan cara yang kurang ramah pengguna (Mist, MyEtherWallet, etherscan, dll.) Tetapi kita tidak bisa mengatakan bahwa masalah sensor telah sepenuhnya diselesaikan.
Apa yang harus dilakukan

Memblokir resistensi adalah bonus, tetapi Anda tidak harus mendasarkan keputusan Anda pada apakah akan menggunakan blockchain atau tidak.

Jika bukan Ethereum, lalu siapa?


Banyak yang. Solusi blockchain dan non-blockchain lainnya dapat mengorbankan desentralisasi, keterbukaan, atau aksesibilitas untuk jumlah peserta yang tidak terbatas, dengan imbalan menerima kecepatan transaksi yang meningkat, tidak ada masalah privasi, dll. Ini adalah EOS, solusi pada Hyberledger, Exonum, Hashgraph, Corda dan banyak lagi. Tapi ada faktor penting seperti namanya. Ini adalah basis pengguna yang besar, dan basis data besar aplikasi, informasi dan alat pengembangan, pengujian. Dan ini dapat ditulis dalam pro untuk Ethereum. Dan mari kita lihat apa yang dibawa Casper dan Sharding.

Apakah semuanya begitu buruk?


Masalah paling penting yang melewati semua poin ini adalah kesadaran akan pilihan blockchain. Adalah penting bahwa teknologi menyelesaikan masalah, menambahkan blockchain ke tugas yang sudah diselesaikan kemungkinan besar tidak membuat solusi lebih efektif.
Misalnya, jika Anda tidak tahu siapa yang ingin meluncurkan kasino, maka Anda memiliki masalah mendapatkan reputasi, menunjukkan kejujuran dan menarik semacam basis pengguna. Menawarkan solusi pada Ethereum, Anda setidaknya dapat secara teoritis menjamin pekerjaan yang transparan bagi pengguna (meskipun hanya sedikit yang benar-benar akan mengaudit kontrak pintar Anda sebelum permainan). Dan Anda menarik orang dengan mata uang kripto berlebih di akun dan jumlah kemungkinan penggunaannya yang tidak mencukupi. Kita dapat mengatakan bahwa tujuannya tercapai.
Dan jika Anda ingin menambahkan blockchain ke messenger, maka kemungkinan besar Anda tidak hanya tidak akan menyelesaikan masalah (dan apa masalahnya? - sensor dan privasi terlintas dalam pikiran), tetapi juga menambahkan yang baru.
Menemukan aplikasi yang lebih tepat mungkin masalah masa depan, ketika basis pengguna tumbuh dan membeli cryptocurrency akan lebih mudah daripada sekarang. Tetapi secara umum, Anda dapat melihat ke aplikasi tersebut:

  1. Proses birokrasi dan panjang: transfer ke luar negeri, dokumen
  2. Proses kepercayaan berbasis platform: dana, kasino
  3. Data yang digunakan di berbagai wilayah atau perusahaan yang tidak terkait: operator tur, riwayat kredit, daftar hitam
  4. Pemantauan proses yang tidak dapat dipercaya: pemungutan suara, penggalangan dana

Fakta bahwa tugas tersebut termasuk salah satu poin tidak berarti bahwa blockchain akan cocok dengan sempurna. Selalu lihat apa yang ditawarkan teknologi lain yang lebih optimal. Artinya, kereta pemikiran harus "bagaimana mengatasi masalah ini", dan bukan "di mana memblokir blockchain."

Pencelupan dalam pengembangan pada Ethereum:
Bagian 1: Pendahuluan
Bagian 2: Web3.js dan gas
Bagian 3: aplikasi pengguna
Bagian 4: deploy dan debug di truffle, ganache, infura
Bagian 5: Oraclize

Source: https://habr.com/ru/post/id421805/


All Articles