วิธีการใช้ Wallet ใน Ethers.js
วิธีการสร้าง Wallet ใหม่ และการโหลด Wallet จาก Private Key หรือ Seed Phrase ที่มีอยู่ ด้วยการใช้ Ethers.js - https://docs.ethers.org/v5/
เริ่มจากการติดตั้ง ethers ก่อนเลย (บทความนี้ อ้างอิงจาก ethers.js v5 นะครับ)
วิธีที่ 1 ใช้การ Random ด้วย createRandom()
การสร้าง new Wallet วิธีแรก เป็นการสร้างแบบ Random กรณีที่เราไม่มี Seed Phrase หรือ Private Key เลย (ส่วนมาก เอาไว้สร้างมาเพื่อเทสอะไรเล่นๆ)
ตัวอ็อปเจ็คของ wallet จะมีข้อมูลคือ
หากสังเกต ถ้าเราใช้ console.log เราจะไม่เห็นค่า privateKey และ mnemonic เพราะตัว Wallet เค้า ใช้ function signingKey() กับ _mnemonic() แทน เพื่อป้องกัน leaking (ซึ่งจริงๆ มันก็ยังเห็นแหละ เห็นไหม ฉะนั้น ควรใช้ด้วยความระวังนะครับ)
เราจะได้ทั้ง mnemonic และ privateKey เลย
วิธีที่ 2 สร้างจาก Seed Phrase
จริงๆ ไม่ใช่การสร้าง new Wallet แต่เป็นการ สร้างร instance Wallet จาก Seed Phrase เพื่อจะเข้าถึง Wallet หรือ sign บางอย่าง (อย่าลืม Seed Phrase ห้ามทำหาย ห้ามให้ใครรู้เป็นอันขาด ถ้าใครรู้คำ 12 คำของเรา เค้าก็สามารถเข้าถึง Wallet ของเราได้เลย (ไม่สามารถเปลี่ยน Seed Phrase ได้เหมือนกับเปลี่ยน Password นะ)
วิธีที่ 3 สร้างด้วย Private Key
Private Key เป็น Secret key ที่ห้ามให้ใครรู้ เช่นเดียวกันกับ Seed Phrase แต่ข้อแต่งต่างกันของ Private Key คือ ถ้ามีคนรู้ เค้าจะเข้าถึงได้เฉพาะ Account นั้นๆ (HD Wallet) ไม่สามารถเข้าถึง Account อื่นๆ ที่อยู่ใน Wallet เดียวกัน เช่น สมมติเราใช้ Metamask มีแค่ 1 Seed Phrase แต่เราสามารถ generate account ได้หลาย Account แต่ละ Account ก็จะมี Seed Phrase ต่างกัน
วิธีที่ 4 ใช้ JSON และ Password
วิธีนี้จะใช้ไฟล์ JSON และ Password ของเรา เพื่อสร้าง Wallet โดยมี 2 function คือแบบธรรมดา และแบบ async ครับ (return เป็น Promise ทำให้ต้องใช้ async/await)
ซึ่งวิธีการ generate ตัว JSON เราสร้างจากฟังค์ชั่น encrypt ได้เลย โดย callback function เป็น optional จะเอาไว้แสดง progress ก็ได้นะครับ เพราะการ Encrypt ก็ใช้เวลานิดนึง (300-1000ms) ไม่ได้ instant ทันที
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust