ลองนึกภาพคุณมี blockchain ที่รูปแบบ Proof of Work คือการแยกตัวประกอบจำนวนเต็ม มี opcode ที่รับจำนวนเต็มสองตัว $N,ล้านเหรียญ โดยที่มันจะคืนค่าจริงถ้า $M\not\in \{0,1,N\}$ และ $N \mod M \equiv 0$. สมมุติว่าเราต้องการจำนวนที่แยกตัวประกอบ เช่น $M_g$. อาจเป็นเลขคันนิงแฮม เลขเก่ง หรือเลขอื่นๆ ที่มีความสนใจในการทราบการแยกตัวประกอบ
เราสามารถสร้างธุรกรรมโดยที่สคริปต์ล็อคสำหรับเงินของธุรกรรมคือ opcode นี้ด้วย $M_g$ เป็นอินพุตแรก ด้วยวิธีนี้สคริปต์การปลดล็อกเป็นเพียงปัจจัยที่ไม่สำคัญของ $M_g$. สิ่งนี้จะทำให้ทุกคนในบล็อกเชนสามารถรับรางวัลสำหรับการแยกตัวประกอบนี้ได้
สองประเด็น: การโจมตีคนขุดแร่ที่อยู่ตรงกลาง และการโจมตีการปรับโครงสร้างองค์กร
การโจมตีของคนขุดแร่ที่อยู่ตรงกลาง: นักขุดที่ได้รับธุรกรรมด้วยสคริปต์การปลดล็อกจะสามารถมองเห็นปัจจัยดังกล่าวได้อย่างชัดเจนและแทนที่ธุรกรรมนั้นด้วยธุรกรรมที่เงินถูกส่งไปยังกระเป๋าเงินของพวกเขาแทนที่จะเป็นของนักแก้ปัญหา
การโจมตีการปฏิรูป หากมูลค่าของเหรียญ blockchain สูง ก็ยังมีแรงจูงใจในการโจมตีบล็อกที่ธุรกรรมของนักแก้ปัญหาถูกขุดโดยการแก้บล็อกนั้นอีกครั้งด้วยธุรกรรมที่ถูกแทนที่ซึ่งรับรองตนเอง (ผู้โจมตี) และพยายามสร้างห่วงโซ่ที่ยาวขึ้นจากสิ่งนี้ บล็อกใหม่
ดังนั้น คำถามก็คือ วิธีแก้ปัญหาจะถูกส่งอย่างปลอดภัยในบล็อกเชนนี้ได้อย่างไร จำเป็นต้องใช้ opcode ใหม่หรือไม่? เป็นไปได้ไหมที่จะทำธุรกรรมสองรายการ หรือต้องทำธุรกรรมสามรายการ
ขอขอบคุณ.
บันทึก: ฉันไม่พบแท็กที่ดีสำหรับคำถามนี้ ดังนั้นฉันจึงเลือกสิ่งที่เกี่ยวข้องกับระยะไกล ดูเหมือนว่าการแลกเปลี่ยน bitcoin stack นั้นมีไว้สำหรับ bitcoin อย่างเคร่งครัด