ข้ามไปยังเนื้อหาหลัก

สมาร์ตคอนแทรกต์อธิบาย: มันทำงานอย่างไรและเหตุใดจึงมีความสำคัญ

สมาร์ตคอนแทรกต์คือโปรแกรมที่ทำการปฏิบัติงานด้วยตนเองและเก็บไว้บนบล็อกเชนที่บังคับใช้เงื่อนไขของข้อตกลงโดยอัตโนมัติเมื่อตรงตามเงื่อนไขที่กำหนดไว้ก่อน ซึ่งแตกต่างจากสัญญาแบบดั้งเดิมที่ต้องมีทนายความ ศาลและตัวกลางในการบังคับใช้ สมาร์ตคอนแทรกต์จะทำการปฏิบัติงานเป็นอิสระโดยอิงจากโค้ด — "โค้ดคือกฎหมาย" ในความหมายที่แท้จริงที่สุด

สมาร์ตคอนแทรกต์เป็นรากฐานของนวัตกรรมบล็อกเชนที่สำคัญเกือบทั้งหมดนอกเหนือจากการโอนมูลค่าอย่างง่ายๆ: การเงินแบบกระจายศูนย์ (DeFi) โทเค็นที่ไม่สามารถแทนที่ได้ (NFTs) องค์กรอิสระแบบกระจายศูนย์ (DAOs) มาตรฐานโทเค็น เกมมิ่ง และอีกมากมาย การทำความเข้าใจวิธีการทำงานของสมาร์ตคอนแทรกต์เป็นสิ่งจำเป็นสำหรับทุกคนที่นำทางระบบสกุลเงินดิจิทัลสมัยใหม่

แนวคิดเบื้องหลังสมาร์ตคอนแทรกต์​

วิสัยทัศน์ของ Nick Szabo (1994)​

คำว่า "สมาร์ตคอนแทรกต์" ถูกคิดค้นโดยนักวิทยาศาสตร์คอมพิวเตอร์และนักเข้ารหัส Nick Szabo ในปี 1994 นั่นคือหลายปีก่อนที่บล็อกเชนมีอยู่ Szabo อธิบายสมาร์ตคอนแทรกต์ว่าเป็น "ชุดสัญญา ระบุในรูปแบบดิจิทัล รวมถึงโปรโตคอลที่ภายในนั้นผู้เข้าร่วมปฏิบัติตามสัญญาเหล่านี้"

เขาใช้การเปรียบเทียบกับเครื่องขายสินค้า: คุณใส่จำนวนเงินที่ต้องการ เลือกสินค้า และเครื่องจะส่งมอบสินค้าโดยอัตโนมัติ ไม่มีผู้ขาย ไม่มีการเจรจาต่อรอง ไม่ต้องมีความเชื่อ — กลไกนั้นเองที่บังคับใช้การทำธุรกรรม สมาร์ตคอนแทรกต์ขยายแนวคิดนี้ไปยังข้อตกลงที่ซับซ้อนโดยพลการ

จากทฤษฎีสู่ความเป็นจริง​

แม้ว่าแนวคิดของ Szabo จะเป็นสิ่งที่มองเห็นไกล แต่เทคโนโลยีในการนำไปใช้ไม่มีอยู่จนกระทั่งบล็อกเชนให้สภาพแวดล้อมการทำงานที่กระจายศูนย์และป้องกันการแก้ไข Bitcoin ได้รวมภาษาสคริปต์ที่จำกัด (Bitcoin Script) ซึ่งใช้ได้กับการใช้จ่ายตามเงื่อนไขพื้นฐาน — ข้อกำหนดหลายลายเซ็น การทำธุรกรรมที่ล็อกตามเวลา — แต่มันถูกจำกัดไว้อย่างจงใจและไม่ใช่ Turing-complete

ความก้าวหน้าครั้งใหญ่มาจาก Ethereum ซึ่งเปิดตัวในปี 2015 โดย Vitalik Buterin และคนอื่นๆ Ethereum ถูกออกแบบตั้งแต่ต้นเพื่อเป็น "คอมพิวเตอร์โลก" — แพลตฟอร์มระดับโลกแบบกระจายศูนย์สำหรับการทำงานของสมาร์ตคอนแทรกต์ตามอำเภอใจ

