📙
Learning Bitcoin Core
bitcoincore reviewsEdit
  • 📙 [TH] การมีส่วนร่วมใน Bitcoin Core ( Github )
    • [EN] Contributing to Bitcoin Core ( Github )
  • คำนำอย่างละเอียดถึงการพัฒนา Bitcoin Core ( Jimmy Song )
  • การมีส่วนร่วมใน Bitcoin Core ประสบการณ์ส่วนตัว ( John Newbery )
  • การเข้าร่วมพัฒนา Bitcoin Core ( Amiti Uttarwar )
  • How to Review Pull Requests in Bitcoin Core ( Jon Atack )
  • ความเข้าใจด้านเทคนิคของ Bitcoin ( Pierre Rochard )
  • ภาษาพื้นฐานใน Bitcoin Core 👾💬🤖
  • RPC หรือ Remote Procedure Call 🏦🌐⚙️
  • PSBT / Mining & Nonce / SHA-256 📦🎲#️⃣
  • Candidate Block / Chain Tip / Merkle Root / GBT & Stratum Protocol / SPV Client 🎰⛓️🤿🫚📱
  • OP_ ต่างๆ / Bitcoin Script / Hash Preimage / BOLT / Taproot / Eltoo / STARK / ZKP 📜⚡️🐺🌳
  • ลักษณะของ VAULT เมื่อเป็นผลิตภัณฑ์ 🏦🔏🗝️⏳
  • การแก้แค้นของ Junior Developer❤️‍🔥🐦‍⬛💻
Powered by GitBook
On this page
  • กลุ่ม BLOCKCHAIN
  • กลุ่ม CONTROL
  • กลุ่ม MINING
  • กลุ่ม NETWORK
  • กลุ่ม RAWTRANSACTIONS
  • กลุ่ม SIGNER
  • กลุ่ม UTIL
  • ส่วน ZMQ (ZeroMQ):

RPC หรือ Remote Procedure Call 🏦🌐⚙️

อธิบายโดย : Claude 3.7 Sonnet / source : https://bitcoincore.org/en/doc/29.0.0/

RPC หรือ Remote Procedure Call เป็นโพรโทคอลที่ใช้ในการเรียกฟังก์ชันหรือกระบวนการทำงานระหว่างคอมพิวเตอร์ที่แตกต่างกันผ่านเครือข่าย ในบริบทของ Bitcoin Core นี้ RPC เป็นวิธีหลักในการโต้ตอบกับ Bitcoin node

ในกรณีของ Bitcoin Core 29.0.0:

  1. RPC ช่วยให้คุณสามารถควบคุมและสื่อสารกับ Bitcoin node ได้โดยการส่งคำสั่งผ่านอินเตอร์เฟซ

  2. คุณสามารถใช้คำสั่ง RPC เพื่อ:

    • ดูข้อมูลบล็อกเชน (เช่น ตรวจสอบข้อมูลบล็อก, ธุรกรรม)

    • ควบคุมการทำงานของโหนด

    • สร้างและจัดการกระเป๋าเงิน (wallets)

    • ทำเหมืองขุด (mining)

    • จัดการการเชื่อมต่อเครือข่าย

    • และอื่นๆ ตามหมวดหมู่ที่แสดงในเมนูทางขวา

หากคุณสนใจเป็น contributor ให้กับ Bitcoin Core คุณสามารถ:

  1. เริ่มต้นด้วยการทำความเข้าใจ codebase:

    • ศึกษาเอกสารในเว็บไซต์ Bitcoin Core

    • ดูโค้ดที่ GitHub repository: https://github.com/bitcoin/bitcoin

  2. ทดลองใช้งาน RPC commands เพื่อให้เข้าใจการทำงาน

  3. มีส่วนร่วมในชุมชน:

    • ติดตามการพัฒนาผ่าน Mailing lists

    • เข้าร่วม IRC channels

    • ดู issues และ pull requests ที่เปิดอยู่

  4. เริ่มงานจากประเด็นพื้นฐานก่อน เช่น การปรับปรุงเอกสาร การรายงานบั๊ก หรือการทดสอบ

  5. เมื่อคุณเข้าใจระบบมากขึ้น คุณสามารถเริ่มทำงานบน pull requests ที่มีความซับซ้อนมากขึ้น

การทำความเข้าใจระบบ RPC ของ Bitcoin Core เป็นก้าวสำคัญสำหรับทุกคนที่ต้องการมีส่วนร่วมในการพัฒนา เพราะเป็นส่วนสำคัญในการโต้ตอบกับโหนด Bitcoin​​​​​​​​​​​​​​​​

คำสั่งเหล่านี้เป็นคำสั่ง RPC ใน

กลุ่ม BLOCKCHAIN

