สมาร์ตคอนแทรกต์คืออะไร?
สมาร์ตคอนแทรกต์ (smart contract) คือโปรแกรมที่เก็บไว้บนบล็อกเชนและทำงานเมื่อมีคนเรียกใช้ มันไม่ได้ฉลาด (smart) และในทางกฎหมายก็ไม่ใช่สัญญา (contract) ด้วย ให้นึกถึงตู้กดสินค้าอัตโนมัติ: ใส่สิ่งที่ถูกต้องเข้าไป สิ่งที่กำหนดไว้ก็จะออกมา โดยไม่ต้องมีใครอนุมัติ
คุณสมบัติที่สำคัญ
- กำหนดผลแน่นอน (deterministic): การเรียกใช้แบบเดียวกันในสถานะเดียวกันจะให้ผลลัพธ์เดียวกันเสมอ
- เป็นสาธารณะ: ใครก็อ่านไบต์โค้ด (bytecode) ที่ดีพลอยแล้วได้ และโดยทั่วไปก็อ่านซอร์สโค้ดได้ด้วย
- ทำงานได้เอง: เมื่อดีพลอยแล้วมันจะทำงานโดยไม่ต้องพึ่งผู้เขียน และหลายครั้งก็ไม่มีวิธีใดหยุดมันได้เลย
"Code is law" (โค้ดคือกฎหมาย) เป็นคำเตือน ไม่ใช่สโลแกน
คอนแทรกต์ทำตามสิ่งที่โค้ดเขียนไว้ ไม่ได้ทำตามสิ่งที่ผู้เขียนตั้งใจ ไม่มีข้อกำหนดเรื่องเจตนา และไม่มีผู้พิพากษาให้ร้องเรียน ถ้าโค้ดเปิดช่องให้ใครสักคนดูดเงินออกไปจนหมดได้ นั่นไม่ถือเป็นการละเมิดคอนแทรกต์ เพราะนั่นคือคอนแทรกต์ที่กำลังทำงานตามที่เขียนไว้
นี่คือเหตุผลที่ต้องมีการออดิต (audit) และเป็นเหตุผลที่คอนแทรกต์ซึ่งยังไม่ผ่านการออดิตแต่ถือเงินจริงอยู่ถือเป็นความเสี่ยงจริง ไม่ใช่แค่เอกสารที่ขาดไป อีกทั้งยังเป็นเหตุผลที่วลี "คอนแทรกต์ verify ซอร์สโค้ดแล้ว" (the contract is verified) มีความหมายเพียงว่าซอร์สโค้ดที่เผยแพร่ตรงกับไบต์โค้ดที่ดีพลอยจริง วลีนี้ไม่ได้บอกอะไรเลยว่าซอร์สโค้ดนั้นปลอดภัยหรือไม่
คำว่า verified หมายถึง "นี่คือโค้ดที่กำลังทำงานอยู่จริง" ไม่ได้หมายถึง "โค้ดนี้ปลอดภัย" และการเข้าใจสองอย่างนี้สลับกันทำให้ผู้คนเสียเงินไปแล้วเป็นจำนวนมาก