คำเตือนความเสี่ยง: ระวังความเสี่ยงจากการระดมทุนที่ผิดกฎหมายในนาม 'สกุลเงินเสมือน' 'บล็อกเชน' — จากห้าหน่วยงานรวมถึงคณะกรรมการกำกับดูแลการธนาคารและการประกันภัย
ข่าวสาร
ค้นพบ
ค้นหา
เข้าสู่ระบบ
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
ดูตลาด
เหตุการณ์และบันทึกใน Solidity
Chainlink
特邀专栏作者
2022-02-11 10:58
บทความนี้มีประมาณ 2256 คำ การอ่านทั้งหมดใช้เวลาประมาณ 4 นาที
ในบทความนี้ เราจะตรวจสอบความสามารถในการบันทึกและเหตุการณ์ของ Ethereum Virtual Machine (EVM) จากมุมมองของนั

กิจกรรม Solidity นั้นขาดไม่ได้สำหรับผู้พัฒนาสัญญาอัจฉริยะ ทำให้เราสามารถทดสอบตัวแปรเฉพาะในสัญญาอัจฉริยะ เปลี่ยนส่วนหน้าด้วยวิธีอัตโนมัติ เป็นต้น โดยทั่วไป การรู้วิธีใช้เหตุการณ์ใน Solidity สามารถทำให้การพัฒนาสัญญาอัจฉริยะง่ายขึ้นมาก

ในบทความนี้เราจะศึกษาจากมุมมองของนักพัฒนาสัญญาอัจฉริยะเครื่องเสมือน Ethereumฟังก์ชันบันทึกและเหตุการณ์ของ (EVM) รวมถึงบันทึกและเหตุการณ์ใดบ้าง จัดทำดัชนีเหตุการณ์ และวิธีใช้บันทึกและเหตุการณ์ในหมวกนิรภัยและบราวนี่

EVM เป็นหัวใจของ Ethereum และบล็อกเชนอื่น ๆ อีกมากมาย EVM มีบันทึกฟังก์ชันสำหรับการ "เขียน" ข้อมูลลงในโครงสร้างข้อมูลนอกสัญญาอัจฉริยะ ข้อมูลสำคัญประการหนึ่งคือเหตุการณ์ที่เป็นของแข็ง. เหตุการณ์ช่วยให้เราสามารถ "พิมพ์" ข้อมูลบนบล็อกเชนในลักษณะที่สามารถค้นหาได้มากขึ้นและกินน้ำมันน้อยกว่าการบันทึกลงในตัวแปรพื้นที่เก็บข้อมูลสาธารณะในสัญญาอัจฉริยะ

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

คุณยังสามารถดูวิดีโอต่อไปนี้เกี่ยวกับเหตุการณ์และการเข้าสู่ระบบ Solidity:

https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0

แล้วเหตุการณ์คืออะไร?

การสมัครสมาชิกการสมัครสมาชิกพวกเขามาเพื่อ "ฟัง" เหตุการณ์บางอย่าง ในความเป็นจริงนี่คือเครือข่ายเชนลิงค์ชื่อระดับแรก

ใช้กับกิจกรรมอะไรได้บ้าง?

ตอนนี้ หากคุณไม่ใช่ผู้ดำเนินการโหนด Chainlink หรือ Ethereum คุณอาจกำลังถามว่าเกิดอะไรขึ้นกับคุณ ด้วยกิจกรรม Solidity คุณสามารถ:

  1. ทดสอบตัวแปรเฉพาะในสัญญาอัจฉริยะของคุณ

  2. ตัวแปรดัชนีเพื่อสร้างสถานะที่เก็บไว้ใหม่

  3. กราฟย่อย

  4. สร้างกราฟย่อยเพื่ออ่านข้อมูลได้เร็วขึ้น

ชื่อระดับแรก

เหตุการณ์มีลักษณะอย่างไร?

โครงสร้างข้อมูลต่อไปนี้เป็นวิธีกำหนดเหตุการณ์ใน Solidity:

คุณสามารถคิดว่าเหตุการณ์เป็นชนิดพิเศษใหม่ เราได้สร้าง "ประเภท" ของเหตุการณ์ที่เรียกว่า storageNumber ชื่อของเหตุการณ์ถูกจัดเก็บหมายเลขซึ่งสามารถเก็บตัวแปรบางตัวได้ ในเหตุการณ์นี้มีพารามิเตอร์สองประเภท: จัดทำดัชนีและไม่ได้จัดทำดัชนี พารามิเตอร์ที่จัดทำดัชนี หรือที่เรียกว่า "หัวข้อ" เป็นพารามิเตอร์ที่ค้นหาได้ในเหตุการณ์ เราจะพูดถึงสิ่งเหล่านี้ในภายหลัง

จากนั้นเราสามารถปล่อยเหตุการณ์เช่นนี้:

ต่อไปนี้คือตัวอย่างสัญญาฉบับสมบูรณ์:

ในตอนนี้ เมื่อใดก็ตามที่เราเรียกใช้ฟังก์ชัน store ในตัวอย่างนี้ มันจะปล่อยเหตุการณ์ประเภทstoredNumber ลองดูตัวอย่างธุรกรรมที่เรียกใช้ฟังก์ชัน store โดยป้อนค่าเป็น 1 เราเข้าไปได้Kovan Etherscanดูการทำธุรกรรมนี้