ของ Bitcoin Core ซึ่งใช้สำหรับโต้ตอบกับบล็อกเชนของ Bitcoin โดยแต่ละคำสั่งมีหน้าที่ดังนี้:

  1. dumptxoutset - สร้างไฟล์ดัมพ์ของสถานะ UTXO (Unspent Transaction Output) ปัจจุบัน

  2. getbestblockhash - แสดงแฮชของบล็อกที่ดีที่สุดในเชนปัจจุบัน (บล็อกล่าสุดบนเชนหลัก)

  3. getblock - รับข้อมูลของบล็อกที่ระบุด้วยแฮชบล็อก

  4. getblockchaininfo - แสดงข้อมูลเกี่ยวกับสถานะปัจจุบันของบล็อกเชน

  5. getblockcount - แสดงจำนวนบล็อกในเชนหลัก

  6. getblockfilter - รับ BIP157 Content Filter สำหรับบล็อกที่ระบุ

  7. getblockfrompeer - ร้องขอบล็อกจาก peer ที่ระบุ

  8. getblockhash - รับแฮชของบล็อกที่ความสูงที่ระบุในเชนหลัก

  9. getblockheader - รับ header ของบล็อกที่ระบุด้วยแฮชบล็อก

  10. getblockstats - รับสถิติเกี่ยวกับบล็อกที่ระบุด้วยแฮชหรือความสูง

  11. getchaintips - แสดงข้อมูลเกี่ยวกับปลายเชนทั้งหมดที่รู้จัก

  12. getchainstates - แสดงข้อมูลเกี่ยวกับสถานะเชนทั้งหมดที่รู้จัก

  13. getchaintxstats - รับสถิติเกี่ยวกับธุรกรรมในบล็อกเชน

  14. getdeploymentinfo - แสดงสถานะของ deployment softfork

  15. getdescriptoractivity - แสดงข้อมูลการใช้งาน descriptor

  16. getdifficulty - แสดงความยากในการขุดปัจจุบัน

  17. getmempoolancestors - รับธุรกรรมทั้งหมดที่เป็นต้นตระกูล (ancestors) ของธุรกรรมในเมมพูล

  18. getmempooldescendants - รับธุรกรรมทั้งหมดที่เป็นลูกหลาน (descendants) ของธุรกรรมในเมมพูล

  19. getmempoolentry - รับข้อมูลของธุรกรรมที่ระบุในเมมพูล

  20. getmempoolinfo - แสดงข้อมูลเกี่ยวกับสถานะปัจจุบันของเมมพูล

  21. getrawmempool - แสดงธุรกรรมทั้งหมดในเมมพูล

  22. gettxout - รับข้อมูลของ UTXO ที่ระบุ

  23. gettxoutproof - รับหลักฐานว่าธุรกรรมมีอยู่ในบล็อก

  24. gettxoutsetinfo - แสดงสถิติเกี่ยวกับชุด UTXO ทั้งหมด

  25. gettxspendingprevout - รับสถานะการใช้จ่ายของ outpoints

  26. importmempool - นำเข้าข้อมูลเมมพูลจากไฟล์

  27. loadtxoutset - โหลดข้อมูล UTXO จากไฟล์ดัมพ์

  28. preciousblock - กำหนดให้บล็อกมีความสำคัญสูงกว่าในการคำนวณเชนหลัก

  29. pruneblockchain - ตัดบล็อกเก่าจนถึงเวลาที่ระบุ

  30. savemempool - บันทึกข้อมูลเมมพูลไปยังดิสก์

  31. scanblocks - สแกนบล็อกเพื่อหาธุรกรรมที่เกี่ยวข้องกับ descriptors ที่ระบุ

  32. scantxoutset - สแกนชุด UTXO ทั้งหมดเพื่อหาเอาต์พุตที่เกี่ยวข้องกับ descriptors ที่ระบุ

  33. verifychain - ตรวจสอบความถูกต้องของบล็อกเชน

  34. verifytxoutproof - ตรวจสอบหลักฐานธุรกรรมและคืนค่า txid

คำสั่งเหล่านี้ไม่มีลำดับตายตัวในการใช้งาน เนื่องจากคุณสามารถเรียกใช้แต่ละคำสั่งได้อย่างอิสระตามความต้องการ แต่ในการทำงานจริง อาจมีการใช้งานร่วมกันตามลำดับขั้นตอนเพื่อการวิเคราะห์หรือจัดการบล็อกเชน เช่น:

  • ใช้ getblockcount เพื่อดูความสูงปัจจุบัน แล้วใช้ getblockhash เพื่อรับแฮชของบล็อก จากนั้นใช้ getblock เพื่อดูรายละเอียดของบล็อกนั้น

  • ใช้ getmempoolinfo ก่อนใช้ getrawmempool เพื่อดูธุรกรรมทั้งหมดในเมมพูล

คำสั่งเหล่านี้สำคัญสำหรับผู้ที่ต้องการติดตาม วิเคราะห์ หรือดูแลโหนด Bitcoin Core​​​​​​​​​​​​​​​​

ต่อไปนี้คือหน้าที่ของแต่ละคำสั่ง RPC แยกตามกลุ่ม:

กลุ่ม CONTROL

