พรู๊ฟเสร็จ Expert แน่นอน 5555
🙋♂️ ECDSA ฉบับเตรียมสอบ‼️ #Siamstr
❗️ทุกคนที่ผ่านการร่ำเรียนในระดับชั้นต่าง ๆ มาคงรู้ใช่มั้ยครับว่าก่อนสอบจะมีเพื่อนมาปล่อยโผ!! ซึ่งมันคือข้อมูลที่นำไปใช้สอบเพื่อ 'ผ่าน' แต่คงไม่มีทางเข้าใจอย่างถ่องแท้จากแค่โผแน่ ๆ 5555 😊
✅วันนี้ผมก็ขอลองปล่อยโผ ECDSA ให้เพื่อน ๆ ลองอ่านเล่น ๆ กันนะครับ เผื่อต้องไปตอบคำถามป้าข้างบ้านว่าทำไม Bitcoin Address มันถึงคำนวนย้อนกลับไปหา Private Key ไม่ได้ 🤔
.
➡️ เริ่มต้นด้วยทฤษฎีก่อน ,, ECDSA ย่อมาจาก Elliptic Curve Digital Signature Algorithm โดยในตัวบิตคอยน์เนี่ย.. มันใช้ Parameters secp256k1 ซึ่งในรายละเอียดมันคืออะไรนั้น .. ช่างมันเถอะนะ 😎
เอาเป็นว่า...
✅ มันคือกล่องสี่เหลี่ยมที่เต็มไปด้วยจุดตัวเลขจำนวนเต็มพิกัด x,y ต่าง ๆ 'จำนวนมหาศาล' ,, ถ้าจินตนาการไม่ออกว่ามันเยอะแค่ไหนลองดูภาพประกอบด้านล่างได้
➡️ ค่า x และ y ที่เป็นไปได้ คือ จำนวนเต็มที่มีค่าระหว่าง 0 ถึง 1.15792 x 10^77 หรือประมาณ "หนึ่งแสน หนึ่งหมื่น ห้าพัน เจ็ดร้อย เก้าสิบ สอง ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน ล้าน" ตัวเลขเท่านั้นเอง 😇
➡️ ค่า x, y ทุก ๆ ค่าจะเป็นไปตามสมการ y^2 mod p = x^3 + 7 mod p (ใคร งง ตรงนี้ข้ามไปได้เลย ,, ไว้วันที่กินเบียร์งาน Meetup เดี๋ยวเล่าให้ฟัง) 👍
.
❗️ทีนี้เรามาเข้าเรื่องกันเลยดีกว่า ทำไมเราถึงไม่สามารถคำนวนย้อนกลับจาก Bitcoin Address ไปหา Private Key ได้ ? ลองดูในรูปประกอบนะฮะ ,, ซึ่งเป็นตัวอย่างการคำนวนแค่ 5G เพื่อให้เข้าใจง่ายและเห็นภาพเท่านั้นเอง

