มาทำความรู้จัก Hyperledger Fabric กันเถอะ

Thirak Chuayjan
4 min readJan 30, 2021

--

ปฏิเสธไม่ได้เลยว่าทุกวันนี้มีเทคโนโลยีมากมายที่มีบทบาทสำคัญกับชีวิตประจำวันของมนุษย์ ไม่ว่าจะเป็นเรื่องความเป็นอยู่ การศึกษา การทำงาน และเรื่องอื่นๆอีกมากมาย ตัวผมนั้นคงจะกล่าวถึงเทคโนโลยีทั้งหมดไม่ได้ แต่จะขอยกเทคโนโลยีตัวหนึ่งที่คอยผลักดันและมีผลกระทบต่อโลกในอนาคตอย่างแน่นอน ใช่แล้วครับ ผมกำลังพูดถึงเทคโนโลยี BLOCKCHAIN

วันนี้ผมจะมาแนะนำ blockchain ตัวหนึ่งที่มีชื่อว่า Hyperledger Fabric ที่ถูกพัฒนาขึ้นโดย Linux Foundation และถูก contribute โดยเจ้าดังๆอย่างเช่น IBM หากใครอยากรู้รายละเอียดเพิ่มเติมว่า Hyperledger มีประวัติความเป็นมาอย่างไร แล้วมี blockchain ตัวไหนบ้าง สามารถเข้าไปอ่านได้ที่ web official ของ hyperledger ได้เลยครับ

ส่วนเรื่องความรู้พื้นฐานของ blockchain นั้น ในบทความของผมขอข้ามไปเลยนะครับ ผมคิดว่ามีหลายๆท่านได้เขียนบทความที่ให้ความรู้ในส่วนนี้เยอะพอสมควรและหาอ่านได้ไม่ยากนัก สำหรับใครที่ยังไม่เข้าใจลองไปหาอ่านกันดูก่อนนะครับ

https://www.hyperledger.org/projects/fabric

Hyperledger Fabric คืออะไร?

Hyperledger Fabric เป็น private blockchain ซึ่งคำว่า private นั้นมีความหมายว่า ที่เป็นส่วนตัว รวมกันคือ blockchain ที่เป็นส่วนตัว? หรือจะพูดง่ายๆก็คือ ใครก็ตามที่ต้องการเข้าร่วมและใช้งานข้อมูลบน chain(ledger) ในระบบ จะต้องได้รับสิทธิ์ก่อน จึงสามารถมองเห็นและใช้งานข้อมูลที่อยู่ใน ledger นั้นๆได้ ซึ่งจะแตกต่างจาก public blockchain ที่ไม่ว่าจะเป็นใครก็สามารถมีสิทธิ์เข้าถึงข้อมูลบน ledger ได้นั่นเอง

Hyperledger Fabric เป็น Distributed Ledger ถูกออกแบบมาเพื่อใช้งานเกี่ยวกับการทำ transaction ระหว่างองค์กร โดยแต่ละองค์กรจะมีช่องทางที่ใช้สำหรับ communicate ซึ่งกันและกัน โดยที่องค์กรหนึ่งๆสามารถอยู่ได้หลายช่องทาง และแต่ละช่องทางนั้นข้อมูลจะถูกแยกจากกันอย่างชัดเจน

Fabric concepts

ต่อไปเราจะมาดูกันครับว่า Hyperledger Fabric นั้นมี concept หลักๆอะไรบ้าง ไปดูกันเลย

Ledger

Ledger จะอยู่ภายใต้ peer และประกอบไปด้วย 2 ส่วนหลักๆคือ ตัว blockchain กับ worldstate

https://hyperledger-fabric.readthedocs.io/en/release-1.4/ledger/ledger.html
  • worldstate ก็คือ database ที่เก็บข้อมูล current value โดยข้อมูลที่อยู่ในนี้จะสามารถ create, update และ delete ได้ โดย default แล้ว worldstate จะใช้ LevelDB ที่เป็น key/value storeในการเก็บข้อมูล แต่เราสามารถเปลี่ยนไปใช้ CouchDB ที่เป็น document store ได้ ข้อดีของ LevelDB คือ เร็วมาก แต่สามารถ query ได้เฉพาะ key (หรือ range ของ key) เท่านั้น ส่วน CouchDB จะช้ากว่าแต่สามารถเลือก query จาก field ไหนก็ได้ (complex query)
  • blockchain คือ transaction log ที่เก็บข้อมูลที่มีการเปลี่ยนแปลงใน worldstate (history) ซึ่งข้อมูลที่อยู่ในนี้จะไม่สามารถแก้ไขได้

Peers

https://hyperledger-fabric.readthedocs.io/en/release-1.4/peers/peers.html

peer เป็นองค์ประกอบพื้นฐานสุดของ fabric network ทำหน้าที่ host ledger และ chaincode ซึ่งข้อมูล transaction ที่อยู่ใน ledger ก็เกิดจากตัว chaincode นี่แหละ และ peer สามารถมีกี่ตัวก็ได้ใน network ขึ้นอยู่กับการออกแบบ

Nodes and Roles

  • (Committing) peer คือ peer ที่ทำหน้าที่เก็บ ledger และ commit transaction ที่ได้จาก orderer โดยไม่จำเป็นที่จะต้อง run chaincode
  • Endorsing peer คือ peer ที่จะทำการ endorse transaction และต้องมี chaincode run อยู่ใน peer เพื่อใช้ในการ execute transaction ที่เข้ามา