คำสั่งสำหรับควบคุมการทำงานของโหนด Bitcoin Core:

  1. getmemoryinfo - แสดงข้อมูลการใช้หน่วยความจำของโหนด

  2. getrpcinfo - แสดงข้อมูลเกี่ยวกับการเชื่อมต่อ RPC ที่ใช้งานอยู่

  3. help - แสดงข้อความช่วยเหลือสำหรับคำสั่ง RPC

  4. logging - จัดการระดับการบันทึกข้อมูล (logging) สำหรับรายการต่างๆ

  5. stop - หยุดการทำงานของ Bitcoin Core

  6. uptime - แสดงเวลาที่โหนดทำงานอย่างต่อเนื่อง

กลุ่ม MINING

คำสั่งสำหรับการทำเหมืองขุด Bitcoin:

  1. getblocktemplate - รับข้อมูลที่จำเป็นสำหรับการสร้างบล็อกใหม่

  2. getmininginfo - แสดงข้อมูลทั่วไปเกี่ยวกับการขุด

  3. getnetworkhashps - แสดงอัตราการแฮชของเครือข่าย (hashrate)

  4. getprioritisedtransactions - แสดงธุรกรรมที่ได้รับการจัดลำดับความสำคัญสูง

  5. prioritisetransaction - เพิ่มลำดับความสำคัญให้กับธุรกรรมสำหรับการขุด

  6. submitblock - ส่งบล็อกที่ขุดได้ไปยังเครือข่าย

  7. submitheader - ส่งส่วนหัวบล็อกไปยังเครือข่าย

กลุ่ม NETWORK

คำสั่งสำหรับจัดการเครือข่ายของ Bitcoin:

  1. addnode - เพิ่มโหนดเพื่อเชื่อมต่อ

  2. clearbanned - ล้างรายการโหนดที่ถูกแบน

  3. disconnectnode - ตัดการเชื่อมต่อกับโหนดที่ระบุ

  4. getaddednodeinfo - แสดงข้อมูลเกี่ยวกับโหนดที่เพิ่มด้วยคำสั่ง addnode

  5. getaddrmaininfo - แสดงข้อมูลที่อยู่ในเครือข่าย

  6. getconnectioncount - แสดงจำนวนการเชื่อมต่อกับโหนดอื่น

  7. getnettotals - แสดงสถิติเครือข่ายทั้งหมด

  8. getnetworkinfo - แสดงข้อมูลเกี่ยวกับสถานะเครือข่าย

  9. getnodeaddresses - แสดงที่อยู่ที่รู้จักในเครือข่าย

  10. getpeerinfo - แสดงข้อมูลเกี่ยวกับโหนดที่เชื่อมต่ออยู่

  11. listbanned - แสดงรายการโหนดที่ถูกแบน

  12. ping - ส่งคำสั่ง ping ไปยังโหนดอื่นทั้งหมดที่เชื่อมต่ออยู่

  13. setban - แบนหรือยกเลิกการแบนโหนด

  14. setnetworkactive - เปิดหรือปิดการทำงานของเครือข่าย

คำสั่งเหล่านี้แบ่งตามหมวดหมู่การใช้งาน โดยแต่ละกลุ่มมีวัตถุประสงค์เฉพาะ:

  • กลุ่ม CONTROL ใช้สำหรับจัดการโหนด Bitcoin Core โดยตรง

  • กลุ่ม MINING ใช้สำหรับการทำเหมืองขุดและจัดการธุรกรรมที่จะรวมในบล็อก

  • กลุ่ม NETWORK ใช้สำหรับจัดการการเชื่อมต่อเครือข่าย P2P ของ Bitcoin

เช่นเดียวกับกลุ่ม BLOCKCHAIN ก่อนหน้านี้ คำสั่งเหล่านี้ไม่มีลำดับตายตัวในการใช้งาน แต่จะใช้ตามความต้องการและสถานการณ์​​​​​​​​​​​​​​​​

กลุ่ม RAWTRANSACTIONS

