<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2024-07-24T15:20:55Z</updated>
  <generator>https://nostr.now</generator>

  <title>Nostr notes by LearnBN</title>
  <author>
    <name>LearnBN</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.now/npub10yqgu7q6mmrk0nywywd4x0kukx029cnqly5p4yf9ay6zthavjw2syrhcl3.rss" />
  <link href="https://nostr.now/npub10yqgu7q6mmrk0nywywd4x0kukx029cnqly5p4yf9ay6zthavjw2syrhcl3" />
  <id>https://nostr.now/npub10yqgu7q6mmrk0nywywd4x0kukx029cnqly5p4yf9ay6zthavjw2syrhcl3</id>
  <icon>https://i.imgur.com/e6cvtcn.png</icon>
  <logo>https://i.imgur.com/e6cvtcn.png</logo>




  <entry>
    <id>https://nostr.now/nevent1qqsr5ddlpnfkrm6fhgghv67cdead9kmlykl9dn0xhll9hxpxyf2zfaszypusprncrt0vwe7v3c3ek5e7mjceaghzvrujsx53yh5ngfwl4jfe2le73m6</id>
    
      <title type="html">https://www.twitch.tv/kritta2933 #siamstr</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsr5ddlpnfkrm6fhgghv67cdead9kmlykl9dn0xhll9hxpxyf2zfaszypusprncrt0vwe7v3c3ek5e7mjceaghzvrujsx53yh5ngfwl4jfe2le73m6" />
    <content type="html">
      &lt;a href=&#34;https://www.twitch.tv/kritta2933&#34;&gt;https://www.twitch.tv/kritta2933&lt;/a&gt; #siamstr&lt;br/&gt;
    </content>
    <updated>2026-10-14T15:12:10Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs22wqpjaxv6hk0d3lnyjcyqzgggrgvxfttwj3p7x6kzeg6hm4ppzgzypusprncrt0vwe7v3c3ek5e7mjceaghzvrujsx53yh5ngfwl4jfe26rvwha</id>
    
      <title type="html">สรุป เสริม เติมแต่ง ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs22wqpjaxv6hk0d3lnyjcyqzgggrgvxfttwj3p7x6kzeg6hm4ppzgzypusprncrt0vwe7v3c3ek5e7mjceaghzvrujsx53yh5ngfwl4jfe26rvwha" />
    <content type="html">
      สรุป เสริม เติมแต่ง เนื้อหาของ RightTech ep.2 อีกเรื่องนึง &lt;br/&gt;&lt;br/&gt;# Legacy addresses for P2PKH&lt;br/&gt;&lt;br/&gt;อย่างที่รู้ ๆ กันว่าในสมัยก่อนการส่งบิตคอยน์ทำได้ด้วยการขอ IP ของปลายทางที่เราต้องการส่ง เพื่อให้โหนดของเราทำการเชื่อมต่อกับโหนดของคนรับเพื่อของ public key &lt;br/&gt;&lt;br/&gt;แน่นอนว่าการป้อนที่อยู่ IP ของคนที่คุณต้องการจ่ายเงินให้นั้นมีข้อดีหลายประการ แต่ก็มีข้อเสียหลายประการเช่นกัน หนึ่งในข้อเสียที่สำคัญคือผู้รับจำเป็นต้องให้กระเป๋าสตางค์ของพวกเขาออนไลน์ที่ที่อยู่ IP ของพวกเขา และต้องสามารถเข้าถึงได้จากโลกภายนอก &lt;br/&gt;ซึ่งสำหรับคนจำนวนมากนั่นไม่ใช่ตัวเลือกที่เป็นไปได้เพราะหากพวกเขา:&lt;br/&gt;- ปิดคอมพิวเตอร์ในเวลากลางคืน&lt;br/&gt;- แล็ปท็อปของพวกเขาเข้าสู่โหมดสลีป&lt;br/&gt;- อยู่หลังไฟร์วอลล์&lt;br/&gt;- หรือกำลังใช้การแปลงที่อยู่เครือข่าย (NAT)&lt;br/&gt;&lt;br/&gt;โดยบิตคอยน์แก้ปัญหานี้ด้วย ฟังก์ชันแฮช (hash function) ซึ่งเป็นฟังก์ชันที่รับข้อมูลที่อาจมีขนาดใหญ่ นำมาแฮช และให้ผลลัพธ์เป็นข้อมูลขนาดคงที่ ฟังก์ชันแฮชจะผลิตผลลัพธ์เดียวกันเสมอเมื่อได้รับข้อมูลนำเข้าแบบเดียวกัน และฟังก์ชันที่ปลอดภัยจะทำให้เป็นไปไม่ได้ในทางปฏิบัติสำหรับผู้ที่ต้องการเลือกข้อมูลนำเข้าอื่นที่ให้ผลลัพธ์เหมือนกันได้ นั่นทำให้ผลลัพธ์เป็น คำมั่นสัญญา (commitment) ต่อข้อมูลนำเข้า เป็นสัญญาว่าในทางปฏิบัติ มีเพียงข้อมูลนำเข้า x เท่านั้นที่จะให้ผลลัพธ์ X&lt;br/&gt;&lt;br/&gt;สมมติว่าผมต้องการถามคำถามคุณและให้คำตอบของผมในรูปแบบที่คุณไม่สามารถอ่านได้ทันที สมมติว่าคำถามคือ &amp;#34;ในปีไหนที่ซาโตชิ นาคาโมโตะเริ่มทำงานบนบิทคอยน์?&amp;#34; ผมจะให้การยืนยันคำตอบของผมในรูปแบบของ&lt;br/&gt;&lt;br/&gt;ผลลัพธ์จากฟังก์ชันแฮช SHA256 ซึ่งเป็นฟังก์ชันที่ใช้บ่อยที่สุดในบิทคอยน์:&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;94d7a772612c8f2f2ec609d41f5bd3d04a5aa1dfe3582f04af517d396a302e4e&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;ต่อมา หลังจากคุณบอกคำตอบที่คุณเดาสำหรับคำถามนั้น ผมสามารถเปิดเผยคำตอบของผมและพิสูจน์ให้คุณเห็นว่าคำตอบของผม เมื่อใช้เป็นข้อมูลสำหรับฟังก์ชันแฮช จะให้ผลลัพธ์เดียวกันกับที่ผมให้คุณก่อนหน้านี้&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;$ echo &amp;#34;2007.  He said about a year and a half before Oct 2008&amp;#34; | sha256sum&lt;br/&gt;94d7a772612c8f2f2ec609d41f5bd3d04a5aa1dfe3582f04af517d396a302e4e&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;ทีนี้ให้สมมติว่าเราถามบ็อบว่า &amp;#34; public key ของคุณคืออะไร?&amp;#34; บ็อบสามารถใช้ฟังก์ชันแฮชเพื่อให้การยืนยันที่ปลอดภัยทางการเข้ารหัสต่อ public key ของเขา หากเขาเปิดเผยกุญแจในภายหลัง และเราตรวจสอบว่ามันให้ผลการยืนยันเดียวกันกับที่เขาให้เราก่อนหน้านี้ เราสามารถมั่นใจได้ว่ามันเป็นกุญแจเดียวกันที่ใช้สร้างการยืนยันก่อนหน้านี้&lt;br/&gt;&lt;br/&gt;ฟังก์ชันแฮช SHA256 ถือว่าปลอดภัยมากและให้ผลลัพธ์ 256 บิต (32 ไบต์) น้อยกว่าครึ่งหนึ่งของขนาด public key ของบิทคอยน์ดั้งเดิม แต่อย่างไรก็ตาม มีฟังก์ชันแฮชอื่นๆ ที่ปลอดภัยน้อยกว่าเล็กน้อยที่ให้ผลลัพธ์ขนาดเล็กกว่า เช่น ฟังก์ชันแฮช RIPEMD-160 ซึ่งให้ผลลัพธ์ 160 บิต (20 ไบต์) ด้วยเหตุผลที่ซาโตชิ นาคาโมโตะไม่เคยระบุ เวอร์ชันดั้งเดิมของบิทคอยน์สร้างการยืนยันต่อ public key โดยการแฮชกุญแจด้วย SHA256 ก่อน แล้วแฮชผลลัพธ์นั้นด้วย RIPEMD-160 ซึ่งให้การยืนยันขนาด 20 ไบต์ต่อ public key&lt;br/&gt;&lt;br/&gt;เราสามารถดูสิ่งนี้ตามอัลกอริทึม เริ่มจากกุญแจสาธารณะ K เราคำนวณแฮช SHA256 และคำนวณแฮช RIPEMD-160 ของผลลัพธ์ ซึ่งให้ตัวเลข 160 บิต (20 ไบต์):&lt;br/&gt;&lt;br/&gt;A = RIPEMD160(SHA256(K))&lt;br/&gt;&lt;br/&gt;โดย K คือ public key และ A คือผลลัพธ์&lt;br/&gt;ทีนี้เราคงเข้าใจวิธีสร้างการยืนยันต่อ public key แล้ว ต่อไปเราจะมาดูวิธีการ&lt;br/&gt;ใช้งานโดยพิจารณาสคริปต์เอาต์พุตต่อไปนี้:&lt;br/&gt;```&lt;br/&gt;OP_DUP OP_HASH160 &amp;lt;Bob&amp;#39;s commitment&amp;gt; OP_EQUAL OP_CHECKSIG&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;และสคริปต์อินพุตต่อไปนี้:&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;&amp;lt;Bob&amp;#39;s signature&amp;gt; &amp;lt;Bob&amp;#39;s public key&amp;gt;&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;และเมื่อเรารวมมันเข้าด้วยกันเราจะได้ผลลัพธ์ดังนี้:&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;&amp;lt;Bob&amp;#39;s signature&amp;gt; &amp;lt;Bob&amp;#39;s public key&amp;gt; OP_DUP OP_HASH160 &amp;lt;Bob&amp;#39;s commitment&amp;gt; OP_EQUAL OP_CHECKSIG&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;จากนั้น  เราเริ่มวางรายการลงในสแต็ก ลายเซ็นของบ็อบถูกวางก่อน จากนั้น public key ของเขาถูกวางไว้ด้านบน จากนั้นดำเนินการ OP_DUP เพื่อทำสำเนารายการบนสุด ดังนั้นรายการบนสุดและรายการที่สองจากบนในสแต็กตอนนี้เป็น public key ของบ็อบทั้งคู่ การดำเนินการ OP_HASH160 ใช้ (ลบ) public key บนสุดและแทนที่ด้วยผลลัพธ์ของการแฮชด้วย RIPEMD160(SHA256(K)) ดังนั้นตอนนี้บนสุดของสแต็กคือแฮชของ public key ของบ็อบ ต่อไป  commitment ถูกเพิ่มไว้บนสุดของสแต็ก การดำเนินการ OP_EQUALVERIFY ใช้รายการสองรายการบนสุดและตรวจสอบว่าพวกมันเท่ากัน ซึ่งควรเป็นเช่นนั้นหาก public key ที่บ็อบให้ในสคริปต์อินพุตเป็น public key เดียวกันกับที่ใช้สร้างการยืนยันในสคริปต์เอาต์พุตที่อลิซจ่าย หาก OP_EQUALVERIFY ล้มเหลว ทั้งสคริปต์จะล้มเหลว สุดท้าย เราเหลือสแต็กที่มีเพียงลายเซ็นของบ็อบและ public key ของเขา รหัสปฏิบัติการ OP_CHECKSIG ตรวจสอบว่าพวกมันสอดคล้องกัน ดังรูปที่แสดงด้านล่าง&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/3ea1036b7de3d83b960d1ed862e738120159e4f173d55a4dfdaddc75c3b25166.png&#34;&gt; &lt;br/&gt;&lt;br/&gt;แม้กระบวนการของการ pay-to-publickey-hash(P2PKH) อาจดูซับซ้อน แต่มันทำให้การที่อลิซจ่ายเงินให้บ็อบมีเพียงการยืนยันเพียง 20 ไบต์ต่อ public key ของเขาแทนที่จะเป็นตัวกุญแจเอง ซึ่งจะมีขนาด 65 ไบต์ในเวอร์ชันดั้งเดิมของบิทคอยน์ นั่นเป็นข้อมูลที่น้อยกว่ามากที่บ็อบต้องสื่อสารกับอลิซ&lt;br/&gt;&lt;br/&gt;แต่อย่างไรก็ตาม เรายังไม่ได้พูดถึงวิธีที่บ็อบรับ 20 ไบต์เหล่านั้นจากกระเป๋าเงินบิทคอยน์ของเขาไปยังกระเป๋าเงินของอลิซ มีการเข้ารหัสค่าไบต์ที่ใช้กันอย่างแพร่หลาย เช่น เลขฐานสิบหก แต่ข้อผิดพลาดใด ๆ ในการคัดลอกการยืนยันจะทำให้บิทคอยน์ถูกส่งไปยังเอาต์พุตที่ไม่สามารถใช้จ่ายได้ ทำให้พวกมันสูญหายไปตลอดกาล โดยในส่วนถัดไป เราจะดูที่การเข้ารหัสแบบกะทัดรัดและการตรวจสอบความถูกต้อง&lt;br/&gt;&lt;br/&gt;#siamstr #righttech&lt;br/&gt;&lt;br/&gt;อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ: &lt;a href=&#34;https://learnbn.npub.pro/&#34;&gt;https://learnbn.npub.pro/&lt;/a&gt;
    </content>
    <updated>2025-03-15T06:43:55Z</updated>
  </entry>

</feed>