Avatar
righttech
87e33cd2efa4c29dfd1ebb9007c97d49802056939b4970d228c15d1734fea59c
รายการ RightTech บนช่อง Rightshift

# การบ้านจาก RightTech EP5

ลองสร้างธุรกรรมด้วย P2SH-P2WSH แบบ multisig

สร้างธุรกรรม Bitcoin แบบ P2SH-P2WSH ซึ่งใช้ 2-of-2 Multisig Redeem Script ที่ลงลายเซ็นครบถ้วน แล้วบันทึกธุรกรรมที่ serialize แล้วในรูปแบบ hex ลงในไฟล์ out.txt

- สร้างธุรกรรมจากข้อมูลที่มีให้

- คำนวณ sighash ของธุรกรรม แล้วก็สร้าง ecdsa เพื่อคำนวนหา sig ของ privkey ทั้งสองดอก

- สร้าง script_sig ที่ถูกต้องจาก redeem_script ที่ให้ไว้

- สร้าง witness stack ที่ถูกต้องตามรูปแบบ multisig

- เขียน transaction hex ลงในไฟล์ out.txt

Transaction Spec

```

- Private Key 1: `39dc0a9f0b185a2ee56349691f34716e6e0cda06a7f9707742ac113c4e2317bf`

- Private Key 2: `5077ccd9c558b7d04a81920d38aa11b4a9f9de3b23fab45c3ef28039920fdd6d`

- Redeem Script (ASM): `OP_2 032ff8c5df0bc00fe1ac2319c3b8070d6d1e04cfbf4fedda499ae7b775185ad53b 039bbc8d24f89e5bc44c5b0d1980d6658316a6b2440023117c3c03a4975b04dd56 OP_2 OP_CHECKMULTISIG`

- Redeem Script (HEX): `5221032ff8c5df0bc00fe1ac2319c3b8070d6d1e04cfbf4fedda499ae7b775185ad53b21039bbc8d24f89e5bc44c5b0d1980d6658316a6b2440023117c3c03a4975b04dd5652ae`

- Transaction should contain exactly 1 input with:

- Outpoint:

- Hash: `0000000000000000000000000000000000000000000000000000000000000000`

- Index: `0`

- Sequence: `0xffffffff`

- Transaction should contain exactly 1 output with:

- Value: `0.001`

- Address: `325UUecEQuyrTd28Xs2hvAxdAjHM7XzqVF`

- Locktime: `0`

```

จะเขียนภาษาไหนก็ได้ตามที่คุณถนัด

#Siamstr #RighTech

#RightTech EP.5: วิวัฒนาการของ Bitcoin Address

ใน EP นี้ เราจะพาคุณย้อนรอยประวัติศาสตร์ของ “Bitcoin Address”

รู้หรือไม่ว่า… สมัยแรกของ Bitcoin ยังไม่มีคำว่า Wallet หรือ Address เลย?

เจอกัน 20:30

#Siamstr

nostr:naddr1qq9rzde5xserqve4xg6qz8nhwden5te0dehhxarj94c82c3wwajkcmr0wfjx2u3wdejhgtczyzr7x0xja7jv980ar6aeqp7f04ycqgzkjwd5juxj9rq469e5l6jecqcyqqq8vect4u6tc

วันนี้มี #RightTech EP4 นะครับ

เนื้อหาหลักจะพูดคุยเรื่อง Bitcoin wallet และเฉลยคำตอบจาก EP3

มาเจอกัน 20:30 น.

#Siamstr

nostr:naddr1qq9rzde5xgunjv3hxseqz8nhwden5te0dehhxarj94c82c3wwajkcmr0wfjx2u3wdejhgtczyzr7x0xja7jv980ar6aeqp7f04ycqgzkjwd5juxj9rq469e5l6jecqcyqqq8veclrcy9u

# โอนบิตคอยน์แล้วเปิดดู Wallet ไม่เจอเงิน? ทั้งที่แน่ใจว่าโอนถูกต้องพอลองเช็ก Transaction ก็ขึ้นว่า Comfirmation แล้ว แต่ทำไมยังหาไม่เจอ? 🤔

ปัญหานี้อาจเกิดขึ้นกับคนที่ สร้าง Seed Phrase เอง หรือ ทำ Watch-only Wallet แต่ดึง Extended Public Key (xpub, ypub, zpub) ผิดมาตรฐาน Address ที่เราต้องการ

งั้นเรามาเริ่มที่ Extended Public Key กันก่อน

Extended Public Key หรือที่คุ้นหูกันในชื่อ xpub เป็นคีย์ที่ใช้สร้าง Address สำหรับรับบิตคอยน์ โดยมักใช้ทำ Watch-only Wallet เพื่อให้สามารถดูยอดเงินและสร้างที่อยู่รับบิตคอยน์ได้ โดยไม่ต้องใช้ Seed Phrase หรือ Hardware Wallet

แล้วจุดผิดพลาดมันเกิดตรงไหนล่ะ?

Extended Public Key มีอยู่หลายมาตรฐานเช่นกันเช่น

xpub - เป็น Legacy Address (จะขึ้นต้นด้วย 1xxxx)

ypub - เป็น SegWit Address (จะขึ้นต้นด้วย 3xxxx)

zpub - เป็น Native SegWit Address (จะขึ้นต้นด้วย bc1qx)

พอเห็นภาพแล้วใช่ไหมว่าเราจะเอาอันไหนมาทำ Watch-only Wallet หลายคนอยากใช้ Native SegWit ต้องเลือก zpub แน่นอน

ถ้าหากโอนเข้าพอแมตช์ Address ผิดไปแล้วทำยังไง