คำสั่งสำหรับจัดการกับธุรกรรมดิบ (raw transactions) ซึ่งเป็นการทำงานในระดับต่ำกับธุรกรรม Bitcoin:

  1. analyzepsbt - วิเคราะห์และให้ข้อมูลเกี่ยวกับ PSBT (Partially Signed Bitcoin Transaction)

  2. combinepsbt - รวม PSBT หลายรายการเข้าด้วยกัน

  3. combinerawtransaction - รวม raw transactions ที่ลงนามแล้วหลายรายการเข้าด้วยกัน

  4. converttopsbt - แปลง raw transaction เป็นรูปแบบ PSBT

  5. createpsbt - สร้าง PSBT ใหม่ (ไม่ลงนาม)

  6. createrawtransaction - สร้าง raw transaction ใหม่ (ไม่ลงนาม)

  7. decodepsbt - แปลงข้อมูล PSBT เป็นรูปแบบที่อ่านได้

  8. decoderawtransaction - แปลงข้อมูล raw transaction เป็นรูปแบบที่อ่านได้

  9. decodescript - แปลง Bitcoin script เป็นรูปแบบที่อ่านได้

  10. descriptorprocesspsbt - ประมวลผล PSBT ด้วย descriptors

  11. finalizepsbt - ตรวจสอบว่า PSBT พร้อมที่จะลงนามหรือพร้อมส่งหรือไม่

  12. fundrawtransaction - เพิ่มอินพุตให้กับ raw transaction เพื่อให้ครอบคลุมค่าใช้จ่าย

  13. getrawtransaction - รับธุรกรรมดิบตาม txid

  14. joinpsbts - รวม PSBT ที่ไม่เกี่ยวข้องกันเข้าด้วยกันเป็นธุรกรรมเดียว

  15. sendrawtransaction - ส่ง raw transaction ที่ลงนามแล้วไปยังเครือข่าย

  16. signrawtransactionwithkey - ลงนาม raw transaction ด้วยคีย์ส่วนตัว

  17. submitpackage - ส่งกลุ่มธุรกรรมที่เกี่ยวข้องกันไปยังเครือข่าย

  18. testmempoolaccept - ตรวจสอบว่าธุรกรรมสามารถยอมรับในเมมพูลได้หรือไม่

  19. utxoupdatepsbt - อัปเดตข้อมูล UTXO ใน PSBT

กลุ่ม SIGNER

คำสั่งสำหรับจัดการกับการลงนาม:

  1. enumeratesigners - แสดงรายการอุปกรณ์ลงนามที่สามารถใช้ได้

กลุ่ม UTIL

คำสั่งอรรถประโยชน์ทั่วไป:

  1. createmultisig - สร้างที่อยู่ multisignature

  2. deriveaddresses - สร้างที่อยู่จาก output descriptor

  3. estimatesmartfee - ประมาณค่าธรรมเนียมที่ต้องการสำหรับการยืนยันภายในจำนวนบล็อกที่กำหนด

  4. getdescriptorinfo - วิเคราะห์ descriptor และแสดงข้อมูลเกี่ยวกับมัน

  5. getindexinfo - แสดงข้อมูลเกี่ยวกับดัชนี

  6. signmessagewithprivkey - ลงนามข้อความด้วยคีย์ส่วนตัว

  7. validateaddress - ตรวจสอบความถูกต้องของที่อยู่ Bitcoin

  8. verifymessage - ตรวจสอบข้อความที่ลงนามแล้ว

คำสั่งเหล่านี้มีความซับซ้อนทางเทคนิคสูงขึ้น โดยเฉพาะในกลุ่ม RAWTRANSACTIONS ซึ่งใช้สำหรับการจัดการธุรกรรมในระดับต่ำ:

  • กลุ่ม RAWTRANSACTIONS มักใช้โดยนักพัฒนาหรือผู้ใช้ที่ต้องการสร้าง ตรวจสอบ หรือลงนามธุรกรรมแบบแมนนวล

  • กลุ่ม SIGNER มีเพียงคำสั่งเดียวสำหรับการทำงานกับอุปกรณ์ลงนามภายนอก

  • กลุ่ม UTIL ประกอบด้วยเครื่องมือที่มีประโยชน์สำหรับการทำงานกับที่อยู่ ค่าธรรมเนียม และการตรวจสอบความถูกต้อง

ในโลกแห่งการพัฒนา Bitcoin Core และแอปพลิเคชันที่เกี่ยวข้อง คำสั่งเหล่านี้มีความสำคัญสำหรับการทำงานกับธุรกรรมในระดับต่ำและการพัฒนาเครื่องมือที่สามารถเชื่อมต่อกับ Bitcoin Core ได้อย่างมีประสิทธิภาพ​​​​​​​​​​​​​​​​

