ปัญหาของ Blockchain Oracle คืออะไร

Chainlink Thailand
Chainlink Community
3 min readJul 29, 2021

ปัญหาของ Blockchain oracle เป็นหนึ่งในอุปสรรคที่ใหญ่ที่สุดในการเปิดใช้งาน Smart Contract บนเครือข่ายอย่าง Ethereum เพื่อให้ถูกนำไปใช้ในตลาดต่างๆ และเกิดกรณีการใช้งานที่หลากหลาย

ตามที่กล่าวไว้ก่อนหน้านี้ใน Blockchain Education Series ของเรา Smart Contract ที่ทำงานบนบล็อคเชนมีศักยภาพมหาศาลในการกำหนดวิธีการทำงานของฝ่ายต่างๆ ให้เป็นไปตามข้อตกลงที่ทำร่วมกันรวมถึงการแลกเปลี่ยนมูลค่า อย่างไรก็ตามการซื้อขายแลกเปลี่ยนที่ทำงานอยู่นอก blockchain นั้นมีจำนวนมากกว่าที่ทำงานผ่าน smart contract ซึ่งรวมไปถึงการทำงานบนอุปกรณ์ต่างๆ ที่เชื่อมต่ออินเทอร์เนตด้วย ผลพลอยได้ของโครงสร้างพื้นฐานนี้คือมีแหล่งเก็บข้อมูลและ API ที่เพิ่มมากขึ้นเรื่อยๆ และแสดงให้เห็นข้อมูลเชิงลึกเกี่ยวกับวิธีการทำงานต่างๆ เช่น ผลการค้นหาบนอินเทอร์เน็ตที่แสดงหัวข้อสนทนายอดนิยมในสังคมหรือรูปแบบการรับส่งข้อมูลบนอินเทอร์เนตผ่านเซ็นเซอร์ IoT

บทความนี้จะแบ่งออกเป็น 5 ตอนได้แก่

  • นิยามปัญหาของ Oracle
  • กรอบการทำงานของ Oracle
  • ทำไม blockchain อย่าง Ethereum ไม่แก้ปัญหาด้วย native oracle
  • ปัญหาด้านการรักษาความปลอดภัยของ oracle แบบไม่กระจายอำนาจ
  • แนะนำให้รู้จัก Chainlink มาตราฐานของ oracle ที่ปลอดภัย เชื่อถือได้และกระจายอำนาจ

ปัญหาของ Oracle

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

อย่างไรก็ตามเพื่อให้กว่า 90% ของ smart contract เป็นที่รู้จักและถูกนำไปใช้ มันจะต้องถูกเชื่อมต่อกับโลกภายนอก เช่น smart contract ทางการเงินต้องการข้อมูลการตลาดเพื่อกำหนดการชำระเงิน, smart contract ประกันภัยต้องการ IoT และข้อมูลเว็บเพื่อตัดสินใจเกี่ยวกับการจ่ายกรมธรรม, smart contract ด้านการค้าต้องการเอกสารทางการค้าและลายเซ็นดิจิทัลเพื่อทราบกำหนดการชำระเงิน และ smart contract อีกหลายๆ ตัวต้องการชำระเป็นสกุลเงิน fiat บนเครือข่ายการชำระเงินแบบดั้งเดิม ซึ่งไม่มีข้อมูลเหล่านี้ถูกสร้างขึ้นใน blockchain และบริการแบบดั้งเดิมเหล่านี้ไม่สามารถเข้าถึงได้โดยสมบูรณ์

การเชื่อมต่อระหว่างบล็อคเชน (on-chain) กับโลกภายนอก (off-chain) จำเป็นต้องมีโครงสร้างเพิ่มเติมที่เรียกว่า ‘oracle’

Blockchain Oracle ทำหน้าที่อะไร

