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

ERC-20

ERC-20 คืออินเทอร์เฟซมาตรฐานของ Ethereum สำหรับโทเค็นที่ทดแทนกันได้ เรียนรู้วิธีการทำงานของยอดคงเหลือ การโอน allowance และการอนุมัติ รวมถึงสิ่งที่มาตรฐานไม่ได้รับประกัน

อัปเดต

จัดทำขึ้นเพื่อการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน การลงทุนอาจทำให้สูญเสียเงินลงทุนได้

คำตอบโดยตรง

ERC-20 คืออินเทอร์เฟซมาตรฐานสำหรับสัญญาโทเค็นที่ทดแทนกันได้บน Ethereum มาตรฐานนี้ช่วยให้กระเป๋าเงิน ศูนย์ซื้อขาย และแอปพลิเคชันแบบกระจายศูนย์ใช้คำสั่งเรียกแบบเดียวกันเพื่ออ่านอุปทานหรือยอดคงเหลือ โอนโทเค็น และอนุญาตให้ที่อยู่อื่นใช้จ่ายได้ภายในวงเงินที่กำหนด การทดแทนกันได้หมายความว่าหน่วยที่มีมูลค่าเท่ากันของโทเค็นชนิดเดียวกันได้รับการออกแบบมาให้ใช้แทนกันได้

อินเทอร์เฟซหลักประกอบด้วย:

  • totalSupply และ balanceOf สำหรับอ่านอุปทานและยอดคงเหลือของบัญชี
  • transfer สำหรับส่งโทเค็นของผู้เรียก
  • approve และ allowance สำหรับกำหนดและอ่านวงเงินของผู้ใช้จ่าย
  • transferFrom สำหรับใช้จ่ายจากยอดคงเหลือของเจ้าของภายในวงเงินดังกล่าว และ
  • อีเวนต์ Transfer และ Approval สำหรับบันทึกการโอนและการอนุมัติ

มาตรฐานกำหนดความสามารถในการทำงานร่วมกัน ไม่ใช่คุณภาพของสินทรัพย์ การเป็นไปตาม ERC-20 ไม่ได้รับประกันอุปทานคงที่ มูลค่าตลาดที่เป็นธรรม ความสามารถในการไถ่ถอน สภาพคล่อง การบริหารจัดการที่ปลอดภัย หรือแม้แต่พฤติกรรมที่เหมือนกันในทุกการนำไปใช้

วิธีการทำงาน

ยอดคงเหลือ ERC-20 คือรายการหนึ่งในสถานะของสัญญาโทเค็นซึ่งเชื่อมโยงกับที่อยู่ กระเป๋าเงินแสดงสถานะดังกล่าว แต่ไม่ได้เก็บไฟล์โทเค็นแยกต่างหาก เมื่อ transfer(to, amount) สำเร็จ สัญญาจะลดยอดคงเหลือของผู้เรียก เพิ่มยอดคงเหลือของผู้รับ และปล่อยอีเวนต์ Transfer โดยปกติผู้ใช้จะจ่ายค่าแก๊สของเครือข่ายเป็น ETH หากการดำเนินการถูกย้อนกลับ การเปลี่ยนแปลงสถานะของโทเค็นจะถูกยกเลิก แต่ค่าแก๊สที่ใช้ไปแล้วจะไม่ได้รับคืนเต็มจำนวน

การใช้จ่ายแบบมอบหมายสิทธิ์ใช้ allowance การเรียก approve(spender, amount) จะกำหนดจำนวนที่ผู้ใช้จ่ายรายนั้นสามารถใช้จากยอดคงเหลือของผู้เรียก จากนั้นผู้ใช้จ่ายสามารถเรียก transferFrom(owner, to, amount) และ allowance(owner, spender) จะแสดงวงเงินที่เหลือ การอนุมัติผูกกับคู่เจ้าของ-ผู้ใช้จ่ายหนึ่งคู่ ในสัญญาโทเค็นหนึ่งสัญญา และบนเครือข่ายหนึ่งเครือข่าย ไม่ใช่สิทธิ์เหนือสินทรัพย์ทุกอย่างในกระเป๋าเงิน

การเรียก approve อีกครั้งจะเขียนทับ allowance เดิม ข้อกำหนด EIP-20 เตือนให้อินเทอร์เฟซผู้ใช้กำหนด allowance ที่มีอยู่เป็น 0 ก่อนกำหนดค่าใหม่ที่ไม่ใช่ศูนย์ เพราะลำดับธุรกรรมอาจเปิดโอกาสให้ผู้ใช้จ่ายใช้ทั้งวงเงินเดิมและวงเงินใหม่ การกำหนด allowance เป็น 0 สามารถหยุดการเรียก transferFrom ในอนาคตสำหรับชุดเจ้าของ-ผู้ใช้จ่าย-โทเค็นนั้น แต่ไม่สามารถนำโทเค็นที่โอนไปแล้วกลับคืนมาได้

