มาลอง Deploy Chaincode บน Kaleido กัน

paramet kongjaroen
Under Ledger
Published in
5 min readMar 27, 2023

สำหรับบทความนี้เราจะมาลอง Deploy chaincode ขึ้นบน Kaleido กัน ว่าจะมีขั้นตอนอะไรบ้าง ซึ่งบทความนี้ผมขอไม่ได้ลงลึกในภาษา Golang นะครับ

เรามาทำความรู้จักก่อนว่า Chaincode คืออะไร ?

Chaincode เป็นโปรแกรมที่เขียนขึ้นเพื่อทำงานบนเครือข่าย Blockchain โดยเฉพาะบนพื้นฐานของ Hyperledger Fabric ซึ่งเป็นโครงสร้าง Blockchain สำหรับการพัฒนาและปรับปรุงระบบโดยตรง โดย Chaincode เป็นส่วนที่ทำหน้าที่เหมือนโปรแกรมคอมพิวเตอร์ทั่วไปที่จะมีการรับข้อมูลเข้ามา ประมวลผลและส่งผลลัพธ์ออกมาในรูปแบบของ Transaction โดยที่ Transaction จะถูกบันทึกลงบน Ledger ของ Blockchain เพื่อให้ทุกคนในเครือข่ายเห็นและยืนยันว่าการทำธุรกรรมนั้นถูกต้องและถูกต้องตามกฎหมายและนโยบายของระบบ Blockchain นั้น ๆ นั่นเองครับถ้าอยากศึกษาว่า Hyperledger Fabric คืออะไร สามารถอ่านเพิ่มเติมได้ ที่นี่

มาเริ่มขั้นตอนการ Deploy Chaincode ของเราเลยดีกว่า !!

  1. ขั้นตอนแรกให้เราเข้าไปที่ https://www.kaleido.io/ ให้ทำการ Login หรือ Register ให้เรียบร้อย จากนั้นให้กดปุ่ม Create Network

2. ขั้นตอนต่อมาให้เราตั้งชื่อ Network ของเรา โดยของผมจะตั้งเป็นชื่อง่าย ๆ ว่า Simple Network จากนั้นกดปุ่ม Next

3. ขั้นตอนนี้จะเป็นการเลือก Cloud ว่าเราจะให้ใช้ Region ไหน โดย Kaleido Support Cloud Providers อยู่สองเจ้าคือ AWS และ Microsoft Azure โดยของผมจะไปเลือก Ohio จากนั้นกดปุ่ม Next

เนื่องจากเราใช้ Starter Plan จะไม่สามารถใช้ Multi Region ก็กด Finish ไปเลยครับ

เมื่อเราทำ Create Network เสร็จแล้ว เราจะได้ Dashboard ตามในรูปนี้เลยครับ

4. ขั้นตอนนี้เราจะมาเริ่มสร้าง Environment สำหรับรองรับการ Deploy Chaincode ของเราเลยนะครับ โดยให้เรากดไปที่ปุ่ม Create Environment จากนั้น ผมจะเลือกเป็น Standard Blockchain Service นะครับ

จากนั้นให้เราเลือก Protocol เป็น Hyperledger Fabric

จากนั้นให้เราตั้งชื่อ Environment ของเรา โดยผมจะตั้งชื่อง่าย ๆ คือ Simple Environment นะครับ

จากนั้นผมจะเลือกเป็น State Database เป็น LevelDB ซึ่งเป็นค่า Default Database นะครับ โดย LevelDB จะเป็นการเก็บข้อมูลแบบ key-value ส่วน CouchDB จะเป็นการเก็บในรูปแบบของ Document
เมื่อเราทำการสร้าง Environment เสร็จแล้วก็จะได้ Dashboard แบบรูปนะครับ

5. ขั้นตอนนี้เราจะมาทำการสร้าง Node กันนะครับ โดย Node ที่เราจะต้องสร้างจะมี 2 ประเภทครับ คือ Orderer Node กับ Peer Nodeโดยแต่ละ Node คืออะไร ผมจะมาอธิบายอีกทีครับ ให้เรากดไปที่ Create Node ซึ่งในขั้นตอนแรกจะให้สร้าง Orderer Node ก่อน โดยผมตั้งชื่อ Node ของผมเป็น Simple Orderer