Blockchain oracle เป็นซอฟท์แวร์กลางที่ปลอดภัยและคอยอำนวยความสะดวกในการสื่อสารระหว่าง บล็อคเชนและระบบที่อยู่นอกระบบบล็อคเชน (off-chain) รวมถึงผู้ให้บริการข้อมูล, web APIs, ระบบหลังบ้านขององค์กรต่างๆ, ผู้ให้บริการคลาวด์, อุปกรณ์ IoT, ลายเซ็นอิเล็กทรอนิกส์, ระบบการชำระเงิน, บล็อคเชนอื่น และอื่นๆ Oracles ประกอบด้วยฟังก์ชันหลักหลายประการดังนี้

  • รับฟัง — เฝ้าดูเครือข่ายบล็อกเชนและตรวจสอบผู้ใช้งานใหม่หรือรีเควสของ smart contract ในการขอข้อมูลนอกเครือข่าย (off-chain)
  • ดึงข้อมูล — ดึงข้อมูลจากระบบภายนอก เช่น off-chain API ที่โฮสต์บน third party เว็บเซิร์ฟเวอร์
  • รูปแบบ — ทำให้ทั้งสองระบบสื่อสารกันโดยการจัดรูปแบบข้อมูลที่ดึงมาจาก API ให้อยู่ในรูปแบบที่บล็อคเชนอ่านได้ (input) และ/หรือทำให้ข้อมูลในบล็อกเชนเข้ากันได้กับ API ภายนอก (output)
  • ตรวจสอบ — สร้างหลักฐานทางคริปโตกราฟฟิคเพื่อยืนยันประสิทธิภาพการทำงานของ oracle โดยใช้การลงนามข้อมูล, การลงนามธุรกรรม blockchain, ลายเซ็น TLS, การรับรอง Trusted Execution Environment (TEE), Zero knowledge proof และอื่นๆ
  • คำนวณ — ทำการคำนวณบางอย่างกับข้อมูล เช่น การคำนวณค่ามัธยฐานจากการส่งผ่าน oracle หลายๆ ครั้ง หรือคำนวณการทำงานที่ซับซ้อนมากขึ้น เช่น การสร้างใบเสนอราคาประกันจากข้อมูลหลายประเภท (โปรไฟล์ความเสี่ยงส่วนบุคคล อัตราตลาด ต้นทุนเงินทุน ฯลฯ)
  • ออกอากาศ — ลงนามและประกาศการทำธุรกรรมบนบล็อคเชนเพื่อส่งข้อมูลและหลักฐานที่เกี่ยวข้องที่อยู่บนเชนสำหรับการใช้งาน smart contract
  • เอาท์พุต (เป็นตัวเลือก) — ส่งข้อมูลไปยังระบบภายนอกเมื่อมีการดำเนินการ smart contract เช่น การส่งต่อคำสั่งการชำระเงินไปยังเครือข่ายการชำระเงินแบบดั้งเดิม หรือส่งผลกระทบต่อระบบ cyber-physical

เพื่อทำให้ฟังก์ชั่นข้างต้นทำงานได้ ระบบ oracle จะต้องทำงานทั้งในและนอกบล็อคเชนพร้อมกัน ส่วนประกอบ on-chain มีไว้สำหรับสร้างการเชื่อมต่อบล็อคเชน (เพื่อฟังคำขอ), การออกอากาศข้อมูล, การส่ง proof, การดึงข้อมูลบล็อคเชน, และบางครั้งทำการคำนวณบนบล็อคเชน ส่วนของส่วนประกอบ off-chain ใช้สำหรับประมวลผลคำขอ, ดึงข้อมูลและจัดรูปแบบข้อมูลภายนอก, ส่งข้อมูล blockchain ไปยังระบบภายนอก และอาจดำเนินการคำนวณในเครือข่าย oracle ขั้นสูง

การใช้ Chainlink oracle เพื่อดำเนินการตาม smart contract สำหรับการประกันพืชผลที่รับข้อมูลสภาพอากาศจากหลายแหล่ง และใช้จุดของข้อมูลที่มีร่วมกันกระตุ้นให้เกิดการดำเนินการตามสัญญาประกันบนบล็อกเชนและทำการชำระเงินด้วยวิธีการชำระเงินแบบดั้งเดิมต่างๆ

ทำไมบล็อคเชนถึงแก้ปัญหาของ Oracle ไม่ได้

