การอนุมัติโทเคนให้ผู้รับสิทธิ์ใช้โทเคนของบัญชีตามกฎสัญญา การทำงาน ERC-20 ที่พบบ่อยเรียก Approve โดย ERC-20 คือมาตรฐานส่วนติดต่อโทเคน ต่อเว็บไม่เท่ากับยอมให้ใช้เงิน และตัดการเชื่อมต่อไม่ลบวงเงินเอง EIP-20 กำหนดการอ่านวงเงินกับใช้สิทธิ์ ส่วน EIP-2612 ให้ลายเซ็นตามเงื่อนไขสร้างวงเงินได้ บทนี้ใช้วงเงินจำกัดอธิบายการมีผล ใช้ และเพิกถอน ข้อมูลตรวจถึง 27 ตุลาคม 2026
เมื่อหน้าต่างยืนยันขึ้น ส่วนยากมักไม่ใช่หาปุ่ม แต่คือรู้ว่ากำลังยอมรับอะไร เว็บบอกเข้าสู่ระบบแต่ขอธุรกรรม เว็บตัดแล้วแต่วงเงินของบางผู้รับยังคงบนเชน หากตัดสินด้วย “ยังต่อกระเป๋าเงินไหม” อย่างเดียว จะพลาดสิทธิ์ใช้เงินจริง
บทนี้แยกเชื่อมต่อ ธุรกรรม และลายเซ็น แล้วเดินแผนวงเงินจำกัดให้ครบ จุดสำคัญคือแต่ละขั้นเปลี่ยนสถานะใดจริง และยังสรุปว่าอะไรปลอดภัยไม่ได้
เชื่อมต่อ ธุรกรรม และลายเซ็นให้สิทธิ์ต่างกัน
เชื่อมต่อ Approve และเซ็นข้อความเป็นคนละการกระทำ ใช้ข้อสรุปว่าอนุมัติแล้วร่วมกันไม่ได้ การต่อเว็บทั่วไปอาจได้ที่อยู่สาธารณะที่ผู้ใช้เลือก และส่งคำขอถัดไปได้ แต่ส่งคำขอได้ไม่เท่ากับมีอำนาจโอนอะไรก็ได้ วิธีเก็บคีย์ดูที่ กระเป๋าเงินกับอำนาจควบคุมสินทรัพย์
ต่อเว็บไม่ได้แปลว่ายอมให้ใช้โทเคน
โทเคน ERC-20 ทั่วไปเก็บวงเงินในสัญญา ผู้ถือให้วงเงินแก่ spender หรือที่อยู่ผู้รับสิทธิ์ก่อน อีกฝ่ายจึงอาจเรียก transferFrom ตามกฎเพื่อส่งโทเคนให้ปลายทาง Spender อาจเป็นสัญญาหรือบัญชีทั่วไป แค่มีชื่อว่า router ก็ยังสรุปว่าน่าเชื่อถือไม่ได้
MetaMask “Disconnect wallet from a dapp” เตือนว่าตัดเว็บไม่เพิกถอนโทเคน ตัดการเชื่อมต่อจัดส่วนติดต่อ ส่วนเพิกถอนต้องเปลี่ยนวงเงินเชน การเซ็นฮาร์ดแวร์ไม่ปฏิเสธสิทธิ์อันตรายให้เอง การแยกคีย์ด้วยฮาร์ดแวร์ แก้โอกาสเอาคีย์บางส่วน ผู้ใช้ยังต้องเข้าใจคำขอ
Approve กับ Permit มีเวลาที่มีผลต่างกัน
Approve ปกติเป็นธุรกรรมถึงสัญญาโทเคน กดยืนยันแล้วยังต้องรอสำเร็จบนเชนจึงบอกว่าวงเงินเปลี่ยน ปฏิเสธเซ็น ยังไม่ส่ง รอ และผิดพลาด ไม่ใช่เสร็จแล้ว
อีกทางคือ Permit ตาม EIP-2612 ให้ผู้ถือเซ็นข้อมูลก่อน แล้วตนเองหรือผู้อื่นส่งขึ้นเชนทีหลัง Gas คือหน่วยวัดปริมาณงานประมวลผล การเซ็นตอนนั้นอาจไม่มีค่าธรรมเนียมบนเชน แต่เปิดให้ผู้ส่งทีหลังสร้างวงเงิน ดังนั้นไม่เสียค่าเครือข่ายตอนนี้ไม่ได้แปลว่าลายเซ็นไม่มีความเสี่ยงต่อสินทรัพย์ โปรโตคอลอื่นอาจมีกลไกเฉพาะ ไม่ใช้วิธียกเลิกเดียวครอบคลุมทั้งหมด

