Web3 & DApp Development Fundamentals · บทเรียน

บัญชีและสถานะ

EOA และสัญญา

บทเรียน 4 จาก 413 ขั้นตอน

บัญชีและสถานะ เป็นบทเรียน Web3 & DApp Development Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Web3 & DApp Development Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

สถานะของโลกคืออะไร

สถานะของโลกของ Ethereum คือภาพรวมทั้งหมดของบัญชีและข้อมูลของบัญชีเหล่านั้น ณ ช่วงเวลาหนึ่ง

ทุกธุรกรรมจะเปลี่ยนสถานะนี้จากเวอร์ชันที่ถูกต้องหนึ่งไปเป็นเวอร์ชันที่ถูกต้องถัดไป บัญชีคือองค์ประกอบพื้นฐานของสถานะนี้

บัญชีสองประเภท

Ethereum มีบัญชีอยู่สองประเภทเท่านั้น:

  • บัญชีที่ควบคุมจากภายนอก (EOA) — ควบคุมด้วยคีย์ส่วนตัว (ผู้ใช้)
  • บัญชีสัญญา — ควบคุมด้วยโค้ดของบัญชี

ทั้งสองประเภทใช้รูปแบบแอดเดรสขนาด 20 ไบต์เหมือนกัน

บัญชีที่ควบคุมจากภายนอก

EOA ถูกควบคุมด้วยคีย์ส่วนตัว และสามารถเริ่มธุรกรรมได้ เช่น ส่ง ETH หรือเรียกใช้สัญญา

EOA ไม่มีโค้ดของตนเอง แต่เป็นเพียงบัญชีที่ควบคุมด้วยคีย์ ซึ่งมนุษย์หรือบอตเป็นผู้ดำเนินการ

EOA {
  address: 0xAbc...123
  balance: 4.2 ETH
  nonce:   17
  code:    none
}

บัญชีสัญญา

บัญชีสัญญา มีโค้ด (ไบต์โค้ด) และสตอเรจ บัญชีนี้ไม่มีคีย์ส่วนตัวและไม่สามารถเริ่มธุรกรรมได้ด้วยตนเอง

บัญชีจะทำงานเมื่อถูกเรียกโดย EOA หรือสัญญาอื่นเท่านั้น โดยเรียกใช้โค้ดเพื่อตอบสนองต่อการเรียก

Contract {
  address: 0xDef...456
  balance: 10 ETH
  code:    0x6080604052...
  storage: { slot0: ..., slot1: ... }
}

ฟิลด์ทั้งสี่ของบัญชี

บัญชีทุกบัญชีเก็บฟิลด์สี่รายการ:

  • nonce — จำนวนธุรกรรม (EOA) หรือจำนวนสัญญาที่สร้าง (สัญญา)
  • balance — จำนวน ETH ที่ถือครองในหน่วย wei
  • storageRoot — แฮชของสตอเรจของบัญชี
  • codeHash — แฮชของโค้ดของบัญชี

ความแตกต่างระหว่าง EOA กับสัญญา

ความแตกต่างสำคัญคือ:

  • มีเพียง EOA เท่านั้นที่สามารถ เริ่มต้นธุรกรรม
  • มีเพียง สัญญา เท่านั้นที่มีโค้ดและสตอเรจจำนวนมาก
  • codeHash ของ EOA เป็นค่าว่าง ส่วนของสัญญาไม่เป็นค่าว่าง

สถานะเปลี่ยนแปลงอย่างไร

สถานะจะเปลี่ยนแปลงผ่านธุรกรรมเท่านั้น ธุรกรรมอาจย้าย ETH นำสัญญาไปใช้งาน หรือเรียกสัญญาที่อัปเดตสตอเรจของตน

หลังแต่ละบล็อก สถานะของโลกจะเลื่อนไปเป็นเวอร์ชันใหม่ที่ทุกฝ่ายเห็นพ้องกัน

ต้นไม้สถานะ

บัญชีทั้งหมดถูกเก็บไว้ใน Merkle Patricia Trie ขนาดใหญ่ แฮชรากของมัน ซึ่งเรียกว่า state root จะถูกบันทึกไว้ในส่วนหัวของแต่ละบล็อก

แฮชเดียวนี้ยืนยันสถานะของโลกทั้งหมด เช่นเดียวกับที่ Merkle root ยืนยันธุรกรรมทั้งหมด

block header includes:
  stateRoot   -> all accounts
  txRoot      -> all transactions
  receiptRoot -> all receipts

การสร้างบัญชี

EOA ถือว่ามีอยู่ทันทีที่สร้างคู่คีย์ขึ้นมา ไม่จำเป็นต้องดำเนินการบนเชนจนกว่าจะมีการทำธุรกรรม

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

การโต้ตอบกับสัญญาอัจฉริยะ

หากต้องการโต้ตอบกับสัญญา EOA จะส่งธุรกรรมที่ระบุแอดเดรสของสัญญาและข้อมูลฟังก์ชัน

EVM จะค้นหาโค้ดของสัญญาด้วย codeHash แล้วเรียกใช้โค้ดนั้น ซึ่งอาจอัปเดตสตอเรจได้

สรุปภาพรวม

สถานะของ Ethereum คือกลุ่มบัญชี EOA ถูกควบคุมด้วยคีย์และเป็นผู้เริ่มธุรกรรม ส่วนสัญญาถือโค้ดและสตอเรจ และตอบสนองต่อการเรียก

state root ในแต่ละบล็อกยืนยันข้อมูลทั้งหมดนี้

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับบัญชีของคุณ

ทบทวน: บัญชีและสถานะ

คุณได้เรียนรู้ว่า:

  • Ethereum มี EOA (ควบคุมด้วยคีย์) และ บัญชีสัญญา (ควบคุมด้วยโค้ด)
  • มีเพียง EOA เท่านั้นที่สามารถ เริ่มต้นธุรกรรมได้
  • แต่ละบัญชีมี nonce, ยอดคงเหลือ, storageRoot และ codeHash
  • รากสถานะจะผูกมัดกับบัญชีทั้งหมด

คุณเรียนจบเส้นทางพื้นฐาน Web3 แล้ว

เริ่มต้นได้ฟรี

เรียนรู้ Web3 & DApp Development Fundamentals ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
29
บทเรียน
105

คำถามที่พบบ่อย

บทเรียน “บัญชีและสถานะ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “บัญชีและสถานะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Web3 & DApp Development Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “บัญชีและสถานะ”

EOA และสัญญา คุณปฏิบัติ Web3 & DApp Development Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Web3 & DApp Development Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Web3 & DApp Development Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “บัญชีและสถานะ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Web3 & DApp Development Fundamentals นี้ได้ไหม

ได้ บทเรียน Web3 & DApp Development Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เครื่องเสมือน Ethereum
  2. พื้นที่จัดเก็บ หน่วยความจำ สแตก
  3. โอปโค้ด
  4. บัญชีและสถานะ
← กลับไปที่ Web3 & DApp Development Fundamentals