Learning_BTC&NOSTR's avatar
Learning_BTC&NOSTR
Learning@siamstr.com
npub10yqg...hcl3
สร้างมาเพื่อแชร์เรื่องราวที่ได้ศึกษาจากการเรียนรู้เรื่องของบิตคอยน์และนอสเตอร์ จะพยายามเขียนทุกวันวันละโพสต์เพื่อเป็นการบังคับให้ตัวเองได้ศึกษามันเรื่อย ๆ ทุกวัน ถ้าผิดพลาดตรงไหนรบกวนช่วยแก้ไขกันด้วยนะครับ
Learning_BTC&NOSTR's avatar
LearnBN 9 months ago
เสริมเติมแต่ง เนื้่อหาจาก RightTech ep.4: เรื่อง Bitcoin wallet เนื่องจากพี่อาร์มแนะนำพวกเรื่องของการเลือกแบบตาม platform หรือ OS ไปแล้ว วันนี้ผมมาเติมให้ในส่วนของการเลือกตามวิธีการเก็บ key ครับผม 1. กระเป๋าประเภทสร้างคู่กุญแจแบบอิสระ ก่อนอื่นเรามาทำความเข้าใจกันก่อนดีกว่าว่า bitcoin wallet หรือ กระเป๋าเก็บบิตคอยน์นั้นคืออะไร โดยสิ่งที่คนทั่ว ๆ ไป เรียกว่ากระเป๋าเก็บบิตคอยน์นั้น จริง ๆ แล้วที่เก็บอยู่ภายในนั้นมีเพียงแค่กุญแจเท่านั้น โดยกุญแจเหล่านี้เชื่อมโยงกับบิตคอยน์ที่บันทึกไว้ในบล็อกเชน โดยการพิสูจน์ต่อโหนดบิตคอยน์ว่าคุณควบคุมคีย์ คุณสามารถใช้จ่ายบิตคอยน์ที่เชื่อมโยงได้ ซึ่งแตกต่างกับกระเป๋าเงินที่เราเข้าใจโดยทั่วไปว่าสามารถเก็บเงินสดลงไปในนั้นได้ กระเป๋าเก็บบิตคอยน์โดยทั่วไปนั้นจะมีทั้ง public key เพื่อใช้ในการสร้าง address และ private key สำหรับสร้างลายเซ็นเพื่ออนุมัติการจ่ายบิตคอยน์ หรืออีกประเภทหนึ่งคือประเภทที่มีเฉพาะ public key ในแอพกระเป๋าเก็บบิตคอยน์ โดยเมื่อต้องการใช้บิตคอยน์จะทำงานคู่กับอุปกรณ์ภายนอก เช่น อุปกรณ์ลงลายมือชื่อฮาร์ดแวร์หรือกระเป๋าเงินอื่นในแผนการลงลายมือชื่อหลายรายการ (hardware wallet หรือพวก multisig) เป็นไปได้ที่แอปพลิเคชันกระเป๋าเงินจะสร้างคู่กุญแจของกระเป๋าเงินแต่ละคู่กุญแจอย่างอิสระก่อนที่จะใช้ในภายหลัง ดังที่แสดงในรูปภาพด้านล่างนี้ แอปพลิเคชันกระเป๋าเงินบิตคอยน์ทั้งหมดในยุคแรกทำเช่นนี้ แต่ต้องให้ผู้ใช้สำรองฐานข้อมูลกระเป๋าเงินทุกครั้งที่พวกเขาสร้างและกระจายคู่กุญแจใหม่ ซึ่งอาจเกิดขึ้นบ่อยเท่ากับทุกครั้งที่สร้าง address ใหม่เพื่อรับการชำระเงินใหม่ การล้มเหลวในการสำรองฐานข้อมูลกระเป๋าเงินในเวลาที่เหมาะสมจะทำให้ผู้ใช้สูญเสียการเข้าถึงเงินทุนที่ได้รับจากกุญแจที่ยังไม่ได้สำรอง สำหรับกุญแจที่สร้างอย่างอิสระแต่ละกุญแจ ผู้ใช้จะต้องสำรองประมาณ 32 ไบต์ บวกค่าใช้จ่ายทั่วไป ผู้ใช้และแอปพลิเคชันกระเป๋าเงินบางรายพยายามลดปริมาณข้อมูลที่ต้องสำรองโดยใช้เพียงกุญแจเดียว แม้ว่าจะสามารถทำได้อย่างปลอดภัย แต่ก็ลดความเป็นส่วนตัวของผู้ใช้และบุคคลที่พวกเขาทำธุรกรรมด้วยอย่างมาก บุคคลที่ให้คุณค่ากับความเป็นส่วนตัวของตนเองและเพื่อนร่วมธุรกรรมสร้างคู่กุญแจใหม่สำหรับแต่ละธุรกรรม ซึ่งทำให้เกิดฐานข้อมูลกระเป๋าเงินที่สามารถสำรองได้อย่างสมเหตุสมผลเฉพาะโดยใช้สื่อดิจิทัลเท่านั้น image 2. กระเป๋าเก็บบิตคอยน์ประเภทสร้างกุญแจแบบกำหนดได้ (Deterministic Key) ฟังก์ชันแฮชจะสร้างเอาต์พุตเดิมเสมอเมื่อรับอินพุตเดิม แต่ถ้าอินพุตเปลี่ยนแปลงเพียงเล็กน้อย เอาต์พุตจะแตกต่างกัน หากฟังก์ชันมีความปลอดภัยทางการเข้ารหัส จะไม่มีใครสามารถคาดเดาเอาต์พุตใหม่ได้ เว้นเสียแต่ว่าพวกเขารู้อินพุตใหม่ สิ่งนี้สามารถช่วยให้เราสามารถนำค่าหนึ่งค่าแปลงไปเป็นอีกค่า ยิ่งไปกว่านั้น การใช้ฟังก์ชันแฮชเดิมกับอินพุตเดิม (seed) จะสร้างค่าใหม่ได้: ``` # Collect some entropy (randomness) $ dd if=/dev/random count=1 status=none | sha256sum f1cc3bc03ef51cb43ee7844460fa5049e779e7425a6349c8e89dfbb0fd97bb73 - # Set our seed to the random value $ seed=f1cc3bc03ef51cb43ee7844460fa5049e779e7425a6349c8e89dfbb0fd97bb73 # Deterministically generate derived values $ for i in {0..2} ; do echo "$seed + $i" | sha256sum ; done 50b18e0bd9508310b8f699bad425efdf67d668cb2462b909fdb6b9bd2437beb3 - a965dbcd901a9e3d66af11759e64a58d0ed5c6863e901dfda43adcd5f8c744f3 - 19580c97eb9048599f069472744e51ab2213f687d4720b0efc5bb344d624c3aa - ``` หากใช้ค่าอนุพันธ์เป็น private key ของเรา เราสามารถสร้างคีย์ส่วนตัวเหล่านั้นได้อย่างแน่นอนโดยใช้ seed กับอัลกอริทึมที่เราใช้ก่อนหน้า ผู้ใช้การสร้างกุญแจแบบกำหนดได้สามารถสำรองกุญแจทุกดอกในกระเป๋าเงินของตนโดยเพียงบันทึก seed และการอ้างอิงถึงอัลกอริทึมแบบกำหนดได้ที่พวกเขาใช้ ตัวอย่างเช่น แม้ว่าอลิซมีบิตคอยน์ 1 ล้านที่ได้รับจาก 1 ล้าน address ที่แตกต่างกัน สิ่งที่เธอต้องสำรองเพื่อกู้คืนการเข้าถึงบิตคอยน์เหล่านั้นในภายหลังคือ: ``` f1cc 3bc0 3ef5 1cb4 3ee7 8444 60fa 5049 e779 e742 5a63 49c8 e89d fbb0 fd97 bb73 ``` แผนภาพตรรกะของการสร้างกุญแจแบบกำหนดได้แบบเรียงลำดับขั้นพื้นฐานแสดงในรูปภาพด้านล่างนี้ อย่างไรก็ตาม แอปพลิเคชันกระเป๋าเงินสมัยใหม่มีวิธีที่ชาญฉลาดมากขึ้นในการทำสิ่งนี้ ซึ่งช่วยให้ public key สามารถสร้างแยกจาก private key ที่เกี่ยวข้อง ทำให้เป็นไปได้ที่จะเก็บ private key อย่างปลอดภัยมากกว่า public key image 3. การสร้างกุญแจแบบลำดับชั้นและกำหนดค่าได้ (HD Key Generation - BIP32) วอลเล็ตบิตคอยน์สมัยใหม่ทั้งหมดที่เรารู้จักใช้การสร้างกุญแจแบบลำดับชั้นและกำหนดค่าได้ (HD) เป็นค่าเริ่มต้น มาตรฐานนี้ ซึ่งกำหนดไว้ใน BIP32 ใช้การสร้างกุญแจแบบกำหนดค่าได้และการดึง public child key แบบเลือกได้ ด้วยอัลกอริทึมที่สร้าง tree ของกุญแจ ใน tree นี้ กุญแจใด ๆ สามารถเป็นพ่อแม่ของชุด child key และ child key ใด ๆ ก็สามารถเป็นพ่อแม่ของชุด child key อื่น ไม่มีขีดจำกัดตายตัวในความลึกของ tree โครงสร้าง tree นี้แสดงให้เห็นในวอลเล็ต HD: tree ของกุญแจที่สร้างมาจาก seed เดียว image โครงสร้างแบบ tree สามารถใช้แสดงความหมายทางการจัดการเพิ่มเติม เช่น เมื่อกิ่งย่อยของกุญแจเฉพาะใช้สำหรับรับการชำระเงินขาเข้า และอีกกิ่งหนึ่งใช้สำหรับรับเงินทอนจากการชำระเงินขาออก กิ่งของกุญแจยังสามารถใช้ในบริบทองค์กร โดยจัดสรรกิ่งที่แตกต่างกันให้กับแผนก บริษัทในเครือ หน้าที่เฉพาะ หรือหมวดหมู่การบัญชี เป็นต้น #siamstr #righttech
Learning_BTC&NOSTR's avatar
LearnBN 10 months ago
มาลองรัน Bitcoin node กันเถอะ อย่างที่ได้กล่าวในบทก่อนหน้า เครือข่ายแบบเพียร์ทูเพียร์ของบิตคอยน์ประกอบด้วยเครือข่าย "โหนด" ซึ่งส่วนใหญ่รันโดยบุคคลและธุรกิจบางแห่งที่ให้บริการ ผู้ที่รันโหนดบิตคอยน์จะมีมุมมองที่ตรงและน่าเชื่อถือเกี่ยวกับบล๊อกเชนของบิตคอยน์พร้อมสำเนาข้อมูลบิตคอยน์ที่ใช้จ่ายได้ทั้งหมดซึ่งได้รับการตรวจสอบอย่างอิสระโดยระบบของตนเอง การรันโหนดทำให้คุณไม่ต้องพึ่งบุคคลที่สามในการตรวจสอบธุรกรรม นอกจากนี้การใช้โหนดบิตคอยน์เพื่อตรวจสอบธุรกรรมที่ได้รับในกระเป๋าเงินของคุณ ยังช่วยให้คุณมีส่วนร่วมในเครือข่ายบิตคอยน์และช่วยทำให้เครือข่ายมีความแข็งแกร่งมากขึ้นอีกด้วย การรันโหนดต้องดาวน์โหลดและประมวลผลข้อมูลมากกว่า 500 GB ในช่วงเริ่มแรก และประมาณ 400 MB ของธุรกรรม Bitcoin ต่อวัน ตัวเลขเหล่านี้เป็นของปี 2023 และอาจเพิ่มขึ้นในอนาคต หากคุณปิดโหนดหรือหลุดจากอินเทอร์เน็ตเป็นเวลาหลายวัน โหนดของคุณจะต้องดาวน์โหลดข้อมูลที่พลาดไป ตัวอย่างเช่น หากคุณปิด Bitcoin Core เป็นเวลา 10 วัน คุณจะต้องดาวน์โหลดประมาณ 4 GB ในครั้งถัดไปที่คุณเริ่มใช้งาน ขึ้นอยู่กับการเลือกของคุณว่าจะทำดัชนีธุรกรรมทั้งหมดและเก็บสำเนาบล๊อกเชนแบบเต็ม คุณอาจต้องใช้พื้นที่ดิสก์มาก - อย่างน้อย 1 TB หากคุณวางแผนจะรัน Bitcoin Core เป็นเวลาหลายปี โดยค่าเริ่มต้นโหนดบิตคอยน์ยังส่งธุรกรรมและบล็อกไปยังโหนดอื่น ๆ (เรียกว่า "เพียร์") ซึ่งจะใช้แบนด์วิดท์อัปโหลดอินเทอร์เน็ต หากการเชื่อมต่ออินเทอร์เน็ตของคุณมีขีดจำกัด มีขีดจำกัดการใช้ข้อมูลต่ำ หรือคิดค่าบริการตามข้อมูล (เมตเตอร์) คุณไม่ควรรันโหนดบิตคอยน์บนระบบนั้น หรือรันโดยจำกัดแบนด์วิดท์ (ดู การกำหนดค่าโหนด Bitcoin Core) คุณอาจเชื่อมต่อโหนดของคุณแทนไปยังเครือข่ายทางเลือก เช่น ผู้ให้บริการข้อมูลดาวเทียมฟรีอย่าง Blockstream Satellite Tip: Bitcoin Core เก็บสำเนาบล๊อกเชนแบบเต็ม (ตามค่าเริ่มต้น ) พร้อมธุรกรรมเกือบทั้งหมดที่เคยได้รับการยืนยันบนเครือข่าย Bitcoin ตั้งแต่เริ่มต้นในปี 2009 ชุดข้อมูลนี้มีขนาดหลายร้อย GB และจะถูกดาวน์โหลดเพิ่มขึ้นทีละน้อยในช่วงหลายชั่วโมงหรือหลายวัน ขึ้นอยู่กับความเร็ว CPU และการเชื่อมต่ออินเทอร์เน็ตของคุณ Bitcoin Core จะไม่สามารถประมวลผลธุรกรรมหรืออัปเดตยอดคงเหลือของบัญชีจนกว่าชุดข้อมูล blockchain จะดาวน์โหลดเสร็จสมบูรณ์ ตรวจสอบให้แน่ใจว่าคุณมีพื้นที่ดิสก์ แบนด์วิดท์ และเวลาเพียงพอในการซิงโครไนซ์เริ่มแรก คุณสามารถกำหนดค่า Bitcoin Core เพื่อลดขนาด blockchain โดยการทิ้งบล็อกเก่า แต่โปรแกรมยังคงดาวน์โหลดชุดข้อมูลทั้งหมด TIPจากหลาม agian: ซื้อ NVMe SSD 2TB เป็นอย่างต่ำซ่ะ m.2 ได้ยิ่งดีเลยจ้า แม้ว่าจะมีข้อกำหนดด้านทรัพยากรเหล่านี้ แต่มีผู้คนหลายพันรายที่รันโหนด Bitcoin บางคนรันบนระบบง่าย ๆ อย่าง Raspberry Pi (คอมพิวเตอร์ราคา 35 เหรียญสหรัฐที่มีขนาดเท่ากับกล่องบุหรี่) ทำไมคุณถึงอยากรันโหนด? นี่คือเหตุผลที่พบบ่อยที่สุด: - คุณไม่ต้องการพึ่งบุคคลที่สามในการตรวจสอบธุรกรรมที่คุณได้รับ คุณไม่ต้องการเปิดเผยให้บุคคลที่สามรู้ว่าธุรกรรมใดเป็นของกระเป๋าเงินคุณ - คุณกำลังพัฒนาซอฟต์แวร์ Bitcoin และต้องการพึ่งโหนด Bitcoin เพื่อเข้าถึงเครือข่ายและ blockchain ผ่าน API - คุณกำลังสร้างแอปพลิเคชันที่ต้องตรวจสอบธุรกรรมตามกฎฉันทามติของ Bitcoin โดยทั่วไป บริษัทซอฟต์แวร์ Bitcoin มักจะรันโหนดหลายโหนด - คุณต้องการสนับสนุน Bitcoin การรันโหนดที่คุณใช้ตรวจสอบธุรกรรมที่ได้รับในกระเป๋าเงินจะช่วยทำให้เครือข่ายมีความแข็งแกร่งมากขึ้น หากคุณกำลังอ่านหนังสือเล่มนี้และสนใจความปลอดภัยที่เข้มงวด ความเป็นส่วนตัวที่เหนือกว่า หรือการพัฒนาซอฟต์แวร์ Bitcoin คุณควรรันโหนดของตัวเอง การกำหนดค่าโหนด Bitcoin Core Bitcoin Core จะค้นหาไฟล์การกำหนดค่าในไดเรกทอรีข้อมูลทุกครั้งที่เริ่มทำงาน ในส่วนนี้เราจะตรวจสอบตัวเลือกการกำหนดค่าต่าง ๆ และตั้งค่าไฟล์การกำหนดค่า เพื่อค้นหาไฟล์การกำหนดค่า ให้รัน bitcoind -printtoconsole ในเทอร์มินัลของคุณ และดูบรรทัดแรก ๆ: ``` $ bitcoind -printtoconsole 2023-01-28T03:21:42Z Bitcoin Core version v24.0.1 2023-01-28T03:21:42Z Using the 'x86_shani(1way,2way)' SHA256 implementation 2023-01-28T03:21:42Z Using RdSeed as an additional entropy source 2023-01-28T03:21:42Z Using RdRand as an additional entropy source 2023-01-28T03:21:42Z Default data directory /home/harding/.bitcoin 2023-01-28T03:21:42Z Using data directory /home/harding/.bitcoin 2023-01-28T03:21:42Z Config file: /home/harding/.bitcoin/bitcoin.conf ... [a lot more debug output] ... ``` tatatipจากหลามอีกครั้ง: สังเกตเห็นหรือไม่ว่าในตัวอย่างนี้ Bitcoin Core กำลังชี้ไปที่ไฟล์การกำหนดค่าที่ไดเรกทอรี /home/harding/.bitcoin/bitcoin.conf ซึ่งจะแตกต่างกันไปขึ้นอยู่กับผู้ใช้และระบบปฏิบัติการ คุณสามารถกด Ctrl-C เพื่อปิดโหนดหลังจากที่ระบุตำแหน่งไฟล์การกำหนดค่า โดยปกติไฟล์การกำหนดค่าจะอยู่ในไดเรกทอรี .bitcoin ภายใต้โฮมไดเรกทอรีของผู้ใช้ เปิดไฟล์ configuration ด้วยโปรแกรมแก้ไขได้ตามที่คุณชอบ Bitcoin Core มีตัวเลือกการกำหนดค่ามากกว่า 100 ตัวเลือกที่สามารถปรับเปลี่ยนพฤติกรรมของโหนดเครือข่าย การจัดเก็บบล๊อกเชน และแง่มุมอื่น ๆ ของการทำงาน เพื่อดูรายการตัวเลือก ให้รัน bitcoind --help: ``` $ bitcoind --help Bitcoin Core version v24.0.1 Usage: bitcoind [options] Start Bitcoin Core Options: -? Print this help message and exit -alertnotify=<cmd> Execute command when an alert is raised (%s in cmd is replaced by message) ... [many more options] ``` นี่คือตัวเลือกที่บางประการที่คุณสามารถตั้งในไฟล์ configuration หรือเป็นพารามิเตอร์บรรทัดคำสั่งสำหรับ bitcoind: - alertnotify: เรียกใช้คำสั่งหรือสคริปต์เพื่อส่งการแจ้งเตือนฉุกเฉินไปยังเจ้าของโหนดนี้ - conf: ตำแหน่งทางเลือกสำหรับไฟล์ configuration เมื่อใช้เป็นพารามิเตอร์ cli สำหรับ bitcoind เท่านั้น เนื่องจากไม่สามารถอยู่ในไฟล์ configuration ที่มันอ้างถึงได้ - datadir: เลือกไดเรกทอรีและระบบไฟล์สำหรับจัดเก็บข้อมูลบล๊อกเชนตามค่าเริ่มต้นนี้คือไดเรกทอรีย่อย .bitcoin ในไดเรกทอรีโฮมของคุณ ขึ้นอยู่กับการกำหนดค่า สามารถใช้พื้นที่ตั้งแต่ประมาณ 10 GB ถึงเกือบ 1 TB ณ ขณะนี้ คาดว่าขนาดสูงสุดจะเพิ่มขึ้นหลายร้อย GB ต่อปี - prune: ลดความต้องการพื้นที่ดิสก์บล๊อกเชนลงเหลือกี่เมกะไบต์โดยการลบบล็อกเก่า ใช้สำหรับโหนดที่มีทรัพยากรจำกัดซึ่งไม่สามารถบรรจุบล๊อกเชนแบบเต็มได้ ส่วนอื่น ๆ ของระบบจะใช้พื้นที่ดิสก์อื่นที่ไม่สามารถตัดทอนได้ ดังนั้นคุณยังคงต้องมีพื้นที่อย่างน้อยตามที่ระบุในตัวเลือก datadir - txindex: รักษาดัชนีของธุรกรรมทั้งหมด ช่วยให้คุณสามารถดึงธุรกรรมใด ๆ โดยใช้ ID ของมันได้โดยโปรแกรม โดยที่บล็อกที่มีธุรกรรมนั้นยังไม่ถูกตัดทอน - dbcache: ขนาดของแคช UTXO ค่าเริ่มต้นคือ 450 เมบิไบต์ (MiB) เพิ่มขนาดนี้บนฮาร์ดแวร์ระดับสูงเพื่ออ่านและเขียนจากดิสก์น้อยลง หรือลดขนาดลงบนฮาร์ดแวร์ระดับต่ำเพื่อประหยัดหน่วยความจำโดยยอมให้ใช้ดิสก์บ่อยขึ้น - blocksonly: ลดการใช้แบนด์วิดท์โดยการรับเฉพาะบล็อกของธุรกรรมที่ได้รับการยืนยันจากเพียร์ แทนที่จะส่งต่อธุรกรรมที่ยังไม่ได้รับการยืนยัน - maxmempool: จำกัดพูลหน่วยความจำของธุรกรรมเป็นกี่เมกะไบต์ ใช้เพื่อลดการใช้หน่วยความจำบนโหนดที่มีหน่วยความจำจำกัด เย่ ทีนี้เราก็มีโหนดแล้ววววว -- ไม่อะยังไม่เริ่มเลย 555555 ข้อความจากหลาม agian: คือถึงผมจะสนับสนุนให้คนรันโหนดก็เถอะ แต่ถ้าจะรันโดยไม่รู้อะไรเลยก็ไม่รันซ่ะอาจจะดีกว่า อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ: #siamstr
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
Bitcoin Core: The Reference Implementation ผู้คนจะยอมรับเงินใด ๆ เพื่อแลกเปลี่ยนกับสินค้าและบริการก็ต่อเมื่อคนนั้น ๆ เชื่อว่าเงินนี้จะมีมูลค่าในอนาคต เงินปลอมหรือเงินที่เสื่อมค่าโดยไม่คาดคิดนั้นอาจไม่สามารถใช้ได้ในอนาคต ดังนั้นทุกคนที่รับบิตคอยน์จึงมีแรงจูงใจที่แข็งแกร่งในการตรวจสอบความถูกต้องของบิตคอยน์ที่พวกเขาได้รับ ระบบของบิตคอยน์นั้นถูกออกแบบมาให้เข้าถึง, ป้องกันการปลอมแปลง, การเสื่อมค่า และปัญหาสำคัญอื่น ๆ ได้อย่างสมบูรณ์ได้ด้วยคอมพิวเตอร์ทั่วไป โดยซอฟต์แวร์ที่ให้ฟังก์ชันนี้เรียกว่า Full node ซึ่งทำหน้าที่ตรวจสอบธุรกรรมบิตคอยน์ทุกครั้งที่ได้รับการยืนยันตามกฎของระบบ นอกจากนี้ Full node ยังสามารถให้เครื่องมือและข้อมูลเพื่อทำความเข้าใจการทำงานของบิตคอยน์และสภาพปัจจุบันของเครือข่าย ในบทนี้เอง เราจะทำการติดตั้ง Bitcoin Core ซึ่งเป็นซอฟต์แวร์ที่ผู้ใช้งาน Full node ส่วนใหญ่เลือกใช้เพื่อเป็นประตูบานแรกในการเข้าถึงระบบนิเวศของบิตคอยน์ เราจะตรวจสอบบล็อก ธุรกรรม และข้อมูลอื่น ๆ จากโหนดของคุณ ซึ่งเป็นข้อมูลที่เชื่อถือได้ (ไม่ใช่เพราะหน่วยงานทรงอำนาจกำหนดให้เป็นเช่นนั้น) แต่เป็นเพราะโหนดของคุณได้ตรวจสอบข้อมูลนั้นอย่างอิสระ ตลอดเนื้อหาที่เหลือในหนังสือเล่มนี้ เราจะใช้ Bitcoin Core เพื่อสร้างและตรวจสอบข้อมูลที่เกี่ยวข้องกับบล็อกเชนและเครือข่าย จาก Bitcoin สู่ Bitcoin Core บิตคอยน์เป็นโครงการโอเพ่นซอร์ส โดยซอร์สโค้ดทั้งหมดก็สามารถดาวน์โหลดและใช้งานได้ฟรีภายใต้ใบอณุญาตแบบเปิด (MIT License) นอกจากจะเป็นโอเพ่นซอร์สแล้วบิตคอยน์ยังได้รับการพัฒนาโดยชุมชนอาสาสมัครแบบเปิดกว้าง แน่นอนว่าในช่วงแรกนั้นชุมชนนี้ประกอบด้วย Satoshi Nakamoto เพียงคนเดียว แต่ภายในปี 2023 ซอร์สโค้ดของบิตคอยน์มีผู้ร่วมพัฒนามากกว่า 1,000 คน เมื่อ Satoshi Nakamoto ได้สร้างซอฟแวร์บิตคอยน์ตัวนี้และพัฒนามันจนเกือบสมบูรณ์ก่อนแล้วจึงเผยแพร่เอกสารไวท์เปเปอร์ เขาน่าจะต้องการให้มั่นใจว่าการใช้งานจริงสามารถทำงานได้ก่อนเผยแพร่เอกสาร โดยซอฟต์แวร์เวอร์ชันแรกที่รู้จักในชื่อ "Bitcoin" นั้นได้รับการปรับปรุงและพัฒนามาอย่างมาก จนได้กลายเป็นสิ่งที่เรารู้จักกันในชื่อ Bitcoin Core และเพื่อแยกความแตกต่างจากการใช้งานอื่น ๆ Bitcoin Core เป็นซอฟต์แวร์ต้นแบบอ้างอิง (reference implementation) ของระบบบิตคอยน์ซึ่งแสดงวิธีการทำงานของแต่ละส่วนในเชิงเทคโนโลยี นอกจากนี้ Bitcoin Core รวมถึงการใช้งานฟังก์ชันทั้งหมดของบิตคอยน์ เช่น กระเป๋าเงิน เครื่องมือตรวจสอบธุรกรรมและบล็อก เครื่องมือสำหรับการสร้างบล็อก และส่วนต่าง ๆ ของการสื่อสารแบบ peer-to-peer ของบิตคอยน์ image #siamstr =-=-=-=-=-=-=-=-=-=-= อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ: Parsed content
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
การขุดบิตคอยน์ part 2 การขุดถูกออกแบบให้เหมือนกับการจับสลากแบบกระจายศูนย์ นักขุดแต่ละคนสามารถสร้าง "สลาก" ของตัวเองได้โดยการสร้างบล็อกตัวอย่างที่ประกอบไปด้วยธุรกรรมใหม่ที่ต้องการขุด พร้อมกับข้อมูลอื่น ๆ และนักขุดจะป้อนบล็อกตัวอย่างนี้เข้าไปในอัลกอริทึมที่ออกแบบมาเป็นพิเศษเพื่อแฮชข้อมูล ทำให้ได้ค่าผลลัพธ์ที่แตกต่างจากข้อมูลเดิมอย่างสิ้นเชิง โดยแฮชฟังก์ชันนี้จะให้ผลลัพธ์เดียวกันเสมอสำหรับข้อมูลชุดเดิม แต่ไม่สามารถคาดเดาผลลัพธ์ได้หากป้อนข้อมูลใหม่ แม้จะแตกต่างเพียงเล็กน้อยจากข้อมูลก่อนหน้า หากค่าผลลัพธ์ของแฮชตรงกับเงื่อนไขที่กำหนดของโปรโตคอล นักขุดจะชนะการจับสลาก และผู้ใช้งานบิตคอยน์ จะยอมรับบล็อกนี้พร้อมกับธุรกรรมในนั้นว่าเป็นบล็อกที่ถูกต้อง หากไม่ตรงกับเงื่อนไข นักขุดจะปรับข้อมูลในบล็อกเล็กน้อยและลองทำการแฮชใหม่ กระบวนการนี้ต้องทำซ้ำหลายครั้ง โดย ณ ขณะที่เขียนนี้ นักขุดต้องลองสร้างบล็อกตัวอย่างประมาณ 168 พันล้านล้านครั้ง เพื่อหาคำตอบที่ถูกต้อง ซึ่งหมายถึงการรันแฮชฟังก์ชันในจำนวนครั้งมหาศาลมาก ๆ แต่เมื่อพบคำตอบที่ถูกต้องแล้ว ใครก็ตามสามารถตรวจสอบว่าบล็อกนั้นถูกต้องได้โดยการรันแฮชฟังก์ชันเพียงครั้งเดียว ซึ่งทำให้การสร้างบล็อกที่ถูกต้องต้องใช้พลังงานคำนวณมหาศาล แต่การตรวจสอบทำได้ง่ายมาก กระบวนการตรวจสอบนี้สามารถพิสูจน์ได้อย่างมีหลักการว่ามีการทำงานเกิดขึ้นจริง ดังนั้น ข้อมูลที่ใช้สร้างหลักฐานนี้—ในที่นี้คือบล็อก—เรียกว่า "หลักฐานการทำงาน" หรือ Proof of Work (PoW) ธุรกรรมจะถูกเพิ่มลงในบล็อกใหม่ โดยให้ความสำคัญกับธุรกรรมที่มีค่าธรรมเนียมสูงสุดก่อนและพิจารณาจากปัจจัยอื่น ๆ อีกเล็กน้อย นักขุดแต่ละคนจะเริ่มกระบวนการสร้างบล็อกตัวอย่างใหม่ทันทีหลังจากได้รับบล็อกก่อนหน้าจากเครือข่าย โดยรู้ว่ามีคนอื่นชนะรางวัลไปแล้วในรอบนั้น พวกเขาจะสร้างบล็อกตัวอย่างใหม่ที่เชื่อมโยงกับบล็อกก่อนหน้า ใส่ธุรกรรมเข้าไป และเริ่มคำนวณ Proof of Work (PoW) สำหรับบล็อกตัวอย่างนี้ นักขุดจะเพิ่มธุรกรรมพิเศษที่จ่ายรางวัลบล็อกและค่าธรรมเนียมธุรกรรมรวมเข้ากับที่อยู่บิตคอยน์ของตนเอง หากพวกเขาพบบล็อกที่ถูกต้องและถูกเพิ่มในบล็อกเชน นักขุดจะได้รับรางวัลนั้น และธุรกรรมรางวัลนี้ก็จะใช้งานได้ นักขุดที่ทำงานร่วมกับพูลจะตั้งค่าให้รางวัลถูกส่งไปยังที่อยู่ของพูล จากนั้นจะแบ่งรางวัลให้สมาชิกตามสัดส่วนการทำงานที่แต่ละคนมีส่วนร่วม กลับมาที่ธุรกรรมของอลิซ ตอนนี้ธุรกรรมของอลิซได้ถูกเครือข่ายรับไปแล้วและเพิ่มลงในพูลของธุรกรรมที่ยังไม่ได้รับการยืนยันเรียบร้อย จากนั้นเมื่อธุรกรรมนั้นผ่านการตรวจสอบจาก full node แล้ว มันจะถูกรวมไว้ในบล็อกตัวอย่าง และประมาณห้านาทีหลังจากที่อลิซส่งธุรกรรมจากกระเป๋าเงินของเธอ นักขุดคนหนึ่งพบคำตอบสำหรับบล็อกนั้นและประกาศไปยังเครือข่าย หลังจากที่นักขุดคนอื่น ๆ ตรวจสอบความถูกต้องของบล็อกที่ชนะ พวกเขาก็เริ่มกระบวนการสุ่มอีกครั้งเพื่อสร้างบล็อกถัดไป บล็อกที่ชนะซึ่งมีธุรกรรมของอลิซอยู่ในนั้น ได้กลายเป็นส่วนหนึ่งของบล็อกเชน และบล็อกนี้ถูกนับเป็นการยืนยันหนึ่งครั้งสำหรับธุรกรรมนั้น หลังจากที่บล็อกที่มีธุรกรรมของอลิซได้ถูกเผยแพร่ไปทั่วเครือข่าย การสร้างบล็อกทางเลือกที่มีเวอร์ชันอื่นของธุรกรรมของอลิซ (เช่น ธุรกรรมที่ไม่ได้จ่ายให้ บ๊อบ) จะต้องใช้ปริมาณงานเท่ากับที่นักขุดทั้งหมดต้องใช้ในการสร้างบล็อกใหม่ทั้งบล็อก เมื่อมีบล็อกทางเลือกหลายบล็อกให้เลือก full node ในเครือข่ายของบิตคอยน์ก็จะทำการเลือกบล็อกเชนที่ถูกต้อง โดยจะเป็นเชนซึ่งมี Proof of Work (PoW) รวมมากที่สุด ซึ่งเรียกว่าบล็อกเชนที่ดีที่สุด หากเครือข่ายทั้งหมดจะยอมรับบล็อกทางเลือก จะต้องมีการขุดบล็อกใหม่เพิ่มเติมอีกหนึ่งบล็อกต่อจากบล็อกทางเลือกนั้น นั่นหมายความว่านักขุดมีตัวเลือกอื่น อย่างเช่นการที่พวกเขาสามารถร่วมมือกับอลิซเพื่อสร้างธุรกรรมทางเลือกที่เธอไม่ได้จ่ายเงินให้บ๊อบ โดยอลิซอาจเสนอส่วนแบ่งจากเงินที่เธอเคยจ่ายให้บ๊อบแก่นักขุด แต่การกระทำที่ไม่ซื่อสัตย์นี้จะต้องใช้ความพยายามเท่ากับการสร้างบล็อกใหม่ถึงสองบล็อก ซึ่งในทางกลับกันแล้ว นักขุดที่ทำงานอย่างซื่อสัตย์สามารถสร้างบล็อกใหม่เพียงบล็อกเดียวและได้รับค่าธรรมเนียมจากธุรกรรมทั้งหมดที่รวมอยู่ในบล็อก พร้อมกับรางวัลบล็อก (block subsidy) นอกจากนี้ต้นทุนที่สูงในการสร้างบล็อกสองบล็อกเพื่อพยายามเปลี่ยนแปลงธุรกรรมที่ยืนยันแล้วสำหรับผลตอบแทนเพียงเล็กน้อยนั้นไม่คุ้มค่าและการกระทำดังกล่าวมีโอกาสน้อยที่จะเกิดขึ้น สำหรับ บ๊อบ นั่นหมายความว่าเขาสามารถเริ่มเชื่อถือได้ว่าการชำระเงินจากอลิซนั้นเป็นสิ่งที่เชื่อถือได้ #siamstr =-=-=-=-=-=-=-=-=-=-= พึ่งมาอ่านแล้วงงบริบทอย่างงั้นเหรออ งั้นย้อนไปสิ View quoted note → อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
การขุดบิตคอยน์ ตอนนี้ธุรกรรมของอลิซได้เข้าไปสู่ในเครือข่ายของบิตคอยน์แล้ว แต่มันยังไม่ได้ถูกบรรจุลงในบล๊อกเชนเนื่องจากจะต้องรอให้นักขุดทำการนำธุรกรรมนั้น ๆ เข้าไปในบล๊อกและบล๊อกนั้นจำเป็นต้องผ่านการตรวจสอบโดยโหนดในเครือข่ายของบิตคอยน์เสียก่อน จึงจะถูกบันทึกลงในบล๊อกเชน ในระบบของบิตคอยน์นั้น มีการป้องกันการปลอมแปลงด้วยการคำนวณทางคณิตศาสตร์ ซึ่งเป็นการคำนวณที่จำเป็นต้องใช้พลังงานมหาศาลในการคำนวณ แต่ใช้พลังงานเพียงเล็กน้อยในการตรวจสอบ โดยธุรกรรมทั้งหมดจะถูกจัดเรียงเป็นบล๊อกและแต่ละบล๊อกจะมีบล๊อกเฮดเดอร์ที่จำเป็นต้องสร้างตามเงื่อนไขเฉพาะ โดยกระบวนการขุดบิตคอยน์นั้นมีวัตถุประสงค์อยู่สองอย่าง ดังนี้: - สร้างแรงจูงใจให้ขุดเฉพาะธุรกรรมที่ถูกต้องตามกฎ: เนื่องจากวิธีที่เหล่านักขุดจะได้รับผลกำไรที่สูงที่สุดจากการสร้างบล๊อกที่ตรงกับฉันทมติของระบบเท่านั้น (หากไม่ทำตามบล๊อกจะไม่ถูกยอมรับโดยโหนด และนั่นจะเป็นการสิ้นเปลืองพลังงานที่ได้คำนวณมาโดยเปล่าประโยชน์) นั้นจึงเป็นแรงจูงใจหลัก ๆ ให้เหล่านักขุดทำการใส่ธุรกรรมที่ถูกต้องตามกฏเท่านั้นลงในบล๊อกที่ตนสร้าง และสิ่งนี้เองก็ทำให้ผู้ใช้สามารถเลือกที่จะสันนิษฐานโดยอิงตามความไว้วางใจว่าธุรกรรมใด ๆ ในบล็อกนั้น ๆ เป็นธุรกรรมที่ถูกต้อง - สร้างเหรียญใหม่ตามตารางการออกเหรียญที่กำหนดไว้ล่วงหน้า: ในปัจจุบันนั้นจะมีการสร้างบิตคอยน์ใหม่ในแต่ละบล็อก คล้ายคลึงกับธนาคารกลางที่พิมพ์เงินใหม่ โดยจำนวนบิตคอยน์ในแต่ละบล๊อกที่จะถูกผลิตขึ้นมาใหม่นั้นถูกกำหนดมาตั้งแต่วันที่ระบบของบิตคอยน์ได้เริ่มขึ้นและไม่สามารถเปลี่ยนแปลงได้ การขุดได้ช่วยให้เกิดความสมดุลระหว่างต้นทุนและผลตอบแทน เนื่องจากการขุดมีการใช้ไฟฟ้าเพื่อแก้ปัญหาการคำนวณ และนักขุดที่ประสบความสำเร็จจะได้รับรางวัลในรูปแบบของบิตคอยน์ใหม่และค่าธรรมเนียมจากการทำธุรกรรม แต่อย่างไรก็ตาม รางวัลจะถูกเก็บรวบรวมก็ต่อเมื่อนักขุดรวมเฉพาะธุรกรรมที่ถูกต้องเท่านั้น โดยกฎของโปรโตคอลบิตคอยน์สำหรับการสร้างฉันทามติ จะกำหนดว่าอะไรถูกต้อง โดยความสมดุลที่ละเอียดอ่อนนี้เองที่คอยสร้างให้ความปลอดภัยแก่บิตคอยน์โดยไม่ต้องมีหน่วยงานกลางมาคอยดูแล #siamstr =-=-=-=-=-=-=-=-=-=-= พึ่งมาอ่านแล้วงงบริบทอย่างงั้นเหรออ งั้นย้อนไปสิ View quoted note → อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
บทที่ 2: ภาพรวมการทำงานของบิตคอยน์ บิตคอยน์ทำงานอย่างไร ระบบอย่างบิตคอยน์นั้นแตกต่างกับระบบธนาคารและระบบการชำระเงินแบบดั้งเดิมอย่างสิ้นเชิง เพราะมันสามารถทำงานได้โดยไม่จำเป็นต้องไว้วางใจบุคคลที่สาม แทนที่จะมีหน่วยงานกลางที่เชื่อถือได้ บิตคอยน์ได้อณุญาตให้ผู้ใช้แต่ละคนใช้ซอฟต์แวร์บนคอมพิวเตอร์ของตนเองเพื่อตรวจสอบการทำงานที่ถูกต้องของทุกส่วนในระบบ ซึ่งในบทนี้เอง เราจะทำการสำรวจบิตคอยน์ภาพรวมโดยติดตามธุรกรรมหนึ่งรายการผ่านระบบของบิตคอยน์ ดูว่าธุรกรรมนั้นถูกบันทึกลงในบล็อกเชนอย่างไร และการบันทึกธุรกรรมแบบกระจายศูนย์นั้นทำได้อย่างไร ส่วนในบทถัดไปจะลงลึกถึงเทคโนโลยีที่อยู่เบื้องหลังธุรกรรม เครือข่าย และการขุด ภาพรวมของบิตคอยน์ ระบบของบิตคอยน์นั้นประกอบไปด้วย เหล่าผู้ใช้งาน wallet ต่าง ๆ , ธุรกรรมที่กระจายไปทั่วเครือข่าย และเหล่านักขุดที่จะคอยแข่งขันกันเพื่อสร้างบล๊อกใหม่ โดยที่มีบล๊อกเชนเป็นเหมือนสมุดบันทึกธุรกรรมที่รวมธุรกรรมทั้งหมดไว้ ตัวอย่างที่จะได้เห็นต่อไปนี้เป็นธุรกรรมที่เกิดขึ้นจริงบนเครือข่ายของบิตคอยน์ โดยจำลองการโต้ตอบระหว่างผู้ใช้หลายคนผ่านการส่งเงินจาก wallet หนึ่งไปยังอีก wallet และในขณะนั้นเราจะติดตามธุรกรรมผ่านเครือข่ายบิตคอยน์ ไปจนถึงบล็อกเชน เราจะใช้เว็บไซต์สำรวจบล็อกเชน (blockchain explorer) เพื่อดูภาพรวมในแต่ละขั้นตอน เว็บไซต์สำรวจบล็อกเชนที่นิยม - Blockstream Explorer - Mempool.Space - BlockCypher Explorer เว็บไซต์เหล่านี้มีฟังก์ชันการค้นหาที่สามารถใช้ค้นหา Bitcoin address, Transaction Hash, หมายเลขบล็อก หรือ Block hash และเรียกดูข้อมูลที่เกี่ยวข้องจากเครือข่ายบิตคอยน์ได้ สำหรับแต่ละตัวอย่างธุรกรรมหรือบล็อก เราจะให้ URL เพื่อให้คุณสามารถค้นหาและศึกษาข้อมูลเพิ่มเติมได้ด้วยตัวเอง #siamstr ========== หาบทที่ 1 ไม่เจอ? งั้นเอานี่ไปสหาย View article → อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
เกริ่นนำเรื่องราวของบิตคอยน์แบบกระทัดรัด บิตคอยน์ (Bitcoin) เป็นชุดแนวคิดและเทคโนโลยีที่เข้ามาผสมผสานรวมกันจนได้กลายเป็นระบบเงินสดอิเล็กทรอนิกส์ หน่วยเงินที่เรียกว่าบิตคอยน์นั้น ใช้เพื่อเก็บและส่งต่อมูลค่าให้กับผู้ใช้คนอื่น ๆ ในระบบ ผู้ใช้ทั้งระบบสื่อสารกันบนโปรโตคอลของบิตคอยน์ โดยผู้ใช้ส่วนใหญ่ก็เข้าถึงกันผ่านอินเตอร์เน็ต แต่ก็ไม่ได้หมายความว่าระบบนี้ไม่สามารถใช้เครือข่ายการสื่อสารรูปแบบอื่นได้ ซอฟต์แวร์ของโปรโตคอลนี้เป็นโอเพนซอร์สและสามารถรันได้บนอุปกรณ์คอมพิวเตอร์หลายประเภท เช่น แล็ปท็อปและสมาร์ทโฟน และสิ่งนี้เองที่ทำให้เทคโนโลยีนี้สามารถเข้าถึงได้ง่าย ผู้ใช้งานสามารถส่งบิตคอยน์ให้กันผ่านเครือข่ายของบิตคอยน์เพื่อทำกิจกรรมต่าง ๆ เช่น ซื้อ-ขายแลกเปลี่ยนสินค้าและบริการ หรือใช้เพื่อแลกเปลี่ยนเป็นสกุลเงินต่าง ๆ ซึ่งถือว่าเหมาะสมเป็นอย่างมากสำหรับการใช้งานบนอินเทอร์เน็ต เพราะมีทั้งความรวดเร็ว ความปลอดภัย และยังข้อจำกัดเรื่องพรมแดน ซึ่งบิตคอยน์นั้นแตกต่างจากสกุลเงินโดยทั่วไป เนื่องจากเป็นระบบเงินอิเล็กทรอนิกส์ จึงไม่มีเหรียญหรือธนบัตรจริง ๆ ให้ได้จับต้อง แต่คำว่าเหรียญที่มักใช้กันในสังคมของบิตคอยน์จะหมายถึงในธุรกรรมที่ผู้ใช้รายหนึ่งโอนมูลค่าไปยังผู้ใช้อีกรายหนึ่ง ผู้ใช้งานบิตคอยน์จะควบคุมคีย์ (Private Key) ที่ใช้พิสูจน์ความเป็นเจ้าของในบิตคอยน์นั้น ๆ ในเครือข่าย และด้วยคีย์นี้เองทำให้พวกเขาสามารถเซ็นชื่อในธุรกรรมเพื่อปลดล็อกมูลค่าและทำการส่งมันต่อไปยังผู้รับอีกรายหนึ่ง ซึ่งมักจะถูกเก็บอยู่ในกระเป๋าเงินดิจิทัล หรือสมาร์ทโฟนของผู้ใช้งาน การครอบครองคีย์ที่สามารถเซ็นชื่อในธุรกรรมได้เป็นสิ่งเดียวที่จำเป็นในการใช้จ่ายในระบบของบิตคอยน์ และนั่นเป็นเหตุผลที่ทำให้ความสามารถในการควบคุมบิตคอยน์อยู่ในมือผู้ใช้แต่ละคน * เข้าใจว่าในบริบทนี้น่าจะหมายถึง Hot-wallet เพราะงั้นผมไม่ได้แนะนำให้เก็บคีย์คอมพิวเตอร์หรือมือถือนะครับ ส่วนถ้าคุณอยากทำก็เรื่องของคุณจ้าแนะนำเฉย ๆ อยากทำไรทำ บิตคอยน์นั้นเป็นระบบแบบกระจายศูนย์และทำงานแบบเพียร์-ทู-เพียร์ (Peer-to-Peer) หรือเอาภาษาบ้าน ๆ ว่า เป็นระบบการทำงานแบบบุคคลสู่บุลคลที่ไม่มีตัวกลางระหว่างการทำงาน ดังนั้นจึงไม่มีเซิร์ฟเวอร์กลางหรือจุดควบคุม บิตคอยน์นั้นถูกสร้างขึ้นโดยกระบวนการที่เรียกว่าการขุด ซึ่งเป็นการทำงานทางการคำนวณซ้ำ ๆ ที่อ้างอิงกับรายการธุรกรรมบิตคอยน์ล่าสุด (จริง ๆ ก็มี hash ของบล็อกก่อนหน้าด้วย) ซึ่งผู้ใช้งานบิตคอยน์ทุกคนสามารถที่จะขุดบิตคอยน์ได้ โดยใช้อุปกรณ์คอมพิวเตอร์ของตนเพื่อช่วยรักษาความปลอดภัยในธุรกรรม โดยทุก ๆ สิบนาทีโดยเฉลี่ยนั้น จะมีนักขุดคนหนึ่งที่ได้ช่วยเพิ่มความปลอดภัยให้กับธุรกรรมในอดีต และจะได้รับรางวัลเป็นบิตคอยน์ใหม่และค่าธรรมเนียมจากธุรกรรมชุดล่าสุด ซึ่งกระบวนการนี้ทำให้การออกสกุลเงินและการชำระธุรกรรมไม่จำเป็นต้องมีธนาคารกลาง โปรโตคอลของบิตคอยน์ มีอัลกอรึทึมที่คอยควบคุมความยากง่ายในการการขุดให้อยู่ในระดับที่เหมาะสม โดยความยากง่ายในการขุดจะขึ้นจะถูกปรับตามระยะเวลาเฉลี่ยของการขุดในช่วงก่อนหน้านี้เพื่อให้การขุดนั้นมีโอกาสสำเร็จเฉลี่ยในทุก ๆ 10 นาที ไม่ว่ามีจำนวนผู้ขุดและการประมวลผลเท่าใดก็ตาม และนอกจากนี้เองโปรโตคอลของบิตคอยน์นั้นยังลดจำนวนของบิตคอยน์ที่นักขุดจะได้เป็นรางวัลลงเรื่อย ๆ ซึ่งจะทำให้บิตคอยน์ที่สร้างได้ในระบบนั้นมีไม่เกิน 21,000,000 ล้านบิตคอยน์ ซึ่งผลลัพธ์ที่ได้ก็คือ จำนวนบิตคอยน์ที่หมุนเวียนในระบบนั้นจะสามารถคาดเดาได้อย่างง่ายดาย ซึ่งอีกครึ่งหนึ่งของบิตคอยน์ที่เหลืออยู่จะถูกเพิ่มเข้าไปในระบบทุก ๆ 4 ปี และที่บล๊อกประมาณ 1,411,200 ซึ่งคาดว่าจะเกิดประมาณปี 2035 จะมีบิตคอยน์เป็นจำนวน 99 % ของที่สามารถเกิดขึ้นได้ในระบบ เนื่องจากอัตราการการผลิตของบิตคอยน์ที่น้อยลงเรื่อย ๆ ทำให้บิตคอยน์มีลักษณะของเงินฝืดในระยะยาว นอกจากนี้ยังไม่มีใครที่สามารถบังคับให้คุณรับบิตคอยน์ที่ถูกผลิตมานอกเหนือจากชุดกฎที่คุณเลือกได้ เบื้องหลังต่าง ๆ ของโปรโตคอลบิตคอยน์ที่ทำให้มันเป็น เครือข่ายแบบบุคคลถึงบุคคล และการคำนวณแบบกระจายศูนย์นั้น ถูกสร้างขึ้นมาบนพื้นฐานของงานวิจัยในด้านการเข้ารหัสและระบบกระจายศูนย์มาเนิ่นนานหลายทศวรรษ โดยมีการรวมเอานวัตกรรมสำคัญ ๆ 4 อย่างนี้มารวมเข้าด้วยกัน: - เครือข่ายเพียร์ทูเพียร์ที่กระจายศูนย์ (ฺBitcoin protocol) - บัญชีธุรกรรมสาธารณะ (Blockchain) - ชุดของกฎในการตรวจสอบธุรกรรมอย่างอิสระและการออกสกุลเงิน ( consensus rules ) - กลไกในการหาข้อตกลงร่วมกันทั่วโลกเกี่ยวกับบล็อกเชนที่ถูกต้อง (PoW algorithm) * ในมุมมองของนักพัฒนา นาย Andreas M. Antonopoulos and David A. Harding ( ไม่ใช่ผมจ้าา ถึงจะเห็นด้วยก็ตาม) พวกเขามองว่าบิตคอยน์นั้นคล้ายกับอินเทอร์เน็ตของเงิน เป็นเครือข่ายสำหรับการกระจายมูลค่าและการรักษาความเป็นเจ้าของสินทรัพย์ดิจิทัลผ่านการคำนวณแบบกระจายศูนย์ ซึ่งบิตคอยน์มีรายระเอียดเยอะกว่าที่พวกเขาเห็นในตอนแรกมาก ๆ ในบทนี้เองจะเป็นการอธิบายแนวคิด และคำศัพท์หลัก ๆ รวมทั้งการติดตั้งซอฟแวร์ต่าง ๆ ที่จำเป็นในการทอดลองใช้บิตคอยน์สำหรับทำธุรกรรมง่าย ๆ และสำหรับในบทถัดไป เราจะทำการดำดิ่งลงไปในเทคโนโลยีต่าง ๆ ที่ประกอบรวมกันเป็นบิตคอยน์ว่าทำไมมันถึงเป็นไปได้ และตรวจสอบการทำงานภายในของเครือข่ายและโปรโตคอล **************** ไปค้นเจอโน็ตสมัยเรียนกับ chaincode น่าจะเป็นตอนที่ต้องอ่าน mastering Bitcoin ผมพยายามเอาเนื้อหาไปเทียบกับหนังสือแล้ว โดยรวมก็ครบอยู่แหละ มีบางย่อหน้าที่ตัดทิ้งไปบ้างเหราะรู้สึกไม่สำคัญอะไร น่าจะเอามาลงให้เรื่อย ๆ จนถึงบทที่ 8 เพราะน่าจะมีแค่นั้น ถ้ามีเวลาว่างจะพยายามไล่จนจบให้ครับ **************** #siamstr
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
บิตคอยน์มันมีอยู่เท่าไหร่นะ ? คนนู้นก็บอกว่ามี 21,000,000 เหรียญ คนนั้นก็บอกว่ามีไม่ถึง 21ล้าน แล้วตกลงมันมีเทา่ไหร่กันแน่ อะเคงั้นเรามาลองพิสูจน์กัน โดยเริ่มจากเอา reward จากบล๊อกแรก 50 * 10^8 มาแปลงมันเป็นฐานสอง 0001 0010 1010 0000 0101 1111 0010 0000 0000 --> 5,000,000,000 จากนั้นก็ rightshift มันทุกครั้งที่ครบ 210,000 block 0001 0010 1010 0000 0101 1111 0010 0000 0000 -->5,000,000,000 0000 1001 0101 0000 0010 1111 1001 0000 0000 --> 2,500,000,000 0000 0100 1010 1000 0001 0111 1100 1000 0000 --> 1,250,000,000 0000 0010 0101 0100 0000 1011 1110 0100 0000 --> 625,000,000 0000 0001 0010 1010 0000 0101 1111 0010 0000 --> 312,500,000 0000 0000 1001 0101 0000 0010 1111 1001 0000 --> 156,250,000 0000 0000 0100 1010 1000 0001 0111 1100 1000 --> 78,125,000 0000 0000 0010 0101 0100 0000 1011 1110 0100 --> 39,062,500 0000 0000 0001 0010 1010 0000 0101 1111 0010 --> 19,531,250 0000 0000 0000 1001 0101 0000 0010 1111 1001 --> 9,765,625 0000 0000 0000 0100 1010 1000 0001 0111 1100 --> 4,882,812 0000 0000 0000 0010 0101 0100 0000 1011 1110 --> 2,441,406 0000 0000 0000 0001 0010 1010 0000 0101 1111 --> 1,220,703 0000 0000 0000 0000 1001 0101 0000 0010 1111 --> 610,351 0000 0000 0000 0000 0100 1010 1000 0001 0111 --> 305,175 0000 0000 0000 0000 0010 0101 0100 0000 1011 --> 152,587 0000 0000 0000 0000 0001 0010 1010 0000 0101 --> 76,293 0000 0000 0000 0000 0000 1001 0101 0000 0010 --> 38,164 0000 0000 0000 0000 0000 0100 1010 1000 0001 --> 19,073 0000 0000 0000 0000 0000 0010 0101 0100 0000 --> 9,536 0000 0000 0000 0000 0000 0001 0010 1010 0000 --> 4,768 0000 0000 0000 0000 0000 0000 1001 0101 0000 --> 2,384 0000 0000 0000 0000 0000 0000 0100 1010 1000 --> 1,192 0000 0000 0000 0000 0000 0000 0010 0101 0100 --> 596 0000 0000 0000 0000 0000 0000 0001 0010 1010 --> 298 0000 0000 0000 0000 0000 0000 0000 1001 0101 --> 149 0000 0000 0000 0000 0000 0000 0000 0100 1010 --> 74 0000 0000 0000 0000 0000 0000 0000 0010 0101 --> 37 0000 0000 0000 0000 0000 0000 0000 0001 0010 --> 18 0000 0000 0000 0000 0000 0000 0000 0000 1001 --> 9 0000 0000 0000 0000 0000 0000 0000 0000 0100 --> 4 0000 0000 0000 0000 0000 0000 0000 0000 0010 --> 2 0000 0000 0000 0000 0000 0000 0000 0000 0001 --> 1 0000 0000 0000 0000 0000 0000 0000 0000 0000 --> 0 ซึ่งหากเราเอา reward ทั้งหมดคูณด้วย 210,000 แล้วนำมาบวกกันเราก็จะได้เป็น 2,099,999,997,690,000 satoshi หรือ 20,999,999 Bitcoin กับอีก 97,690,000 satoshi ถึงเนื้อหาในวันนี้จะเกิดจากการที่เทนโดส่งคำถามมาให้ผมผิดก็ตาม แต่ไหน ๆ ก็ทำแล้วเลยเอามาแชร์ หวังว่าจะมีประโยชน์กับทุกคนครับ #siamstr
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
ว่าด้วยเจ้า Alby hub ตัวร้าย ไม่แน่ใจว่าใครเคยเจอปัญหาว่าลง alby hub บน window11 แล้วมันไม่อนุญาตบ้าง ? คือใครเจอบ้างไม่รู้แหละแต่ผมเจอละหนึ่ง ยิ่งไปกว่านั้นไอเรามันก็คนขี้เกียจไม่อยากจะลง docker ซ่ะด้วย vm ก็ขี้เกียจลง (เลิกมั้ยละถ้าจะขี้เกียจขนาดนี้) เอาจริง ๆ ก็ใช่แหละนั่นคือเหตุผลที่ผมไม่แตะต้องมันมายาวนาน แต่ด้วยความอยากเล่น sdk ของ alby ก็เลยเอ้อ หาทางเอาสักตั้งละกัน --- requirement --- wsl2 (ในตัวนี้ผมลองกับ ubuntu 22.04) --------------------- ขั้นตอนแรกก็ไปโหลดตัว install มาจากเว็บของ albyhub ครับ จากนั้นก็ลากไฟล์เข้าไป(อย่าลืมเข้าไปใน/home/ชื่อยูสก่อนนะครับ) image จากนั้นก็แตกไฟล์ด้วยคำสั่ง tar -xf albyhub-Desktop-Linux.tar.bz2 ถ้าไม่ได้ ให้ลอง sudo apt update sudo apt install lbzip2 จากนั้นก็ tar -xf albyhub-Desktop-Linux.tar.bz2 อีกรอบครับ ถ้าสำเร็จแล้วลอง ls ดูเราจะเห็น folder ตามภาพครับ image จากนั้นก็ ./albyhub-Desktop-Linux/bin/Alby\ Hub เพื่อเปิดหน้ามันซ่ะเลย 🤛 image แล้วเราก็จะได้ alby hub มาอยู่ในอ้อมอกอ้อมใจ เย่ #siamstr * ถ้าใครรันแล้วมันไม่ขึ้นไปเช็คตัว libwebkit ถ้าไม่มีก็สั่งคำสั่งตามด้านล่างนี้ก่อนแล้วค่อยรันโปรแกรมอีกรอบนะครับ sudo apt install libwebkit2gtk-4.0-37 ** ไว้เดี๋ยวลองเล่น nwc จนพอใจแล้วจะมาสรุปให้ฟังนะครับว่ามันทำอะไรได้บ้าง
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
Cashu วูวู้ อูวู๊ยู้ววูอูวู่ Cashu คือโปรโตคอลเงินสดอิเล็กทรอนิกส์ (Ecash) แบบโอเพ่นซอร์สที่สร้างขึ้นบนโปรโตคอลของบิตคอยน์ โดยมีหลักการทำงานคล้ายกับเงินสดที่จับต้องได้ เนื่องจากโทเค็นของ Cashu นั้นจะถูกเก็บไว้ในอุปกรณ์ของผู้ใช้งานเอง จึงทำให้โปรโตคอลนี้เปิดสามารถเปิดโอกาสให้เหล่านักพัฒนาได้เข้ามาสร้างแอปพลิเคชันต่าง ๆ เช่น กระเป๋าเงินอิเล็กทรอนิกส์ หรือระบบคูปองเพื่อใช้งานเฉพาะในสถานที่นั้น ๆ แล้วจุดเด่นในด้านอื่น ๆ ของ Cashu ล่ะมีอะไรบ้าง ? Cashu ค่อนข้างโดดเด่นในเรื่องของการเพิ่ม "ความเป็นส่วนตัว" ในการทำธุรกรรม เนื่องจากตัวของ mint(คิดภาพว่ามันคือโรงกษาปณ์นะครับ) จะไม่ทำการเก็บข้อมูลบัญชีหรือกิจกรรมของผู้ใช้ จึงทำให้ไม่มีการไหลออกของข้อมูลส่วนบุคคล นอกจากนี้เองก็ยังมีเรื่องของ "ความปลอดภัย" เพราะนอกจากจะไม่มีศูนย์กลางที่คอยควบคุมแล้วยังมีการใช้ BDHKE (Blind Diffie-Hellmann Key Exchange) เป็นกลไกหลักในการเข้ารหัสอีกด้วย นอกจากนี้แล้วยังมีค่าธรรมเนียมที่ต่ำและสามารถรับรองธุรกรรมได้ในจำนวนมาก องค์ประกอบ และ การทำงานของ Cashu ละเป็นอย่างไร ? ระบบของ Cashu นั้นประกอบไปด้วย 2 ส่วนหลัก ๆ นั้นคือ โรงกษาปณ์ (Mint):ใครก็ตามสามารถสร้างโรงกษาปณ์ได้ ไม่ว่าจะเป็นสำหรับกระเป๋าเงิน ระบบจ่ายเงินออนไลน์ บริการสตรีมมิ่งแบบเสียค่าบริการ หรือระบบคูปองสะสมแต้ม กระเป๋าเงิน Ecash: ผู้ใช้เก็บโทเค็น Cashu ไว้ในกระเป๋าเงินบนอุปกรณ์ ตัวอย่างการทำงาน: 1. อลิซ (ผู้ส่ง) ต้องการส่งโทเค็น Cashu ให้แครอล (ผู้รับ) 2 .อลิซ สร้างข้อความที่ถูกปิดบัง (Blinded message) และส่งไปยัง บ็อบ (โรงกษาปณ์) 3. บ็อบ ลงนามข้อความที่ถูกปิดบังและส่งกลับไปยัง อลิซ 4. อลิซ นำลายเซ็นมาเปิดเผย (Unblind) และส่งโทเค็นพร้อมลายเซ็นนี้ไปยัง แครอล 5. แครอล ส่งโทเค็นและลายเซ็นไปยัง บ็อบ เพื่อตรวจสอบ 6. บ็อบ ตรวจสอบลายเซ็น หากถูกต้อง โทเค็นนั้นจะถือว่าถูกใช้ไปแล้ว ไว้จะมีในแบบที่ละเอียดกว่านี้ตามมาในอนาคตนะครับ อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ: #siamstr
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
คิ้กค้ากกกก แน่นอนว่าคำประหลาด ๆ แบบนี้มาพร้อมกับการ "ขายของ" โดยบทความข้างล่างนี้เกี่ยวกับการขยายตัวของ Nostr และความเป็นไปได้ที่อาจจะเกิดขึ้นในอนาคตของรีเลย์ ไม่ว่าจะเป็น - ป้องกันสแปม - การขยายตัวของระบบ - รวมทั้งปัญหาต่าง ๆ ที่มีในปัจจุบันและแนวทางการแก้ปัญหา #siamstr View article →
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
NIP-104: การส่งข้อความแบบ E2EE โดยใช้โปรโตคอล Message Layer Security (MLS) โดย NIP นี้ได้นำเสนอ E2EE หรือการส่งข้อความที่มีการเข้ารหัสตั้งแต่ต้นทางไปจนถึงปลายทาง โดยเสนอให้มีการเพิ่มไปทั้งแชทส่วนตัวหรือแชทกลุ่ม โดยการใช้โปรโตคอล Messaging Layer Security (MLS) เดิมทีการส่งข้อความตรงแบบหนึ่งต่อหนึ่ง (DMs) ใน Nostr เกิดขึ้นผ่านรูปแบบที่กำหนดไว้ใน NIP-04 แต่ NIP นี้ไม่ได้รับการแนะนำ เพราะแม้ว่ามันจะเข้ารหัสเนื้อหาของข้อความแต่ความเป็นส่วนตัวของเราและคู่สนทนานั้นกลับไม่มีอยู่เลย แต่ด้วยการมาของ NIP-44 ทำให้เรามีรูปแบบการเข้ารหัสที่อัปเดตซึ่งปรับปรุงการรับประกันความลับ แต่ก็ไม่ได้กำหนดรูปแบบใหม่สำหรับการส่งข้อความตรง โดยใช้รูปแบบการเข้ารหัสนี้ ดังนั้น จึงแทบจะไม่สร้างความแตกต่างใด ๆ กับความเป็นส่วนตัว และล่าสุดนี้ NIP-17 ได้รวมการเข้ารหัส NIP-44 และ warp ด้วย NIP-59 เพื่อซ่อนข้อความตรงที่เข้ารหัสไว้ภายในชุดของกิจกรรมอื่น ๆ เพื่อให้แน่ใจว่าไม่สามารถมองเห็นได้ว่าใครกำลังคุยกับใคร และเมื่อใดที่ข้อความถูกส่งผ่านระหว่างผู้ใช้ ซึ่งส่วนใหญ่จะช่วยแก้ปัญหารั่วไหลของข้อมูล ในขณะที่ยังคงเป็นไปได้ที่จะเห็นว่าผู้ใช้กำลังรับ event ที่ warp แต่คุณไม่สามารถบอกได้ว่ามาจากใคร และ event ประเภทใดที่อยู่ภายใน event ที่ถูก warp ซึ่งจะช่วยให้ปฏิเสธได้ในระดับหนึ่ง แต่ก็ไม่ได้แก้ปัญหาการรักษาความลับล่วงหน้าหรือความปลอดภัยหลังการถูกบุกรุก กล่าวคือ หากกุญแจส่วนตัวของผู้ใช้ (หรือกุญแจการสนทนาที่คำนวณร่วมกันระหว่างผู้ใช้สองคนที่ใช้ในการเข้ารหัสข้อความ) ถูกโจมตี ผู้โจมตีจะสามารถเข้าถึง DMs ทั้งหมดที่ส่งผ่านระหว่างผู้ใช้เหล่านั้นได้อย่างสมบูรณ์ทั้งในอดีตและอนาคต นอกจากนี้ ทั้ง NIP-04 หรือ NIP-17 ต่างก็ไม่ได้พยายามแก้ปัญหาของการส่งข้อความในแชทกลุ่ม แล้วทำไมมันถึงสำคัญละ? เพราะว่าหากปราศจาก E2EE ที่เหมาะสม Nostr จะไม่สามารถใช้เป็นโปรโตคอลสำหรับไคลเอนต์การส่งข้อความที่ปลอดภัยได้ ในขณะที่ไคลเอนต์อย่าง Signal ทำงานได้อย่างยอดเยี่ยมกับ E2EE แต่ก็ยังคงอาศัยเซิร์ฟเวอร์ส่วนกลาง ซึ่งอาจถูกปิดกั้นโดยผู้ที่มีอำนาจ และเป้าหมายของ Nostr ไม่ใช่แค่การป้องกันหน่วยงานส่วนกลางจากการเซ็นเซอร์คุณและการสื่อสารของคุณ แต่ยังรวมถึงการป้องกันไม่ให้ผู้ที่มีอำนาจระดับรัฐสามารถหยุดยั้งบริการประเภทนี้ได้ตั้งแต่แรก การแทนที่เซิร์ฟเวอร์ส่วนกลางด้วยรีเลย์แบบกระจายศูนย์ทำให้ผู้ที่มีอำนาจแทบจะเป็นไปไม่ได้เลยที่จะหยุดการสื่อสารระหว่างผู้ใช้แต่ละรายได้อย่างสมบูรณ์ แล้วทำไมต้องเป็น MLS? การปรับใช้โปรโตคอล Message Layer Security (MLS) ให้เข้ากับการใช้งาน Nostr ลองคิดง่าย ๆ ว่า MLS เป็นวิวัฒนาการของ Signal Protocol ก็ได้ อย่างไรก็ตาม MLS ได้ปรับปรุงความสามารถในการขยายขนาดของการดำเนินการเข้ารหัสสำหรับการส่งข้อความกลุ่มขนาดใหญ่ได้อย่างมาก (linear -> log) โดยสร้างขึ้นเพื่อรองรับสภาพแวดล้อมแบบรวมศูนย์ และยังช่วยให้อัปเดตชุดรหัสและเวอร์ชันได้อย่างราบรื่นเมื่อเวลาผ่านไป นอกจากนี้ยังมีความยืดหยุ่นสูงและข้อความเข้ารหัสที่ส่งในระบบนั้นไม่ขึ้นอยู่กับเนื้อหาของข้อความที่ส่ง การอธิบายโปรโตคอล MLS นั้นอยู่นอกเหนือขอบเขตของ NIP นี้ แต่คุณสามารถอ่านเพิ่มเติมได้ในภาพรวมทางสถาปัตยกรรมหรือ RFC MLS กำลังอยู่ระหว่างการพัฒนาเป็นมาตรฐานอินเทอร์เน็ตภายใต้ IETF ดังนั้นโปรโตคอลจึงได้รับการตรวจสอบและวิจัยมาเป็นอย่างดี ซึ่งหมายความว่า MLS มีศักยภาพในการทำงานร่วมกันของการส่งข้อความข้ามเครือข่ายได้ในอนาคต เมื่อ MLS ได้รับการยอมรับมากขึ้น MLS มีจุดเด่นอะไรที่จะมาช่วยพัฒนา Nostr ได้บ้าง? - ความเป็นส่วนตัวและความปลอดภัย: แม้ว่าระบบการส่งข้อความส่วนตัวบน nostr ที่มีอยู่แล้วและมีความปลอดภัยที่สูง(NIP-04, NIP17) แต่ในแง่ของความเป็นส่วนตัวนั้นยังบกพร่องอยู่ ซึ่งในจุดนี้เองที่ MLS สามารถเข้ามาช่วยเพิ่มความเป็นส่วนตัวได้ - ความหยืดหยุ่น: MLS นั้นมีระบบการจัดการข้อความแบบกลุ่ม ซึ่งสามารถจัดการได้อย่างมีประสิทธิภาพสูง ซึ่งน่าจะเข้ามาช่วยเสริม - การสอดคล้องกับการกระจายอำนาจ: การใช้ประโยชน์จากโครงสร้างพื้นฐานรีเลย์แบบกระจายอำนาจที่มีอยู่ของ Nostr สำหรับการส่งข้อความ MLS ทำให้สามารถส่งข้อความได้อย่างปลอดภัย และมีความเป็นส่วนตัวมากขึ้น เป้าหมายของ NIP นี้ - ข้อความตรงและข้อความกลุ่มแบบส่วนตัวและเป็นความลับ - ส่วนตัว หมายความว่าผู้สังเกตการณ์ไม่สามารถบอกได้ว่าอลิซและบ็อบกำลังคุยกันอยู่ หรืออลิซเป็นส่วนหนึ่งของกลุ่มใดกลุ่มหนึ่ง ซึ่งจำเป็นต้องมีการปกป้องข้อมูล - เป็นความลับ หมายความว่าเฉพาะผู้รับที่ต้องการเท่านั้นที่สามารถดูเนื้อหาของการสนทนาได้ - การรักษาความลับล่วงหน้าและความปลอดภัยหลังการถูกบุกรุก - การรักษาความลับล่วงหน้า หมายความว่าเนื้อหาที่เข้ารหัสในอดีตจะยังคงถูกเข้ารหัสอยู่ แม้ว่ากุญแจจะรั่วไหลก็ตาม - ความปลอดภัยหลังการถูกบุกรุก หมายความว่าการรั่วไหลของคีย์ไม่อนุญาตให้ผู้โจมตีอ่านข้อความในอนาคตได้อย่างไม่มีกำหนด - ปรับขนาดได้อย่างมีประสิทธิภาพสำหรับกลุ่มขนาดใหญ่ - อนุญาตให้ใช้อุปกรณ์/ไคลเอนต์หลายเครื่องในการสนทนา/กลุ่มเดียว
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
Mining & Pool Mining หรือการขุด เป็นอีกหนึ่งสิ่งที่เป็นพื้นฐานของระบบบิตคอยน์ ซึ่งดำเนินการโดยการนำกำลังประมวลผลมาแข่งกันในการหา hash ให้เข้าเป้า เพื่อที่จะให้ได้รับสิทธิ์ในการใส่บล๊อกที่ตนสร้างลงไปในบล๊อกเชนของบิตคอยน์ และนักขุดที่สามารถหา nonce ที่ทำให้ hash เข้าเป้าได้ก่อนก็จะได้รับบิตคอยน์ที่ถูกผลิตขึ้นใหม่ในบล๊อกนั้น ๆ และ ค่าธรรมเนียมจากการทำธุรกรรมต่าง ๆ ในบล๊อกนั้น ๆ อีกด้วย แต่หลังจากเครือข่ายของบิตคอยน์ได้มีการเจริญเติบโตขึ้นเรื่อย ๆ ทำให้การแข่งขันกันของเหล่านักขุดก็เกิดขึ้นด้วย เมื่องแรงขุดในระบบเพิ่มขึ้น ความยากในการหา hash ที่จะตรงกับเป้าหมายก็ยากขึ้นเรื่อย ๆ ตาม difficulty adjustment algorithm อีกด้วย ด้วยเหตุนี้เองจึงทำให้โอกาสที่นักขุดที่ขุดด้วยตัวคนเดียวจะสามารถได้รับบิตคอยน์จากการขุดนั้นยากขึ้นเรื่อย ๆ เหล่าบรรดานักขุดจึงเริ่มมีการรวมกำลังในการขุดของแต่ละคน เพื่อเพิ่มโอกาสที่จะได้รับบิตคอยน์จากการขุด จึงเกิดเป็นสิ่งที่เรียกว่า Mining Pool ในภายหลัง Mining Pool คืออะไร? Mining Pool คือการรวมกันของกำลังขุดจากนักขุดแต่ละคน เพื่อที่จะเพิ่มโอกาสในการได้รับบิตคอยน์จากการขุด โดยหาก pool ของพวกเขาได้รับบิตคอยน์มาก็จะทำการอจกจ่ายไปให้กับสมาชิกใน pool ตามแรงขุดที่แต่ละคนส่งมา และด้วยสิ่งนี้เองทำให้ mining pool ได้เข้ามาแก้ปัญหาของความยากที่เพิ่มขึ้นในการขุดบิตคอยน์ และนอกจากการเพิ่มโอกาสในการได้บิตคอยน์จากการขุดแล้ว อีกเหตุผลที่มักจะทำให้นักขุดเข้าร่วมกับ pool ต่าง ๆ คือการที่จะสามารถเพิ่มความสเถียรของรายได้ จะเกิดอะไรขึ้นถ้ามี pool ใด ๆ ที่รวมกำลังขุดเกิน 51 % ? จะมีปัญหาอะไรไหม ? ในกรณีนี้ก็ต้องบอกว่าขึ้นอยู่กับนโยบายของ pool นั้น ๆ หาก pool นั้น ๆ ยังเล่นตามกติกา ไม่มีการเซนเซอร์ใด ๆ และมุ่งเน้นไปที่การทำบล๊อกเทมเพสที่ได้ค่าธรรมเนียมมากที่สุด และกระจายบิตคอยน์ที่ได้กับนักขุดอย่างยุติธรรม ก็อาจจะเป็นแรงจูงใจที่ทำให้นักขุดที่อยากจะส่งแรงขุดไปที่ pool นั้น ๆ และหาก pool ไหนที่พยายามจะแซกแซงระบบไม่ว่าจะเป็นการ เซนเซอร์ธุรกรรมหรืออื่น ๆ แน่นอนว่าการทำแบบนั้นย่อมส่งผลโดยตรงกับกำไรที่นักขุดจะได้รับ แล้วทำไมเหล่านักขุดถึงจะต้องส่งกำลังขุดไปยัง pool เหล่านั้น และการแก้ไขปัญหาหากมีเรื่องแบบนี้เกิดขึ้น เหล่านักขุดก็สามารถที่จะย้ายกำลังขุดของตัวเองทั้งหมด ไปยัง pool ใหม่ หรือจะกลับมาขุดด้วยตัวเองก็เป็นเรื่องที่สามารถทำได้โดยง่ายและไม่มีต้นทุนใด ๆ ในการย้ายนอกจากเวลา #siamstr
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
OP_CHECKTEMPLATEVERIFY (CTV) OP_CHECKTEMPLATEVERIFY (CTV) เป็นโอปโค้ดใหม่ที่ถูกเสนอขึ้น โดยรับค่าแฮชของข้อผูกมัดเป็นพารามิเตอร์ และกำหนดให้ธุรกรรมใด ๆ ที่ดำเนินการด้วยโอปโค้ดนี้ต้องมีชุดของเอาต์พุตที่ตรงกับข้อผูกมัดนั้น ด้วยสิ่งนี้เอง ทำให้สามารถสร้างที่อยู่ที่ระบุวิธีการใช้จ่ายเงินใด ๆ ที่ได้รับไปยังที่อยู่นั้นได้ ซึ่งเป็นการออกแบบที่รู้จักใน Bitcoin ว่าเป็นพันธสัญญา (covenant) เดิมทีนำเสนอภายใต้ชื่อ OP_CHECKOUTPUTSHASHVERIFY (COSHV) ซึ่งข้อเสนอนี้มุ่งเน้นไปที่ความสามารถในการสร้างธุรกรรมโดยใช้ congestion control (คล้าย ๆ กันกับที่ใช้คุมการไหลของ data packets ใน TCP ) ซึ่งผู้ใช้จ่ายเงินไปยังที่อยู่เดียวโดยใช้ CTV ซึ่งเมื่อได้รับการยืนยันในระดับที่เหมาะสมแล้ว จะทำให้ผู้รับหลายรายมั่นใจได้ว่าพวกเขาแต่ละคนจะได้รับเงิน กระบวนการสองขั้นตอนนี้น่าจะสามารถใช้ได้ทุกที่ ที่มีตัวเลือกการรวมการชำระเงิน (payment batching) โดยมีแนวโน้มว่าจะสามารถช่วยลดค่าธรรมเนียมได้มากกว่าการรวมการชำระเงิน ข้อเสนอในเวอร์ชันต่อ ๆ มา มีการให้ความสำคัญกับสัญญาและพันธสัญญาอื่น ๆ ที่สามารถสร้างได้โดยใช้โอปโค้ดใหม่ เช่น ความสามารถในการสร้าง กระเป๋าสตางค์ (vaults) และธุรกรรม CoinJoin ในรูปแบบใหม่ที่อาจช่วยลดความซับซ้อนในการสร้างหรือลดค่าธรรมเนียมลงได้ นอกจากนี้ผู้เขียนท่านอื่น ๆ ได้กล่าวถึงว่าโอปโค้ดใหม่อาจใช้เพื่อให้ผู้ใช้สามารถรวมเงินทุนของตนเข้าด้วยกันใน UTXO เดียวได้อย่างน่าเชื่อถือและความเป็นส่วนตัวมากยิ่งขึ้น การทำงานของ OP_CHECKTEMPLATEVERIFY OP_CHECKTEMPLATEVERIFY ใช้โอปโค้ด OP_NOP4 (0xb3) เป็นการอัปเกรดซอฟต์ฟอร์ก OP_CHECKTEMPLATEVERIFY ทำงานดังนี้: - ต้องมีอย่างน้อยหนึ่งองค์ประกอบบนสแต็ก ไม่งั้นจะไม่สามารถทำงานได้ - องค์ประกอบบนสแต็กต้องมีความยาว 32 ไบต์ หากไม่ใช่จะทำเป็น NOP (No Operation) - DefaultCheckTemplateVerifyHash ของธุรกรรม ณ ดัชนีอินพุตปัจจุบันต้องเท่ากับองค์ประกอบบนสแต็ก หากไม่เท่ากันจะล้มเหลว - DefaultCheckTemplateVerifyHash ผูกมัดกับ: เวอร์ชัน,ล็อกไทม์, แฮชของ ScriptSigs (ถ้ามี ScriptSigs ที่ไม่ใช่ค่า Null), จำนวนอินพุต, แฮชของลำดับ, จำนวนเอาต์พุต, แฮชของเอาต์พุต, ดัชนีอินพุตที่กำลังดำเนินการอยู่ กฎมาตรฐานที่แนะนำเพิ่มเติม: ปฏิเสธข้อมูลที่ไม่ใช่ 32 ไบต์ เป็น SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS detail มากกว่านี้:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
ฮี่ ๆ ไม่ใช้คำเดิมละเดี๋ยวโดนจับได้อีก แต่วันนี้ผมมีของใหม่มานำเสนอ View article → #siamstr
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
Event Event คืออะไร? Event เป็น object เพียงประเภทเดียวที่มีอยู่บน Nostr โดยมีโครงสร้างประมาณนี้ ``` {"id":"84d5d3dc9c388a702f39cad6360d41ebb804e809fb822f110ff8a14dfd35fc6c", "pubkey":"66df60562d939ada8612436489945a4ecf1d62346b3d9478dea8a338f3203c64", "created_at":1722315959, "kind":1, "tags":[["t","siamstr"]], "content":"ไปสั่งกาแฟเมื่อกี้ พส เจ้าของร้านชมว่าเดี๋ยวนี้คล่องภาษาญี่ปุ่นแล้วนะ ไอเราก็ดีใจ พอเดินกลับถึงที่ทำงานละก็ตระหนักได้ว่า ตะกี้เราสั่ง “ไอซ์โคฮี โอเนไงชิมัส” “เทคเอาส์” “คาโดะเดสส” ไอบ้าไหนญี่ปุ่นก่อนอังกฤษทั้งนั้น 🤣🤣\n\n#siamstr", "sig":"8f066a0099a5f580b605ebdb220179c4eca298947c38b855a0a8bf2783f28ddb537cb74a7f61d3ce8891189f719870efdf320ea4f895e03cdac44284c450c5c4"} ``` อย่าง Event ข้างต้นนี้มี kind เป็น 1 ซึ่งหมายถึง "ข้อความโน้ต" ซึ่งก็คือข้อความธรรมดา สั้น ๆ คล้ายกับที่ใช้กันใน Twitter เช่น บนฟีด การตอบกลับ และการโควท ประเภทของ Event (Event Kinds) หมายเลขของ kind แต่ละตัวมีความหมายแตกต่างกัน ตัวอย่างเช่น 0 หมายถึงอีเวนต์ "ข้อมูลเมตา" ใช้สำหรับให้รายละเอียดเกี่ยวกับผู้ใช้ เช่น ชื่อและรูปโปรไฟล์ รีเลย์ (Relays) สามารถจัดการกับ kind ที่แตกต่างกันได้ เช่น รีเลย์มักจะลบอีเวนต์ kind:0 เวอร์ชันเก่ากว่าออกไป และเก็บไว้เฉพาะเวอร์ชันล่าสุด ในขณะที่โดยทั่วไปจะเก็บอีเวนต์ kind:1 ไว้หลายรายการสำหรับแต่ละคีย์ โดยทั่วไปแล้ว คุณไม่จำเป็นต้องใช้ kind เกินกว่า 0 และ 1 ในการสร้างแอปพลิเคชันโซเชียลมีเดียบน Nostr แต่ kind อื่น ๆ ถูกคิดค้นขึ้นโดยไคลเอนต์ เพื่อมอบฟังก์ชันการทำงานอื่น ๆ ตามที่ระบุไว้ใน NIP บาง kind ไม่เกี่ยวข้องกับเครือข่าย และให้บริการตามความต้องการอื่น ๆ ของไคลเอนต์ที่เฉพาะเจาะจงกับฟังก์ชันการทำงานเหล่านั้น ซึ่งแนวคิดก็คือ สำหรับกรณีการใช้งานใหม่ ๆ แต่ละกรณี จะต้องมีการพิจารณาและเสนอซับโปรโตคอลเป็น NIP เพื่อให้สามารถทำงานร่วมกับไคลเอนต์ที่มีอยู่และในอนาคต ซึ่งอาจสนใจที่จะนำฟังก์ชันการทำงานนั้นไปใช้ ขณะเดียวกันก็มั่นใจได้ถึงความเข้ากันได้ย้อนหลัง และการรองรับสิ่งต่าง ๆ ที่มีอยู่และไม่ต้องการเปลี่ยนแปลง คุณสมบัติอื่น ๆ ของ Event created_at: เป็น Timestamp ของ UNIX ที่กำหนดโดยผู้สร้างอีเวนต์ โดยปกติจะเป็นเวลาที่สร้าง แม้ว่าจะไม่มีการตรวจสอบ แต่ก็ไม่ใช่ปัญหา content: ขึ้นอยู่กับความหมายของ kind ในกรณีของ kind:1 จะเป็นเพียงสตริงข้อความธรรมดาที่คนอื่น ๆ อ่านได้ tags: ขึ้นอยู่กับ kind เช่นกัน แต่แท็กทั่วไปบางอย่างที่มักปรากฏในอีเวนต์ kind:1 และ kind อื่นๆ คือ "p" ซึ่งใช้เพื่อกล่าวถึงคีย์สาธารณะ และ "e" ใช้เพื่ออ้างถึงอีเวนต์อื่น อยากแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
Nostr Implementation Possibilities (NIPs) NIP คืออะไร? NIP มีไว้เพื่อส่งเสริมความสามารถในการทำงานของ Nostr และเป็นตัวคอยกำหนดให้ เหล่านักพัฒนาทำสิ่งต่าง ๆ ที่เหมือนกันในรูปแบบเดียวกัน เพราะมันคงไม่ใช่ความคิดที่ดีนัก หากนักพัฒนาแต่ละคนจะคิดค้นวิธีแก้ปัญหาทั่วไปของตัวเองและนำไปใช้ในแอปของตัวเองเท่านั้น และคงจะเป็นการดีกว่า ถ้าหากทุกคนใช้วิธีแก้ปัญหาที่เหมือนกัน นั่นคือเหตุผลที่ต้องมี NIP อยู่ในโปรโตคอลของ Nostr และในทำนองเดียวกัน แนวคิดใหม่อาจดูดีในแอปของนักพัฒนาบางราย แต่จะดูดียิ่งขึ้นอย่างแน่นอนหากแอปอื่น ๆ อีกมากมายใช้มาตรฐานเดียวกันและสามารถทำงานร่วมกันได้อย่างราบรื่น ทำไมมันถึงหน้าสนใจ? อย่าลืมว่า Nostr เป็นระบบแบบกระจายอำนาจและไม่ได้มีบริษัทหรือใครที่เป็นเจ้าของมัน อย่างเช่นโซเชียลมีเดียอื่น ๆ เช่น ทวิตเตอร์ อ่อไม่สิตอนนี้คงต้องเรียกมันว่า X สินะ ซึ่งหมายความว่าทิศทางของโพรโทคอล Nostr นั้นขึ้นอยู่กับพวกเราทุกคน! ไม่ว่าใคร ๆ ก็สามารถเสนอแนะและสนับสนุนการเปลี่ยนแปลงและให้ข้อเสนอแนะเกี่ยวกับแนวคิดที่ผู้อื่นเสนอ และการที่คุณเป็นส่วนหนึ่งของชุมชนนี้ ก็ทำให้คุณมีส่วนร่วมในทิศทางของ Nostr อีกด้วย จากที่ส่งหากันได้แค่ข้อความ มาเป็นรูปภาพ มาเป็นวิดีโอ และมาเป็น”เงิน” นี่คือเส้นทางการเดินทางของโปรโตคอลนี้ในอดีต แล้วในอนาคตมันจะพัฒนาไปยังไงต่อก็ขึ้นอยู่กับเหล่าผู้ใช้งานและนักพัฒนาในอนาคต แล้วทำไมสิ่งนี้ถึงจะไม่น่าสนใจละ ? อย่างแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
รีเลย์คืออะไร? รีเลย์เปรียบเสมือนเซิร์ฟเวอร์ที่อยู่เบื้องหลังของ Nostr และทำหน้าที่รับ event ต่าง ๆ มาจากไคลเอนต์ Nostr และอาจจะจัดเก็บและกระจายข้อความเหล่านั้นไปยังไคลเอนต์อื่น ๆ ที่มีการเชื่อมต่ออยู่ เทคโนโลยีของรีเลย์นั้นเปลี่ยนแปลงอย่างรวดเร็ว ดังนั้นคาดว่าจะมีการเปลี่ยนแปลงอีกมากมายในอนาคต อย่างในปัจจุบันที่มีการนำเสนอ bostr หรือ รีเลย์ที่จะคอยส่ง event ของเราต่อให้กับรีเลย์อื่น ๆ ที่มีการเชื่อมต่อ เพื่อช่วยลดภาระของไคลเอนต์ในการรับส่งข้อมูลจากหลาย ๆ รีเลย์พร้อม ๆ กัน หรืออย่างการป้องกันสแปมด้วย POW หรือประเภทที่สามารถเก็บรูปหรือวิดีโอที่มีขนาดใหญ่ได้ แต่สิ่งหนึ่งที่ควรทราบก็คือ การที่ Nostr นั้นพยายามจะกระจายศูนย์และเหตุผลหลัก ๆ ที่สามารถทำแบบนั้นได้ก็ขึ้นอยู่กับรีเลย์ในการจัดเก็บและดึงข้อมูล ดังนั้น หากคุณรู้สึกว่าไคลเอนต์ Nostr ของคุณทำงานช้า ส่วนใหญ่ก็มักเกิดจากรีเลย์ที่คุณกำลังเชื่อมต่ออยู่ คุณอาจลองแก้ไขปัญญาโดยการเปลี่ยนหรือเพิ่มรีเลย์อีกสองสามรายการในไคลเอนต์ที่คุณใช้ แล้วจะสามารถหารายการรีเลย์ได้จากไหน? การที่เราจะหารายการรีเลย์ที่เราควรเชื่อมต่อนั้น ๆ จริงแล้ว ๆ สามารถทำได้หลายวิธี แต่วิธีที่ผมแนะนำที่สุดจะเป็นการใช้ตามคนที่เราติดตามอยู่ เพราะจะเป็นวิธีที่เราสามารถเห็น event ต่าง ๆ ของคนที่เราติดตามได้ง่ายที่สุด และเช่นเดียวกัน เพื่อน ๆ หรือคนที่เราติดตามก็จะสามารถเห็น event ของเราได้เช่นกัน และสำหรับในประเทศไทย เรามีรีเลย์ที่คนไทยส่วนใหญ่นิยมใช้กันอยู่สองอัน นั้นคือ wss://relay.siamstr.com/ และ wss://relay.notoshi.win/ ถ้าหากว่าอยากเห็นคนไทยเยอะ ๆ บนหน้าไทม์ไลน์ ผมแนะนำเป็นอย่างยิ่งว่าควรเพิ่ม รายการรีเลย์เหล่านี้ลงไปในบัชญีหรือไคลเอนต์ต่าง ๆ ที่คุณใช้ด้วย สำหรับอีกวิธีหนึ่งผมแนะนำให้เข้าไปในเว็บไซต์ nostr.watch เนื่องจากในเว็บไซต์นี้เป็นแหล่งข้อมูลที่ดีที่สุดสำหรับการค้นหาและประเมินความเร็วของรีเลย์ต่าง ๆ จะเกิดอะไรขึ้นถ้ารีเลย์ทั้งหมดที่ฉันเชื่อมต่ออยู่หยุดให้บริการ? สิ่งนี้เป็นสิ่งที่คุณต้องระวังมากที่สุดในการใช้งาน nostr เนื่องจากหากรีเลย์ทั้งหมดที่คุณเก็บข้อมูลไว้หยุดให้บริการทั้งหมดและคุณไม่มีการสำรองข้อมูล event ของคุณเก็บไว้เลย มันแปลว่าโพสต์ทั้งหมดของคุณ ผู้ติดตาม และรายการต่าง ๆ ที่คุณสรรค์สร้างไว้จะไม่สามารถกู้คืนได้ไปตลอดการ นี่จึงเป็นเหตุผลหลัก ๆ ที่ Nostr อนุญาตให้ผู้ใช้งานนั้นสามารถเชื่อมต่อกับรีเลย์ได้เป็นจำนวนมาก ก็เพื่อให้แน่ใจว่ามีข้อมูลสำรองเก็บไว้อยู่ที่ใดที่หนึ่งในระบบเสมอ แต่อย่างไรก็ตาม หากคุณต้องการที่จะมั่นใจได้ว่าข้อมูลต่าง ๆ ของคุณจะไม่ถูกเซ็นเซอร์ สิ่งที่คุณสามารถสามารถทำได้คือการใช้รีเลย์ส่วนตัวของคุณและกำหนดนโยบายต่าง ๆ ภายในรีเลย์ของคุณด้วยตัวคุณเอง แล้วฉันจะสามารถใช้รีเลย์ส่วนตัวได้อย่างไร? *อะแฮ่ม ๆ ขอบอกไว้ก่อนว่ามันไม่คุ้มค่ากับความยุ่งยากสำหรับคนโดยทั่ว ๆ ไป ถึงในปัจจุบันจะมีเทคโนโลยีบางตัวที่เข้ามาช่วยให้มันทำได้ง่ายขึ้นแล้วก็ตาม หากคุณต้องการที่จะสำรองข้อมูลนั้น การที่จะมีรีเลย์ส่วนตัวที่ออนไลน์ตลอดเวลาอาจเป็นเรื่องที่ไม่ได้จำเป็นขนาดนั้น เนื่องจากเราสามารถใช้งานบริการอย่าง https://nostrsync.live/ ในการดาวน์โหลดข้อมูลของเราจากรีเลย์ต่าง ๆ ได้ หรือการติดตั้งรีเลย์ส่วนตัวอย่าง nostr-relay-tray: ที่ช่วยให้เราสามารถมีรีเลย์ส่วนตัวที่ใช้สำหรับสำรองข้อมูลได้ อย่างแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
ไคลเอนต์คืออะไร? หากจะอธิบายให้เห็นภาพอยากให้มองว่าไคลเอ็นต์ Nostr นั้นเป็นเหมือนกับแอปที่คุณใช้งานเพื่อเข้าถึง Twitter, Facebook, youtube เป็นต้น พวกมันคือ แอปพลิเคชัน, เว็บแอป ที่เชื่อมต่อคุณกับโลกของ Twitter, Facebook, youtube โดยตัวของไคลเอนต์ใน Nostr เองก็เปรียบเสมือนแอปต่าง ๆ ที่คุณใช้ดูหน้าฟีดนั่นเอง แต่ข้อดีของ Nostr ที่เหนือแอปพลิเคชันอื่น ๆ คือความเรียบง่ายและยืดหยุ่น ส่งผลให้ไคลเอ็นต์แต่ละตัวมีวิธีนำเสนอและใช้งานที่แตกต่างกันไป บางไคลเอ็นต์อาจออกแบบให้ใช้งานง่ายเหมือน Twitter บางตัวเน้นให้เห็นบทบาทสำคัญของรีเลย์ หรือโหนดที่กระจายข้อมูลอยู่ทั่วโลก บางตัวใช้ระบบอัลกอริทึมเพื่อให้แน่ใจว่าข้อมูลไม่ถูกปิดกั้น โดยไม่ทำให้ผู้ใช้งานรู้สึกยุ่งยาก เรียบง่ายและยืดหยุ่น? เนื่องจากการออกแบบของโปรโตคอลที่ทำการแยกข้อมูลของผู้ใช้ทั้งหมดออกจากไคลเอนต์ ทำให้ตัวของผู้ใช้งานเองนั้นมีอิสระเต็มที่ที่จะเลือกใช้ไคลเอนต์ต่าง ๆ เพื่อเข้าใช้งาน Nostr และแน่นอนว่า ผู้ใช้งานสามารถสลับหรือลงชื่อเข้าใช้ ไคลเอ็นต์ได้หลายตัวตามต้องการ ตราบใดที่ไคลเอ็นต์ทั้งหมดเชื่อมต่อกับชุดรีเลย์เดียวกัน คุณก็จะเห็นข้อมูลเดียวกันในทุก ๆ ไคลเอ็นต์ ลงชื่อเข้าใช้ ไคลเอ็นต์หลาย ๆ ตัวแล้วจะกระทบต่อความปลอดภัยของแอคเคาร์ไหม? คำตอบของคำถามนี้นั้นขึ้นอยู่กับวิธีการที่คุณลงชื่อเข้าใช้ หากคุณลงชื่อเข้าใช้ด้วยกุญแจส่วนตัว ถึงแม้ว่าไคลเอ็นต์ส่วนใหญ่จะพยายามรักษาความปลอดภัยของกุญแจส่วนตัวอย่างดีที่สุด แต่ด้วยข้อจำกัดของซอฟต์แวร์ ย่อมมีความเสี่ยงที่จะเกิดช่องโหว่ การเจาะระบบ และข้อผิดพลาด ที่อาจทำให้กุญแจส่วนตัวของคุณรั่วไหลออกไปได้ ส่วนวิธีการป้องกันเกี่ยวกับเรื่องนี้คือการใช้ส่วนขยายของเว็บเบราว์เซอร์ เพราะการเข้าสู่ระบบในไคลเอนต์ต่าง ๆ ผ่านส่วนขยายนั้นจะใช้เพียงกุญแจสาธารณะในการเข้าสู่ระบบและทุกครั้งที่เราต้องการจะโพสต์หรือสร้าง event บน Nostr ไคลเอนต์จะทำการร่าง event นั้น ๆ และเว้นช่องของลายเซ็นเอาไว้จากนั้นเราจะต้องทำการเซ็นผ่านส่วนขยาย ด้วยวิธีนี้ทำให้กุญแจส่วนตัวของเราไม่หลุดออกไปไหนตลอดการใช้งาน #siamstr อย่างแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ:
Learning_BTC&NOSTR's avatar
LearnBN 1 year ago
องค์ประกอบของโปรโตคอลที่ชื่อว่า Nostr หลังจากได้ทำความรู้จัก Nostr กันไปแล้วเมื่อคราวก่อน คราวนี้เรามาเจาะดูองค์ประกอบของโปรโตคอลนี้กันดีกว่า Keys ระบบบัญชีผู้ใช้และรหัสผ่านสำหรับ Nostr บัญชี Nostr แต่ละบัญชีจะใช้คู่กุญแจสาธารณะ/ส่วนตัว (Public/Private Key ) เปรียบเทียบง่าย ๆ คือ กุญแจสาธารณะของคุณคือชื่อผู้ใช้ และกุญแจส่วนตัวก็เป็นรหัสผ่าน แต่ว่า ก็มีข้อแตกต่างที่สำคัญอยู่ นั่นคือ กุญแจส่วนตัวของคุณนั้นจะไม่สามารถรีเซ็ตได้หากเกิดการสูญหายขึ้น คุณจะเสียบัญชีนั้นไปตลอดกาล โดยทั่วไปแล้ว กุญแจสาธารณะจะแสดงเป็นข้อความที่ขึ้นต้นด้วย npub1 และกุญแจส่วนตัวจะขึ้นต้นด้วย nsec1 ทั้งนี้คุณควรที่จะตรวจสอบให้แน่ใจว่าคุณได้เก็บกุญแจส่วนตัวของคุณไว้ในที่ปลอดภัย เช่น โปรแกรมจัดการรหัสผ่านอย่างเช่น Bitwarden โปรโตคอลกับไคลเอนต์ ต่างกันอย่างไร? Nostr เองเป็นเพียงโปรโตคอล หมายความว่า Nostr นั้นเป็นเพียงกระบวนการที่ตกลงกันไว้สำหรับการส่งข้อความผ่านอินเทอร์เน็ต (เหมือนข้อกำหนด) ซึ่งการที่คุณจะเข้าถึง Nostr (โปรโตคอล) นั้น ผู้ใช้ส่วนใหญ่จะใช้งานผ่านไคลเอนต์ ซึ่งตัวของไคลเอนต์นั้นอาจเป็นเว็บ แอปพลิเคชันเดสก์ท็อป หรือ แอปพลิเคชันมือถือ โดยไคลเอนต์สามารถดึงข้อมูลจากรีเลย์ และสร้างข้อมูลใหม่ และส่งข้อมูลนั้นไปยังรีเลย์เพื่อให้ผู้ใช้คนอื่น ๆ สามารถเรียกอ่าน ข้อมูลนั้น ๆ ได้ โดย "ข้อมูล" เพียงรูปแบบเดียวที่มีอยู่ใน Nostr คือสิ่งที่เราเรียกกันว่า event การพิสูจน์ความเป็นเจ้าของข้อมูลบน Nostr บน Nostr นั้นการพิสูจน์ตัวตนเป็นเรื่องที่ง่ายมากเนื่องจากทุก ๆ event ที่เกิดขึ้น *จำเป็น*ต้องมีลายเซ็นดิจิทัล (Digital Signature) โดยลายเซ็นนั้นจะช่วยให้มั่นใจได้ว่า ใครเป็นผู้สร้าง event นั้น ๆ ขึ้นมา โดยการพิสูจน์ทางคณิตศาสตร์ โดยในการสร้างลายเซ็นแต่ละครั้ง ไคลเอนต์จะจำเป็นต้องใช้กุญแจส่วนตัวของคุณ โดยทั่วไปแล้ว แอปพลิเคชันเจะมีที่ให้คุณใส่กุญแจส่วนตัวของคุณ เมื่อเปิดแอปพลิเคชันครั้งแรก พวกเขาสามารถคำนวณกุญแจสาธารณะของคุณได้จากกุญแจส่วนตัวเช่นกัน ส่วนในกรณีที่คุณใช้งานผ่านเว็บแอป ผมไม่แนะนำให้ใส่กุญแจส่วนตัวลงไป แต่แนะนำให้ใช้ส่วนขยายของเบราว์เซอร์ ที่ใช้งานฟังก์ชันที่เกี่ยวข้องกับ Nostr ซึ่งอนุญาตให้เว็บไคลเอ็นต์ส่ง event ที่ยังไม่ถูกเซ็นมาให้ส่วนขยายและส่วนขยายจะทำหน้าที่เซ็น สำหรับวิธีนี้ เว็บไคลเอ็นต์ต่าง ๆ ไม่จำเป็นต้องรู้กุญแจส่วนตัวของคุณ แต่คุณก็ยังสามารถลงนามใน event ต่าง ๆ ได้ตามปกติ โดยส่วนขยายที่ได้รับความนิยมก็จะเป็น Flamingo, Alby และ nos2x #siamstr อย่างแชร์ไปให้คนที่ไม่ได้อยู่บน Nostr อ่านอย่างงั้นเหรอ !?!?!?!? งั้นทางเราขอแนะนำ: