Facebook Libra focus on create testnet-like

Apisak Srihamat
2 min readAug 8, 2019

--

หลังจากมีงานเร่งด่วนเข้ามาขัดจังหวะการเรียนรู้อยู่หลายวัน วันนี้เราจะมาศึกษาเรื่องการ execute หลายๆ validator(s) คล้ายๆกับการทำ testnet แต่แตกต่างจากการ run libra local testnet ด้วย libra_swarm ที่จะมีเพียง validator เดียว เพื่อประโยชน์ในการศึกษาพฤติกรรมของ Libra’s consensus ในส่วนของการส่งข้อมูลระหว่าง validator เช่นการ propose และ vote เป็นต้น

ซึ่งจริงๆแล้วใน libra docker มีการทำ run.sh ที่อยู่ใน folder libra\docker\validator ไว้ให้เราสามารถทดสอบรัน multiple validator(s) ได้แล้วนะครับ โดยจะเห็นว่า script น่าจะ run ทั้งหมด 4 validators (IP 172.18.0.10–13)

ถ้ายังไม่ได้ install docker client ให้ login to hub.docker.com แล้ว download & install docker เลยครับ ในการทดสอบนี้ผมใช้ Ubuntu 18.04 LTS นะครับ

อ้างอิง docker’s README เราจะทำการ building และ running docker images ดังนี้

  1. $ ./docker/validator/build.sh
  2. $ ./docker/mint/build.sh
  3. $ ./docker/validator/run.sh
  4. $ ./docker/mint/run.sh
  5. หลังจากนั้นสามารถ 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

หน้าจอหลังทำขั้นตอนที่ 1 (build docker validator)และ 2 (build docker mint) เสร็จเรียบร้อยแล้วจะได้ข้อความแบบนี้นะครับ
หน้าจอหลังการทำขั้นตอนที่ 3 (run 4 docker validators) เสร็จแล้วนะครับ … แต่ผมยังสังเกตุเห็น message timeout จาก round 2 ไม่แน่ใจว่าเกิดปัญหาอะไรกันนะ ? หรือว่ามันคือ event timeout ปรกติที่เราเคยศึกษามา

ในขั้นตอนนี้ผมจำเป็นต้องเปิดอีกหน้าจอนึงขึ้นมาเพื่อ run docker mint เนื่องจากเราต้องปล่อยให้ docker validator ทำงานอิสระจาก docker mint

อ้างอิงไฟล์ server.py ผมเข้าใจว่า docker mint มันทำหน้าที่เป็น faucet server ที่เขียนด้วย python flask, อ้างอิงไฟล์ mint.Dockerfile จะเห็นว่ามันถูกรันด้วย gunicorn (Python WSGI HTTP server)

หน้าจอหลังการทำขั้นตอนที่ 4 (run docker mint) เสร็จเรียบร้อยแล้วนะครับ

ผมไม่รอช้าครับเปิดอีกหน้าจอขึ้นมาเพื่อเรียกใช้ client ให้เชื่อมต่อไปที่ testnet (4 validators) ที่ผมพึ่งสร้างขึ้นเอง ด้วยคำสั่งในขั้นตอนที่ 5 รอสักพักก็จะได้ Libra prompt ขึ้นมาครับ

หน้าจอหลังทำขั้นตอนที่ 5 จึงได้ Libra prompt ออกมา

สรุปว่าหากทำตามขั้นตอนที่เราทดลองไปแล้วก็น่าจะสามารถศึกษาการทำงานของ Libra’s consensus ระหว่างหลาย validators ได้ต่อไป

หน้าจอ docker mint (faucet server) หลังจาก mint 1000 และ 2000 coins ให้ account 0

ยังมีเรื่องที่น่าสนใจเกี่ยวกับ 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

Facebook Libra focus on consensus (Part 1)

Facebook Libra focus on consensus (Part 2)

--

--

Apisak Srihamat

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