บล็อกเชนมีความปลอดภัยสูงและเชื่อถือได้เนื่องด้วยหลักการออกแบบพิเศษบางประการ ตามที่อธิบายไว้ข้างต้น บล็อคเชนเพียงแค่จำเป็นต้องตัดสินใจเกี่ยวกับคำถามพื้นฐานโดยใช้ข้อมูลที่สร้างขึ้นภายในสภาพแวดล้อมของตนเองเท่านั้นซึ่งพิสูจน์ได้ว่าจริงหรือเท็จ นอกจากนี้ ยังใช้การกระจายอำนาจเพื่อตรวจสอบข้อมูลเดียวกันซ้ำซ้อนโดย node ทั้งหมดในเครือข่าย และทำให้แน่ใจว่า node เดียวหรือกลุ่มnode เล็ก ๆ ไม่สามารถเปลี่ยนกฎของอัลกอริธึมฉันทามติ (PoW, PoS เป็นต้น) และทำ sybil attack กับเครือข่าย เช่น ได้รับการควบคุมพลังแฮชทั้ง 51% คุณสมบัติเหล่านี้สามารถการันตีการปฏิบัติตามข้อกำหนดได้โดยเฉพาะอย่างยิ่งในเครือข่ายที่มีการกระจายอำนาจสูงและทนต่อ Sybil

อย่างไรก็ตาม blockchains ไม่เหมาะที่จะตอบคำถามที่เริ่มเจาะลึกเกี่ยวกับความคิดเห็น หรือคำถามที่ต้องการข้อมูลภายนอกที่ทุก node ไม่สามารถเข้าถึงได้ ตัวอย่างคำถามง่ายๆ เช่น ‘ราคาตลาดของ Bitcoin คืออะไร’ หรือ ‘สภาพอากาศในนิวยอร์กเป็นอย่างไรบ้าง’ บล็อคเชนจะดึงคำตอบมากมายที่แตกแตกต่างกันไปขึ้นอยู่กับแหล่งข้อมูลที่พวกเขาใช้และเวลาที่ร้องขอข้อมูลนั้น จนต้องตั้งคำถามว่าคำตอบไหนคือคำตอบที่ถูกต้อง?

การใช้ความคิดเห็นส่วนตัวเป็นพื้นฐานของบล็อคเชนเหมือนเป็นการเปิดกล่อง Pandora ของหลักการรักษาความปลอดภัย ความน่าเชื่อถือ หลักธรรมาภิบาลทั้งหมด ซึ่งทำให้เสี่ยงต่อคุณค่าที่บล็อกเชนพยายามจะนำเสนอคือการตั้งข้อกำหนดที่เป็นกลางสำหรับธุรกรรมทางคอมพิวเตอร์

ข้อกังวลหลักประการหนึ่งคือวิธีการตรวจสอบคุณภาพของข้อมูลเมื่อแต่ละ node มีวิธีการเข้าถึงข้อมูลไม่เหมือนกัน แม้แต่คำขอข้อมูลพื้นฐานอย่างราคาของ Bitcoin ก็เป็นเรื่องที่ท้าทายมากเพราะเพียงแค่ดูเว็บไซต์หรือทำการแลกเปลี่ยนเพียงครั้งเดียวอาจไม่แม่นยำหรือเชื่อถือได้เท่ากับการจ่ายเงินสมัครสมาชิก API ให้กับผู้รวบรวมข้อมูลมืออาชีพที่มีสิ่งจูงใจทางการเงินเพื่อรักษาบริการคุณภาพสูง และมีระสบการณ์ในการกรองข้อมูลกว่า 10 ปีรวมไปถึงสร้างตลาดที่ครอบคลุมสภาพแวดล้อมการซื้อขายทั้งหมด ถือว่าเป็นเรื่องที่ยากมากในการจัดการและควบคุมคุณภาพข้อมูล off-chain ที่ส่งโดย node ในบล็อกเชน เนื่องจากทุกคนสามารถใช้ node ที่ไม่ระบุตัวตนได้และทุกคนมีโอกาสเท่าเทียมกันในการส่งคำตอบ แต่ทุกคนอาจไม่ได้ต้องการและไม่สามารถถูกบังคับให้สมัครสมาชิก API off-chain เพื่อข้อมูลคุณภาพสูง

