Skip to content

Cap ทำงานอย่างไร?

อนึ่ง หน้านี้เป็นคำอธิบายเชิงเทคนิคว่า challenge แบบ SHA-256 และ instrumentation ของ Cap ทำงานอย่างไร โดยไม่รวม RSW time-lock ถ้าคุณอยากได้ภาพรวมกว้าง ๆ มากกว่า ลองดูหน้าประสิทธิภาพ


  1. เมื่อ Cap เริ่มทำงาน มันจะลงทะเบียน custom element สำหรับวิดเจ็ตในเบราว์เซอร์โดยอัตโนมัติ
  2. วิดเจ็ตสร้าง shadow DOM แล้วเพิ่มอิลิเมนต์ที่จำเป็นทั้งหมดเข้าไป

การขอ challenge

  1. เมื่อมีการร้องขอคำตอบ วิดเจ็ตจะส่งคำขอไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์จะคืน token, การตั้งค่าของ challenge ที่ต้องแก้ และอาจมีข้อมูล instrumentation ที่บีบอัดไว้ด้วย

  2. จากนั้นวิดเจ็ตจะสร้าง challenge หลายชุดจาก seed ที่กำหนด (คือ challenge token) ร่วมกับการตั้งค่าที่เซิร์ฟเวอร์ส่งมา ถ้ามีข้อมูล instrumentation มาด้วย ข้อมูลนั้นจะถูกคลายการบีบอัดและแก้ภายใน iframe ที่ถูกแซนด์บ็อกซ์ไว้

การคำนวณคำตอบ

  1. วิดเจ็ตใช้ WASM ที่เขียนด้วย Rust ร่วมกับ Web Worker เพื่อแก้ challenge แบบขนาน:

    • worker แต่ละตัวพยายามหา nonce ที่ถูกต้องด้วยการทำซ้ำดังนี้:
      • นำ salt มารวมกับค่า nonce ต่าง ๆ
      • คำนวณแฮช SHA-256 ของค่าที่รวมกันนั้น
      • ตรวจว่าแฮชที่ได้ขึ้นต้นด้วยคำนำหน้าเป้าหมายหรือไม่
    • WASM จะเพิ่มค่า nonce ไปเรื่อย ๆ จนกว่าจะเจอแฮชที่ตรงเงื่อนไข
  2. ถ้ามี challenge แบบ instrumentation ก็จะถูกคลายการบีบอัดและรัน

การนำคำตอบไปแลกเป็น token

  1. เมื่อพบคำตอบที่ถูกต้อง วิดเจ็ตจะส่งผลลัพธ์กลับไปให้เซิร์ฟเวอร์ตรวจสอบ
  2. เซิร์ฟเวอร์จะสร้าง challenge ชุดเดียวกันขึ้นมาเองจาก token และการตั้งค่าที่ได้รับ แล้วตรวจสอบคำตอบที่วิดเจ็ตส่งมา
  3. เมื่อตรวจสอบผ่าน เซิร์ฟเวอร์จะรับคำตอบนั้นไปและออก token ที่ใช้ยืนยันคำขอได้

เผยแพร่ภายใต้สัญญาอนุญาต Apache 2.0