การวิเคราะห์ของ EIP-6963: ขั้นตอนสู่การปรับปรุงความสามารถในการทำงานร่วมกันของกระเป๋า Ethereum และเพิ่มประสบการณ์ของผู้ใช้

EIP-6963 นำเสนอมาตรฐานใหม่ที่มุ่งเน้นในการปรับปรุงกลไกการค้นพบและปฏิสัมพันธ์ของกระเป๋าเสียง Ethereum browser extension มันมีวัตถุประสงค์ที่จะแก้ไขปัญหาเช่นความขัดแย้งของกระเป๋าเงิน ขาดการสนับสนุนหลายบริการ และประสบการณ์ของผู้ใช้ที่ไม่ค่อยสะดวก เปรียบเทียบกับมาตรฐาน EIP-1193 ที่มีอยู่ EIP-6963 นำเสนอ window events และโปรโตคอลการสื่อสารสองทาง ทำให้ dApps สามารถรู้จักและปรับตัวต่อกระเป๋าเงินที่ผู้ใช้ต้องการได้อย่างมีประสิทธิภาพมากขึ้น

ต้นกำเนิดของ EIP-6963

ในระบบนิเวศบล็อกเชนกระเป๋าเงินส่วนขยายเบราว์เซอร์เป็นแอปพลิเคชันกระเป๋าเงินที่มีอยู่ในรูปแบบของปลั๊กอินเบราว์เซอร์ อนุญาตให้ผู้ใช้โต้ตอบกับบัญชีบล็อกเชนได้โดยตรงภายใน dApps เช่นการส่งธุรกรรมการลงนามในข้อความหรือการโต้ตอบกับสัญญาอัจฉริยะ ตัวอย่างที่พบบ่อยที่สุดคือ MetaMask ซึ่งเกือบจะกลายเป็นเครื่องมือมาตรฐานสําหรับการใช้ dApps ระบบนิเวศของ Ethereum ซึ่งแตกต่างจากแอปพลิเคชันแบบดั้งเดิมกระเป๋าเงินส่วนขยายเบราว์เซอร์จะฝังอยู่ในสภาพแวดล้อมเบราว์เซอร์ วิธีนี้ช่วยลดความยุ่งยากในกระบวนการโต้ตอบกับผู้ใช้กับบล็อกเชนและขจัดอุปสรรคทางเทคนิคของการดําเนินการโหนดที่ซับซ้อนหรือการจัดการคีย์ส่วนตัว ผู้ใช้จะต้องติดตั้งส่วนขยายเพื่อเริ่มใช้เครือข่ายบล็อกเชนอย่างรวดเร็ว

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

ลองนึกภาพว่าคุณต้องการใช้การแลกเปลี่ยนแบบกระจายอํานาจ (DEX) หรือตลาด NFT คุณเปิดเว็บไซต์ของ dApp ตื่นเต้นที่จะเริ่มโต้ตอบ อย่างไรก็ตามปัญหาเกิดขึ้น - เบราว์เซอร์ของคุณมีการติดตั้งส่วนขยายกระเป๋าเงินหลายตัวเช่น MetaMask, Coinbase Wallet และ Brave Wallet แต่ dApp ไม่สามารถระบุกระเป๋าเงินที่คุณใช้อยู่ในปัจจุบันได้อย่างถูกต้องและยังส่งข้อความแสดงข้อผิดพลาด: "ไม่พบกระเป๋าเงินโปรดติดตั้งส่วนขยายกระเป๋าเงิน" คุณลองรีเฟรชเพจและเริ่มเบราว์เซอร์ใหม่ แต่ปัญหายังคงมีอยู่ สถานการณ์ทั่วไปนี้เน้นถึงปัญหาในทางปฏิบัติ: กลไกการระบุและการโต้ตอบของกระเป๋าเงินส่วนขยายของเบราว์เซอร์ไม่เพียงพอ เมื่อส่วนขยายกระเป๋าเงินและผู้ให้บริการเกิดขึ้นมากขึ้นประสบการณ์ของผู้ใช้จะซับซ้อนและสับสนมากขึ้น

เพื่อแก้ไขปัญหาการโต้ตอบระหว่างกระเป๋าเงินและ dApps ชุมชนได้นำเสนอ EIP-1193 (Ethereum JavaScript Provider API) มาตรฐานสากลที่กำหนดว่า dApps สามารถสื่อสารกับกระเป๋าเงินผ่านสภาพแวดล้อมของเบราว์เซอร์ได้อย่างไร ไอเดียหลักของ EIP-1193 คือการจัดการฟังก์ชันบล็อกเชนที่มีอยู่ในกระเป๋าเงินผ่านอินเตอร์เฟซมาตรฐาน ตัวอย่างเช่น dApp สื่อสารกับกระเป๋าเงินผ่านวินโดว์.ethereum object โดยส่งคำขอหรือรับเหตุการณ์บล็อกเชน

แม้ว่า EIP-1193 จะแก้ไขปัญหาความเข้ากันได้บางส่วนระหว่างกระเป๋าเงินและ dApps แต่ยังคงมีข้อจำกัดที่ชัดเจนบางประการ:

  1. ข้อขัดแย้งของพ็อกเก็ตหลายตัว: เมื่อผู้ใช้ติดตั้งกระเป๋าเสตนต์บราวเซอร์หลายตัว ผ่าน EIP-1193 จะผูก window.ethereum กับพ็อกเก็ตแรกที่โหลดมาก่อนเป็นค่าเริ่มต้น ผลลัพธ์คือ พ็อกเก็ตอื่นอาจจะไม่ได้รับการรับรองอย่างถูกต้อง และบางครั้งแอปพลิเคชั่นอาจจะไม่ทำงานเลย
  2. ขาดการสนับสนุนหลายบริการ: มี dApps หลายๆ ตัวต้องการสนับสนุนกระเป๋าเงินหลายๆ ราย แต่ EIP-1193 ไม่มีกลไกชัดเจนในการแยกแยะหรือเลือกบริการให้บริการต่างๆ นี้ ส่งผลให้นักพัฒนา dApp ต้องออกแบบตรรกะที่ซับซ้อนเพื่อจัดการกับการปรับการใช้งานกระเป๋าเงิน
  3. ประสบการณ์ผู้ใช้ที่ไม่สะดวก: สำหรับผู้ใช้ทั่วไป มันยากที่จะเข้าใจเหตุผลทางเทคนิคของข้อความผิดพลาดเช่น "ไม่พบกระเป๋า" หรือ "ไม่เชื่อมต่ออย่างเหมาะสม" ซึ่งเพิ่มขีดจำกัดการใช้งานและทำให้รู้สึกผิดหวัง