Orderers

เป็น peer อีกประเภทหนึ่ง ทำหน้าที่จัดเรียง transaction รวบรวมสร้างเป็น block และกระจาย block ไปยัง peer ต่างๆ เพื่อไปเก็บลงใน ledger ของแต่ละ peer

Chaincode(Smart Contract)

คือ executable program ที่อยู่ในแต่ละ channel และแต่ละ peer chaincode จะเป็นตัวกำหนดว่าจะเขียนอะไรลงบน worldstate เพื่อทำการ generate transaction สำหรับ digital asset ของแต่ละ business

Channels

https://hyperledger-fabric.readthedocs.io/en/release-1.4/peers/peers.html

channel คือช่องทางที่ client และ peer ทั้งหลายใช้ติดต่อกัน ซึ่งทุกคนที่อยู่ใน channel นี้จะเห็นข้อมูลแบบเดียวกัน โดยแต่ละ channel จะมี ledger เป็นของตัวเองซึ่ง Ledger เหล่านั้นจะอยู่บน peer ที่ join channel นั้นๆ

องค์กรที่อยู่ภายใต้ channel เดียวกันจะเห็นข้อมูลเหมือนกัน และภายใต้ channel เดียวกันนี้ก็สามารถส่งข้อมูลลับระหว่างกันได้อีกผ่านทาง feature ที่เรียกว่า Private Data Collection(PDC) โดยข้อมูลที่อยู่ใน PDC จะไม่มีใครสามารถ read ได้เลย ถึงแม้จะอยู่ใน channel เดียวกันก็ตาม นอกจากผู้ที่ถูกกำหนดไว้ใน policy ของ PDC เท่านั้น ถึงสามารถ read ข้อมูลนี้ได้

Clients

คือ user ที่ใช้ blockchain ทำหน้าที่สร้าง transaction เข้ามาใน network (โดยใช้ SDK) เวลาที่ทาง client หรือ application จะ access resource ก็จะทำผ่าน peer ตามภาพ

https://hyperledger-fabric.readthedocs.io/en/release-1.4/peers/peers.html
  1. client connect ไปหา peer
  2. ทำการ invoke proposal ไปที่ peer
  • peer invoke ไปที่ chaincode
  • chaincode จะทำการ generate read/write sets

3. peer ส่ง proposal response กลับไปยัง client

4. client ส่ง transaction ไปให้ orderer

  • orderer จับ transaction ยัดเข้า block ส่งไปให้ peer
  • peer update ลง ledger

5. หลังจาก commit เสร็จสิ้น peer จะ emit event กลับไปยัง client

Organizations

https://hyperledger-fabric.readthedocs.io/en/release-1.4/peers/peers.html

เป็นการกำหนดขอบเขตภายใน blockchain network โดยแต่ละ organize จะมี client และ peer เป็นของตัวเอง โดยมี channel เป็นช่องทางในการติดต่อกับ organize อื่นๆผ่านทาง peer

Membership Service Provider(MSP)

https://hyperledger-fabric.readthedocs.io/en/release-1.4/membership/membership.html

มันคือ collection ของ identity ที่มีสิทธิ์เข้ามาใช้งานในระบบ เป็นเหมือนการนำเอา identity มา register ไว้ ใครที่ไม่มี identity อยู่ใน MSP ก็จะไม่สามารถทำ transaction ได้ โดยทั่วไป identity ที่ใช้ใน network จะถูก generate มาจาก Fabric CA (certificate authority)

Consensus

คือข้อตกลงในการ validate transaction ซึ่งจริงๆแล้วคำว่า consensus ของ Hyperledger Fabric นั้นจะประกอบไปด้วย 2 ส่วนหลักๆ คือ 1) การจัดเรียง transaction 2) การ endose transaction ซึ่งจะถูกกำหนดไว้ด้วย endorsement policy ว่ามีองค์กรไหนบ้างที่จะต้องทำการ validate transaction นั้นๆ

ประเภทการจัดเรียง transaction ของ orderer จะมีด้วยกัน 3 แบบคือ

  • Solo มี orderer แค่ peer เดียว ใช้สำหรับการทดสอบ ซึ่งตัว solo นี้แท้จริงแล้วไม่ได้มีการจัดเรียง transaction แต่อย่างใด
  • Raft เข้ามาใน version 1.4.1 เป็น Crash fault tolerant โดยจะต้องมี orderer peer อย่างน้อย 3 ตัว ไม่ต้องใช้ dependency อื่นเพิ่ม สามารถแยก orderer peer ออกจากกันได้(distributed ordering service)
  • Kafka เป็น Crash fault tolerant เหมือนกัน แต่ต้องใช้ dependency เพิ่มเติมคือ Kafka และ Zookeeper

จบไปแล้วนะครับสำหรับ concept คร่าวๆ ของ Hyperledger Fabric โดย blog ถัดไปเราจะมาลองติดตั้ง blockchain network ของ Hyperledger Fabric บนเครื่องของเรากันดูนะครับ

สำหรับ blog นี้เป็น blog แรกของผม หากมีข้อผิดพลาดอะไรต้องขออภัยไว้ด้วยครับ

--

--

Thirak Chuayjan

Blockchain Warrior, technology is like art a mixture of creativity and intelligence.