วิธีการทำงานของสมาร์ตคอนแทรกต์​

การปรับใช้​

สมาร์ตคอนแทรกต์เริ่มต้นจากซอร์สโค้ดที่เขียนในภาษาการเขียนโปรแกรมที่ออกแบบสำหรับบล็อกเชน บน Ethereum ภาษาที่เด่นที่สุดคือ Solidity แม้ว่ามีทางเลือกอื่นๆ เช่น Vyper (ไวยากรณ์ที่เหมือน Python) Yul (ระดับต่ำ) และ Fe ก็มีอยู่

กระบวนการปรับใช้:

  1. เขียนโค้ด: นักพัฒนาเขียนตรรกะสมาร์ตคอนแทรกต์ใน Solidity หรือภาษาอื่น
  2. คอมไพล์: ซอร์สโค้ดจะถูกคอมไพล์เป็น bytecode — คำสั่งระดับต่ำที่ Ethereum Virtual Machine (EVM) สามารถทำการปฏิบัติงาน
  3. ปรับใช้: bytecode ถูกส่งไปยังบล็อกเชนเป็นธุรกรรมปรับใช้พิเศษ ธุรกรรมนี้สร้างบัญชีสัญญาใหม่ที่ที่อยู่ที่ไม่ซ้ำกัน
  4. การจัดเก็บแบบไม่เปลี่ยนแปลง: เมื่อปรับใช้แล้ว รหัสสัญญาจะถูกเก็บไว้ถาวรบนบล็อกเชน ไม่สามารถแก้ไขได้ (แม้ว่ารูปแบบที่ปรับปรุงได้จะมีอยู่โดยใช้สัญญาพร็อกซี)

การปฏิบัติงาน​

เมื่อผู้ใช้หรือสัญญาอื่นโต้ตอบกับสมาร์ตคอนแทรกต์:

  1. ธุรกรรมจะถูกส่งไปยังที่อยู่ของสัญญาพร้อมกับข้อมูลการเรียกใช้ฟังก์ชันที่เข้ารหัส
  2. ธุรกรรมจะถูกรวมไว้ในบล็อกโดยตัวตรวจสอบ
  3. Ethereum Virtual Machine (EVM) ทำการปฏิบัติงาน bytecode ของสัญญา
  4. สัญญาจะอ่านสถานะที่เก็บไว้ ทำการคำนวณ และปรับปรุงสถานะตามความจำเป็น
  5. ผลลัพธ์ (การเปลี่ยนแปลงสถานะ เหตุการณ์ ค่าที่ส่งคืน) จะถูกบันทึกบนบล็อกเชน
  6. ผู้ใช้จ่าย ค่า gas ตามสัดส่วนของทรัพยากรการคำนวณที่ใช้ไป

Ethereum Virtual Machine (EVM)​

EVM คือสภาพแวดล้อมรันไทม์สำหรับสมาร์ตคอนแทรกต์บน Ethereum และเชนที่เข้ากันได้กับ EVM (BNB Smart Chain, Polygon, Avalanche C-Chain, Arbitrum, Optimism และอื่นๆ อีกมากมาย) คุณสมบัติหลัก:

  • กำหนดได้: ด้วยอินพุตและสถานะเดียวกัน EVM จะสร้างผลลัพธ์เดียวกันเสมอ สิ่งนี้จำเป็นเนื่องจากทุกโหนดต้องคำนวณผลลัพธ์เดียวกันอย่างอิสระ
  • แยกกันแบบ Sandbox: สัญญาทำงานเป็นอิสระและไม่สามารถเข้าถึงระบบไฟล์ เครือข่าย หรือทรัพยากรภายนอกอื่นๆ ได้โดยตรง
  • วัดได้: ทุกการดำเนินการมีค่าใช้พลังงาน ซึ่งป้องกันลูปที่ไม่สิ้นสุดและการโจมตีปฏิเสธการให้บริการ
  • ใช้สแต็ก: EVM ใช้สถาปัตยกรรมที่ใช้สแต็กโดยมีขนาดคำ 256 บิต ซึ่งเหมาะสำหรับการดำเนินการเข้ารหัส