คำสั่ง RPC ในส่วน WALLET ของ Bitcoin Core ทำหน้าที่จัดการกับกระเป๋าเงิน (wallet) โดยแต่ละคำสั่งมีหน้าที่เฉพาะดังนี้:

  1. abandontransaction - ยกเลิกธุรกรรมที่ยังไม่ถูกยืนยัน เพื่อให้สามารถใช้เหรียญเหล่านั้นในธุรกรรมอื่นได้

  2. abortrescan - หยุดกระบวนการสแกนกระเป๋าเงินที่กำลังดำเนินอยู่

  3. addmultisigaddress - สร้างที่อยู่แบบ multi-signature ซึ่งต้องการลายเซ็นหลายคนในการอนุมัติธุรกรรม

  4. backupwallet - สำรองข้อมูลกระเป๋าเงินไปยังไฟล์ที่ระบุ

  5. bumpfee - เพิ่มค่าธรรมเนียมให้กับธุรกรรมที่ยังไม่ถูกยืนยัน เพื่อเร่งการทำธุรกรรม

  6. createwallet - สร้างกระเป๋าเงินใหม่

  7. createwalletdescriptor - สร้างกระเป๋าเงินแบบ descriptor-based

  8. dumpprivkey - แสดงคีย์ส่วนตัวของที่อยู่ที่ระบุ

  9. dumpwallet - บันทึกข้อมูลคีย์ทั้งหมดในกระเป๋าเงินไปยังไฟล์

  10. encryptwallet - เข้ารหัสกระเป๋าเงินด้วยรหัสผ่าน

  11. getaddressesbylabel - แสดงที่อยู่ทั้งหมดที่มี label ตามที่ระบุ

  12. getaddressinfo - แสดงข้อมูลของที่อยู่ที่ระบุโดยละเอียด

  13. getbalance - แสดงยอดคงเหลือในกระเป๋าเงิน

  14. getbalances - แสดงยอดคงเหลือแยกตามประเภท

  15. gethdkeys - แสดงข้อมูล HD keychain

  16. getnewaddress - สร้างที่อยู่ใหม่สำหรับรับเงิน

  17. getrawchangeaddress - สร้างที่อยู่ใหม่สำหรับเงินทอน

  18. getreceivedbyaddress - แสดงจำนวนเงินที่ได้รับที่ที่อยู่ที่ระบุ

  19. getreceivedbylabel - แสดงจำนวนเงินที่ได้รับโดย label ที่ระบุ

  20. gettransaction - แสดงข้อมูลธุรกรรมโดยละเอียด

  21. getunconfirmedbalance - แสดงยอดคงเหลือที่ยังไม่ได้รับการยืนยัน

  22. getwalletinfo - แสดงข้อมูลทั่วไปของกระเป๋าเงิน

  23. importaddress - นำเข้าที่อยู่หรือ script เพื่อติดตาม

  24. importdescriptors - นำเข้า descriptor

  25. importmulti - นำเข้าข้อมูลหลายรายการพร้อมกัน

  26. importprivkey - นำเข้าคีย์ส่วนตัว

  27. importprunedfunds - นำเข้าธุรกรรมที่ถูกตัดทอน

  28. importpubkey - นำเข้าคีย์สาธารณะ

  29. importwallet - นำเข้าข้อมูลกระเป๋าเงินจากไฟล์

  30. keypoolrefill - เติม keypool ใหม่

  31. listaddressgroupings - แสดงรายการกลุ่มที่อยู่

  32. listdescriptors - แสดงรายการ descriptors ทั้งหมด

  33. listlabels - แสดงรายการ labels ทั้งหมด

  34. listlockunspent - แสดงรายการเงินที่ถูกล็อคไว้

  35. listreceivedbyaddress - แสดงรายการเงินที่ได้รับแยกตามที่อยู่

  36. listreceivedbylabel - แสดงรายการเงินที่ได้รับแยกตาม label

  37. listsinceblock - แสดงธุรกรรมทั้งหมดที่เกิดขึ้นตั้งแต่บล็อกที่ระบุ

  38. listtransactions - แสดงรายการธุรกรรมล่าสุดในกระเป๋าเงิน

  39. listunspent - แสดงรายการเหรียญที่ยังไม่ถูกใช้ (UTXO) ในกระเป๋าเงิน

  40. listwalletdir - แสดงรายการกระเป๋าเงินที่อยู่ในไดเร็กทอรี wallet

  41. listwallets - แสดงรายการกระเป๋าเงินที่โหลดอยู่ในขณะนี้

  42. loadwallet - โหลดกระเป๋าเงินที่มีอยู่

  43. lockunspent - ล็อคหรือปลดล็อคเหรียญที่ระบุไม่ให้ถูกใช้ในธุรกรรม

  44. migratewallet - อัพเกรดรูปแบบกระเป๋าเงินเก่าเป็นรูปแบบใหม่

  45. newkeypool - สร้าง keypool ใหม่

  46. psbtbumpfee - เพิ่มค่าธรรมเนียมให้กับธุรกรรมที่ใช้ PSBT (Partially Signed Bitcoin Transaction)

  47. removeprunedfunds - ลบธุรกรรมที่ถูกตัดทอนออกจากกระเป๋าเงิน

  48. rescanblockchain - สแกนบล็อกเชนใหม่เพื่อหาธุรกรรมที่เกี่ยวข้องกับกระเป๋าเงิน

  49. restorewallet - กู้คืนกระเป๋าเงินจากไฟล์สำรอง

  50. send - ส่ง Bitcoin ไปยังที่อยู่ปลายทาง (รูปแบบใหม่)

  51. sendall - ส่งทั้งหมดหรือกลุ่มของเหรียญไปยังที่อยู่

  52. sendmany - ส่ง Bitcoin ไปยังหลายที่อยู่พร้อมกัน

  53. sendtoaddress - ส่ง Bitcoin ไปยังที่อยู่เดียว

  54. sethdseed - ตั้งค่า HD seed สำหรับกระเป๋าเงิน

  55. setlabel - ตั้งค่า label ให้กับที่อยู่

  56. settxfee - ตั้งค่าธรรมเนียมธุรกรรมเริ่มต้น

  57. setwalletflag - เปิด/ปิดธงสถานะของกระเป๋าเงิน

  58. signmessage - เซ็นข้อความด้วยคีย์ส่วนตัวของที่อยู่

  59. signrawtransactionwithwallet - เซ็นธุรกรรมดิบด้วยคีย์จากกระเป๋าเงิน

  60. simulaterawtransaction - จำลองผลลัพธ์ของการดำเนินการธุรกรรมดิบ

  61. unloadwallet - เอากระเป๋าเงินออกจากหน่วยความจำ

  62. upgradewallet - อัพเกรดกระเป๋าเงินเป็นเวอร์ชันล่าสุด

  63. walletcreatefundedpsbt - สร้าง PSBT พร้อมเงินทุน

  64. walletdisplayaddress - แสดงข้อมูลที่อยู่ในรูปแบบที่อ่านง่าย

  65. walletlock - ล็อคกระเป๋าเงินที่เข้ารหัสไว้

  66. walletpassphrase - ปลดล็อคกระเป๋าเงินที่เข้ารหัสเพื่อใช้งาน

  67. walletpassphrasechange - เปลี่ยนรหัสผ่านของกระเป๋าเงิน

  68. walletprocesspsbt - ประมวลผล PSBT