เพื่อแก้ปัญหานี้ชุมชนได้เสนอ EIP-6963 (Browser Extension Wallet Discovery Standard) ซึ่งเป็นแผนการปรับปรุงกระเป๋าเงินส่วนขยายเบราว์เซอร์ที่มุ่งเพิ่มประสิทธิภาพการค้นพบกระเป๋าเงินและกลไกการโต้ตอบ โซลูชันนี้มีจุดมุ่งหมายเพื่อลดอุปสรรคในการเข้าสําหรับผู้ให้บริการกระเป๋าเงินรายใหม่ส่งเสริมการแข่งขันที่เป็นธรรมและปรับปรุงประสบการณ์ของผู้ใช้บนเครือข่าย Ethereum โดยเฉพาะอย่างยิ่งมันแนะนําชุดของเหตุการณ์หน้าต่างและให้โปรโตคอลการสื่อสารแบบสองทิศทางทําให้ไลบรารีและสคริปต์ Ethereum ที่ฉีดโดยส่วนขยายเบราว์เซอร์สามารถโต้ตอบได้ สิ่งนี้จะช่วยให้ผู้ใช้สามารถเลือกกระเป๋าเงินที่ต้องการตามความต้องการของพวกเขาปรับปรุงประสบการณ์โดยรวม

การวิเคราะห์รหัส

การตรวจสอบชื่อโดเมนย้อนกลับ (RDNS)

การทำงานร่วมกัน DNS ย้อน (RDNS) ให้ความมั่นคงของตัวติดต่อผู้ให้บริการกระเป๋าเงินในขณะเดียวกันป้องกันความขัดแย้งของเนมสเปซ EIP-6963 เน้นที่จะให้ความสำคัญกับกฎของ RDNS ที่ควรปฏิบัติตามเช่นรูปแบบโดเมนที่ถูกต้องและส่วนของโดเมนที่ควบคุมโดยผู้ให้บริการ นอกจากนี้ยังเน้นว่า dApps ไม่ควรพึ่งพาค่า RDNS สำหรับการตรวจหาคุณลักษณะเพื่อหลีกเลี่ยงความเป็นไปได้ของการกระทำที่ถูกปลอมแปลงหรือเติบโต อินเทอร์เฟซ ProviderDetail ของ EIP-6963 ให้ dApps ด้วยข้อมูลเพิ่มเติมของผู้ให้บริการกระเป๋าเงินเพื่อช่วยในการปฏิสัมพันธ์กับกระเป๋าเงิน

EIP6963ProviderDetail

EIP6963ProviderDetail เป็นอินเทอร์เฟซที่ใช้ในการประกาศและอธิบายข้อมูลผู้ให้บริการกระเป๋า โดยการรวมคุณสมบัติเช่น ข้อมูล (เมตาดาต้าของกระเป๋า) และผู้ให้บริการ (อินเทอร์เฟซผู้ให้บริการกระเป๋า) มันช่วยให้ dApps ได้รับข้อมูลละเอียดเกี่ยวกับกระเป๋าและจับความสัมพันธ์กับพวกเขาผ่านอินเทอร์เฟซมาตรฐาน อินเทอร์เฟซนี้เป็นรากฐานสำคัญสำหรับการบรรลุการเข้ากันได้และการทำงานร่วมกันระหว่างแอปพลิเคชันที่ไม่มีเซิร์ฟเวอร์และกระเป๋าต่าง ๆ

กลไกเหตุการณ์

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

ประเภทของเหตุการณ์

EIP6963AnnounceProviderEvent: เหตุการณ์นี้ใช้โดยกระเป๋าเพื่อประกาศความมีอยู่ของพวกเขา มันประกอบด้วยข้อมูลเกี่ยวกับกระเป๋า (EIP6963ProviderDetail) และอินเตอร์เฟซของกระเป๋า (EIP1193Provider) คุณสมบัติที่เชื่อมโยงของเหตุการณ์นี้คือข้อมูลพื้นฐานที่ถูกติดตามของกระเป๋า (โดยใช้ Object.freeze()) เพื่อให้แน่ใจถึงความไม่เปลี่ยนแปลง

เหตุการณ์ EIP6963RequestProviderEvent: เหตุการณ์นี้ใช้โดย dApps เพื่อขอให้ผู้ให้บริการกระเป๋าเงิน แอพพลิเคชั่นใช้เหตุการณ์นี้เพื่อแจ้งให้กระเป๋าเงินทราบว่าพร้อมและขอร้องการติดต่อ

ความเป็นไปพร้อมกันของเหตุการณ์

เนื่องจากลำดับการดำเนินการที่ไม่แน่นอนของโค้ด dApp และ wallet อาจเกิดเงื่อนไขแข่งขันได้ กลไกเหตุการณ์ถูกออกแบบมาเพื่อให้แน่ใจว่า dApp และ wallets สามารถจัดการกับเหตุการณ์อย่างถูกต้องเมื่อพวกเขาค้นพบกัน กระเป๋าสตางค์อาจส่งเหตุการณ์ประกาศไว้ก่อน ในขณะที่ dApp อาจจะยังไม่พร้อมที่จะฟังจนกระทันหลัง เพื่อป้องกันข้อผิดพลาด กระเป๋าสตางค์จะทำให้เหตุการณ์ประกาศเกิดขึ้นอีกครั้งหลังจากนั้น เพื่อให้แน่ใจว่า dApp ได้รับมันทันด้วยเวลา

การจัดการเหตุการณ์ของ dApp

dApps ต้องฟังสำหรับ EIP6963AnnounceProviderEvent และต้องไม่ลบผู้ฟังเหตุการณ์ระหว่างโหลดหน้า นี้ นั้น ทำให้ใช้งาน dApp สามารถฟังและตอบสนองเหตุการณ์ประกาศของกระเป๋าเงินอย่างต่อเนื่องระหว่างการดำเนินชีวิตของมัน หลังจากการจัดการเหตุการณ์ประกาศ dApp ต้องเรียกใช้ EIP6963RequestProviderEvent เพื่อขอการโต้ตอบเพิ่มเติมกับกระเป๋าเงิน

การค้นพบและสลับกระเป๋า

dApps สามารถเก็บ EIP6963ProviderDetail object หลายรายการสำหรับกระเป๋าเงินต่าง ๆ ให้ผู้ใช้เลือกใช้กระเป๋าเงินที่แตกต่างกันสำหรับการจับคู่ภายใน dApp นี้ ซึ่งจะทำให้ผู้ใช้มีความยืดหยุ่นมากขึ้น โดยให้พวกเขาสามารถเปลี่ยนกระเป๋าเงินโดยไม่ต้องโหลดหน้าใหม่

