Membangunkan perisian untuk penyewaan skuter terpencar. Siapa kata ia mudah?

Dalam artikel ini saya akan bercakap tentang cara kami cuba membina penyewaan skuter terpencar pada kontrak pintar dan sebab kami masih memerlukan perkhidmatan terpusat.

Membangunkan perisian untuk penyewaan skuter terpencar. Siapa kata ia mudah?

Bagaimana ia semua bermula

Pada November 2018, kami mengambil bahagian dalam hackathon khusus untuk Internet Perkara dan rantaian blok. Pasukan kami memilih perkongsian skuter sebagai idea memandangkan kami mempunyai skuter daripada penaja hackathon ini. Prototaip kelihatan seperti aplikasi mudah alih yang membolehkan anda memulakan skuter melalui NFC. Dari sudut pemasaran, idea itu disokong oleh cerita tentang "masa depan yang cerah" dengan ekosistem terbuka di mana sesiapa sahaja boleh menjadi penyewa atau tuan tanah, semuanya berdasarkan kontrak pintar.

Pihak berkepentingan kami sangat menyukai idea ini, dan mereka memutuskan untuk mengubahnya menjadi prototaip untuk dipamerkan di pameran. Selepas beberapa demonstrasi yang berjaya di Kongres Dunia Mudah Alih dan Dunia Terhubung Bosch pada 2019, telah diputuskan untuk menguji penyewaan skuter dengan pengguna sebenar, pekerja Deutsche Telekom. Jadi kami mula membangunkan MVP sepenuhnya.

Rantaian sekat pada tongkat

Saya rasa ia tidak berbaloi untuk menjelaskan apa perbezaan antara projek yang akan ditayangkan di atas pentas dan projek yang akan digunakan oleh orang sebenar. Dalam enam bulan kami terpaksa menukar prototaip mentah menjadi sesuatu yang sesuai untuk juruterbang. Dan kemudian kami memahami maksud "sakit".

Untuk menjadikan sistem kami tidak berpusat dan terbuka, kami memutuskan untuk menggunakan kontrak pintar Ethereum. Pilihan jatuh pada platform perkhidmatan dalam talian terdesentralisasi ini kerana popularitinya dan keupayaan untuk membina aplikasi tanpa pelayan. Kami merancang untuk melaksanakan projek kami seperti berikut.

Membangunkan perisian untuk penyewaan skuter terpencar. Siapa kata ia mudah?

Tetapi, malangnya, kontrak pintar ialah kod yang dilaksanakan oleh mesin maya pada masa transaksi, dan ia tidak boleh menggantikan pelayan penuh. Contohnya, kontrak pintar tidak boleh melaksanakan tindakan yang belum selesai atau berjadual. Dalam projek kami, ini tidak membenarkan kami melaksanakan perkhidmatan penyewaan seminit, seperti yang dilakukan oleh kebanyakan perkhidmatan perkongsian kereta moden. Oleh itu, kami mendebit mata wang kripto daripada pengguna selepas menyelesaikan transaksi tanpa memastikan bahawa dia mempunyai wang yang mencukupi. Pendekatan ini hanya boleh diterima untuk juruterbang dalaman dan, sudah tentu, menambah masalah apabila mereka bentuk projek pengeluaran sepenuhnya.

Ditambah kepada semua perkara di atas ialah kelembapan platform itu sendiri. Contohnya, jika anda menulis kontrak pintar dengan logik berbeza daripada token ERC-20, anda akan menghadapi masalah pengendalian ralat. Biasanya, jika input tidak betul atau kaedah kami tidak berfungsi dengan betul, kami menerima kod ralat sebagai tindak balas. Dalam kes Ethereum, kita tidak boleh mendapatkan apa-apa selain daripada jumlah gas yang dibelanjakan untuk melaksanakan fungsi ini. Gas ialah mata wang yang mesti dibayar untuk transaksi dan pengiraan: lebih banyak operasi dalam kod anda, lebih banyak yang anda akan bayar. Jadi untuk memahami sebab kod itu tidak berfungsi, anda mula-mula mengujinya dengan mensimulasikan semua kemungkinan ralat dan kod keras gas yang dibelanjakan sebagai kod ralat. Tetapi jika anda menukar kod anda, pengendalian ralat ini akan rosak.

