Web3.js กับ Ethers.js : การเปรียบเทียบไลบรารี Web3

เผยแพร่แล้ว: 2023-05-21

นักพัฒนา Cryptocurrency และ blockchain สามารถใช้ประโยชน์จากข้อดีของเครือข่าย blockchain ที่ตั้งโปรแกรมได้จำนวนมาก หนึ่งในแพลตฟอร์มที่ใช้กันอย่างแพร่หลายมากที่สุดสำหรับการเปิดใช้งานโปรแกรมสัญญาอัจฉริยะเพื่อพัฒนาแอปพลิเคชันแบบกระจายศูนย์คือ Ethereum นักพัฒนาได้ถกเถียงกันในประเด็นต่างๆ เช่น web3.js กับ Ethers.js มากขึ้นเรื่อยๆ เนื่องจากความต้องการในการพัฒนา web3 เพิ่มขึ้นอย่างต่อเนื่อง การค้นหาไลบรารี JavaScript ที่สามารถช่วยในการปรับใช้แอปพลิเคชันแบบกระจายอำนาจนั้นมีความสำคัญมากกว่าที่เคย ต้องเลือกไลบรารี JavaScript ที่ดีที่สุด เนื่องจากต้องปรับใช้แอปพลิเคชัน web3 ในบล็อกเชนหลายตัว การสนทนาต่อไปนี้เป็นการทบทวนอย่างละเอียดของแต่ละไลบรารีเพื่อช่วยคุณในการพิจารณาว่า “web3.js กับ ethers.js อันไหนดีกว่ากัน”

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

บล็อกเชนที่ตั้งโปรแกรมได้ทุกตัวมีคอลเลกชันของไลบรารีหรือ SDK ที่ทำให้การเชื่อมต่อและโต้ตอบกับบล็อกเชนนั้นง่ายขึ้น บล็อกเชนส่วนใหญ่ที่ใช้อยู่ในปัจจุบันรองรับ EVM ได้เนื่องจากใช้เครือข่าย Ethereum นี่หมายความว่าหากมีการพัฒนาไลบรารี ETH ก็อาจนำไปใช้กับบล็อกเชนใดๆ ที่สอดคล้องกับ EVM อย่างไรก็ตาม โปรโตคอล JSON-RPC ช่วยให้สามารถสื่อสารได้ บทความนี้จะเปรียบเทียบไลบรารี ETH ที่รู้จักกันดีสองรายการ

นี่คือการเปรียบเทียบ Web3.js และ Ethers.js ในรูปแบบตาราง:

พารามิเตอร์ Web3.js Ethers.js
นักพัฒนา มูลนิธิ Ethereum Ethers.io (องค์กรบุคคลที่สาม)
ฟังก์ชั่น การโต้ตอบ Ethereum ที่ครอบคลุม โฟกัส Ethereum 1.0 (พร้อมรองรับ Ethereum 2.0 รุ่นทดลอง)
รองรับโปรโตคอล อีเธอเรียม 1.0 และ อีเธอเรียม 2.0 Ethereum 1.0 เป็นหลัก (พร้อมรองรับ Ethereum 2.0 รุ่นทดลอง)
ชุมชน ชุมชนที่ใหญ่ขึ้น ชุมชนขนาดเล็ก
เอกสาร กว้างขวาง กำลังเติบโต
ส่วนหน้า/ส่วนหลัง การพัฒนาทั้งส่วนหน้าและส่วนหลัง เหมาะอย่างยิ่งสำหรับการพัฒนาส่วนหน้า
เอพีไอ กว้างขวางและเต็มไปด้วยคุณสมบัติ เป็นมิตรกับนักพัฒนาและใช้งานง่าย
ความปลอดภัย มาตรฐาน เน้นความปลอดภัยและความปลอดภัยประเภท