การออกแบบนี้บรรลุการค้นพบและการโต้ตอบที่ราบรื่นระหว่าง dApps และกระเป๋าเงินผ่าน EIP6963AnnounceProviderEvent และ EIP6963RequestProviderEvent ด้วยการใช้ผู้ฟังเหตุการณ์และทริกเกอร์เหตุการณ์ dApps และกระเป๋าเงินสามารถประสานงานการกระทําของพวกเขาแม้จะมีคําสั่งดําเนินการที่ไม่แน่นอนหลีกเลี่ยงเงื่อนไขการแข่งขันและรับรองพฤติกรรมที่มั่นคง นอกจากนี้ dApps ยังสามารถสลับกระเป๋าเงินตามความต้องการของผู้ใช้ปรับปรุงประสบการณ์ของผู้ใช้และการทํางานร่วมกันของกระเป๋าเงิน

ความเข้ากันได้ย้อนหลัง

EIP นี้ไม่จําเป็นต้องเปลี่ยน window.ethereum ซึ่งหมายความว่าจะไม่ทําลายแอปพลิเคชันที่มีอยู่โดยตรงซึ่งไม่สามารถอัปเดตเพื่อใช้วิธีการค้นพบกระเป๋าเงินนี้ได้ อย่างไรก็ตามขอแนะนําอย่างยิ่งให้ dApps ใช้ EIP นี้เพื่อให้แน่ใจว่าพวกเขาสามารถค้นพบผู้ให้บริการกระเป๋าเงินหลายรายและปิดใช้งานการใช้ window.ethereum เว้นแต่จะใช้เป็นวิธีสํารองเมื่อการค้นพบล้มเหลว ในทํานองเดียวกันผู้ให้บริการกระเป๋าเงินควรรักษาความเข้ากันได้กับ window.ethereum เพื่อให้แน่ใจว่าเข้ากันได้กับ dApps ที่ไม่ได้ใช้ EIP นี้ เพื่อหลีกเลี่ยงปัญหาความขัดแย้งของเนมสเปซก่อนหน้านี้ขอแนะนําให้กระเป๋าเงินฉีดอ็อบเจ็กต์ผู้ให้บริการลงในเนมสเปซกระเป๋าเงินเฉพาะจากนั้นพร็อกซีวัตถุไปยัง window.ethereum namespace

การออกแบบระบบรักษาความปลอดภัย

Prototype Pollution ของอ็อบเจ็กต์ผู้ให้บริการกระเป๋า

ส่วนขยายเบราว์เซอร์โดยเฉพาะส่วนขยายกระเป๋าเงินมีความสามารถในการแก้ไขเนื้อหาของหน้าและอ็อบเจ็กต์ของผู้ให้บริการซึ่งเป็นคุณสมบัติหลักของการออกแบบ ออบเจ็กต์ผู้ให้บริการของกระเป๋าเงินต่างๆถือเป็นอินเทอร์เฟซที่เชื่อถือได้สูงสําหรับการส่งข้อมูลธุรกรรม เพื่อป้องกันการปรับเปลี่ยนการโต้ตอบระหว่าง dApp และ wallet โดยไม่ได้ตั้งใจโดยหน้าเว็บหรือส่วนขยายอื่น ๆ แนวทางปฏิบัติที่ดีที่สุดคือการตรึงวัตถุ EIP1193Provider โดยใช้ Object.freeze() ก่อนที่กระเป๋าเงินจะส่งเหตุการณ์ eip6963:announceProvider สิ่งนี้ทําให้มั่นใจได้ว่าวัตถุไม่สามารถแก้ไขได้ อย่างไรก็ตามในบางกรณีความเข้ากันได้ของเว็บอาจต้องมีการปรับเปลี่ยนวัตถุนี้ ในกรณีเช่นนี้ผู้ดําเนินการกระเป๋าเงินจําเป็นต้องสร้างสมดุลระหว่างความปลอดภัยและความเข้ากันได้ของเว็บ

การปลอมแปลงและการแก้ไขกระเป๋าเงิน

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

ป้องกันการดำเนินการ JavaScript ใน SVGs

การใช้รูปภาพ SVG อาจทำให้เกิดการโจมตี cross-site scripting (XSS) เนื่องจากรูปภาพ SVG สามารถมีโค้ด JavaScript และโค้ดนี้จะถูกเรียกใช้ในบริบทของหน้าเพจ และอาจมีโอกาสเปลี่ยนแปลงเนื้อหาของหน้าเพจหรือมีผลต่อกระเป๋าเงินอื่น ดังนั้น เมื่อแสดงไอคอน แอปพลิเคชันบล็อกเชนต้องพิจารณาวิธีการจัดการกับความเสี่ยงด้านความปลอดภัยเหล่านี้เพื่อป้องกันรูปภาพที่ไม่ดีจากการใช้เป็นเทคนิคการปกปิด ซึ่งอาจซ่อนการปรับเปลี่ยนที่ไม่ดีของหน้าเพจหรือกระเป๋าเงิน

ป้องกันการระบุลายนิ้วมือของกระเป๋า

ข้อดีอย่างหนึ่งของกลไกลูปเหตุการณ์พร้อมกันที่ใช้ในการออกแบบนี้คือทั้ง dApp และกระเป๋าเงินสามารถเริ่มกระบวนการเพื่อประกาศผู้ให้บริการได้ ดังนั้นผู้ดําเนินการกระเป๋าเงินสามารถเลือกได้ว่าจะประกาศตัวเองกับทุกหน้าหรือใช้มาตรการอื่น ๆ เพื่อลดโอกาสที่ผู้ใช้จะถูกพิมพ์ลายนิ้วมือผ่านวัตถุ window.ethereum ที่ฉีด ทางเลือกหนึ่งที่เป็นไปได้คือให้กระเป๋าเงินชะลอการฉีดออบเจ็กต์ของผู้ให้บริการจนกว่า dApp จะประกาศเหตุการณ์ eip6963:requestProvider ณ จุดนี้กระเป๋าเงินสามารถเริ่มต้นขั้นตอนความยินยอม UI โดยถามผู้ใช้ว่าพวกเขายินดีที่จะแบ่งปันที่อยู่กระเป๋าเงินของพวกเขาหรือไม่ วิธีนี้ช่วยให้กระเป๋าเงินเปิดใช้งานคุณสมบัติ "การเชื่อมต่อส่วนตัว" อย่างไรก็ตามเมื่อใช้วิธีนี้กระเป๋าเงินยังต้องพิจารณาถึงวิธีตรวจสอบความเข้ากันได้แบบย้อนหลังกับ dApps ที่ไม่รองรับ EIP นี้

