ถ้าในระบบธนาคาร การที่เราจะทำธุรกรรมการเงินได้เราจะต้องเปิดบัญชีธนาคาร ในขณะที่ Blockchain การที่เราจะเริ่มจับจ่ายซื้อ Crypto ได้ เราก็จะต้องมีสิ่งที่เรียกว่า Wallet เช่นกัน โดยก่อนจะเริ่มเข้าสู่เนื้อหาหลัก ต้องมาอธิบายก่อนว่าหัวข้อที่จะพูดถึงในวันนี้ “How to start build blockchain wallet” มันคือหัวข้ออะไรกันแน่น้อ
aka สอนวิธีเริ่มสร้าง metamask (แบบ web wallet) ในมุมมองของ PM จะมาสอนสร้างบัญชี wallet metamask หรือ coinbase หรือ trustwallet อะไรมันซ้ำไปแล้ว แต่เราจะมาสอนคุณเริ่มทำ wallet เป็นของตัวเองเลยต่างหาก ซึ่งในที่นี้เราไม่ได้จะมาสอนเขียนโค้ดหรือ smart contract หรือมาเล่าว่าเบื้องหลังของ metamask ทำงานยังไง แต่จะพาไปดูว่า การที่คุณจะเริ่มสร้าง web wallet ได้ คุณต้องไปดูหรือเข้าใจอะไรมาบ้าง ก่อนที่คุณเริ่ม dev หรือหา resource มา dev ให้คุณจริง
ปล. ทั้งหมดนี้เป็นประสบการณ์การทำงานที่ได้มาจริงเมื่อประมาณ 2 ปีก่อน ซึ่งอาจจะไม่ถูกหลักการหรือมีข้อผิดพลาดประการใด ขออภัยมา ณ ที่นี้
ความรู้เรื่องแรกที่ต้องรู้คือเรื่อง Wallet Type หรือประเภทของ Wallet ว่าในปัจจุบันมี Wallet กี่ประเภท แต่ละประเภทคืออะไร มีข้อดีข้อเสียอะไร เพื่อนำไปใช้ตัดสินใจว่าจะทำ Cold หรือ Hot Wallet (ส่วนใหญ่ก็จะเป็น Hot wallet หรือ wallet ที่ต้องใช้อินเตอร์เน็ต) แล้วถ้าเลือกได้แล้วจะทำบนแพลตฟอร์มไหน Mobile App, Web App, Chrome Extension หรือ Desktop ซึ่งสามารถเข้าไปอ่านและศึกษาเพิ่มเติมได้ตาม Link ที่แปะให้ หรือ สามารถ search google หาเพิ่มเติมได้เลย
อีกทั้งยังต้องดูว่าจะทำเป็นระบบ Decentralize หรือ Centralize ซึ่งในกรณีที่เป็น Centralize หรือ Custodial Wallet อาจต้องคำนึงถึงเรื่องกฎหมายของแต่ละประเทศ และความปลอดภัยในการเก็บข้อมูลลูกค้าเพิ่มเติมอีก นอกจากนี้ยังต้องคำนึงถึงว่าในอนาคตจะมีการขยายไปแพลตฟอร์มอื่น ๆ มั้ย เช่น ตอนแรกเริ่มจากเป็น Web App ต่อไปจะขยายไปทำ Chrome Extension และ Mobile App ในภายหลัง ก็ควรจะเอามาคิดเป็น Factor หนึ่งตอนดีไซน์ระบบด้วย ดังนั้นการที่จะเริ่มโปรเจคได้ก็ต้องรู้ก่อนว่าเราจะทำ wallet ประเภทอะไร เพราะแต่ละประเภทก็จะมีลักษณะแตกต่างกัน ทั้งในแง่ของ Stack การใช้งาน การดีไซน์ Structure การดีไซน์ UI/UX ไปจนถึงข้อจำกัดต่าง ๆ ที่ไม่เหมือนกัน ซึ่งจะส่งผลถึงการวางแผนงานและ resource ของโปรเจคด้วย
เรื่องสำคัญที่สุดที่ต้องรู้เมื่อคุณจะทำ wallet คือต้องเข้าใจก่อนว่า wallet ทำงานยังไง ก่อนอื่นเลยคุณอาจจะต้องเข้าใจ Keyword บางอย่างที่เกี่ยวกับ Blockchain Wallet ก่อน เช่น
แต่ใด ๆ ก็ตาม ส่วนตัวตอนพยายามทำความเข้าใจการทำงานของ Wallet วิธีที่ชอบที่สุดไม่ใช่การฟังยูทูปหรืออ่านบทความ แต่เป็นการนั่งอ่านโค้ดของ Wallet ที่เขาเปิด Public ไว้ (ปล. พื้นฐานเคยเขียนโค้ดมาก่อนนะ) ซึ่งอาจจะใช้เวลาหน่อย แต่ช่วยได้มาก ๆ โดยแนะนำให้อ่าน GitHub ของ Solllet และ Metamask ที่จะทำให้เราเข้าใจการทำงานของ Wallet ได้ดีขึ้น (รวมถึงเป็นการไป survey structure และการทำงานของแต่ละฟังก์ชันของ Wallet ดังกล่าวอีกด้วย)
และตัวช่วยในการทำการทดสอบความเข้าใจเรื่อง mnemonic, private key, public key หรือ address และ path ต่าง ๆ ก็จะใช้ Mnemonic Code Converter (ตามลิ้งค์ล่าง) ช่วยทดสอบว่า wallet ที่เราสร้างขึ้นได้สร้างมาถูกต้องแล้วหรือไม่ (ตอนนั้นเลือกใช้มาตรฐาน BIP39 ในการสร้าง seed phrase)
ซึ่งการเข้าใจการทำงานของ Wallet ก็จะทำให้คุณสามารถออกแบบ Structure ออกมาได้อย่างถูกต้องและเหมาะสมกับความเป็น Blockchain และฟังก์ชันที่จะเป็น
ถ้าเราอยากจะทำ wallet สิ่งที่ขาดไม่ได้เลยก็คือข้อมูลจาก Blockchain ว่า wallet นี้มี crypto อะไรบ้าง จำนวนเท่าไหร่ Transaction ล่าสุดคืออะไร แสดงว่าเราต้องเขียน solidity เพื่อไปดึงข้อมูลจาก blockchain เองเลยหรอ? ไม่ โลกนี้ไม่ได้เถื่อนกันขนาดนั้น สำหรับสาย web / app dev ถ้าฟังก์ชันที่เราจะทำเป็นฟังก์ชันพื้นฐานที่ไม่ซับซ้อน เรามีผู้ให้บริการ API สำหรับดึงข้อมูลจาก blockchain อยู่และส่วนใหญ่ฟรี! เราสามารถไปศึกษาดูได้ว่า Chain ที่เราเลือกมีผู้ให้บริการเจ้าไหนบ้าง สอดคล้องกับฟังก์ชันที่เราต้องการทำมั้ย API ที่ทางผู้ให้บริการมีให้มีอะไรบ้าง เชื่อมต่ออย่างไร ก่อนที่จะเอาไปเป็นพื้นฐานสำหรับ modify ฟังก์ชันของเราในอนาคต สำหรับโปรเจคที่โฟกัสที่ BSC20 (Binance Smart Chain) และ ERC20 (Ethereum) เบื้องต้นตัวที่แนะนำให้เริ่มศึกษาคือเริ่มจาก API ของ Binance ในกรณีที่ใช้ BSC และ API ของ Web3 และ Etherscan ในกรณีที่ใช้ ERC20 ซึ่งถ้าใครศึกษามาบ้างจะรู้ว่า BSC20 จะมี Blockchain Structure เหมือนกับ ERC20 เลย 555555
นอกจาก API ดึงข้อมูลจาก Blockchain แล้ว ยังมี API ราคาอีกตัวที่สำคัญ (API ราคา เป็น API ที่จะช่วยเราดึงราคาและสถิติราคาของ crypto) ในกรณีที่มีฟังก์ชันที่เกี่ยวข้องกับการแสดงราคาปัจจุบันหรือเปรียบเทียบกับเงิน ซึ่งตัวพื้นฐานที่เคยใช้จะเป็น API ของ CoinMarketCap และ CoinGecko แต่อันนี้จะมีค่าใช้จ่ายด้วย ก็เอาไว้เป็นหนึ่งตัวเลือกไว้พิจารณาได้
สามารถเข้าไปลองดูผู้ให้บริการ API อื่น ๆ ได้ใน <https://medium.com/coinmonks/top-10-blockchain-data-apis-indexed-data-provider-23efd92d2e79> หรือ search google ศึกษาข้อมูลเพิ่มเติม ซึ่งการที่เราเข้าไปศึกษาเรื่อง API จะทำให้เราช่วยประเมิน Scope เวลาและฟังก์ชันว่าทำอะไรได้บ้าง ต้องทำอะไรเพิ่มบ้าง ต้องใช้เวลาเท่าไหร่ได้อีกด้วย
แน่นอนว่าต้องศึกษา Wallet คู่แข่งที่มีอยู่แล้วในตลาดว่ามีฟังก์ชันอะไรบ้าง ทำงานอย่างไร UX เป็นยังไงบ้าง มีจุดแข็งหรือจุดอ่อน อย่างไร ซึ่งอย่างตอนศึกษาก็เลือกศึกษาจาก Wallet ที่เคยได้ยินชื่อ ก่อนจะเจาะกลุ่มที่ใกล้เคียงกับ Wallet เราต่อไป ตัวอย่าง Wallet เช่น
💡 Coinbase
💡 Metamask
💡 Solllet
💡 Binance
💡 Phantom
💡 Rainbow
และอื่น ๆ ซึ่งการศึกษา wallet ต่าง ๆ ก็ทำให้เราได้เห็น trend และจุดแข็งจุดอ่อนเพื่อเอาไปเป็นจุดเด่นของ Wallet ของเราได้
หลังจากศึกษาข้อมูลต่าง ๆ ตั้งแต่ประเภท wallet เรื่องการทำงาน wallet ไปจนถึงการศึกษาคู่แข่งในตลาด คุณก็พร้อมแล้วที่จะเริ่มวางแผนสร้าง wallet ในฝันของคุณ อย่าลืมว่าบทความนี้เป็นเพียง Guideline จุดเริ่มต้นจุดเล็ก ๆ เท่านั้น เทคโนโลยีปัจจุบันถูกพัฒนาขึ้นอย่างรวดเร็ว หากจะทำให้ wallet คุณดีเยี่ยมและไม่เหมือนใคร ก็ต้องศึกษาข้อมูลใหม่ ๆ และอัพเดตข่าวสารอย่างเป็นประจำ เป็นกำลังใจให้ทุกคน!