Facebook Libra on Windows

Apisak Srihamat
4 min readJul 10, 2019

--

เนื่องจาก digital currency เริ่มเข้ามามีบทบาทในบ้านเรามากขึ้นเรื่อยๆ เมื่อวันที่ 7 ก.ค. 2562 ที่ผ่านมาคุณสิริธิดา พนมวัน ณ อยุธยา ผู้ช่วยผู้ว่าการสายนโยบายระบบการชำระเงินและเทคโนโลยีทางการเงิน ออกข่าวว่าทางธนาคารแห่งประเทศไทยได้จัดทีมสำหรับเรียนรู้ Facebook's digital currency เพื่อประกอบการตัดสินใจกำหนดนโยบาย หลังจาก SCB ประกาศว่าจะนำ ripple มาใช้ไม่นาน มันจึงไม่ใช่เรื่องในความฝันอีกแล้วล่ะครับที่ประเทศไทยจะมี digital currency โดย block chain technology

Facebook’s libra on Windows

เพื่อติดตาม 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 เพื่อเริ่มใช้งานครับ

start subsystem linux on windows 10 command prompt

จากนั้นเตรียม source code libra จาก github ได้เลย โดยพิมพ์คำสั่ง

$ git clone https://github.com/libra/libra.git

ใช้ git เพื่อไปรับ source code libra มาครับ

หากยังไม่มีคำสั่ง 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 ได้นะครับ

ข้อมูลภายใน file dev_setup.sh

นอกจากนี้เมื่อเปิดอ่าน 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 หรือไม่นะครับ

  1. Install rust latest version
download & install rust version ล่าสุด
สร้าง environment variable ที่จำเป็นและทำการ update rust
add rust’s component rustfmt
add rust’s component clippy

2. Install cmake latest version

ทำการ apt-get update กันก่อนนะครับ
ทำการ install cmake

3. Install Go

ทำการ install go

4. Install unzip

ทำการ install unzip

5. Install protoc

download protoc version 3.8.0

ตรงนี้เป็นเหตุผลที่ผมแนะนำว่าอย่าพึ่งรัน 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]

unzip binary of protoc 3.8.0 to executable location
unzip library of protoc 3.8.0 to include location

ใน 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

หากไม่ติดปัญหาอะไรควรจะแสดงข้อความดังนี้ครับ

เริ่มทดสอบ libra client in debug mode

หลังจากนั้นสามารถทดสอบสร้าง account เพื่อโอนเงินระหว่างกันได้เลย

สร้าง account #0 เรียบร้อยแล้ว โดยคำสั่ง account create
สร้าง account #1 เรียบร้อยแล้ว โดยคำสั่ง account create เช่นกัน ในที่นี้เราจะทดลองโอนเงินระหว่างกันจึงจำเป็นต้องสร้าง 2 account นะครับ
ใส่เงินเข้าไปใน account #0 จำนวน 1,000 coins โดยคำสั่ง account mint 0 1000
ตรวจสอบยอดเงินในบัญชี account #0 พบว่ามี 1,000 coins จริง
ตรวจสอบยอดเงินในบัญชี account #1 เพื่อให้มั่นใจว่ายังไม่มี coin อยู่นะครับ :)
ทดลอง transfer 800 coin จาก account #0 ไปที่ account #1
เมื่อตรวจสอบยอดเงินจะพบว่าได้โอนจาก account #0 ไป account #1 แล้ว

หรือเพื่อนๆต้องการใช้งาน 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 เป็นต้น)

ซึ่งหากไม่พบปัญหาขาด library ใดๆจะแสดงหน้าจอดังนี้ครับ

เท่านี้ก็น่าจะพอเห็นภาพของการโอนเงินในระบบ Facebook libra บ้างแล้วนะครับ สำหรับท่านที่สนใจสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ command ของ libra ได้จาก https://developers.libra.org/docs/reference/libra-cli

--

--

Apisak Srihamat

Master of Science AIT, Embedded systems course UC Irvine, Bachelor of Computer Engineering KMITL, Love innovation ideas.