คำสั่งเหล่านี้ไม่มีลำดับการใช้งานที่ตายตัว แต่มีความสัมพันธ์กันตามการใช้งาน โดยทั่วไปจะเริ่มจาก:

  1. การสร้างและตั้งค่ากระเป๋าเงิน (createwallet, encryptwallet)

  2. การจัดการที่อยู่ (getnewaddress, addmultisigaddress)

  3. การตรวจสอบสถานะ (getbalance, getwalletinfo)

  4. การทำธุรกรรม (gettransaction, abandontransaction)

  5. การสำรองและความปลอดภัย (backupwallet, dumpprivkey)

  6. การจัดการกระเป๋าเงิน: createwallet, loadwallet, unloadwallet, upgradewallet, backupwallet, restorewallet

  7. การรักษาความปลอดภัย: encryptwallet, walletlock, walletpassphrase, walletpassphrasechange

  8. การจัดการที่อยู่: getnewaddress, getaddressinfo, setlabel, walletdisplayaddress

  9. การทำธุรกรรม: send, sendall, sendmany, sendtoaddress, settxfee, bumpfee

  10. การสืบค้นและตรวจสอบ: listunspent, listtransactions, listsinceblock, gettransaction

  11. การลงนาม: signmessage, signrawtransactionwithwallet

  12. PSBT (Partially Signed Bitcoin Transaction): walletcreatefundedpsbt, walletprocesspsbt, psbtbumpfee

คำสั่งเหล่านี้จะถูกใช้ตามความต้องการเฉพาะในแต่ละสถานการณ์ ผู้ใช้สามารถเรียกใช้โดยตรงผ่าน bitcoin-cli หรือผ่าน API ในแอปพลิเคชันที่พัฒนา​​​​​​​​​​​​​​​​

ส่วน ZMQ (ZeroMQ):

  1. getzmqnotifications - แสดงข้อมูลการแจ้งเตือน ZeroMQ ที่กำลังฟัง

เพิ่มเติม :

RPC getzmqnotifications ใน Bitcoin Core เป็นเครื่องมือสำหรับ ตรวจสอบและดึงข้อมูลการตั้งค่า ZeroMQ notifications ที่กำลังทำงานอยู่ (เช่น pubhashtx, pubrawblock เป็นต้น) ซึ่งช่วยให้ผู้ดูแลระบบหรือโปรแกรมภายนอกสามารถ “ค้นพบ” ว่ามี publisher ใดบ้างที่ node ของตนกำลังส่งข้อความผ่าน ZMQ รวมถึงพารามิเตอร์สำคัญอย่าง high-water mark เพื่อป้องกันการสูญหายของข้อความ . RPC ตัวนี้ถูกเพิ่มเข้ามาใน Bitcoin Core ตั้งแต่เวอร์ชัน 0.17.0 เพื่อรองรับการ introspection และ dynamic integration ของระบบ event-driven ที่ใช้ ZMQ . นับตั้งแต่นั้นมามันก็กลายเป็นมาตรฐานสำคัญสำหรับการพัฒนาไลบรารีหรือเครื่องมือที่ต้องการเชื่อมต่อรับข้อมูลเรียลไทม์จาก bitcoind .

พื้นฐานของ ZeroMQ ใน Bitcoin Core

การใช้งาน ZMQ Notifications

Bitcoin Core รองรับการส่ง notification แบบ publish/subscribe ผ่าน ZeroMQ เพื่อแจ้งเหตุการณ์ต่างๆ เช่น

  • pubhashtx – เมื่อมีการสร้าง transaction ใหม่

  • pubrawblock – เมื่อมีการสร้าง block ใหม่

  • pubhashblock, pubrawtx ฯลฯ . การเปิดใช้งานทำได้ผ่าน startup flags เช่น -zmqpubrawblock=tcp://127.0.0.1:28332 ก่อนสตาร์ท bitcoind .

