Ethereum Whitepaper Explained: Smart Contract Platform
ในช่วงปลายปี 2013 โปรแกรมเมอร์อายุ 19 ปีคนหนึ่งชื่อ Vitalik Buterin ได้เผยแพร่เอกสารที่จะเปลี่ยนแปลงภูมิทัศน์บล็อกเชน เอกสารนี้มีชื่อว่า "Ethereum: A Next-Generation Smart Contract and Decentralized Application Platform" ซึ่งนำเสนอบล็อกเชนที่สามารถทำได้มากกว่าเพียงการโอนเงิน มันมีวิสัยทัศน์สำหรับ บล็อกเชนสำเร็จรูปและเชื่อมโยงได้ — คอมพิวเตอร์โลกแบบกระจายอำนาจที่สามารถรันแอปพลิเคชันใดๆ ก็ได้ที่เป็นไปได้
คู่มือนี้จะอธิบายแนวคิดหลัก การตัดสินใจด้านการออกแบบ และผลกระทบระยะยาวของ Ethereum whitepaper โดยอธิบายว่าวิสัยทัศน์ของ Vitalik พัฒนาจากข้อเสนอที่ก้าวล้ำไปเป็นพื้นฐานของระบบนิเวศมูลค่าหลายร้อยพันล้านดอลลาร์ได้อย่างไร
บริบททางประวัติศาสตร์
ข้อจำกัดของ Bitcoin
ในปี 2013 Bitcoin ได้พิสูจน์แล้วว่าระบบการโอนมูลค่าแบบกระจายอำนาจและไม่ต้องไว้วางใจได้นั้นเป็นไปได้ อย่างไรก็ตาม ภาษาสคริปต์ของ Bitcoin ถูกจำกัดโดยจงใจ แม้ว่ามันจะสามารถจัดการเงื่อนไขง่ายๆ (multisig, time-locks) แต่มันไม่สามารถสนับสนุนแอปพลิเคชันที่ซับซ้อนได้ อย่างที่ Buterin เขียนไว้:
"ภาษาสคริปต์ตามที่ใช้งานใน Bitcoin มีข้อจำกัดที่สำคัญหลายประการ — มันเป็นระบบสแต็ก โดยพื้นฐาน มี opcode set ที่จำกัดมาก และแม้ว่ามันจะเป็น 'Turing-incomplete' ทางเทคนิค แต่สิ่งนี้ถูกมองว่าเป็นคุณสมบัติมากกว่าข้อบกพร่อง"
นักพัฒนาที่ต้องการสร้างแอปพลิเคชันแบบกระจายอำนาจจะต้องพยายามหาวิธีแก้ปัญหาโดยใช้สคริปต์ของ Bitcoin ที่จำกัด หรือสร้างบล็อกเชนใหม่ทั้งหมดจากศูนย์ — แต่ละตัวมีกลไกฉันทามติ เครือข่าย และแบบจำลองความปลอดภัยของตัวเอง นี่คือการใช้ทรัพยากรอย่างไม่มีประสิทธิภาพและแยกสาขา
ความต้องการสำหรับแพลตฟอร์มสำเร็จรูป
Buterin ระบุโอกาสสำหรับ แพลตฟอร์มเดียว ที่สามารถสนับสนุนแอปพลิเคชันแบบกระจายอำนาจใดๆ แทนที่จะสร้างบล็อกเชนสำหรับแต่ละกรณีการใช้งาน (บล็อกเชนสำหรับพื้นที่เก็บข้อมูล อันหนึ่งสำหรับตัวตน อันหนึ่งสำหรับตลาดการคาดการณ์) ทำไมไม่สร้างบล็อกเชนที่เชื่อมโยงได้หนึ่งตัวที่สามารถทำทุกอย่างได้?
การเปรียบเทียบที่เขาวาดไว้คือการคำนวณ: แทนที่จะสร้างเครื่องคิดเลขแยกสำหรับการบวก การลบ และการคูณ คุณสร้างคอมพิวเตอร์สำเร็จรูปที่สามารถรันโปรแกรมใดๆ ก็ได้ Ethereum จะเป็นบล็อกเชนสำเร็จรูป
ความพยายามครั้งก่อน
หลายโครงการได้พยายามขยายความสามารถของบล็อกเชนก่อน Ethereum:
- Colored Coins: ข้อมูลเมตาที่แนบกับธุรกรรม Bitcoin เพื่อแสดงสินทรัพย์อื่นๆ
- Metacoins: โปรโตคอลที่ทำงานบนสุด Bitcoin (Counterparty, Mastercoin/Omni)
- Namecoin: ฟอร์ก Bitcoin สำหรับการลงทะเบียนโดเมนแบบกระจายอำนาจ
- Ripple: เครือข่ายการชำระเงินดิจิทัล (ฉันทามติแบบรวมศูนย์)
แต่ละตัวมีข้อจำกัดที่การออกแบบของ Ethereum พยายามจะเอาชนะ
แนวคิดหลักจาก Whitepaper
บัญชี ไม่ใช่ UTXOs
Buterin ทำการเลือกการออกแบบพื้นฐานที่แตกต่างจาก Bitcoin: โมเดลบัญชี แทนโมเดล UTXO ของ Bitcoin
ใน Ethereum สถานะประกอบด้วยบัญชี แต่ละบัญชีมี:
- Nonce: ตัวนับที่ตรวจสอบให้แน่ใจว่าแต่ละธุรกรรมถูกประมวลผลเพียงครั้งเดียว
- ยอดคงเหลือ Ether: จำนวน ETH ที่ถูกจัดเก็บ
- รหัสสัญญา: รหัสไบต์ smart contract (หากเกี่ยวข้อง)
- พื้นที่เก็บข้อมูล: ข้อมูลถาวร (ที่เก็บคู่คีย์-ค่าสำหรับบัญชีสัญญา)
มีสองประเภทของบัญชี:
- บัญชีที่เป็นเจ้าของภายนอก (EOAs): ควบคุมโดยคีย์ส่วนตัว ไม่มีรหัส
- บัญชีสัญญา: ควบคุมโดยรหัสของพวกเขา เปิดใช้งานเมื่อพวกเขาได้รับข้อความ
การออกแบบนี้ช่วยให้การใช้เหตุผลเกี่ยวกับยอดคงเหลือและสถานะนั้นง่ายขึ้น แทนที่จะติดตามผลลัพธ์ที่ไม่ได้ใช้แต่ละรายการ คุณเพียงแค่ติดตามยอดคงเหลือบัญชี — เหมือนบัญชีแยกประเภทของธนาคาร (แต่กระจายอำนาจและโปร่งใส)
ข้อความและธุรกรรม
Whitepaper แยกความแตกต่างระหว่าง ธุรกรรม (ลงนามโดย EOA) และ ข้อความ (การเรียกภายในระหว่างสัญญา):
- ธุรกรรม เป็นการริเริ่มโดยผู้ใช้ภายนอก และรวมถึงผู้รับ ค่า ETH ข้อมูล ขีดจำกัดแก๊ส และราคาแก๊ส
- ข้อความ คือวัตถุเสมือนที่สร้างขึ้นจากสัญญาที่เรียกสัญญาอื่น — มันไม่เคยถูกทำให้เป็นลำดับและมีอยู่เฉพาะระหว่างการดำเนินการ
ความแตกต่างนี้ช่วยให้การดำเนินการหลายขั้นตอนที่ซับซ้อนเป็นไปได้ ธุรกรรมผู้ใช้เดียวสามารถเรียกเหตุการณ์ลูกโซ่ของข้อความภายในระหว่างสัญญา ซึ่งช่วยให้ DeFi protocols ที่ซับซ้อนและแอปพลิเคชันที่สามารถสร้างองค์ประกอบได้
Ethereum Virtual Machine (EVM)
EVM คือหัวใจของ Ethereum — สภาพแวดล้อมรันไทม์ที่ดำเนินการรหัส smart contract Buterin ออกแบบ EVM ด้วยคุณสมบัติหลักหลายประการ:
สถาปัตยกรรมแบบสแต็ก: EVM ใช้สแต็กของจำนวนเต็ม 256 บิต การดำเนินการผลักค่าลงบนหรือดึงค่าออกจากสแต็ก การออกแบบนี้นั้นง่ายในการนำไปใช้และให้เหตุผล
การดำเนินการแบบกำหนด: ให้สถานะเดียวกันและธุรกรรมเดียวกัน EVM จะให้ผลลัพธ์เดียวกันเสมอ โดยไม่คำนึงว่านโหนดใดดำเนินการ สิ่งนี้เป็นสิ่งจำเป็นสำหรับฉันทามติ — โหนดทั้งหมดจะต้องตกลงกันในผลลัพธ์
การวัดแก๊ส: ทุกการดำเนินการ EVM มีค่าใช้แก๊สจำนวนเฉพาะ แก๊สทั้งหมดที่ใช้โดยธุรกรรมจะต้องชำระเป็น ETH โดยผู้ส่ง กลไกนี้:
- ป้องกันลูปไม่สิ้นสุด (โปรแกรมที่หมดแก๊สจะถูกหยุด)
- ป้องกันการโจมตีปฏิเสธบริการ (ผู้โจมตีจะต้องชำระค่าสำหรับทรัพยากรที่พวกเขาใช้)
- สร้างตลาดสำหรับการคำนวณ (ผู้ใช้เสนอราคาแก๊สเพื่อให้ธุรกรรมของพวกเขามีลำดับความสำคัญ)
แยกส่วน: Smart contracts สามารถเข้าถึงได้เฉพาะที่เก็บข้อมูลของตัวเอง สถานะของบล็อกเชน และอินพุตที่ให้มา พวกเขาไม่สามารถเข้าถึงระบบไฟล์ เครือข่าย หรือทรัพยากรภายนอกอื่นๆ โดยตรง Oracle เชื่อมช่องว่างนี้ด้วยการนำข้อมูลนอกโซ่ลงไปยังสายเชน
ชุด Opcode
Whitepaper อธิบายชุดการดำเนินการของ EVM ซึ่งรวมถึง:
- เลขคณิต: ADD, MUL, SUB, DIV, MOD, EXP
- เปรียบเทียบ: LT, GT, EQ, ISZERO
- Bitwise: AND, OR, XOR, NOT, BYTE
- SHA3: การแฮช Keccak-256 (Ethereum ใช้ Keccak-256 มักเรียกว่า SHA-3)
- สแต็ก/หน่วยความจำ/พื้นที่เก็บข้อมูล: PUSH, POP, MLOAD, MSTORE, SLOAD, SSTORE
- ควบคุมการไหล: JUMP, JUMPI, STOP, RETURN
- สภาพแวดล้อม: ADDRESS, BALANCE, CALLER, CALLVALUE, CALLDATALOAD
- ข้อมูลบล็อก: BLOCKHASH, COINBASE, TIMESTAMP, NUMBER, DIFFICULTY
- บันทึก: LOG0-LOG4 (สำหรับการปล่อยเหตุการณ์)
- การเรียกภายนอก: CALL, DELEGATECALL, CREATE
ชุดคำสั่งนี้ได้รับการออกแบบให้มีความน้อยที่สุด แต่เพียงพอที่จะแสดงการคำนวณใดๆ ภาษาระดับสูงเช่น Solidity คอมไพล์ลงไปเป็น opcodes เหล่านี้
ฟังก์ชั่นการเปลี่ยนแปลงสถานะ
Buterin ทำให้ Ethereum เป็นทางการเป็น ระบบการเปลี่ยนแปลงสถานะ สถานะทั่วโลกคือการแมปของบัญชีทั้งหมดและยอดคงเหลือ nonces รหัส และพื้นที่เก็บข้อมูลของพวกเขา แต่ละธุรกรรมจะแปลงสถานะตามฟังก์ชันการเปลี่ยนแปลงที่กำหนดไว้อย่างดี:
STATE' = APPLY(STATE, TX)
ฟังก์ชันการเปลี่ยนแปลง:
- ตรวจสอบว่าธุรกรรมนั้นสร้างขึ้นอย่างถูกต้อง (ลายเซ็นที่ถูกต้อง nonce ที่ถูกต้อง)
- คำนวณค่าธรรมเนียมแก๊สและหักออกจากยอดคงเหลือของผู้ส่ง
- เริ่มต้นตัวนับแก๊สและหักแก๊สสำหรับแต่ละไบต์ของข้อมูลธุรกรรม
- โอนค่า ETH ที่ระบุจากผู้ส่งไปยังผู้รับ
- หากผู้รับเป็นสัญญา ให้ดำเนินการรหัสสัญญาจนกว่าจะเสร็จสิ้นหรือแก๊สหมด
- หากการดำเนินการล้มเหลว (หมดแก๊ส ข้อผิดพลาด) จะคืนค่าการเปลี่ยนแปลงสถานะทั้งหมด ยกเว้นการชำระเงินแก๊ส
- คืนเงินแก๊สที่เหลือให้ผู้ส่งและส่งค่าธรรมเนียมแก๊สที่ใช้ไปให้แร่ /ผู้ตรวจสอบ
โมเดลการเปลี่ยนแปลงสถานะนี้มีความสวยงามในความทั่วไปของมัน — การคำนวณใดๆ ก็สามารถแสดงเป็นลำดับของการเปลี่ยนแปลงสถานะได้ และกลไกแก๊สช่วยให้มั่นใจถึงความปลอดภัยของทรัพยากร
แอปพลิเคชันที่ Vitalik มองเห็นใน Whitepaper
Buterin ได้ร่างหมวดหมู่ของแอปพลิเคชันหลายประเภทที่ Ethereum จะเปิดใช้งาน น่าสังเกตว่า เกือบทั้งหมดนั้นเกิดขึ้นแล้ว:
ระบบโทเค็น
"ระบบโทเค็นบนบล็อกเชนมีการใช้งานมากมายตั้งแต่สกุลเงินย่อยที่แสดงสินทรัพย์เช่น USD หรือทอง ไปจนถึงหุ้นบริษัท"
Whitepaper คาดการณ์ว่าสิ่งที่กลายมาเป็นมาตรฐาน ERC-20 — พื้นฐานสำหรับโทเค็นหลายพัน ICOs DeFi protocols และ stablecoins สัญญาโทเค็นง่ายๆ อธิบายไว้เป็นการแมปสถานะของยอดคงเหลือ พร้อมฟังก์ชันการโอน — ตรงกับวิธีการทำงานของ ERC-20
อนุพันธ์ทางการเงิน
Buterin บรรยายสัญญาที่อ้างอิงข้อมูลภายนอก (เช่น ฟีดราคา) เพื่อชำระตราสารทางการเงิน วิสัยทัศน์นี้เกิดขึ้นจริงในระบบนิเวศของอนุพันธ์ DeFi — Synthetix, dYdX, GMX และคนอื่นๆ เสนอการค้าอนุพันธ์ ตัวเลือก และฟิวเจอร์สแบบกระจายอำนาจบน Ethereum
ระบบตัวตนและ声誉
Whitepaper กล่าวถึงการใช้ Ethereum สำหรับตัวตน self-sovereign — เอกสารประจำตัวที่ผู้ใช้ควบคุมโดยไม่มีผู้ออกแบบอำนาจกลาง โครงการเช่น ENS (Ethereum Name Service) Soulbound Tokens และมาตรฐานตัวตนแบบกระจายอำนาจ (DID) ได้นำความเป็นจริงมาซึ่งวิสัยทัศน์นี้บางส่วน
พื้นที่เก็บข้อมูลไฟล์ที่กระจายอำนาจ
Buterin เสนอให้ใช้ smart contracts ของ Ethereum เพื่อประสานงานพื้นที่เก็บข้อมูลไฟล์แบบกระจายอำนาจ แม้ว่า Ethereum เองนั้นไม่เหมาะสำหรับการจัดเก็บไฟล์ขนาดใหญ่ (มีราคาแพงเกินไป) แต่มันสามารถประสานงานเครือข่ายพื้นที่เก็บข้อมูลได้ โครงการเช่น IPFS Filecoin และ Arweave ได้รับแรงบันดาลใจจากแนวคิดนี้
องค์กรอิสระแบบกระจายอำนาจ (DAOs)
"แนวคิดทั่วไปของ 'องค์กรอิสระแบบกระจายอำนาจ' คือองค์กรเสมือนที่มีสมาชิกหรือผู้ถือหุ้นชุดหนึ่ง ซึ่งอาจจะมีคะแนนเสียงสำคัญ 67% มีสิทธิ์ที่จะใช้จ่ายทรัพยากรขององค์กรและแก้ไขรหัสของมัน"
DAOs ได้กลายมาเป็นแบบจำลองการปกครองที่สำคัญในระบบนิเวศ Ethereum จาก MakerDAO ไปจนถึงการปกครอง Uniswap ไปจนถึง treasury management protocols วิสัยทัศน์ของ Buterin เกี่ยวกับการปกครององค์กรแบบบนโซ่ของ Buterin ได้ถูกนำมาใช้على ขนาดกว้าง
บัญชีออมทรัพย์และ Multisig
Whitepaper บรรยายสัญญาอัจฉริยะเพื่อความปลอดภัยของออมทรัพย์ ด้วยข้อจำกัดการถอน การอนุมัติแบบหลายฝ่าย และการกู้คืนสังคม แนวคิดเหล่านี้โดยตรงได้ให้แรงบันดาลใจต่อการพัฒนาของ smart contract wallets multisig wallets (เช่น Safe/Gnosis Safe) และการเคลื่อนไหว account abstraction
การตัดสินใจออกแบบและการ Trade-offs
เหตุใด Turing-Completeness?
Buterin ทำการเลือกโดยจงใจให้ภาษาของ Ethereum เป็น Turing-complete (สามารถคำนวณฟังก์ชันใดๆ ที่คำนวณได้) ซึ่งต่างจาก Script ของ Bitcoin ที่มีการจำกัดโดยจงใจ สิ่งนี้เป็นที่ถกเถียงกัน — Turing-completeness นำเสนอความเสี่ยงของลูปไม่สิ้นสุดและพื้นผิวการโจมตีที่ซับซ้อน
วิธีแก้ปัญหาคือ แก๊ส: โดยการกำหนดให้ชำระค่าสำหรับทุกขั้นตอนการคำนวณ Ethereum ช่วยจำกัดการคำนวณโดยไม่จำกัดความเป็นสหปฏิบัติการ โปรแกรมที่พยายามทำงานตลอดไปจะในที่สุดหมดแก๊สและถูกหยุด ความเสี่ยงของข้อบกพร่องและช่องโหว่ใน smart contracts ที่ซับซ้อนยังคงอยู่ แต่นี่คือ ความกังวลด้านความปลอดภัยที่ชั้นแอปพลิเคชัน ไม่ใช่ชั้นโปรโตคอล
เหตุใด Account Model?
Buterin เลือกบัญชีแทน UTXOs ด้วยเหตุผลหลายประการ:
- การประหยัดพื้นที่: บัญชีจัดเก็บสถานะเพียงครั้งเดียว ในขณะที่ UTXOsจำลองข้อมูลทั่วทำให้ UTXOs ไม่ได้ใช้หลายครั้ง
- ความเรียบง่าย: ยอดคงเหลือบัญชีนั้นง่ายกว่าในการให้เหตุผลสำหรับตรรมชาติของ smart contract logic
- fungibility: ทั้ง ETH ในบัญชีนั้นเหมือนกัน ในขณะที่ UTXOs มีประวัติแต่ละรายการ
ข้อแลกเปลี่ยนคือความขนานลดลง (ธุรกรรมที่ส่งผลกระทบต่อบัญชีเดียวกันจะต้องได้รับคำสั่ง) และการจัดการสถานะที่ซับซ้อนขึ้น
เหตุใด ไม่สร้างบน Bitcoin?
Buterin อธิบายว่าทำไมการขยาย Bitcoin นั้นไม่เพียงพอ:
- สคริปต์ที่จำกัด: Bitcoin Script ขาดลูป สถานะที่ซับซ้อน และประเภทข้อมูลที่หลากหลาย
- ค่า-blindness: สคริปต์ Bitcoin ไม่สามารถควบคุมปริมาณที่อัตราละเอียด
- Blockchain-blindness: สคริปต์ไม่สามารถเข้าถึงข้อมูล metadata ของบล็อกเชน (timestamps, block numbers)
- ไม่มีสถานะ: