# สรุป StarkNet Workshop #1 **Published by:** [ContributionDAO](https://paragraph.com/@contributiondaoblog/) **Published on:** 2022-06-29 **URL:** https://paragraph.com/@contributiondaoblog/starknet-workshop-1 ## Content ในวันที่ 8 มิถุนายน 2022 ทาง Contribution DAO ได้มีการจัด Workshop เพื่อให้ทุกคนสามารถพัฒนา dApps บน StarkNet ได้ โดยผู้สอนจะเป็น พี่อ๋อ (@RATi_MOn) ซึ่งเป็นผู้มีประสบการณ์ด้านการพัฒนา smart contract มาหลายปี บทความนี้จะสรุปเนื้อหาที่พี่อ๋อได้พูดถึงไว้ในวีดีโอ workshop ครับ หากผู้อ่านต้องการรับชมวีดีโอเต็ม สามารถดูย้อนหลังได้ที่นี่ Week#1 Setting StarkNet Developer ToolsStarkNet นั้นอะไรที่ค่อนข้างใหม่จึงทำให้มีการเปลี่ยนแปลงตลอดเวลา 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ยกตัวอย่าง tools ที่น่าสนใจสำหรับการ Develop ภาษา Cairo ที่ชื่อว่า Warp ที่สร้างโดย Nethermind โดย tool นี้จะสามารถ Compile จากภาษา Solidity มาเป็น ภาษา Cairo ได้ แต่ก็จะมีข้อจำกัด ตรงที่จะทำได้เฉพาะการเขียน Smart Contact เพียงเท่านั้น นอกจากนี้ การที่เรา Compile จาก Solidity มาเป็นภาษา Cairo เราจะไม่มีทางรู้เลยว่า Compiler จะมี Bug ตรงไหนบ้าง Frameworks ในการ Develop ภาษา Cairo จะมีหลักอยู่ 3 อย่างดังรูป: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หลังจากการที่เราเขียน Cairo code เสร็จเรียบร้อยเราจะนำไปเข้า Compiler และจะได้ออกมาสองอย่างคือBytecode (starknet OS instructions)ABI definitionStarkNet 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 มาใช้หลังจากการ 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ให้ไปที่ Ratimon Repo: Cairo Smart Contact ก่อนให้ทำการ Clone Cairo Smart Contact template จาก Github ( สำหรับ Plugin ที่ใช้ จะใช้ Vscode และสำหรับ Plugin ที่ใช้ highlight จะใช้ของ Starkware Industry ที่ชื่อว่า Cairo)ทำการติดตั้ง yarn install (จะเกิด error ที่ hardhat-deploy-ethers)ให้ทำการรัน yarn add -D @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethersจะมี 3 อย่างหลักๆที่ต้องทำนั่นคือCompileรัน yarn starknet-compileDeployรัน yarn hardhat run scripts/ ( จะสังเกตุว่าเราไม่ต้องจ่ายค่า Gas เนื่องจากว่ายังเป็นเวอร์ชั่น 0.8 แต่จะเสียค่า Gas ในเวอร์ชั่น 0.9)Running testรัน yarn starknet-testติดตาม StarkWare ได้ที่discord: https://discord.gg/FcBNpz7g6Utwitter: https://twitter.com/StarkWareLtdwebsite: https://starkware.co/ติดตาม Contribution DAOFacebook: https://www.facebook.com/contributiondaoDiscord: https://discord.gg/contributiondaoTwitter : https://twitter.com/contributedaoเกี่ยวกับผู้เขียนEnglandสวัสดีครับทุกคน เรียกผมว่าอิงแลนด์ก็ได้นะครับ ผมค่อนข้างเป็น Crypto Enthusiast เลยก็ว่าได้ครับและตื่นเต้นกับโลกการเงินในอนาคตมากๆ โดยการเขียนพวกนี้เหมือนเป็นการที่ผมได้ทบทวนความรู้ต่างๆ จึงอยากจะมาแชร์ให้กับทุกคนด้วยเหมือนกันครับchompk.ethเป็น proofreader และคนคอยอ่านและเรียบเรียงบทความอีกรอบ ทำงานด้าน AI เป็นงานประจำและศึกษา crypto เป็นอาชีพเสริม มีความสนใจทั้งในด้าน AI และ blockchain และยังหลงไหลในแนวเพลง math rock เป็นพิเศษ งานอดิเรกคือการเล่นกีต้าร์ วิ่ง ฟังเพลง และ ทำงาน ทำงาน ทำงาน ## Publication Information - [ContributionDAO](https://paragraph.com/@contributiondaoblog/): Publication homepage - [All Posts](https://paragraph.com/@contributiondaoblog/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@contributiondaoblog): Subscribe to updates - [Twitter](https://twitter.com/contributedao): Follow on Twitter