15 เพิ่มเติมเกี่ยวกับ Double Spend, Proof-of-Work, และค่าธรรมเนียมธุรกรรม

แปลโดย : Claude 3 Opus (Pro)

15

เพิ่มเติมเกี่ยวกับ Double Spend, Proof-of-Work, และค่าธรรมเนียมธุรกรรม

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

Re: บทความเกี่ยวกับ Bitcoin P2P e-cash

Satoshi Nakamoto จันทร์ที่ 17 พ.ย. 2008 09:04:470800

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

Ray Dillinger (Bear) เขียนว่า:

เมื่อเหรียญถูกใช้จ่าย ผู้ซื้อและผู้ขายจะเซ็นลายมือชื่อดิจิทัลในบันทึกธุรกรรม (ที่ถูกบดบัง)

มีเพียงผู้ซื้อเท่านั้นที่เซ็น และไม่มีการบดบังใดๆ

หากใครทำการใช้จ่ายซ้ำ (double spend) บันทึกธุรกรรมจะสามารถถูกเปิดเผยเพื่อเปิดเผยตัวตนของผู้ที่ฉ้อโกง

ไม่มีการใช้ตัวตน และไม่เชื่อมั่นในการพึ่งพาการเยียวยา ทุกอย่างเป็นการป้องกัน

สิ่งนี้ทำผ่านอัลกอริทึม cut-and-choose มาตรฐานพอสมควร โดยผู้ซื้อจะตอบสนองต่อความท้าทายหลายครั้งด้วยการแชร์ข้อมูลลับ

ไม่มีการท้าทายหรือแชร์ข้อมูลลับ ธุรกรรมพื้นฐานก็เป็นแค่สิ่งที่คุณเห็นในรูปในส่วนที่ 2 ลายเซ็น (ของผู้ซื้อ) ที่ตอบสนองต่อคีย์สาธารณะของธุรกรรมก่อนหน้า และคีย์สาธารณะใหม่ (ของผู้ขาย) ที่ต้องได้รับการตอบสนองเพื่อใช้จ่ายในครั้งต่อไป

พวกเขาอาจได้รับ chain ที่ยาวเท่ากับ chain ที่พวกเขาพยายามขยายในระหว่างที่พวกเขาทำงาน โดย "ลิงค์" สองสามอันสุดท้ายเป็นลิงค์ที่ไม่ได้เป็นส่วนร่วมกับ chain ที่พวกเขากำลังทำงานอยู่

พวกเขาจะละเว้นสิ่งเหล่านี้

ใช่ หากมีความยาวเท่ากัน ผลเสมอจะถูกตัดสินโดยใช้ตัวที่ได้รับก่อนหน้า

หากมันมีการใช้จ่ายซ้ำ (double spend) พวกเขาจะสร้าง "transaction" ซึ่งเป็นหลักฐานของการใช้จ่ายซ้ำ เพิ่มมันเข้าไปในพูล A ของพวกเขา ออกอากาศมัน และทำงานต่อไป

ไม่จำเป็นต้องรายงาน "หลักฐานการใช้จ่ายซ้ำ" แบบนั้น หาก chain เดียวกันมีทั้งสองการใช้จ่าย บล็อกนั้นก็จะไม่ถูกต้องและถูกปฏิเสธ

เช่นเดียวกับหากบล็อกมี proof-of-work ไม่เพียงพอ บล็อกนั้นก็จะไม่ถูกต้องและถูกปฏิเสธ ไม่จำเป็นต้องเผยแพร่รายงานเกี่ยวกับมัน ทุกโหนดสามารถเห็นและปฏิเสธมันก่อนที่จะส่งต่อได้

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

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

แม้ว่าการใช้จ่ายก่อนหน้าจะยังไม่อยู่ใน chain หากมันอยู่ในพูลของโหนดทั้งหมดอยู่แล้ว การใช้จ่ายครั้งที่สองก็จะถูกปฏิเสธโดยโหนดทั้งหมดที่มีการใช้จ่ายครั้งแรกอยู่แล้ว

