Facebook Libra focus on create testnet-like
หลังจากมีงานเร่งด่วนเข้ามาขัดจังหวะการเรียนรู้อยู่หลายวัน วันนี้เราจะมาศึกษาเรื่องการ execute หลายๆ validator(s) คล้ายๆกับการทำ testnet แต่แตกต่างจากการ run libra local testnet ด้วย libra_swarm ที่จะมีเพียง validator เดียว เพื่อประโยชน์ในการศึกษาพฤติกรรมของ Libra’s consensus ในส่วนของการส่งข้อมูลระหว่าง validator เช่นการ propose และ vote เป็นต้น
ถ้ายังไม่ได้ install docker client ให้ login to hub.docker.com แล้ว download & install docker เลยครับ ในการทดสอบนี้ผมใช้ Ubuntu 18.04 LTS นะครับ
อ้างอิง docker’s README เราจะทำการ building และ running docker images ดังนี้
- $ ./docker/validator/build.sh
- $ ./docker/mint/build.sh
- $ ./docker/validator/run.sh
- $ ./docker/mint/run.sh
- หลังจากนั้นสามารถ connect เข้าไปที่ testnet (4 validators) ด้วย client โดยคำสั่ง
$ cargo run -p client --bin client -- -a localhost -p 8000 -f localhost:8080 -s terraform/validator-sets/dev/trusted_peers.config.toml
ในขั้นตอนนี้ผมจำเป็นต้องเปิดอีกหน้าจอนึงขึ้นมาเพื่อ run docker mint เนื่องจากเราต้องปล่อยให้ docker validator ทำงานอิสระจาก docker mint
อ้างอิงไฟล์ server.py ผมเข้าใจว่า docker mint มันทำหน้าที่เป็น faucet server ที่เขียนด้วย python flask, อ้างอิงไฟล์ mint.Dockerfile จะเห็นว่ามันถูกรันด้วย gunicorn (Python WSGI HTTP server)
ผมไม่รอช้าครับเปิดอีกหน้าจอขึ้นมาเพื่อเรียกใช้ client ให้เชื่อมต่อไปที่ testnet (4 validators) ที่ผมพึ่งสร้างขึ้นเอง ด้วยคำสั่งในขั้นตอนที่ 5 รอสักพักก็จะได้ Libra prompt ขึ้นมาครับ
สรุปว่าหากทำตามขั้นตอนที่เราทดลองไปแล้วก็น่าจะสามารถศึกษาการทำงานของ Libra’s consensus ระหว่างหลาย validators ได้ต่อไป
ยังมีเรื่องที่น่าสนใจเกี่ยวกับ libra’s docker แล้ววิธีการดู log, debug หาข้อมูลที่เกี่ยวข้องระหว่าง execution และอีกหลายๆเรื่องที่ยังศึกษาค้างอยู่ แต่วันนี้เวลาหมด หมดเวลาอีกแล้ว แล้วพบกันใหม่โอกาสหน้าครับพ้ม :)
บทความอื่นๆเกี่ยวกับการทำความเข้าใจ source code libra มีดังนี้ครับ
Facebook Libra on Windows is easy
Facebook Libra focus on account create
Facebook Libra focus on account mint
Facebook Libra focus on query balance
Facebook Libra focus on admission control (Part 1)
Facebook Libra focus on admission control (Part 2)
Facebook Libra focus on mempool