สมาร์ตคอนแทรกต์คืออะไร?
สมาร์ตคอนแทรกต์คืออะไร? เรียนรู้ว่าโปรแกรมบนบล็อกเชนที่ทำงานได้เองทำงานอย่างไร ขับเคลื่อนอะไรบ้าง มีข้อจำกัดและความเสี่ยงอะไร และจะตรวจสอบได้อย่างไรก่อนใช้งาน
สมาร์ตคอนแทรกต์คือโปรแกรมที่จัดเก็บอยู่บนบล็อกเชนและทำงานโดยอัตโนมัติเมื่อเงื่อนไขที่กำหนดไว้ล่วงหน้าเป็นจริง โปรแกรมนี้สามารถถือครองและโอนเงินได้ตามโค้ดของมัน โดยไม่ต้องมีธนาคาร โบรกเกอร์ หรือตัวกลางอื่นใดมาตัดสินว่าจะดำเนินการแต่ละขั้นตอนหรือไม่
สมาร์ตคอนแทรกต์เป็นกลไกเบื้องหลังเกือบทุกอย่างในโลกคริปโตที่มากกว่าการชำระเงินธรรมดา ไม่ว่าจะเป็นโทเคน ตลาดแลกเปลี่ยนแบบกระจายศูนย์ โปรโตคอลกู้ยืม NFT และ DAO การเข้าใจว่าสมาร์ตคอนแทรกต์ทำอะไรได้และทำอะไรไม่ได้ จะช่วยให้คุณประเมินทั้งโอกาสและความเสี่ยงในการใช้งานได้
สมาร์ตคอนแทรกต์ทำงานอย่างไร
แนวคิดเรื่องสัญญาที่บังคับใช้ด้วยโค้ดได้รับการอธิบายโดยนักวิทยาศาสตร์คอมพิวเตอร์ Nick Szabo ในช่วงทศวรรษ 1990 โดยเปรียบเทียบกับตู้หยอดเหรียญ: ใส่เหรียญให้ถูกต้อง เลือกสินค้า แล้วตู้จะจ่ายสินค้าออกมาโดยไม่ต้องมีพนักงานขาย
บนบล็อกเชน กระบวนการมีลักษณะดังนี้
- 1นักพัฒนาเขียนโค้ด เช่น ใช้ Solidity สำหรับ Ethereum หรือใช้ Rust สำหรับเครือข่ายอื่นบางเครือข่าย
- 2โค้ดถูก deploy ผ่านธุรกรรมหนึ่งรายการ และได้รับแอดเดรสของตัวเอง
- 3ผู้ใช้เรียกใช้สัญญา โดยส่งธุรกรรมไปยังแอดเดรสนั้น ซึ่งมักแนบโทเคนไปด้วย
- 4ทุกโหนดรันโค้ด และเห็นพ้องกันเกี่ยวกับผลลัพธ์ ผลลัพธ์จึงเหมือนกันสำหรับทุกคน
- 5สถานะของสัญญาได้รับการอัปเดต — ยอดคงเหลือ บันทึกความเป็นเจ้าของ หรือการตั้งค่าเปลี่ยนแปลงบนเชน
แต่ละขั้นตอนมีค่าธรรมเนียมเครือข่าย บน Ethereum ค่าธรรมเนียมนี้เรียกว่า gas ดูวิธีการทำงานได้ที่ gas ใน Ethereum คืออะไร
สมาร์ตคอนแทรกต์ใช้ทำอะไร
| การใช้งาน | สัญญาทำอะไร | ตัวอย่าง |
|---|---|---|
| โทเคน | ติดตามยอดคงเหลือและการโอน | สัญญาโทเคน ERC-20 |
| ตลาดแลกเปลี่ยนแบบกระจายศูนย์ | ถือพูลโทเคนและกำหนดราคาการซื้อขายด้วยสูตร | Automated market maker (AMM) |
| การกู้ยืม | รับหลักประกัน ปล่อยกู้ และชำระบัญชีสถานะที่มีความเสี่ยง | ตลาดเงิน DeFi |
| NFT | บันทึกความเป็นเจ้าของสิ่งของที่มีเพียงชิ้นเดียว | สัญญา NFT ของคอลเลกชัน |
| DAO | นับคะแนนโหวตและดำเนินการตามข้อเสนอที่ได้รับอนุมัติ | สัญญาการกำกับดูแลบนเชน |
| กระเป๋าเงินแบบ multisig | ต้องได้รับการอนุมัติหลายรายการจึงจะโอนเงินได้ | คลังเงินของโปรเจกต์ |
สัญญาเหล่านี้หลายตัวเรียกใช้กันและกัน นั่นคือเหตุผลที่บางครั้ง DeFi ถูกเรียกว่า “เลโก้ทางการเงิน” คู่มือ DeFi ของเราแสดงให้เห็นว่าชิ้นส่วนเหล่านี้ประกอบเข้าด้วยกันอย่างไร
สมาร์ตคอนแทรกต์เทียบกับสัญญาแบบดั้งเดิม
การเปรียบเทียบสมาร์ตคอนแทรกต์กับสัญญากระดาษที่คนส่วนใหญ่คุ้นเคยจะช่วยให้เข้าใจง่ายขึ้น
| สัญญาแบบดั้งเดิม | สมาร์ตคอนแทรกต์ | |
|---|---|---|
| เขียนด้วย | ภาษามนุษย์ | โค้ดโปรแกรม |
| บังคับใช้โดย | ศาล สถาบัน และความสุจริตใจของคู่สัญญา | เครือข่ายบล็อกเชนที่รันโค้ด |
| ความยืดหยุ่น | เจรจาใหม่หรือตีความได้ | ทำงานตามที่เขียนไว้ทุกประการ เว้นแต่จะสร้างให้อัปเกรดได้ |
| ความโปร่งใส | มักเป็นความลับ | โค้ดและกิจกรรมมักเปิดเผยต่อสาธารณะบนเชน |
| การจัดการข้อพิพาท | ผู้พิพากษา อนุญาโตตุลาการ ทนายความ | ไม่มีกลไกในตัวสำหรับจัดการข้อพิพาทนอกเหนือจากโค้ด |
| ความเร็ว | หลายวันถึงหลายเดือนกว่าจะชำระราคา | ไม่กี่วินาทีถึงไม่กี่นาที ขึ้นอยู่กับเครือข่าย |
จุดแข็งคือความเร็ว ความโปร่งใส และการตัดตัวกลางออกไป จุดอ่อนคือความแข็งตัว: โค้ดไม่สามารถชั่งน้ำหนักความเป็นธรรมหรือบริบทได้ หากเกิดสิ่งที่ไม่คาดคิดซึ่งนักพัฒนาไม่ได้วางแผนไว้ สัญญาก็จะทำตามกฎของมันเท่านั้น — แม้ผลลัพธ์จะไม่ใช่สิ่งที่ใครตั้งใจอย่างชัดเจนก็ตาม เราอธิบายเรื่องนี้โดยละเอียดใน Testnet และ mainnet คืออะไร?
ใครเป็นผู้เขียนและควบคุมสมาร์ตคอนแทรกต์
ใครก็สามารถ deploy สมาร์ตคอนแทรกต์ได้ บล็อกเชนสาธารณะไม่มีกระบวนการอนุมัติ ความเปิดกว้างนี้ทำให้เกิดนวัตกรรมได้รวดเร็ว แต่ก็หมายความว่าสัญญาหลอกลวงสามารถ deploy ได้ง่ายพอ ๆ กับสัญญาที่ถูกต้องตามจริง เมื่อ deploy แล้ว การควบคุมขึ้นอยู่กับวิธีเขียนสัญญา บางสัญญาไม่มีเจ้าของเลย บางสัญญาถูกควบคุมโดยกระเป๋าเงินเพียงใบเดียว และบางสัญญาถูกควบคุมโดย multisig หรือการโหวตของ DAO ที่มีการหน่วงเวลา การรู้ว่าใช้รูปแบบใดเป็นส่วนสำคัญของการประเมินความเสี่ยงของแอปใด ๆ อ่านเพิ่มเติม: การโจมตีช่องโหว่สมาร์ตคอนแทรกต์
สิ่งที่สมาร์ตคอนแทรกต์ทำไม่ได้
สมาร์ตคอนแทรกต์ทรงพลัง แต่มีขอบเขตแคบ
- รู้จักเฉพาะข้อมูลบนเชน หากต้องการใช้ข้อมูลจากโลกจริง เช่น ราคาหรือผลการแข่งขันกีฬา ต้องพึ่ง ออราเคิล ซึ่งนำข้อมูลภายนอกเข้ามาบนเชน และอาจล้มเหลวหรือถูกบิดเบือนได้
- ไม่เข้าใจเจตนา หากคุณส่งเงินไปยังฟังก์ชันที่ผิด หรือเซ็นอนุมัติที่เป็นอันตราย สัญญาจะทำตามที่โค้ดกำหนด
- ไม่ได้เป็นสัญญาทางกฎหมายโดยอัตโนมัติ การทำงานของโค้ดกับการบังคับใช้ทางกฎหมายเป็นคนละเรื่องกัน
- ไม่สามารถย้อนความผิดพลาดได้ ธุรกรรมที่เสร็จสมบูรณ์แล้วโดยปกติจะคงสถานะเสร็จสมบูรณ์
ความเสี่ยงของการใช้สมาร์ตคอนแทรกต์
บั๊กและการโจมตีช่องโหว่
โค้ดเขียนโดยมนุษย์ และความผิดพลาดย่อมเกิดขึ้นได้ ผู้โจมตีค้นหาช่องโหว่และสามารถดูดเงินออกไปได้ในธุรกรรมเดียว การตรวจสอบ (audit) ช่วยได้แต่รับประกันความปลอดภัยไม่ได้ — ดู วิธีประเมินรายงานการตรวจสอบสมาร์ตคอนแทรกต์
คีย์ผู้ดูแลระบบและการอัปเกรด
สัญญาจำนวนมากอัปเกรดได้ หรือมีฟังก์ชันของเจ้าของที่สามารถหยุดการซื้อขายชั่วคราว เปลี่ยนค่าธรรมเนียม หรือสร้างโทเคนใหม่ได้ ฟังก์ชันเหล่านี้ช่วยปกป้องผู้ใช้ในยามฉุกเฉินได้ แต่ก็เปิดโอกาสให้เกิดการใช้อำนาจในทางที่ผิดหรือคีย์ผู้ดูแลระบบถูกขโมย อ่านเพิ่มเติม: อธิบาย account abstraction
สัญญาที่เป็นอันตราย
โทเคนหลอกลวงอาจมีกฎที่ซ่อนอยู่ เช่น บล็อกการขาย หรือเรียกเก็บภาษีการโอนสูงลิ่ว สัญญาอาจดูปกติบนหน้าโทเคน แต่ในทางปฏิบัติกลับทำงานแตกต่างออกไปมาก ดูเพิ่มเติม: ICO vs IEO vs IDO
การอนุมัติ (approval)
การใช้ DeFi มักต้องอนุมัติให้สัญญาใช้จ่ายโทเคนของคุณ การอนุมัติแบบไม่จำกัดให้กับสัญญาที่มีบั๊กหรือเป็นอันตราย อาจถูกใช้ในภายหลังเพื่อนำโทเคนเหล่านั้นไป หากต้องการศึกษาต่อ อ่าน Mempool คืออะไร?
วิธีตรวจสอบสมาร์ตคอนแทรกต์ก่อนใช้งาน
- 1ยืนยันแอดเดรส จากเว็บไซต์ทางการของโปรเจกต์และแหล่งข้อมูลอิสระ
- 2ค้นหาใน block explorer เพื่อดูวันที่สร้าง กิจกรรม และดูว่าซอร์สโค้ดได้รับการยืนยันแล้วหรือไม่
- 3ตรวจสอบรายงาน audit จากบริษัทที่เป็นที่รู้จัก และอ่านว่าปัญหาที่พบได้รับการแก้ไขแล้วหรือไม่
- 4หาว่าใครควบคุมฟังก์ชันผู้ดูแลระบบ — multisig, timelock หรือกระเป๋าเงินใบเดียว
- 5เริ่มจากจำนวนน้อย และจำกัดการอนุมัติโทเคนให้เท่ากับจำนวนที่คุณต้องใช้
คู่มือของเราเรื่อง วิธียืนยันแอดเดรสสัญญาทางการของโทเคน อธิบายสองขั้นตอนแรกโดยละเอียด
สรุป
สมาร์ตคอนแทรกต์คือโค้ดที่ทำงานได้เองบนบล็อกเชน ซึ่งสามารถถือครองและโอนมูลค่าได้โดยไม่ต้องมีตัวกลาง สิ่งนี้ทำให้การเงินแบบเปิดที่ตั้งโปรแกรมได้เป็นไปได้ แต่ก็หมายความว่าบั๊ก อำนาจผู้ดูแลระบบที่ซ่อนอยู่ และโค้ดที่เป็นอันตรายจะส่งผลทันทีและย้อนกลับไม่ได้ ยืนยันแอดเดรส ทำความเข้าใจว่าใครควบคุมสัญญา และอนุมัติเฉพาะสิ่งที่คุณจำเป็นต้องใช้เท่านั้น
คำถามที่พบบ่อย
สมาร์ตคอนแทรกต์มีผลผูกพันทางกฎหมายหรือไม่?
ไม่ได้มีโดยอัตโนมัติ สมาร์ตคอนแทรกต์คือซอฟต์แวร์ที่ทำงานบนบล็อกเชน ไม่ใช่ข้อตกลงทางกฎหมายในตัวเอง ระบบกฎหมายบางแห่งอาจรับรองข้อตกลงที่บันทึกหรือดำเนินการด้วยโค้ด แต่ขึ้นอยู่กับประเทศและสถานการณ์ หากการบังคับใช้ทางกฎหมายเป็นเรื่องสำคัญ ควรตรวจสอบกฎหมายท้องถิ่นหรือปรึกษาผู้เชี่ยวชาญที่มีคุณสมบัติ
สมาร์ตคอนแทรกต์เปลี่ยนแปลงได้หลังจาก deploy แล้วหรือไม่?
โดยทั่วไปโค้ดที่ deploy แล้วจะแก้ไขไม่ได้ อย่างไรก็ตาม หลายโปรเจกต์ใช้การออกแบบที่อัปเกรดได้ เช่น proxy contract ซึ่งให้ผู้ดูแลระบบชี้ผู้ใช้ไปยังโค้ดใหม่ได้ ความยืดหยุ่นนี้ช่วยแก้บั๊ก แต่ก็หมายความว่ามีใครบางคนถืออำนาจเปลี่ยนกฎ ควรตรวจสอบว่าใครเป็นผู้ควบคุมคีย์อัปเกรดหรือคีย์ผู้ดูแลระบบ
บล็อกเชนใดบ้างที่รองรับสมาร์ตคอนแทรกต์?
Ethereum ทำให้สมาร์ตคอนแทรกต์อเนกประสงค์เป็นที่นิยม และยังมีเครือข่ายอื่นอีกมากที่รองรับ เช่น BNB Chain, Solana, Avalanche, Cardano และเครือข่ายเลเยอร์ 2 ของ Ethereum ส่วน Bitcoin ถูกออกแบบให้รองรับสคริปต์ได้เพียงจำกัด แต่ละแพลตฟอร์มใช้ภาษาและเครื่องมือของตนเอง สัญญาจึงไม่สามารถย้ายข้ามแพลตฟอร์มได้โดยอัตโนมัติ
จะเกิดอะไรขึ้นถ้าสมาร์ตคอนแทรกต์มีบั๊ก?
โค้ดจะทำงานตามที่เขียนไว้ทุกประการ รวมถึงบั๊กด้วย ผู้โจมตีอาจใช้ช่องโหว่นั้นดูดเงินออกไป และโดยทั่วไปธุรกรรมไม่สามารถย้อนกลับได้ บางโปรเจกต์สามารถหยุดชั่วคราวหรืออัปเกรดสัญญาเพื่อจำกัดความเสียหาย ขณะที่สัญญาที่เปลี่ยนแปลงไม่ได้จะแก้ไขไม่ได้เลย การตรวจสอบ (audit) และโครงการ bug bounty ช่วยลดความเสี่ยงนี้ แต่ไม่ได้ขจัดให้หมดไป
