Skip to content

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

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


  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