โดย Orderer Node จะมีหน้าที่ควบคุมและจัดการการส่งข้อมูลระหว่าง Peer Node ต่าง ๆ ในเครือข่าย Blockchain โดย Orderer Node จะรับ Transaction จากผู้ใช้งานหรือ Peer Node และจัดเรียง Transaction ให้เป็น Block โดยมีลำดับที่ถูกต้องและสอดคล้องกับนโยบายและเงื่อนไขที่กำหนดไว้ หลังจากนั้น Orderer Node จะส่ง Block นั้น ๆ กลับไปยัง Peer Node เพื่อให้เหล่า Peer Node สามารถทำการยืนยันและเข้าร่วมในการตรวจสอบของ Block นั้น ๆ ได้ ดังนั้น Orderer Node เป็นส่วนสำคัญที่จัดการในการส่งข้อมูลและรักษาความถูกต้องของ Block ใน Hyperledger Fabric Blockchain

ในส่วนของ Certificate Authority (CA) ผมจะใช้เป็น Self-Signed ซึ่งเป็นค่า Default ของ Kaleido เมื่อเสร็จขั้นตอนนี้แล้วให้ทำการกด Next ไปเรื่อย ๆ จนเจอปุ่ม Finish ให้เรากดปุ่ม Finish เลยครับ เมื่อเรากดปุ่ม Finish แล้วให้รอ Node ของเราทำการ Initializing สักครู่ เมื่อ Initialize เสร็จแล้ว Status จะเปลี่ยนเป็น Started

6. ขั้นตอนต่อมาเราจะทำการสร้าง Peer Node โดยให้เอาเมาส์ไปชี้ตรงชื่อ Orderer Node ของเรา จากนั้นให้เราทำการคลิ๊ก Add Peer Node จากนั้นให้ตั้งชื่อ Peer Node ที่เราต้องการครับ

จากนั้นให้กด Next ไปเรื่อยๆ จนเจอปุ่ม Finish ให้กดปุ่มเลย แล้วรอ Peer Node ของเรา Initializing จนกว่าจะเปลี่ยน Status เป็น Started

Peer Node เป็นโหนดที่เป็นส่วนหนึ่งของระบบ Hyperledger Fabric Blockchain ซึ่งเป็นตัวแทนของผู้ใช้งานในระบบ โดยมีหน้าที่สำคัญในการดำเนินการของระบบ Hyperledger Fabric Blockchain คือการเก็บข้อมูลที่จะถูกบันทึกลงใน Ledger และการตรวจสอบและยืนยัน Transaction ที่ถูกส่งมาจากผู้ใช้งาน นอกจากนี้ Peer Node ยังมีหน้าที่รับ Block จาก Orderer Node และตรวจสอบความถูกต้องของ Block โดยการเชื่อมต่อกับอีกหลายๆ Peer Node ในระบบ และถ้า Block ถูกต้องตามนโยบายและเงื่อนไขที่กำหนดไว้ จะถูกเขียนลงใน Ledger เพื่อสามารถค้นหาและตรวจสอบข้อมูลได้ในภายหลัง ดังนั้น Peer Node เป็นส่วนสำคัญที่เป็นตัวแทนของผู้ใช้งานและรับผิดชอบในการเก็บข้อมูลและการตรวจสอบข้อมูลในระบบ Hyperledger Fabric Blockchain

7. ขั้นตอนนี้เราจะมาเริ่มสร้าง Application ของเรากันนะครับ ให้เรากดกลับมาที Dashboard ให้สังเกตเมนูทางซ้ายมือ จะมีเมนชื่อว่า Apps

ให้เรากด Create App จากนั้นให้ Protocol เป็น Hyperledger Fabric จากนั้นให้กดปุ่ม Next แล้วให้เราตั้งชื่อ App ของเรานะครับ โดยบทความนี้ผมจะเลือก Golang Executable หรือใช้ Golang เป็น Chaincode หรือ Smart Contract ของเรา จากนั้นกดปุ่ม Finish

