สรุป StarkNet Workshop #1

ในวันที่ 8 มิถุนายน 2022 ทาง Contribution DAO ได้มีการจัด Workshop เพื่อให้ทุกคนสามารถพัฒนา dApps บน StarkNet ได้ โดยผู้สอนจะเป็น พี่อ๋อ (@RATi_MOn) ซึ่งเป็นผู้มีประสบการณ์ด้านการพัฒนา smart contract มาหลายปี

บทความนี้จะสรุปเนื้อหาที่พี่อ๋อได้พูดถึงไว้ในวีดีโอ workshop ครับ หากผู้อ่านต้องการรับชมวีดีโอเต็ม สามารถดูย้อนหลังได้ที่นี่

Week#1 Setting StarkNet Developer Tools

StarkNet นั้นอะไรที่ค่อนข้างใหม่จึงทำให้มีการเปลี่ยนแปลงตลอดเวลา Syntax หรือ rules ต่างๆของ StarNet ก็ยังไม่คงที่ จึงจะมีการเปลี่ยนแปลงได้ตลอดเวลา ซึ่งใน Workshop ครั้งนี้จะมาแนะนำ Tools และ Flameworks ต่างๆที่มีประโยชน์ของ StarkNet และจะมีการสอน Compile, Deploy และการ Running test ลงบน StarkNet

ทางที่ดีที่สุดในการเรียนภาษา Cairo คือการที่ศึกษาโค้ดจากผู้ที่เชี่ยวชาญหรือการอ่าน test suites ในอนาคตนั้นจะไม่มี Programmer คนไหนเขียน Smart Contact Code ของตัวเองแต่พวกเค้าจะใช้ Industry-Standard libraries ที่เขียนโดยผู้เชี่ยวชาญแทน แต่เนื่องจากภาษา Cairo เป็นภาษาที่ใหม่มากทำให้ Developer แต่ละคนนั้นมีสไตล์การเขียน code, frameworks หรือ tools ที่แตกต่างกัน

ซึ่งรูปด้านล่างนี้ก็จะเป็น tools ต่างๆที่สามารถใช้ได้ใน StarkNet ณ ตอนนี้

Dev Tools ที่ใช้สำหรับการพัฒนาบน StarkNet
Dev Tools ที่ใช้สำหรับการพัฒนาบน StarkNet

ยกตัวอย่าง tools ที่น่าสนใจสำหรับการ Develop ภาษา Cairo ที่ชื่อว่า Warp ที่สร้างโดย Nethermind โดย tool นี้จะสามารถ Compile จากภาษา Solidity มาเป็น ภาษา Cairo ได้ แต่ก็จะมีข้อจำกัด ตรงที่จะทำได้เฉพาะการเขียน Smart Contact เพียงเท่านั้น นอกจากนี้ การที่เรา Compile จาก Solidity มาเป็นภาษา Cairo เราจะไม่มีทางรู้เลยว่า Compiler จะมี Bug ตรงไหนบ้าง

Frameworks ในการ Develop ภาษา Cairo จะมีหลักอยู่ 3 อย่างดังรูป:

Framework ต่างๆสำหรับการพัฒนาภาษา Cairo
Framework ต่างๆสำหรับการพัฒนาภาษา Cairo

แต่สำหรับวันนี้ เราจะมาโฟกัสกันที่ Starknet-hardhat-plugin

ทำไมถึงต้องโฟกัสที่ Starknet-hardhat-plugin?

เนื่องจากเป้าหมายของ workshop นี้คือการ setup Cairo environment ให้ได้ไวที่สุด และเนื่องจาก EVM กับ Hardhat นั้นมีการใช้ในการ Develop ค่อนข้างมากสำหรับ Blockchain developer ใน community ของประเทศไทย และอีกเหตุผลนึงนั้นก็คือ Hardhat นั้นจะใช้ภาษา JavaScript ในการเขียน test หรือ TypeScript ซึ่งภาษา JavaScript นั้นเป็น High Level Language ที่ค่อนข้างง่าย

สิ่งที่แตกต่างกันกับ Nile และ Protostar คือทั้งสองอย่างนี้จะใช้ Python ในการเขียน Test

ใน Workshop นี้จะทำให้คุณสามารถ Compile/Deploy/ Writing Unit case