ค่า Gas และค่าใช้จ่ายในการปฏิบัติงาน​

Gas คือหน่วยวัดความพยายามในการคำนวณบน Ethereum ทุกการดำเนินการ EVM (opcode) มีค่า gas คงที่:

การดำเนินการค่า Gas
การบวก (ADD)3
การคูณ (MUL)5
การเขียนที่เก็บข้อมูล (SSTORE)20,000 (ใหม่) / 5,000 (อัปเดต)
การเรียกใช้ภายนอก (CALL)2,600+
การสร้างสัญญา (CREATE)32,000+

ผู้ใช้ระบุ ขีดจำกัด gas (gas สูงสุดที่พวกเขาเต็มใจจะใช้) และ ราคา gas (ราคาที่พวกเขาจ่ายต่อหน่วย gas) หากการปฏิบัติงานของสัญญาเกินขีดจำกัด gas การทำธุรกรรมจะกลับคืนสู่สถานะเดิม แต่ค่า gas จะยังคงเรียกเก็บ กลไกนี้ป้องกันลูปที่ไม่สิ้นสุดและรับประกันว่าตัวตรวจสอบได้รับการชดเชยสำหรับการทำงาน

โครงสร้างของสมาร์ตคอนแทรกต์​

นี่คือสมาร์ตคอนแทรกต์ Solidity ที่ทำให้ง่ายขึ้นเพื่อแสดงให้เห็นส่วนประกอบหลัก:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract SimpleEscrow {
address public buyer;
address public seller;
uint256 public amount;
bool public isComplete;

event FundsDeposited(address indexed buyer, uint256 amount);
event FundsReleased(address indexed seller, uint256 amount);

constructor(address _seller) {
buyer = msg.sender;
seller = _seller;
}

function deposit() external payable {
require(msg.sender == buyer, "Only buyer can deposit");
require(amount == 0, "Already deposited");
amount = msg.value;
emit FundsDeposited(buyer, msg.value);
}

function confirmReceipt() external {
require(msg.sender == buyer, "Only buyer can confirm");
require(amount > 0, "No funds deposited");
require(!isComplete, "Already completed");

isComplete = true;
payable(seller).transfer(amount);
emit FundsReleased(seller, amount);
}
}

สัญญานี้แสดงให้เห็นแนวคิดหลักหลายประการ:

  • ตัวแปรสถานะ (buyer, seller, amount, isComplete) ยังคงอยู่บนบล็อกเชน
  • เหตุการณ์ (FundsDeposited, FundsReleased) ส่งบันทึกที่แอปพลิเคชันภายนอกสามารถติดตามได้
  • การควบคุมการเข้าถึง (ข้อความ require) รับประกันว่าเฉพาะฝ่ายที่ได้รับอนุญาตเท่านั้นที่สามารถเรียกใช้ฟังก์ชันบางอย่างได้
  • การโอนมูลค่า (transfer) ย้าย ETH ระหว่างที่อยู่
  • ตรรกะที่ไม่เปลี่ยนแปลง: เมื่อปรับใช้แล้ว กฎเหล่านี้ไม่สามารถเปลี่ยนแปลงได้โดยใครๆ — แม้แต่ผู้สร้างสัญญา

แพลตฟอร์มสมาร์ตคอนแทรกต์​

แม้ว่า Ethereum จะเป็นผู้บุกเบิกสมาร์ตคอนแทรกต์ แต่แพลตฟอร์มมากมายรองรับพวกมันแล้ว:

เชนที่เข้ากันได้กับ EVM​