อ่านสิทธิ์หนึ่งรายการต้องกำหนดข้อมูลสี่อย่าง
ก่อนอ่านวงเงิน ต้องตรึงเครือข่าย ผู้ถือ สัญญาโทเคน และ spender ขาดอย่างใดอาจอ่านผิดเชน บัญชี หรือโทเคน แล้วเห็นศูนย์จึงคิดว่าสิทธิ์ที่ต้องแก้หมดแล้ว
เครือข่าย ผู้ถือ โทเคน และผู้รับสิทธิ์
ผู้ถือระบุว่าจะใช้จากบัญชีใคร สัญญาระบุโทเคนใด ผู้รับสิทธิ์ระบุว่าใครเรียกใช้ตามวงเงินได้ ผู้รับโทเคนสุดท้ายอาจต่างจาก spender จึงไม่ใช้ที่อยู่ปลายทางแทนโดยอัตโนมัติ
EIP-20 allowance(owner, spender) ใช้ผู้ถือกับ spender เป็นพารามิเตอร์ และอ่านบนสัญญาโทเคนที่เลือก โทเคนชื่อเดียวไม่ใช่สัญญาเดียว ที่อยู่หน้าตาเดียวก็ยังต้องเช็กเครือข่าย รับข้อมูลเต็มจากช่องทางทางการที่เชื่อถือได้แล้วเทียบคำขอ จึงรู้ว่าจะเปลี่ยนสถานะใด
วงเงินไม่ใช่ยอดคงเหลือ และไม่จำกัดก็ไม่ใช่ฟรี
ยอดคือโทเคนที่ถืออยู่ วงเงินคือจำนวนที่ผู้รับสิทธิ์ใช้ได้ตามกฎ อนุมัติ 20 ไม่เพิ่มยอด 20 และไม่แปลว่าโอน 20 ทันที หากวงเงินสูงกว่ายอดตอนนี้ ความเสี่ยงอาจครอบคลุมโทเคนที่รับเพิ่มภายหลัง
หน้าจอไม่จำกัดหรือเลขสูงเปลี่ยนขอบเขตใช้ ไม่ยกเว้นค่าใช้จ่าย วิธีจัดการวงเงินสูงสุด การตัดวงเงิน และการปรับเปลี่ยนวงเงินอาจต่างกันตามโทเคน ตัวอย่างต่อไปกำหนดแบบจำกัดที่ลดเมื่อใช้สำเร็จ ไม่แทน ERC-20 ทุกตัว ต้องใช้เพียง 12 ก็ยังต้องเข้าใจเหตุผลที่ขอมากกว่า ไม่ข้ามเพราะสะดวกครั้งหน้า