คุณสมบัติของการปรับปรุง EIP-6963

การทำงานร่วมกันของกระเป๋าทราบง่ายขึ้น

EIP-6963 ที่เสนอในพฤษภาคม 2023 เป็นมาตรฐาน Ethereum ใหม่และผ่านในตุลาคมของปีเดียวกัน มีจุดมุ่งหมายที่จะแก้ไขปัญหาของมาตรฐานที่ไม่ได้กำหนดอย่างชัดเจนเช่น window.ethereum มาตรฐานนี้มีการนำเสนอกลไกการค้นหาผู้ให้บริการ multi-injection ซึ่งช่วยให้ dApps ค้นพบและเชื่อมต่อกับกระเป๋าทั้งหมดที่ติดตั้งบนเบราว์เซอร์ของผู้ใช้ได้อย่างเชื่อถือได้อุทิศ นี้ช่วยแก้ปัญหาของข้อจำกัดและข้อขัดแย้งที่เกิดขึ้นจากวิธีการ传统 ในระบบเทียบกับวิธีการ传统ของ window.ethereum EIP-6963 ทำให้กระบวนการค้นหากระเป๋าง่ายขึ้น สนับสนุนการใช้งานร่วมกันของส่วนขยายกระเป๋าหลายตัวในเบราว์เซอร์เดียวกัน นวัตกรรมนี้เสริมสร้างความสามารถในการทำงานร่วมกันของนิเวศ Ethereum และปรับปรุงประสบการณ์ของผู้ใช้อย่างมาก

คำจำกัดความชัดเจนและประสบการณ์ของผู้ใช้ที่ดีขึ้น

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

ความเสี่ยงด้านความปลอดภัยที่เป็นไปได้

การออกแบบ EIP-6963 ทําให้เกิดช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น ด้วยการให้รายการกระเป๋าเงินที่ลงทะเบียนทั้งหมดจะช่วยอํานวยความสะดวกในการโต้ตอบระหว่าง dApps และผู้ใช้ แต่อาจถูกนําไปใช้ในทางที่ผิดโดยแอปพลิเคชันที่เป็นอันตราย dApps ที่เป็นอันตรายอาจอ่านรายการกระเป๋าเงินที่ติดตั้งโดยผู้ใช้โดยอนุมานกิจกรรมบล็อกเชนหรือการกระจายสินทรัพย์ หากกลไกการลงทะเบียนบริการขาดการตรวจสอบที่เข้มงวดกระเป๋าเงินที่เป็นอันตรายอาจปลอมตัวเป็นผู้ให้บริการที่ถูกต้องตามกฎหมายหลอกให้ผู้ใช้ให้สิทธิ์การเข้าถึงและขโมยทรัพย์สิน ดังนั้นจึงจําเป็นต้องมีมาตรการรักษาความปลอดภัยเพิ่มเติม (เช่น ความยินยอมของผู้ใช้และการตรวจสอบการลงทะเบียน)

ความซับซ้อนในประสบการณ์ของผู้ใช้

ในแง่ของประสบการณ์ของผู้ใช้การสนับสนุนหลายกระเป๋าเงินของ EIP-6963 ในขณะที่การปรับปรุงที่สําคัญอาจเพิ่มความซับซ้อน ตัวอย่างเช่นหลังจากที่ผู้ใช้ติดตั้งกระเป๋าเงินหลายใบ dApp อาจนําเสนอตัวเลือกมากเกินไปทําให้ผู้ใช้สับสนเกี่ยวกับกระเป๋าเงินที่จะเลือก นอกจากนี้กระเป๋าเงินบางใบอาจมีชื่อหรือโลโก้ที่ไม่ใช้งานง่ายเพิ่มความยากลําบากในการระบุตัวตน สําหรับผู้ใช้ที่ต้องการเปลี่ยนกระเป๋าเงินบ่อยๆความยืดหยุ่นนี้อาจกลายเป็นภาระมากกว่าผลประโยชน์

สรุป

EIP-6963 นําเสนอแนวทางที่ขับเคลื่อนด้วยเหตุการณ์เพื่อแก้ไขปัญหาต่างๆเช่นการอยู่ร่วมกันแบบหลายกระเป๋าเงินความขัดแย้งของเนมสเปซและการปกป้องความเป็นส่วนตัวของผู้ใช้ในแอปพลิเคชัน Web3 ซึ่งช่วยปรับปรุงประสบการณ์ของผู้ใช้อย่างมีนัยสําคัญ กลไกมาตรฐานนี้ช่วยให้ dApps สามารถค้นหาและเชื่อมต่อกระเป๋าเงินหลายใบโดยอัตโนมัติโดยไม่ต้องสลับด้วยตนเองในขณะที่หลีกเลี่ยงการแข่งขันและความขัดแย้งระหว่างกระเป๋าเงินเพิ่มความราบรื่นและความเสถียรของการเชื่อมต่อ EIP-6963 ยังเสริมสร้างความปลอดภัยโดยการแช่แข็งวัตถุผู้ให้บริการกระเป๋าเงินเพื่อป้องกันการปลอมแปลงลดความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น ในแง่ของความเป็นส่วนตัวผู้ใช้สามารถเลือกได้ว่าจะแชร์ที่อยู่กระเป๋าเงินป้องกันการรั่วไหลของข้อมูลประจําตัวและการพิมพ์ลายนิ้วมือ EIP-6963 รักษาความเข้ากันได้แบบย้อนหลังกับอินเทอร์เฟซรุ่นเก่าทําให้มั่นใจได้ว่าการเปลี่ยนแปลงที่ราบรื่นสําหรับระบบที่มีอยู่ในขณะที่ลดความซับซ้อนของงานสําหรับนักพัฒนา dApp และปรับปรุงการสนับสนุนข้ามแพลตฟอร์มและหลายอุปกรณ์ โดยรวมแล้ว EIP-6963 ปรับปรุงการทํางานร่วมกันความปลอดภัยและการปกป้องความเป็นส่วนตัวใน Web3 และมอบเครื่องมือที่มีประสิทธิภาพมากขึ้นให้กับนักพัฒนาซึ่งส่งเสริมการพัฒนาระบบนิเวศ Web3 ต่อไป

Author: Rachel
Translator: Piper
Reviewer(s): Edward、Piccolo、Elisa
Translation Reviewer(s): Ashely、Joyce
* The information is not intended to be and does not constitute financial advice or any other recommendation of any sort offered or endorsed by Gate.io.
* This article may not be reproduced, transmitted or copied without referencing Gate.io. Contravention is an infringement of Copyright Act and may be subject to legal action.