ใน Web3.js โดยทั่วไป คุณต้องสร้างอินสแตนซ์ของสัญญาโดยใช้ ABI (Application Binary Interface) ของสัญญาและที่อยู่ของสัญญาเพื่อโต้ตอบกับสัญญาอัจฉริยะ จากนั้น คุณสามารถเรียกใช้เมธอดสัญญาโดยใช้อินสแตนซ์ที่สร้างขึ้น นี่คือตัวอย่าง:

 // Web3.js const contractInstance = new web3.eth.Contract(abi, contractAddress); contractInstance.methods.myMethod().call() .then(result => { console.log(result); }) .catch(error => { console.error(error); });

ในทางกลับกัน Ethers.js ทำให้การโต้ตอบของสัญญาง่ายขึ้นโดยใช้ไวยากรณ์ที่เข้าใจได้ง่ายและรัดกุมยิ่งขึ้น คุณสามารถโต้ตอบกับสัญญาได้โดยตรงโดยไม่ต้องสร้างอินสแตนซ์

 // Ethers.js const contract = new ethers.Contract(contractAddress, abi, provider); contract.myMethod() .then(result => { console.log(result); }) .catch(error => { console.error(error); });

Ethers.js นำเสนอวิธีการที่คล่องตัวและเป็นมิตรกับนักพัฒนาในการโต้ตอบสัญญาโดยให้ไวยากรณ์ที่ง่ายกว่าสำหรับการเรียกเมธอดสัญญาโดยตรง

ทั้งหมดเกี่ยวกับ Web3.js

ก่อนที่จะพูดถึงความแตกต่างระหว่าง web3.js กับ ethers.js เรามาเริ่มกันที่ภาพรวมของแต่ละไลบรารีกันก่อน Web3.js ซึ่งเป็นเฟรมเวิร์ก web3 ดั้งเดิม จะเป็นผู้ท้าชิงรายแรกในการเปรียบเทียบ web3.js และ ethers.js เป็น Ethereum JavaScript API เริ่มต้นที่ Ethereum Foundation ให้บริการ ปัจจุบัน Chainsafe รับผิดชอบในการพัฒนาห้องสมุด web3.js ในนามของ Ethereum Foundation ในปี 2015 มี Web3.js เพิ่มขึ้น ซึ่งได้กลายเป็นเฟรมเวิร์ก Ethereum JavaScript ยอดนิยม

ในเชิงเปรียบเทียบ web3.js ได้รวมเข้ากับโครงการและแพ็คเกจจำนวนมาก ในทางกลับกัน Web3.js จะสันนิษฐานถึงการเชื่อมต่อระหว่างโหนดบล็อกเชนในเครื่องและแอปพลิเคชัน คิดว่าโลคัลโหนดจะรองรับการทำงานที่หลากหลาย รวมถึงการจัดเก็บคีย์ การเซ็นชื่อธุรกรรม และการอ่านสถานะปัจจุบันของบล็อกเชนที่เชื่อมต่ออยู่

ข้อดีและข้อเสียของ Web3.js

Web3.js เป็นหนึ่งในไลบรารี JavaScript รุ่นแรกสำหรับนักพัฒนา web3 ในการเปรียบเทียบ web3.js กับ ethers.js ที่เป็นประโยชน์ จำเป็นต้องเข้าใจทั้งข้อดีและข้อเสียของ web3.js เมื่อเปรียบเทียบไลบรารี่ของ web3 แล้ว web3.js จะมีทีมผู้ก่อตั้งและการใช้งานอย่างแพร่หลายเป็นข้อได้เปรียบที่สำคัญสองประการ Ethereum Foundation ซึ่งรับรองประสิทธิภาพของการออกแบบด้วยเครือข่ายผู้ร่วมให้ข้อมูลที่กว้างขวาง ได้สร้าง Web3.js อย่างไรก็ตาม ได้กลายเป็นหนึ่งในไลบรารี JavaScript ที่ใช้กันแพร่หลายมากที่สุดสำหรับการสร้างแอปพลิเคชันบล็อกเชน ไลบรารี JavaScript ของ web3 ที่มีอยู่ก่อนปี 2017 คือ web3.js ตามมาว่ามันมีส่วนสำคัญในโครงการ web3 รุ่นแรก ๆ หลายโครงการ

