External Adapter ของ Chainlink

Chainlink Thailand
Chainlink Community
3 min readMar 14, 2023

คำจำกัดความโดยทั่วไปของ Oracle ในมุมของ Blockchain technology คือการดึงข้อมูลจาก internet และป้อนเข้าสู่สัญญาอัจฉริยะ (smart contract)

Chainlink มีการทำงานในลักษณะกระจายอำนาจ (decentralized manner) แต่ยังสามารถเพิ่มความสามารถพิเศษอีกอย่างหนึ่ง นั่นคือการใช้ external adapter เพื่อสร้าง output บางอย่าง ซึ่ง output นั้นสามารถส่งต่อไปยัง external adapter อื่นภายใน Chainlink node และยังสามารถให้ความสามารถแก่ Chainlink ในการใช้ resource ส่วนตัวและ blockchain ของบริษัท ในบทความนี้ Chainlink จะกล่าวถึงบริษัทสมมตินี้โดยไม่มีการเอ่ยชื่อเจาะจง

A. ขั้นตอนการทำงานของ Diagram นี้คือ:

A) Smart contract เลือก Chainlink Node ซึ่งเรียกว่าการ assignment

B) Node ส่งผลลัพธ์ (result) ไปยัง Smart contract

ในบทความนี้จะเน้นไปที่การอธิบายกระบวนการซึ่งแสดงด้วยลูกศรเป็นหลัก แต่จะรวม entity ใน workflow ที่ต้องมีคำอธิบาย

หากเราเปลี่ยนมุมมองของ workflow ด้านบนที่อธิบายไว้เป็นมุมมองของ Node เราจะเห็นว่าจะมีกระบวนการที่เพิ่มขึ้นมาเล็กน้อย แต่ concept หลักยังคงเหมือนเดิม

เพื่ออธิบายว่าแต่ละกระบวนการทำอะไร:

A) Chainlink Node ถูกมอบหมายสำหรับ assignment

B) Node ใช้ Credential ที่เก็บไว้เข้าถึงข้อมูล external adapter

C) ข้อมูลถูกส่งกลับมายัง Chainlink Node

D) ผลลัพธ์ (result) ส่งไปยัง Smart contract บน blockchain

การมองกระบวนการดึงข้อมูลด้วยวิธีนี้ทำให้เราเห็นมุมมองของ Node ที่ชัดเจนขึ้น หากคุณได้ดู Video เรื่อง Node architecture คุณจะเห็นว่าส่วนต่างๆ ของ Node สามารถแยกออกจาก software หลักของ Chainlink ได้ โดยเฉพาะอย่างยิ่งในตัวอย่างนี้ เรากำลังพูดถึง External adapter

ขั้นตอน B ใน diagram ด้านบนต้องใช้ External adapter เพื่อจัดการ Credential ที่จำเป็นสำหรับเข้าถึงแหล่งข้อมูลนั้น Node จะต้องมี External adapter สำหรับแต่ละ resource ที่ต้องใช้ Credential ของ Node operator เพื่อเข้าถึงและดึงข้อมูล ข้อจำกัดด้านปริมาณ External adapter ที่ Node สามารถเชื่อมต่อได้ ขึ้นอยู่กับความสามารถของ Hardware ในการจัดการ request จำนวนมากพร้อมๆ กัน

ความสามารถถัดไปของ External adapter เราจะพูดถึง concept เรื่องการ ‘Runs’ โดยการ runs เป็นวิธีในการส่งผลลัพธ์ของ External adapter หนึ่งไปยังอีก External adapter สำหรับกรณีที่ต้องประมวลผลบางอย่างเพิ่มเติม ซึ่งเรียก output ที่ได้ว่า Run result ซึ่งการ runs นี้สามารถดำเนินการหลายครั้งได้มากเท่าที่ต้องการ เนื่องจาก external adapter ได้รับการออกแบบมาให้บริการแยกออกจาก core software ของ ChainLink

Workflow อย่างง่ายสำหรับการส่งข้อมูล Run result ไปยัง External adapter อีกแห่ง คือ:

A) Node ใช้ Credential ที่จัดเก็บไว้ใน external adapter เพื่อเชื่อมต่อกับ Data provider

B) ข้อมูลถูกส่งมา และ Run result ถูกสร้างขึ้น

C) External adapter อีกตัวจะรับ result และประมวลผล ซึ่งสามารถทำซ้ำได้หลายครั้ง

D) Result ของการประมวลผลส่งกลับไปยัง Node Software

