จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้
คำตอบโดยตรง
Nonce คือค่าที่มีความหมายตามเนมสเปซของโปรโตคอลหนึ่งโดยเฉพาะ จึงไม่ได้หมายถึงเลขสุ่มหรือค่าร่วมสากลที่ “ใช้ครั้งเดียว” เสมอไป ใน Ethereum ค่า Nonce ในสถานะของบัญชีที่ควบคุมจากภายนอกใช้จัดลำดับและตรวจสอบธุรกรรมของผู้ส่งรายนั้น ส่วนสัญญาสามารถเก็บ Nonce ระดับแอปพลิเคชันแยกต่างหากสำหรับ Permit หรือคำสั่งที่ลงนามไว้ บัญชีอัจฉริยะ ERC-4337 สามารถใช้ Nonce ของ UserOperation ที่มีโครงสร้างเป็นช่องทางคีย์และลำดับแบบขนาน สำหรับ Proof-of-Work ของ Bitcoin ค่า Nonce ในส่วนหัวบล็อกเป็นฟิลด์ค้นหาที่มีขอบเขตสำหรับทดลองแฮชผู้สมัคร
ค่าเหล่านี้ใช้แทนกันไม่ได้ Nonce ของบัญชี Ethereum ไม่ได้ป้องกันลายเซ็นข้อมูลแบบมีโครงสร้างใด ๆ หากแอปพลิเคชันไม่ตรวจสอบโดเมนและฟิลด์ป้องกันการใช้ซ้ำของตนเอง Nonce ของส่วนหัว PoW ไม่ได้จัดลำดับธุรกรรมบัญชี และเลข Nonce เดียวกันที่ใช้กับผู้ส่ง สัญญา เชน หรือช่องทางต่างกันย่อมหมายถึงสถานะคนละชุด
กลไกการทำงาน
- ระบุเนมสเปซก่อนอ่านตัวเลขว่าเป็นธุรกรรม EOA, สถานะบัญชีสัญญา, พื้นที่จัดเก็บของแอปพลิเคชัน,
UserOperationของ ERC-4337 หรือส่วนหัวบล็อก PoW ที่ระบุชื่อไว้ พร้อมยืนยัน chain ID, ฟอร์กและเวอร์ชันโปรโตคอล, บัญชีหรือเจ้าของ, สัญญาและโดเมนที่ใช้ตรวจสอบ, EntryPoint หรือรูปแบบส่วนหัวตามกรณี - อ่านสถานะที่เชื่อถือได้ ณ block tag ที่ระบุชัด แยก Nonce บัญชี EOA ตามเชนหลักออกจากจำนวน pending ของผู้ให้บริการ ค่า
nonces(owner)ในพื้นที่จัดเก็บของแอปพลิเคชัน คีย์และลำดับของ ERC-4337 และตัวนับค้นหาส่วนหัวในเครื่องของนักขุด แม้ RPC อิสระหลายแห่งให้ผลตรงกันก็ยังแทนการตรวจสอบ receipt และสถานะตามเชนหลักไม่ได้ - สร้างสายประวัติของข้อมูลที่ลงนาม บันทึกผู้ส่งหรือเจ้าของ เชนและโดเมน Nonce, payload, กำหนดเวลา, สัญญาที่ใช้ตรวจสอบ แฮชธุรกรรมหรือข้อความ และรายการทดแทนทั้งหมด สำหรับธุรกรรม Ethereum กฎโดเมนเชนอย่าง EIP-155 ทำงานเสริมกับ Nonce บัญชี เพราะ Nonce เพียงอย่างเดียวไม่ใช่การป้องกัน replay ข้ามเชนที่ครบถ้วน
- จัดสรรภายในช่องทางที่ถูกต้อง ประสานผู้ลงนาม EOA ที่ทำงานพร้อมกันเพื่อให้แต่ละลำดับตามเชนหลักถูกจัดสรรครั้งเดียว และรักษาช่องว่างกับสายประวัติการทดแทนที่ใช้ Nonce เดียวกัน สำหรับแอปพลิเคชันหรือบัญชีอัจฉริยะ ให้ปฏิบัติตามกฎตรวจสอบและเพิ่มค่าแบบอะตอมมิกรวมถึงกฎช่องทางของสัญญานั้น แทนการสมมติว่ามีตัวนับร่วมเพียงตัวเดียว
- ส่งตามกฎการรับที่ถูกต้อง นโยบาย pending และการทดแทนของ execution client เป็นนโยบายเฉพาะเครื่อง bundler ของ ERC-4337 ตรวจสอบออบเจ็กต์
UserOperationตามกฎของ EntryPoint และบัญชี ส่วนลายเซ็น EIP-712 หรือ Permit อาจถูก relay ภายในธุรกรรมของบุคคลอื่น เส้นทางการรับในเครื่องเหล่านี้ไม่ได้พิสูจน์ว่าถูกบรรจุในเชนหลัก - ติดตามผลลัพธ์ทั้งหมด แยกให้ออกระหว่างถูกปฏิเสธ, pending, อยู่ในคิว, ถูกแทนที่, ถูกบรรจุสำเร็จ, ถูกบรรจุพร้อม
status = 0, ถูกนำออกจากการปรับโครงสร้างเชน และผ่าน finality ธุรกรรม Ethereum ที่ถูกบรรจุจะเพิ่ม Nonce บัญชีของผู้ส่งแม้การประมวลผล EVM จะ revert แต่การอัปเดต Nonce ในพื้นที่จัดเก็บของแอปพลิเคชันภายใน call ที่ revert จะถูกย้อนกลับ - กระทบยอดก่อนลองใหม่ ตรวจสอบ receipt ตามเชนหลัก แฮชบล็อก Nonce ของผู้ส่ง พื้นที่จัดเก็บแอปพลิเคชัน event หรือ receipt ของ ERC-4337 และ finality สำหรับ PoW ต้องตรวจสอบทั้งส่วนหัวและค่าเป้าหมาย ไม่ใช่เฉพาะ Nonce หากฟิลด์ Nonce ที่มีขอบเขตถูกลองจนครบ นักขุดจะเปลี่ยนข้อมูลอื่นที่มีผลต่อส่วนหัวเพื่อสร้างพื้นที่ค้นหาใหม่
ตัวอย่างพร้อมคำนวณ
- ธุรกรรมที่ถูกบรรจุแต่ revert ยังคงใช้ Nonce ของ EOA. Nonce ตามเชนหลักของผู้ส่งคือ
12ธุรกรรมที่มี Nonce12ถูกบรรจุพร้อมstatus = 0ใช้ gas50,000หน่วยในราคา30 gweiและมีต้นทุน50,000 * 30 gwei = 0.0015 ETHการเปลี่ยนแปลงในสัญญาถูกย้อนกลับ แต่ Nonce ตามเชนหลักของผู้ส่งกลายเป็น13หากการปรับโครงสร้างเชนนำบล็อกนั้นออก Nonce อาจกลับเป็น12และกระเป๋าต้องตรวจสอบสายประวัติธุรกรรมทั้งหมดใหม่ - Nonce ของแอปพลิเคชันกับ relayer แยกจากกัน. เจ้าของมี Nonce บัญชี EOA เท่ากับ
18โทเค็น ERC-2612 รายงานnonces(owner) = 7และ Nonce ของ EOA ฝั่ง relayer คือ42Permit ที่สำเร็จใช้ Nonce แอปพลิเคชัน7ทำให้เป็น8ขณะที่การบรรจุทำให้ Nonce ของ relayer เป็น43และ Nonce ของ EOA เจ้าของยังเป็น18หาก call ทั้งหมด revert Nonce ของ relayer ยังเป็น43แต่การอัปเดตพื้นที่จัดเก็บของโทเค็นย้อนกลับเป็น7 - ช่องทาง ERC-4337. ตามนิพจน์ประกอบเพื่อการเรียนรู้
nonce = (key << 64) | sequenceคีย์5กับลำดับ9ให้ค่า5 * 2^64 + 9 = 92,233,720,368,547,758,089ส่วนลำดับ10ให้92,233,720,368,547,758,090คีย์อิสระ6กับลำดับ0ให้110,680,464,442,257,309,696การใช้แบบขนานยังขึ้นกับตรรกะตรวจสอบของบัญชีอัจฉริยะ และแยกจาก Nonce ธุรกรรม EOA ของ bundler - Nonce สำหรับค้นหา PoW. Nonce ในส่วนหัว Bitcoin มีขนาด
32 bitsจึงมีตัวเลขผู้สมัคร2^32 = 4,294,967,296ค่า ที่อัตราสมมติ100 TH/sการไล่ครบพื้นที่ดังกล่าวใช้เวลา4,294,967,296 / 100,000,000,000,000 = 0.00004294967296 seconds = 42.94967296 microsecondsนักขุดเปลี่ยน extraNonce ใน coinbase, เวลา หรือชุดธุรกรรมเพื่อเปลี่ยน Merkle root และสร้างส่วนหัวใหม่ ฟิลด์นี้ไม่ใช่สถานะป้องกัน replay ของบัญชี
ความเสี่ยง
- สับสนเนมสเปซ Nonce ของ EOA สัญญา แอปพลิเคชัน ERC-4337 และ PoW
- อ่าน Nonce จากเชน ฟอร์ก สัญญา หรือ EntryPoint ที่ไม่ถูกต้อง
- ใช้คำตอบ RPC ที่ล้าสมัย ไม่สอดคล้องกัน หรือเป็นอันตราย
- ผู้ลงนามพร้อมกันจัดสรร Nonce ธุรกรรม EOA เดียวกัน
- ช่องว่างของ Nonce ขัดขวางธุรกรรมผู้สมัครในเครื่องลำดับถัดไป
- ถือว่า Nonce แบบ pending ของผู้ให้บริการคือสถานะตามเชนหลัก
- ลืมว่าธุรกรรมที่ถูกบรรจุแต่ revert ยังใช้ Nonce ของ EOA และ gas
- ไม่ฟื้นฟู Nonce และสายประวัติผู้สมัครหลังการปรับโครงสร้างเชน
- ธุรกรรมทดแทนที่ใช้ Nonce เดิมไม่ผ่านนโยบายค่าธรรมเนียมของโหนดเป้าหมาย
- สมมติว่าการทดแทนลบธุรกรรมเดิมที่ลงนามแล้วออกจากทุกแห่ง
- เชื่อมโยงเลข Nonce ที่เท่ากันจากผู้ส่งหรือโดเมนต่างกัน
- ละเว้น chain ID หรือตัวแบ่งโดเมนลายเซ็นอื่นที่จำเป็น
- ไม่ตรวจสอบและเพิ่ม Nonce แอปพลิเคชันแบบอะตอมมิก
- ใช้เจ้าของ กำหนดเวลา ตัวแบ่งโดเมน หรือสัญญาโทเค็น ERC-2612 ผิด
- นำลายเซ็นแอปพลิเคชันไป replay ข้ามเชน สัญญา หรือเวอร์ชัน
- ตีความ Nonce สถานะของบัญชีสัญญาเป็นตัวนับการ call ทั่วไป
- ประกอบคีย์ Nonce หรือความกว้างของลำดับ ERC-4337 ผิด
- สับสน Nonce ของ EOA ฝั่ง bundler กับ Nonce
UserOperationของบัญชีอัจฉริยะ - การอัปเกรด proxy หรือการชนกันของพื้นที่จัดเก็บเปลี่ยนพฤติกรรม Nonce แอปพลิเคชัน
- ถือว่า Nonce ค้นหา PoW ที่มีขอบเขตเป็นการอนุญาต สถานะป้องกัน replay หรือหลักฐานโดยลำพัง
ความเข้าใจผิดที่พบบ่อย
- ทุกฟิลด์ที่เรียกว่า Nonce มีความหมายเดียวกันและถูกใช้ครั้งเดียวทั่วโลก
- Nonce ที่มากกว่าทำให้ธุรกรรมปลอดภัยกว่า เร็วกว่า หรือมี finality มากกว่า
- ธุรกรรม Ethereum ที่ revert ไม่ใช้ Nonce ของผู้ส่ง
- Nonce เพียงอย่างเดียวป้องกัน replay ข้ามเชน ข้ามสัญญา และข้ามข้อความแบบมีโครงสร้างได้ทั้งหมด
- บัญชีอัจฉริยะ ERC-4337 ทุกบัญชีมีตัวนับเชิงเส้นหนึ่งตัวเหมือน Nonce ธุรกรรม EOA
หัวข้อที่เกี่ยวข้อง
แหล่งข้อมูล
- Ethereum accounts - Ethereum.org (เข้าถึงเมื่อ: 2026-08-13)
- Transactions - Ethereum.org (เข้าถึงเมื่อ: 2026-08-13)
- EIP-2681: Limit account nonce to 2^64-1 - Ethereum Improvement Proposals (เข้าถึงเมื่อ: 2026-08-13)
- EIP-155: Simple replay attack protection - Ethereum Improvement Proposals (เข้าถึงเมื่อ: 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (เข้าถึงเมื่อ: 2026-08-13)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (เข้าถึงเมื่อ: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (เข้าถึงเมื่อ: 2026-08-13)
- Block Chain - Bitcoin Developer Documentation (เข้าถึงเมื่อ: 2026-08-13)