ข้อกังวลหลักอีกประการหนึ่งคือความสามารถในการปรับขนาด ทุกครั้งที่ต้องเพิ่มแหล่งข้อมูลใหม่ลงในเครือข่ายหรือต้องปรับเปลี่ยนวิธีการรวบรวมข้อมูลที่มีอยู่ ต้องมีการประสานงานระหว่าง node ในเครือข่ายจำนวนมากเพื่อให้ทุกๆ node ยอมรับการเปลี่ยนแปลงนั้นและอัพเกรดซอฟท์แวร์ของแต่ละ node เองด้วย ด้วยเหตุนี้จึงก่อให้เกิดความขัดแย้งภายในและชะลอการพัฒนาคุณสมบัติหลักอื่นๆ ของบล็อคเชน (เช่น PoS, sharding) และจำกัดความเร็วของ oracle ในที่สุดแล้วยิ่งพื้นฐานของบล็อกเชนมีความซับซ้อนมากเท่าใด ยิ่งมีช่องโหว่ที่เอื้อต่อการโจมตีและเพิ่มความเสี่ยงต่อแอปพลิเคชันทั้งหมดที่ทำงานอยู่บนนั้นมากขึ้นเท่านั้น แม้แต่แอปพลิเคชันที่ไม่ได้ใช้ oracles หรือไม่เกี่ยวข้องกับคำขอข้อมูลก็อาจหยุดชะงักได้หากทั้งห่วงโซ่ขัดข้องจากปัญหาของ oracle

ด้วยเหตุผลต่างๆ เหล่านี้และอีกมากมายที่ oracles ไม่ได้ถูกรวมเข้ากับชั้นพื้นฐานของบล็อคเชนและทำงานแยกจากกัน สิ่งนี้ทำให้มั่นใจได้ว่าบล็อคเชนมีช่องโหว่ที่น้อยกว่าและรักษาข้อกำหนดต่างๆ ได้โดยการโฟกัสที่ระบบฉันทามติเพียงอย่างเดียว ในขณะที่ oracles มีความยืดหยุ่นที่จำเป็นต่อข้อกำหนด off-chain ที่ยุ่งยากซับซ้อนและแตกต่างกันโดยไม่มีข้อจำกัด, มีการพึ่งพากันและกันซึ่งทำให้เกิดความเสี่ยงต่อ chain ทั้งหมด

Oracles ที่ไม่กระจายอำนาจมีความเสี่ยงที่สุด

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

Oracle แบบรวมศูนย์เป็นจุดศูนย์กลางของความล้มเหลวใน smart contract

ไม่ว่าจะเป็นทีมพัฒนาแอปพลิเคชัน smart contract ที่เรียกใช้ Oracle ด้วยตนเองหรือใช้บริการ Oracle ผ่าน third party ทั้งสองสถานการณ์ให้อำนาจที่มากเกินไปแก่หน่วยงานเดียวและส่งผลต่อสัญญาผ่านการควบคุมของ oracle แม้ว่า oracle แบบรวมศูนย์จะตั้งใจทำงานดีที่สุดแต่ก็ยังประสบปัญหาส่วนกลางทั่วไป เช่น ระบบล่ม, การโจมตี DDOS, การแฮ็ก และเหตุสุดวิสัยต่างๆ ซึ่งทั้งหมดนี้ทำให้เงินทุนของผู้ใช้ตกอยู่ในความเสี่ยงอย่างใหญ่หลวง

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

เพื่อที่จะเอาชนะจุดอ่อนเหล่านี้ oracles จำเป็นต้องสร้างการรักษาความปลอดภัยและรับประกันความน่าเชื่อถือแบบเดียวกันกับของ blockchain แม้ว่าวิธีการแก้ปัญหา oracle จะแตกต่างกันมากเมื่อเทียบกับการบรรลุกฎฉันทามติของ blockchain

Chainlink: มาตราฐานของ Oracle ที่ปลอดภัยและเชื่อถือได้

