Facebook Libra on Windows
เนื่องจาก digital currency เริ่มเข้ามามีบทบาทในบ้านเรามากขึ้นเรื่อยๆ เมื่อวันที่ 7 ก.ค. 2562 ที่ผ่านมาคุณสิริธิดา พนมวัน ณ อยุธยา ผู้ช่วยผู้ว่าการสายนโยบายระบบการชำระเงินและเทคโนโลยีทางการเงิน ออกข่าวว่าทางธนาคารแห่งประเทศไทยได้จัดทีมสำหรับเรียนรู้ Facebook's digital currency เพื่อประกอบการตัดสินใจกำหนดนโยบาย หลังจาก SCB ประกาศว่าจะนำ ripple มาใช้ไม่นาน มันจึงไม่ใช่เรื่องในความฝันอีกแล้วล่ะครับที่ประเทศไทยจะมี digital currency โดย block chain technology
เพื่อติดตาม technology กันเรามาทดลองใช้ Facebook libra บน windows กันครับ ต้องบอกก่อนว่า libra นั้นให้นักพัฒนาสามารถทดสอบใช้งานบน linux และ mac os แต่ยังไม่มีการทดสอบบน windows แต่เนื่องจากมีหลายท่านใช้ windows ถือเป็นการตัดโอกาสเรียนรู้ผู้ใช้ที่ถนัด windows ไป ผมจึงเริ่มการทดสอบและนำเสนอวิธีการให้เพื่อนๆทดลองใช้ครับ
เอาล่ะครับเริ่มกันเลย เริ่มด้วยการ install windows subsystem for linux จะเป็นการทำให้เราใช้ command linux บน windows ได้ครับ ติดตั้งตามขั้นตอนของ microsoft เลยครับไม่ยากและรวดเร็วมาก ในที่นี้ผมใช้ ubuntu 16.04 LTS โดยใช้ windows 10 นะครับ
Ref: https://docs.microsoft.com/en-us/windows/wsl/install-win10
[Note: 07-Jul-2019: subsystem ยังคงมีข้อบกพร่องอีกมากมายที่ไม่สามารถทำได้เหมือน native linux เช่น library หรือ package ที่เกี่ยวข้องกับการ network (nmap, tcpdump) แต่เนื่องจาก libra ไม่ได้ใช้ package พวกนั้นเราจึงน่าจะสามารถใช้มันทดสอบได้ครับ]
เมื่อทำการ install subsystem บน windows แล้วเพื่อนๆเพียงแค่เปิด command prompt แล้วพิมพ์ bash เพื่อเริ่มใช้งานครับ
จากนั้นเตรียม source code libra จาก github ได้เลย โดยพิมพ์คำสั่ง
$ git clone https://github.com/libra/libra.git
หากยังไม่มีคำสั่ง git ให้ใช้คำสั่ง sudo apt-get install git
หลังจากนั้นในเวป libra แนะนำให้ install dependencies (software ที่เกี่ยวข้อง) โดยใช้คำสั่งนี้ (แต่ผมแนะนำว่าอย่าพึ่งทำนะครับ)
[Updated 23-July-2019 libra team merge changed to github แล้วครับ เพราะฉะนั้นสามารถ run dev_setup.sh ได้เลยนะครับ Ref: https://github.com/libra/libra/pull/258]
$./scripts/dev_setup.sh
ในขั้นตอนนี้ผู้ใช้งาน windows มักจะเกิด error เพราะยังไม่ได้ Install dependency software ตัวอย่างเช่น rustc, cmake, go, protobuf ซึ่ง libra ต้องการใช้ compile และรันโปรแกรม เมื่อ error และหยุดการ install จะทำให้ไปขั้นตอนต่อไปแล้วเจอ error อีกแน่นอนครับ แทนที่จะใช้ script ผมจึง manual สั่งทีละคำสั่งครับ
เมื่อเปิดอ่าน dev_setup.sh พบว่า ในขั้นตอนการ install แต่ละ dependency software หากมี software หรือ library นั้นๆอยู่แล้ว script จะข้ามขั้นตอน install ได้นะครับ
นอกจากนี้เมื่อเปิดอ่าน dev_setup.sh พบว่า dependency software version เป็นดังนี้ครับ
rust latest version
cmake latest version
go latest version
protoc version 3.8.0
จะเห็นว่าเราจะต้องมี protoc version 3.8.0 นอกนั้นอื่นๆแค่ลง latest version ก็ควรจะใช้งานได้
สั่งงานทีละคำสั่งแล้วคอยดูผลลัพธ์ว่า error หรือไม่นะครับ
- Install rust latest version
2. Install cmake latest version
3. Install Go
4. Install unzip
5. Install protoc
ตรงนี้เป็นเหตุผลที่ผมแนะนำว่าอย่าพึ่งรัน shell script dev_setup.sh เพราะว่า URL ใน shell script เป็น https://github.com/google/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-x86_64.zip
เมื่อเรารัน shell script dev_setup.sh ไฟล์ที่ curl ไป download มาให้เรานั้นเป็นไฟล์ว่างๆครับ ผมได้เสนอให้ libra’s github แก้ไขตรงนี้ไปแล้ว หวังว่าจะได้รับการ approve ให้ merge เข้าไปเร็วๆนี้ครับ
[Updated 23-July-2019 libra team merge changed to github แล้วครับ เพราะฉะนั้นสามารถ run dev_setup.sh ได้เลยนะครับ Ref: https://github.com/libra/libra/pull/258]
ใน 5 ขั้นตอนนี้หากมีขั้นตอนไหน error จำเป็นจะต้องแก้ไขให้เรียบร้อยทีละขั้นตอนนะครับ
เมื่อ install dependency software เรียบร้อยแล้วจึงมาเริ่มเชื่อมต่อ testnet (trial server for libra) ด้วย CLI จาก libra directory (ในการทดสอบ libra directory ผมอยู่ที่ D:\Projects\libra\libra\ ซึ่ง linux sub system mount ไว้ที่ /mnt/d/Projects/libra/libra)
$ ./scripts/cli/start_cli_testnet.sh
หากไม่ติดปัญหาอะไรควรจะแสดงข้อความดังนี้ครับ
หลังจากนั้นสามารถทดสอบสร้าง account เพื่อโอนเงินระหว่างกันได้เลย
หรือเพื่อนๆต้องการใช้งาน local libra network แทนที่จะเชื่อมต่อกับ testnet (trial server for libra) ก็สามารถทำได้โดยใช้คำสั่ง
$ cargo run -p libra_swarm -- -s
แต่ก่อนที่จะรันคำสั่งนี้ ผมแนะนำให้ install openssl ชื่อ libssl-dev และ zlib ชื่อ zlib1g-dev นะครับไม่เช่นนั้นท่านจะพบกับ error ถ้า linux version ที่ท่านนำมาใช้ยังไม่มี library นี้ (เช่น Ubuntu 18.04 LTS เป็นต้น)
เท่านี้ก็น่าจะพอเห็นภาพของการโอนเงินในระบบ Facebook libra บ้างแล้วนะครับ สำหรับท่านที่สนใจสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ command ของ libra ได้จาก https://developers.libra.org/docs/reference/libra-cli