หาก chain ใหม่ถูกยอมรับ พวกเขาจะยกเลิกการเพิ่มลิงก์ปัจจุบัน ทิ้งธุรกรรมทั้งหมดจากพูล L กลับไปที่พูล A (พร้อมกับธุรกรรมที่พวกเขาได้รับหรือสร้างขึ้นมาตั้งแต่เริ่มต้นการทำงาน) นำออกจากพูล A ซึ่งบันทึกธุรกรรมที่เป็นส่วนหนึ่งของลิงก์ใน chain ใหม่อยู่แล้ว แล้วเริ่มทำงานต่ออีกครั้งโดยพยายามขยาย chain ใหม่

ถูกต้อง พวกเขายังรีเฟรชเมื่อมีธุรกรรมใหม่เข้ามา ดังนั้นพูล L จึงมีแทบทุกอย่างใน A ตลอดเวลา

อัลกอริทึมลายเซ็นดิจิทัลที่ใช้ CPU เข้มข้นเพื่อเซ็นต์ chain รวมถึงบล็อก L ใหม่

มันเป็น proof-of-work แบบ SHA-256 สไตล์ Hashcash (pre-image บางส่วนเป็นศูนย์) ไม่ใช่ลายเซ็น

มีกลไกที่จะทำให้แน่ใจว่า "chain" ไม่ได้ประกอบด้วยลิงก์ที่เพิ่มโดยโหนด 3 หรือ 4 ตัวที่เร็วที่สุดเท่านั้นหรือไม่? เพราะบันทึกธุรกรรมที่ออกอากาศอาจพลาดโหนด 3 หรือ 4 ตัวนั้นได้ง่าย และหากเป็นเช่นนั้น และโหนดเหล่านั้นยังคงครอบงำ chain อยู่ ธุรกรรมอาจไม่ถูกเพิ่มเข้าไปเลย

หากคุณคิดว่ามันเป็นการลงลายมือชื่อดิจิทัลที่ใช้ CPU เข้มข้น คุณอาจคิดถึงการแข่งขันเพื่อทำงานยาวให้เสร็จก่อนและเร็วที่สุดเสมอ

proof-of-work เป็นการค้นหา collision ของ SHA-256 แบบ Hashcash มันเป็นกระบวนการที่ไม่ต้องจำที่คุณทำแฮชนับล้านครั้งต่อวินาที โดยมีโอกาสเล็กน้อยที่จะพบหนึ่งอันในแต่ละครั้ง การครอบงำของโหนด 3 หรือ 4 ตัวที่เร็วที่สุดจะเป็นสัดส่วนกับส่วนแบ่งพลัง CPU ทั้งหมดของพวกเขาเท่านั้น โอกาสของใครก็ตามที่จะหาคำตอบได้ทุกเมื่อจะเป็นสัดส่วนกับพลัง CPU ของพวกเขา

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

นอกจากนี้ ข้อกำหนดการทำงานในการเพิ่มลิงก์ลงใน chain ควรแตกต่างกันไป (อีกครั้งแบบเอ็กซ์โพเนนเชียล) ตามจำนวนลิงก์ที่เพิ่มลงใน chain นั้นในสัปดาห์ก่อนหน้า ทำให้อัตราการสร้างเหรียญ (และอัตราเงินเฟ้อ) ถูกควบคุมอย่างเข้มงวด

ถูกต้อง

คุณต้องการการรวมกลุ่มเหรียญเพื่อให้มาตรานี้ใช้ได้ จำเป็นต้องมีธุรกรรมที่ "พิสูจน์ได้" ซึ่งใครบางคนนำเหรียญเดี่ยว 10 เหรียญออกและสร้างเหรียญใหม่ที่มีมูลค่า 10 เป็นต้น

ทุกธุรกรรมเป็นหนึ่งในสิ่งเหล่านี้ ส่วนที่ 9, การรวมและแยกมูลค่า

Satoshi Nakamoto

The Cryptography Mailing List

Last updated