การวิเคราะห์ของ EIP-6963: ขั้นตอนสู่การปรับปรุงความสามารถในการทำงานร่วมกันของกระเป๋า Ethereum และเพิ่มประสบการณ์ของผู้ใช้

ขั้นสูง1/15/2025, 8:36:35 AM
EIP-6963 นำเสนอมาตรฐานใหม่ที่มุ่งเน้นในการปรับปรุงกลไกการค้นพบและปฏิสัมพันธ์ของกระเป๋าเสียง Ethereum browser extension มันมีวัตถุประสงค์ที่จะแก้ไขปัญหาเช่นความขัดแย้งของกระเป๋าเงิน ขาดการสนับสนุนหลายบริการ และประสบการณ์ของผู้ใช้ที่ไม่ค่อยสะดวก เปรียบเทียบกับมาตรฐาน EIP-1193 ที่มีอยู่ EIP-6963 นำเสนอ window events และโปรโตคอลการสื่อสารสองทาง ทำให้ dApps สามารถรู้จักและปรับตัวต่อกระเป๋าเงินที่ผู้ใช้ต้องการได้อย่างมีประสิทธิภาพมากขึ้น

ต้นกำเนิดของ EIP-6963

ในระบบนิเวศบล็อกเชนกระเป๋าเงินส่วนขยายเบราว์เซอร์เป็นแอปพลิเคชันกระเป๋าเงินที่มีอยู่ในรูปแบบของปลั๊กอินเบราว์เซอร์ อนุญาตให้ผู้ใช้โต้ตอบกับบัญชีบล็อกเชนได้โดยตรงภายใน dApps เช่นการส่งธุรกรรมการลงนามในข้อความหรือการโต้ตอบกับสัญญาอัจฉริยะ ตัวอย่างที่พบบ่อยที่สุดคือ MetaMask ซึ่งเกือบจะกลายเป็นเครื่องมือมาตรฐานสําหรับการใช้ dApps ระบบนิเวศของ Ethereum ซึ่งแตกต่างจากแอปพลิเคชันแบบดั้งเดิมกระเป๋าเงินส่วนขยายเบราว์เซอร์จะฝังอยู่ในสภาพแวดล้อมเบราว์เซอร์ วิธีนี้ช่วยลดความยุ่งยากในกระบวนการโต้ตอบกับผู้ใช้กับบล็อกเชนและขจัดอุปสรรคทางเทคนิคของการดําเนินการโหนดที่ซับซ้อนหรือการจัดการคีย์ส่วนตัว ผู้ใช้จะต้องติดตั้งส่วนขยายเพื่อเริ่มใช้เครือข่ายบล็อกเชนอย่างรวดเร็ว

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

ลองนึกภาพว่าคุณต้องการใช้การแลกเปลี่ยนแบบกระจายอํานาจ (DEX) หรือตลาด NFT คุณเปิดเว็บไซต์ของ dApp ตื่นเต้นที่จะเริ่มโต้ตอบ อย่างไรก็ตามปัญหาเกิดขึ้น - เบราว์เซอร์ของคุณมีการติดตั้งส่วนขยายกระเป๋าเงินหลายตัวเช่น MetaMask, Coinbase Wallet และ Brave Wallet แต่ dApp ไม่สามารถระบุกระเป๋าเงินที่คุณใช้อยู่ในปัจจุบันได้อย่างถูกต้องและยังส่งข้อความแสดงข้อผิดพลาด: "ไม่พบกระเป๋าเงินโปรดติดตั้งส่วนขยายกระเป๋าเงิน" คุณลองรีเฟรชเพจและเริ่มเบราว์เซอร์ใหม่ แต่ปัญหายังคงมีอยู่ สถานการณ์ทั่วไปนี้เน้นถึงปัญหาในทางปฏิบัติ: กลไกการระบุและการโต้ตอบของกระเป๋าเงินส่วนขยายของเบราว์เซอร์ไม่เพียงพอ เมื่อส่วนขยายกระเป๋าเงินและผู้ให้บริการเกิดขึ้นมากขึ้นประสบการณ์ของผู้ใช้จะซับซ้อนและสับสนมากขึ้น

เพื่อแก้ไขปัญหาการโต้ตอบระหว่างกระเป๋าเงินและ dApps ชุมชนได้นำเสนอ EIP-1193 (Ethereum JavaScript Provider API) มาตรฐานสากลที่กำหนดว่า dApps สามารถสื่อสารกับกระเป๋าเงินผ่านสภาพแวดล้อมของเบราว์เซอร์ได้อย่างไร ไอเดียหลักของ EIP-1193 คือการจัดการฟังก์ชันบล็อกเชนที่มีอยู่ในกระเป๋าเงินผ่านอินเตอร์เฟซมาตรฐาน ตัวอย่างเช่น dApp สื่อสารกับกระเป๋าเงินผ่านวินโดว์.ethereum object โดยส่งคำขอหรือรับเหตุการณ์บล็อกเชน

แม้ว่า EIP-1193 จะแก้ไขปัญหาความเข้ากันได้บางส่วนระหว่างกระเป๋าเงินและ dApps แต่ยังคงมีข้อจำกัดที่ชัดเจนบางประการ:

  1. ข้อขัดแย้งของพ็อกเก็ตหลายตัว: เมื่อผู้ใช้ติดตั้งกระเป๋าเสตนต์บราวเซอร์หลายตัว ผ่าน EIP-1193 จะผูก window.ethereum กับพ็อกเก็ตแรกที่โหลดมาก่อนเป็นค่าเริ่มต้น ผลลัพธ์คือ พ็อกเก็ตอื่นอาจจะไม่ได้รับการรับรองอย่างถูกต้อง และบางครั้งแอปพลิเคชั่นอาจจะไม่ทำงานเลย
  2. ขาดการสนับสนุนหลายบริการ: มี dApps หลายๆ ตัวต้องการสนับสนุนกระเป๋าเงินหลายๆ ราย แต่ EIP-1193 ไม่มีกลไกชัดเจนในการแยกแยะหรือเลือกบริการให้บริการต่างๆ นี้ ส่งผลให้นักพัฒนา dApp ต้องออกแบบตรรกะที่ซับซ้อนเพื่อจัดการกับการปรับการใช้งานกระเป๋าเงิน
  3. ประสบการณ์ผู้ใช้ที่ไม่สะดวก: สำหรับผู้ใช้ทั่วไป มันยากที่จะเข้าใจเหตุผลทางเทคนิคของข้อความผิดพลาดเช่น "ไม่พบกระเป๋า" หรือ "ไม่เชื่อมต่ออย่างเหมาะสม" ซึ่งเพิ่มขีดจำกัดการใช้งานและทำให้รู้สึกผิดหวัง