งั้นเรามดูส่วนถัดไปนั้นคือเรื่องของ Derivation path หากสังเกตดี ๆ หลาย Wallet จะมีให้เราเลือก Derivation path (m/xx/x'/x') จุดนี้แหละถ้าเราหาบิตคอยน์ที่โอนเข้าไปไม่เจออาจเป็นเพราะเปิดดู Derivation path ผิดอยู่ก็ได้

งั้นเรามาดู Derivation path กันดีกว่าว่ามีอะไรบ้าง

BIP 44: m/44'/0'/0' (Legacy (P2PKH) Address ขึ้นต้นด้วย 1xxxx)

BIP 49: m/49'/0'/0' (SegWit (P2SH-P2WPKH) ขึ้นต้นด้วย 3xxxx)

BIP 84: m/84'/0'/0' (Native SegWit (P2WPKH) ขึ้นต้นด้วย bc1qx)

BIP 86: m/86'/0'/0' (Taproot (P2TR) ขึ้นต้นด้วย bc1px)

ลองเปลี่ยน Derivation path ดูก่อนอาจเจอบิตคอยน์ที่คุณโอนเข้าไป

ถ้าเข้าใจเรื่องนี้ให้ดีขึ้น ฟังรายละเอียดได้ที่ RightTech EP.3

หากจุดไหนผิดพลาดประการใดคอมเม้นท์พูดคุยกันครับ

ขอบคุณครับ

#Siamstr #RightTech

จากยุคก่อนที่ต้องจด Private Key กันตรง ๆ มาสู่มาตรฐานใหม่ที่เราใช้กันอยู่ในปัจจุบันคือ Seed Phrase แล้วมันทำยังไงถึงสร้าง Address ได้ไม่รู้จบ

วันนี้เรามาทำความเข้าใจเรื่องของ HD Wallet (Hierarchical Deterministic Wallet) กัน

เจอกัน 20:30 น.

#Siamstr

nostr:naddr1qq9rzde5xymnsvf5xvcsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qgsg0ceu6th6fs5al50thyq8e975nqpq26fekjts6g5vzhghxnl2t8qrqsqqqan857np38

เราจะพาคุณเจาะลึก ทุกขั้นตอนของการสร้าง Private Key ตั้งแต่ศูนย์ จนถึงการแปลงเป็น Public Key และ Bitcoin Address พร้อมอธิบายให้เข้าใจง่าย

#Siamstr

nostr:naddr1qq9rzde5xq6nwdpnxueqzrnhwden5te0dehhxtnvdakz7q3qsl3ne5h05npfmlg7hwgq0jtafxqzq45nndyhp53gc9w3wd875kwqxpqqqpmxw7tkt25

แจกลายแทงจากรายการ RightTech ep.1

สำหรับคนที่ไม่เข้าใจในบางจุดหรืออยากเรียนรู้จุดไหนมากขึ้น

บิตคอยน์คืออะไร:

- https://bitcoin.org/bitcoin.pdf

BItcoin wallet แบบพอสังเขป

- https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch01_intro.adoc

Bitcoin Transaction

- https://rightshift.to/2022/siraphop/2989/

- https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch02_overview.adoc

- https://learnmeabitcoin.com/technical/transaction/

Miner

- https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch02_overview.adoc

Blockchain

- https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch02_overview.adoc

- https://learnmeabitcoin.com/technical/blockchain/

- https://learnmeabitcoin.com/technical/block/

Bitcoin Node

- https://github.com/bitcoin/bitcoin/

- https://bitcoin.org/en/full-node#what-is-a-full-node

ฟังรายการย้อนหลัง: https://www.youtube.com/live/vvAcWpGaYZA

ถ้าไม่แม่นอังกฤษ มีภาษาไทยตรงนี้

- White paper: https://rightshift.to/2024/kp/16920/

- Mastering Bitcoin ch1: https://yakihonne.com/article/naddr1qvzqqqr4gupzq7gq3eup4hk8vlxgugum2vldevv75t3xp7fgr2gjt6f5yh06eyu4qq2k7vjcty69ydtv09tyvu2gv9pkxnm4v3drxecmvm8

- Mastering Bitcoin ch2: https://yakihonne.com/article/naddr1qvzqqqr4gupzq7gq3eup4hk8vlxgugum2vldevv75t3xp7fgr2gjt6f5yh06eyu4qq242wr0gyckuu682at5jun4dvk4zmtjv46nzcqvyvm

#siamstr

Replying to Avatar chontit

🙋‍♂️ เมื่อวานได้ฟังพี่หลามอธิบายถึงโครงสร้างของข้อมูลแต่ละ 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

ขอบคุณอาจารย์เอ็มมากครับช่วยขยายความได้ดีจากไลฟ์ใน EP แรก

#Siamstr

nostr:nevent1qqsqqq86pqtkzrx25fkqjsla3cewqjnxwcpv7fx0el3tgxp9wmsr3qsppemhxue69uhkummn9ekx7mp0qgsp40zqckd36g5rz39043r9ns7mhlq6rvn94w0vuu52pg2vdntqusgrqsqqqqqps2zsnx

Overview of Bitcoin system | RightTech EP 1

เจอกัน 2 ทุ่มครึ่ง

#Siamstr

nostr:naddr1qqjrqepexvurwvtx95mrgwpj956rwerp95urswfs95cngepjxger2wrx8yer2qgwwaehxw309ahx7uewd3hkctczyzr7x0xja7jv980ar6aeqp7f04ycqgzkjwd5juxj9rq469e5l6jecqcyqqq8vecqf5atp

เจอกัน 2 ทุ่มครึ่ง

RightTech ep.1: Overview of Bitcoin system

#Siamstr