วันศุกร์, สิงหาคม 23

ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 4 – Deploy Smart Contract

ว่าด้วยเรื่องการเขียนโค้ด Smart Contract ภาค 4

จากคราวที่แล้ว เราเขียน Contract พร้อม function Hello world กันแล้วนั้น คราวนี้เรามาลอง Deploy ขึ้น network กันดูนะครับ

แต่ก่อนอื่นเลยจะขอเล่าให้ฟังก่อนว่าในการติดต่อกับ Ethereum network นั้น มันมี Tool ที่ใช้คุยได้อยู่มากมาย แต่ที่นิยม ๆ จะมีอยู่ 3 ชื่อก็คือ web3.js, go-ethereum (หรือ Geth) และ Mist ซึ่งทั้ง 3 ตัวที่ผมเอ่ยมานั้น เอามาใช้ deploy ได้หมดเลย แต่ความยากง่ายจะต่างกันดังนี้ครับ ฉะนั้น ในบทความนี้ผมขออนุญาตแนะนำการ deploy โดยใช้ tool ที่ชื่อว่า Mist นะครับ

ขอแนะนำสั้น ๆ เกี่ยวกับ Mist ให้ฟังก่อนนะครับ เจ้าตัว Mist เนี่ยมันเป็น application ที่จริงๆแล้วเหมือน web browser เลยสามารถใช้ท่องเว็บก็ได้ แถมถ้าเว็บนั้น ๆ มีการเรียก library web3.js Mist ก็จะรู้จักทันทีเพราะมัน include อยู่ในตัวเองด้วย แถมเจ้า Mist นี่เราสามารถใช้เป็นกระเป๋าตังได้ เอามาใช้ทำ mining ได้ และยังใช้เล่นกับ Smart Contract ได้ (โหลดได้จาก https://github.com/ethereum/mist/releases ครับ)

สำหรับการ deploy Smart contract ด้วย Mist นั้น ให้เราไปที่เมนู CONTRACTS ที่อยู่บริเวณด้านขวาบน ๆ ก่อนครับ

เมื่อเข้ามาแล้วก็จะมาสู่หน้าที่ให้เล่นอะไรเกี่ยวกับ Smart contract ซึ่งตอนนี้เป้าหมายเราคือจะ deploy ก็ต้องไปที่เมนู deploy ครับ ก็ให้เรากดที่ปุ่ม DEPLOY NEW CONTRACT เลย

โดยถ้าเข้ามาแล้วก็จะได้หน้าตาประมาณนี้

พอมาที่หน้านี้แล้วจะเห็นได้ว่าที่ช่องให้ใส่ code นั้น มันก็มี code ตัวอย่างมาให้ดูอยู่แล้ว ซึ่งจริง ๆ แล้ว code ที่เราต้องการ deploy จะมาเขียนในช่องนี้เลยก็ได้ ตัว Mist เองก็สามารถแจ้งจุดผิดพลาดของ code ได้เช่นกัน แต่ในมุมมองผมนั้น ไปเขียนที่ online editor ที่ผมแนะนำมันเหมือนจะเขียนสะดวกกว่าครับ แหะๆ

ทีนี้เราก็เอา code Hello world เรามาใส่ตรงช่องใส่ code นี้เลย (อาจสังเกตเห็นว่าข้างบนช่องนั้น ให้เราเลือกใส่ได้ว่าจะใส่ code ในช่องนี้แบบ ภาษา solidity หรือแบบ byte code อันนี้ก็แล้วแต่ที่จะใช้เลยครับ)

พอเราใส่ code แล้วทางด้านขวามือของช่องจะมี dropdown ให้เราเลือก contract ที่เราจะ deploy (อาจถามว่าทำไมต้องเลือก จริง ๆ แล้วในช่องนี้เราสามารถเขียน contract ลงไปได้มากกว่า 1 contract ครับ ซึ่งกรณีที่จะใส่มากกว่า 1 contract นั้น อาจเป็นเราเขียน contract นึงมาก่อนแล้ว อีก contract นึงทำการ extend contract แรกมา อะไรประมาณนี้ เราก็เลยต้องเลือก contract ที่จะ deploy ซึ่งก็คือ contract ที่จะทำงานเมื่อมีการเรียก address ของ contract ครับ)

จะเห็นได้ว่าตรงค่า FEE สำหรับการ deploy นั้นมันจะคำนวณให้ด้วยว่าต้องใช้เท่าไหร่ดี เราจะปรับเพิ่มหรือลดก็ได้ ซึ่งถ้าเพิ่ม miner ก็จะมาช่วยทำ transaction การ deploy ของเราเร็ว ถ้าน้อยก็ทำช้าครับ ซึ่ง account ที่จะเอามาทำการ deploy code นี่อย่าลืมต้องมีเงินให้เพียงพอก่อนด้วยนะครับ ถ้าไม่พอก็ mine เอากรณีจะเล่นในวง  Testnet นะ เพราะถ้าวงจริง mine น่าจะยากครับ กว่าจะได้เงินมา น่าจะต้องไปซื้อ Ether เอาน่าจะง่ายกว่า

เมื่อเราใส่ code เลือก contract ที่จะ deploy พร้อมทั้งกำหนดค่า FEE เรียบร้อยแล้ว ก็ถึงเวลา deploy ครับ ซึ่งก็กดที่ปุ่ม   deploy ด้านล่างได้เลย

เมื่อเรากดปุ่ม Deploy แล้วจะมี  popup มาให้เราใส่ password ของ account ที่ใช้ deploy ก็ใส่เอา ของใครของมันนะครับ ^^

พอเราใส่ password แล้วมัน deploy เรียบร้อยแล้วโปรแกรม Mist จะเด้งกลับมาที่หน้า Wallets  และจะแสดง Transaction ที่เราได้ deploy contract ไปเมื่อกี้นี้ ก็เป็นอันเสร็จพิธีการ deploy

หลังจากที่ deploy contract เรียบร้อยแล้ว ลองกลับไปที่หน้า Contracts ในโปรแกรม Mist อีกครั้งนึง ก็จะเห็นว่า Contract ที่เรา Deploy ไปขึ้นมาและพร้อมทั้งแสดงเงินของ Contract และ Address ของมัน

เรียบร้อยแล้วครับ สำหรับการ Deploy Contract ด้วยโปรแกรม Mist ไม่ยากเลยใช่ไหมครับ แต่อย่าลืมนะ ว่าถ้าเราจะ Deploy ต้องมีเงินสำหรับจ่ายค่า FEE ให้พอด้วยนะครับ และ Contract เมื่อขึ้นแล้วขึ้นเลย จะลบไม่ได้ ฉะนั้น  Code ที่เขียนมาขอให้ Test ให้ดี ๆ ก่อน และอีกอย่างนึง Code ของ Smart Contract ทุกคนบนโลก Ethereum สามารถเข้ามาดูได้หมด ฉะนั้นแล้ว เวลาเขียน Smart contract อยากให้คำนึงเรื่อง Data privacy นิดนึงด้วยนะครับ ^__^