เพื่อแก้ปัญหานี้ชุมชนได้เสนอ EIP-6963 (Browser Extension Wallet Discovery Standard) ซึ่งเป็นแผนการปรับปรุงกระเป๋าเงินส่วนขยายเบราว์เซอร์ที่มุ่งเพิ่มประสิทธิภาพการค้นพบกระเป๋าเงินและกลไกการโต้ตอบ โซลูชันนี้มีจุดมุ่งหมายเพื่อลดอุปสรรคในการเข้าสําหรับผู้ให้บริการกระเป๋าเงินรายใหม่ส่งเสริมการแข่งขันที่เป็นธรรมและปรับปรุงประสบการณ์ของผู้ใช้บนเครือข่าย Ethereum โดยเฉพาะอย่างยิ่งมันแนะนําชุดของเหตุการณ์หน้าต่างและให้โปรโตคอลการสื่อสารแบบสองทิศทางทําให้ไลบรารีและสคริปต์ Ethereum ที่ฉีดโดยส่วนขยายเบราว์เซอร์สามารถโต้ตอบได้ สิ่งนี้จะช่วยให้ผู้ใช้สามารถเลือกกระเป๋าเงินที่ต้องการตามความต้องการของพวกเขาปรับปรุงประสบการณ์โดยรวม

การวิเคราะห์รหัส

การตรวจสอบชื่อโดเมนย้อนกลับ (RDNS)

การทำงานร่วมกัน DNS ย้อน (RDNS) ให้ความมั่นคงของตัวติดต่อผู้ให้บริการกระเป๋าเงินในขณะเดียวกันป้องกันความขัดแย้งของเนมสเปซ EIP-6963 เน้นที่จะให้ความสำคัญกับกฎของ RDNS ที่ควรปฏิบัติตามเช่นรูปแบบโดเมนที่ถูกต้องและส่วนของโดเมนที่ควบคุมโดยผู้ให้บริการ นอกจากนี้ยังเน้นว่า dApps ไม่ควรพึ่งพาค่า RDNS สำหรับการตรวจหาคุณลักษณะเพื่อหลีกเลี่ยงความเป็นไปได้ของการกระทำที่ถูกปลอมแปลงหรือเติบโต อินเทอร์เฟซ ProviderDetail ของ EIP-6963 ให้ dApps ด้วยข้อมูลเพิ่มเติมของผู้ให้บริการกระเป๋าเงินเพื่อช่วยในการปฏิสัมพันธ์กับกระเป๋าเงิน

EIP6963ProviderDetail

EIP6963ProviderDetail เป็นอินเทอร์เฟซที่ใช้ในการประกาศและอธิบายข้อมูลผู้ให้บริการกระเป๋า โดยการรวมคุณสมบัติเช่น ข้อมูล (เมตาดาต้าของกระเป๋า) และผู้ให้บริการ (อินเทอร์เฟซผู้ให้บริการกระเป๋า) มันช่วยให้ dApps ได้รับข้อมูลละเอียดเกี่ยวกับกระเป๋าและจับความสัมพันธ์กับพวกเขาผ่านอินเทอร์เฟซมาตรฐาน อินเทอร์เฟซนี้เป็นรากฐานสำคัญสำหรับการบรรลุการเข้ากันได้และการทำงานร่วมกันระหว่างแอปพลิเคชันที่ไม่มีเซิร์ฟเวอร์และกระเป๋าต่าง ๆ

กลไกเหตุการณ์

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

ประเภทของเหตุการณ์

EIP6963AnnounceProviderEvent: เหตุการณ์นี้ใช้โดยกระเป๋าเพื่อประกาศความมีอยู่ของพวกเขา มันประกอบด้วยข้อมูลเกี่ยวกับกระเป๋า (EIP6963ProviderDetail) และอินเตอร์เฟซของกระเป๋า (EIP1193Provider) คุณสมบัติที่เชื่อมโยงของเหตุการณ์นี้คือข้อมูลพื้นฐานที่ถูกติดตามของกระเป๋า (โดยใช้ Object.freeze()) เพื่อให้แน่ใจถึงความไม่เปลี่ยนแปลง

เหตุการณ์ EIP6963RequestProviderEvent: เหตุการณ์นี้ใช้โดย dApps เพื่อขอให้ผู้ให้บริการกระเป๋าเงิน แอพพลิเคชั่นใช้เหตุการณ์นี้เพื่อแจ้งให้กระเป๋าเงินทราบว่าพร้อมและขอร้องการติดต่อ

ความเป็นไปพร้อมกันของเหตุการณ์

เนื่องจากลำดับการดำเนินการที่ไม่แน่นอนของโค้ด dApp และ wallet อาจเกิดเงื่อนไขแข่งขันได้ กลไกเหตุการณ์ถูกออกแบบมาเพื่อให้แน่ใจว่า dApp และ wallets สามารถจัดการกับเหตุการณ์อย่างถูกต้องเมื่อพวกเขาค้นพบกัน กระเป๋าสตางค์อาจส่งเหตุการณ์ประกาศไว้ก่อน ในขณะที่ dApp อาจจะยังไม่พร้อมที่จะฟังจนกระทันหลัง เพื่อป้องกันข้อผิดพลาด กระเป๋าสตางค์จะทำให้เหตุการณ์ประกาศเกิดขึ้นอีกครั้งหลังจากนั้น เพื่อให้แน่ใจว่า dApp ได้รับมันทันด้วยเวลา

การจัดการเหตุการณ์ของ dApp

dApps ต้องฟังสำหรับ EIP6963AnnounceProviderEvent และต้องไม่ลบผู้ฟังเหตุการณ์ระหว่างโหลดหน้า นี้ นั้น ทำให้ใช้งาน dApp สามารถฟังและตอบสนองเหตุการณ์ประกาศของกระเป๋าเงินอย่างต่อเนื่องระหว่างการดำเนินชีวิตของมัน หลังจากการจัดการเหตุการณ์ประกาศ dApp ต้องเรียกใช้ EIP6963RequestProviderEvent เพื่อขอการโต้ตอบเพิ่มเติมกับกระเป๋าเงิน

การค้นพบและสลับกระเป๋า

dApps สามารถเก็บ EIP6963ProviderDetail object หลายรายการสำหรับกระเป๋าเงินต่าง ๆ ให้ผู้ใช้เลือกใช้กระเป๋าเงินที่แตกต่างกันสำหรับการจับคู่ภายใน dApp นี้ ซึ่งจะทำให้ผู้ใช้มีความยืดหยุ่นมากขึ้น โดยให้พวกเขาสามารถเปลี่ยนกระเป๋าเงินโดยไม่ต้องโหลดหน้าใหม่