name, symbol และ decimals เป็นเมธอดข้อมูลกำกับที่เลือกใช้ได้ใน EIP-20 โดย decimals มีผลต่อหน่วยที่แสดง ไม่ใช่การบันทึกบัญชีจำนวนเต็มของสัญญา นอกจากนี้ มาตรฐานไม่ได้กำหนดวิธีสร้างหรือเผาโทเค็น ไม่ได้กำหนดว่าจะพักหรือคิดค่าธรรมเนียมการโอนได้หรือไม่ จะอายัดที่อยู่ได้หรือไม่ หรือจะอัปเกรดตรรกะของพร็อกซีได้หรือไม่ พฤติกรรมเหล่านี้ต้องตรวจสอบจากโค้ดที่นำไปใช้งาน การติดตั้งใช้งานปัจจุบัน และสิทธิ์ของผู้ดูแล

ตัวอย่าง

สมมติว่ากระเป๋าเงินมีโทเค็น ERC-20 อยู่ 1,000 หน่วย และผู้ใช้ต้องการให้เราเตอร์ของศูนย์ซื้อขายแบบกระจายศูนย์แลก 100 หน่วย ผู้ใช้ส่ง approve(router, 100) ก่อน หากสำเร็จ เราเตอร์สามารถเรียก transferFrom(user, pool, 100) และหลังจากใช้จ่ายครบแล้ว allowance ปกติที่เหลือจะเป็น 0 ธุรกรรมอนุมัติกับธุรกรรมแลกเปลี่ยนเป็นการดำเนินการบนเชนที่แยกจากกัน ดังนั้นแต่ละรายการอาจต้องใช้แก๊สและอาจล้มเหลวได้โดยอิสระ

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

ความเสี่ยง

  • สัญญาหรือเครือข่ายไม่ถูกต้อง: ชื่อ สัญลักษณ์ และไอคอนสามารถลอกเลียนได้ โปรดตรวจสอบที่อยู่สัญญาบนเครือข่ายที่ต้องการ
  • allowance มากเกินไป: ผู้ใช้จ่ายที่เป็นอันตรายหรือถูกเจาะระบบอาจใช้ allowance ที่ยังเหลือได้ถึงวงเงินที่อนุมัติ
  • พฤติกรรมที่ไม่เป็นมาตรฐาน: โทเค็นที่ใช้อย่างแพร่หลายบางรายการไม่ส่งคืนค่าตามที่คาดไว้อย่างเคร่งครัด ส่วนบางรายการคิดค่าธรรมเนียมการโอน ปรับยอดคงเหลือใหม่ บล็อกที่อยู่ หรือพักการโอน
  • การควบคุมโดยผู้ดูแล: การสร้างโทเค็น การอายัด การอัปเกรด หรือการดำเนินการที่มีสิทธิ์พิเศษอื่นอาจเปลี่ยนความเสี่ยงของโทเค็นหลังจากผู้ใช้ได้มาแล้ว
  • การโอนที่เรียกคืนไม่ได้: การส่งโทเค็นไปยังที่อยู่ผิดหรือสัญญาที่ไม่สามารถจัดการโทเค็นนั้นได้ อาจทำให้กู้คืนไม่ได้

การทำ ERC-20 ให้เป็นมาตรฐานช่วยลดอุปสรรคในการผสานระบบ แต่ไม่ได้ขจัดความเสี่ยงจากสัญญา ผู้ออก การรับฝาก ตลาด หรือการดำเนินงาน ก่อนลงนาม ให้ตรวจสอบเครือข่าย สัญญาโทเค็น ที่อยู่ของผู้ใช้จ่าย จำนวนที่อนุมัติ และคำสั่งเรียกของธุรกรรม

ความเข้าใจผิดที่พบบ่อย

ความเชื่อผิด 1: ป้าย ERC-20 พิสูจน์ว่าโทเค็นนั้นน่าเชื่อถือ

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

ความเชื่อผิด 2: การอนุมัติจะโอนโทเค็นที่อนุมัติทันที

โดยปกติ approve จะเปลี่ยน allowance แต่ไม่ได้ย้ายโทเค็นไปยังผู้ใช้จ่ายด้วยตัวมันเอง การเรียก transferFrom ภายหลังจึงจะย้ายโทเค็น อย่างไรก็ตาม allowance ที่ยังคงอยู่คือสิทธิ์จริงซึ่งอาจใช้งานได้จนกว่าจะถูกใช้จนหมด ถูกแทนที่ หรือกำหนดเป็น 0

ความเชื่อผิด 3: โทเค็น ERC-20 ทุกชนิดมีพฤติกรรมเหมือนกัน

มาตรฐานกำหนดอินเทอร์เฟซร่วมขั้นต่ำ ไม่ได้บังคับนโยบายอุปทานแบบใดแบบหนึ่ง และไม่ได้ห้ามค่าธรรมเนียม การพัก บัญชีดำ การปรับยอดคงเหลือใหม่ หรือความสามารถในการอัปเกรด การผสานระบบต้องคำนึงถึงการนำไปใช้จริง ไม่ใช่อาศัยเพียงป้าย ERC-20

หัวข้อที่เกี่ยวข้อง

แหล่งที่มา

การนำทาง

ค้นหาในวิกิ...