พัฒนาซอฟต์แวร์สำหรับการเช่าสกู๊ตเตอร์แบบกระจายอำนาจ ใครบอกว่ามันจะง่าย?

ในบทความนี้ ฉันจะพูดถึงวิธีที่เราพยายามสร้างการเช่าสกู๊ตเตอร์แบบกระจายอำนาจบนสัญญาอัจฉริยะ และเหตุใดเราจึงยังต้องการบริการแบบรวมศูนย์

พัฒนาซอฟต์แวร์สำหรับการเช่าสกู๊ตเตอร์แบบกระจายอำนาจ ใครบอกว่ามันจะง่าย?

วิธีการที่จะเริ่มต้นทั้งหมด

ในเดือนพฤศจิกายน 2018 เราได้เข้าร่วมแฮ็กกาธอนที่เกี่ยวข้องกับ Internet of Things และบล็อกเชนโดยเฉพาะ ทีมงานของเราเลือกการแบ่งปันสกู๊ตเตอร์เป็นแนวคิด เนื่องจากเรามีสกู๊ตเตอร์จากผู้สนับสนุนการแข่งขันแฮกกาธอนครั้งนี้ ต้นแบบดูเหมือนแอปพลิเคชันมือถือที่ให้คุณสตาร์ทสกู๊ตเตอร์ผ่าน NFC จากมุมมองทางการตลาด แนวคิดนี้ได้รับการสนับสนุนจากเรื่องราวเกี่ยวกับ "อนาคตที่สดใส" พร้อมด้วยระบบนิเวศแบบเปิดที่ใครๆ ก็สามารถเป็นผู้เช่าหรือเจ้าของบ้านได้ ทั้งหมดนี้อิงจากสัญญาอัจฉริยะ

ผู้มีส่วนได้ส่วนเสียของเราชอบแนวคิดนี้มาก และพวกเขาตัดสินใจเปลี่ยนให้เป็นต้นแบบเพื่อจัดแสดงในนิทรรศการ หลังจากการสาธิตที่ประสบความสำเร็จหลายครั้งที่ Mobile World Congress และ Bosch Connected World ในปี 2019 ก็มีการตัดสินใจทดสอบการเช่าสกู๊ตเตอร์กับผู้ใช้จริง ซึ่งเป็นพนักงาน Deutsche Telekom ดังนั้นเราจึงเริ่มพัฒนา MVP อย่างเต็มรูปแบบ

Blockchain บนไม้ค้ำยัน

ฉันไม่คิดว่ามันคุ้มค่าที่จะอธิบายความแตกต่างระหว่างโปรเจ็กต์ที่จะแสดงบนเวทีกับโปรเจ็กต์ที่จะใช้โดยคนจริงๆ ภายในหกเดือน เราต้องเปลี่ยนต้นแบบที่หยาบๆ ให้เป็นสิ่งที่เหมาะสมสำหรับนักบิน แล้วเราก็เข้าใจว่า "ความเจ็บปวด" หมายถึงอะไร

เพื่อให้ระบบของเรามีการกระจายอำนาจและเปิดกว้าง เราจึงตัดสินใจใช้สัญญาอัจฉริยะ Ethereum ตัวเลือกนี้ตกอยู่บนแพลตฟอร์มบริการออนไลน์แบบกระจายอำนาจ เนื่องจากได้รับความนิยมและความสามารถในการสร้างแอปพลิเคชันแบบไร้เซิร์ฟเวอร์ เราวางแผนที่จะดำเนินโครงการของเราดังนี้

พัฒนาซอฟต์แวร์สำหรับการเช่าสกู๊ตเตอร์แบบกระจายอำนาจ ใครบอกว่ามันจะง่าย?

แต่น่าเสียดายที่สัญญาอัจฉริยะคือโค้ดที่ดำเนินการโดยเครื่องเสมือน ณ เวลาที่ทำธุรกรรม และไม่สามารถแทนที่เซิร์ฟเวอร์ที่มีคุณสมบัติครบถ้วนได้ ตัวอย่างเช่น สัญญาอัจฉริยะไม่สามารถดำเนินการที่ค้างอยู่หรือตามกำหนดเวลาได้ ในโครงการของเรา สิ่งนี้ไม่อนุญาตให้เราใช้บริการเช่าต่อนาทีได้ เช่นเดียวกับบริการแชร์รถสมัยใหม่ส่วนใหญ่ทำ ดังนั้นเราจึงหักเงินดิจิทัลจากผู้ใช้หลังจากทำธุรกรรมเสร็จสิ้นโดยไม่แน่ใจว่าเขามีเงินเพียงพอ วิธีการนี้เป็นที่ยอมรับสำหรับโครงการนำร่องภายในเท่านั้น และแน่นอนว่าจะเพิ่มปัญหาเมื่อออกแบบโครงการการผลิตเต็มรูปแบบ