ต้องพิจารณาข้อเสียของ web3.js เมื่อเปรียบเทียบกับ ethers.js ก่อนอื่น โปรเจกต์ใหม่ไม่มากนักที่พบว่ามีประโยชน์มากสำหรับ web3.js ห้องสมุดยังขึ้นอยู่กับใบอนุญาตที่มีข้อจำกัดอย่างเข้มงวด เช่น ข้อห้ามไม่ให้เปลี่ยนซอร์สโค้ดโดยไม่เผยแพร่การเปลี่ยนแปลงต่อสาธารณะ ขนาดของ web3.js ซึ่งอาจส่งผลต่อความเร็วและประสิทธิภาพของเว็บไซต์หรือแอปของ web3 อาจเป็นปัจจัยที่สำคัญที่สุด

ทั้งหมดเกี่ยวกับ Ethers.js

ต้องพูดถึงคำจำกัดความ ประโยชน์ และข้อเสียของ ethers.js ในการเปรียบเทียบ web3.js กับ ethers.js ผู้สร้าง ethers.js อ้างว่าไลบรารี ร่วมกับเครื่องมือใน Typescript และ JavaScript เป็นการใช้งานกระเป๋าเงิน Ethereum อย่างสมบูรณ์ คำตอบสำหรับคำถามที่ว่า “web3.js และ ethers.js แตกต่างกันอย่างไร” จะบ่งบอกถึงการใช้งานอย่างแพร่หลายของไลบรารี ethers.js ประกอบด้วยคุณสมบัติต่าง ๆ สำหรับจัดการกับ Ethereum และเครือข่ายบล็อกเชนอื่น ๆ ที่รองรับ EVM นอกจากนี้ยังสามารถใช้ Ethers.js เพื่ออ่านและเปลี่ยนสถานะของเครือข่ายบล็อกเชนได้

Richard Moore วิศวกรซอฟต์แวร์ชาวแคนาดาพัฒนา Ethers.js ในปี 2015 การนำเสนอทางเลือกที่กะทัดรัดและมีความสามารถแทน web3.js คือเป้าหมายหลักเบื้องหลังการพัฒนา ethers.js นับตั้งแต่เปิดตัว ethers.js ได้รับความนิยมเพิ่มขึ้นอย่างรวดเร็วในหมู่นักพัฒนา Ethereum และ EVM ประสิทธิภาพของการจัดการคีย์และการสื่อสารกับเครือข่ายบล็อกเชนใน ethers.js จะเป็นหนึ่งในความแตกต่างหลักระหว่าง web3 และ ethers.js นักพัฒนาซอฟต์แวร์มีองค์กรที่แตกต่างกันสองแห่งสำหรับการจัดการคีย์และโต้ตอบกับบล็อกเชน ใน ethers.js คุณสามารถมีกระเป๋าเงินสำหรับใช้รหัสส่วนตัวเพื่อลงนามธุรกรรม และผู้ให้บริการโหนดสามารถช่วยเชื่อมต่อกับเครือข่ายบล็อกเชนได้ การจัดการกระเป๋าเงินและผู้ให้บริการโหนดอาจเป็นอิสระจากกัน

ข้อดีและข้อผิดพลาดของ Ethers.js

ความแตกต่างระหว่างไลบรารีทั้งสองจะเน้นให้เห็นถึงประโยชน์และข้อเสียของ Ethers.js เมื่อเรียนรู้เพิ่มเติมเกี่ยวกับประโยชน์และข้อเสียของ ethers.js คุณอาจตรวจสอบคำตอบของคำถามที่ว่า "web3.js กับ ethers.js อันไหนดีกว่ากัน" ประโยชน์ประการแรกของ ethers.js คือความพร้อมใช้งานของสิทธิ์ใช้งานที่อนุญาตมากกว่าซึ่งอนุญาตให้ใช้และเปลี่ยนแปลงได้ฟรี แต่คุณต้องทำซอร์สโค้ดและการปรับแต่งทั้งหมดที่คุณทำไว้ให้พร้อมใช้งานด้วย ethers.js ไลบรารีแบบบางรองรับการใช้ชื่อโดเมน ENS ไลบรารี JavaScript ให้การสนับสนุนกรณีทดสอบที่ครอบคลุม พร้อมหลักฐานการมีอยู่สำหรับกรณีทดสอบเกือบ 10,000 รายการ เมื่อเทียบกับข้อบกพร่องของ web3.js แล้ว ethers.js แสดงให้เห็นถึงการปรับปรุงที่สังเกตได้ แต่ก็มีข้อบกพร่องมากมายเช่นกัน ตัวอย่างเช่น แม้ว่า ethers.js จะเป็นไลบรารี่ที่ค่อนข้างใหม่ แต่นักพัฒนาก็มีปัญหาในการใช้มันสำหรับธุรกิจหรือโครงการที่เป็นที่ยอมรับมากขึ้น