ฝึกวงเงิน: 20, 8 และ 0 มีผลเมื่อใด
จดวงเงินแยกยอด จึงเห็นว่าแต่ละขั้นทำอะไรเสร็จจริง แบบฝึกบนกระดาษ ผู้ถือ A เริ่ม 100 หน่วยโทเคน T ต้องการให้ S ใช้ 12 แล้วเพิกถอนที่เหลือ A, S, T และผู้รับ R เป็นชื่อแทน ไม่มีการสร้างสัญญา เซ็น หรือโอนจริง และไม่มีราคาโทเคนหรือกำไรสมมติ
ขั้นที่ 1: อ่านวงเงินเดิมก่อนเลือกการทำงาน
ตรึงเชน A สัญญา T และ S อ่านได้วงเงิน 0 เก็บพร้อมเวลาค้น แล้วดูว่าต้องให้ S ใช้แทนจริงไหม และ S ตรงที่อยู่ในส่วนติดต่อเชื่อถือได้หรือไม่ ค่า 0 บอกเพียงว่าวงเงินของชุดนี้บนเชนตอนนั้นเป็น 0 ไม่พิสูจน์ว่า A ไม่มีสิทธิ์หรือลายเซ็นอื่นที่ยังใช้ได้
แผนนี้ให้วงเงิน 20 ใช้ 12 แล้วจัดการวงเงินที่เหลือ เลข 20 เป็นเพียงตัวเลือกในการสอน ไม่แนะนำทุกคนใช้เท่ากัน หากหน้าต่างเปลี่ยนเป็น S อื่นหรือไม่ใช่ T ให้ยกเลิกเตรียมแล้วกลับตรวจสี่ข้อมูล ไม่ผ่านคำขอต่างเพราะเพิ่งตรวจไป
ขั้นที่ 2: อนุมัติเพียง 20 แล้วรอผลบนเชน
สมมติ A เตรียม Approve ตั้งวงเงิน T ต่อ S เป็น 20 ต้องตรวจปลายทางธุรกรรม สิ่งที่เรียก และค่าเครือข่าย เลข 20 เป็นหน่วยแสดงโทเคน สัญญาอาจเก็บจำนวนเต็มในหน่วยย่อย ส่วนติดต่อที่เชื่อถือได้ต้องแปลงตามตำแหน่งทศนิยม ไม่เอาจำนวนเต็มดิบเป็นยอดหน้าจอ
ตอนเซ็นแล้วแต่ยังไม่ยืนยัน ต้องจดรอ ไม่ใส่วงเงิน 20 ก่อน รอสำเร็จแล้วอ่านชุดเดิมเป็น 20 จึงมีผล ขั้นนี้ไม่เคลื่อน T ยอดจึงยัง 100 ถ้า A จ่ายเครือข่ายเอง สินทรัพย์ประจำเชนอาจลดต่างหาก ไม่ถือว่า T ถูกใช้แล้ว
ขั้นที่ 3: ใช้ 12 แล้วตรวจวงเงินเหลือ 8
สมมติ S ส่ง 12 T ของ A ไป R สำเร็จตามกฎ และไม่มีความเปลี่ยนแปลงโทเคนอื่น ยอด A คือ 100 − 12 = 88 ส่วนกฎจำกัดในบทนี้ทำให้วงเงิน S เหลือ 20 − 12 = 8 สองเลขตอบคนละคำถามว่าถืออีกเท่าใด กับอีกฝ่ายใช้ได้อีกเท่าใด
อย่าดูเพียงเครื่องหมายถูกบนหน้า ต้องตรวจรายการเดิมสำเร็จ โทเคนและผู้รับถูก แล้วอ่านยอดกับวงเงินปัจจุบัน หากมีรายการใช้หรือโอนอื่นในช่วงนั้น ใช้ 88 กับ 8 ตรงไม่ได้ หากทำไม่สำเร็จให้จดสถานะเชนจริง ไม่หัก 12 ตามแผน
วงเงิน ERC-20 ทั่วไปทำตามสิทธิ์ที่ให้ ไม่ได้ล็อกผู้รับหรือวัตถุประสงค์ของแต่ละครั้งเอง ถ้าไม่มีข้อจำกัดอื่นในสัญญา ส่ง R ครั้งแรกไม่ได้แปลว่า 8 ที่เหลือใช้ได้เฉพาะที่เดิมตลอด
ขั้นที่ 4: เพิกถอนและตรวจศูนย์ ไม่ดูแค่ส่งแล้ว
สมมติ A เปลี่ยนวงเงิน T กับ S ชุดเดิมเป็น 0 สำเร็จ ระหว่างธุรกรรมเพิกถอนรอ 8 เดิมไม่หมดเพราะกดปุ่ม การใช้สิทธิ์หรือเพิกถอนที่ประมวลผลก่อนยังเปลี่ยนผลได้ อย่าบันทึกว่า “สินทรัพย์ปลอดภัย” เพียงเพราะส่งยกเลิกแล้ว
เมื่อเพิกถอนสำเร็จและอ่านใหม่เป็น 0 จึงบอกวงเงินชุดนี้เป็นศูนย์ ถ้าไม่มี T เปลี่ยนอื่น A ยัง 88 ไม่ได้คืน 8 เพราะยกเลิกสิทธิ์ 8 นี่คือปิดวงเงินคงเหลือ ไม่ตาม 12 ที่ใช้แล้วคืน และไม่รับรองสิทธิ์อื่น
EIP-20 เตือนลำดับธุรกรรมเมื่อแก้วงเงินเดิมที่ไม่เป็นศูนย์ และเสนอให้ส่วนติดต่อทำเป็นศูนย์ก่อนตั้งค่าใหม่ โทเคนจริงอาจมีวิธีเพิ่มลดหรือข้อจำกัดต่าง อย่าถือเป็นรับรองหยุดการใช้ก่อนทุกแบบ หากถูกโจมตีต้องประเมินตามข้อมูลรั่ว ไม่เปลี่ยนวงเงินไปเลขอื่นเรื่อย ๆ


