LearnBN on Nostr: POW ...
POW
การสร้างเซิร์ฟเวอร์บันทึกเวลาแบบกระจาย (Distributed Timestamp Server) ที่ทำงานแบบ peer-to-peer จะต้องอาศัยระบบ proof-of-work ซึ่งคล้ายกับ Hashcash ของ Adam Back
ระบบ proof-of-work ทำงานโดยการค้นหาค่า ๆ หนึ่งและเมื่อนำค่านั้นไปคำนวณ hash (เช่น SHA-256) ผลลัพธ์ (hash) จะต้องเริ่มต้นด้วยจำนวน bit ที่ได้กำหนดไว้ โดยความยากในการทำงาน (work) จะเพิ่มขึ้นแบบทวีคูณตามจำนวน bit ที่ต้องการ แต่ในการตรวจสอบความถูกต้องนั้นกับสามารถทำได้โดยการคำนวณ hash เพียงครั้งเดียว
โดยในระบบของบิตคอยน์จะมีการเพิ่มค่า nonce ลงไปในแต่ละบล๊อก จนกว่าจะพบค่าที่ทำให้ hash ของบล็อกเริ่มต้นด้วยจำนวน bit ที่กำหนดไว้ เมื่อใช้พลังประมวลผลเพื่อให้บล็อกสอดคล้องกับ proof-of-work แล้ว บล็อกนั้นจะไม่สามารถแก้ไขได้โดยไม่ต้องทำ proof-of-work ใหม่ เนื่องจากบล็อกใหม่ ๆ จะถูกเชื่อมโยงต่อกันหลังจากบล็อกนั้นแล้ว การแก้ไขบล็อกเดิมจะต้องทำ proof-of-work ใหม่สำหรับบล็อกนั้นและบล็อกทั้งหมดที่ตามมา นอกจากนี้ proof-of-work ยังแก้ปัญหาการตัดสินใจแบบเสียงข้างมากด้วย เพราะการตัดสินใจแบบเสียงข้างมากมักใช้ IP ในการนับโหวต ในระบบแบบนี้สามารถถูกโจมตีได้โดยบุคคลที่สามารถควบคุม IP address ได้ในจำนวนมาก แต่ proof-of-work เป็นเหมือนการใช้กำลังในการประมวลผลในการตัดสินใจแบบเสียงข้างมากจะแสดงโดย chain ที่ยาวที่สุดซึ่งมี proof-of-work ที่ถูกลงทุนไปมากที่สุด หากพลังประมวลผลของ majority เป็นของ node ที่ซื่อสัตย์ chain ของ node ที่ซื่อสัตย์จะเติบโตเร็วที่สุดและจะเหนือกว่า chain อื่น ๆ
เพื่อชดเชยความเร็วของฮาร์ดแวร์ที่เพิ่มขึ้นและความสนใจที่แตกต่างกันในการทำงานของ node และความยากของ proof-of-work จะถูกกำหนดโดยค่าเฉลี่ยทุก ๆ 2016 บล๊อก ซึ่งมีเป้าหมายที่จำนวนบล็อกต่อชั่วโมง หากบล็อกถูกสร้างขึ้นเร็วเกินไป ความยากจะเพิ่มขึ้น หากช้าไปก็จะง่ายขึ้นแทน โดยมีสมการในการปรับดังนี้ New Difficulty = Old Difficulty × (Actual Time / Target Time)
#siamstr
Published at
2024-07-13 12:26:48Event JSON
{
"id": "92dd304c0fad36e0bc1b5903cfb6fcac5e2d0058984e65f280d5e5f9af004ec3",
"pubkey": "79008e781adec767cc8e239b533edcb19ea2e260f9281a9125e93425dfac9395",
"created_at": 1720873608,
"kind": 1,
"tags": [
[
"t",
"siamstr"
]
],
"content": "POW\n\nการสร้างเซิร์ฟเวอร์บันทึกเวลาแบบกระจาย (Distributed Timestamp Server) ที่ทำงานแบบ peer-to-peer จะต้องอาศัยระบบ proof-of-work ซึ่งคล้ายกับ Hashcash ของ Adam Back\n\nระบบ proof-of-work ทำงานโดยการค้นหาค่า ๆ หนึ่งและเมื่อนำค่านั้นไปคำนวณ hash (เช่น SHA-256) ผลลัพธ์ (hash) จะต้องเริ่มต้นด้วยจำนวน bit ที่ได้กำหนดไว้ โดยความยากในการทำงาน (work) จะเพิ่มขึ้นแบบทวีคูณตามจำนวน bit ที่ต้องการ แต่ในการตรวจสอบความถูกต้องนั้นกับสามารถทำได้โดยการคำนวณ hash เพียงครั้งเดียว \n\nโดยในระบบของบิตคอยน์จะมีการเพิ่มค่า nonce ลงไปในแต่ละบล๊อก จนกว่าจะพบค่าที่ทำให้ hash ของบล็อกเริ่มต้นด้วยจำนวน bit ที่กำหนดไว้ เมื่อใช้พลังประมวลผลเพื่อให้บล็อกสอดคล้องกับ proof-of-work แล้ว บล็อกนั้นจะไม่สามารถแก้ไขได้โดยไม่ต้องทำ proof-of-work ใหม่ เนื่องจากบล็อกใหม่ ๆ จะถูกเชื่อมโยงต่อกันหลังจากบล็อกนั้นแล้ว การแก้ไขบล็อกเดิมจะต้องทำ proof-of-work ใหม่สำหรับบล็อกนั้นและบล็อกทั้งหมดที่ตามมา นอกจากนี้ proof-of-work ยังแก้ปัญหาการตัดสินใจแบบเสียงข้างมากด้วย เพราะการตัดสินใจแบบเสียงข้างมากมักใช้ IP ในการนับโหวต ในระบบแบบนี้สามารถถูกโจมตีได้โดยบุคคลที่สามารถควบคุม IP address ได้ในจำนวนมาก แต่ proof-of-work เป็นเหมือนการใช้กำลังในการประมวลผลในการตัดสินใจแบบเสียงข้างมากจะแสดงโดย chain ที่ยาวที่สุดซึ่งมี proof-of-work ที่ถูกลงทุนไปมากที่สุด หากพลังประมวลผลของ majority เป็นของ node ที่ซื่อสัตย์ chain ของ node ที่ซื่อสัตย์จะเติบโตเร็วที่สุดและจะเหนือกว่า chain อื่น ๆ\n\nเพื่อชดเชยความเร็วของฮาร์ดแวร์ที่เพิ่มขึ้นและความสนใจที่แตกต่างกันในการทำงานของ node และความยากของ proof-of-work จะถูกกำหนดโดยค่าเฉลี่ยทุก ๆ 2016 บล๊อก ซึ่งมีเป้าหมายที่จำนวนบล็อกต่อชั่วโมง หากบล็อกถูกสร้างขึ้นเร็วเกินไป ความยากจะเพิ่มขึ้น หากช้าไปก็จะง่ายขึ้นแทน โดยมีสมการในการปรับดังนี้ New Difficulty = Old Difficulty × (Actual Time / Target Time)\n\n#siamstr",
"sig": "3898db244d23df5fae235ef4643488db43771b8ac306a796eea325db858cb971910ddd73de31f97c07ddfdd900670201faebeb6823679accb6203426e2bcc459"
}