เชนเหล่านี้ใช้สถาปัตยกรรม EVM เดียวกันและรองรับ Solidity:

  • BNB Smart Chain (BSC): ค่าธรรมเนียมต่ำกว่า บล็อกที่เร็วขึ้น กระจายศูนย์น้อยลง
  • Polygon PoS: Ethereum sidechain ที่มีค่าธรรมเนียมต่ำ
  • Avalanche C-Chain: เชน EVM ที่มีปริมาณงานสูงพร้อมการสิ้นสุดที่เร็วกว่าวินาที
  • Arbitrum / Optimism: Ethereum Layer 2 rollups ที่มีความปลอดภัยของ Ethereum แบบสืบทอด
  • Base: Layer 2 ของ Coinbase ที่สร้างบน OP Stack ของ Optimism

แพลตฟอร์มที่ไม่ใช่ EVM​

  • Solana: ใช้ Rust และ C สำหรับสมาร์ตคอนแทรกต์ (เรียกว่า "โปรแกรม") พร้อมกับรูปแบบการปฏิบัติงานแบบขนานที่ไม่ซ้ำใคร
  • Cardano: ใช้ Plutus ที่ใช้ Haskell สำหรับสมาร์ตคอนแทรกต์ โดยเน้นการตรวจสอบอย่างเป็นทางการ
  • Polkadot: ใช้ ink! (ที่ใช้ Rust) สำหรับสมาร์ตคอนแทรกต์บน parachain ecosystem
  • Cosmos: สมาร์ตคอนแทรกต์ผ่าน CosmWasm (ที่ใช้ Rust) บนเชน Cosmos SDK
  • Near Protocol: ใช้ Rust และ AssemblyScript พร้อมสถาปัตยกรรมที่แบ่งส่วน
  • Tezos: ใช้ Michelson ซึ่งเป็นภาษาที่ใช้สแต็กระดับต่ำพร้อมความสามารถในการตรวจสอบอย่างเป็นทางการ

การประยุกต์ใช้ในโลกจริง​

การเงินแบบกระจายศูนย์ (DeFi)​

สมาร์ตคอนแทรกต์ขับเคลื่อน DeFi ecosystem ทั้งหมด:

  • Automated Market Makers (AMMs): Uniswap, Curve และ SushiSwap ใช้สมาร์ตคอนแทรกต์เพื่อสร้างการแลกเปลี่ยนโทเค็นแบบกระจายศูนย์โดยไม่มีหนังสือคำสั่ง ผู้ให้สภาพคล่องฝากคู่โทเค็นลงในสระ และสูตรทางคณิตศาสตร์กำหนดราคาโดยอัตโนมัติ
  • โปรโตคอลการให้ยืม: Aave, Compound และ MakerDAO ใช้สมาร์ตคอนแทรกต์เพื่อให้สามารถให้ยืมและยืมเงินโดยไม่ต้องขอความอนุญาต ผู้ใช้ฝากหลักประกัน และยืมเงินจากหลักประกัน โดยอัตราดอกเบี้ยถูกกำหนดโดยอัตโนมัติ
  • Stablecoin: DAI คือ stablecoin ที่กระจายศูนย์ที่สร้างขึ้นโดยการฝากหลักประกันลงในสมาร์ตคอนแทรกต์ MakerDAO ระบบจัดการการชำระหนี้อย่างอัตโนมัติเมื่อมูลค่าหลักประกันลดลง
  • ตัวรวมผลประโยชน์: Yearn Finance และโปรโตคอลที่คล้ายกันใช้สมาร์ตคอนแทรกต์เพื่อย้ายกองทุนระหว่างโปรโตคอล DeFi โดยอัตโนมัติ เพื่อเพิ่มประสิทธิภาพผลตอบแทน

โทเค็นที่ไม่สามารถแทนที่ได้ (NFTs)​

NFTs คือสมาร์ตคอนแทรกต์ (โดยปกติจะปฏิบัติตามมาตรฐาน ERC-721 หรือ ERC-1155) ที่แสดงความเป็นเจ้าของสินค้าดิจิทัลที่ไม่ซ้ำใคร สมาร์ตคอนแทรกต์จัดการการสร้าง การโอน และการติดตามต้นกำเนิดของแต่ละโทเค็น

องค์กรอิสระแบบกระจายศูนย์ (DAOs)​