การออกแบบนี้บรรลุการค้นพบและการโต้ตอบที่ราบรื่นระหว่าง dApps และกระเป๋าเงินผ่าน EIP6963AnnounceProviderEvent และ EIP6963RequestProviderEvent ด้วยการใช้ผู้ฟังเหตุการณ์และทริกเกอร์เหตุการณ์ dApps และกระเป๋าเงินสามารถประสานงานการกระทําของพวกเขาแม้จะมีคําสั่งดําเนินการที่ไม่แน่นอนหลีกเลี่ยงเงื่อนไขการแข่งขันและรับรองพฤติกรรมที่มั่นคง นอกจากนี้ dApps ยังสามารถสลับกระเป๋าเงินตามความต้องการของผู้ใช้ปรับปรุงประสบการณ์ของผู้ใช้และการทํางานร่วมกันของกระเป๋าเงิน

ความเข้ากันได้ย้อนหลัง

EIP นี้ไม่จําเป็นต้องเปลี่ยน window.ethereum ซึ่งหมายความว่าจะไม่ทําลายแอปพลิเคชันที่มีอยู่โดยตรงซึ่งไม่สามารถอัปเดตเพื่อใช้วิธีการค้นพบกระเป๋าเงินนี้ได้ อย่างไรก็ตามขอแนะนําอย่างยิ่งให้ dApps ใช้ EIP นี้เพื่อให้แน่ใจว่าพวกเขาสามารถค้นพบผู้ให้บริการกระเป๋าเงินหลายรายและปิดใช้งานการใช้ window.ethereum เว้นแต่จะใช้เป็นวิธีสํารองเมื่อการค้นพบล้มเหลว ในทํานองเดียวกันผู้ให้บริการกระเป๋าเงินควรรักษาความเข้ากันได้กับ window.ethereum เพื่อให้แน่ใจว่าเข้ากันได้กับ dApps ที่ไม่ได้ใช้ EIP นี้ เพื่อหลีกเลี่ยงปัญหาความขัดแย้งของเนมสเปซก่อนหน้านี้ขอแนะนําให้กระเป๋าเงินฉีดอ็อบเจ็กต์ผู้ให้บริการลงในเนมสเปซกระเป๋าเงินเฉพาะจากนั้นพร็อกซีวัตถุไปยัง window.ethereum namespace

การออกแบบระบบรักษาความปลอดภัย

Prototype Pollution ของอ็อบเจ็กต์ผู้ให้บริการกระเป๋า

ส่วนขยายเบราว์เซอร์โดยเฉพาะส่วนขยายกระเป๋าเงินมีความสามารถในการแก้ไขเนื้อหาของหน้าและอ็อบเจ็กต์ของผู้ให้บริการซึ่งเป็นคุณสมบัติหลักของการออกแบบ ออบเจ็กต์ผู้ให้บริการของกระเป๋าเงินต่างๆถือเป็นอินเทอร์เฟซที่เชื่อถือได้สูงสําหรับการส่งข้อมูลธุรกรรม เพื่อป้องกันการปรับเปลี่ยนการโต้ตอบระหว่าง dApp และ wallet โดยไม่ได้ตั้งใจโดยหน้าเว็บหรือส่วนขยายอื่น ๆ แนวทางปฏิบัติที่ดีที่สุดคือการตรึงวัตถุ EIP1193Provider โดยใช้ Object.freeze() ก่อนที่กระเป๋าเงินจะส่งเหตุการณ์ eip6963:announceProvider สิ่งนี้ทําให้มั่นใจได้ว่าวัตถุไม่สามารถแก้ไขได้ อย่างไรก็ตามในบางกรณีความเข้ากันได้ของเว็บอาจต้องมีการปรับเปลี่ยนวัตถุนี้ ในกรณีเช่นนี้ผู้ดําเนินการกระเป๋าเงินจําเป็นต้องสร้างสมดุลระหว่างความปลอดภัยและความเข้ากันได้ของเว็บ

การปลอมแปลงและการแก้ไขกระเป๋าเงิน

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

ป้องกันการดำเนินการ JavaScript ใน SVGs

การใช้รูปภาพ SVG อาจทำให้เกิดการโจมตี cross-site scripting (XSS) เนื่องจากรูปภาพ SVG สามารถมีโค้ด JavaScript และโค้ดนี้จะถูกเรียกใช้ในบริบทของหน้าเพจ และอาจมีโอกาสเปลี่ยนแปลงเนื้อหาของหน้าเพจหรือมีผลต่อกระเป๋าเงินอื่น ดังนั้น เมื่อแสดงไอคอน แอปพลิเคชันบล็อกเชนต้องพิจารณาวิธีการจัดการกับความเสี่ยงด้านความปลอดภัยเหล่านี้เพื่อป้องกันรูปภาพที่ไม่ดีจากการใช้เป็นเทคนิคการปกปิด ซึ่งอาจซ่อนการปรับเปลี่ยนที่ไม่ดีของหน้าเพจหรือกระเป๋าเงิน

ป้องกันการระบุลายนิ้วมือของกระเป๋า

ข้อดีอย่างหนึ่งของกลไกลูปเหตุการณ์พร้อมกันที่ใช้ในการออกแบบนี้คือทั้ง dApp และกระเป๋าเงินสามารถเริ่มกระบวนการเพื่อประกาศผู้ให้บริการได้ ดังนั้นผู้ดําเนินการกระเป๋าเงินสามารถเลือกได้ว่าจะประกาศตัวเองกับทุกหน้าหรือใช้มาตรการอื่น ๆ เพื่อลดโอกาสที่ผู้ใช้จะถูกพิมพ์ลายนิ้วมือผ่านวัตถุ window.ethereum ที่ฉีด ทางเลือกหนึ่งที่เป็นไปได้คือให้กระเป๋าเงินชะลอการฉีดออบเจ็กต์ของผู้ให้บริการจนกว่า dApp จะประกาศเหตุการณ์ eip6963:requestProvider ณ จุดนี้กระเป๋าเงินสามารถเริ่มต้นขั้นตอนความยินยอม UI โดยถามผู้ใช้ว่าพวกเขายินดีที่จะแบ่งปันที่อยู่กระเป๋าเงินของพวกเขาหรือไม่ วิธีนี้ช่วยให้กระเป๋าเงินเปิดใช้งานคุณสมบัติ "การเชื่อมต่อส่วนตัว" อย่างไรก็ตามเมื่อใช้วิธีนี้กระเป๋าเงินยังต้องพิจารณาถึงวิธีตรวจสอบความเข้ากันได้แบบย้อนหลังกับ dApps ที่ไม่รองรับ EIP นี้