ปัญหาที่เกิดขึ้นหากไม่มี RPC นี้

หากไม่มี RPC สำหรับดึงสถานะการตั้งค่า ZMQ ก็จะต้องคอยอ่านไฟล์คอนฟิกหรือจับค่า flags ตอนสตาร์ทอย่างเดียว ทำให้:

  1. ไม่สามารถตรวจสอบภายหลังเวลารันไทม์ได้

  2. ไม่รองรับการ integrate แบบไดนามิกในโปรแกรมที่ต้องการตรวจสอบ endpoint ใหม่ๆ โดยอัตโนมัติ

บทบาทและการทำงานของ getzmqnotifications RPC

คำอธิบาย RPC

  • คำสั่ง: bitcoin-cli getzmqnotifications

  • ผลลัพธ์: คืนค่าเป็น JSON Array แต่ละรายการเป็น Object ที่มีฟิลด์

  • type – ประเภทของ notification (เช่น "pubhashtx")

  • address – URI ของ ZMQ publisher (เช่น "tcp://127.0.0.1:28332")

  • hwm – (ตั้งแต่ v0.19.0) high-water mark ของ outbound message queue เพื่อควบคุมไม่ให้ล้น buffer .

เวอร์ชันที่รองรับ

RPC นี้มีอยู่ในเอกสารเวอร์ชัน Bitcoin Core ตั้งแต่ 0.17.0 และยังคงใช้งานได้ในเวอร์ชันปัจจุบัน (29.0.0) .

เหตุผลที่ Bitcoin Core ต้องมี RPC นี้

1. Introspection และการ Debug

  • ช่วยให้ผู้ดูแลระบบหรือสคริปต์สามารถตรวจสอบได้ทันทีว่ามี endpoint ใดบ้างที่ node ของตนกำลังเผยแพร่ข้อความผ่าน ZMQ .

  • ลดความจำเป็นในการอ่านไฟล์คอนฟิกหรือดู log ตอน startup เพียงแค่เรียก RPC ก็ทราบสถานะปัจจุบันได้เลย .

2. รองรับ Dynamic Integration

  • ไลบรารีอย่าง bitcoincore-zmq (Rust crate) ใช้ RPC ตัวนี้เพื่อ “addEventListener” แบบไดนามิก โดยไม่ต้อง hard-code endpoint .

  • โปรแกรมภายนอก (เช่น C/C++ listener) สามารถดึงรายการ notification แล้วเชื่อมต่อ subscriber ตามนั้นโดยอัตโนมัติ .

3. Monitoring และ Performance Tuning

  • ฟิลด์ hwm ช่วยให้สามารถตรวจสอบและปรับค่า high-water mark ได้ เพื่อหลีกเลี่ยงการสูญหายของข้อความเมื่อ consumer ไม่ทันประมวลผล .

  • เหมาะกับระบบ high-throughput ที่ต้องการควบคุม buffer usage อย่างใกล้ชิด .

4. ความสอดคล้องระหว่างเวอร์ชัน

  • ตั้งแต่ Bitcoin Core v0.17.0 เป็นต้นมา RPC นี้ได้รับการดูแลให้ API มีความเสถียรแม้มีการปรับปรุง core library ภายใน .

การเรียก RPC นี้ไม่ต้องส่งพารามิเตอร์ใดๆ และจะคืนค่าทุก notification ที่ถูกตั้งค่าไว้ตอนสตาร์ท bitcoind .

สรุป

RPC getzmqnotifications คือกุญแจสำคัญสำหรับการ introspection, dynamic integration, และ monitoring ของระบบ ZeroMQ notifications ใน Bitcoin Core มันช่วยให้การพัฒนาเครื่องมือภายนอกและการบำรุงรักษา node มีประสิทธิภาพและยืดหยุ่นมากขึ้น โดยไม่ต้องพึ่งการอ่านคอนฟิกหรือการดู log แบบดั้งเดิม .

ZeroMQ (หรือ ØMQ) เป็นไลบรารีสำหรับ asynchronous messaging ที่มีประสิทธิภาพสูง ถูกออกแบบมาเพื่อการใช้งานในระบบกระจายตัว (distributed) และระบบพร้อมกัน (concurrent) . มันให้ API เหมือน Berkeley sockets พร้อมรูปแบบการเชื่อมต่อ (message patterns) ต่างๆ เช่น request-reply, publish-subscribe, push-pull, และ exclusive pair . ZeroMQ ทำงานแบบไร้ตัวกลาง (zero broker) จึงไม่ต้องใช้ message broker แยกต่างหาก . ไลบรารีนี้เริ่มต้นขึ้นในปี 2007 โดย Pieter Hintjens และ Martin Sustrik ภายใต้โครงการ iMatix . ภายหลังโครงการได้มีการพัฒนาต่อยอดด้วยการ Fork เป็น Crossroads I/O, Nanomsg และสร้างพอร์ตภาษาอื่นๆ เช่น JeroMQ สำหรับ Java .

