วัตถุประสงค์
ในบทความนี้จะอธิบายลึกซึ้งมากยิ่งขึ้นของ 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) ที่ต้องเซ็นต์ในแฮชและป้องกันบล๊อกจากรีเพลย์อะแทค