Phát triển phần mềm cho thuê xe máy phân tán. Ai nói nó sẽ dễ dàng?

Trong bài viết này, tôi sẽ nói về cách chúng tôi cố gắng xây dựng dịch vụ cho thuê xe tay ga phi tập trung trên hợp đồng thông minh và lý do tại sao chúng tôi vẫn cần một dịch vụ tập trung.

Phát triển phần mềm cho thuê xe máy phân tán. Ai nói nó sẽ dễ dàng?

Làm thế nào nó tất cả bắt đầu

Vào tháng 2018 năm XNUMX, chúng tôi đã tham gia hackathon dành riêng cho Internet of Things và blockchain. Nhóm của chúng tôi đã chọn ý tưởng chia sẻ xe tay ga vì chúng tôi có một chiếc xe tay ga từ nhà tài trợ cho cuộc thi hackathon này. Nguyên mẫu trông giống như một ứng dụng di động cho phép bạn khởi động xe tay ga thông qua NFC. Từ quan điểm tiếp thị, ý tưởng này được hỗ trợ bởi câu chuyện về “tương lai tươi sáng” với hệ sinh thái mở, nơi bất kỳ ai cũng có thể trở thành người thuê nhà hoặc chủ nhà, tất cả đều dựa trên hợp đồng thông minh.

Các bên liên quan của chúng tôi thực sự thích ý tưởng này và họ quyết định biến nó thành nguyên mẫu để trưng bày tại các cuộc triển lãm. Sau nhiều cuộc trình diễn thành công tại Mobile World Congress và Bosch Connected World vào năm 2019, chúng tôi đã quyết định thử nghiệm dịch vụ cho thuê xe tay ga với người dùng thực, nhân viên của Deutsche Telekom. Vì vậy, chúng tôi bắt đầu phát triển một MVP chính thức.

Blockchain trên nạng

Tôi không nghĩ cần giải thích sự khác biệt giữa một dự án được trình chiếu trên sân khấu và một dự án sẽ được người thật sử dụng. Trong sáu tháng, chúng tôi phải biến nguyên mẫu thô thành thứ phù hợp cho phi công. Và rồi chúng tôi hiểu “đau” nghĩa là gì.

Để làm cho hệ thống của chúng tôi được phân quyền và mở, chúng tôi quyết định sử dụng hợp đồng thông minh Ethereum. Sự lựa chọn rơi vào nền tảng dịch vụ trực tuyến phi tập trung này vì tính phổ biến của nó và khả năng xây dựng một ứng dụng không có máy chủ. Chúng tôi dự định thực hiện dự án của mình như sau.

Phát triển phần mềm cho thuê xe máy phân tán. Ai nói nó sẽ dễ dàng?

Nhưng thật không may, hợp đồng thông minh là một mã được thực thi bởi một máy ảo tại thời điểm giao dịch và nó không thể thay thế một máy chủ chính thức. Ví dụ: hợp đồng thông minh không thể thực hiện các hành động đang chờ xử lý hoặc theo lịch trình. Trong dự án của chúng tôi, điều này không cho phép chúng tôi triển khai dịch vụ cho thuê theo phút như hầu hết các dịch vụ chia sẻ xe hiện đại đều làm. Do đó, chúng tôi đã ghi nợ tiền điện tử từ người dùng sau khi hoàn tất giao dịch mà không chắc chắn rằng người đó có đủ tiền hay không. Cách tiếp cận này chỉ được chấp nhận đối với một phi công nội bộ và tất nhiên sẽ gây ra nhiều vấn đề khi thiết kế một dự án sản xuất chính thức.

Thêm vào tất cả những điều trên là độ ẩm của chính nền tảng. Ví dụ: nếu bạn viết hợp đồng thông minh có logic khác với mã thông báo ERC-20, bạn sẽ gặp phải vấn đề xử lý lỗi. Thông thường, nếu dữ liệu nhập không chính xác hoặc phương thức của chúng tôi hoạt động không chính xác, chúng tôi sẽ nhận được mã lỗi phản hồi. Trong trường hợp của Ethereum, chúng ta không thể nhận được bất cứ thứ gì ngoài lượng gas đã sử dụng để thực hiện chức năng này. Gas là loại tiền tệ phải được thanh toán cho các giao dịch và tính toán: càng có nhiều thao tác trong mã của bạn, bạn sẽ càng phải trả nhiều tiền hơn. Vì vậy, để hiểu lý do tại sao mã không hoạt động, trước tiên bạn phải kiểm tra nó bằng cách mô phỏng tất cả các lỗi có thể xảy ra và mã hóa cứng lượng khí đã sử dụng dưới dạng mã lỗi. Nhưng nếu bạn thay đổi mã của mình, việc xử lý lỗi này sẽ bị hỏng.