สิ่งที่เพิ่มเข้ามาทั้งหมดคือความชื้นของแท่นนั่นเอง ตัวอย่างเช่น หากคุณเขียนสัญญาอัจฉริยะด้วยตรรกะที่แตกต่างจากโทเค็น ERC-20 คุณจะประสบปัญหาการจัดการข้อผิดพลาด โดยปกติ หากอินพุตไม่ถูกต้องหรือวิธีการของเราทำงานไม่ถูกต้อง เราจะได้รับรหัสข้อผิดพลาดตอบกลับ ในกรณีของ Ethereum เราไม่สามารถรับสิ่งอื่นใดได้นอกจากปริมาณก๊าซที่ใช้เพื่อทำหน้าที่นี้ Gas เป็นสกุลเงินที่ต้องชำระสำหรับการทำธุรกรรมและการคำนวณ ยิ่งมีการดำเนินการในโค้ดมากเท่าไร คุณจะยิ่งจ่ายเงินมากขึ้นเท่านั้น ดังนั้น เพื่อทำความเข้าใจว่าเหตุใดโค้ดจึงใช้งานไม่ได้ คุณต้องทดสอบก่อนโดยจำลองข้อผิดพลาดที่เป็นไปได้ทั้งหมดและฮาร์ดโค้ดก๊าซที่ใช้เป็นโค้ดข้อผิดพลาด แต่ถ้าคุณเปลี่ยนรหัส การจัดการข้อผิดพลาดนี้จะเสียหาย

นอกจากนี้ แทบจะเป็นไปไม่ได้เลยที่จะสร้างแอปพลิเคชันมือถือที่ทำงานร่วมกับบล็อกเชนโดยสุจริต โดยไม่ต้องใช้คีย์ที่เก็บไว้ในที่ใดที่หนึ่งในคลาวด์ แม้ว่ากระเป๋าเงินจริงจะมีอยู่จริง แต่ก็ไม่มีอินเทอร์เฟซสำหรับการลงนามธุรกรรมภายนอก ซึ่งหมายความว่าคุณจะไม่เห็นแอปพลิเคชันแบบเนทีฟเว้นแต่จะมีกระเป๋าเงินเข้ารหัสลับในตัว ซึ่งผู้ใช้จะไม่ค่อยไว้วางใจ (ฉันไม่เชื่อหรอก) ส่งผลให้เราต้องตัดมุมตรงนี้ด้วย สัญญาอัจฉริยะถูกส่งไปยังเครือข่าย Ethereum ส่วนตัว และกระเป๋าเงินนั้นทำงานบนคลาวด์ แต่ถึงกระนั้น ผู้ใช้ของเราก็พบกับ "ความเพลิดเพลิน" ทั้งหมดของบริการแบบกระจายอำนาจในรูปแบบของการรอธุรกรรมเป็นเวลานานหลายครั้งต่อเซสชันการเช่า

ทั้งหมดนี้นำเราไปสู่สถาปัตยกรรมนี้ เห็นด้วยมันแตกต่างจากที่เราวางแผนไว้มาก

พัฒนาซอฟต์แวร์สำหรับการเช่าสกู๊ตเตอร์แบบกระจายอำนาจ ใครบอกว่ามันจะง่าย?

เอซในหลุม: ตัวตนอธิปไตย

คุณไม่สามารถสร้างระบบกระจายอำนาจได้อย่างสมบูรณ์หากไม่มีข้อมูลประจำตัวแบบกระจายอำนาจ Self-Sovereign Identity (SSI) มีหน้าที่รับผิดชอบในส่วนนี้ สาระสำคัญก็คือคุณต้องละทิ้งผู้ให้บริการข้อมูลประจำตัวส่วนกลาง (IDP) และแจกจ่ายข้อมูลและความรับผิดชอบทั้งหมดให้กับประชาชน ตอนนี้ผู้ใช้ตัดสินใจว่าข้อมูลใดที่เขาต้องการและจะแบ่งปันกับใคร ข้อมูลทั้งหมดนี้อยู่ในอุปกรณ์ของผู้ใช้ แต่สำหรับการแลกเปลี่ยน เราจำเป็นต้องมีระบบกระจายอำนาจเพื่อจัดเก็บหลักฐานการเข้ารหัส การใช้งานแนวคิด SSI ที่ทันสมัยทั้งหมดใช้บล็อกเชนเป็นที่เก็บข้อมูล

