บิตคอยน์ คือ ระบบการเงินแบบ P2P (Peer-to-Peer Network) หรือการทำธุรกรรมระหว่างบุคคลถึงบุคคล เฉกเช่นเดียวกันกับการที่เรายื่นแบงก์ร้อยให้แม่ค้าขายกับข้าวในตลาด หรือการรับเงินทอนจากร้านกาแฟเป็นเงินสด โดยจะมีคนรู้เห็นกับการทำธุรกรรมนี้แค่ “ตัวเราเอง” และ “ผู้ที่เราทำธุรกรรมด้วย” ซึ่งระบบบิตคอยน์ต้องใช้ “กฎความเห็นพ้องต้องกัน (Consensus Rules)” ว่าแต่ละธุรกรรมที่เกิดขึ้นต้องมีความถูกต้อง สามารถพิสูจน์ที่มาที่ไปได้ และไม่มีตัวกลาง (Without Centralized Architecture) โดยเน็ตเวิร์กของบิตคอยน์นั้นจำเป็นต้องอาศัยโหนด (Node) ในการตรวจสอบและยืนยันทุก ๆ ธุรกรรมที่เกิดขึ้นว่ามีความถูกต้อง 100% จากนั้นจึงมีการกระจายข้อมูลไปยังโหนดอื่น ๆ ทุกโหนดในระบบ เพื่อร่วมกันตรวจสอบและยืนยันธุรกรรม รวมถึงการบันทึกธุรกรรมที่ถูกบรรจุลงบล็อก (Block) โดยไมเนอร์ (Miner) แล้วก็จะถูกกระจายเพื่อบันทึกไว้บนบิตคอยน์โหนดทุกโหนดบนโลกใบนี้
สารบัญบทความ
- โหนด (Node) คืออะไร?
- บิตคอยน์โหนด (Bitcoin Node) คืออะไร?
- บิตคอยน์ไลท์นิงโหนด (Bitcoin Lightning Node) คืออะไร?
- ความแตกต่างระหว่างบิตคอยน์โหนด (Bitcoin Node) กับบิตคอยน์ไมเนอร์ (Bitcoin Miner)
- ทำไมเราต้องรันบิตคอยน์โหนดกันนะ?
- Bitcoin Full Node ทำตามได้ไม่ยากอย่างที่คิด
- เริ่มต้นอย่างไรกันดี?
- ขอเกริ่นถึงบทความตอนที่ 2 และแนวทางการประยุกต์ใช้เบื้องต้น
โหนด (Node) คืออะไร?
ก่อนอื่นต้องขอบอกว่าไม่ต้องแปลกใจ หากท่านผู้อ่านไม่เคยได้ยินคำว่า “โหนด (Node)” มาก่อน ผู้เขียนก็เพิ่งได้รู้จักและเข้าใจ เมื่อได้มาศึกษาบิตคอยน์แบบจริงจังเมื่อประมาณ 2 ปีก่อนหน้านี้เอง ถ้าตามหลักการแล้ว โหนดจะหมายถึง “อุปกรณ์อิเล็กทรอนิกส์ทางกายภาพที่จับต้องได้ (เช่น เครื่องคอมพิวเตอร์, เครื่องเซิร์ฟเวอร์ หรือแม้กระทั่งโทรศัพท์มือถือ) และเชื่อมต่อผ่านระบบเครือข่ายสื่อสารใด ๆ โดยสามารถที่จะสร้างชุดข้อมูล (Creating of Information) สามารถรับและส่งข้อมูล (Receiving and Transmission of Information) โดยผ่านช่องทางเครือข่ายที่เชื่อมต่ออยู่นั้นได้”
ฟังดูงง ๆ กันมั้ย สรุปให้เข้าใจง่าย ๆ ก็คือ :
โหนดเป็นคอมพิวเตอร์เครื่องหนึ่งที่อยู่บนเครือข่ายอินเทอร์เน็ต และมีการเชื่อมต่อกับโหนดอื่น ๆ พร้อมทั้งมีการรับหรือส่งข้อมูลกันตลอดเวลา เปรียบเสมือนเป็นสะพานเชื่อมในการส่งต่อข้อมูลที่เหมือนกันทุกประการให้กระจายไปทั่วทั้งโลกทุกพื้นที่ที่สามารถเข้าถึงระบบอินเทอร์เน็ตได้
ภาพจาก https://coinmarketcap.com
บิตคอยน์โหนด (Bitcoin Node) คืออะไร?
“บิตคอยน์โหนด” (Bitcoin Node) คือ เครื่องคอมพิวเตอร์ หรือเครื่องเซิร์ฟเวอร์ใด ๆ ก็ตามที่ “เชื่อมต่อกับระบบเน็ตเวิร์กของบิตคอยน์” มีการเก็บข้อมูลประวัติธุรกรรมที่ได้รับการยืนยันแล้วในอดีต และมีหน้าที่ในการตรวจสอบธุรกรรมที่กำลังเกิดขึ้น ณ ปัจจุบันว่ามีความถูกต้องเป็นไปตามกฎเกณฑ์ที่กำหนดไว้ทุกประการ (Validate Transactions)
ยกตัวอย่าง เช่น เราจ่ายเงิน 100 บาทให้แม่ค้าเพื่อซื้อกับข้าวราคา 80 บาท ดังนั้นเราจะได้เงินทอนกลับมา 20 บาท และแม่ค้าจะมีเงินเพิ่มขึ้น 80 บาท จากนั้นแม่ค้านำเงินจำนวน 80 บาทที่ได้จากเราไปซื้อกาแฟราคา 60 บาท เมื่อถึงตอนนี้ เราจะยังคงมีเงินจำนวน 20 บาท เช่นเดิม ส่วนแม่ค้าคงเหลือเงิน 20 บาท และร้านกาแฟจะมีเงิน 60 บาท
ตัวเลขทางบัญชีเหล่านี้ คือ หน้าที่ของโหนด (Node) ในการยืนยันว่าผู้ทำธุรกรรมทุกคน “มีสิทธิ์” ในการทำธุรกรรมต่าง ๆ ที่กล่าวมาได้อย่างถูกต้อง เนื่องจากเงินทุกบาทนั้นมีที่มาที่ไปชัดเจน และสุดท้ายคือการบันทึกประวัติการทำธุรกรรมของทุกคนไว้ในระบบ เพื่อไว้ใช้อ้างอิงในการทำธุรกรรมต่อไปในอนาคต
แต่บิตคอยน์ถูกออกแบบมาเพื่อใช้ในการทำธุรกรรมได้ทั่วโลก ไม่ใช่เพียงสำหรับคนกลุ่มเล็ก ๆ เท่านั้น บิตคอยน์จึงตกเป็นเป้าในการถูกโจมตีได้ง่าย ดังนั้นการที่คุณร่วมเป็นส่วนหนึ่งของบิตคอยน์โหนด จะช่วยปกป้องเครือข่ายบิตคอยน์จากการโดนโจมตี ช่วยป้องกันการทำธุรกรรมที่ไม่ถูกต้องได้ และช่วยให้บิตคอยน์ก้าวไปสู่ระบบที่ปราศจากศูนย์กลางอย่างแท้จริงต่อไปในอนาคต
บิตคอยน์ไลท์นิงโหนด (Bitcoin Lightning Node) คืออะไร?
บิตคอยน์ไลท์นิง (Bitcoin Lightning) หรือจะเรียกว่า “ไลท์นิงเน็ตเวิร์ก” (Lightning Network) ก็ได้เช่นกัน เกิดขึ้นมาเพื่อแก้ปัญหา “Scalability” หรือความสามารถในการรองรับการทำธุรกรรมจำนวนมากของบิตคอยน์ และช่วยลดค่าธรรมเนียม (Fees) ให้ต่ำ เหมาะสมกับการทำธุรกรรมขนาดเล็ก (Micropayments) จำนวนหลาย ๆ ธุรกรรมพร้อมกัน
ไลท์นิงโหนด (Lightning nodes) คือระบบที่ทำงานอยู่บนระบบของบิตคอยน์ฟูลโหนด (Bitcoin Full Node) และเชื่อมต่อผู้ใช้งานผ่านไลท์นิงเน็ตเวิร์ก เพื่อสร้างระบบการใช้จ่ายเงินที่รวดเร็วและมีค่าธรรมเนียมที่ต่ำ ขอยกตัวอย่างให้เห็นภาพและเกิดความเข้าใจในระดับชั้นของเงิน (Layered Money) ง่าย ๆ ลองนึกถึง Application Truemoney ที่เราต้องมีการเติมเงินเข้าระบบก่อนจึงจะสามารถใช้งานได้ และการใช้งาน Truemoney มีความยืดหยุ่นกับการใช้จ่ายต่าง ๆ มากกว่าการจ่ายผ่านบัญชีธนาคารโดยตรง (ต้องขอเท้าความก่อนว่า Mobile Application ของธนาคารเมื่อก่อนไม่ได้มีความยืดหยุ่นต่อการใช้งานต่าง ๆ ได้สะดวกง่ายดายเฉกเช่นปัจจุบัน การใช้ Truemoney (ชื่อเก่า True Wallet) จะเป็นการใช้งานที่ง่ายและสะดวกสบายเป็นอย่างมาก)
จากตัวอย่างที่ได้กล่าวมาสามารถเทียบบิตคอยน์เน็ตเวิร์กเป็นระบบบัญชีธนาคาร และไลท์นิงเน็ตเวิร์กก็คือระบบ Truemoney การจะทำให้ไลท์นิงเน็ตเวิร์กทำงานจำเป็นต้องสร้างธุรกรรมย้ายบิตคอยน์จากบิตคอยน์เน็ตเวิร์กไปยังไลท์นิงเน็ตเวิร์กก่อน เปรียบเสมือนการย้ายเงินจากบัญชีธนาคารไปยัง Truemoney นั่นเอง
สำหรับรายละเอียดเกี่ยวกับไลท์นิงเน็ตเวิร์กเพิ่มเติมสามารถไปศึกษาได้จากบทความ Lightning Network (ฉบับผู้ใช้งาน) ของคุณขิง Right Shift ได้เลยครับ
ความแตกต่างระหว่างบิตคอยน์โหนด (Bitcoin Node) กับบิตคอยน์ไมเนอร์ (Bitcoin Miner)
อีกหนึ่งความเข้าใจผิดของคนที่เพิ่งเริ่มต้นศึกษาบิตคอยน์ คือความเข้าใจระหว่างบิตคอยน์โหนด (Bitcoin Node) กับบิตคอยน์ไมเนอร์ (Bitcoin Miner) ก่อนหน้านี้เราได้ทำความเข้าใจเกี่ยวกับการเป็นบิตคอยน์โหนดมาบ้างแล้ว ดังนั้นผู้เขียนจะขออธิบายหน้าที่เบื้องต้นของบิตคอยน์ไมเนอร์ (หรือนักขุด) ก่อนแบบพอสังเขป
ระบบบิตคอยน์นั้นจะเก็บข้อมูลประวัติการทำธุรกรรมต่าง ๆ ทุกธุรกรรมในรูปแบบที่เรียกว่า Timechain หรือ Blockchain ซึ่งเป็นการเก็บข้อมูลบัญชีในลักษณะคล้ายกล่อง และแต่ละกล่องของข้อมูลจะมีการเชื่อมต่อถึงกันด้วยกระบวนการด้านการเข้ารหัส (Cryptography) เพื่อให้มั่นใจได้ว่าจะไม่มีมนุษย์คนใดก็ตามที่จะสามารถย้อนกลับไปแก้ไขข้อมูลที่ถูกบันทึกแล้ว ซึ่งผู้ที่มีหน้าที่ในการบันทึกข้อมูลบัญชีลงกล่องก็คือไมเนอร์ (Miner) นั่นเอง
ตามแผนภาพด้านบนเป็นตัวอย่างที่ดีในการใช้อธิบายถึงการทำงานระหว่างบิตคอยน์โหนดและบิตคอยน์ไมเนอร์ โดยเป็นการแสดงกระบวนการบันทึกประวัติธุรกรรมจำนวน 1 Block ซึ่งเริ่มต้นจาก :
- ผู้ทำธุรกรรมสร้างธุรกรรมขึ้นมา เช่น นาย A ส่งบิตคอยน์จำนวน 0.01 btc ไปให้นาย B และกำหนดค่าธรรมเนียม (Fee) ซึ่งค่าธรรมเนียมจะมีผลโดยตรงกับโอกาสที่บิตคอยน์ไมเนอร์จะเลือกธุรกรรมใด ๆ มาบรรจุลง Block ก่อน (ค่าธรรมเนียมยิ่งมาก โอกาสที่ธุรกรรมนั้นจะได้รับการปิดลง Block ก็จะยิ่งเร็ว)
- จากนั้นผู้ทำธุรกรรมทำการ “เซ็นชื่อ” (Sign Transaction หรือ Sign Tx) โดยใช้ Private Key ของผู้สร้างธุรกรรมผ่าน Hardware Wallet หรือ Software Wallet ตามแต่กระบวนการเก็บรักษา Private Key ของผู้ที่ถือบิตคอยน์นั้น ๆ เมื่อ Sign Tx เรียบร้อยแล้วก็จะทำการส่งข้อมูลธุรกรรมไปยังบิตคอยน์โหนดต่อไป กระบวนการนี้เรียกว่าการ “Broadcast Transaction”ที่ธุรกรรมนั้นจะได้รับการปิดลง Block ก็จะยิ่งเร็ว)
- เมื่อถึงจุดนี้จะเป็นหน้าที่ของบิตคอยน์โหนด (Bitcoin Node) ในการตรวจสอบธุรกรรมที่ได้รับมาว่ามีข้อมูลถูกต้องทุกประการ เช่น ผู้ทำธุรกรรมมีลายเซ็นดิจิทัล (เรียกว่า Digital Signature) ที่ถูกต้อง, หรือจำนวนบิตคอยน์ที่ใช้ในธุรกรรมเป็นบิตคอยน์ที่ผู้ส่งมีสิทธิ์ส่งได้ โดยรวมจาก UTXO (Unspent Transaction Output) เมื่อบิตคอยน์โหนดทำการตรวจสอบเสร็จเรียบร้อยแล้ว จะส่งข้อมูลธุรกรรมไปให้บิตคอยน์ไมเนอร์ต่อไป
- ผู้ที่เป็นนักขุด หรือ บิตคอยน์ไมเนอร์ (Bitcoin Miner) จะเข้ามาทำหน้าที่นำธุรกรรมที่ได้รับการตรวจสอบว่ามีความถูกต้องทุกประการจากบิตคอยน์โหนดมาเรียบเรียงเพื่อบรรจุลงใน Block (เปรียบเสมือนพนักงานบัญชีเขียนข้อมูลการทำธุรกรรมลงบนสมุดบัญชีเพื่อให้คงอยู่ตลอดไป และสามารถเรียกดูย้อนหลังได้ตลอดเวลา) โดยในจุดนี้จะมีนักขุดหลายล้านเครื่องทั่วโลกที่ต้องแข่งขันกันว่าใครจะได้รับอนุญาตให้เป็นคนบันทึกบัญชีใน Block นี้ ผู้ที่ชนะการแข่งขันก็จะได้เป็นผู้บันทึกบัญชี และรับรางวัลตอบแทนเป็นบิตคอยน์
- เมื่อบิตคอยน์ไมเนอร์บันทึกธุรกรรมลงสมุดบัญชีหรือปิด Block เรียบร้อยแล้ว ก็จะส่งข้อมูล Block ล่าสุดให้กับบิตคอยน์โหนดเพื่อบันทึกข้อมูลทางบัญชีล่าสุดของระบบเครือข่ายบิตคอยน์ และใช้สำหรับการตรวจสอบธุรกรรมในอนาคตต่อไปเรื่อย ๆ ไม่มีที่สิ้นสุด
เมื่อถึงตรงนี้ผู้เขียนหวังว่าท่านผู้อ่านคงจะพอเข้าใจถึงความแตกต่างระหว่างบิตคอยน์โหนด และบิตคอยน์ไมเนอร์เพิ่มมากขึ้นพอสมควร สำหรับท่านใดที่อยากจะศึกษากระบวนการทำงานโดยละเอียดสามารถไปรับฟังได้จาก Bitcoin Talk #101 : Bitcoin 101? (21/12/2021) ซึ่งอาจารย์ตั๊มได้อธิบายไว้อย่างเห็นภาพและเข้าใจง่ายมาก ๆ
ทำไมเราต้องรันบิตคอยน์โหนดกันนะ?
การเป็น “บิตคอยน์โหนด” หรือผู้ทำหน้าที่ตรวจสอบธุรกรรมต่าง ๆ บนเครือข่ายของบิตคอยน์ เป็นการช่วยยืนยันความถูกต้องของบิตคอยน์ว่ามีที่มาที่ไปอย่างไร ผู้ใช้งานบิตคอยน์นั้น ๆ มีความเป็นเจ้าของอย่างแท้จริงหรือไม่ และเป็นการเก็บบันทึกประวัติของธุรกรรมบิตคอยน์ทั้งหมดตั้งแต่ Block ที่ 0 (Genesis Block) บนเครื่องคอมพิวเตอร์หรืออุปกรณ์ เช่น Raspberry Pi ของเราเอง
ถึงแม้การรันบิตคอยน์โหนดไม่สามารถสร้างรายได้ให้กับเรา แต่สิ่งที่เราได้รับนั้นคือ “ความเป็นส่วนตัว (Privacy)” และ “ความปลอดภัย (Security)” ซึ่งเป็นสิ่งที่ไม่สามารถประเมินมูลค่าได้ ความจำเป็นของการรันบิตคอยน์โหนดจึงขึ้นอยู่กับว่าเราจะให้ค่าของ “ความเป็นส่วนตัว” และ “ความปลอดภัย” มากเพียงใด ซึ่งสามารถจำแนกเหตุผลที่เราควรต้องรันบิตคอยน์โหนดออกเป็น 3 ข้อ ดังนี้ :
- บิตคอยน์โหนดจำนวนมากบนโลกใบนำไปสู่การกระจายอำนาจให้กับระบบ (Decentralization of the Bitcoin Network) และนำไปสู่ความแข็งแกร่ง ความทนทานต่อการถูกโจมตี หากเราได้ร่วมเป็นส่วนหนึ่งของระบบอาจนำไปสู่ความภาคภูมิใจว่าเราคือผู้ที่ดำรงไว้ซึ่งความไร้ศูนย์กลางของบิตคอยน์
- สำหรับผู้ที่เป็นสายเทคนิคอล หรือหนอนคอมพิวเตอร์ การรันบิตคอยน์โหนดจะทำให้เรามองเห็นกระบวนการทำงานทั้งหมดใน Bitcoin Ecosystem หรือสามารถพูดได้อีกนัยหนึ่ง คือ เราสามารถมองเห็นความแข็งแกร่ง ความมั่นคงของระบบ Bitcoin Blockchain และสร้างความเชื่อมั่นในการตัดสินใจลงทุนกับสิ่งนี้
- ช่วยสร้างความเป็นส่วนตัวในการใช้งานบิตคอยน์ของเรา ให้เราสามารถสร้างธุรกรรม และประกาศธุรกรรม โดยไม่ต้องผ่านบุคคลที่สาม (Third-party Wallet Service) ทำให้การประกาศธุรกรรมเป็นไปอย่างนิรนาม ไม่มีใครมองเห็นจำนวนบิตคอยน์ที่เรามี และไม่มีใครมาห้ามหรือขัดขวางการใช้งานบิตคอยน์ของเรา
จะเห็นได้ว่าการรันบิตคอยน์โหนดมีผลดีมากมาย ไม่ว่าจะเป็นการปกป้องความเป็นส่วนตัวของผู้ที่เก็บสะสมหรือใช้งานบิตคอยน์ ไปจนถึงการช่วยเพิ่มความแข็งแกร่งต่อการถูกโจมตีของระบบในเชิงของการทำธุรกรรมที่ไม่ถูกต้องหรือทำธุรกรรมซ้ำซ้อน (Double Spending) แต่ถ้าถามความเห็นของผู้เขียน เพียงแค่เหตุผลเรื่องการปกป้องความเป็นส่วนตัวเพียงข้อเดียวก็คุ้มค่าต่อการลงทุนเพื่อรันบิตคอยน์โหนดแล้ว
Bitcoin Full Node ทำตามได้ไม่ยากอย่างที่คิด
เนื่องจากปัจจุบันมีนักพัฒนาหลายกลุ่มได้พัฒนาปรับปรุงโปรแกรมบิตคอยน์ให้สามารถใช้งานได้ง่าย โดยมีภาพรวมขั้นตอนของการรันบิตคอยน์ฟูลโหนดเพียงเท่านี้เอง :
- ไปที่เว็บ Bitcoin Core และดาวน์โหลดโปรแกรม Bitcoin Core ตาม Platform ที่เราใช้งานมา (ขณะที่เขียนบทความนี้เป็น Bitcoin Core version 25.0) จริง ๆ แล้ว Bitcoin Node มีผู้พัฒนาอยู่หลายกลุ่มครับ เช่น Bitcoin Knots และ Bitcoin Unlimited เป็นต้น แต่ Bitcoin Core คือ โปรแกรมที่ถูกใช้งานเป็นหลักในคอมพิวเตอร์ที่เป็นโหนดส่วนใหญ่ หรือแม้กระทั่งการรันบิตคอยน์โหนดผ่าน Umbrel หรือ StartOS ก็จะเป็นซอฟท์แวร์ชื่อ Bitcoin Core เช่นเดียวกัน
- กรณีใช้ Windows หรือ MacOS ให้ทำการติดตั้งเหมือนโปรแกรมปกติ เลือกไดรฟ์สำหรับเก็บ Blockchain data จากนั้นตั้งค่าทุกอย่างตาม Default setting (ถ้าจะรันแบบ Full Node จำเป็นอย่างยิ่งที่ต้องมีพื้นที่ว่างบนฮาร์ดดิสก์เหลือไม่ต่ำกว่า 600 GB)
- รอโปรแกรม sync IBD (Initial Block Download) จากนั้นก็จะมี Bitcoin Full Node ที่รันอยู่บนคอมพิวเตอร์ของเราเรียบร้อย
- แก้ไขไฟล์ bitcoin.conf อีกเล็กน้อย สำหรับการ RPCs (Remote Procedure Calls) และเชื่อมต่อกับ Bitcoin Wallet Application ต่าง ๆ ที่เราใช้งาน และทุกอย่างก็เรียบร้อยพร้อมสำหรับการใช้งาน Broadcast Transaction และช่วยดูแลรักษาระบบ
ตัวอย่างการใช้งาน Bitcoin Core บน Windows
สำหรับบทความในตอนที่ 1 นี้ ผู้เขียนขอแนะนำตัวอย่างการติดตั้ง Bitcoin Core Node บนระบบปฏิบัติการ Windows แบบง่าย ๆ เพื่อใช้งานกับ Software Wallet เช่น Sparrow กันก่อนครับ เหมาะสำหรับท่านผู้อ่านที่ไม่ได้อยากรันโหนดจริงจัง หรือต้องการรันแค่ Bitcoin Core ไปพร้อมกับเรานั่งทำงานปกติในแต่ละวัน และที่ผู้เขียนเลือกที่จะสาธิตบนระบบปฏิบัติการ Windows ก็เพราะว่าผู้คนส่วนใหญ่ใช้งาน Windows เป็นหลัก
1.ไปที่ https://bitcoincore.org เพื่อดาวน์โหลด Bitcoin Core มาติดตั้งยังคอมพิวเตอร์ของเรา โดยการดาวน์โหลดสามารถเลือกตาม Platform ที่เราใช้งานได้เลย (ตัวอย่างในบทความนี้จะเป็นการติดตั้งบน Windows นะครับ โดยเลือกในรูปแบบ “exe” file) ในรูปตัวอย่างจะเป็น version 24.0.1 แต่ปัจจุบันนี้เป็น Bitcoin Core version 25.0 ซึ่งสามารถปรับเปลี่ยนตามรุ่นที่ปรับปรุงใหม่ได้เลย โดยขั้นตอนการตั้งค่าหลัก ๆ ยังคงทำเช่นเดิม
2. เมื่อดาวน์โหลดเสร็จเรียบร้อยให้พักไว้ก่อน อย่าเพิ่งติดตั้งโปรแกรมเด็ดขาด ให้ทำการ Verify checksums ของไฟล์ที่เราโหลดมาก่อนนะครับ จะได้มั่นใจได้ว่าระหว่างข้อมูล Binary บิตต่อบิตที่วิ่งผ่าน Fiber optic มาที่คอมพิวเตอร์เรานั้น ไม่โดนดักตีหัวแก้ไขระหว่างทาง ซึ่งในเว็บ https://bitcoincore.org นั้นมีคำแนะการตรวจสอบของแต่ละระบบปฏิบัติการ (ซึ่งผู้อ่านสามารถเลือกได้เองครับ หากไม่ได้ใช้งาน Windows เหมือนกับตัวอย่างในบทความนี้)
a. ดาวน์โหลดไฟล์ SHA256 binary hashes และนำมาไว้ในโฟลเดอร์เดียวกันกับไฟล์ “bitcoin-24.0.1-win64-setup.exe” ที่โหลดมาก่อนหน้านี้ (ในตัวอย่างผู้เขียนนำไฟล์ไปไว้ในโฟลเดอร์ “C:\Users\chon_\Downloads” ซึ่งเป็นโฟลเดอร์ Default เวลาดาวน์โหลดไฟล์อยู่แล้ว เพื่อง่ายต่อการทำตามของผู้อ่าน)
b. จากนั้นให้ไปที่ Start Menu > พิมพ์ “cmd” เพื่อเรียกโปรแกรม Command Prompt ขึ้นมา เมื่อเข้าโปรแกรมแล้วให้เราพิมพ์ “cd downloads” เพื่อเปลี่ยน Path ไปยังโฟลเดอร์ “C:\Users\chon_\Downloads” (แต่ถ้าผู้อ่านไว้ในโฟลเดอร์อื่น ๆ ต้องเปลี่ยน Path ไปยังโฟลเดอร์นั้น ๆ ครับ แต่ถ้าไม่มีพื้นฐานภาษา DOS หรือไม่อยากเสียเวลาไปเปิดเว็บ Google หาคำสั่งอื่น ๆ ควบคู่กับการทำตาม ขอแนะนำให้นำไฟล์ไว้ในโฟลเดอร์ Download เช่นเดียวกันนะครับ)
c. เมื่อ Path ของ Command Prompt อยู่ในโฟลเดอร์ที่เก็บไฟล์แล้ว ให้พิมพ์ “certUtil -hashfile bitcoin-24.0.1-win64-setup.exe SHA256” (ทั้งนี้ให้เปลี่ยนชื่อไฟล์เป็นไปตามเวอร์ชันที่เราดาวน์โหลดมาครับ เผื่อวันที่ท่านผู้อ่านมาเห็นบทความนี้จะเป็น version อื่นไปแล้ว) จากนั้นจะเห็นข้อมูล SHA256 hash ของไฟล์ดังกล่าวเช่นตัวอย่าง คือ “be3f8bcbe5998209acfca8e1f253b58b5b74b2ca47515d3966b50de5078feec7” และเราก็นำเลขนี้ไปตรวจสอบกับไฟล์ “SHA256SUMS” ที่ดาวน์โหลดมา โดยสามารถทำได้ 2 วิธี คือ เปิดไฟล์นั้นด้วย Notepad ตรง ๆ เลย หรือพิมพ์ “type SHA256SUMS” ใน Command Prompt และเทียบค่าของ SHA256 hash ที่ได้ ถ้าหากว่าตรงกันถือว่าเป็นการ Verify checksums เสร็จเรียบร้อยครับ ลงโปรแกรมจากไฟล์ที่โหลดมาได้อย่างสบายใจ
3. ทำการติดตั้งโปรแกรมตามขั้นตอน ผู้เขียนขอแนะนำให้เลือก Destination Folder ไปยังไดรฟ์ที่มีพื้นที่ว่างสำหรับเก็บไฟล์ database (ไม่แนะนำให้เป็นไดรฟ์ C:\ เนื่องจากหาก OS พัง หรือต้อง Format ไดรฟ์ C:\ จะทำให้เราเสียไฟล์ bitcoin.conf ไปด้วยครับ) จากนั้นติดตั้งให้เรียบร้อยตามรูปภาพที่แสดง
4. เมื่อติดตั้งเรียบร้อยแล้ว ให้เปิดโปรแกรม Bitcoin Core ขึ้นมา เลือกอันที่ไอคอนสีส้มนะครับ ถ้าเป็นไอคอนสีเขียวจะเป็น Bitcoin Testnet “ไม่ใช่ Bitcoin Core สำหรับ Main Network” และทำการตั้งค่าไดรฟ์ที่ต้องการเก็บ Blockchain database ทั้งหมด (ผู้เขียนแนะนำเป็นโฟลเดอร์เดียวกันกับที่เราติดตั้ง Bitcoin Core ได้เลย จะได้อยู่ด้วยกันไปตลอด) โดยในขั้นตอนนี้ หากพื้นที่ Harddisk เรามีไม่เพียงพอ จะไม่สามารถตั้งค่าเป็น Full Node ได้นะครับ (ณ วันที่ 17 พ.ค.66 ขนาดของ Bitcoin Full Node อยู่ที่ประมาณ 509 GB) ดังนั้น ถ้าไม่สามารถเก็บแบบ Full Node ได้ เราจะใช้ระบบ Prune Node โดยให้เราติ๊กเลือกตรง “Limit block chain storage to …” แล้วกำหนดขนาดที่ต้องการได้เลยครับ (ใช้พื้นที่บนฮาร์ดดิสก์ประมาณ 10 GB ต่อจำนวนข้อมูลย้อนหลัง 30 วัน)
5. จากนั้นคลิกที่ “OK” โปรแกรม Bitcoin Core ของเราจะเริ่มทำการ Initial Block Download ทันทีครับ ขั้นตอนนี้จะใช้เวลาพอสมควรเลยแหละ โดยขึ้นอยู่กับประเภทของฮาร์ดดิสก์ที่เราใช้งานด้วย เร็วที่สุดที่ผู้เขียนลองสัมผัสมา คือ ฮาร์ดดิสก์แบบ SSD M.2 (PCI-E) ใช้เวลาประมาณ 36 ชั่วโมงครับ แต่ถ้าเป็น HDD จานหมุนธรรมดาจะใช้เวลา 5-7 วันครับ
6. ระหว่างรอการ sync IBD ก็มาตั้งค่า Configuration พื้นฐานกันครับ
a. ไปที่ การตั้งค่า > ตัวเลือก แล้วติ๊กถูกที่ “Start Bitcoin Core on system login” เพื่อให้เปิดคอมพิวเตอร์ขึ้นมาแล้วรันโปรแกรม Bitcoin core เลย (แต่จะรันแบบพื้นหลัง (Background) นะครับ คือ ไม่เห็นหน้าจอโปรแกรม) และติ๊กถูกที่ “Enable RPC Server” จากนั้นคลิกที่ Open Configuration File เพื่อเปิดไฟล์ bitcoin.conf ขึ้นมาแก้ไขการตั้งค่าครับ
b. สามารถเปลี่ยนภาษาของโปรแกรมได้ โดยไปที่ ตัวเลือกแถบ “Display” และเปลี่ยนภาษาบริเวณเมนู “User Interface Language” เป็น “American English (en)” ครับ
c. ทุกการเปลี่ยนแปลงการตั้งค่าที่มีแจ้ง “Client restart requied to activate changes.” ให้เราปิดโปรแกรม Bitcoin Core และเปิดใหม่ โดยไปที่ File > Exit หรือคลิกขวาที่ไอคอน Bitcoin core บริเวณ Taskbar system tray icon และเลือก Exit ถึงจะเป็นการปิดโปรแกรมแบบสมบูรณ์ครับ (ถ้าคลิกที่เครื่องหมาย close (X) มุมขวาบนเหมือนโปรแกรมอื่น ๆ จะปิดเฉพาะหน้าจอหลักครับ แต่ตัวโปรแกรมจะย่อไปแอบทำงานอยู่ตรง system tray icon ครับ)
7. เปิดไฟล์ bitcoin.conf ด้วยโปรแกรม Text editor ที่มี (เช่น Notepad) และทำการแก้ไขตามต่อไปนี้ครับ โดยให้เลื่อนไปที่ส่วนของ “# Options for mainnet” และทำการเพิ่มรายละเอียดส่วนนี้ลงไปครับ :
server=1
rpcbind=127.0.0.1
rpcport=8332
rpcuser=user_for_connect_node
rpcpassword=password_for_connect_node
โดยการกำหนด User/Password ไว้สำหรับเป็นช่องทาง Authentication ให้ Software Wallet App ต่าง ๆ เชื่อมต่อมายัง Bitcoin Core Node ของเราได้ครับ (มีทำตัวอย่างการเชื่อมต่อกับ Sparrow ให้หลังจากนี้) และทำการบันทึกไฟล์ bitcoin.conf ให้เรียบร้อย จากนั้นให้ปิด/เปิดโปรแกรม Bitcoin Core ขึ้นมาใหม่
8. ระหว่างโหนดของเราทำการ sync IBD สามารถใช้งานคอมพิวเตอร์ทำงานได้ปกตินะครับ เมื่อ sync เสร็จแล้วจะได้หน้าต่างโปรแกรมแบบนี้ แสดงว่าพร้อมสำหรับการเป็น Bitcoin Core Node และรองรับการเชื่อมต่อกับ Software Wallet ต่าง ๆ ได้แล้วครับ
9. ต่อมาจะเป็นการเชื่อมต่อ Wallet Application โดยผู้เขียนจะขอสาธิตการใช้งาน Sparrow ซึ่งเป็น Wallet App ที่ตั้งค่าและใช้งานได้ง่าย โดยให้ไปดาวน์โหลดโปรแกรมจาก Sparrow Desktop จากนั้นทำการ “Verifying the Release” ตามกระบวนการที่ทาง Sparrow แนะนำไว้ได้เลยครับ (ผู้เขียนขอไม่ลงในรายละเอียดการติดตั้งแล้วนะครับ ไม่มีอะไรซับซ้อน
10. เมื่อลงโปรแกรมเสร็จเรียบร้อยแล้ว ให้ทำการเปิดโปรแกรมขึ้นมา จากนั้นไปที่ File > Preferences และจะเห็นหน้าต่างสำหรับตั้งค่าขึ้นมา ให้คลิกที่ “Server” และตั้งค่าตามในรูป โดยให้เลือกการ Authentication เป็น User / Pass และนำ User/Password ที่เรากำหนดไว้ในไฟล์ bitcoin.conf มากรอก และคลิกที่ Test Connection หากขึ้นข้อความดังรูปแสดงว่าเราสามารถเชื่อมต่อได้เรียบร้อย
11. เมื่อกลับมายังหน้าต่างโปรแกรม Wallet Application เราก็จะเห็นว่ามีข้อความขึ้นที่มุมขวาล่างว่า “Connected to …” แสดงว่า Node ของเราพร้อมสำหรับการใช้ในการ Broadcast Transaction ได้แล้ว
Please keep this in mind!
- วิธีการนี้คือการรัน Bitcoin Node และเชื่อมต่อกับ Wallet Appication แบบง่ายที่สุด ซึ่งยังสามารถประยุกต์ได้อีกมากมายหลายแบบ ยกตัวอย่างเช่น หากเป็นลักษณะของบริษัทก็สามารถเลือกรัน Bitcoin Core Full Node ไว้ในคอมพิวเตอร์เครื่องใดเครื่องหนึ่ง และหากมีการเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น ๆ ผ่าน Local Network (LAN หรือ แลน) เดียวกัน ก็สามารถตั้งค่า Software Wallet ให้ Connect กับ Node ที่อยู่ในวงแลนเดียวกันได้ เพียงแต่ต้องเพิ่มการตั้งค่าในไฟล์ bitcoin.conf อีกเล็กน้อย
- การรัน Bitcoin แบบ Prune Node คือการเก็บข้อมูลเฉพาะบล็อกล่าสุดไว้ในเครื่องคอมพิวเตอร์ของเรา และข้อมูลในบล็อกที่เก่ากว่านั้นจะถูกลบทิ้งทั้งหมด แต่อย่างไรก็ตาม ในห้วงของการ Initial Block Download นั้น โปรแกรมจะเรียกข้อมูลตั้งแต่ Block 0 เพื่อมาตรวจสอบและ Verified ใหม่จนกระทั่งถึง Block ปัจจุบัน จึงไม่ได้หมายความว่าหากเราเลือกตั้งค่าแบบ Prune Node แล้วจะทำให้การ IBD เร็วขึ้น ดังนั้น หากมีพื้นที่ในฮาร์ดดิสก์เหลือจริง ๆ ผู้เขียนยังสนับสนุนให้รันแบบ Full Node ครับ (ไหน ๆ ก็ต้องเสียเวลาแล้ว ก็ต้องให้มันคุ้มค่ากับเวลาที่เสียไปสักหน่อย)
- ข้อเสียของ Prune Node ที่ผู้เขียนสัมผัสได้ คือ หากเราเปิด Wallet ของเราที่มีประวัติการทำธุรกรรม “เก่ากว่า” ข้อมูล Blockchain ที่มีในคอมพิวเตอร์ของเรา จะทำให้ “Wallet Application ไม่สามารถดึงข้อมูลประวัติธุรกรรมที่เรามีออกมาได้” หมายความว่าอะไร? …หมายความว่า Software Wallet Application เช่น Sparrow จะมองเห็นประวัติย้อนหลังของเราได้ไม่เกินจำนวนวันที่เรากำหนดพื้นที่เก็บข้อมูลไว้ในขั้นตอนก่อน IBD ครับ (ตัวอย่างที่ผู้เขียนสาธิต คือ 10 GB และเก็บข้อมูลย้อนหลังได้ประมาณ 30 วัน ดังนั้นประวัติธุรกรรมเราที่เก่ากว่า 30 วันจะไม่ถูกแสดงให้เห็นใน Wallet Application นั่นเอง) แต่ไม่มีผลหากเราเริ่มรัน Bitcoin Prune Node พร้อมกันกับเริ่มมีการทำธุรกรรมในห้วงเวลาเดียวกัน (หรือเริ่มเก็บสะสม btc ใน Wallet ใหม่พอดี๊พอดี) เมื่อเวลาผ่านไปเกินกว่าจำนวนวันที่ตั้งค่าไว้ ข้อมูลใน Blockchain ที่เครื่องคอมพิวเตอร์ของเราจะถูกลบทิ้ง แต่ประวัติของกระเป๋าเราจะยังอยู่ใน Software Bitcoin Core Node ต่อไป และสามารถทำธุรกรรมกับ UTXO นั้น ๆ ได้ตามปกติ
- เพราะฉะนั้น หากท่านผู้อ่านคิดจะเดินเส้นทางนี้ร่วมกับผู้เขียนแล้ว การลงทุนจัดหาคอมพิวเตอร์ใหม่สักเครื่อง อัปเกรด HDD ในเครื่องคอมพิวเตอร์ที่เรามีให้เป็น SSD ขนาด 1 TB เป็นอย่างต่ำ หรือ Raspberry pi + SSD 1-2 TB สักชุด มันน่าสนุกกว่าเยอะเลยล่ะครับ ^_^
ขอเกริ่นถึงบทความตอนที่ 2 และแนวทางการประยุกต์ใช้เบื้องต้น
หลังจากที่เราได้เรียนรู้ตัวอย่างการรัน Bitcoin Node และการตั้งค่าเพื่อเชื่อมต่อโหนดของเรากับ Software Wallet Application ต่าง ๆ อย่างง่ายบนระบบปฏิบัติการ Windows ไปเรียบร้อยแล้ว ในบทความตอนที่ 2 ผู้เขียนจะขอนำเสนอวิธีการติดตั้งและใช้งานระบบ StartOS สำหรับการรันบิตคอยน์โหนดในระดับขั้นสูงกันครับ (ซึ่งสามารถรัน Lightning Node ได้ด้วย)
ภาพจาก https://start9.com
ในความเป็นจริงแล้ว StartOS ทำอะไรได้มากกว่านั้นมากมายมหาศาล ผู้เขียนอยากให้เห็นความสำคัญของการรัน Private Personal Server หรือความจำเป็นของการเป็นเจ้าของข้อมูลของเราเองก่อนครับ เพราะนอกจากเราจะได้รัน Bitcoin Node หรือ Lightning Node แล้ว เรายังสามารถใช้งานเป็น Personal Server เพื่อเก็บข้อมูลสำคัญต่าง ๆ เช่น Password Manager ได้อีกด้วย
เมื่อคุณลองมองไปที่ข้อมูลเครดิตการ์ดบนแอปพลิเคชันธนาคาร มองไปยังข้อความที่เราพิมพ์คุยกันกับเพื่อน หรือมองไปยังความสะดวกสบายของการใช้งานระบบบันทึกรหัสผ่านของ Password Management ต่าง ๆ ซึ่งข้อมูลต่าง ๆ เหล่านั้นมันต้อง “ถูกบันทึก” ไว้ ณ ที่ใดที่หนึ่งบนโลกนี้ Node แล้ว เรายังสามารถใช้งานเป็น Personal Server เพื่อเก็บข้อมูลสำคัญต่าง ๆ เช่น Password Manager ได้อีกด้วย
ใครกันนะที่สามารถเข้าถึงข้อมูลเหล่านี้? ใครกันนะที่สามารถแก้ไขข้อมูลเหล่านี้?
คำตอบนั้นอาจจะไม่ชัดเจน แต่สามารถเชื่อได้เลยว่ามันเป็นการเพิ่มโอกาสที่ข้อมูลส่วนตัวที่สำคัญของเราจะหลุดรอดออกไปหาผู้ไม่ประสงค์ดี แต่มีอยู่สิ่งหนึ่งที่เราสามารถทำได้เลยทันที ถ้าเราควบคุมระบบ Server ได้เอง การควบคุมข้อมูลส่วนตัวของเราได้เอง ข้อมูลด้านการเงิน การติดต่อสื่อสาร หรือการสนทนาใด ๆ ก็ตาม มันจะยังเป็นของเรา และก็มีแต่เราเท่านั้นที่เป็นเจ้าของ
StartOS เป็นหนึ่งในระบบปฏิบัติการแบบใหม่ (“ระบบปฏิบัติการ” เช่น Windows, Mac OS, Linux, etc.) ใช้พื้นฐาน Linux และควบคุมการทำงานหรือติดตั้ง Services ต่าง ๆ ในรูปแบบ Web-base Application ระบบปฏิบัติการ StartOS สามารถติดตั้งลงบนอุปกรณ์ในรูปแบบต่าง ๆ เช่น Server, Personal Computer, Raspberry Pi หรือจะติดตั้งผ่าน Virtual Machine Platform ก็ได้เช่นกัน
โดยในบทความนี้ผู้เขียนจะสาธิตการติดตั้ง StartOS ผ่านโปรแกรม Oracle VM VirtualBox ซึ่งเป็น Open-source VM Platform ตัวหนึ่งที่ฟรีและมีฟังก์ชันที่จำเป็นต่อการใช้งานอย่างครบถ้วน แต่ไม่ได้หมายความว่าผู้เขียนแนะนำให้ติดตั้งบน VM นะครับ ถ้าท่านใดมีทุนทรัพย์อยู่แล้วแนะนำให้จัดหาเป็นชุด Raspberry Pi/PC DIY หรือจะสั่ง Personal Servers จากผู้ผลิตโดยตรงก็จะดียิ่งเลยครับ
สาเหตุที่ผู้เขียนติดตั้ง StartOS ผ่านระบบ VM คือ ผู้เขียนใช้งานคอมพิวเตอร์ส่วนบุคคลเป็นประจำ และได้เพิ่ม SSD แยกไว้สำหรับติดตั้งระบบ StartOS ต่างหาก เมื่อคอมพิวเตอร์ของเรามีปัญหาจนถึงขนาดต้อง Format ลงระบบ Windows ใหม่ หรือจะเป็นการซื้อคอมพิวเตอร์เครื่องใหม่ก็ตาม เราก็จะสามารถเรียกใช้ StartOS ผ่านระบบ VM และรันระบบแบบ Full Operation System ได้ทันที โดยไม่ต้องเริ่มต้นติดตั้ง StartOS และตั้งค่าใด ๆ ใหม่ และแน่นอนว่า “ไม่ต้อง sync Full Node ตั้งแต่ The Genesis Block ใหม่” อันนี้แหละที่เป็นจุดเด่นของวิธีนี้ครับ
ภาพแสดงการติดตั้ง StartOS บน VM และทำการรันแบบ Background (Headless Start Mode)
ภาพแสดงตัวอย่างการเปิดหน้าต่างควบคุม StartOS ผ่าน Web Browser บนคอมพิวเตอร์เครื่องเดียวกันกับที่ติดตั้งโปรแกรม VM คอมพิวเตอร์ที่อยู่ในเครือข่ายวงแลนเดียวกัน
ส่งท้ายกันนิดนึง
สำหรับบทความเรื่อง “พื้นฐานและการประยุกต์ใช้ Bitcoin Node ตอนที่ 1” ก็ขอจบไว้เพียงเท่านี้ก่อนครับ ทั้งนี้เพื่อให้ผู้อ่านได้ผ่อนคลายหลังจากการเรียนรู้สิ่งต่าง ๆ ที่คาดว่าเป็นเรื่องใหม่ของใครหลายคน ผู้เขียนยอมรับเลยว่าเป็นเรื่องที่ค่อนข้างยากต่อการทำความเข้าใจ และแน่นอนว่าอาจจะยากในการทำตามด้วยสำหรับบางคน
ในบทความตอนที่ 2 ผู้เขียนจะพาท่านผู้อ่านไปสู่การรันบิตคอยน์โหนดแบบจริงจัง และประยุกต์ใช้ Application ที่มีมาให้ใน StartOS เช่น Specter Wallet สำหรับทำเป็น Watch-only Wallet และใช้สร้างธุรกรรมและประกาศธุรกรรมจากบิตคอยน์โหนดของเราเอง หรือการใช้ Vaultwarden สำหรับการเก็บบันทึกรหัสผ่านที่เราใช้ประจำบน StartOS ของเราเลย เพื่อง่ายต่อการใช้งานและไม่ต้องพึ่งพาผู้ให้บริการบันทึกรหัสผ่านอื่น ๆ นอกจากนี้ยังมี Software ต่าง ๆ ที่จำเป็นต่อการรัน Lightning Node พร้อมให้เราติดตั้งเพื่อใช้งานอีกด้วย
อย่างสุดท้ายที่ผู้เขียนอยากจะบอก คือ หากผู้อ่านท่านใดได้ลองศึกษาแล้ว ทำความเข้าใจแล้ว ลองทำตามแล้ว แต่ยังประสบปัญหาและเจอจุดที่ไปต่อไม่ได้ อยากจะขอฝากไว้ว่าท่านไม่ได้อยู่ตัวคนเดียวครับ ยังมีกลุ่ม Facebook: Siamese Bitcoiners และ Discord: Local Bitcoin Thailand พร้อมให้ความช่วยเหลือท่านในทุก ๆ รายละเอียด ทุก ๆ ข้อสงสัย และทุก ๆ ขั้นตอนในการทำตามครับ
แล้วเจอกันใหม่ในบทความ “พื้นฐาน Bitcoin Node และการประยุกต์ใช้ ตอนที่ 2”
สวัสดีครับ
"ขอบคุณสมาชิก Right Shift's Plebs สำหรับความช่วยเหลือในการเผยแพร่บทความนี้ You guys rock!"
One comment
ขอบคุณสำหรับบทความดีๆ นะครับ ตอนนี้กำลังพยายามทำตามอยู่ครับ