➡️ เริ่มต้นจากจุด G หรือเป็นค่าคงที่ที่กำหนดไว้แล้ว เรียกว่า Generator Point (หมายเลข 1 ในภาพประกอบ)
1️⃣ จากนั้นคำนวนหา 2G (2G = G+G) ซึ่ง..มันมีสมการคำนวนแหละ แต่ยังไม่ต้องรู้หรอก ,, เอาเป็นว่า เราจะได้จุด 2G ตามหมายเลข 2 ในภาพประกอบ
2️⃣ จากนั้นคำนวนหาจุด 4G ซึ่งเราจะใช้ข้อมูลจากจุด 2G มาคำนวน (4G = 2G + 2G) ทำให้การคำนวนรวดเร็วมากขึ้น (เร็วกว่า 4G = G+G+G+G)
3️⃣ สุดท้ายก็จะนำค่าพิกัด x,y ที่จุด 4G มาบวกกับค่า G ก็จะได้พิกัดของจุด 5G ตามต้องการ เย้ 🎉
✅ แต่ถ้าเราต้องการ 10G ล่ะ ? ใช่แล้วแหละ เราก็จะคำนวนจาก 10G = 5G+5G ก็จะได้ตำแหน่งของ 10G ทันที ,, และเช่นเดียวกัน ถ้าเราต้องการตำแหน่ง 100G เราก็จะใช้วิธีการบวกทบ ๆ กันไปเรื่อย ๆ ตามตัวอย่างแบบที่อธิบายแหละ 👍
.
🙋♂️ ดูแล้วก็ไม่น่ายากนี่น่า.. งั้นลองคิดกลับกัน
‼️ถ้าเรารู้พิกัด x = 7.33209 x 10^76 และ y = 7.40137 x 10^76 ,, เราจะสามารถหา 'จำนวนตัวเลข' ที่มาคูนกับ G แล้วผลลัพธ์เป็นพิกัดดังกล่าวได้มั้ยนะ ? 🤔
✅ ใช่แล้ว.... มันไม่มีสมการคำนวนย้อนกลับ ,, เพราะฉะนั้น เราไม่มีทางรู้ว่า 'ตัวเลข' ไหนที่นำมาคำนวนกับค่า G แล้วจะได้ผลลัพธ์นั้นแบบ 'พอดีเป๊ะ ๆ' นอกจากว่าจะลองคำนวนจาก G+G+G+G..... ไปเรื่อย ๆ จนกว่าจะเจอตัวเลขที่ต้องการ 👍
.
❗แต่ Bitcoin Address มันไม่ได้คำนวนจากตัวเลขน้อย ๆ แค่ 5G เหมือนที่ผมสาธิตหน่ะสิ
‼️ตัวเลขจำนวนเต็มที่ใช้คูนกับค่า G มันก็คือ 'Private Key' นั่นเอง
➡️ สมมุติว่า Private Key = 0000000000000000000000000000000000000000000000000DE0B6B3A7640000
➡️ เมื่อแปลงเป็นเลขฐาน 10 คือ 1,000,000,000,000,000,000 (1 ล้าน ล้าน ล้าน)
นั่นหมายความว่า ...
✅ กระบวนการ kG ก็คือ การบวกค่า G เรื่อย ๆ ทั้งหมด '1 ล้าน ล้าน ล้าน' ครั้ง ,, แล้วผลลัพธ์ที่ได้จะถูกนำไปใช้คำนวนหา Public Key ต่อไป (ผลลัพธ์ยังไม่ใช่ Bitcoin Address นะฮะ ,, การได้ Bitcoin Address ที่เราใช้งานกันยังต้องผ่านกระบวนการเพิ่มเติมอีกเล็กน้อย)
🙋♂️ รู้แบบนี้แล้ว… ยังจะมีใครลองพยายามคำนวน Public Key กลับไปเป็น Private Key อยู่อีกมั้ยนะ ? 😘
.
❗ทิ้งท้ายไว้อีกนิด เผื่อมีคนสงสัยว่า…ถ้าเราใช้วิธีการ 'สุ่ม' ไปเรื่อย ๆ หรือ Brute Force ทำได้มั้ย ? 🤔
✅ ขอตอบว่า ‘ทำได้แน่นอน’ แต่...ชาตินี้คุณมีเวลาชีวิตพอหรือป่าวล่ะ ?
➡️ ยกตัวอย่าง Private Key ด้านบน ,, คุณใช้คอมพิวเตอร์ที่สามารถสุ่มได้ 1 ล้านรหัสต่อวินาที (โคตรเร็ว) 😱
➡️ คุณต้องใช้เวลาอีก 1 ล้าน ล้าน วินาที ในการสุ่มจนกว่าจะเจอ Private Key (ประมาณ 11,574,074 วัน หรือ 31,709 ปี) 🥶
.
🙋♂️ พอเห็นภาพกันมั้ยครับ ? ว่า..
🧡 'บิตคอยน์' เป็นระบบการเงินที่โคตรของโคตรปลอดภัยในปัจจุบันนี้เลย
ป.ล.ภาพประกอบผมใช้ Matlab สร้างกราฟให้ครับ ,, ส่วนผลลัพธ์การคำนวนแต่ละจุดให้ ChatGPT ช่วย ,, ตัวเลขอาจจะตรงบ้างไม่ตรงบ้าง แต่โดยหลักการแล้วถูกต้องตามนี้ 😇🙏
#เวลามีค่าศึกษาบิตคอยน์
#Siamstr
เข้าใจว่าเป็นการเพิ่มความปลอดภัยครับ เช่น ถ้าในอนาคต SHA256 มีจุดอ่อนหรือช่องโหว่ การใช้ DoubleSHA256 ก็จะยังคงปลอดภัยอยู่
และการใช้ Double SHA256 เป็นการป้องกัน Length Extension Attack ที่อาจจะเกิดขึ้นได้
**Length Extension Attack เป็นการโจมตีที่อาศัยคุณสมบัติของฟังก์ชันแฮชที่ใช้โครงสร้าง Merkle–Damgård ซึ่งทำให้ผู้โจมตีสามารถ สร้างแฮชใหม่ที่ถูกต้องได้โดยไม่ต้องรู้ค่าเริ่มต้น
https://crypto.stackexchange.com/questions/3978/understanding-the-length-extension-attack
"ผมกำลังหัดทำคลิปคาถาแยกเงาพันร่างด้วยcapcutอยู่ มาพยายามด้วยกันนะ🥰" T.tukjedsadatik
https://video.nostr.build/cf7d4c3f6f3f672bbdcdf46f5af2050af9950143ee2f9fdad7b1bc96b95099f8.mp4
คุณพ่อน่าจะชินแล้ว 😘
ง่าย ๆ มันก็คือการหาตำแหน่งพิกัด x,y ที่อยู่บนเส้นกราฟนี้ โดยเริ่มจากจุดเริ่มต้น G ซึ่งจะอยู่ตรงที่ตำแหน่ง
x = 55066263022277343669578718895168534326250603453777594175500187360389116729240
y = 32670510020758816978083085130507043184471273380659243275938904335757337482424

จากนั้นก็จะหาจุด x,y ที่เกิดจากการคูนด้วยตัวเลข Private Key (มันก็เด้งไปเด้งมาเหมือนในรูปตัวอย่างนี้แหละ แต่จำนวนที่มันเด้งไปเด้งมาก็ประมาณค่าของตัวเลข Private Key)
เราก็จะได้ตำแหน่งของจุด x,y และนำมาคำนวนเป็น Public Key เพื่อทำเป็น Address ต่อ
พอเข้าใจมะ
ถ้ายังไม่เข้าใจลองอ่านบทความของครูเต้ครับวินหวี https://rightshift.to/2023/taetae2466/7207
🙋♂️ เมื่อวานได้ฟังพี่หลามอธิบายถึงโครงสร้างของข้อมูลแต่ละ Block ของบิตคอยน์ใน Right Tech EP.1 แล้วพบว่า... มันมหัศจรรย์มากกกกกก ผมเลยต้องกลับไปอ่านหนังสือ Mastering Bitcoin 2nd by Andreas M. Antonopoulos อีกรอบ 5555 😊
❗️ซึ่งโพสต์นี้จะขอขยายความว่าเจ้าระบบบิตคอยน์ที่ทุกคนเคยได้ยินมาว่า "มันเปลี่ยนแปลงข้อมูลไม่ได้" หมายถึงอะไรกัน ? 🤔
.
➡️ จริง ๆ ต้องเกริ่นก่อนว่า.. Database ทุก ๆ ชนิดบนโลกมันสามารถ "เปลี่ยนแปลงข้อมูล" ได้ และ "Block chain" มันก็คือ Database ชนิดหนึ่งที่ใช้กระบวนการเก็บข้อมูลต่อเนื่องเรียงกันเป็น Block ต่อไปเรื่อย ๆ ไม่มีที่สิ้นสุด และสามารถเรียกดูข้อมูลจากอดีตถึงปัจจุบันได้ทั้งหมด (ต่างจาก Database บางระบบที่ใช้การบันทึกข้อมูล "ซ้ำ" ลงไปแทนที่ข้อมูลเดิม) ดังนั้น ข้อมูลในตัว Block Chain มันก็สามารถเปลี่ยนแปลงได้เช่นกัน ✅
.
แต่‼️ ระบบบิตคอยน์นั้น ,, เราได้เพิ่มกระบวนการที่เรียกว่า "Cryptographic Hash Algorithm" มาประกอบการใช้งานกับ Block chain ซึ่งมันคือการ "เก็บลายนิ้วมือ" ของข้อมูลต่าง ๆ ที่มีอยู่ในบล็อกนั้น และมีการบรรจุ "ลายนิ้วมือ" อันนี้ลงไปในบล็อกถัดไปที่กำลังจะสร้างด้วย 👍
✅ กระบวนการนี้จึงทำให้การเปลี่ยนแปลงข้อมูลในบล็อกก่อนหน้านั้น "ทำไม่ได้" เพราะว่าถ้ามีส่วนหนึ่งส่วนใดของข้อมูลในบล็อกก่อนหน้า "เปลี่ยนไป" แม้เพียงเล็กน้อย (เช่น การเพิ่มเว้นวรรค หรือตัวอักษรพิมพ์ใหญ่พิมพ์เล็กไม่เหมือนกัน) ก็จะส่งผลให้ "ลายนิ้วมือ" ของข้อมูลในบล็อกนั้น "เปลี่ยนไป" ทั้งหมด 😎
.