ทำไมคุณควรเปรียบเทียบ Web3.js และ Ethers.js

การแนะนำแนวคิด web3 ได้เปลี่ยนแปลงวิธีการสร้างแอปพลิเคชันแบบเดิมๆ เว็บไซต์และแอป web3 เกือบทั้งหมดใช้ไลบรารีเช่น web3.js หรือ ethers.js ขั้นตอนสำคัญในการเลือกไลบรารี web3 ที่คุณสามารถใช้ได้คือการเปรียบเทียบไลบรารีที่มีอยู่ ห้องสมุดมีไว้เพื่ออะไร? นักพัฒนาอาจใช้โปรโตคอล JSON-RPC เพื่อสื่อสารกับ Ethereum หรือบล็อกเชนที่รองรับ EVM อื่นๆ ไลบรารี JavaScript มีประโยชน์ในการแนะนำความสามารถหลักที่หลากหลายในแอปพลิเคชันแบบกระจายอำนาจ ตัวอย่างบางส่วน ได้แก่ การสร้างกระเป๋าเงิน การปรับใช้สัญญาอัจฉริยะ การขอข้อมูลบล็อกเชน และการลงนามธุรกรรม นักพัฒนาสามารถดำเนินการเหล่านี้ได้โดยไม่จำเป็นต้องเรียก API โดยตรงไปยังบล็อกเชนที่เกี่ยวข้อง

นักพัฒนา web3 ทุกคนควรสังเกตการสนทนาระหว่าง web3.js กับ ethers.js

นักพัฒนามีแนวโน้มที่จะกังวลเกี่ยวกับการเลือกไลบรารี JavaScript ที่ดีที่สุดสำหรับโครงการของตนก่อนที่จะเริ่มโครงการพัฒนา web3 ห้องสมุดแต่ละแห่งมีชุดรหัสที่ย่อและใช้ซ้ำได้ ซึ่งสามารถใช้ฟังก์ชันเดียวหรือหลายฟังก์ชันที่เกี่ยวข้องกันอย่างใกล้ชิด นักพัฒนาสามารถเพิ่มไลบรารีลงในแอปพลิเคชันและใช้มันเพื่อทำฟังก์ชันที่จำเป็นให้สำเร็จ แทนที่จะสร้างโค้ดใหม่ตั้งแต่เริ่มต้นเพื่อดำเนินการดังกล่าว

พิจารณาการสร้างบ้านเป็นตัวอย่างในการออกแบบแอพพลิเคชั่น หลังจากสร้างบ้าน คุณจะพิจารณาปรับปรุงการออกแบบภายในด้วยเฟอร์นิเจอร์ คุณจะพยายามสร้างเฟอร์นิเจอร์ตั้งแต่เริ่มต้นหรือไม่? ทางเลือกที่เป็นไปได้มากที่สุดคือการหาของตกแต่งบ้านที่คุณต้องการจากร้านค้า คุณสามารถเข้าถึงคุณลักษณะของแอปพลิเคชันที่ต้องการ—บ้านของคุณ—จากร้านเฟอร์นิเจอร์ซึ่งทำหน้าที่เป็นห้องสมุด ด้วยเหตุนี้ ความแตกต่างระหว่างเฟรมเวิร์กของ web3 จึงได้รับความสนใจเป็นอย่างมาก โดยเฉพาะจากนักพัฒนา การรู้ฟังก์ชันของห้องสมุดแต่ละแห่งจะช่วยให้คุณเลือกสิ่งที่ดีที่สุดสำหรับแอปพลิเคชัน web3 ของคุณ