กระบวนการ compile โค้ด Cairo
กระบวนการ compile โค้ด Cairo

หลังจากการที่เราเขียน Cairo code เสร็จเรียบร้อยเราจะนำไปเข้า Compiler และจะได้ออกมาสองอย่างคือ

  1. Bytecode (starknet OS instructions)
  2. ABI definition

StarkNet OS (หรือ Bytecode) นั้นคือ StarkNet transaction Execution environment กล่าวคือ transaction ที่ถูก executed ทุกๆครั้ง จะมีการ Modify Storage และจะต้องเสียค่าธรรมเนียม (ที่เรียกว่า gas) ซึ่ง concept ของ gas นั้นก็จะเหมือนกับทาง EVM (Ethereum Virtual Machine) สิ่งที่แตกต่างกันกับ EVM นั้นคือ เวลาเรา store core data ไม่ว่าจะเป็นบวกหรือลบเราจะเสียค่า gas แต่ภาษา Cairo ในส่วนของการ store core data จะถูกคำนวณ Off-chain ทำให้ไม่ต้องเสียค่า gas

Application Binary Interface (ABI) คือการอธิบาย Contract’s interface ของ Public method, Input arguments, return values และ contract events

กระบวนการของ Cairo Code Compilation

การนำผลลัพธ์จาก Complie โค้ด Cairo มาใช้
การนำผลลัพธ์จาก Complie โค้ด Cairo มาใช้

หลังจากการ Compile จะได้ออกมาเป็น Bytecode และ ABI จากนั้นจะ deploy ในส่วนของ Bytecode ไป แต่การที่จะเข้าถึง Smart contact นั้นจะต้อง invoke ผ่าน ABI definition

ช่วงการเขียนโค้ด

ก่อนอื่นมาทำความรู้จักกับทาง Hardhat กันก่อน

Hardhat คือ Ethereum development environment สำหรับ Professionals ถูกออกแบบมาเพื่อให้ run ภาษา Solidity มีจุดเด่นที่ทำให้ Hashhat เกิดขึ้นมาและแย่งส่วนแบ่งจากตลาดได้เนื่องจากมี feature ที่มีจุดเด่นมากอย่าง Plugins ซึ่งตัว Plugins นี้จะทำให้ Developer หรือ community อื่นๆ สามารถทำ Plugins ของตัวเองและสามารถเพิ่ม features ของ Hardhat เพิ่มขึ้นไป ซึ่งทาง Shard labs จะทำให้เรา dev ภาษา Cairo ได้โดยใช้ framework ตัวเดิมนั้นก็คือ Hardhat

  1. ให้ไปที่ Ratimon Repo: Cairo Smart Contact ก่อน
  2. ให้ทำการ Clone Cairo Smart Contact template จาก Github ( สำหรับ Plugin ที่ใช้ จะใช้ Vscode และสำหรับ Plugin ที่ใช้ highlight จะใช้ของ Starkware Industry ที่ชื่อว่า Cairo)
  3. ทำการติดตั้ง yarn install (จะเกิด error ที่ hardhat-deploy-ethers)
  4. ให้ทำการรัน yarn add -D @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers

จะมี 3 อย่างหลักๆที่ต้องทำนั่นคือ

  1. Compile
    1. รัน yarn starknet-compile
  2. Deploy
    1. รัน yarn hardhat run scripts/ ( จะสังเกตุว่าเราไม่ต้องจ่ายค่า Gas เนื่องจากว่ายังเป็นเวอร์ชั่น 0.8 แต่จะเสียค่า Gas ในเวอร์ชั่น 0.9)
  3. Running test
    1. รัน yarn starknet-test

ติดตาม StarkWare ได้ที่

ติดตาม Contribution DAO


เกี่ยวกับผู้เขียน

England

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

chompk.eth

เป็น proofreader และคนคอยอ่านและเรียบเรียงบทความอีกรอบ ทำงานด้าน AI เป็นงานประจำและศึกษา crypto เป็นอาชีพเสริม มีความสนใจทั้งในด้าน AI และ blockchain และยังหลงไหลในแนวเพลง math rock เป็นพิเศษ งานอดิเรกคือการเล่นกีต้าร์ วิ่ง ฟังเพลง และ ทำงาน ทำงาน ทำงาน

Subscribe to ContributionDAO
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.