E) Result สุดท้ายจะถูกส่งไปยัง smart contract บน blockchain

สุดท้าย Diagram ที่เราได้เรียนรู้เรื่อง External adpater และการ Runs ช่วยสร้าง use-case จริงสำหรับประมวลผลภายในบางอย่าง (internal process)

Workflow ของ assignment ประเภทนี้คือ:

A) User สร้าง smart contract

B) เลือก Node ด้วยตนเอง

C) Node ที่ได้รับเลือกรับ assignment

D) Node แสดง Credential ที่เก็บไว้เพื่อเข้าถึงข้อมูลภายนอก

E) ข้อมูลส่งกลับมายัง Node

F) ข้อมูล Result ส่งต่อไปยัง External adapter อื่น ซึ่งมีฐานข้อมูล Credential ของตัวเอง

G) ใช้ข้อมูลที่ได้ในขั้น E เพื่อประมวลผลภายใน (internal process) ซึ่งสามารถทำซ้ำกี่ครั้งก็ได้เท่าที่ต้องการ ตัวอย่างเช่นการส่งข้อมูลไปยัง private blockchain, off-chain payment และอื่นๆ

H) Result จะถูกส่งกลับไปยัง Node

I) Result สุดท้ายถูกส่งไปยัง smart contract บน public blockchain

ใน Diagram นี้มีบางอย่างที่แตกต่างจากตัวอย่างก่อนหน้า ผู้สร้าง Smart contract สามารถระบุ Node ที่จะใช้สำหรับ assignment ด้วยการ whitelist ID ของ Node ที่ต้องการ

มาดูที่ขั้นตอน G การส่ง-รับข้อมูลแบบนี้ไปได้เพราะ external adapter อื่นที่ทำงานบน Node ของบริษัทสามารถส่ง “Runs result” ไปยัง API ภายในได้ โปรดอย่าลืมว่า External adapter แยกจาก Chainlink Node จึงแทบจะไม่ปิดกั้นสิ่งที่พวกเขาสามารถทำได้เลย ตราบใดที่พวกเขาส่งข้อมูลที่ยอมรับได้ไปยัง smart contract และสอดคล้องกับ schema ของ adapter ก็จะสามารถใช้เครือข่าย Chainlink ได้

ในสถานการณ์นี้ การ call ไปยัง Node API (ขั้นตอน F) จะ trigger การดำเนินการภายในให้เกิดขึ้นภายใน Network แบบปิดด้วย credential โดย external adapter โดย logic ทั้งหมด (ทั้ง business และ coding) สำหรับการ call API ยังคงอยู่ในการควบคุมของบริษัท หมายความว่าความเร็วของ blockchain ที่ smart contract นั้นสร้างอยู่ ไม่ได้เป็นข้อจำกัดสำหรับกระบวนการภายในใดๆ เมื่อทำการ call เราก็เพียงส่งคืนคำตอบพร้อมกับข้อมูลที่ขั้นตอน G มอบให้กับ smart contract

อาจมีข้อกังวลเกี่ยวกับความปลอดภัยในสถานการณ์นี้ อย่างแรก User อาจสงสัยว่า Node ใดๆ ก็สามารถเข้ามา call API ซึ่งจะปรับเปลี่ยน blockchain ส่วนตัวของบริษัทได้ไหม? คำตอบคือไม่ เนื่องจาก Credential จะถูกเก็บไว้ใน external adapter ข้อมูลนั้นจะไม่เปิดเผยต่อสาธารณะ และยังไม่มีข้อกำหนดว่า external adapter ต้องเป็น open-source ผู้คนสามารถพัฒนา external adapter ของตนเองและเก็บไว้ใช้เอง และสำหรับความปลอดภัยเรื่อง API อย่างในสถานการณ์นี้

นอกจากนี้ยังมีข้อกังวลว่า Node ที่ดำเนินการโดยบริษัทจะถูกเลือกเป็น Node ที่ได้รับ assignment จริงๆ ไหม? ซึ่งทำได้โดยการจับคู่ Node ด้วยการระบุ Node ID ตนเองในการตั้งค่า smart contract

Chainlink หวังว่าบทความนี้จะช่วยให้คุณเข้าใจเพิ่มเติมเกี่ยวกับ External adapter ในขณะที่ใช้ Chainlink เป็นบริการของ Oracle อย่าลังเลที่จะแสดงความคิดเห็นด้านล่างหากคุณมีคำถาม หรือติดต่อฉันที่ Chainlink Slack (เรามี #Node_Information channel) หรือที่ Chainlink Gitter

--

--