Vì sao một lần chuyển USDT cần 65,000 năng lượng, và 131,000 cho một địa chỉ trống
Hỏi một lần chuyển USDT trên TRON cần bao nhiêu năng lượng, và nguồn nào cũng đưa ra cùng hai câu trả lời: khoảng 65,000 đơn vị, hoặc khoảng 131,000 khi người nhận không giữ USDT. Ở mức đốt của mạng lưới là 100 sun mỗi đơn vị, đó chính là 6.5 TRX và 13.1 TRX mà các ví hiện ra như khoản phí. Hầu như chẳng ai nói hai con số ấy từ đâu ra. Chúng tôi đã hỏi một nút, và chính sổ sách của nó tách mỗi con số thành hai phần. Hơn ba phần tư số năng lượng là phụ phí theo mô hình năng lượng động của mạng lưới, và USDT trả nó ở hệ số cao nhất mà mạng lưới cho phép. 66,000 đơn vị tăng thêm cho một địa chỉ không có USDT là 15,000 đơn vị công việc tăng thêm, mang cùng phụ phí ấy.
Nút báo gì cho một lần chuyển
Một nút có thể chạy một lệnh gọi hợp đồng mà không gửi nó đi. Nó thực hiện lệnh gọi trên bản sao chuỗi của chính mình và bỏ kết quả đi sau khi trả lời, nên không có gì được ký hay phải trả tiền. Ngày 7 tháng 9 năm 2026, chúng tôi đã chạy bốn lệnh gọi như vậy, mỗi lệnh là một lần chuyển với số tiền nhỏ nhất, một đơn vị hay một phần triệu USDT, từ một chiếc ví đang giữ hàng nghìn, tới bốn loại người nhận: có hoặc không có USDT, có hoặc không có tài khoản trên chuỗi. Vài phút sau, chúng tôi chạy lại bộ đó trên những địa chỉ khác, tổng cộng tám lệnh gọi.
Mỗi câu trả lời mang theo con số ai cũng trích dẫn, energy_used, và một con số thứ hai bên cạnh, energy_penalty. Cả hai lượt chạy cho cùng một cặp ở mỗi loại người nhận:
| Người nhận, ngày 7 tháng 9 năm 2026 | energy_used | energy_penalty | Chênh lệch |
|---|---|---|---|
| Giữ USDT, tài khoản đã kích hoạt | 64,285 | 49,635 | 14,650 |
| Giữ USDT, chưa từng kích hoạt | 64,285 | 49,635 | 14,650 |
| Không có USDT, tài khoản đã kích hoạt | 130,285 | 100,635 | 29,650 |
| Không có USDT, chưa từng kích hoạt | 130,285 | 100,635 | 29,650 |
Người nhận có tài khoản hay không chẳng tạo ra khác biệt nào: một địa chỉ mà mạng lưới chưa từng nghe tới tốn y như một địa chỉ cũ có cùng số dư. Số dư mới là thứ quyết định, và ranh giới của nó nằm ở mức không. Ở lượt chạy thứ hai, một người nhận giữ đúng một đơn vị USDT, một phần triệu token, đã nhận con số rẻ hơn. Chuyện đó có nghĩa gì với một đơn hàng thì nằm trong bài về các tài khoản chưa kích hoạt.
Ngày 27 tháng 10 năm 2026, chúng tôi chạy lại hai trong số các lệnh gọi đó, từ cùng chiếc ví tới cùng hai địa chỉ, một địa chỉ giữ USDT và một địa chỉ trống. Cả hai trả về đúng energy_used và energy_penalty như hồi tháng 9, chính xác tới từng đơn vị.
Phụ phí và các tham số của nó
Chuỗi có một công tắc cho thứ mà nó gọi là năng lượng động, và mỗi hợp đồng mang energy_factor riêng của mình. Đi kèm với nó là ba tham số mạng lưới nữa, và xét theo tên thì đó là một ngưỡng sử dụng, một bước mà hệ số tăng lên theo, và một mức trần: một hợp đồng bị dùng nhiều sẽ tốn thêm năng lượng cho mỗi lệnh gọi. Chúng tôi đã đọc các tham số ngày 3 tháng 9 năm 2026 và đọc lại ngày 27 tháng 10, khi chúng tôi cũng đọc hệ số riêng của USDT. Các tham số không hề dịch chuyển giữa hai lần đọc.
| Đọc từ chuỗi | Giá trị |
|---|---|
Năng lượng động đã bật, getAllowDynamicEnergy | 1 |
Ngưỡng, getDynamicEnergyThreshold | 5,000,000,000 |
Bước, getDynamicEnergyIncreaseFactor | 2,000 |
Mức trần, getDynamicEnergyMaxFactor | 34,000 |
energy_factor của USDT, ngày 27 tháng 10 năm 2026 | 34,000 |
Mức đốt tính bằng sun mỗi đơn vị, getEnergyFee | 100 |
USDT nằm ở mức trần. Vào chính buổi tối chúng tôi đọc hệ số đó, lần chuyển tới một người giữ USDT báo cùng giá trị energy_penalty như hồi tháng 9, nên các con số tháng 9 cũng khớp với một hệ số 34,000.
Tách 65,000 và 131,000
Hãy đọc energy_penalty là phụ phí và phần còn lại là công việc riêng của lệnh gọi, tức chi phí gốc của nó. Khi đó hai loại chuyển khác nhau 15,000 đơn vị công việc và 51,000 đơn vị phụ phí:
| Năng lượng cho mỗi lần chuyển | Giữ USDT | Không có USDT | Chênh lệch |
|---|---|---|---|
| Chi phí gốc | 14,650 | 29,650 | 15,000 |
| Phụ phí | 49,635 | 100,635 | 51,000 |
| Tổng | 64,285 | 130,285 | 66,000 |
Phép tính ở cột chênh lệch là chính xác: 15,000 đơn vị công việc tăng thêm mang theo 51,000 đơn vị phụ phí, cứ năm đơn vị thì mười bảy, đó chính là hệ số 34,000 khi đếm theo từng phần mười nghìn. Vậy 66,000 ngăn cách hai con số được trích dẫn là một khối công việc tăng thêm, bị tính phụ phí theo hệ số của USDT.
Phần còn lại của lệnh gọi lệch khỏi tỷ lệ đó một chút. Mười bảy phần năm của 14,650 sẽ là 49,810, còn nút báo 49,635, thấp hơn 175 đơn vị. Trường hợp số dư rỗng cũng thấp hơn 175 đơn vị, nên chỗ hụt nằm ở phần công việc mà cả hai loại chia sẻ. Vì 49,635 không phải mười bảy phần năm của bất kỳ số nguyên nào, nên phần hụt không thể là một lát cắt của lệnh gọi thoát khỏi phụ phí, và hệ số đọc ra là 34,000 vào buổi tối cùng lệnh gọi đó báo cùng giá trị energy_penalty. Quy luật này trông giống làm tròn, với phụ phí được tính trên nhiều bước nhỏ của lệnh gọi, từng bước một. Chúng tôi không đối chiếu điều đó với mã nguồn của nút, nên bảng in ra đúng những gì nút báo và để 175 đơn vị ấy không được giải thích.
15,000 đơn vị công việc tăng thêm là gì
Số dư USDT là một mục trong bộ nhớ riêng của hợp đồng token, tách khỏi tài khoản TRON, và đó là lý do một địa chỉ không có tài khoản vẫn giữ được USDT. Một lần chuyển tới địa chỉ đã có số dư ghi đè lên một mục vốn đã chứa một con số. Một lần chuyển tới số dư bằng không thì ghi vào một mục trống. Lời giải thích thường gặp cho khoảng chênh là ghi vào một mục trống tốn hơn ghi đè, và 15,000 khớp với điều đó. Các lần dò của chúng tôi đo được chi phí mà không kiểm chứng lý do ấy, nên hãy coi đó là một lời giải thích mà các con số đồng tình.
Nếu điều đó đúng, một địa chỉ từng giữ USDT và đã gửi đi hết sẽ tốn con số cao hơn, vì mục của nó đã trở về không. Ít nhất một trang trong kết quả tìm kiếm nói rằng một địa chỉ như vậy vẫn có thể nhận con số thấp hơn. Chúng tôi không lên kế hoạch dò cho trường hợp này, và dù vậy một trong những lần đã ghi lại cũng bao phủ nó. Một người nhận có số dư bằng không ở lượt chạy đầu đã được nhặt từ dòng chuyển USDT với tư cách người gửi: đúng một tuần trước lần dò, nó đã gửi đi hơn bốn mươi bốn USDT một chút. Vậy nó từng giữ USDT và đã bị rút cạn, và lần chuyển tới nó tốn 130,285, bằng địa chỉ được tạo cho lượt chạy. Đó là một địa chỉ, đọc một lần.
Từ 64,285 tới 65,000
Các con số tròn nằm ngay trên những con số đo được. Dịch vụ của chúng tôi cũng làm tròn lên như vậy: một đơn hàng ở đây được định cỡ 65,000 hoặc 131,000 đơn vị cho hai loại chuyển, so với nhu cầu đo được là 64,285 và 130,285. Dù loại nào thì cũng còn lại 715 đơn vị dư. Làm tròn lên là phía an toàn, vì một lần chuyển thiếu năng lượng hoặc sẽ đốt TRX của người gửi cho phần còn lại, hoặc, khi không được phép đốt gì, sẽ hỏng với số năng lượng đã tiêu mất (lỗi đó trông ra sao). Nếu đốt thay vì thuê, các con số đo được ra thấp hơn các số tròn một chút:
| Người nhận | Năng lượng đo được | Đốt ở mức 100 sun mỗi đơn vị |
|---|---|---|
| Giữ USDT | 64,285 đơn vị | 6.4285 TRX |
| Không có USDT | 130,285 đơn vị | 13.0285 TRX |
Cả hai con số chỉ là riêng năng lượng. Một lần chuyển còn tiêu cả băng thông, một đồng hồ đo riêng với hóa đơn nhỏ hơn nhiều (năng lượng và băng thông đặt cạnh nhau).
Điều gì sẽ làm các con số dịch chuyển
Đòn bẩy thứ nhất là hệ số. Nó thuộc về hợp đồng, và xét theo tên các tham số thì nó tăng theo từng bước cùng mức sử dụng của hợp đồng, cho tới mức trần. USDT hiện đang ở mức trần, nên từ đây hệ số chỉ có thể giữ nguyên hoặc giảm xuống, trừ khi chính mức trần bị thay đổi. Ngưỡng, bước và mức trần là các tham số mạng lưới, và quản trị của mạng lưới có thể thay đổi chúng. Ở mức trần, phụ phí chiếm hơn ba phần tư những gì một lần chuyển USDT tiêu. Theo các con số này, nếu không có nó thì cùng lần chuyển tới một người giữ USDT sẽ chỉ còn chi phí gốc 14,650 đơn vị.
Đòn bẩy thứ hai là mức đốt, getEnergyFee, 100 sun mỗi đơn vị vào cả hai ngày chúng tôi đọc. Nó quyết định việc đốt năng lượng tốn bao nhiêu TRX, còn số đơn vị năng lượng vẫn y nguyên dù nó là bao nhiêu. Mạng lưới đã từng thay đổi nó, và hướng dẫn về khoản phí trình bày phép tính theo mức hiện nay. Phía năng lượng không dịch chuyển trong bảy tuần giữa hai bộ lần dò của chúng tôi: 64,285 và 130,285, cả hai lần.
Hãy kiểm tra một người nhận sẽ tốn con số nào trước khi có gì được ký: GET /v1/address-check trong tài liệu tham khảo API →