คุณสมบัติของการปรับปรุง EIP-6963

การทำงานร่วมกันของกระเป๋าทราบง่ายขึ้น

EIP-6963 ที่เสนอในพฤษภาคม 2023 เป็นมาตรฐาน Ethereum ใหม่และผ่านในตุลาคมของปีเดียวกัน มีจุดมุ่งหมายที่จะแก้ไขปัญหาของมาตรฐานที่ไม่ได้กำหนดอย่างชัดเจนเช่น window.ethereum มาตรฐานนี้มีการนำเสนอกลไกการค้นหาผู้ให้บริการ multi-injection ซึ่งช่วยให้ dApps ค้นพบและเชื่อมต่อกับกระเป๋าทั้งหมดที่ติดตั้งบนเบราว์เซอร์ของผู้ใช้ได้อย่างเชื่อถือได้อุทิศ นี้ช่วยแก้ปัญหาของข้อจำกัดและข้อขัดแย้งที่เกิดขึ้นจากวิธีการ传统 ในระบบเทียบกับวิธีการ传统ของ window.ethereum EIP-6963 ทำให้กระบวนการค้นหากระเป๋าง่ายขึ้น สนับสนุนการใช้งานร่วมกันของส่วนขยายกระเป๋าหลายตัวในเบราว์เซอร์เดียวกัน นวัตกรรมนี้เสริมสร้างความสามารถในการทำงานร่วมกันของนิเวศ Ethereum และปรับปรุงประสบการณ์ของผู้ใช้อย่างมาก

คำจำกัดความชัดเจนและประสบการณ์ของผู้ใช้ที่ดีขึ้น

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

ความเสี่ยงด้านความปลอดภัยที่เป็นไปได้

การออกแบบ EIP-6963 ทําให้เกิดช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น ด้วยการให้รายการกระเป๋าเงินที่ลงทะเบียนทั้งหมดจะช่วยอํานวยความสะดวกในการโต้ตอบระหว่าง dApps และผู้ใช้ แต่อาจถูกนําไปใช้ในทางที่ผิดโดยแอปพลิเคชันที่เป็นอันตราย dApps ที่เป็นอันตรายอาจอ่านรายการกระเป๋าเงินที่ติดตั้งโดยผู้ใช้โดยอนุมานกิจกรรมบล็อกเชนหรือการกระจายสินทรัพย์ หากกลไกการลงทะเบียนบริการขาดการตรวจสอบที่เข้มงวดกระเป๋าเงินที่เป็นอันตรายอาจปลอมตัวเป็นผู้ให้บริการที่ถูกต้องตามกฎหมายหลอกให้ผู้ใช้ให้สิทธิ์การเข้าถึงและขโมยทรัพย์สิน ดังนั้นจึงจําเป็นต้องมีมาตรการรักษาความปลอดภัยเพิ่มเติม (เช่น ความยินยอมของผู้ใช้และการตรวจสอบการลงทะเบียน)

ความซับซ้อนในประสบการณ์ของผู้ใช้

ในแง่ของประสบการณ์ของผู้ใช้การสนับสนุนหลายกระเป๋าเงินของ EIP-6963 ในขณะที่การปรับปรุงที่สําคัญอาจเพิ่มความซับซ้อน ตัวอย่างเช่นหลังจากที่ผู้ใช้ติดตั้งกระเป๋าเงินหลายใบ dApp อาจนําเสนอตัวเลือกมากเกินไปทําให้ผู้ใช้สับสนเกี่ยวกับกระเป๋าเงินที่จะเลือก นอกจากนี้กระเป๋าเงินบางใบอาจมีชื่อหรือโลโก้ที่ไม่ใช้งานง่ายเพิ่มความยากลําบากในการระบุตัวตน สําหรับผู้ใช้ที่ต้องการเปลี่ยนกระเป๋าเงินบ่อยๆความยืดหยุ่นนี้อาจกลายเป็นภาระมากกว่าผลประโยชน์

สรุป

EIP-6963 นําเสนอแนวทางที่ขับเคลื่อนด้วยเหตุการณ์เพื่อแก้ไขปัญหาต่างๆเช่นการอยู่ร่วมกันแบบหลายกระเป๋าเงินความขัดแย้งของเนมสเปซและการปกป้องความเป็นส่วนตัวของผู้ใช้ในแอปพลิเคชัน Web3 ซึ่งช่วยปรับปรุงประสบการณ์ของผู้ใช้อย่างมีนัยสําคัญ กลไกมาตรฐานนี้ช่วยให้ dApps สามารถค้นหาและเชื่อมต่อกระเป๋าเงินหลายใบโดยอัตโนมัติโดยไม่ต้องสลับด้วยตนเองในขณะที่หลีกเลี่ยงการแข่งขันและความขัดแย้งระหว่างกระเป๋าเงินเพิ่มความราบรื่นและความเสถียรของการเชื่อมต่อ EIP-6963 ยังเสริมสร้างความปลอดภัยโดยการแช่แข็งวัตถุผู้ให้บริการกระเป๋าเงินเพื่อป้องกันการปลอมแปลงลดความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น ในแง่ของความเป็นส่วนตัวผู้ใช้สามารถเลือกได้ว่าจะแชร์ที่อยู่กระเป๋าเงินป้องกันการรั่วไหลของข้อมูลประจําตัวและการพิมพ์ลายนิ้วมือ EIP-6963 รักษาความเข้ากันได้แบบย้อนหลังกับอินเทอร์เฟซรุ่นเก่าทําให้มั่นใจได้ว่าการเปลี่ยนแปลงที่ราบรื่นสําหรับระบบที่มีอยู่ในขณะที่ลดความซับซ้อนของงานสําหรับนักพัฒนา dApp และปรับปรุงการสนับสนุนข้ามแพลตฟอร์มและหลายอุปกรณ์ โดยรวมแล้ว EIP-6963 ปรับปรุงการทํางานร่วมกันความปลอดภัยและการปกป้องความเป็นส่วนตัวใน Web3 และมอบเครื่องมือที่มีประสิทธิภาพมากขึ้นให้กับนักพัฒนาซึ่งส่งเสริมการพัฒนาระบบนิเวศ Web3 ต่อไป

Author: Rachel
Translator: Piper
Reviewer(s): Edward、Piccolo、Elisa
Translation Reviewer(s): Ashely、Joyce
* The information is not intended to be and does not constitute financial advice or any other recommendation of any sort offered or endorsed by Gate.io.
* This article may not be reproduced, transmitted or copied without referencing Gate.io. Contravention is an infringement of Copyright Act and may be subject to legal action.
Start Now
Sign up and get a
$100
Voucher!