Di samping itu, hampir mustahil untuk mencipta aplikasi mudah alih yang berfungsi dengan blockchain secara jujur, tanpa menggunakan kunci yang disimpan di suatu tempat di awan. Walaupun dompet jujur ​​wujud, ia tidak menyediakan antara muka untuk menandatangani transaksi luaran. Ini bermakna bahawa anda tidak akan melihat aplikasi asli melainkan ia mempunyai dompet crypto terbina dalam, yang pengguna akan mempunyai sedikit kepercayaan (saya tidak akan mempercayainya). Akibatnya, kami juga terpaksa memotong sudut di sini. Kontrak pintar dihantar ke rangkaian Ethereum peribadi, dan dompet itu berasaskan awan. Tetapi walaupun ini, pengguna kami mengalami semua "keseronokan" perkhidmatan terdesentralisasi dalam bentuk menunggu lama untuk transaksi beberapa kali setiap sesi penyewaan.

Semua ini membawa kita kepada seni bina ini. Setuju, ia sangat berbeza dengan apa yang kita rancang.

Membangunkan perisian untuk penyewaan skuter terpencar. Siapa kata ia mudah?

Ace dalam lubang: Jati Diri Berdaulat

Anda tidak boleh membina sistem terdesentralisasi sepenuhnya tanpa identiti terdesentralisasi. Self-Sovereign Identity (SSI) bertanggungjawab untuk bahagian ini, yang mana intipatinya ialah anda membuang pembekal identiti berpusat (IDP) dan mengedarkan semua data dan tanggungjawab untuknya kepada orang ramai. Kini pengguna memutuskan data apa yang dia perlukan dan dengan siapa dia akan berkongsinya. Semua maklumat ini terletak pada peranti pengguna. Tetapi untuk pertukaran kami memerlukan sistem terdesentralisasi untuk menyimpan bukti kriptografi. Semua pelaksanaan moden konsep SSI menggunakan blockchain sebagai storan.

"Apa kaitannya dengan ace dalam lubang?" - anda bertanya. Kami melancarkan perkhidmatan untuk ujian dalaman ke atas pekerja kami sendiri di Berlin dan Bonn, dan kami menghadapi kesukaran dalam bentuk kesatuan sekerja Jerman. Di Jerman, syarikat dilarang memantau pergerakan pekerja, dan kesatuan sekerja mengawalnya. Sekatan ini menamatkan storan terpusat data identiti pengguna, kerana dalam kes ini kita akan mengetahui lokasi pekerja. Pada masa yang sama, kami tidak dapat membantu tetapi memeriksa mereka kerana kemungkinan skuter dicuri. Tetapi terima kasih kepada Self-Sovereign Identity, pengguna kami menggunakan sistem tanpa nama, dan skuter itu sendiri menyemak lesen memandu mereka sebelum memulakan penyewaan. Akibatnya, kami menyimpan metrik pengguna tanpa nama; kami tidak mempunyai sebarang dokumen atau data peribadi: semuanya terkandung pada peranti pemandu itu sendiri. Oleh itu, terima kasih kepada SSI, penyelesaian kepada masalah dalam projek kami telah sedia sebelum ia muncul.

Peranti memberi saya masalah

Kami tidak melaksanakan Jati Diri Berdaulat sendiri, kerana ia memerlukan kepakaran dalam kriptografi dan banyak masa. Sebaliknya, kami mengambil kesempatan daripada produk Jolocom rakan kongsi kami dan menyepadukan dompet dan perkhidmatan mudah alih mereka ke dalam platform kami. Malangnya, produk ini mempunyai satu kelemahan yang ketara: bahasa pembangunan utama ialah Node.js.

Tindanan teknologi ini sangat mengehadkan pilihan perkakasan kami yang dibina ke dalam skuter. Nasib baik, pada awal projek, kami memilih Raspberry Pi Zero, dan kami mengambil kesempatan daripada semua kelebihan komputer mikro yang lengkap. Ini membolehkan kami menjalankan Node.js yang besar pada skuter. Di samping itu, kami menerima pemantauan dan akses jauh melalui VPN menggunakan alat siap sedia.

Kesimpulannya

Walaupun semua "sakit" dan masalah, projek itu dilancarkan. Tidak semuanya berfungsi seperti yang kami rancangkan, tetapi anda boleh menunggang skuter dengan menyewanya.

Ya, kami membuat beberapa kesilapan semasa mereka bentuk seni bina yang tidak membenarkan kami membuat perkhidmatan terdesentralisasi sepenuhnya, tetapi walaupun tanpa kesilapan ini kami tidak akan dapat mencipta platform tanpa pelayan. Ia adalah satu perkara untuk menulis satu lagi crypto-piramid, dan agak lain untuk menulis perkhidmatan lengkap yang anda perlukan untuk menangani ralat, menyelesaikan kes sempadan dan melaksanakan tugas yang belum selesai. Semoga platform baharu yang muncul baru-baru ini akan menjadi lebih fleksibel dan berfungsi.

Sumber: www.habr.com

Tambah komen