ค่าธรรมเนียมการโอน TRC-20 แบบเจาะลึก: พลังงาน, bandwidth และสิ่งที่ถูกคิดค่าจริง
สองทรัพยากร หนึ่งธุรกรรม
ทุกการโอน TRC-20 บน TRON ใช้ทรัพยากรที่ชัดเจนสองอย่าง bandwidth และ พลังงาน มันถูกคิดค่าแยกกัน ดึงจาก pool ที่แยกกัน และมีกลไกการเติมที่ต่างกันโดยสิ้นเชิง นักพัฒนาส่วนใหญ่เข้าใจอย่างใดอย่างหนึ่ง แต่ปฏิสัมพันธ์ระหว่างทั้งสองคือจุดที่ต้นทุนจะอยู่ในเกณฑ์จัดการได้หรือพุ่งทะยาน
Bandwidth ครอบคลุมต้นทุนไบต์ดิบของการกระจายธุรกรรมไปยังเครือข่าย พลังงานครอบคลุมต้นทุนการรัน VM ของตรรกะ smart contract การโอน TRX ธรรมดาต้องการเฉพาะ bandwidth การโอน TRC-20 ซึ่งกระตุ้นฟังก์ชัน transfer(address,uint256) ของสัญญา token ต้องการทั้งสอง
Bandwidth: ครึ่งที่ง่ายกว่า
ทุกบัญชี TRON ได้รับ bandwidth ฟรี 600 ต่อวันผ่านการจัดสรรพื้นฐาน ธุรกรรมการโอน TRC-20 มาตรฐานมีขนาดราว 345 ไบต์ ซึ่งแมปเป็นหน่วย bandwidth ประมาณ 345 หน่วย (เครือข่ายคิดค่า 1 bandwidth ต่อไบต์ของข้อมูลธุรกรรม รวมถึงลายเซ็นและฟิลด์ memo)
หากบัญชีของคุณมี bandwidth ฟรีรายวันเพียงพอ หรือ TRX ที่ stake สำหรับ bandwidth ธุรกรรมจะไม่มีค่าใช้จ่ายในมิตินี้ หาก pool bandwidth ว่าง เครือข่ายจะเผา TRX โดยตรงในอัตรา 0.001 TRX ต่อหน่วย bandwidth (1000 SUN ต่อไบต์) สำหรับธุรกรรม 345 หน่วย นั่นคือ 0.345 TRX ที่ถูกเผาจากที่อยู่ผู้ส่ง โดยไม่ต้อง staking
หน่วยฟรีรายวัน 600 รีเซ็ตเมื่อ 00:00 UTC หากคุณทำการโอนปริมาณต่ำ คุณจะแทบไม่เคยเสียค่า bandwidth เลย ผู้ส่งปริมาณสูงมักจะ stake TRX สำหรับ bandwidth แทนการเผา เพราะผลตอบแทนการ stake ครอบคลุมธุรกรรมได้มากกว่าต่อ TRX มากกว่าอัตราการเผา
พลังงาน: ที่ที่ต้นทุนจริงอยู่
การโอน USDT TRC-20 ใช้พลังงานประมาณ 65,000 energy ตัวเลขนั้นมาจากการรัน bytecode ที่เข้ากันได้กับ EVM ภายใน TRON Virtual Machine การอ่านและเขียน storage ไปยังการแมปยอดของสัญญา การปล่อย event สำหรับ log Transfer และการตรวจสอบความปลอดภัยภายใน ตัวเลขที่แท้จริงสามารถแปรผันเล็กน้อยขึ้นอยู่กับว่า storage slot ถูกเขียนเป็นครั้งแรก (cold) เทียบกับการอัปเดต (warm) แต่ 65,000 คือตัวเลขมาตรฐานสำหรับการโอน USDT ทั่วไประหว่างสองที่อยู่ที่ใช้งานอยู่ การโอนไปยังผู้รับที่ยอด USDT ปัจจุบันเป็นศูนย์จะเพิ่มเป็นประมาณสองเท่าราว 130,000 energy เพราะมีการจัดสรร storage slot ใหม่
พลังงานมีสองแหล่ง TRX ที่ stake ของคุณเอง หรือพลังงานที่เช่า (มอบหมาย) จากบุคคลที่สาม การ stake TRX ให้คุณส่วนแบ่งตามสัดส่วนของ energy pool รวมของเครือข่าย และ pool จะสร้างใหม่เป็นเส้นตรงกลับไป 100% ใน 24 ชั่วโมง อัตราส่วนที่แท้จริงของพลังงานต่อ TRX ที่ stake ขึ้นอยู่กับจำนวน stake ทั้งเครือข่ายและเปลี่ยนแปลงเมื่อเวลาผ่านไป การได้คืน 65,000 energy จาก stake ของคุณเองเพียงอย่างเดียวต้องใช้ TRX จำนวนมากที่ถูกล็อก จึงเป็นเหตุผลที่การเช่าพลังงานมีอยู่
สิ่งที่เกิดขึ้นเมื่อพลังงานหมด
หากธุรกรรมต้องการ 65,000 energy และบัญชีของคุณมีไม่เพียงพอ เครือข่ายไม่ดำเนินการบางส่วนแบบเงียบ แต่จะตรวจสอบ fee_limit ของธุรกรรมและเผา TRX จากบัญชีของคุณ ไม่เกินขีดจำกัดนั้น เพื่อครอบคลุมส่วนพลังงานที่ขาด แล้วดำเนินการธุรกรรมเต็ม หากส่วนที่ขาดจะเกิน fee_limit ของคุณ ธุรกรรมจะล้มเหลวก่อนที่การเปลี่ยนแปลงสถานะจะถูก commit
นี่คือสถานการณ์ที่คุณต้องการหลีกเลี่ยง จ่ายทั้งสำหรับพลังงานที่ stake ของคุณและสำหรับ TRX ที่เผาเพิ่ม หรือแย่กว่านั้น ทำให้ธุรกรรมล้มเหลวโดยตรงเพราะ fee_limit ตั้งไว้ต่ำเกินไป คุณสามารถตรวจสอบต้นทุน TRX ปัจจุบันสำหรับการครอบคลุม 65,000 energy ได้ที่หน้าราคาก่อนยึดมั่นในกลยุทธ์
Stake 2.0 เปลี่ยนวิธีการทำงานของการมอบหมาย
ก่อน Stake 2.0 (เปิดใช้งานบน mainnet ในเดือนเมษายน 2023) staking และการมอบหมายเชื่อมโยงกัน เจ้าของทรัพยากรเรียก freezeBalance และระบุที่อยู่ผู้รับโดยตรง การ freeze ถูกผูกกับผู้รับนั้น และโมเดลไม่มีความยืดหยุ่นที่ตลาดทรัพยากรต้องการ
Stake 2.0 แนะนำ freezeBalanceV2 และแยกการดำเนินการ staking ออกจากการดำเนินการมอบหมาย ตอนนี้คุณ stake TRX เข้า pool พลังงานหรือ bandwidth ส่วนตัว แล้วมอบหมายทรัพยากรนั้นแยกกันผ่าน delegateResource ซึ่งหมายถึง
- การมอบหมายเพิกถอนได้โดยค่าเริ่มต้นและสามารถมอบหมายใหม่ได้โดยไม่ต้อง unstake มี flag
lockที่เป็นทางเลือก การตั้งค่าเป็น true จะค้างการมอบหมายไว้อย่างน้อยช่วงล็อกขั้นต่ำของเครือข่าย (ปัจจุบัน 3d) หากไม่มี flag นั้น คุณสามารถดึงการมอบหมายกลับเมื่อใดก็ได้ - ช่วงรอ unfreeze 14 วันใช้กับ TRX stake พื้นฐานเมื่อคุณถอน ไม่ใช่กับการมอบหมายเอง
- แพลตฟอร์มการเช่าพลังงานสามารถหมุนเวียนการมอบหมายข้ามที่อยู่ผู้รับจำนวนมากจากตำแหน่ง stake เดียว
บน on-chain เมื่อแพลตฟอร์มเช่าอย่าง tronenergyrent.com มอบหมายพลังงานให้ที่อยู่ของคุณ จำนวนที่มอบหมายจะสะท้อนในสถานะบัญชีของคุณ มองเห็นได้ผ่าน wallet/getaccount เป็น acquired_delegated_frozenV2_balance_for_energy พลังงานที่ใช้ได้ที่สอดคล้องจะแสดงต่อขีดจำกัดพลังงานของบัญชีของคุณ และใช้จ่ายได้ทันทีโดยไม่ต้องดำเนินการใดๆ ในฝั่งของคุณ
ต้นทุนการเช่า vs ต้นทุนการเผา
การเช่ามีราคาต่อระดับระยะเวลา 1h, 1d, 3d, 30d ระดับ 1h ถูกที่สุดใน TRX ที่แท้จริง ระดับ 30d แพงที่สุด โดย 1d และ 3d อยู่ระหว่างกลาง การตั้งราคาสะท้อนว่า TRX stake พื้นฐานของแพลตฟอร์มถูกล็อกกับที่อยู่ของคุณนานแค่ไหน หน้าต่างที่ยาวขึ้น = ทุนที่ผูกไว้มากขึ้น = ค่า TRX มากขึ้น สำหรับตัวเลขปัจจุบันต่อระดับใน TRX ดูหน้าราคา
เมื่อเทียบกับการเผา การเช่าเกือบจะชนะเสมอสำหรับผู้ส่งที่วางแผนล่วงหน้า การเผา 65,000 energy เต็มในอัตราไดนามิกของเครือข่ายนั้นตรงไปตรงมาแต่เผชิญกับต้นทุนการเผาปัจจุบันที่อะไรก็ตามจะเกิดขึ้น ซึ่งสามารถเคลื่อนไหวอย่างรุนแรงเมื่อความต้องการพลังงานเครือข่ายรวมเปลี่ยน การเช่าให้คุณต้นทุน TRX คงที่ในเวลาสั่งซื้อ
ลำดับความสำคัญของทรัพยากรระหว่างการดำเนินการ
เมื่อธุรกรรมดำเนินการ VM ดึงพลังงานในลำดับเฉพาะ
- พลังงานที่หนุนโดยทรัพยากรที่มอบหมายให้ที่อยู่ของคุณโดยบัญชีอื่น
- พลังงานจาก TRX ที่ stake ของคุณเอง
- TRX ที่เผาจากบัญชีของคุณเพื่อครอบคลุมส่วนที่ขาดที่เหลือ (จำกัดโดย
fee_limit)
ลำดับนี้สำคัญสำหรับกลยุทธ์การเช่า พลังงานที่มอบหมายถูกใช้ก่อน stake ของคุณเอง ดังนั้นหากคุณมีทั้งพลังงานที่ stake ของคุณเองและพลังงานที่เช่า ส่วนที่เช่าจะถูกดึงก่อน เมื่อช่วงการเช่าหมดอายุและการมอบหมายถูกเรียกคืน บัญชีของคุณจะถอยกลับไปใช้ยอด stake ของตัวเอง หรือหากนั่นไม่พอ จะเผา TRX
Bandwidth ปฏิบัติตามลำดับเดียวกัน การจัดสรรฟรีรายวันก่อน จากนั้น bandwidth ที่ stake แล้วการเผา TRX ไม่มีการแทนที่ข้ามทรัพยากร คุณไม่สามารถใช้พลังงานที่เหลือเพื่อครอบคลุมส่วน bandwidth ที่ขาด
การอ่านสถานะทรัพยากรของบัญชีของคุณบน on-chain
TRON API endpoint wallet/getaccountresource คืน JSON object พร้อมฟิลด์ที่คุณควรรู้
EnergyLimit: พลังงานรวมที่ใช้ได้ในบัญชีของคุณจาก stake ของคุณเองEnergyUsed: พลังงานที่ใช้ในหน้าต่าง 24 ชั่วโมงปัจจุบันTotalEnergyLimit: พลังงานรวมทั่วเครือข่าย (มีประโยชน์สำหรับการคำนวณอัตราส่วน stake ต่อพลังงาน)TotalEnergyWeight: น้ำหนัก stake รวมทั่วเครือข่ายสำหรับพลังงานfreeNetLimit: โควต้า bandwidth ฟรีรายวันของคุณ (โดยทั่วไป 600)NetLimit: bandwidth จาก TRX ที่ stake ของคุณเองNetUsed: bandwidth ที่ใช้วันนี้TotalNetLimit,TotalNetWeight: ผลรวมทั่วเครือข่ายสำหรับ bandwidth
หากต้องการดูพลังงานที่ถูกมอบหมายให้ที่อยู่ของคุณโดยผู้อื่น query wallet/getaccount และอ่านฟิลด์ acquired_delegated_frozenV2_balance_for_energy สำหรับรายละเอียดต่อผู้มอบหมาย รวมถึงการหมดอายุล็อก ใช้ wallet/getdelegatedresourcev2
หากคุณกำลังสร้างระบบที่ส่งการโอน TRC-20 แบบ programmatic การ poll endpoint เหล่านี้ก่อนการกระจายช่วยให้คุณตรวจจับสภาพพลังงานต่ำก่อนที่จะทำให้เผา TRX ที่ไม่คาดคิด เอกสาร APIครอบคลุมวิธีการรวมการตรวจสอบทรัพยากรและการสั่งซื้อพลังงานเข้ากับเวิร์กโฟลว์อัตโนมัติ
ทำไมสัญญา token จึงแปรผันในการใช้พลังงาน
ตัวเลข 65,000 energy ของ USDT เฉพาะกับสัญญา Tether ที่ TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t สัญญา TRC-20 อื่นๆ จะแตกต่างกัน สัญญา token ที่มีตรรกะเพิ่มเติม (กลไก fee-on-transfer, การตรวจสอบ allowance สำหรับ router หรือการปล่อย event สำหรับหลาย topic) จะใช้พลังงานมากกว่าต่อการเรียก สัญญารูปแบบ ERC-20 น้อยที่สุดอาจอยู่ต่ำกว่า 30,000
วิธีเดียวที่น่าเชื่อถือในการทราบต้นทุนพลังงานที่แท้จริงของสัญญาคือการจำลองธุรกรรมหรือดูบันทึกการดำเนินการในอดีตของสัญญานั้นบน block explorer อย่าใช้ตัวเลข USDT กับ TRC-20 token ทั้งหมดอย่างทั่วถึง