ก้าวสำคัญสู่ประสิทธิภาพและความสามารถในการปรับขนาด
หลังจากสองเดือนของการพัฒนาและทดสอบอย่างเข้มข้น เราภูมิใจที่จะปล่อยอัลฟ่าล่าสุดของ MultiChain ด้วยกระเป๋าเงินในโหนดที่เขียนใหม่ทั้งหมด กระเป๋าเงินใหม่นี้เปลี่ยนประสิทธิภาพและความสามารถในการปรับขนาดของการสร้าง รับ และจัดเก็บธุรกรรมใน MultiChain
ก่อนที่เราจะลงรายละเอียด ให้ฉันให้บริบทบางอย่าง เมื่อเราเริ่มพัฒนา MultiChain เราตัดสินใจใช้ Bitcoin Coreซึ่งเป็นโหนดมาตรฐานสำหรับเครือข่ายบิตคอยน์สาธารณะ เป็นจุดเริ่มต้น ในแง่การเขียนโปรแกรม นี่หมายความว่า MultiChain เป็น "ทางแยก" ของซอฟต์แวร์ bitcoin เหตุผลหลักของเราคือ Bitcoin เป็น (และยังคงเป็น) ระบบนิเวศของ cryptocurrency ที่มีมูลค่าสูงสุดและผ่านการทดสอบการต่อสู้มากที่สุด
ในแง่บวก การตัดสินใจครั้งนี้ช่วยให้เราเข้าสู่ตลาดได้อย่างรวดเร็ว เมื่อเทียบกับการเข้ารหัสโหนดบล็อกเชนตั้งแต่เริ่มต้น แม้จะมีความแตกต่างมากมายระหว่างบล็อคเชนสาธารณะและส่วนตัว แต่ก็แบ่งปันพื้นฐานทางเทคนิคจำนวนมาก รวมถึงโปรโตคอลแบบเพียร์ทูเพียร์ โครงสร้างธุรกรรมและบล็อก การสร้างและการตรวจสอบลายเซ็นดิจิทัล กฎฉันทามติ การจัดการคีย์ และความจำเป็น โหนด API การ Forking จาก Bitcoin Core ช่วยให้เราสามารถใช้ประโยชน์จากความสมบูรณ์ของมันและมุ่งเน้นไปที่สิ่งที่ MultiChain เพิ่มให้กับบล็อคเชน – ความสามารถในการกำหนดค่า การอนุญาต และการสนับสนุนสินทรัพย์ดั้งเดิม ด้วยเหตุนี้ เราจึงสามารถเปิดตัวอัลฟ่าแรกในเดือนมิถุนายน 2015 เพียง 6 เดือนหลังจากเริ่มการพัฒนา
อย่างไรก็ตาม นอกจากประโยชน์เหล่านี้แล้ว เรายังต้องยอมรับข้อเท็จจริงที่ว่าบางแง่มุมของ Bitcoin Core นั้นไม่ได้ออกแบบสถาปัตยกรรมได้ไม่ดีนัก แม้ว่าจะทำงานได้ดีในขนาดเล็ก แต่ประสิทธิภาพจะลดลงอย่างมากเมื่อการใช้งานเพิ่มขึ้น ด้วยเครือข่ายบิตคอยน์สาธารณะยังคงจำกัดการทำธุรกรรมไม่กี่รายการต่อวินาที จึงไม่เป็นปัญหาสำหรับผู้ใช้ Bitcoin Core ส่วนใหญ่เป็นเวลานาน แต่ด้วยบล็อคเชนส่วนตัวที่มีเป้าหมายสำหรับการทำธุรกรรมหลายร้อยหรือหลายพันต่อวินาที เรารู้ว่าไม่ช้าก็เร็วคอขวดเหล่านี้จะต้องถูกลบออก
กระเป๋าเงินของ Bitcoin Core
“กระเป๋าเงิน” ภายใน Bitcoin Core เป็นส่วนสำคัญที่สุดของความเจ็บปวดเหล่านี้ หน้าที่ของมันคือการจัดเก็บธุรกรรมที่เกี่ยวข้องกับโหนดโดยเฉพาะ เพราะพวกเขาเกี่ยวข้องกับที่อยู่บล็อคเชนที่มันเป็นเจ้าของหรือ "ดูอย่างเดียว” ที่อยู่ที่มีกิจกรรมที่กำลังติดตาม ตัวอย่างเช่น ทุกธุรกรรมที่ส่งเงินเข้าหรือออกจากโหนดจะต้องเก็บไว้ในกระเป๋าเงินของโหนดนั้น และทุกครั้งที่โหนดสร้างธุรกรรม โหนดจะต้องค้นหา "ผลลัพธ์ที่ยังไม่ได้ใช้" อย่างน้อยหนึ่งรายการของธุรกรรมกระเป๋าเงินก่อนหน้าซึ่งธุรกรรมใหม่จะใช้ไป
เกิดอะไรขึ้นกับกระเป๋าเงินที่เราสืบทอดมาจาก Bitcoin Core? อันที่จริงสามสิ่ง:
- ธุรกรรมกระเป๋าเงินทั้งหมดจะถูกเก็บไว้ในหน่วยความจำ ทำให้เวลาเริ่มต้นทำงานช้าและการใช้หน่วยความจำเพิ่มขึ้นอย่างรวดเร็ว
- การดำเนินการหลายอย่างทำ "การสแกนแบบเต็ม" ที่ไม่มีประสิทธิภาพของทุกธุรกรรมในกระเป๋าเงิน ไม่ว่าจะเก่าหรือใหม่
- ทุกธุรกรรมในกระเป๋าเงินจะถูกจัดเก็บไว้เต็มจำนวน ซึ่งรวมถึง “ข้อมูลเมตา” ตามอำเภอใจซึ่งไม่มีความหมายจากมุมมองของโหนดและถูกเก็บไว้ในบล็อกเชนบนดิสก์แล้ว นี่มันสิ้นเปลืองมาก
ผลที่ตามมาก็คือ ด้วยการจัดเก็บธุรกรรมประมาณ 20,000 รายการ กระเป๋าเงินของ Bitcoin Core ช้าลงอย่างมาก หลังจาก 200,000 หรือมากกว่านั้น มันก็แทบจะหยุดนิ่ง ที่แย่กว่านั้น เนื่องจากบล็อกเชน MultiChain อนุญาตให้มีข้อมูลเมตาสูงสุด 8 MB ต่อธุรกรรม (เทียบกับ 80 ไบต์ของ bitcoin) ความต้องการหน่วยความจำของกระเป๋าเงินสามารถเพิ่มขึ้นอย่างรวดเร็วแม้จะมีธุรกรรมเพียงเล็กน้อย
สิ่งสำคัญคือต้องชี้แจงว่าข้อบกพร่องเหล่านี้ใช้ได้กับ Bitcoin Core เท่านั้น กระเป๋าสตางค์มากกว่าความสามารถในการประมวลผลธุรกรรมทั่วไป กล่าวอีกนัยหนึ่ง มันสามารถประมวลผลและจัดเก็บธุรกรรมนับล้าน (หรือพันล้าน) ได้อย่างสะดวกสบายซึ่งไม่เกี่ยวข้องกับที่อยู่ของตัวเอง เนื่องจากสิ่งเหล่านี้ถูกเก็บไว้ในดิสก์มากกว่าในหน่วยความจำ ตัวอย่างเช่น การแลกเปลี่ยน bitcoin และกระเป๋าเงินยอดนิยมจำนวนมากใช้ Bitcoin Core ตามที่เป็นอยู่ แต่เก็บธุรกรรมของตนเองไว้ภายนอกแทนที่จะเก็บไว้ในโหนด
กระเป๋าเงินใหม่ของ MultiChain
เราสามารถสร้างความต้องการแบบเดียวกันของผู้ใช้ MultiChain เพื่อจัดเก็บธุรกรรมของตนเองนอกโหนด อย่างไรก็ตาม วิธีนี้ไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง เนื่องจากจะทำให้การติดตั้งและบำรุงรักษาสำหรับผู้เข้าร่วมของ chain แต่ละคนยุ่งยากมาก ดังนั้นเราจึงกัดกระสุนและเขียนกระเป๋าสตางค์ใหม่ตั้งแต่ต้น
กระเป๋าเงินใหม่แตกต่างกันอย่างไร? หากคุณมีประสบการณ์กับฐานข้อมูล คำตอบอาจชัดเจน:
- แทนที่จะเก็บธุรกรรมวอลเล็ทไว้ในหน่วยความจำ ธุรกรรมจะถูกเก็บไว้ในดิสก์ในรูปแบบที่เหมาะสม โดยจะดึงธุรกรรมที่น่าสนใจเมื่อจำเป็น
- แทนที่จะทำการสแกนกระเป๋าสตางค์แบบเต็ม ธุรกรรมจะถูก "จัดทำดัชนี" ในรูปแบบต่างๆ เพื่อให้ผู้ที่ปฏิบัติตามเกณฑ์เฉพาะสามารถค้นหาได้อย่างรวดเร็ว
- ข้อมูลเมตาของธุรกรรมใดๆ ที่มีขนาดใหญ่กว่า 256 ไบต์จะไม่ถูกเก็บไว้ในกระเป๋าเงิน กระเป๋าเงินมีตัวชี้ไปยังตำแหน่งของข้อมูลเมตาในบล็อกเชนเอง
กล่าวอีกนัยหนึ่ง เราได้สร้างกระเป๋าเงินในโหนดขึ้นใหม่เพื่อให้ขับเคลื่อนฐานข้อมูลได้อย่างเหมาะสม (โดยใช้ เลเวลดีบี) แทนที่จะอาศัยโครงสร้างในหน่วยความจำที่ไร้เดียงสาที่ไม่สามารถค้นหาได้อย่างมีประสิทธิภาพ ไม่น่าแปลกใจเลยที่ความแตกต่าง (วัดจาก Intel Core i3.4 7 GHz) นั้นค่อนข้างน่าทึ่ง:
กราฟแสดงให้เห็นว่า เมื่อกระเป๋าเงินเก่ามีธุรกรรม 250,000 รายการ อัตราการส่งจะลดลงเหลือ 3 tx/วินาที และเพิ่ม 600 MB ให้กับการใช้หน่วยความจำของโหนด ในทางตรงกันข้าม กระเป๋าเงินใหม่รองรับมากกว่า 100 tx/วินาที และเพิ่มเพียง 90 MB เท่านั้น เราหยุดทดสอบกระเป๋าเงินเก่า ณ จุดนี้ แต่ถึงแม้จะมีธุรกรรมที่จัดเก็บไว้ 6-8 ล้านครั้ง กระเป๋าเงินใหม่ยังคงส่งมากกว่า 100 tx/วินาที และมี RAM สูงสุดประมาณ 250 MB ที่ใช้ (เนื่องจากการแคชฐานข้อมูล)
การทดสอบเหล่านี้ดำเนินการภายใต้เงื่อนไขที่เป็นจริง โดยมีที่อยู่และทรัพย์สินหลายรายการ (และด้วยเหตุนี้ผลธุรกรรมที่ยังไม่ได้ใช้จำนวนมาก) ในกระเป๋าเงินของโหนด ในสถานการณ์ในอุดมคติ (หนึ่งที่อยู่ หนึ่งสินทรัพย์ UTXO สองสามรายการ) อัตราการส่งที่ต่อเนื่องนั้นมากกว่า 400 tx/s ไม่ว่าจะด้วยวิธีใด ในการเขียนใหม่นี้ เราได้แยกฟังก์ชันการทำงานของกระเป๋าเงินทั้งหมดไว้อย่างเหมาะสมที่อยู่เบื้องหลังอินเทอร์เฟซภายในที่สะอาดตา ซึ่งจะทำให้ง่ายต่อการรองรับกลไกฐานข้อมูลอื่นๆ ในอนาคต เพื่อความสมบูรณ์และความเร็วที่มากยิ่งขึ้น
เพื่อย้ำอีกครั้ง ตัวเลขทั้งหมดเหล่านี้อ้างอิงถึงอัตราที่โหนดสามารถสร้าง ส่ง และจัดเก็บธุรกรรมในกระเป๋าเงินท้องถิ่น แทนที่จะเป็นปริมาณงานในแง่ของการประมวลผลธุรกรรมที่สร้างโดยผู้อื่น สำหรับทรูพุตเครือข่ายทั่วไป ปัจจุบัน MultiChain สามารถประมวลผลได้ 200 ถึง 800 tx/วินาที ขึ้นอยู่กับฮาร์ดแวร์ที่ใช้งาน (อย่าสงสัยในซอฟต์แวร์บล็อคเชนใดๆ ที่มีแนวโน้มว่าจะมีตัวเลขเช่น 100,000 tx/วินาที บนฮาร์ดแวร์ปกติ เพราะคอขวดคือการตรวจสอบลายเซ็นดิจิทัล ซึ่งต้องใช้เวลาจริงในการดำเนินการ หากโหนดไม่ตรวจสอบลายเซ็นธุรกรรมแต่ละรายการ บล็อกเชนจะไม่สามารถใช้งานได้ในความเชื่อถือ ทำให้ไม่ดีกว่าฐานข้อมูลแบบกระจายทั่วไป)
สุดท้ายนี้ ผมอยากพูดถึงฟีเจอร์หลักตัวต่อไปที่จะมาใน MultiChain ซึ่งจำเป็นต้องมีการเขียนวอลเล็ตนี้ใหม่ คุณลักษณะนี้เรียกว่าสตรีม ให้นามธรรมระดับสูงและ API สำหรับการจัดเก็บข้อมูลวัตถุประสงค์ทั่วไปบนบล็อกเชน คุณสามารถคิดว่าสตรีมเป็นฐานข้อมูลอนุกรมเวลาหรือคีย์-ค่าได้ โดยมีประโยชน์เพิ่มเติมที่เกี่ยวข้องกับบล็อกเชนของการกระจายอำนาจ ลายเซ็นดิจิทัล การประทับเวลา และความไม่สามารถเปลี่ยนแปลงได้ เราทราบถึงกรณีการใช้งานบล็อคเชนจำนวนมากที่สามารถใช้ฟังก์ชันนี้ได้ และเรากำลังทำงานอย่างหนักเพื่อสร้างมันขึ้นมา ดูพื้นที่นี้
กรุณาโพสต์ความคิดเห็นใด ๆ ใน LinkedIn.
ภาคผนวกทางเทคนิค
เริ่มต้นใน MultiChain alpha 22 คุณสามารถตรวจสอบเวอร์ชันของ wallet ที่กำลังรันอยู่โดยตรวจสอบ walletdbversion
สนามของ getinfo
or getwalletinfo
การเรียก API ค่าของ 1
หมายถึงกระเป๋าเงิน Bitcoin Core ดั้งเดิมและ 2
หมายถึงกระเป๋าสตางค์ MultiChain ใหม่
หากคุณเรียกใช้ MultiChain เวอร์ชันใหม่บน chain ที่มีอยู่ ระบบจะไม่เปลี่ยนเป็น wallet ใหม่ทันที คุณสามารถอัพเกรดกระเป๋าเงินได้โดยหยุดโหนดแล้วเปิดใหม่ multichaind
ด้วยพารามิเตอร์ -walletdbversion=2 –rescan
. คุณสามารถดาวน์เกรดได้เช่นเดียวกันโดยใช้ –walletdbversion=1 –rescan
.
โดยค่าเริ่มต้น เมื่อคุณเริ่มโหนดบนเชนใหม่ โหนดจะใช้กระเป๋าเงินใหม่โดยอัตโนมัติ คุณเปลี่ยนสิ่งนี้ได้ด้วยการเรียกใช้ multichaind
ครั้งแรกกับพารามิเตอร์ –walletdbversion=1
.
ด้วยกระเป๋าสตางค์ใบใหม่ทั้งหมด MultiChain API ทำงานเหมือนเดิมทุกประการ ยกเว้นการสืบค้นธุรกรรมแบบเก่า APIs getreceivedbyaddress
, listreceivedbyaddress
และ listtransactions
(ใช้ listwallettransactions
or listaddresstransactions
แทนที่). นอกจากนี้ กระเป๋าเงินใหม่ไม่รองรับการเรียก API และพารามิเตอร์ที่เกี่ยวข้องกับกลไก "บัญชี" ของ Bitcoin Core ที่ใช้งานได้ไม่ดีและกำลังจะเลิกใช้ในไม่ช้า ซึ่ง MultiChain ไม่เคยรองรับอย่างเหมาะสม การโทรเหล่านี้ถูกปิดใช้งานอย่างปลอดภัยพร้อมข้อความแสดงข้อผิดพลาด
ที่มา: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/
- 000
- 100
- การเล็ง
- ทั้งหมด
- API
- APIs
- รอบ
- สินทรัพย์
- สินทรัพย์
- บิต
- Bitcoin
- แกน bitcoin
- blockchain
- การก่อสร้าง
- ความจุ
- กรณี
- เปลี่ยนแปลง
- การเข้ารหัส
- มา
- ความคิดเห็น
- ร่วมกัน
- เอกฉันท์
- อย่างต่อเนื่อง
- การสร้าง
- cryptocurrency
- ข้อมูล
- การจัดเก็บข้อมูล
- ฐานข้อมูล
- ฐานข้อมูล
- การกระจายอำนาจ
- ความต้องการ
- พัฒนาการ
- ดิจิตอล
- แลกเปลี่ยน
- ลักษณะ
- ปลาย
- ชื่อจริง
- ครั้งแรก
- โฟกัส
- รูป
- เติมเต็ม
- เต็ม
- เงิน
- อนาคต
- General
- ฮาร์ดแวร์
- HTTPS
- ร้อย
- รวมทั้ง
- อินเทล
- อยากเรียนรู้
- IT
- การสัมภาษณ์
- การเก็บรักษา
- คีย์
- ใหญ่
- ล่าสุด
- นำ
- เลฟเวอเรจ
- ในประเทศ
- นาน
- สำคัญ
- การทำ
- การจัดการ
- ตลาด
- ล้าน
- เดือน
- เครือข่าย
- โหนด
- ตัวเลข
- การดำเนินการ
- อื่นๆ
- อาการเจ็บปวด
- การปฏิบัติ
- มุมมอง
- ยอดนิยม
- ส่วนตัว
- การเขียนโปรแกรม
- สาธารณะ
- ความต้องการ
- กฎระเบียบ
- วิ่ง
- วิ่ง
- scalability
- ค้นหา
- Share
- เล็ก
- So
- ซอฟต์แวร์
- ช่องว่าง
- ความเร็ว
- ใช้จ่าย
- เริ่มต้น
- การเริ่มต้น
- การเก็บรักษา
- จัดเก็บ
- สนับสนุน
- ที่สนับสนุน
- สวิตซ์
- วิชาการ
- การทดสอบ
- การทดสอบ
- เวลา
- การติดตาม
- การทำธุกรรม
- การทำธุรกรรม
- วางใจ
- us
- ผู้ใช้
- ความคุ้มค่า
- มูลค่า
- การตรวจสอบ
- กระเป๋าสตางค์
- กระเป๋าสตางค์
- นาฬิกา
- ภายใน
- คำ
- งาน