Ngoài ra, gần như không thể tạo ra một ứng dụng di động hoạt động với blockchain một cách trung thực mà không sử dụng khóa được lưu trữ ở đâu đó trên đám mây. Mặc dù có tồn tại các ví trung thực nhưng chúng không cung cấp giao diện để ký các giao dịch bên ngoài. Điều này có nghĩa là bạn sẽ không thấy một ứng dụng gốc trừ khi nó có ví tiền điện tử tích hợp mà người dùng sẽ ít tin tưởng vào (tôi sẽ không tin tưởng vào nó). Kết quả là chúng tôi cũng phải cắt một góc ở đây. Hợp đồng thông minh đã được gửi đến mạng Ethereum riêng và ví dựa trên đám mây. Nhưng bất chấp điều này, người dùng của chúng tôi đã trải nghiệm tất cả “thú vị” của các dịch vụ phi tập trung dưới hình thức chờ đợi giao dịch nhiều lần trong mỗi phiên thuê.

Tất cả điều này dẫn chúng ta đến kiến ​​trúc này. Đồng ý, nó rất khác so với những gì chúng tôi dự định.

Phát triển phần mềm cho thuê xe máy phân tán. Ai nói nó sẽ dễ dàng?

Ace in the Hole: Bản sắc tự chủ

Bạn không thể xây dựng một hệ thống phi tập trung hoàn toàn nếu không có danh tính phi tập trung. Bản sắc tự chủ (SSI) chịu trách nhiệm về phần này, bản chất của phần này là bạn loại bỏ nhà cung cấp danh tính tập trung (IDP) và phân phối tất cả dữ liệu cũng như trách nhiệm về nó cho người dân. Bây giờ người dùng quyết định dữ liệu nào anh ta cần và anh ta sẽ chia sẻ dữ liệu đó với ai. Tất cả thông tin này được đặt trên thiết bị của người dùng. Nhưng để trao đổi, chúng tôi sẽ cần một hệ thống phi tập trung để lưu trữ bằng chứng mật mã. Tất cả các triển khai hiện đại của khái niệm SSI đều sử dụng blockchain làm bộ lưu trữ.

“Điều này có liên quan gì đến con át trong lỗ?” - bạn hỏi. Chúng tôi đã triển khai dịch vụ thử nghiệm nội bộ đối với chính nhân viên của mình ở Berlin và Bonn, và chúng tôi đã gặp phải những khó khăn dưới hình thức công đoàn Đức. Ở Đức, các công ty bị cấm giám sát việc di chuyển của nhân viên và công đoàn kiểm soát việc này. Những hạn chế này chấm dứt việc lưu trữ tập trung dữ liệu nhận dạng người dùng, vì trong trường hợp này, chúng tôi sẽ biết vị trí của nhân viên. Đồng thời, chúng tôi không thể không kiểm tra chúng vì có khả năng xe tay ga bị đánh cắp. Nhưng nhờ Danh tính Tự chủ, người dùng của chúng tôi đã sử dụng hệ thống một cách ẩn danh và chính chiếc xe tay ga đã kiểm tra giấy phép lái xe của họ trước khi bắt đầu thuê. Do đó, chúng tôi đã lưu trữ số liệu người dùng ẩn danh; chúng tôi không có bất kỳ tài liệu hoặc dữ liệu cá nhân nào: tất cả chúng đều được chứa trên chính thiết bị của trình điều khiển. Như vậy, nhờ có SSI, giải pháp cho vấn đề trong dự án của chúng tôi đã sẵn sàng ngay cả trước khi nó xuất hiện.

Thiết bị đã gây ra sự cố cho tôi

Chúng tôi không tự mình triển khai Bản sắc tự chủ vì nó đòi hỏi chuyên môn về mật mã và rất nhiều thời gian. Thay vào đó, chúng tôi đã tận dụng sản phẩm của đối tác Jolocom và tích hợp ví di động cũng như dịch vụ của họ vào nền tảng của chúng tôi. Thật không may, sản phẩm này có một nhược điểm đáng kể: ngôn ngữ phát triển chính là Node.js.

Ngăn xếp công nghệ này hạn chế rất nhiều sự lựa chọn của chúng tôi về phần cứng được tích hợp trong xe tay ga. May mắn thay, ngay khi bắt đầu dự án, chúng tôi đã chọn Raspberry Pi Zero và chúng tôi đã tận dụng được tất cả những lợi thế của một chiếc máy vi tính chính thức. Điều này cho phép chúng tôi chạy Node.js cồng kềnh trên xe tay ga. Ngoài ra, chúng tôi còn nhận được sự giám sát và truy cập từ xa qua VPN bằng các công cụ có sẵn.

Kết luận

Bất chấp mọi “nỗi đau” và vấn đề, dự án vẫn được khởi động. Không phải mọi thứ đều diễn ra như chúng tôi dự định, nhưng thực sự có thể lái xe tay ga bằng cách thuê chúng.

Đúng, chúng tôi đã mắc một số sai lầm khi thiết kế kiến ​​trúc không cho phép chúng tôi làm cho dịch vụ được phân cấp hoàn toàn, nhưng ngay cả khi không có những sai sót này, chúng tôi khó có thể tạo ra một nền tảng không có máy chủ. Viết một kim tự tháp tiền điện tử khác là một chuyện và viết một dịch vụ chính thức trong đó bạn cần xử lý lỗi, giải quyết các trường hợp ranh giới và thực hiện các tác vụ đang chờ xử lý là một chuyện khác. Hãy hy vọng rằng các nền tảng mới xuất hiện gần đây sẽ linh hoạt và hoạt động tốt hơn.

Nguồn: www.habr.com

Thêm một lời nhận xét