“สิ่งนี้เกี่ยวอะไรกับเอซในหลุม?” - คุณถาม. เราเปิดตัวบริการสำหรับการทดสอบภายในกับพนักงานของเราเองในกรุงเบอร์ลินและบอนน์ และเราประสบปัญหาในรูปแบบของสหภาพแรงงานเยอรมัน ในเยอรมนี บริษัทต่างๆ ถูกห้ามไม่ให้ติดตามความเคลื่อนไหวของพนักงาน และสหภาพแรงงานก็ควบคุมเรื่องนี้ ข้อจำกัดเหล่านี้ยุติการจัดเก็บข้อมูลประจำตัวผู้ใช้แบบรวมศูนย์ เนื่องจากในกรณีนี้ เราจะทราบตำแหน่งของพนักงาน ในเวลาเดียวกัน เราก็อดไม่ได้ที่จะตรวจสอบพวกมันเนื่องจากความเป็นไปได้ที่สกู๊ตเตอร์จะถูกขโมย แต่ต้องขอบคุณ Self-Sovereign Identity ผู้ใช้ของเราจึงใช้ระบบโดยไม่เปิดเผยตัวตน และสกู๊ตเตอร์เองก็ได้ตรวจสอบใบขับขี่ก่อนเริ่มการเช่า ด้วยเหตุนี้ เราจึงจัดเก็บการวัดผลผู้ใช้ที่ไม่เปิดเผยตัวตน เราไม่มีเอกสารหรือข้อมูลส่วนบุคคลใด ๆ ข้อมูลเหล่านี้ทั้งหมดอยู่ในอุปกรณ์ของผู้ขับขี่เอง ดังนั้น ต้องขอบคุณ SSI ที่ช่วยแก้ไขปัญหาในโครงการของเราให้พร้อมก่อนที่จะปรากฏเสียอีก

อุปกรณ์ทำให้ฉันมีปัญหา

เราไม่ได้ใช้อัตลักษณ์อธิปไตยของตนเอง เนื่องจากต้องใช้ความเชี่ยวชาญด้านการเข้ารหัสและใช้เวลานาน แต่เราใช้ประโยชน์จากผลิตภัณฑ์ของพันธมิตร Jolocom และรวมกระเป๋าเงินและบริการมือถือของพวกเขาเข้ากับแพลตฟอร์มของเรา น่าเสียดายที่ผลิตภัณฑ์นี้มีข้อเสียเปรียบที่สำคัญอย่างหนึ่ง: ภาษาในการพัฒนาหลักคือ Node.js

กลุ่มเทคโนโลยีนี้จำกัดการเลือกฮาร์ดแวร์ที่ติดตั้งในสกู๊ตเตอร์อย่างมาก โชคดีที่ในช่วงเริ่มต้นของโครงการ เราเลือก Raspberry Pi Zero และเราใช้ประโยชน์จากข้อดีทั้งหมดของไมโครคอมพิวเตอร์ที่มีคุณสมบัติครบถ้วน สิ่งนี้ทำให้เราสามารถรัน Node.js ขนาดใหญ่บนสกู๊ตเตอร์ได้ นอกจากนี้เรายังได้รับการตรวจสอบและการเข้าถึงระยะไกลผ่าน VPN โดยใช้เครื่องมือสำเร็จรูป

ในข้อสรุป

แม้จะมี "ความเจ็บปวด" และปัญหามากมาย แต่โครงการนี้ก็เปิดตัว ทุกอย่างไม่ได้เป็นไปตามที่เราวางแผนไว้ แต่การเช่าสกู๊ตเตอร์ก็เป็นไปได้จริงๆ

ใช่ เราทำผิดพลาดหลายครั้งในการออกแบบสถาปัตยกรรมที่ไม่อนุญาตให้เราให้บริการแบบกระจายอำนาจอย่างสมบูรณ์ แต่ถึงแม้จะไม่มีข้อผิดพลาดเหล่านี้ เราก็แทบจะไม่สามารถสร้างแพลตฟอร์มแบบไร้เซิร์ฟเวอร์ได้ การเขียน crypto-pyramid อื่นเป็นเรื่องหนึ่ง และอีกเรื่องหนึ่งคือการเขียนบริการเต็มรูปแบบซึ่งคุณต้องจัดการกับข้อผิดพลาด แก้ไขกรณีเขตแดน และดำเนินการงานที่ค้างอยู่ หวังว่าแพลตฟอร์มใหม่ที่เพิ่งเกิดขึ้นจะมีความยืดหยุ่นและใช้งานได้มากขึ้น

ที่มา: will.com

เพิ่มความคิดเห็น