ความแตกต่างที่สำคัญ: Web3.js กับ Ethers.js

คำอธิบายอย่างละเอียดเกี่ยวกับพื้นฐานของ ethers.js และ web3.js ให้แนวคิดที่ดีว่าทั้งสองอย่างนี้มีประโยชน์ต่อนักพัฒนาอย่างไร ในการตอบคำถามของ web3.js กับ ethers.js สิ่งสำคัญคือต้องทำการเปรียบเทียบแบบเคียงข้างกันตามเกณฑ์ต่างๆ นี่คือรายการตัวบ่งชี้ต่างๆ ที่สามารถช่วยคุณเปรียบเทียบ web3.js และ ethers.js ได้อย่างมีประสิทธิภาพ

นักพัฒนา

ก่อนที่จะดำเนินโครงการหรือโซลูชันทางเทคนิคใด ๆ ตัวตนของผู้ก่อตั้งจะเป็นสิ่งแรกที่ดึงดูดความสนใจ ความน่าเชื่อถือของห้องสมุดอาจอนุมานได้จากภูมิหลังของนักพัฒนา Ethereum Foundation ก่อตั้ง web3.js ซึ่งมีข้อได้เปรียบเหนือเฟรมเวิร์ก web3 อื่นๆ นักพัฒนาสามารถสำรวจฟังก์ชันการทำงานที่หลากหลายด้วยความมั่นใจว่าองค์กรหรือระบบนิเวศที่ครอบคลุมสนับสนุนห้องสมุด ในทางตรงกันข้าม Richard Moore ได้พัฒนา ethers.js เพื่อแทนที่ web3.js

ผลงาน

ประสิทธิภาพจะเป็นข้อพิจารณาที่สำคัญต่อไปในการพิจารณาว่า “web3 JS หรือ ethers JS อันไหนดีกว่ากัน” เมื่อเปรียบเทียบกับ web3.js แล้ว Ethers เป็นไลบรารี่ที่เบากว่ามาก รับประกันประสิทธิภาพที่ดีกว่า Ethers.js เวอร์ชันบีบอัดมีขนาดเพียง 77 kb แต่เวอร์ชันไม่บีบอัดมีขนาด 284 kb ไลบรารี web3.js สามารถใช้พื้นที่ได้หลายกิกะไบต์พร้อมกัน อย่างไรก็ตาม ในกรณีของ dApps ขนาดเล็ก ปัจจัยด้านขนาดจะส่งผลต่อประสิทธิภาพ นอกจากนี้ ข้อได้เปรียบด้านประสิทธิภาพของการใช้ ethers.js บน web3.js นั้นถูกตั้งคำถาม เนื่องจากไม่มีข้อมูลการทดสอบความเร็วที่เพียงพอสำหรับแอปเดียวกัน

การซ่อมบำรุง

อีกจุดหนึ่งของการเปรียบเทียบระหว่างไลบรารีทั้งสองคือการประเมินความแตกต่างของการบำรุงรักษาระหว่าง web3.js และ ethers.js Ethereum Foundation รองรับ Web3.js อย่างชัดเจน และ Chainsafe มีกำหนดการบำรุงรักษาที่ใช้งานอยู่ Web3.js มีข้อดีมากมายสำหรับ web3.js โดยมีผู้ร่วมสร้าง Github ประมาณ 304 คนและผู้ทำงานร่วมกัน NPM 4 คน ในทางกลับกัน Ethers.js Ethers.js ได้รับการดูแลโดยวิศวกรซอฟต์แวร์อิสระ มีผู้ทำงานร่วมกัน NPM เพียงรายเดียวและผู้มีส่วนร่วม Github ประมาณ 15 คน ณ ตอนนี้ อย่างไรก็ตาม ความแตกต่างระหว่าง web3.js และ ethers.js จะพิจารณาบทวิจารณ์และความคิดเห็นของนักพัฒนาเพื่อกำหนดประสิทธิภาพการบำรุงรักษา มีการอัปเดตเป็นประจำในไลบรารี web3.js และ ethers.js เพื่อแก้ไขข้อบกพร่องและเพิ่มฟังก์ชันการทำงานใหม่