จากภาพประกอบจะเห็นได้ว่า
➡️ Block Height : 277,316 จะมีส่วนข้อมูล "ลายนิ้วมือ" จากบล็อก 277,315
➡️ Block Height : 277,315 ก็จะมีส่วนข้อมูล "ลายนิ้วมือ" จากบล็อก 277,314
➡️ Block Height : 277,314 ก็จะมีส่วนข้อมูล "ลายนิ้วมือ" จากบล็อก 277,313
✅ และแน่นอนว่า Block Height : 277,317 ก็จะต้องนำ "ลายนิ้วมือ" จากบล็อก 277,316 ไปประกอบเป็นส่วนหนึ่งในข้อมูลของบล็อก
‼️ซึ่งข้อมูลต่าง ๆ ที่อยู่ใน Block Header นั้น ถูกคิดมาเป็นอย่างดีแล้วว่า "สำคัญ", "ประหยัดพื้นที่" และ "มีความรวดเร็วในการยืนยัน" ,, โดยเฉพาะส่วนของ Merkle Trees ซึ่งเป็นข้อมูล Hashing ของ Transaction ทั้งหมดในบล็อกนั้น (การใช้โครงสร้าง Merkle Trees นั้นจะช่วยให้การยืนยันข้อมูลธุรกรรมของ "Node" เป็นไปด้วยความรวดเร็ว และมีประสิทธิภาพมากที่สุด)
.
ดังนั้นจึงสรุปได้ว่า…
❗️ข้อมูลใน Block Chain มันสามารถ “เปลี่ยนแปลง” ได้ ✅
‼️แต่ Block Chain ของระบบบิตคอยน์จะมีส่วนที่เรียกว่า Block Header Hash ซึ่งเปรียบเสมือน "ลายนิ้วมือ" ของข้อมูลในบล็อกก่อนหน้า
✅ เจ้าส่วนนี้แหละที่เป็นตัวทำให้การแก้ไขข้อมูลในบล็อกเป็นเรื่องที่ "เป็นไปไม่ได้" เพราะทันทีที่มีการแก้ไข.. ข้อมูลในบล็อกถัดมาก็จะ Invalid ทันที
🥷และหากใครที่อยากจะเปลี่ยนแปลงข้อมูลใด ๆ ในบล็อก.. ก็จำเป็นที่จะต้องสร้างบล็อกลำดับถัดไปด้วย "ตนเอง" และต้องทำด้วยอัตราเร่งที่เร็วกว่า 10 นาทีต่อบล็อก เพื่อให้ Block Chain ของคุณนั้น Valid และกลับมาอยู่ใน Bitcoin Network 🎉
.
อ้อ.. ข้อมูลที่สามารถแก้ไขได้จะมีแค่ "ข้อมูลธุรกรรมของตัวคุณเอง" เท่านั้นนะ ,, คุณจะไปแก้ไขข้อมูลว่าเรามี 10,000 บิตคอยน์ “ไม่ได้”‼️ไม่ว่าจะโดยวิธีการใด ๆ ก็ตาม 😇
ป.ล.สินทรัพย์อื่น ๆ ทำได้มั้ยน๊าาาา 😎😘
#เวลามีค่าศึกษาบิตคอยน์
#Siamstr
เมื่อ บก. nostr:npub15l5mxmljftnnqur8gf2nkjj2yuemqy2kuly7yc29lx7x598svx5s447rgk และ นักยิงใย nostr:npub1mqcwu7muxz3kfvfyfdme47a579t8x0lm3jrjx5yxuf4sknnpe43q7rnz85 ไฟลุก
จงบอกกับตัวเองไว้ครับ
คุณคือผู้โชคดีที่ถูกเลือก