เพิกถอนหนึ่งวงเงินแล้ว ความเสี่ยงใดยังอยู่
การเพิกถอนแก้สิทธิ์เฉพาะ ไม่ล้างลายเซ็น โทเคนอื่น หรือคีย์รั่วเอง ตัวอย่างทำเสร็จเพียงวงเงิน T ของ A ให้ S บนเชนเดิมเป็นศูนย์ เปลี่ยนผู้รับสิทธิ์ เชน หรือสินทรัพย์ต้องตรวจแยก
Permit ที่ยังไม่ส่ง ต่างจากวงเงินที่มีแล้ว
เพิ่มแขนงอิสระ A เคยเซ็น EIP-2612 Permit ที่ยังไม่ส่ง หาก nonce กับกำหนดเวลาและเงื่อนไขยังตรงสัญญา ก็อาจนำส่งสร้างวงเงินทีหลัง Nonce คือเลขลำดับป้องกันใช้ใบอนุญาตเดิมซ้ำ ส่วน deadline คือเส้นตายส่ง ไม่ใช่เห็นวันยังไม่ถึงแล้วปลอดภัย
เพราะเหตุนี้ วงเงิน Approve เป็น 0 ไม่พิสูจน์ว่าทุกลายเซ็นค้างหมดผล ต้องดูโปรโตคอล เนื้อหา และวิธียกเลิกจริง approve(0) ทั่วไปไม่ได้ยกเลิกทุกชนิด เส้นทาง 20 → 8 → 0 ก่อนหน้าไม่มี Permit ส่วนนี้อธิบายขอบเขตข้อสรุปศูนย์ ไม่อ้างว่าแบบฝึกเกิดการใช้ครั้งที่สองแล้ว

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

ทำการตรวจสิทธิ์เป็นนิสัยก่อนเซ็น
นิสัยที่ใช้ได้จริงคือก่อนตอบตกลง อธิบายผู้รับ ขอบเขต และวิธีมีผลได้ ตรวจย้อนหลังช่วยหาวงเงินค้าง ไม่รับรองลายเซ็นไม่รู้จักครั้งหน้า เมื่อหน้าจออ่านไม่ได้ ข้อมูลผิด หรือเว็บเร่งข้าม ให้หยุดก่อน
ตรวจจากทางเข้าที่ไว้ใจ ไม่รับคำขอแปลกหน้า
เริ่มจากกระเป๋าเงิน เอกสารทางการ หรือเครื่องมือวงเงินที่ตรวจแล้ว ไม่คลิกลิงก์ตรวจความปลอดภัยในข้อความแปลก การค้นวงเงินสาธารณะไม่ต้องส่งวลีหรือคีย์ให้ฝ่ายช่วยเหลือ ถ้าเครื่องมือขอเซ็นหรือทำรายการ ต้องอ่านใหม่ ไม่ยกเว้นเพราะบอกว่าปลอดภัย
MetaMask “Spending caps” อธิบายการดูและเพิกถอน แต่เครื่องมือแสดงสิทธิ์ได้ตามขอบเขตรองรับ ไม่มีในลิสต์ไม่ได้พิสูจน์ว่าไม่มีสิทธิ์เชนอื่น NFT หรือโทเคนที่ไม่สามารถทดแทนกันได้ หรือข้อความอนุญาตเฉพาะโปรโตคอล แบบฝึก ERC-20 ไม่แทนกฎของสิ่งเหล่านั้น
ตรวจค่าเครือข่ายพร้อมเงื่อนไขหยุด
Approve กับเพิกถอนมักใช้ธุรกรรมที่มีค่าเครือข่าย ส่วนสิทธิ์ลายเซ็นอาจให้คนอื่นจ่ายค่าส่ง ใครจ่ายค่าธรรมเนียมกับคุณให้ใครใช้โทเคนเป็นคนละเรื่อง อ่าน ค่าธรรมเนียมเมื่อธุรกรรมล้มเหลว เพื่อแยกเงินเตรียมกับตัดจริง
ถ้าจัดการตามปกติ ตรวจค่าและงบก่อนเลือกทำ หากสงสัยบอตกวาดเงิน ไม่ควรเติมสินทรัพย์ประจำเชนเข้าบัญชีเก่าเพื่อ “ยกเลิกให้เสร็จ” บอตชนิดนี้เฝ้าเงินเข้าและโอนออกเร็วอัตโนมัติ เขียนเงื่อนไขหยุดร่วมกับวงเงิน เพื่อไม่เปิดสินทรัพย์ใหม่เพิ่มขณะจัดสิทธิ์หนึ่งรายการ
บทนี้อธิบายกลไกด้วยสถานการณ์สมมติ ไม่ได้อนุมัติหรือเพิกถอนจริง และไม่ใช่คำแนะนำจัดสินทรัพย์รายบุคคล การทำงานของโทเคนกับโปรโตคอลอาจต่าง หากสงสัยถูกบุกรุกให้ประเมินข้อมูลจริงกับทางการที่เชื่อถือได้