ในการนำข้อกำหนดต่างๆ มาสู่การสร้าง Oracle Chainlink ได้พัฒนาเครือข่าย oracle แบบกระจายอำนาจซึ่งสามารถรับประกันการใช้งานแบบต่างๆ มากมาย ซึ่งสามารถนำไปใช้เพื่อแก้ปัญหาในการปรับแต่ง oracle ให้กับกรณีการใช้งานใดๆ ได้

  • Open-source — การเป็นเทคโนโลยีโอเพ่นซอร์สช่วยให้ชุมชนบล็อคเชนอื่นที่มีขนาดใหญ่กว่า สามารถตรวจสอบความปลอดภัยและความน่าเชื่อถือของ source code และฟังก์ชันของ Chainlink ได้อย่างอิสระ รวมถึงมีส่วนในการปรับปรุงตัวมันด้วย
  • ตัวแปลงภายนอก — อนุญาตให้node จัดเก็บ API keys ได้อย่างปลอดภัยและจัดการการlog-inให้ smart contract ดึงข้อมูลจากระบบภายนอกและ API รวมถึงระบบที่มีการป้องกันด้วยรหัสผ่านหรือcredential
  • การกระจายอำนาจ — การใช้nodeและแหล่งข้อมูลที่กระจายอำนาจทำให้มั่นใจได้ว่าไม่มีnodeหรือแหล่งข้อมูลใดเป็นจุดล้มเหลว และรับประกันกับผู้ใช้งานได้ว่าข้อมูลจะถูกส่งตรงเวลาและทุจริตได้ยาก
  • การเซ็นชื่อข้อมูล — การมี node ที่เข้ารหัส cryptographicไว้ใน smart contract ทำให้ผู้ใช้สามารถระบุได้ว่าnodeใดที่ส่งข้อมูลและดูประวัติที่ผ่านมาเพื่อเชคประสิทธิภาพการทำงาน
  • ข้อตกลงการบริการ — การใช้ข้อตกลงออนไลน์ที่มีผลผูกพันระหว่างsmart contractที่ร้องขอและผู้ให้บริการ Oracle ที่ร่างข้อกำหนดการบริการ Oracle และบทลงโทษ/รางวัลสำหรับผฃการดำเนินงานในการให้บริการการร้องขอข้อมูล off-chain ของผู้ใช้งาน
  • Reputation system — การป้อนข้อมูล on-chain ที่มีการลงชื่อแล้วเข้าสู่ระบบชื่อเสียง (reputation system) ทำให้ผู้ใช้มีข้อมูลในการตัดสินใจว่าnodeใดดี และnodeใดไม่ดี อิงตามตัวชี้วัดหลายตัว เช่น งานที่ประสบความสำเร็จ, การให้บริการกับลูกค้า, เวลาตอบสนองโดยเฉลี่ย และอื่นๆ
  • บริการออกใบรับรอง — ทำให้nodeสามารถเพิ่มความปลอดภัยและความน่าเชื่อถือให้กับผู้ใช้โดยการได้รับการรับรองที่มีข้อมูลรับประกันสำคัญ เช่น KYC, ตำแหน่งทางภูมิศาสตร์ของnode, การตรวจสอบความปลอดภัยของโครงสร้างพื้นฐาน และอื่นๆ
  • การเข้ารหัสและฮาร์ดแวร์ขั้นสูง — เพิ่มความยืดหยุ่นให้กับเข้ารหัส cryptography ให้ระดับสูงมากขึ้น (เช่น zero knowledge proof) และฮาร์ดแวร์ (เช่น trusted execution environments) ช่วยให้ oracle มีฟังก์ชั่นการทำงานเพิ่มขึ้น เช่น พิสูจน์แหล่งที่มาองข้อมูลต่อ smart contract (เช่น ข้อมูลเฉพาะมาจากเซิร์ฟเวอร์เฉพาะ), เก็บข้อมูลที่เป็นความลับกับตัว oracle เอง, คำนวณข้อมูล off-chain, และอื่นๆ อีกมากมาย

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

ในการสร้างคุณสมบัติหลักเหล่านี้บน Chainlink ทำให้ smart contract บนบล็อคเชนใด ๆ สามารถเข้าถึงข้อมูล off-chain โดยไม่ต้องละทิ้งหัวใจสำคัญของมันอย่างการตั้งข้อกำหนดซึ่งเป็นรากฐานที่มั่นคงสำหรับการสร้างระบบอัตโนมัติที่ขับเคลื่อนด้วยข้อมูลในอนาคต

ติดตามเราบน Twitter เพื่อรับการแจ้งเตือนบทความใหม่ เข้าร่วม Telegram หรือ Reddit สำหรับข่าวทั่วไปเกี่ยวกับ Chainlink หรือมีเข้าร่วมอภิปรายทางเทคนิคใน Discord ของเรา

--

--