มันคือเกมส์ยาว (แต่นี้ก็ยาวนานเกิ้น 🤣 🤣)
#fastingfatdentist
#healthstr
#IFF
#fiat
#siamstrOG
#siamstr
#bitcoin
#siamesebitcoiners
#orangebaby
#หมอบ่นFiat
พี่หมอติดกับดักเรียบร้อย 😎🎉
GM #Siamstr 🧡
ถาม : ทำไมผมถึงชอบมองทุกอย่างเป็นกราฟ ? 🤔
ตอบ : เพราะว่ามันเห็นแนวโน้มในอนาคต และตีความได้ง่าย ,, ข้อมูลถูกนำเสนอครบถ้วนภายในภาพเพียงภาพเดียว ✅
.

❗️ยกตัวอย่างกราฟนี้ ,, ผมลองเปรียบเทียบง่าย ๆ ว่า…
‼️ถ้าเราต้องการ “ปริมาณเงินบาท” เพิ่มขึ้น โดยการลงทุนในสินทรัพย์ที่มีอัตราเติบโตทบต้นเฉลี่ย 30% (i.e. บิตคอยน์) ,, แต่ไม่ได้มีความเข้าใจมากพอที่จะเก็บรักษาบิตคอยน์ทั้งหมดเอาไว้ ,, จึงอยากขายบางส่วนเพื่อดึงต้นทุนออกก่อน และปล่อยให้กำไรมันเติบโตต่อไป…
.
ผลมันเป็นยังไงนะ ? 🤔
.
1️⃣ กำหนดเงินต้นจำนวน 100,000 บาท ซื้อบิตคอยน์ ณ วันนี้ที่ราคาประมาณ 3,300,000 บาท ,, เราจะได้บิตคอยน์จำนวน 0.03030303 BTC (3,030,303 satoshi) ✅
2️⃣ ระหว่างที่เราได้กำไรจากมูลค่าบิตคอยน์ที่เพิ่มขึ้น.. เราก็จะขายส่วนต่างกำไรออกมา เช่น ผ่านไป 1 ปี เรามีกำไร 30,000 บาท ,, เราก็จะขายบิตคอยน์มูลค่า 30,000 บาทเป็นเงินสด และปล่อยให้ส่วนที่เหลือเติบโตต่อไป (กราฟเส้นสีแดง) 😇
3️⃣ เราจะทำการขายประมาณ 4 ครั้ง (ปีละ 1 ครั้ง) เพื่อได้เงินต้นที่มีมูลค่า 100,000 บาท คืนกลับมา 🎉
4️⃣ เมื่อถึงตอนนี้ เราจะมีบิตคอยน์เหลืออยู่เพียงแค่ 0.01273192 BTC และปล่อยให้เกิด Capital Gain ต่อไป (กราฟเส้นสีส้ม) ✅
.
‼️เมื่อระยะเวลาผ่านไป 10 ปี
➡️ กรณีขายเอาทุนออก เราจะเหลือ 0.01273192 BTC ซึ่งมีมูลค่าในหน่วย ”บาท“ ประมาณ 6 แสนบาท 😎
➡️ กรณีไม่ขายเอาทุนออก เราจะยังคงมีบิตคอยน์ 0.03030303 BTC ซึ่งคิดเป็นมูลค่าประมาณ 1.3 ล้านบาท 🧡
..นับว่ามีความแตกต่างกันอย่างมีนัยสำคัญ😊
.
❗️ฝากไว้ให้คิด : คุณซื้อบิตคอยน์เพื่อต้องการจำนวน “เงินบาท“ เพิ่มขึ้น หรือคุณซื้อบิตคอยน์เพื่อต้องการเป็นเจ้าของทรัพย์สินที่มีจำนวนจำกัด
‼️เงินของคุณ ชีวิตของคุณ .. คุณเลือกได้เอง 🧡😇
ถ้าท่านใดยังสงสัยหรือไม่เคลียร์ตรงไหน… #เวลามีค่าศึกษาบิตคอยน์ ครับ
#ความจริงมันช้า
#Siamstr
ถูกต้องครับพี่บี 🫡
มีข้อมูลแสดงทุกแอ๊ปเลยครับ
- Output Address
- Fee
ก่อน Broadcast จะแสดงข้อมูลทั้งหมดให้เราตรวจสอบอีกทีครับ
- ปลายทาง
- ค่าฟี
เราแปลความผ่าน Wallet Application ได้เลยครับ