เมื่อเลื่อนไปที่ส่วน "บันทึก" ของธุรกรรม เราจะเห็นสิ่งต่อไปนี้:

เหตุการณ์สามารถแบ่งออกเป็น:

ที่อยู่: ที่อยู่ ที่อยู่ของสัญญาหรือบัญชีที่ออกกิจกรรม

หัวข้อ: หัวข้อ พารามิเตอร์ดัชนีของเหตุการณ์

ข้อมูล: ข้อมูล การเข้ารหัส ABI หรือ "แฮช" ของพารามิเตอร์ที่ไม่ได้จัดทำดัชนีของเหตุการณ์ เนื่องจากเราทราบ ABI ของสัญญา (เพราะเราตรวจสอบสัญญาบน Etherscan) เราจึงสามารถดูได้ในโหมด "Dec" หรือ "Decoded" หรือในโหมด "hex", "Hexidecimal" หรือ "Encoded" ดั้งเดิม ตรวจสอบ หากเรายังไม่ได้ตรวจสอบสัญญา เราจะไม่เห็นเวอร์ชันที่ถอดรหัสแล้ว

คุณสามารถที่Solidityเอกสารอ่านเพิ่มเติมเกี่ยวกับเหตุการณ์ใน "บันทึก" และ "เหตุการณ์" มักใช้แทนกันได้ เนื่องจากในฐานะผู้พัฒนาสัญญาอัจฉริยะ เรามักสนใจเฉพาะ "เหตุการณ์" ในบันทึกเท่านั้น อย่างไรก็ตาม ในทางเทคนิคแล้ว บันทึกยังรวมถึง blockhash ที่อยู่ และข้อมูลอื่นๆ ที่ส่งคืนไปยังโหนด blockchain ของคุณด้วยการเรียก eth_getLogs คุณยังสามารถอ่านเพิ่มเติมเกี่ยวกับตัวกรองบานซึ่งเป็นเหตุผลว่าทำไมจึงสามารถสอบถามเหตุการณ์เหล่านี้ได้อย่างง่ายดาย

เหตุการณ์ในหมวกนิรภัย

ตอนนี้เราเข้าใจแล้วว่าเหตุการณ์คืออะไร เรามาเรียนรู้วิธีเข้าถึงและใช้งานในหมวกนิรภัยกัน คุณสามารถโคลน repo ต่อไปนี้และทำตาม:

git clone https://github.com/PatrickAlphaC/hardhat-events-logs

cd hardhat-events-logs

คุณต้องทำตามคำแนะนำใน README.md จึงจะเสร็จสมบูรณ์เครื่องมือพึ่งพาการติดตั้ง ซึ่งรวมถึง Node, Yarn และ Git

หากคุณปฏิบัติตาม README.md คุณจะสามารถ:

  1. ปรับใช้สัญญาอัจฉริยะ

  2. สร้างธุรกรรมที่ปล่อยเหตุการณ์

  3. ดูบริบทของเหตุการณ์เหล่านี้

หากคุณพบปัญหาระหว่างขั้นตอนนี้ โปรดติดต่อGithub repoชื่อระดับแรก

เหตุการณ์ในบราวนี่

เหตุการณ์ในบราวนี่ค่อนข้างเหมือนเดิมเพราะสัญญาตรงกันทุกประการ

คุณสามารถโคลน repo ต่อไปนี้และทำตาม:

คุณต้องทำตามคำแนะนำใน README.md จึงจะเสร็จสมบูรณ์เครื่องมือพึ่งพาการติดตั้งซึ่งประกอบด้วย Node, Python, eth-brownie และ Git

หากคุณปฏิบัติตาม README.md คุณจะสามารถ:

  1. ปรับใช้สัญญาอัจฉริยะ

  2. สร้างธุรกรรมที่ปล่อยเหตุการณ์

  3. ดูบริบทของเหตุการณ์เหล่านี้

หากคุณพบปัญหาระหว่างขั้นตอนนี้ โปรดติดต่อGithub repoสรุป

สรุป

บันทึกและเหตุการณ์เป็นส่วนสำคัญของการพัฒนาสัญญาอัจฉริยะ และเป็นโครงสร้างพื้นฐานที่สำคัญสำหรับโครงการต่างๆ เช่น Chainlink และ The Graph หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาสัญญาอัจฉริยะที่ทรงพลัง (โดยใช้ทักษะกิจกรรมที่คุณเพิ่งค้นพบ) อย่าลืมตรวจสอบเอกสาร Chainlinkเริ่มสร้างทันที! .

Chainlink
ETH
ยินดีต้อนรับเข้าร่วมชุมชนทางการของ Odaily
กลุ่มสมาชิก
https://t.me/Odaily_News
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
บัญชีทางการ
https://twitter.com/OdailyChina
กลุ่มสนทนา
https://t.me/Odaily_CryptoPunk
สรุปโดย AI
กลับไปด้านบน
ในบทความนี้ เราจะตรวจสอบความสามารถในการบันทึกและเหตุการณ์ของ Ethereum Virtual Machine (EVM) จากมุมมองของนั
คลังบทความของผู้เขียน
Chainlink
ดาวน์โหลดแอพ Odaily พลาเน็ตเดลี่
ให้คนบางกลุ่มเข้าใจ Web3.0 ก่อน
IOS
Android