DAOs คือองค์กรที่ปกครองไปโดยสมาร์ตคอนแทรกต์ทั้งหมด ผู้ถือโทเค็นลงคะแนนเสียงเพื่อเสนอ (การจัดสรรเงินทุน การเปลี่ยนแปลงพารามิเตอร์ การตัดสินใจด้านกลยุทธ์) และสมาร์ตคอนแทรกต์จะดำเนินการตัดสินใจที่ชนะโดยอัตโนมัติ สิ่งนี้ช่วยให้การปกครองที่กระจายศูนย์โดยไม่มีโครงสร้างองค์กรดั้งเดิม

มาตรฐานโทเค็น​

สมาร์ตคอนแทรกต์กำหนดอินเทอร์เฟซโทเค็นมาตรฐาน:

  • ERC-20: โทเค็นที่ใช้แทนกันได้ (ใช้โดยสกุลเงินดิจิทัลหลายพันรายการ)
  • ERC-721: โทเค็นที่ไม่สามารถแทนที่ได้ (สินค้าดิจิทัลเฉพาะ)
  • ERC-1155: มาตรฐานโทเค็นหลายตัว (ทั้งสินค้าที่ใช้แทนกันได้และไม่สามารถแทนที่ได้)
  • ERC-4626: โทเค็นชุดผลตอบแทนสำหรับสินค้าที่ให้ผลตอบแทน

ประกันภัย​

สมาร์ตคอนแทรกต์ประกันภัยแบบพารามิเตอร์จ่ายเงินโดยอัตโนมัติเมื่อตรงตามเงื่อนไขที่กำหนดไว้ล่วงหน้า — ตัวอย่างเช่น สัญญาประกันภัยสำหรับการล่าช้าของเที่ยวบินที่ทำให้เกิดการชำระเงินเมื่อข้อมูลเที่ยวบินยืนยันการล่าช้านอกเหนือกว่าเกณฑ์

เกมและ Metaverse​

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

ความปลอดภัยของสมาร์ตคอนแทรกต์​

ความปลอดภัยของสมาร์ตคอนแทรกต์มีความสำคัญอย่างยิ่งเนื่องจากสัญญาปรับใช้จัดการมูลค่าจริง ไม่สามารถแก้ไขได้ และทำงานในสภาพแวดล้อมที่มีการต่อต้าน

ช่องโหว่ทั่วไป​

Reentrancy: สัญญาที่ปลายทางร้าย เรียกกลับเข้าไปในสัญญาที่มีช่องโหว่ก่อนการปฏิบัติงานครั้งแรกสำเร็จ ซึ่งจะทำให้สถานะเสื่อมสลาย การโจมตี DAO ปี 2016 ใช้ประโยชน์จากช่องโหว่นี้ ดึง ETH มูลค่า $60 ล้าน และนำไปสู่ Ethereum/Ethereum Classic hard fork

Integer overflow/underflow: ก่อน Solidity 0.8.0 การดำเนินการทางคณิตศาสตร์สามารถ overflow หรือ underflow โดยเงียบ ส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิด Solidity สมัยใหม่รวมการตรวจสอบ overflow ที่สร้างไว้

ข้อบกพร่องในการควบคุมการเข้าถึง: การควบคุมการเข้าถึงที่หายไปหรือไม่ถูกต้องอนุญาตให้ผู้ใช้ที่ไม่ได้รับอนุญาตเรียกใช้ฟังก์ชันพิเศษ (เช่นการถอนเงินหรือการเปลี่ยนความเป็นเจ้าของ)

การจัดการข้อมูลหลัก: สมาร์ตคอนแทรกต์ที่ขึ้นอยู่กับข้อมูลภายนอก (ฟีดราคา) สามารถถูกใช้ประโยชน์ได้หากจัดการข้อมูลหลัก การโจมตี Flash loan มักใช้ประโยชน์จากช่องโหว่จัดการข้อมูลหลักเพื่อสร้างความแตกต่างในราคาโดยอุตรัตถ์

Front-running: เนื่องจากธุรกรรมที่