วัตถุประสงค์

ในบทความนี้จะอธิบายลึกซึ้งมากยิ่งขึ้นของ nonces และมันช่วยบล๊อกเชนได้อย่างไรในการป้องกันการมีบล๊อกซ้ำ

สมมติฐาน

บทความนี้ถือว่าผู้อ่านเข้าใจข้อมูลในบทความด้านล่างแล้ว

Blockchain Basics(TODO: Check URL!)

บล๊อก (Blocks)(TODO: Check URL!)

แฮช (Hashes)(TODO: Check URL!)

สรุป


ส่วนมากของบล๊อกเชนนั้นจะมี nonces 2 รูปแบบด้วยกัน อันแรกเรียกว่า "บัญชี nonce" และอีกอันเรียกว่า "proof of consensus"  (nonce พิสูจน์ยืนยัน) บัญชี nonce นั้นจะทำหน้าที่ในการเป็นคิวสำหรับธุรกรรมที่เกี่ยวเนื่องกับที่อยู่กระเป๋า  บล๊อกแรกนั้นที่เพิ่มไปจะเป็นบัญชี nonce 1, บล๊อกที่สองจะเป็นบัญชี nonce 2 และจะนับไปอย่างนี้เรื่อยๆ เพื่อที่จะรักษาการบันทึกบัญชี nonce ระบบใดๆที่มีการใช้กับเชนก็จะรู้ว่าบัญชี nonce ถัดไปคืออ่ะไรโดยการรักษาลำดับนี้ไปเรื่อยๆ


nonce พิสูจน์ยืนยันหรือ (Proof of consensus) จะเป็นชุดตัวเลขที่ถูกคำนวณเพื่อที่จะได้เป็นแฮช "ถัดไป" ที่ต้องการสำหรับบล๊อกปัจจุบัน หลังจากนั้นบัญชี nonce ได้ถูกกำหนดแล้ว แฮช "ก่อนหน้านี้" ก็จะได้รับการบันทึกและธุรกรรมก็ถูกเขียนลงไป;บล๊อกต้องใช้แฮช "ถัดไป" เพื่อให้เชนนั้นดำเนินต่อไป ถ้าแฮช"ถัดไป" ต้องเริ่มต้นด้วยตัวเลขลำดับเฉพาะ เช่น 0x0000… วิธีเดียวที่จะสามารถทำได้คือการเพิ่มตัวเลขลงไปในบล๊อกจนกว่าจะมีการสร้างแฮช "ถัดไป" ออกมาที่ตรงตามเงื่อนไข
ตัวเลขที่สร้างออกมานี้เป็น nonce พิสูจน์ยืนยันหรือ (Proof of consensus)
เมื่อผู้ตรวจสอบใช้ซอฟแวร์ในการประมวลธุรกรรมบล๊อกเชน พวกเขามักจะคิดเลขเพื่อหา nonce ของบล๊อกที่เพราะว่ามันอาจจะถูกเพิ่มเข้าไปในเชน และเมื่อผู้ตรวจสอบคำนวณตัวเลข nonce ออกมาได้สมบูรณ์ ผู้ตรวจสอบก็จะสามารถพบบล๊อกถัดไปได้และจะได้รับรางวัลเป็นคริปโตเคอเรนซี่ของบล๊อกเชนนั้น


Nonces จะทำให้มีความปลอดภัยมากขึ้นไปอีกสำหรับธุรกรรมเพราะว่าไม่มีใครที่จะสามารถก๊อปปี้การขายได้อย่างแม่นยำ สิ่งนี้เรียกว่ารีเพลย์อะแทค (Replay Attack) 
สำหรับรีเพลย์อะแทค ผู้กระทำการไม่ดีนั้นจะก๊อปปี้ธุรกรรมที่ได้รับการอนุมัติแล้วแต่ว่าเปลี่ยนแปลงบางส่วนตามที่ต้องการ  เนื่องจากว่า  nonce พิสูจน์ยืนยันหรือ (Proof of consensus) ต้องถูกคำนวณเพื่อที่จะได้เพิ่มบล๊อกเข้าไปในเชน ดังนั้นตัวต้นฉบับจะต้องถูกเขียนลงไปก่อน 
หลังจากที่เขียนลงไปแล้ว บัญชี nonce จจะสามารถมั่นใจได้ว่าเป็นธุรกรรมที่มีเพียงแค่รายการเดียวและไม่สามารถก๊อปปี้แล้วส่งทีหลังได้ 
นอกจากนี้บัญชี nonces ยังสามารถป้องกันการทำธุรกรรมซ้ำกันหรือว่าทับซ้อนกันได้ด้วยหรือเรียกว่า การการจ่ายซ้ำเวลาที่ผู้ใช้งานนั้นพยายามที่จะส่งธุรกรรมอีกหลายครั้งเพื่อที่จะได้ใช้มากกว่าที่กระเป๋าของตนเองจะสามารถจ่ายได้ 
เนื่องจากว่ามีบัญชี nonce เฉพาะเจาะจงในแต่ละธุรกรรมมันจึงจะผ่านแค่อันเดียวและจะปฏิเสธรายการอื่นทั้งหมดเวลาที่บล๊อกเชนเห็น nonce เดียวกันในหลายๆครั้ง
ในแต่ละธุรกรรมจะได้รับความปลอดภัยทั้งบัญชี nonce เพราะความเป็นเอกลักษณ์และnonce พิสูจน์ยืนยันหรือ (Proof of consensus) ที่ต้องเซ็นต์ในแฮชและป้องกันบล๊อกจากรีเพลย์อะแทค