a16z: เหตุใดประสิทธิภาพของโซ่จึงวัดได้ยาก
บทความนี้มาจาก a16zบทความนี้มาจาก

ผู้เขียนต้นฉบับ: Joseph Bonneau รวบรวมโดยนักแปล Odaily Katie Koo
เราต้องการแนวทางที่เหมาะสมและละเอียดยิ่งขึ้นในการวัดและเปรียบเทียบประสิทธิภาพ โดยแบ่งประสิทธิภาพออกเป็นส่วนประกอบและเปรียบเทียบการแลกเปลี่ยนระหว่างแกนข้อมูลต่างๆ บทความนี้กำหนดความหมายของประสิทธิภาพของบล็อกเชนและสรุปความท้าทาย และให้แนวทางและหลักการสำคัญที่ต้องคำนึงถึงเมื่อประเมินประสิทธิภาพของบล็อกเชน
ชื่อเรื่องรอง
ความสามารถในการปรับขนาดเทียบกับประสิทธิภาพ
ประการแรก ความสามารถในการปรับขนาดและประสิทธิภาพมีความหมายทางวิทยาการคอมพิวเตอร์มาตรฐานที่มักถูกนำไปใช้ในทางที่ผิดในบล็อกเชน ประสิทธิภาพวัดสิ่งที่ระบบสามารถบรรลุได้ในปัจจุบัน ดังที่เราจะกล่าวถึงด้านล่าง ตัวชี้วัดประสิทธิภาพอาจรวมถึงธุรกรรมต่อวินาทีหรือเวลากลางในการยืนยันธุรกรรม ในทางกลับกัน ความสามารถในการปรับขนาดจะวัดความสามารถของระบบในการเพิ่มประสิทธิภาพโดยการเพิ่มทรัพยากร
ความแตกต่างมีความสำคัญ: หากกำหนดอย่างถูกต้อง หลายวิธีในการปรับปรุงประสิทธิภาพไม่ได้ปรับปรุงความสามารถในการปรับขนาดเลย ตัวอย่างง่ายๆ คือการใช้รูปแบบลายเซ็นดิจิทัลที่มีประสิทธิภาพมากกว่า เช่น ลายเซ็น BLS ซึ่งมีขนาดประมาณครึ่งหนึ่งของลายเซ็น Schnorr หรือ ECDSA หาก Bitcoin เปลี่ยนจาก ECDSA เป็น BLS จำนวนธุรกรรมต่อบล็อกอาจเพิ่มขึ้น 20-30% ซึ่งจะปรับปรุงประสิทธิภาพในชั่วข้ามคืน แต่เราสามารถทำได้เพียงครั้งเดียว - ไม่มีรูปแบบลายเซ็นที่มีประสิทธิภาพพื้นที่มากให้สลับ (ลายเซ็น BLS สามารถรวมเข้าด้วยกันเพื่อประหยัดพื้นที่มากขึ้น แต่นั่นเป็นเคล็ดลับอีกอย่างหนึ่งที่ใช้ครั้งเดียว)
เทคนิค one-shot อื่นๆ บางอย่าง (เช่น SegWit) สามารถใช้ในบล็อกเชนได้เช่นกัน แต่คุณต้องมีสถาปัตยกรรมที่ปรับขนาดได้สำหรับการปรับปรุงประสิทธิภาพอย่างต่อเนื่อง ซึ่งการเพิ่มทรัพยากรจะช่วยปรับปรุงประสิทธิภาพเมื่อเวลาผ่านไป นี่เป็นแนวคิดทั่วไปสำหรับระบบคอมพิวเตอร์อื่น ๆ เช่นการสร้างเว็บเซิร์ฟเวอร์ ด้วยเทคนิคทั่วไปบางประการ คุณสามารถสร้างเซิร์ฟเวอร์ที่ทำงานได้อย่างรวดเร็ว แต่ท้ายที่สุดแล้ว จำเป็นต้องมีสถาปัตยกรรมหลายเซิร์ฟเวอร์เพื่อให้ทันกับความต้องการที่เพิ่มขึ้นโดยการเพิ่มเซิร์ฟเวอร์เพิ่มเติมอย่างต่อเนื่อง
ความสามารถในการขยายขนาดจำเป็นต้องใช้ประโยชน์จากความเท่าเทียม ในพื้นที่ blockchain การปรับขนาด L1 ดูเหมือนจะต้องใช้ส้อมหรือสิ่งที่คล้ายกับส้อม แนวคิดพื้นฐานของการ Forking คือการแบ่งสถานะออกเป็นชิ้นๆ เพื่อให้ตัวตรวจสอบความถูกต้องที่แตกต่างกันสามารถประมวลผลได้อย่างอิสระ ซึ่งตรงกับคำจำกัดความของความสามารถในการปรับขนาดได้เป็นอย่างดี มีตัวเลือกเพิ่มเติมที่ L2 ที่อนุญาตให้เพิ่มการประมวลผลแบบขนาน รวมถึงแชนเนลนอกเครือข่าย เซิร์ฟเวอร์แบบโรลอัพ และไซด์เชน
ชื่อเรื่องรอง
เวลาแฝงเทียบกับปริมาณงาน
แต่การวัดและเปรียบเทียบเวลาแฝงและปริมาณงานนั้นซับซ้อน นอกจากนี้ ผู้ใช้แต่ละคนไม่สนใจเกี่ยวกับปริมาณงานมากนัก (เป็นเมตริกทั่วทั้งระบบ) สิ่งที่พวกเขาสนใจจริงๆ คือค่า latency และค่าธรรมเนียมการทำธุรกรรม โดยเฉพาะอย่างยิ่งธุรกรรมของพวกเขาได้รับการยืนยันอย่างรวดเร็วและถูกที่สุดเท่าที่จะเป็นไปได้ ในขณะที่ระบบคอมพิวเตอร์อื่น ๆ จำนวนมากได้รับการประเมินตามต้นทุน/ประสิทธิภาพเช่นกัน ค่าธรรมเนียมการทำธุรกรรมเป็นแกนประสิทธิภาพใหม่สำหรับระบบบล็อกเชนที่ไม่มีอยู่จริงในระบบคอมพิวเตอร์แบบดั้งเดิม
ชื่อเรื่องรอง
ความท้าทายของการวัดเวลาแฝง
ความล่าช้าดูเหมือนง่ายในตอนแรก: ใช้เวลานานเท่าใดในการยืนยันธุรกรรม แต่มีหลายวิธีในการตอบคำถามนี้
ขั้นแรก เราสามารถวัดความล่าช้าระหว่างจุดเวลาต่างๆ และรับผลลัพธ์ที่แตกต่างกันได้ ตัวอย่างเช่น เราจะเริ่มวัดเวลาแฝงเมื่อผู้ใช้กดปุ่ม "ส่ง" ภายในเครื่อง หรือเมื่อธุรกรรมถึง mempool หรือไม่ เราจะหยุดนับเวลาเมื่อธุรกรรมอยู่ในบล็อกที่เสนอ หรือเมื่อบล็อกได้รับการยืนยันโดยหนึ่งหรือหกบล็อกที่ตามมาหรือไม่
วิธีการที่พบมากที่สุดคือการวัดเวลาจากเวลาที่ผู้ใช้เผยแพร่การทำธุรกรรมเป็นครั้งแรกจนถึงเวลาที่ "ยืนยัน" อย่างมีเหตุผลจากมุมมองของผู้ตรวจสอบความถูกต้อง แน่นอน ผู้ค้าที่แตกต่างกันอาจใช้เกณฑ์การยอมรับที่แตกต่างกัน และแม้แต่ผู้ค้ารายเดียวก็อาจใช้เกณฑ์ที่แตกต่างกัน ทั้งนี้ขึ้นอยู่กับจำนวนธุรกรรม
แนวทางที่มีผู้ตรวจสอบเป็นศูนย์กลางละเลยสิ่งสำคัญบางประการในทางปฏิบัติ ประการแรก จะไม่สนใจเวลาแฝงบนเครือข่ายเพียร์ทูเพียร์ (ไคลเอ็นต์ใช้เวลานานเท่าใดในการเผยแพร่ธุรกรรมจนกว่าโหนดส่วนใหญ่จะได้ยิน) และเวลาแฝงฝั่งไคลเอ็นต์ (ใช้เวลานานเท่าใดในการเตรียมการทำธุรกรรม บนเครื่องของลูกค้าหรือไม่) ความล่าช้าในฝั่งไคลเอ็นต์นั้นไม่น่าเป็นไปได้และคาดการณ์ได้สำหรับธุรกรรมง่ายๆ เช่น การลงนามในการชำระเงิน Ethereum แต่อาจมีความสำคัญสำหรับกรณีที่ซับซ้อนกว่า เช่น การพิสูจน์ว่าธุรกรรม Zcash ที่มีการป้องกันนั้นถูกต้อง
แม้ว่าเราจะปรับกรอบเวลาให้เป็นมาตรฐานซึ่งเรากำลังพยายามวัดเวลาแฝง คำตอบนั้นขึ้นอยู่กับ จนถึงปัจจุบัน ไม่มีระบบ cryptocurrency ใดที่มีเวลาแฝงในการทำธุรกรรมคงที่ กฎพื้นฐานง่ายๆ คือ:
เวลาแฝงคือการกระจาย ไม่ใช่ตัวเลข
ชุมชนการวิจัยเครือข่ายเข้าใจเรื่องนี้มานานแล้ว การเน้นย้ำเป็นพิเศษอยู่ที่ "หางยาว" ของการกระจาย เนื่องจากเวลาแฝงสูงในการทำธุรกรรมแม้แต่ 0.1% (หรือการสืบค้นเว็บเซิร์ฟเวอร์) อาจส่งผลกระทบอย่างรุนแรงต่อผู้ใช้ปลายทาง
ในบล็อกเชน เวลาแฝงในการยืนยันจะแตกต่างกันไปด้วยเหตุผลหลายประการ:การประมวลผลเป็นชุด:
ธุรกรรมแบบแบทช์ของระบบส่วนใหญ่ในบางรูปแบบ เช่น ในระบบ L1 ส่วนใหญ่ แบทช์ธุรกรรมเป็นบล็อกๆ สิ่งนี้จะทำให้เกิดเวลาแฝงผันแปร เนื่องจากบางธุรกรรมจะต้องรอจนกว่าแบทช์จะเต็ม คนอื่นอาจโชคดีพอที่จะเข้าร่วมเป็นคนสุดท้าย ธุรกรรมเหล่านี้ได้รับการยืนยันทันทีและไม่พบความล่าช้าเพิ่มเติมความแออัดของตัวแปร:
ระบบส่วนใหญ่ประสบปัญหาความแออัด ซึ่งหมายความว่ามีการออกธุรกรรมจำนวนมากเกินกว่าที่ระบบจะสามารถดำเนินการได้ทันที ระดับความแออัดสามารถเปลี่ยนแปลงได้เมื่อมีการถ่ายทอดธุรกรรมในเวลาที่คาดเดาไม่ได้ หรือเมื่ออัตราการทำธุรกรรมใหม่เปลี่ยนแปลงตลอดวันหรือสัปดาห์ หรือเพื่อตอบสนองต่อเหตุการณ์ภายนอก เช่น การเปิดตัว NFT ที่เป็นที่นิยมความแตกต่างของชั้นฉันทามติ:
โดยทั่วไปการยืนยันธุรกรรมที่ L1 ต้องใช้ชุดโหนดแบบกระจายเพื่อให้บรรลุฉันทามติในบล็อก ซึ่งสามารถเพิ่มเวลาแฝงที่ผันแปรได้โดยไม่คำนึงถึงความคับคั่ง ระบบพิสูจน์การทำงานพบบล็อกในเวลาที่คาดเดาไม่ได้ ระบบ PoS ยังสามารถเพิ่มความล่าช้าต่างๆ ได้ (เช่น หากมีโหนดออนไลน์ไม่เพียงพอที่จะจัดตั้งคณะกรรมการในรอบนั้น หรือหากจำเป็นต้องเปลี่ยนความคิดเห็นเพื่อตอบสนองต่อผู้นำที่ล่มสลาย)
ด้วยเหตุผลเหล่านี้ หลักการชี้แนะที่ดีควรเป็น:
การอ้างสิทธิ์เกี่ยวกับเวลาในการตอบสนองควรแสดงการกระจายของเวลายืนยัน ไม่ใช่ตัวเลขเดียวเช่นค่าเฉลี่ยหรือค่ามัธยฐาน
แม้ว่าสถิติสรุป เช่น ค่าเฉลี่ย ค่ามัธยฐาน หรือเปอร์เซ็นไทล์จะเป็นส่วนหนึ่งของภาพ การประเมินระบบอย่างแม่นยำจำเป็นต้องพิจารณาการแจกแจงทั้งหมด ในบางแอปพลิเคชัน หากการกระจายเวลาแฝงค่อนข้างง่าย เวลาแฝงโดยเฉลี่ยสามารถให้ข้อมูลเชิงลึกที่ดีได้ แต่สิ่งนี้แทบจะไม่เคยเกิดขึ้นเลยในสกุลเงินดิจิทัล โดยปกติแล้ว เวลาในการยืนยันจะยาวนานมาก
เครือข่ายช่องทางการชำระเงินเช่น Lightning Network เป็นตัวอย่างที่ดี นี่คือโซลูชันการปรับสเกล L2 แบบคลาสสิก เครือข่ายเหล่านี้ให้การยืนยันการชำระเงินที่รวดเร็วมากเป็นส่วนใหญ่ แต่บางครั้งก็ต้องการการรีเซ็ตช่องซึ่งสามารถเพิ่มเวลาแฝงตามลำดับความสำคัญ
แม้ว่าเราจะมีสถิติที่ดีเกี่ยวกับการกระจายเวลาแฝงที่แน่นอน แต่อาจแตกต่างกันไปตามระบบและความต้องการของระบบที่เปลี่ยนแปลง นอกจากนี้ยังไม่ชัดเจนว่าจะเปรียบเทียบโปรไฟล์เวลาแฝงระหว่างระบบที่แข่งขันกันอย่างไร ตัวอย่างเช่น สมมติว่าระบบยืนยันเวลาแฝงของธุรกรรมที่กระจายเท่าๆ กันระหว่าง 1 ถึง 2 นาที (ค่าเฉลี่ยและค่ามัธยฐาน 90 วินาที) หากระบบการแข่งขันยืนยันธุรกรรมได้ถูกต้อง 95% ภายใน 1 นาที และอีก 5% ภายใน 11 นาที (เฉลี่ย 90 วินาที, ค่ามัธยฐาน 60 วินาที) ระบบไหนดีกว่ากัน? คำตอบคือบางแอปชอบแอปแรกและบางแอปชอบแอปหลัง
เวลาแฝงมีความซับซ้อน ยิ่งรายงานข้อมูลมากเท่าไหร่ก็ยิ่งดีเท่านั้น ตามหลักการแล้ว ควรวัดโปรไฟล์การหน่วงเวลาทั้งหมดภายใต้สภาวะความคับคั่งที่แตกต่างกัน นอกจากนี้ยังเป็นประโยชน์ในการแบ่งเวลาแฝงออกเป็นส่วนประกอบต่างๆ (ภายในเครื่อง เครือข่าย ชุดงาน เวลาแฝงที่สอดคล้องกัน)
ชื่อเรื่องรอง
ความท้าทายของการวัดปริมาณงาน
ปริมาณงานยังดูเหมือนง่ายบนพื้นผิว: ระบบสามารถจัดการธุรกรรมได้กี่รายการต่อวินาที แต่มีปัญหาหลักสองประการ: "ธุรกรรม" คืออะไรกันแน่ และเรากำลังวัดว่าระบบทำอะไรในวันนี้หรืออาจทำอะไรได้บ้าง
ในขณะที่ "การทำธุรกรรมต่อวินาที" (tps) เป็นการวัดประสิทธิภาพของบล็อกเชนโดยพฤตินัย การทำธุรกรรมในฐานะหน่วยวัดนั้นเป็นปัญหา สำหรับระบบที่สามารถตั้งโปรแกรมได้ทั่วไป (สัญญาอัจฉริยะ) หรือแม้แต่ฟังก์ชันการทำงานที่จำกัด เช่น ตัวเลือกการทำธุรกรรมหลายทางของ Bitcoin หรือตัวเลือกการตรวจสอบหลายซิก คำถามพื้นฐานคือ:
ข้อตกลงทั้งหมดไม่ได้สร้างขึ้นเท่ากัน
นี่เป็นเรื่องจริงอย่างชัดเจนใน Ethereum ซึ่งธุรกรรมสามารถรวมรหัสและปรับเปลี่ยนสถานะได้ตามอำเภอใจ แนวคิดของก๊าซใน Ethereum ใช้ในการวัดปริมาณ (และเรียกเก็บเงินสำหรับ) ปริมาณงานโดยรวมที่การทำธุรกรรมกำลังทำอยู่ แต่สิ่งนี้มีความเกี่ยวข้องสูงกับสภาพแวดล้อมการดำเนินการ EVM ไม่มีวิธีที่ง่ายในการเปรียบเทียบจำนวนงานทั้งหมดที่ทำโดยชุดของธุรกรรม EVM กับชุดของธุรกรรม Solana โดยใช้สภาพแวดล้อม BPF การเปรียบเทียบทั้งสองรายการกับธุรกรรม Bitcoin นั้นเป็นเรื่องที่น่าเป็นห่วงไม่แพ้กัน
บล็อกเชนที่แบ่งเลเยอร์ธุรกรรมออกเป็นเลเยอร์ฉันทามติและเลเยอร์การดำเนินการสามารถทำให้สิ่งนี้ชัดเจนยิ่งขึ้น ในเลเยอร์ฉันทามติ (บริสุทธิ์) สามารถวัดปริมาณงานเป็นไบต์ที่เพิ่มลงในเชนต่อหน่วยเวลา ชั้นการดำเนินการมีความซับซ้อนมากขึ้น
เลเยอร์การดำเนินการที่ง่ายขึ้น เช่น เซิร์ฟเวอร์ Rollup ที่รองรับเฉพาะธุรกรรมการชำระเงิน หลีกเลี่ยงความยุ่งยากในการคำนวณเชิงปริมาณ แม้ในกรณีนี้ การชำระเงินจะแตกต่างกันไปตามปริมาณของอินพุตและเอาต์พุต ธุรกรรมช่องทางการชำระเงินอาจแตกต่างกันไปตามจำนวน "ฮ็อป" ที่ต้องการ ซึ่งจะส่งผลต่อปริมาณงาน ทรูพุตของเซิร์ฟเวอร์ค่าสะสมขึ้นอยู่กับว่าชุดของธุรกรรม "เครือข่าย" เป็นชุดการเปลี่ยนแปลงแบบรวมที่มีขนาดเล็กลงได้ดีเพียงใด
ความท้าทายอีกประการหนึ่งในด้านปริมาณงานที่นอกเหนือไปจากการวัดประสิทธิภาพเชิงประจักษ์ในปัจจุบันเพื่อประเมินความสามารถทางทฤษฎี สิ่งนี้แนะนำปัญหาการสร้างแบบจำลองต่าง ๆ เพื่อประเมินความสามารถที่อาจเกิดขึ้น ขั้นแรก เราต้องระบุปริมาณงานธุรกรรมจริงสำหรับชั้นการดำเนินการ ประการที่สอง ระบบที่ใช้งานจริงแทบจะไปไม่ถึงความสามารถทางทฤษฎี โดยเฉพาะระบบบล็อกเชน ด้วยเหตุผลด้านความทนทาน เราต้องการให้การใช้งานโหนดมีความแตกต่างกันและหลากหลายในทางปฏิบัติ (แทนที่จะเป็นไคลเอนต์ทั้งหมดที่ใช้งานซอฟต์แวร์เดียว) สิ่งนี้ทำให้ยากขึ้นในการจำลองทรูพุตบล็อกเชนอย่างแม่นยำ
การอ้างสิทธิ์ปริมาณงานต้องมีการตีความอย่างระมัดระวังของปริมาณงานธุรกรรมและจำนวนตัวตรวจสอบความถูกต้อง (จำนวน การนำไปใช้งาน และการเชื่อมต่อเครือข่าย) หากไม่มีมาตรฐานที่ชัดเจน ปริมาณงานในอดีตจากเครือข่ายยอดนิยมอย่าง Ethereum ก็เพียงพอแล้ว
ชื่อเรื่องรอง
ความหน่วงแฝงและการแลกเปลี่ยนปริมาณงาน
ชื่อเรื่องรอง
ค่าธรรมเนียมการทำธุรกรรม
ค่าธรรมเนียมการทำธุรกรรม
ผู้ใช้ปลายทางให้ความสำคัญกับการแลกเปลี่ยนระหว่างเวลาแฝงและค่าใช้จ่ายมากกว่าระหว่างเวลาแฝงและปริมาณงาน ผู้ใช้ไม่มีเหตุผลในทันทีที่ต้องสนใจเกี่ยวกับปริมาณงานเลย พวกเขาสนใจเพียงความสามารถในการยืนยันการทำธุรกรรมอย่างรวดเร็วและมีค่าธรรมเนียมต่ำที่สุด (ผู้ใช้บางคนสนใจเรื่องค่าธรรมเนียมมากกว่า บางคนสนใจเรื่องเวลาแฝงมากกว่า) ค่าธรรมเนียมที่สูงได้รับอิทธิพลจากปัจจัยหลายประการ:
ความต้องการของตลาดมีมากน้อยเพียงใดในการเทรด?
ทรูพุตโดยรวมที่ระบบได้รับคืออะไร?
รายได้ทั้งหมดที่ระบบมอบให้กับผู้ตรวจสอบความถูกต้องหรือผู้ขุดคือเท่าใด
รายได้นี้คิดจากค่าธรรมเนียมการทำธุรกรรมหรือผลตอบแทนตามอัตราเงินเฟ้อเป็นจำนวนเท่าใด
ปัจจัยสองประการแรกคือเส้นอุปสงค์และอุปทานโดยประมาณที่นำไปสู่ราคาการหักบัญชีของตลาด (แม้ว่าบางคนอ้างว่านักขุด เช่น สหพันธรัฐ ผลักดันค่าธรรมเนียมให้สูงกว่าจุดนี้) อย่างอื่นเท่ากัน ปริมาณงานที่สูงขึ้นควรส่งผลให้ค่าธรรมเนียมลดลง แต่ยังมีปัจจัยอีกมากมายที่ต้องจัดการ
โดยเฉพาะอย่างยิ่ง ประเด็นที่ 3 และ 4 ข้างต้นเป็นปัญหาพื้นฐานในการออกแบบระบบบล็อกเชน แต่เราขาดหลักการที่ดีสำหรับทั้งสองสิ่งนี้ เรามีความเข้าใจบางประการเกี่ยวกับข้อดีและข้อเสียของการให้รางวัลเงินเฟ้อแก่นักขุดเมื่อเทียบกับค่าธรรมเนียมการทำธุรกรรม อย่างไรก็ตาม แม้จะมีการวิเคราะห์เชิงเศรษฐกิจมากมายเกี่ยวกับโปรโตคอลที่สอดคล้องกันของบล็อกเชน แต่เราก็ยังไม่มีรูปแบบที่ได้รับการยอมรับอย่างกว้างขวางว่ารายได้จำนวนเท่าใดที่ต้องส่งไปยังผู้ตรวจสอบความถูกต้อง ระบบส่วนใหญ่ในปัจจุบันสร้างขึ้นจากการเดาที่มีการศึกษาว่ารายได้เท่าไรเพียงพอสำหรับผู้ตรวจสอบความถูกต้องในการทำงานอย่างตรงไปตรงมาโดยไม่ขัดขวางการใช้งานจริงของระบบ ในรูปแบบที่เรียบง่าย จะเห็นได้ว่าค่าใช้จ่ายในการติดตั้งการโจมตี 51% เป็นสัดส่วนโดยตรงกับรางวัลของผู้ตรวจสอบความถูกต้อง
ชื่อเรื่องรอง
สรุปแล้ว
สรุปแล้ว
การประเมินประสิทธิภาพอย่างยุติธรรมและแม่นยำนั้นยาก เช่นเดียวกับการวัดประสิทธิภาพของรถยนต์ เช่นเดียวกับบล็อกเชน ผู้คนต่างสนใจในสิ่งที่แตกต่างกัน เมื่อพูดถึงรถยนต์ ผู้ใช้บางคนสนใจเกี่ยวกับความเร็วสูงสุดหรือการเร่งความเร็ว คนอื่นๆ ให้ความสนใจเกี่ยวกับการสิ้นเปลืองน้ำมันเชื้อเพลิง และคนอื่นๆ ให้ความสนใจเกี่ยวกับความสามารถในการลากจูง ทั้งหมดนี้ไม่ใช่เรื่องง่ายที่จะได้ค่าที่แน่นอน ตัวอย่างเช่น ในสหรัฐอเมริกา หน่วยงานคุ้มครองสิ่งแวดล้อมมีหลักเกณฑ์โดยละเอียดเกี่ยวกับวิธีการประเมินระยะทางของก๊าซและวิธีการแสดงต่อผู้ใช้ที่ตัวแทนจำหน่าย