ZeroMQ คืออะไร

คำจำกัดความ

  • ZeroMQ เป็นไลบรารี asynchronous messaging ที่ออกแบบมาเพื่อ distributed และ concurrent systems .

  • ให้การสื่อสารผ่าน socket abstraction ที่คล้าย Berkeley sockets และรองรับ transports หลายแบบ เช่น in-process (inproc), inter-process (IPC), TCP, และ multicast .

  • รองรับรูปแบบการสื่อสาร (messaging patterns) หลัก ได้แก่ request-reply, publish-subscribe, push-pull, และ exclusive pair .

คุณสมบัติหลัก

  • Brokerless: ด้วยแนวคิด “zero broker” จึงไม่ต้องใช้ message broker ภายนอก ทำให้โครงสร้างเรียบง่ายและลด latency .

  • ประสิทธิภาพสูง: ปรับแต่งมาเพื่อความเร็วสูงจนสามารถใช้เป็นโครงสร้างพื้นฐานของระบบแบบ clustered products ได้ .

  • รองรับหลายภาษา: มี third-party bindings สำหรับภาษาโปรแกรมยอดนิยมหลายภาษา เช่น Java ผ่าน JeroMQ, C# ผ่าน NetMQ, Rust ผ่าน zmq.rs ฯลฯ .

ประวัติ

จุดเริ่มต้นและผู้ก่อตั้ง

  • โดเมน zeromq.org ถูกจดทะเบียนในเดือนพฤษภาคม 2007 โดย Pieter Hintjens ซึ่งเป็น CEO ของ iMatix และร่วมก่อตั้งโครงการกับ Martin Sustrik ในฐานะสถาปนิกและหัวหน้าผู้พัฒนา .

  • ในวันที่ 30 มีนาคม 2010 Pieter Hintjens ประกาศว่า iMatix จะถอนตัวจากกลุ่ม AMQP และไม่สนับสนุน AMQP 1.0 เพื่อมุ่งเน้นที่ความเรียบง่ายและความเร็วของ ZeroMQ .

  • ในปี 2011 CERN ทำการศึกษาหา middleware ที่เหมาะสมสำหรับการควบคุม accelerator พบว่า ZeroMQ ได้คะแนนสูงสุดในด้านความยืดหยุ่นและความง่ายในการปรับแต่ง .

การพัฒนาและเวอร์ชันต่างๆ

  • ช่วงต้นปี 2012 สองผู้พัฒนาหลักได้ Fork โครงการ ZeroMQ ไปเป็น Crossroads I/O ขณะที่ Martin Sustrik เริ่มพัฒนา nanomsg ซึ่งเป็นการเขียนต้นฉบับใหม่ของ core library .

  • ในเดือนสิงหาคม 2012 Dongmin Yu เปิดตัว JeroMQ ซึ่งเป็นการพอร์ต ZeroMQ ให้เป็น Java แบบ pure Java .

  • ปี 2013 Pieter Hintjens ร่างโปรโตคอล ZMTP v3.0 เพื่อเพิ่มกลไกการยืนยันตัวตนและเข้ารหัสใน ZeroMQ และ Martin Hurton นำ CurveZMQ มาใช้งานใน core library .

  • ในปี 2016 Garrett D’Amore ฟอร์กโครงการ nanomsg ไปพัฒนาเป็น NNG (Nanomsg Next Generation) .

จุดประสงค์

เป้าหมายหลัก

  • ให้เครื่องมือสำหรับการส่งข้อความแบบ ยืดหยุ่น และ ปรับขยายได้สูง เพื่อรองรับแอปพลิเคชันที่ต้องการ throughput สูงและ latency ต่ำ .

  • มอบ API ที่ ใช้งานง่าย สำหรับนักพัฒนา ให้สามารถสร้างระบบกระจายตัวหรือ concurrent ได้โดยไม่ต้องเรียนรู้ middleware ขนาดใหญ่ .

  • ลดความซับซ้อนของสถาปัตยกรรมโดยไม่ต้องมี broker กลาง จึงเหมาะกับการสร้าง microservices หรือ task distribution frameworks .

การใช้งานที่เหมาะสม

  • ระบบที่ต้องการ low-latency และ high-throughput เช่น ระบบซื้อขายหุ้นหรือการประมวลผลข้อมูลเรียลไทม์ .

  • สถาปัตยกรรม microservices และ cluster computing ที่ต้องสื่อสารกันเป็นจำนวนมาก ด้วยรูปแบบ messaging patterns หลากหลาย .

  • งาน distributed หรือ concurrent ทั่วไป ไม่ว่าจะเป็นงานคำนวณหนัก (parallel computing) หรือการกระจายงาน (task distribution) .

Previousภาษาพื้นฐานใน Bitcoin Core 👾💬🤖NextPSBT / Mining & Nonce / SHA-256 📦🎲#️⃣

Last updated 29 days ago