รอบนี้มาทำ BlockChain Wallet Concept 101 กัน
ความเดิมตอนที่แล้ว https://medium.com/@acceth/%E0%B8%97%E0%B8%94%E0%B8%A5%E0%B8%AD%E0%B8%87%E0%B9%80%E0%B8%A5%E0%B9%88%E0%B8%99-crypto-js-%E0%B8%97%E0%B8%B3-blockchain-101-ae9905ac3091
- รอบนี้มาทำโค๊ดให้เป็น แบบทันสมัยหน่อย NodeJs แบบ ใช้ TypeScript เพื่อทำการแยก Function ของการทำ BlockChain Wallet Concept
เริ่มได้…
1.ไฟส์แรก คือ main.ts
ใน main.ts นี้จะเป็นการ Setup การทำงานของ Node Server เพื่อทำ Route การทำงานต่างๆ ของระบบ รวมทั้งการใช้งาน ของ Route Wallet และ Transaction รวมทั้งการทำงานแบบ peer 2 peer
2 . ไฟส์ blockchain.ts
ในไฟส์ blockchain.ts นี้เหมือนเดิมพระเอกคือ Crypto-Js เพียงแต่รอบนี้เราเปลี่ยนการเขียนจาก NodeJs ธรรมาดามาเขียนแบบ TypeScript รอบนี้เรา Gen Block และ Fixed ค่าของกระเป๋าตัง Wallet ให้ 100 บาท สำหรับคนที่ Initial Block เข้ามาในครั้งแรก แต่มีการเพิ่ม Function การทำงาน การ Validate Chain , Match Block Content, Check Valid Hash และ Function GetAccountBalance
3. ไฟส์ wallet.ts
ไฟส์นี้สำคัญมากกับลุกค้า ในกรณีไปทำจริง เพราะเวลาเรา Initial BlockChain แล้วระบบจะสร้าง file private_key มาเก็บ hash key เพื่อ Map BlockChain Hash Block เข้ากับ private_key ที่เรา Gen ให้ลุกค้าคนนั้นๆ
มาดู Function ใน ไฟส์ wallet.ts กันต่อ
4. มาถึงขั้นตอนการรัน เทสละ สำหรับ BlockChain Wallet Concept 101
$ npm i
$ npm start
5. ทีนี้มาใช้คำสั่ง โชว์ Block ของเราหน่อยสิ
เงินในกระเป๋ามาแว้ว… 100 บาท
6. ไหนมาลองยิง API เช็ค Balance Account หน่อยสิ
7. ทีนี้มาลองเติมเงินเข้า Wallet หน่อนสิ สัก 50 บาท ไปที่ Hash Block ของเรา
$ curl -X POST http://localhost:3001/mineBlock
กลับมาเช็ค Account Balance อีกทีดูสิเงินเข้าไหม
โอเครเงินเข้า กระเป๋าตังละ ฮิฮิ
8. คราวนี้กลับมาเช็ค BlockChain Block Content ของเราสิว่ามี Transaction อะไรเข้ามาบ้างก่อนหน้านี้
$ curl http://localhost:3001/blocks
รองเอามาถอดให้สวยๆ ผ่าน json online สิเพื่อดู Transaction ใน BlockChain ของ Hash Key เรา ว่ามีอะไรบ้าง
Transaction ที่เราทำล่าสุด Index ที่ 3 เติมเงินไป 50 บาท ให้กับ Address Key Hash ของเรา แล้วมี Previous Hash บอกก่อนหน้าด้วยว่าคือ Block ไหน
9. ทีนี้ ยิง API อย่างเดียวไม่พอละ ขี้เกียจนั่ง Run CURL ละทำ Front End VueJs ขึ้นมาเทส หน้าตาของกระเป๋า ง้าวๆ ของเราก็เป็นดังนี้
ไหนลองกดเติมเงินเพิ่มอีกทีสิ 50 บาท
10. ทีนี้พอกดเติมเงินผ่าน Front End VueJs แล้วมาเทสแบบ API ว่า BlockChain ของเรา Chain ไปถึง Hash ไหนแล้ว
โอ้วกดเพิ่มเงินไป 3 รอบรอบละ 50 บาท Hash ก็จะเพิ่มมา 3 Hash เช่นกัน
*** จบละ BlockChain Wallet Concept ***
Part ต่อไปว่าจะทำ Security ย้ายไป GraphQL ต่อการตัดเงินผ่าน Omise เพื่อเติมเงิน (ไว้ว่างก่อนน่ะ!!!)
ย้อนดู BlockChain NodeJs Concept 101 ได้ที่นี่