เอกสาร

เมื่อเปรียบเทียบ web3.js กับ ethers.js ความพร้อมใช้งานของเอกสารเป็นอีกปัจจัยสำคัญในการพิจารณาว่าการเริ่มต้นใช้งานไลบรารีนั้นง่ายเพียงใด คุณสามารถเริ่มต้นการผจญภัยในการพัฒนา web3 ของคุณด้วยความช่วยเหลือจากเอกสารเชิงลึกที่มีให้โดยแพ็คเกจ JavaScript ของ web3 แต่ละชุด ในอีกด้านหนึ่ง ethers.js มีทรัพยากรเพิ่มเติม รวมถึงคู่มือ "เริ่มต้นใช้งาน" และ "สนามเด็กเล่น"

การใช้งาน

สิ่งสำคัญอีกประการหนึ่งสำหรับการเปรียบเทียบไลบรารีทั้งสองคือความง่ายในการใช้งาน สิ่งนี้เป็นจริงสำหรับทั้ง ethers.js และ web3.js ผู้ให้บริการกระเป๋าเงินและโหนดจะรวมกันเป็นวัตถุเดียวโดย Web3.js เพื่อให้ทำงานได้ ในทางกลับกัน Ethers.js Ethers.js มีสองเอนทิตีแยกกันสำหรับผู้ให้บริการกระเป๋าเงินและโหนด ด้วยเหตุนี้ ethers.js จึงมอบความยืดหยุ่นที่จำเป็นในการแยกการลงนามและการดูแลรักษาคีย์ส่วนตัวออกจากการอ่านและการเปลี่ยนแปลงสถานะบล็อกเชน เนื่องจากผู้ให้บริการและกระเป๋าเงินถูกแยกออกจากกัน ethers.js จึงรับประกันได้ว่านักพัฒนาจะได้รับประสบการณ์ที่ดีขึ้น Web3.js เป็นตัวเลือกที่ยอดเยี่ยมสำหรับผู้เริ่มต้น เนื่องจากช่วยให้สามารถเรียนรู้ได้อย่างยืดหยุ่นผ่านบทช่วยสอน สื่อสนับสนุน และโครงการ web3

บทสรุป

โดยพื้นฐานแล้ว Web3.js เป็นไลบรารี่ที่ช่วยให้นักพัฒนาเชื่อมต่อกับเครือข่าย Ethereum ในขณะที่ Ethers.js เป็นไลบรารี่ที่ช่วยในการสร้างแอพพลิเคชั่นแบบกระจายอำนาจ ไลบรารีทั้งสองมีความสำคัญต่อการพัฒนา Ethereum และแต่ละไลบรารีมีข้อดีและข้อเสีย สรุปความแตกต่างระหว่างไลบรารี web3.js กับ ethers.js แสดงให้เห็นถึงความสำคัญที่เท่าเทียมกันของทั้งสองไลบรารี

เป็นที่น่าสนใจที่จะทราบว่าคำตอบสำหรับคำถาม "web3 JS หรือ ethers JS นั้นขึ้นอยู่กับความต้องการของคุณ" สามารถเปลี่ยนแปลงได้ เพื่อให้เข้าใจพื้นฐานของการใช้ไลบรารี JavaScript ของ web3 ตัวอย่างเช่น ผู้เริ่มต้นสามารถใช้ web3.js ได้ อย่างไรก็ตาม ethers.js มีคำแนะนำเพิ่มเติมสำหรับการใช้ไลบรารีทันที เช่นเดียวกับ web3.js ที่ซับซ้อนด้วยขนาดเป็นเมกะไบต์ ethers.js รับประกันประสิทธิภาพที่สูงกว่าด้วยขนาดที่เล็กลง คุณสามารถเลือกระหว่าง web3.js และ ethers.js สำหรับโครงการ web3 ของคุณได้ ทั้งนี้ขึ้นอยู่กับความต้องการของคุณ