หากคุณกำลังสนใจ Ether (ETH) มากกว่าผู้เล่นคริปโตอื่น ๆ คุณควรใช้เวลาสักครู่เพื่อเข้าใจ Ethereum จากมุมมองทางเทคนิคมากขึ้น โปรโตคอลบล็อกเชนที่เป็นที่รู้จักด้วยชุดเครื่องมือ สัญญาอัจฉริยะ และระบบนิเวศที่สอดคล้องกับโค้ด Ethereum มีการพึ่งพาอย่างมากใน ethers.js — ห้องสมุด Javascript — เพื่อให้วิธีการเน้นผู้พัฒนาของมันมีประสิทธิภาพที่จำเป็น
ในขณะที่ ethers.js ไม่ใช่ไลบรารี JavaScript ต้นฉบับของ Ethereum เท่านั้น แต่มันเป็นทางเลือกที่ดีกว่าสำหรับ DApps ขนาดเล็ก ในคู่มือนี้ เราได้ศึกษาลึกลงไปในด้านของ ethers.js เพื่อช่วยให้คุณเข้าใจแนวคิดเทคนิคนี้
ในคู่มือนี้:
ethers.js เป็นไลบรารี JavaScript — ชุดรหัสที่เขียนไว้ล่วงหน้าที่อัตโนมัติหลายฟังก์ชัน การใช้ไลบรารี JavaScript สำหรับการพัฒนาสามารถลดความพยายามในการเขียนรหัส กระบวนการกลายเป็นเพื่อนบ้านของผู้ใช้มากขึ้น และสำหรับนักพัฒนา DApp ไลบรารีเหล่านี้ช่วยให้ฟังก์ชันพิเศษที่เฉพาะของบล็อกเชนเบื้องต้นเป็นชุดพร้อมใช้งาน
Ethers.js และวงจรการพัฒนา: BeInCrypto
นี่คือ GitHubrepositoryสำหรับห้องสมุด
ก่อนที่เราจะลงลึกใน ethers.js มาดู JavaScript libraries ให้ลึกซึ้งกันก่อน ไลบรารีเหล่านี้เป็นชุดของโค้ด JavaScript ที่เขียนไว้ล่วงหน้า ที่สามารถทำงานอัตโนมัติกับงานทั่วไปบางอย่าง การใช้ไลบรารีเช่น ethers.js สามารถช่วยเร่งกระบวนการสร้าง DApp และยังเร่งความสามารถในการทำงานกับบล็อกเชนอื่น ๆ ได้อีกด้วย
Ethereum ได้รับการพัฒนาเป็นแพลตฟอร์มสำหรับการพัฒนาซอฟต์แวร์แบบไม่มีการกำหนดสมาร์ทคอนแทรคไปDeการใช้งานแอปพลิเคชันทางการเงินไปสู่ DApps การเขียนโค้ดเป็นส่วนสำคัญของนิเวศ Ethereum นั่นคือเหตุผลที่หนึ่งที่ไลบรารี JavaScript ที่ถูกปรับให้เหมาะกับ Ethereum เช่น ethers.js ถูกสร้างขึ้น โดยใช้ไลบรีเหล่านี้ นักพัฒนาสามารถเชื่อมต่อกับเครือข่าย ใช้งานและโต้ตอบกับสมาร์ทคอนแทรค และจัดการได้ง่ายบล็อกเชนข้อมูล
คุณรู้หรือไม่? Ethers.js ไม่ใช่เพียงไลบรารี Javascript ของ Ethereum ที่รู้จักอย่างเดียว อีกหนึ่งไลบรารีที่โดดเด่นคือ Web3.js ซึ่งถูกก่อตั้งโดย Ethereum Foundation Web3.js โด่งดังด้วยคอลเล็กชันแบบเบ็ดเสร็จและได้รับการพิจารณาว่าเหมาะสำหรับ DApps ที่ซับซ้อนมากขึ้น
ตามที่กล่าวมาแล้ว ethers.js เน้นไปที่นักพัฒนาที่มีส่วนร่วมกับบล็อกเชน Ethereum ในเรื่องความสำคัญ ไลบรารีที่พัฒนาโดย Richard Moore และตลาดธุรกิจในชื่อ "Ethers" มีประโยชน์สำหรับงานดังต่อไปนี้:
นิเวศเอทเคอร์นิคโคเซียมและบทบาทที่สามารถเป็นได้: BeInCrypto
นี่คือตัวอย่างรหัสสำหรับดึงยอดคงเหลือปัจจุบันของบัญชี Ethereum อย่างรวดเร็ว มาอ่านรหัสก่อนและเข้าใจว่า ethers.js ทำให้ชีวิตง่ายขึ้น
const { ethers } = require(‘ethers’);
// เชื่อมต่อกับเครือข่าย Ethereum
const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY’);
// ระบุที่อยู่บัญชี
const accountAddress = ‘0xABC123…’;
// เรียกดึงและแสดงยอดเงิน
provider.getBalance(accountAddress).then((balance) => {
// แปลงยอดคงเหลือจาก Wei เป็น Ether const balanceInEther = ethers.utils.formatEther(balance); console.log(`ยอดคงเหลือ: ${balanceInEther} ETH`);
});
ในตัวอย่างนี้ คุณสามารถเห็นได้อย่างชัดเจนว่าคำสั่ง — ethers.providers.JsonRpcProvider — เรียกใช้จุดปลายทาง Infura และ getBalance เรียกดึงยอดคงเหลือ คุณไม่จำเป็นต้องรับมือโดยตรงกับ JSON RPC หรือการเรียกใช้ขั้นตอนระยะไกลของ Ethereum ในกรณีนี้ คุณสามารถคิดถึง ethers.js เป็นตัวแปลที่ทำให้ Ethereum เป็นเรื่องง่ายและเข้าใจได้มากขึ้นสำหรับคุณ
ยังไม่แน่ใจถึงความสำคัญของ ethers.js หรือไม่? นี่คือการเปรียบเทียบอย่างรวดเร็ว
คิดถึง ethers.js เหมือนบัตรห้องสมุดเก่า จำได้ไหมว่าบัตรเหล่านั้นมีดัชนี ที่ช่วยให้คุณค้นหาหนังสือที่ถูกต้องโดยการหาแถวและหมายเลขชั้น? นี่คือเป้าหมายของ ethers.js มันทำให้ Ethereum มีความสามารถอย่างมากมาย โดยอนุญาตให้นักพัฒนาพบว่าสิ่งที่พวกเขาต้องการอย่างแน่นอน
ในระหว่างหลายปีที่ผ่านมา มีการเผยแพร่เวอร์ชัน Ethers.js หลายรุ่น โดยแต่ละรุ่นจะนำเสนอคุณลักษณะใหม่หรือการแก้บั๊ก นอกจากนี้ การเวอร์ชันจะปฏิบัติตามมาตรฐานซีมิแนนติก เช่น v1.2.3 โดยที่ตัวเลขตัวแรกแสดงถึงเวอร์ชันหลัก และตัวเลขที่สองและสามแสดงถึงเวอร์ชันรองและแพทช์ เราจะพิจารณาเฉพาะการอัพเกรดเวอร์ชันหลักเท่านั้นในขณะนี้ — การเปลี่ยนแปลงที่อาจไม่สามารถทำให้ย้อนกลับได้
สถาปัตยกรรมและองค์ประกอบของ Ethers.js: BeInCrypto
คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับแต่ละเวอร์ชันได้โดยการดูที่ Ethers.js’เอกสารเดิม.
“Ethers.js ส่องแสงด้วยความสามารถในการทำงานร่วมกับบล็อกเชนที่ยอดเยี่ยม รองรับ TypeScript แบบเดิม และเครื่องมือในการแก้ปัญหาที่ขั้นสูง มันเป็นไลบรารีที่เล็กกระชับซึ่งสามารถผสมผสานอย่างลื่นไหลในเฟรมเวิร์กยอดนิยม เช่น React, Vue, Angular ฯลฯ”
Redbelly Intern, Builder: X
ก่อนที่คุณจะวางแผนการใช้โอกาสที่ ethers.js เสียก่อนเรื่องสำคัญที่ควรทราบคือ ณ ขั้นตอนใดของการพัฒนา DApp หรือสมาร์ทคอนแทรคที่มันถูกเรียกใช้ นี่คือการแบ่งส่วนโดยรวมอย่างรวดเร็วสำหรับผู้ที่ต้องการทราบและเข้าใจองค์ประกอบเหล่านี้จากเริ่มต้น
Web3.js เหมาะสำหรับมือใหม่และกระชับกว่า ethers.js
Ethers.js, อีกอย่างที่ให้ตัวเลือกมากขึ้นและเป็นเท่วัยใหม่; มันเรียบง่ายน้อยกว่า Web3.js.
degenBRo, นักพัฒนาบล็อกเชนและผู้ก่อตั้งของ Solidity Finance: ที่บอกให้ BeInCrypto
เพื่อเริ่มต้น คุณต้องเปิดคอมพิวเตอร์และติดตั้งสภาพแวดล้อมสำหรับนักพัฒนา ซึ่งรวมถึง Node.js และ Integrated Development Environment โปรดทราบว่า JavaScript 通常ทำงานบนเบราว์เซอร์ แต่ด้วย Node.js สามารถทำงานเช่นเดียวกันบนคอมพิวเตอร์ มันเป็นสภาพแวดล้อมรันไทม์ของ Node.js ที่ติดตั้งไลบรารี JavaScript เช่น ethers.js
สำหรับ IDE ซึ่งนักพัฒนาซอฟต์แวร์ต้องการทดสอบ คุณสามารถพิจารณา VS Code, Sublime Text หรืออะไรก็ตาม
ขั้นตอนถัดไปคือการติดตั้ง Ethers, ไลบรารีที่ใช้เก็บ ethers.js
npm ติดตั้ง ethers
จากนั้นคุณต้องใช้ Ether เพื่อเชื่อมต่อกับ กระเป๋าเงิน Ethereumเนื่องจากการโต้ตอบกับบล็อกเชนจะต้องใช้ขั้นตอนนี้สำหรับการตรวจสอบข้อมูลประจำตัว คุณสามารถใช้ไลบรารี Ethers ที่ติดตั้งไว้สำหรับการนี้ นี่คือคำสั่งตัวอย่าง:
14 นาที 15 มีนาคม 2024 3 วัน ที่ผ่านมา
25 นาที 15 มีนาคม 2024 2 วันที่ผ่านมา
const { ethers } = require(‘ethers’);
// เชื่อมต่อกับMetaMask กระเป๋าเงิน
const provider = new ethers.providers.Web3Provider(window.ethereum);
เมื่อเสร็จสิ้นแล้ว คุณสามารถใช้ IDE เพื่อเขียนโค้ด solidity และสร้างสัญญาสมาร์ทสำหรับ DApps Ethers.js จะถูกใช้ในการ implement เช่นเดียวกัน คุณสามารถทดสอบ DApp หรือสัญญาในระดับท้องถิ่น โดยใช้สภาพแวดล้อมเช่นTruffleและ Hardhat จากนั้นคุณจะติดตั้งสัญญาบนเครือข่าย Ethereum ซึ่งต้องใช้ ethers.js
const contract = new ethers.ContractFactory(abi, bytecode, signer);
const deployedContract = await contract.deploy();
สำหรับ unversed abi, Bytecode, Signer เป็นคำศัพท์ที่จำเป็นสำหรับการพัฒนาสมาร์ทคอนแทรคอย่างราบรื่น Abi หรือ application binary interface เหมือนป้ายชื่อที่ช่วยให้เครือข่ายรู้จักสมาร์ทคอนแทรคของคุณ Bytecode คือเวอร์ชันที่คอมไพล์หรือเวอร์ชันพร้อมใช้งานในเครือข่ายของสมาร์ทคอนแทรคและ signer คือผู้สร้างลายเซ็น
เมื่อสมาร์ทคอนแทรกซ์ถูกใช้งาน คุณจำเป็นต้องสร้างส่วนหน้าหรืออินเตอร์เฟซผู้ใช้ของ DApp สำหรับสิ่งนี้ คุณสามารถใช้ Angular หรือ React คุณยังสามารถรวม Ethers.js ในส่วนหน้าเพื่อให้มั่นใจว่ามันสามารถปฏิสัมพันธ์กับสมาร์ทคอนแทรกซ์ Ethereum นี่คือโค้ดตัวอย่างสำหรับสิ่งเดียวกัน
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());
หลังจากนี้คุณต้องทดสอบ DApp บน testnet เช่น Rinkeby หรือ Ropsten หลังจากที่คุณพอใจคุณสามารถเปิด DApp บน mainnet โปรดสังเกตว่ามีกี่ครั้งตลอดกระบวนการที่คุณต้องปฏิสัมพันธ์กับ Ethers หรือ ethers.js
Ethers.js เป็นไลบรารี Ethereum อย่างครอบคลุม นี่คือบางสิ่งที่ให้บริการที่เป็นพิเศษที่ทำให้ชีวิตของนักพัฒนาง่ายขึ้น:
ผู้ให้บริการ Ethers.js ทำหน้าที่เป็นสะพานระหว่างเครือข่าย Ethereum และ DApp ที่คุณกำลังทำงาน ซึ่งรวมถึงการทำให้การค้นข้อมูลบล็อกเชนง่ายขึ้น และช่วยในการส่งออกธุรกรรม อินฟูร่าเป็นหนึ่งในผู้ให้บริการที่ Ethers.js ใช้
นี่คือรหัสตัวอย่างสำหรับเดียวกัน:
const { ethers } = require(‘ethers’);
// เชื่อมต่อโดยใช้ Infura
const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’ไม่สามารถแปลข้อความ
// ตรวจสอบหมายเลขบล็อกปัจจุบัน
provider.getBlockNumber().then((blockNumber) => {
console.log(“หมายเลขบล็อกปัจจุบัน:”, blockNumber);
});
Ethers.js ช่วยให้คุณจัดการกระเป๋าเงิน ช่วยให้คุณสร้างบัญชีใหม่ นำเข้าบัญชีที่มีอยู่ จัดการกุญแจส่วนตัวอย่างปลอดภัยสำหรับการเซ็นรายการธุรกรรม และอื่น ๆ
ส่วนนี้ของ Ethers.js' มีการสนับสนุนการสร้างวัตถุ ซึ่งทำให้ง่ายต่อการเรียกใช้ฟังก์ชันของสัญญาที่เฉพาะเจาะจงมากขึ้น เหมือนกับวิธีการของ Javascript ตัวธรรมชาติ
Ethers.js และการโต้ตอบกับสมาร์ทคอนแทรค: BeInCrypto
Ethers.js สามารถแปลงชื่อ ENS เป็นที่อยู่ Ethereum และกลับคืนมาได้ เรื่องนี้ช่วยลดความเสี่ยงจากข้อผิดพลาด
นี่คือโค้ดตัวอย่างสำหรับนี้:
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’ไม่มีข้อความที่จะแปล
const ensName = ‘alice.eth’;
provider.resolveName(ensName).then((ที่อยู่) => {
console.log(`${ensName} ถูกแปลงเป็น ${address}`);
});
นอกจากคุณสมบัติที่กล่าวถึงข้างต้น Ethers.js ยังมีจุดเด่นหรือคุณสมบัติต่อไปนี้ที่ช่วยให้นักพัฒนาสามารถเข้าถึง Ethereum โดยตรง
ประโยชน์ของการใช้ Ethers.js มีไม่มาก
สื่อต่างๆ เช่น BeInCrypto สามารถใช้ Ethers.js เพื่อสร้างเครื่องมือ web3 ที่ทันสมัยและมีประสิทธิภาพมาจากพื้นฐาน โดยวิธีนี้จะเป็นไปได้ที่จะใช้คุณสมบัติที่มีพลังงานจากบล็อกเชนหรือ Ethereum เพื่อเพิ่มประสิทธิภาพการใช้งาน นี่คือตัวเลือกที่หนึ่งสามารถพิจารณาได้
Ethers.js สามารถใช้ในการรวมข้อมูลเชิงสถิติของเครือข่ายแบบเรียลไทม์ได้ เช่น ข้อมูลเชิงสถิติของเครือข่ายค่าธรรมเนียมในการทำธุรกรรม, และอื่น ๆ เพื่อให้บทความและทรัพยากรยังคงอยู่เสมอ นี่คือรหัสตัวอย่างสำหรับการดึงหมายเลขบล็อกล่าสุด สำหรับบิตคอยน์ เพื่อติดตามการลดครึ่งเวลาในเวลาจริง
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’;
provider.getBlockNumber().then((blockNumber) => {
console.log(“หมายเลขบล็อกปัจจุบัน:”, blockNumber);// ผสานข้อมูลนี้เข้ากับแพลตฟอร์มการตีพิมพ์ของคุณสำหรับการส่งข้อมูลแบบเรียลไทม์
});
สื่งของพิมพ์สามารถสร้างส่วนของเนื้อหาที่สามารถปฏิสัมพันธ์ได้ ทำให้ผู้ใช้สามารถปฏิสัมพันธ์โดยตรงกับสัญญาฉลากฉลอง ลงคะแนนในโพล หรือแม้กระทั้งเล่นเกมเล็ก ๆ ก็ได้ตามความต้องการ
นี่คือโค้ดตัวอย่างสำหรับการดึงข้อความต้อนรับเฉพาะกิจจากสัญญาอัจฉริยะ:
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contractAddress = ‘0x…’;
const contractABI = [
“ฟังก์ชั่น getGreeting() มองเห็น คืนค่า (สตริง)”
]
const contract = new ethers.Contract(contractAddress, contractABI, provider);
async function displayGreeting() {
const การทักทาย = await contract.getGreeting();document.getElementById(‘greeting’).innerText = การทักทาย;
}
เปิดบัญชีบน KuCoin & รับโบนัสที่รับรองได้สูงสุด 700 USDT
ตัวอย่างจริงๆ ของวิธีการใช้ Ethers.js:
สื่อต่างๆ cũngสามารถพิจารณาในการเผยแพร่แบบกระจาย โดยที่ส่วนส่วนหนึ่งของบทความถูกเผยแพร่บนเครือข่ายบล็อกเชน ซึ่งสามารถช่วยในการต้านการเซ็นเซอร์และความสมบูรณ์ของเนื้อหา
นี่คือรหัสตัวอย่างที่แฮชบทความถูกเก็บออนไลน์เป็นหลักฐานในการเผยแพร่
const { ethers } = require('ethers');
const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);
const contentHash = ethers.utils.id(“เนื้อหาบทความที่นี่”);
const tx = await wallet.sendTransaction({
to: ‘0xSomeStorageContractAddress’,data: contentHash // ถ้าสมมติว่าสัญญายอมรับและเก็บข้อมูลนี้
});
console.log(“หมายเลขธุรกรรม (พิสูจน์การเผยแพร่):”, tx.hash);
นี่เป็นแค่บางส่วนของกรณีการใช้สำหรับสื่อพิมพ์ แต่ยังมีสายงานอื่นที่สามารถใช้พลังงานของ ethers.js ได้ ซึ่งรวมถึง:
และอื่น ๆ
นอกจากจะมีประโยชน์ในDeFi, NFT และโครงการเกมมิ่ง มี DApps ที่มีอยู่บางอย่างที่รองรับการใช้งาน Ethers.js ดังต่อไปนี้:
ทำลายนิทานของ Ether.js บางเรื่อง:
การใช้ Ethers.js มาพร้อมกับชุดคำสั่งที่สมบูรณ์ความปลอดภัยคำนึงถึง นี่คือสิ่งที่ควรปฏิบัติตามบางอย่าง
นี่คือตัวอย่างของวิธีการทำงาน
// รหัสปลอมสำหรับการจัดกลุ่มการเรียกใช้สัญญาด้วย Ethers.js (ตัวอย่างแนวคิด)
const contract = new ethers.Contract(address, abi, provider);
const [value1, value2, value3] = await Promise.all([
contract.viewFunction1(),contract.viewFunction2(),contract.viewFunction3()
]);
สนับสนุน
ตามที่แสดงในคู่มือนี้ Ethers.js เป็นเครื่องมือหลากหลาย ในขณะที่เราได้มองซะเร็ว ๆ ในความสามารถของมัน วิธีที่ดีที่สุดในการเข้าใจ Ethers.js อย่างสมบูรณ์คือการลงลึกในโลกของสมาร์ทคอนแทรค จาวาสคริปต์ IDEs DApps และอื่น ๆ นอกจากนี้ การเข้าร่วมชุมชน Ethereum และ Ethers ก็มีประโยชน์
นักพัฒนาสามารถใช้เหตุการณ์ Ethers.js ได้อย่างไร?
Ethers.js มีการให้บริการสิ่งจำเป็นหลักอะไรบ้าง?
ความเชื่อมโยงระหว่าง Ethers.js และ Web3.js คืออะไร?
หากคุณกำลังสนใจ Ether (ETH) มากกว่าผู้เล่นคริปโตอื่น ๆ คุณควรใช้เวลาสักครู่เพื่อเข้าใจ Ethereum จากมุมมองทางเทคนิคมากขึ้น โปรโตคอลบล็อกเชนที่เป็นที่รู้จักด้วยชุดเครื่องมือ สัญญาอัจฉริยะ และระบบนิเวศที่สอดคล้องกับโค้ด Ethereum มีการพึ่งพาอย่างมากใน ethers.js — ห้องสมุด Javascript — เพื่อให้วิธีการเน้นผู้พัฒนาของมันมีประสิทธิภาพที่จำเป็น
ในขณะที่ ethers.js ไม่ใช่ไลบรารี JavaScript ต้นฉบับของ Ethereum เท่านั้น แต่มันเป็นทางเลือกที่ดีกว่าสำหรับ DApps ขนาดเล็ก ในคู่มือนี้ เราได้ศึกษาลึกลงไปในด้านของ ethers.js เพื่อช่วยให้คุณเข้าใจแนวคิดเทคนิคนี้
ในคู่มือนี้:
ethers.js เป็นไลบรารี JavaScript — ชุดรหัสที่เขียนไว้ล่วงหน้าที่อัตโนมัติหลายฟังก์ชัน การใช้ไลบรารี JavaScript สำหรับการพัฒนาสามารถลดความพยายามในการเขียนรหัส กระบวนการกลายเป็นเพื่อนบ้านของผู้ใช้มากขึ้น และสำหรับนักพัฒนา DApp ไลบรารีเหล่านี้ช่วยให้ฟังก์ชันพิเศษที่เฉพาะของบล็อกเชนเบื้องต้นเป็นชุดพร้อมใช้งาน
Ethers.js และวงจรการพัฒนา: BeInCrypto
นี่คือ GitHubrepositoryสำหรับห้องสมุด
ก่อนที่เราจะลงลึกใน ethers.js มาดู JavaScript libraries ให้ลึกซึ้งกันก่อน ไลบรารีเหล่านี้เป็นชุดของโค้ด JavaScript ที่เขียนไว้ล่วงหน้า ที่สามารถทำงานอัตโนมัติกับงานทั่วไปบางอย่าง การใช้ไลบรารีเช่น ethers.js สามารถช่วยเร่งกระบวนการสร้าง DApp และยังเร่งความสามารถในการทำงานกับบล็อกเชนอื่น ๆ ได้อีกด้วย
Ethereum ได้รับการพัฒนาเป็นแพลตฟอร์มสำหรับการพัฒนาซอฟต์แวร์แบบไม่มีการกำหนดสมาร์ทคอนแทรคไปDeการใช้งานแอปพลิเคชันทางการเงินไปสู่ DApps การเขียนโค้ดเป็นส่วนสำคัญของนิเวศ Ethereum นั่นคือเหตุผลที่หนึ่งที่ไลบรารี JavaScript ที่ถูกปรับให้เหมาะกับ Ethereum เช่น ethers.js ถูกสร้างขึ้น โดยใช้ไลบรีเหล่านี้ นักพัฒนาสามารถเชื่อมต่อกับเครือข่าย ใช้งานและโต้ตอบกับสมาร์ทคอนแทรค และจัดการได้ง่ายบล็อกเชนข้อมูล
คุณรู้หรือไม่? Ethers.js ไม่ใช่เพียงไลบรารี Javascript ของ Ethereum ที่รู้จักอย่างเดียว อีกหนึ่งไลบรารีที่โดดเด่นคือ Web3.js ซึ่งถูกก่อตั้งโดย Ethereum Foundation Web3.js โด่งดังด้วยคอลเล็กชันแบบเบ็ดเสร็จและได้รับการพิจารณาว่าเหมาะสำหรับ DApps ที่ซับซ้อนมากขึ้น
ตามที่กล่าวมาแล้ว ethers.js เน้นไปที่นักพัฒนาที่มีส่วนร่วมกับบล็อกเชน Ethereum ในเรื่องความสำคัญ ไลบรารีที่พัฒนาโดย Richard Moore และตลาดธุรกิจในชื่อ "Ethers" มีประโยชน์สำหรับงานดังต่อไปนี้:
นิเวศเอทเคอร์นิคโคเซียมและบทบาทที่สามารถเป็นได้: BeInCrypto
นี่คือตัวอย่างรหัสสำหรับดึงยอดคงเหลือปัจจุบันของบัญชี Ethereum อย่างรวดเร็ว มาอ่านรหัสก่อนและเข้าใจว่า ethers.js ทำให้ชีวิตง่ายขึ้น
const { ethers } = require(‘ethers’);
// เชื่อมต่อกับเครือข่าย Ethereum
const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY’);
// ระบุที่อยู่บัญชี
const accountAddress = ‘0xABC123…’;
// เรียกดึงและแสดงยอดเงิน
provider.getBalance(accountAddress).then((balance) => {
// แปลงยอดคงเหลือจาก Wei เป็น Ether const balanceInEther = ethers.utils.formatEther(balance); console.log(`ยอดคงเหลือ: ${balanceInEther} ETH`);
});
ในตัวอย่างนี้ คุณสามารถเห็นได้อย่างชัดเจนว่าคำสั่ง — ethers.providers.JsonRpcProvider — เรียกใช้จุดปลายทาง Infura และ getBalance เรียกดึงยอดคงเหลือ คุณไม่จำเป็นต้องรับมือโดยตรงกับ JSON RPC หรือการเรียกใช้ขั้นตอนระยะไกลของ Ethereum ในกรณีนี้ คุณสามารถคิดถึง ethers.js เป็นตัวแปลที่ทำให้ Ethereum เป็นเรื่องง่ายและเข้าใจได้มากขึ้นสำหรับคุณ
ยังไม่แน่ใจถึงความสำคัญของ ethers.js หรือไม่? นี่คือการเปรียบเทียบอย่างรวดเร็ว
คิดถึง ethers.js เหมือนบัตรห้องสมุดเก่า จำได้ไหมว่าบัตรเหล่านั้นมีดัชนี ที่ช่วยให้คุณค้นหาหนังสือที่ถูกต้องโดยการหาแถวและหมายเลขชั้น? นี่คือเป้าหมายของ ethers.js มันทำให้ Ethereum มีความสามารถอย่างมากมาย โดยอนุญาตให้นักพัฒนาพบว่าสิ่งที่พวกเขาต้องการอย่างแน่นอน
ในระหว่างหลายปีที่ผ่านมา มีการเผยแพร่เวอร์ชัน Ethers.js หลายรุ่น โดยแต่ละรุ่นจะนำเสนอคุณลักษณะใหม่หรือการแก้บั๊ก นอกจากนี้ การเวอร์ชันจะปฏิบัติตามมาตรฐานซีมิแนนติก เช่น v1.2.3 โดยที่ตัวเลขตัวแรกแสดงถึงเวอร์ชันหลัก และตัวเลขที่สองและสามแสดงถึงเวอร์ชันรองและแพทช์ เราจะพิจารณาเฉพาะการอัพเกรดเวอร์ชันหลักเท่านั้นในขณะนี้ — การเปลี่ยนแปลงที่อาจไม่สามารถทำให้ย้อนกลับได้
สถาปัตยกรรมและองค์ประกอบของ Ethers.js: BeInCrypto
คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับแต่ละเวอร์ชันได้โดยการดูที่ Ethers.js’เอกสารเดิม.
“Ethers.js ส่องแสงด้วยความสามารถในการทำงานร่วมกับบล็อกเชนที่ยอดเยี่ยม รองรับ TypeScript แบบเดิม และเครื่องมือในการแก้ปัญหาที่ขั้นสูง มันเป็นไลบรารีที่เล็กกระชับซึ่งสามารถผสมผสานอย่างลื่นไหลในเฟรมเวิร์กยอดนิยม เช่น React, Vue, Angular ฯลฯ”
Redbelly Intern, Builder: X
ก่อนที่คุณจะวางแผนการใช้โอกาสที่ ethers.js เสียก่อนเรื่องสำคัญที่ควรทราบคือ ณ ขั้นตอนใดของการพัฒนา DApp หรือสมาร์ทคอนแทรคที่มันถูกเรียกใช้ นี่คือการแบ่งส่วนโดยรวมอย่างรวดเร็วสำหรับผู้ที่ต้องการทราบและเข้าใจองค์ประกอบเหล่านี้จากเริ่มต้น
Web3.js เหมาะสำหรับมือใหม่และกระชับกว่า ethers.js
Ethers.js, อีกอย่างที่ให้ตัวเลือกมากขึ้นและเป็นเท่วัยใหม่; มันเรียบง่ายน้อยกว่า Web3.js.
degenBRo, นักพัฒนาบล็อกเชนและผู้ก่อตั้งของ Solidity Finance: ที่บอกให้ BeInCrypto
เพื่อเริ่มต้น คุณต้องเปิดคอมพิวเตอร์และติดตั้งสภาพแวดล้อมสำหรับนักพัฒนา ซึ่งรวมถึง Node.js และ Integrated Development Environment โปรดทราบว่า JavaScript 通常ทำงานบนเบราว์เซอร์ แต่ด้วย Node.js สามารถทำงานเช่นเดียวกันบนคอมพิวเตอร์ มันเป็นสภาพแวดล้อมรันไทม์ของ Node.js ที่ติดตั้งไลบรารี JavaScript เช่น ethers.js
สำหรับ IDE ซึ่งนักพัฒนาซอฟต์แวร์ต้องการทดสอบ คุณสามารถพิจารณา VS Code, Sublime Text หรืออะไรก็ตาม
ขั้นตอนถัดไปคือการติดตั้ง Ethers, ไลบรารีที่ใช้เก็บ ethers.js
npm ติดตั้ง ethers
จากนั้นคุณต้องใช้ Ether เพื่อเชื่อมต่อกับ กระเป๋าเงิน Ethereumเนื่องจากการโต้ตอบกับบล็อกเชนจะต้องใช้ขั้นตอนนี้สำหรับการตรวจสอบข้อมูลประจำตัว คุณสามารถใช้ไลบรารี Ethers ที่ติดตั้งไว้สำหรับการนี้ นี่คือคำสั่งตัวอย่าง:
14 นาที 15 มีนาคม 2024 3 วัน ที่ผ่านมา
25 นาที 15 มีนาคม 2024 2 วันที่ผ่านมา
const { ethers } = require(‘ethers’);
// เชื่อมต่อกับMetaMask กระเป๋าเงิน
const provider = new ethers.providers.Web3Provider(window.ethereum);
เมื่อเสร็จสิ้นแล้ว คุณสามารถใช้ IDE เพื่อเขียนโค้ด solidity และสร้างสัญญาสมาร์ทสำหรับ DApps Ethers.js จะถูกใช้ในการ implement เช่นเดียวกัน คุณสามารถทดสอบ DApp หรือสัญญาในระดับท้องถิ่น โดยใช้สภาพแวดล้อมเช่นTruffleและ Hardhat จากนั้นคุณจะติดตั้งสัญญาบนเครือข่าย Ethereum ซึ่งต้องใช้ ethers.js
const contract = new ethers.ContractFactory(abi, bytecode, signer);
const deployedContract = await contract.deploy();
สำหรับ unversed abi, Bytecode, Signer เป็นคำศัพท์ที่จำเป็นสำหรับการพัฒนาสมาร์ทคอนแทรคอย่างราบรื่น Abi หรือ application binary interface เหมือนป้ายชื่อที่ช่วยให้เครือข่ายรู้จักสมาร์ทคอนแทรคของคุณ Bytecode คือเวอร์ชันที่คอมไพล์หรือเวอร์ชันพร้อมใช้งานในเครือข่ายของสมาร์ทคอนแทรคและ signer คือผู้สร้างลายเซ็น
เมื่อสมาร์ทคอนแทรกซ์ถูกใช้งาน คุณจำเป็นต้องสร้างส่วนหน้าหรืออินเตอร์เฟซผู้ใช้ของ DApp สำหรับสิ่งนี้ คุณสามารถใช้ Angular หรือ React คุณยังสามารถรวม Ethers.js ในส่วนหน้าเพื่อให้มั่นใจว่ามันสามารถปฏิสัมพันธ์กับสมาร์ทคอนแทรกซ์ Ethereum นี่คือโค้ดตัวอย่างสำหรับสิ่งเดียวกัน
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());
หลังจากนี้คุณต้องทดสอบ DApp บน testnet เช่น Rinkeby หรือ Ropsten หลังจากที่คุณพอใจคุณสามารถเปิด DApp บน mainnet โปรดสังเกตว่ามีกี่ครั้งตลอดกระบวนการที่คุณต้องปฏิสัมพันธ์กับ Ethers หรือ ethers.js
Ethers.js เป็นไลบรารี Ethereum อย่างครอบคลุม นี่คือบางสิ่งที่ให้บริการที่เป็นพิเศษที่ทำให้ชีวิตของนักพัฒนาง่ายขึ้น:
ผู้ให้บริการ Ethers.js ทำหน้าที่เป็นสะพานระหว่างเครือข่าย Ethereum และ DApp ที่คุณกำลังทำงาน ซึ่งรวมถึงการทำให้การค้นข้อมูลบล็อกเชนง่ายขึ้น และช่วยในการส่งออกธุรกรรม อินฟูร่าเป็นหนึ่งในผู้ให้บริการที่ Ethers.js ใช้
นี่คือรหัสตัวอย่างสำหรับเดียวกัน:
const { ethers } = require(‘ethers’);
// เชื่อมต่อโดยใช้ Infura
const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’ไม่สามารถแปลข้อความ
// ตรวจสอบหมายเลขบล็อกปัจจุบัน
provider.getBlockNumber().then((blockNumber) => {
console.log(“หมายเลขบล็อกปัจจุบัน:”, blockNumber);
});
Ethers.js ช่วยให้คุณจัดการกระเป๋าเงิน ช่วยให้คุณสร้างบัญชีใหม่ นำเข้าบัญชีที่มีอยู่ จัดการกุญแจส่วนตัวอย่างปลอดภัยสำหรับการเซ็นรายการธุรกรรม และอื่น ๆ
ส่วนนี้ของ Ethers.js' มีการสนับสนุนการสร้างวัตถุ ซึ่งทำให้ง่ายต่อการเรียกใช้ฟังก์ชันของสัญญาที่เฉพาะเจาะจงมากขึ้น เหมือนกับวิธีการของ Javascript ตัวธรรมชาติ
Ethers.js และการโต้ตอบกับสมาร์ทคอนแทรค: BeInCrypto
Ethers.js สามารถแปลงชื่อ ENS เป็นที่อยู่ Ethereum และกลับคืนมาได้ เรื่องนี้ช่วยลดความเสี่ยงจากข้อผิดพลาด
นี่คือโค้ดตัวอย่างสำหรับนี้:
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’ไม่มีข้อความที่จะแปล
const ensName = ‘alice.eth’;
provider.resolveName(ensName).then((ที่อยู่) => {
console.log(`${ensName} ถูกแปลงเป็น ${address}`);
});
นอกจากคุณสมบัติที่กล่าวถึงข้างต้น Ethers.js ยังมีจุดเด่นหรือคุณสมบัติต่อไปนี้ที่ช่วยให้นักพัฒนาสามารถเข้าถึง Ethereum โดยตรง
ประโยชน์ของการใช้ Ethers.js มีไม่มาก
สื่อต่างๆ เช่น BeInCrypto สามารถใช้ Ethers.js เพื่อสร้างเครื่องมือ web3 ที่ทันสมัยและมีประสิทธิภาพมาจากพื้นฐาน โดยวิธีนี้จะเป็นไปได้ที่จะใช้คุณสมบัติที่มีพลังงานจากบล็อกเชนหรือ Ethereum เพื่อเพิ่มประสิทธิภาพการใช้งาน นี่คือตัวเลือกที่หนึ่งสามารถพิจารณาได้
Ethers.js สามารถใช้ในการรวมข้อมูลเชิงสถิติของเครือข่ายแบบเรียลไทม์ได้ เช่น ข้อมูลเชิงสถิติของเครือข่ายค่าธรรมเนียมในการทำธุรกรรม, และอื่น ๆ เพื่อให้บทความและทรัพยากรยังคงอยู่เสมอ นี่คือรหัสตัวอย่างสำหรับการดึงหมายเลขบล็อกล่าสุด สำหรับบิตคอยน์ เพื่อติดตามการลดครึ่งเวลาในเวลาจริง
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’;
provider.getBlockNumber().then((blockNumber) => {
console.log(“หมายเลขบล็อกปัจจุบัน:”, blockNumber);// ผสานข้อมูลนี้เข้ากับแพลตฟอร์มการตีพิมพ์ของคุณสำหรับการส่งข้อมูลแบบเรียลไทม์
});
สื่งของพิมพ์สามารถสร้างส่วนของเนื้อหาที่สามารถปฏิสัมพันธ์ได้ ทำให้ผู้ใช้สามารถปฏิสัมพันธ์โดยตรงกับสัญญาฉลากฉลอง ลงคะแนนในโพล หรือแม้กระทั้งเล่นเกมเล็ก ๆ ก็ได้ตามความต้องการ
นี่คือโค้ดตัวอย่างสำหรับการดึงข้อความต้อนรับเฉพาะกิจจากสัญญาอัจฉริยะ:
const { ethers } = require(‘ethers’);
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contractAddress = ‘0x…’;
const contractABI = [
“ฟังก์ชั่น getGreeting() มองเห็น คืนค่า (สตริง)”
]
const contract = new ethers.Contract(contractAddress, contractABI, provider);
async function displayGreeting() {
const การทักทาย = await contract.getGreeting();document.getElementById(‘greeting’).innerText = การทักทาย;
}
เปิดบัญชีบน KuCoin & รับโบนัสที่รับรองได้สูงสุด 700 USDT
ตัวอย่างจริงๆ ของวิธีการใช้ Ethers.js:
สื่อต่างๆ cũngสามารถพิจารณาในการเผยแพร่แบบกระจาย โดยที่ส่วนส่วนหนึ่งของบทความถูกเผยแพร่บนเครือข่ายบล็อกเชน ซึ่งสามารถช่วยในการต้านการเซ็นเซอร์และความสมบูรณ์ของเนื้อหา
นี่คือรหัสตัวอย่างที่แฮชบทความถูกเก็บออนไลน์เป็นหลักฐานในการเผยแพร่
const { ethers } = require('ethers');
const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);
const contentHash = ethers.utils.id(“เนื้อหาบทความที่นี่”);
const tx = await wallet.sendTransaction({
to: ‘0xSomeStorageContractAddress’,data: contentHash // ถ้าสมมติว่าสัญญายอมรับและเก็บข้อมูลนี้
});
console.log(“หมายเลขธุรกรรม (พิสูจน์การเผยแพร่):”, tx.hash);
นี่เป็นแค่บางส่วนของกรณีการใช้สำหรับสื่อพิมพ์ แต่ยังมีสายงานอื่นที่สามารถใช้พลังงานของ ethers.js ได้ ซึ่งรวมถึง:
และอื่น ๆ
นอกจากจะมีประโยชน์ในDeFi, NFT และโครงการเกมมิ่ง มี DApps ที่มีอยู่บางอย่างที่รองรับการใช้งาน Ethers.js ดังต่อไปนี้:
ทำลายนิทานของ Ether.js บางเรื่อง:
การใช้ Ethers.js มาพร้อมกับชุดคำสั่งที่สมบูรณ์ความปลอดภัยคำนึงถึง นี่คือสิ่งที่ควรปฏิบัติตามบางอย่าง
นี่คือตัวอย่างของวิธีการทำงาน
// รหัสปลอมสำหรับการจัดกลุ่มการเรียกใช้สัญญาด้วย Ethers.js (ตัวอย่างแนวคิด)
const contract = new ethers.Contract(address, abi, provider);
const [value1, value2, value3] = await Promise.all([
contract.viewFunction1(),contract.viewFunction2(),contract.viewFunction3()
]);
สนับสนุน
ตามที่แสดงในคู่มือนี้ Ethers.js เป็นเครื่องมือหลากหลาย ในขณะที่เราได้มองซะเร็ว ๆ ในความสามารถของมัน วิธีที่ดีที่สุดในการเข้าใจ Ethers.js อย่างสมบูรณ์คือการลงลึกในโลกของสมาร์ทคอนแทรค จาวาสคริปต์ IDEs DApps และอื่น ๆ นอกจากนี้ การเข้าร่วมชุมชน Ethereum และ Ethers ก็มีประโยชน์
นักพัฒนาสามารถใช้เหตุการณ์ Ethers.js ได้อย่างไร?
Ethers.js มีการให้บริการสิ่งจำเป็นหลักอะไรบ้าง?
ความเชื่อมโยงระหว่าง Ethers.js และ Web3.js คืออะไร?