ในระบบนิเวศบล็อกเชนกระเป๋าเงินส่วนขยายเบราว์เซอร์เป็นแอปพลิเคชันกระเป๋าเงินที่มีอยู่ในรูปแบบของปลั๊กอินเบราว์เซอร์ อนุญาตให้ผู้ใช้โต้ตอบกับบัญชีบล็อกเชนได้โดยตรงภายใน 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 แต่ยังคงมีข้อจำกัดที่ชัดเจนบางประการ:
เพื่อแก้ปัญหานี้ชุมชนได้เสนอ EIP-6963 (Browser Extension Wallet Discovery Standard) ซึ่งเป็นแผนการปรับปรุงกระเป๋าเงินส่วนขยายเบราว์เซอร์ที่มุ่งเพิ่มประสิทธิภาพการค้นพบกระเป๋าเงินและกลไกการโต้ตอบ โซลูชันนี้มีจุดมุ่งหมายเพื่อลดอุปสรรคในการเข้าสําหรับผู้ให้บริการกระเป๋าเงินรายใหม่ส่งเสริมการแข่งขันที่เป็นธรรมและปรับปรุงประสบการณ์ของผู้ใช้บนเครือข่าย Ethereum โดยเฉพาะอย่างยิ่งมันแนะนําชุดของเหตุการณ์หน้าต่างและให้โปรโตคอลการสื่อสารแบบสองทิศทางทําให้ไลบรารีและสคริปต์ Ethereum ที่ฉีดโดยส่วนขยายเบราว์เซอร์สามารถโต้ตอบได้ สิ่งนี้จะช่วยให้ผู้ใช้สามารถเลือกกระเป๋าเงินที่ต้องการตามความต้องการของพวกเขาปรับปรุงประสบการณ์โดยรวม
การทำงานร่วมกัน DNS ย้อน (RDNS) ให้ความมั่นคงของตัวติดต่อผู้ให้บริการกระเป๋าเงินในขณะเดียวกันป้องกันความขัดแย้งของเนมสเปซ EIP-6963 เน้นที่จะให้ความสำคัญกับกฎของ RDNS ที่ควรปฏิบัติตามเช่นรูปแบบโดเมนที่ถูกต้องและส่วนของโดเมนที่ควบคุมโดยผู้ให้บริการ นอกจากนี้ยังเน้นว่า dApps ไม่ควรพึ่งพาค่า RDNS สำหรับการตรวจหาคุณลักษณะเพื่อหลีกเลี่ยงความเป็นไปได้ของการกระทำที่ถูกปลอมแปลงหรือเติบโต อินเทอร์เฟซ ProviderDetail ของ EIP-6963 ให้ dApps ด้วยข้อมูลเพิ่มเติมของผู้ให้บริการกระเป๋าเงินเพื่อช่วยในการปฏิสัมพันธ์กับกระเป๋าเงิน
EIP6963ProviderDetail เป็นอินเทอร์เฟซที่ใช้ในการประกาศและอธิบายข้อมูลผู้ให้บริการกระเป๋า โดยการรวมคุณสมบัติเช่น ข้อมูล (เมตาดาต้าของกระเป๋า) และผู้ให้บริการ (อินเทอร์เฟซผู้ให้บริการกระเป๋า) มันช่วยให้ dApps ได้รับข้อมูลละเอียดเกี่ยวกับกระเป๋าและจับความสัมพันธ์กับพวกเขาผ่านอินเทอร์เฟซมาตรฐาน อินเทอร์เฟซนี้เป็นรากฐานสำคัญสำหรับการบรรลุการเข้ากันได้และการทำงานร่วมกันระหว่างแอปพลิเคชันที่ไม่มีเซิร์ฟเวอร์และกระเป๋าต่าง ๆ
กลไกเหตุการณ์ทำให้ dApps และ กระเป๋า สามารถค้นพบและปฏิสัมพันธ์กันได้โดยไม่ต้องขึ้นอยู่กับลำดับการดำเนินงานที่คงที่ นี้ช่วยให้การค้นพบและปฏิสัมพันธ์ระหว่าง dApps และ กระเป๋า ไม่ได้รับผลกระทบจากลำดับการดำเนินงาน ซึ่งจะป้องกันความขัดแย้งและข้อผิดพลาด
EIP6963AnnounceProviderEvent: เหตุการณ์นี้ใช้โดยกระเป๋าเพื่อประกาศความมีอยู่ของพวกเขา มันประกอบด้วยข้อมูลเกี่ยวกับกระเป๋า (EIP6963ProviderDetail) และอินเตอร์เฟซของกระเป๋า (EIP1193Provider) คุณสมบัติที่เชื่อมโยงของเหตุการณ์นี้คือข้อมูลพื้นฐานที่ถูกติดตามของกระเป๋า (โดยใช้ Object.freeze()) เพื่อให้แน่ใจถึงความไม่เปลี่ยนแปลง
เหตุการณ์ EIP6963RequestProviderEvent: เหตุการณ์นี้ใช้โดย dApps เพื่อขอให้ผู้ให้บริการกระเป๋าเงิน แอพพลิเคชั่นใช้เหตุการณ์นี้เพื่อแจ้งให้กระเป๋าเงินทราบว่าพร้อมและขอร้องการติดต่อ
เนื่องจากลำดับการดำเนินการที่ไม่แน่นอนของโค้ด dApp และ wallet อาจเกิดเงื่อนไขแข่งขันได้ กลไกเหตุการณ์ถูกออกแบบมาเพื่อให้แน่ใจว่า dApp และ wallets สามารถจัดการกับเหตุการณ์อย่างถูกต้องเมื่อพวกเขาค้นพบกัน กระเป๋าสตางค์อาจส่งเหตุการณ์ประกาศไว้ก่อน ในขณะที่ 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
ส่วนขยายเบราว์เซอร์โดยเฉพาะส่วนขยายกระเป๋าเงินมีความสามารถในการแก้ไขเนื้อหาของหน้าและอ็อบเจ็กต์ของผู้ให้บริการซึ่งเป็นคุณสมบัติหลักของการออกแบบ ออบเจ็กต์ผู้ให้บริการของกระเป๋าเงินต่างๆถือเป็นอินเทอร์เฟซที่เชื่อถือได้สูงสําหรับการส่งข้อมูลธุรกรรม เพื่อป้องกันการปรับเปลี่ยนการโต้ตอบระหว่าง dApp และ wallet โดยไม่ได้ตั้งใจโดยหน้าเว็บหรือส่วนขยายอื่น ๆ แนวทางปฏิบัติที่ดีที่สุดคือการตรึงวัตถุ EIP1193Provider โดยใช้ Object.freeze() ก่อนที่กระเป๋าเงินจะส่งเหตุการณ์ eip6963:announceProvider สิ่งนี้ทําให้มั่นใจได้ว่าวัตถุไม่สามารถแก้ไขได้ อย่างไรก็ตามในบางกรณีความเข้ากันได้ของเว็บอาจต้องมีการปรับเปลี่ยนวัตถุนี้ ในกรณีเช่นนี้ผู้ดําเนินการกระเป๋าเงินจําเป็นต้องสร้างสมดุลระหว่างความปลอดภัยและความเข้ากันได้ของเว็บ
dApps ควรตรวจจับอย่างใจความว่าคุณสมบัติหรือฟังก์ชันของวัตถุผู้ให้บริการกระเป๋าถูกแก้ไขหรือปรับเปลี่ยนเพื่อป้องกันการลอกเลียหรือการเปลี่ยนแปลงของกระเป๋าอื่น ๆ หนึ่งวิธีในการตรวจจับการลอกเลียคือด้วยการตรวจสอบว่าคุณสมบัติ uuid ในวัตถุ EIP6963ProviderInfo สองอย่างเป็นไปได้ dApps และห้องสมุดค้นคว้าของพวกเขาควรพิจารณาวิธีการแก้ไขอื่น ๆ ที่เป็นไปได้และดำเนินมาตรการป้องกันเพิ่มเติมเพื่อป้องกันพฤติกรรมเช่นนี้เพื่อให้มั่นใจในความปลอดภัยของผู้ใช้
การใช้รูปภาพ SVG อาจทำให้เกิดการโจมตี cross-site scripting (XSS) เนื่องจากรูปภาพ SVG สามารถมีโค้ด JavaScript และโค้ดนี้จะถูกเรียกใช้ในบริบทของหน้าเพจ และอาจมีโอกาสเปลี่ยนแปลงเนื้อหาของหน้าเพจหรือมีผลต่อกระเป๋าเงินอื่น ดังนั้น เมื่อแสดงไอคอน แอปพลิเคชันบล็อกเชนต้องพิจารณาวิธีการจัดการกับความเสี่ยงด้านความปลอดภัยเหล่านี้เพื่อป้องกันรูปภาพที่ไม่ดีจากการใช้เป็นเทคนิคการปกปิด ซึ่งอาจซ่อนการปรับเปลี่ยนที่ไม่ดีของหน้าเพจหรือกระเป๋าเงิน
ข้อดีอย่างหนึ่งของกลไกลูปเหตุการณ์พร้อมกันที่ใช้ในการออกแบบนี้คือทั้ง dApp และกระเป๋าเงินสามารถเริ่มกระบวนการเพื่อประกาศผู้ให้บริการได้ ดังนั้นผู้ดําเนินการกระเป๋าเงินสามารถเลือกได้ว่าจะประกาศตัวเองกับทุกหน้าหรือใช้มาตรการอื่น ๆ เพื่อลดโอกาสที่ผู้ใช้จะถูกพิมพ์ลายนิ้วมือผ่านวัตถุ window.ethereum ที่ฉีด ทางเลือกหนึ่งที่เป็นไปได้คือให้กระเป๋าเงินชะลอการฉีดออบเจ็กต์ของผู้ให้บริการจนกว่า dApp จะประกาศเหตุการณ์ eip6963:requestProvider ณ จุดนี้กระเป๋าเงินสามารถเริ่มต้นขั้นตอนความยินยอม UI โดยถามผู้ใช้ว่าพวกเขายินดีที่จะแบ่งปันที่อยู่กระเป๋าเงินของพวกเขาหรือไม่ วิธีนี้ช่วยให้กระเป๋าเงินเปิดใช้งานคุณสมบัติ "การเชื่อมต่อส่วนตัว" อย่างไรก็ตามเมื่อใช้วิธีนี้กระเป๋าเงินยังต้องพิจารณาถึงวิธีตรวจสอบความเข้ากันได้แบบย้อนหลังกับ dApps ที่ไม่รองรับ EIP นี้
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 ต่อไป
Share
ในระบบนิเวศบล็อกเชนกระเป๋าเงินส่วนขยายเบราว์เซอร์เป็นแอปพลิเคชันกระเป๋าเงินที่มีอยู่ในรูปแบบของปลั๊กอินเบราว์เซอร์ อนุญาตให้ผู้ใช้โต้ตอบกับบัญชีบล็อกเชนได้โดยตรงภายใน 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 แต่ยังคงมีข้อจำกัดที่ชัดเจนบางประการ:
เพื่อแก้ปัญหานี้ชุมชนได้เสนอ EIP-6963 (Browser Extension Wallet Discovery Standard) ซึ่งเป็นแผนการปรับปรุงกระเป๋าเงินส่วนขยายเบราว์เซอร์ที่มุ่งเพิ่มประสิทธิภาพการค้นพบกระเป๋าเงินและกลไกการโต้ตอบ โซลูชันนี้มีจุดมุ่งหมายเพื่อลดอุปสรรคในการเข้าสําหรับผู้ให้บริการกระเป๋าเงินรายใหม่ส่งเสริมการแข่งขันที่เป็นธรรมและปรับปรุงประสบการณ์ของผู้ใช้บนเครือข่าย Ethereum โดยเฉพาะอย่างยิ่งมันแนะนําชุดของเหตุการณ์หน้าต่างและให้โปรโตคอลการสื่อสารแบบสองทิศทางทําให้ไลบรารีและสคริปต์ Ethereum ที่ฉีดโดยส่วนขยายเบราว์เซอร์สามารถโต้ตอบได้ สิ่งนี้จะช่วยให้ผู้ใช้สามารถเลือกกระเป๋าเงินที่ต้องการตามความต้องการของพวกเขาปรับปรุงประสบการณ์โดยรวม
การทำงานร่วมกัน DNS ย้อน (RDNS) ให้ความมั่นคงของตัวติดต่อผู้ให้บริการกระเป๋าเงินในขณะเดียวกันป้องกันความขัดแย้งของเนมสเปซ EIP-6963 เน้นที่จะให้ความสำคัญกับกฎของ RDNS ที่ควรปฏิบัติตามเช่นรูปแบบโดเมนที่ถูกต้องและส่วนของโดเมนที่ควบคุมโดยผู้ให้บริการ นอกจากนี้ยังเน้นว่า dApps ไม่ควรพึ่งพาค่า RDNS สำหรับการตรวจหาคุณลักษณะเพื่อหลีกเลี่ยงความเป็นไปได้ของการกระทำที่ถูกปลอมแปลงหรือเติบโต อินเทอร์เฟซ ProviderDetail ของ EIP-6963 ให้ dApps ด้วยข้อมูลเพิ่มเติมของผู้ให้บริการกระเป๋าเงินเพื่อช่วยในการปฏิสัมพันธ์กับกระเป๋าเงิน
EIP6963ProviderDetail เป็นอินเทอร์เฟซที่ใช้ในการประกาศและอธิบายข้อมูลผู้ให้บริการกระเป๋า โดยการรวมคุณสมบัติเช่น ข้อมูล (เมตาดาต้าของกระเป๋า) และผู้ให้บริการ (อินเทอร์เฟซผู้ให้บริการกระเป๋า) มันช่วยให้ dApps ได้รับข้อมูลละเอียดเกี่ยวกับกระเป๋าและจับความสัมพันธ์กับพวกเขาผ่านอินเทอร์เฟซมาตรฐาน อินเทอร์เฟซนี้เป็นรากฐานสำคัญสำหรับการบรรลุการเข้ากันได้และการทำงานร่วมกันระหว่างแอปพลิเคชันที่ไม่มีเซิร์ฟเวอร์และกระเป๋าต่าง ๆ
กลไกเหตุการณ์ทำให้ dApps และ กระเป๋า สามารถค้นพบและปฏิสัมพันธ์กันได้โดยไม่ต้องขึ้นอยู่กับลำดับการดำเนินงานที่คงที่ นี้ช่วยให้การค้นพบและปฏิสัมพันธ์ระหว่าง dApps และ กระเป๋า ไม่ได้รับผลกระทบจากลำดับการดำเนินงาน ซึ่งจะป้องกันความขัดแย้งและข้อผิดพลาด
EIP6963AnnounceProviderEvent: เหตุการณ์นี้ใช้โดยกระเป๋าเพื่อประกาศความมีอยู่ของพวกเขา มันประกอบด้วยข้อมูลเกี่ยวกับกระเป๋า (EIP6963ProviderDetail) และอินเตอร์เฟซของกระเป๋า (EIP1193Provider) คุณสมบัติที่เชื่อมโยงของเหตุการณ์นี้คือข้อมูลพื้นฐานที่ถูกติดตามของกระเป๋า (โดยใช้ Object.freeze()) เพื่อให้แน่ใจถึงความไม่เปลี่ยนแปลง
เหตุการณ์ EIP6963RequestProviderEvent: เหตุการณ์นี้ใช้โดย dApps เพื่อขอให้ผู้ให้บริการกระเป๋าเงิน แอพพลิเคชั่นใช้เหตุการณ์นี้เพื่อแจ้งให้กระเป๋าเงินทราบว่าพร้อมและขอร้องการติดต่อ
เนื่องจากลำดับการดำเนินการที่ไม่แน่นอนของโค้ด dApp และ wallet อาจเกิดเงื่อนไขแข่งขันได้ กลไกเหตุการณ์ถูกออกแบบมาเพื่อให้แน่ใจว่า dApp และ wallets สามารถจัดการกับเหตุการณ์อย่างถูกต้องเมื่อพวกเขาค้นพบกัน กระเป๋าสตางค์อาจส่งเหตุการณ์ประกาศไว้ก่อน ในขณะที่ 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
ส่วนขยายเบราว์เซอร์โดยเฉพาะส่วนขยายกระเป๋าเงินมีความสามารถในการแก้ไขเนื้อหาของหน้าและอ็อบเจ็กต์ของผู้ให้บริการซึ่งเป็นคุณสมบัติหลักของการออกแบบ ออบเจ็กต์ผู้ให้บริการของกระเป๋าเงินต่างๆถือเป็นอินเทอร์เฟซที่เชื่อถือได้สูงสําหรับการส่งข้อมูลธุรกรรม เพื่อป้องกันการปรับเปลี่ยนการโต้ตอบระหว่าง dApp และ wallet โดยไม่ได้ตั้งใจโดยหน้าเว็บหรือส่วนขยายอื่น ๆ แนวทางปฏิบัติที่ดีที่สุดคือการตรึงวัตถุ EIP1193Provider โดยใช้ Object.freeze() ก่อนที่กระเป๋าเงินจะส่งเหตุการณ์ eip6963:announceProvider สิ่งนี้ทําให้มั่นใจได้ว่าวัตถุไม่สามารถแก้ไขได้ อย่างไรก็ตามในบางกรณีความเข้ากันได้ของเว็บอาจต้องมีการปรับเปลี่ยนวัตถุนี้ ในกรณีเช่นนี้ผู้ดําเนินการกระเป๋าเงินจําเป็นต้องสร้างสมดุลระหว่างความปลอดภัยและความเข้ากันได้ของเว็บ
dApps ควรตรวจจับอย่างใจความว่าคุณสมบัติหรือฟังก์ชันของวัตถุผู้ให้บริการกระเป๋าถูกแก้ไขหรือปรับเปลี่ยนเพื่อป้องกันการลอกเลียหรือการเปลี่ยนแปลงของกระเป๋าอื่น ๆ หนึ่งวิธีในการตรวจจับการลอกเลียคือด้วยการตรวจสอบว่าคุณสมบัติ uuid ในวัตถุ EIP6963ProviderInfo สองอย่างเป็นไปได้ dApps และห้องสมุดค้นคว้าของพวกเขาควรพิจารณาวิธีการแก้ไขอื่น ๆ ที่เป็นไปได้และดำเนินมาตรการป้องกันเพิ่มเติมเพื่อป้องกันพฤติกรรมเช่นนี้เพื่อให้มั่นใจในความปลอดภัยของผู้ใช้
การใช้รูปภาพ SVG อาจทำให้เกิดการโจมตี cross-site scripting (XSS) เนื่องจากรูปภาพ SVG สามารถมีโค้ด JavaScript และโค้ดนี้จะถูกเรียกใช้ในบริบทของหน้าเพจ และอาจมีโอกาสเปลี่ยนแปลงเนื้อหาของหน้าเพจหรือมีผลต่อกระเป๋าเงินอื่น ดังนั้น เมื่อแสดงไอคอน แอปพลิเคชันบล็อกเชนต้องพิจารณาวิธีการจัดการกับความเสี่ยงด้านความปลอดภัยเหล่านี้เพื่อป้องกันรูปภาพที่ไม่ดีจากการใช้เป็นเทคนิคการปกปิด ซึ่งอาจซ่อนการปรับเปลี่ยนที่ไม่ดีของหน้าเพจหรือกระเป๋าเงิน
ข้อดีอย่างหนึ่งของกลไกลูปเหตุการณ์พร้อมกันที่ใช้ในการออกแบบนี้คือทั้ง dApp และกระเป๋าเงินสามารถเริ่มกระบวนการเพื่อประกาศผู้ให้บริการได้ ดังนั้นผู้ดําเนินการกระเป๋าเงินสามารถเลือกได้ว่าจะประกาศตัวเองกับทุกหน้าหรือใช้มาตรการอื่น ๆ เพื่อลดโอกาสที่ผู้ใช้จะถูกพิมพ์ลายนิ้วมือผ่านวัตถุ window.ethereum ที่ฉีด ทางเลือกหนึ่งที่เป็นไปได้คือให้กระเป๋าเงินชะลอการฉีดออบเจ็กต์ของผู้ให้บริการจนกว่า dApp จะประกาศเหตุการณ์ eip6963:requestProvider ณ จุดนี้กระเป๋าเงินสามารถเริ่มต้นขั้นตอนความยินยอม UI โดยถามผู้ใช้ว่าพวกเขายินดีที่จะแบ่งปันที่อยู่กระเป๋าเงินของพวกเขาหรือไม่ วิธีนี้ช่วยให้กระเป๋าเงินเปิดใช้งานคุณสมบัติ "การเชื่อมต่อส่วนตัว" อย่างไรก็ตามเมื่อใช้วิธีนี้กระเป๋าเงินยังต้องพิจารณาถึงวิธีตรวจสอบความเข้ากันได้แบบย้อนหลังกับ dApps ที่ไม่รองรับ EIP นี้
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 ต่อไป