8. ขั้นตอนนี้ให้เราเปิด VS Code ของเรา แล้วให้เราทำการ download หรือ clone Example Project ลงที่เครื่องของเรา

จากนั้นให้เรา Run คำสั่ง ข้างล่างนี้ เพื่อให้ไฟล์ assetTransfer.go ของเรา เป็น File Binary Executable GOOS=linux GOARCH=amd64 go build -o assetTransfer.bin

9. กลับมาที่ Dashboard ให้เราทำการกด Create New Version

10. จากนั้นให้เลือกไฟล์ที่เป็น File Binary Executable ที่ได้จากข้อ 8. จากนั้นให้กดปุ่ม Finish และรอ Upload Chaincode ให้สำเร็จ

11. เมื่อทำการ Upload Chaincode แล้วให้ทำการกด Promote To Environment และทำการเลือก Environment ที่เราได้ Create ไว้ในข้อ 4. และกดปุ่ม Finish

เมื่อเราทำการ Deploy Code เสร็จแล้ว เราจะต้องทำการ Deploy Instance ไปยัง Chanel เพื่อเริ่มต้นในการใช้งาน Blockchain เมื่อกดปุ่ม Finish แล้วให้รอจนกว่า Status จะเป็นสีเขียวทั้งหมด

ซึ่งก็จะจบขั้นตอนการ Deploy Chaincode ของเราแล้ว ต่อมาเรามาลองเล่นกันดีกว่าว่าเรา Deploy ขึ้นไปแล้ว มันใช้ได้จริงหรือ ?

  1. ให้เรากดมาที่ Peer Node ของเรา จากนั้นกดที่เมนู REST API Gateway เราจะเห็นว่า Kaleido ได้ Provide API ไว้ให้เราแล้ว โดยที่เราไม่ต้องยุ่งยากต้องมาทำเองอีกที่หลัง สร้างความสะดวกสบายให้เราอีกด้วยยย

2. ให้เราทำการ Registers User เพื่อทำการสร้าง New Signing โดยใช้ Fabric CA ใน Kaleido ซึ่งเป็นบริการที่ให้บริการการจัดการการรับรองตัวตนและการเซ็นสัญญา (identity and signing) สำหรับ Hyperledger Fabric

3. จากนั้นทำการ Enroll User เพื่อทำการตรวจสอบ การขอสิทธิ์และการเข้าถึงในการเข้าใช้งาน ของบัญชีที่มีสิทธิ์ในการ Signing ที่ได้รับการ Register กับ Fabric CA และจะมีการสร้างสิ่งที่เรียกว่า Enrollment Certificate ซึ่งจะใช้ในการตรวจสอบตัวผู้ใช้งานและเป็นการรับรองตัวตน (identity verification) สำหรับการเข้าถึงระบบ Blockchain ใน Kaleido

4. มาลอง SendTransaction โดยการ CreateAsset กัน โดยผมจะทำการ Set Body ดังนี้

signer คือ user name ที่เราได้ทำการ Register ไว้ในตอนแรก
chanel คือ chaincode ที่เราได้ทำการ Deploy Instance ไปที่ Chanel นั้นๆ ตามในหัวข้อ 11.
chaincode คือ ชื่อ chaincode ที่เราตั้งในขั้นตอนการ Create App
func คือ Function ที่เราจะทำ Transaction
args คือ Arguments ที่เราจะส่งไปใน Function นั้น

เมื่อเราทำการ Send Transaction ได้อย่างถูกต้อง เราจะได้รับ Response ตามในรูปนี้

5. เรามาลอง Query Asset เราดีกว่า เพื่อดูว่าเราได้ทำการ Send Transaction นั้นสำเร็จจริงๆ หรือไม่

เมื่อเราใส่ Body ตามรูปแล้ว ผลลัพธ์ก็ควรจะออกมาตามที่เราได้ทำการ Send Transaction ไปในขั้นตอนที่ 3.

และผลลัพธ์ก็ตรงตามที่เราต้องการ ซึ่งก็สามารถสันนิฐานได้ว่าตัว Chaincode เรามีการทำงานที่ถูกต้อง และสามารถใช้งานบน Kaleido ได้นั่นเองงงงง

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

อ้างอิง

--

--