chore(tron): boilerplate support for (un)delegate resource instructions.
What changed, and why it matters
This commit adds the data structures and translations needed to support two new Tron blockchain operations—delegating and undelegating staked resources—but does not include the actual code that would handle or sign those operations. It also moves a few shared user-interface labels from the EOS section to a common 'words' section. There is no security issue visible in this patch.
No security action required. Treat as routine feature scaffolding. When the follow-up implementation commit appears, review the signing/confirmation flow for the new Tron contract types.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change is a boilerplate/protocol-only addition for Tron DelegateResourceContract and UnDelegateResourceContract. It updates protobuf definitions, generated message bindings in Python and Rust, message-type enums, translation keys, and an EOS layout file to use shared translation strings. No signing logic, validation, layout confirmation, or parsing code for the new Tron contracts is present in the diff. The commit is marked ‘chore(tron)’ and ‘[no changelog]’.
Changed components
common/protob/messages-tron.protocommon/protob/messages.protocore/src/apps/tron/consts.pycore/src/trezor/enums/MessageType.pycore/src/trezor/enums/TronRawContractType.pycore/src/trezor/enums/__init__.pycore/src/trezor/messages.pypython/src/trezorlib/messages.pyrust/trezor-client/src/messages/generated.rsrust/trezor-client/src/protos/generated/messages.rsrust/trezor-client/src/protos/generated/messages_tron.rscore/translations (multiple language JSON files)core/src/apps/eos/actions/layout.pyInspect captured patch +5339 / −4196
### common/protob/messages-tron.proto
@@ -59,6 +59,8 @@ message TronSignTx {
* @next TronUnfreezeBalanceV2Contract
* @next TronWithdrawUnfreeze
* @next TronWithdrawBalance
+ * @next TronDelegateResourceContract
+ * @next TronUnDelegateResourceContract
*/
message TronContractRequest {}
@@ -130,7 +132,7 @@ message TronUnfreezeBalanceV2Contract {
*/
// https://github.com/tronprotocol/protocol/blob/4c726956542b8dff5a4bd5c54aa07cd9da257d08/core/contract/balance_contract.proto#L96
message TronWithdrawUnfreeze {
- required bytes owner_address = 1; // Address to claim all unfrozen TRX.
+ required bytes owner_address = 1;
}
/**
@@ -142,6 +144,32 @@ message TronWithdrawBalance {
required bytes owner_address = 1;
}
+/**
+ * Request: Fill in DelegateResourceContract details (delegate staked Energy or Bandwidth to another account)
+ * @next TronSignature
+ */
+// https://github.com/tronprotocol/protocol/blob/master/core/contract/balance_contract.proto
+message TronDelegateResourceContract {
+ required bytes owner_address = 1; // Account delegating the resource
+ optional TronResourceCode resource = 2 [default = BANDWIDTH]; // Resource type to delegate
+ required uint64 balance = 3; // Amount to delegate (in SUN)
+ required bytes receiver_address = 4; // Account receiving the delegated resource
+ optional bool lock = 5; // Whether the delegation is time-locked
+ optional uint64 lock_period = 6; // Lock duration in blocks. Defaults to equiv. of 3 days if lock is set.
+}
+
+/**
+ * Request: Fill in UnDelegateResourceContract details (reclaim delegated Energy or Bandwidth)
+ * @next TronSignature
+ */
+// https://github.com/tronprotocol/protocol/blob/master/core/contract/balance_contract.proto
+message TronUnDelegateResourceContract {
+ required bytes owner_address = 1; // Account reclaiming the delegated resource
+ optional TronResourceCode resource = 2 [default = BANDWIDTH]; // Resource type to undelegate
+ required uint64 balance = 3; // Amount to undelegate (in SUN)
+ required bytes receiver_address = 4; // Account from which to reclaim
+}
+
// https://github.com/tronprotocol/protocol/blob/37bb922a9967bbbef1e84de1c9e5cda56a2d7998/core/contract/common.proto#L9C1-L13C2
// Staking/Unstaking can not happen just for TRON_POWER:
// https://developers.tron.network/reference/freezebalancev2-1
@@ -188,6 +216,8 @@ message TronRawTransaction {
FreezeBalanceV2Contract = 54;
UnfreezeBalanceV2Contract = 55;
WithdrawExpireUnfreezeContract = 56;
+ DelegateResourceContract = 57;
+ UnDelegateResourceContract = 58;
}
required TronRawContractType type = 1;
### common/protob/messages.proto
@@ -394,7 +394,8 @@ enum MessageType {
MessageType_TronUnfreezeBalanceV2Contract = 2208 [(wire_in) = true];
MessageType_TronWithdrawUnfreeze = 2209 [(wire_in) = true];
MessageType_TronVoteWitnessContract = 2210 [(wire_in) = true];
- // 2 indexes reserved for (un)delegation. PR in review.
+ MessageType_TronDelegateResourceContract = 2211 [(wire_in) = true];
+ MessageType_TronUnDelegateResourceContract = 2212 [(wire_in) = true];
MessageType_TronWithdrawBalance = 2213 [(wire_in) = true];
// Benchmark
### core/embed/rust/librust_qstr.h
@@ -1039,6 +1039,7 @@ static void _librust_qstrs(void) {
MP_QSTR_words__contains;
MP_QSTR_words__continue_anyway_question;
MP_QSTR_words__continue_with;
+ MP_QSTR_words__delegate;
MP_QSTR_words__deposit;
MP_QSTR_words__device;
MP_QSTR_words__disabled;
@@ -1048,6 +1049,7 @@ static void _librust_qstrs(void) {
MP_QSTR_words__fee;
MP_QSTR_words__fee_limit;
MP_QSTR_words__from;
+ MP_QSTR_words__from_title;
MP_QSTR_words__function;
MP_QSTR_words__important;
MP_QSTR_words__instructions;
@@ -1097,6 +1099,7 @@ static void _librust_qstrs(void) {
MP_QSTR_words__token;
MP_QSTR_words__transaction_fee;
MP_QSTR_words__try_again;
+ MP_QSTR_words__undelegate;
MP_QSTR_words__unknown;
MP_QSTR_words__unlimited;
MP_QSTR_words__unlocked;
@@ -1239,9 +1242,7 @@ static void _librust_qstrs(void) {
MP_QSTR_eos__contract;
MP_QSTR_eos__cpu;
MP_QSTR_eos__creator;
- MP_QSTR_eos__delegate;
MP_QSTR_eos__delete_auth;
- MP_QSTR_eos__from;
MP_QSTR_eos__link_auth;
MP_QSTR_eos__memo;
MP_QSTR_eos__name;
@@ -1261,7 +1262,6 @@ static void _librust_qstrs(void) {
MP_QSTR_eos__to;
MP_QSTR_eos__transfer;
MP_QSTR_eos__type;
- MP_QSTR_eos__undelegate;
MP_QSTR_eos__unlink_auth;
MP_QSTR_eos__update_auth;
MP_QSTR_eos__vote_for_producers;
@@ -1573,7 +1573,12 @@ static void _librust_qstrs(void) {
MP_QSTR_tezos__submit_proposals;
MP_QSTR_tron__claim_unfrozen_balance;
MP_QSTR_tron__claim_voting_rewards;
+ MP_QSTR_tron__delegate_resource;
+ MP_QSTR_tron__lock_period;
+ MP_QSTR_tron__lockperiod_blocks;
+ MP_QSTR_tron__lockperiod_time;
MP_QSTR_tron__owner_address;
+ MP_QSTR_tron__undelegate_resource;
MP_QSTR_u2f__get;
MP_QSTR_u2f__set_template;
MP_QSTR_u2f__title_get;
### core/embed/rust/src/translations/generated/translated_string.rs
[binary or diff unavailable]
### core/mocks/trezortranslate_keys.pyi
@@ -303,9 +303,7 @@ class TR:
eos__contract: str = "Contract"
eos__cpu: str = "CPU"
eos__creator: str = "Creator"
- eos__delegate: str = "Delegate"
eos__delete_auth: str = "Delete Auth"
- eos__from: str = "From"
eos__link_auth: str = "Link Auth"
eos__memo: str = "Memo"
eos__name: str = "Name"
@@ -325,7 +323,6 @@ class TR:
eos__to: str = "To"
eos__transfer: str = "Transfer"
eos__type: str = "Type"
- eos__undelegate: str = "Undelegate"
eos__unlink_auth: str = "Unlink Auth"
eos__update_auth: str = "Update Auth"
eos__vote_for_producers: str = "Vote for producers"
@@ -1037,7 +1034,12 @@ class TR:
thp__qr_title: str = "Scan QR code to pair"
tron__claim_unfrozen_balance: str = "Claim unfrozen balance?"
tron__claim_voting_rewards: str = "Claim voting rewards?"
+ tron__delegate_resource: str = "Delegate resource"
+ tron__lock_period: str = "Lock period"
+ tron__lockperiod_blocks: str = "Blocks"
+ tron__lockperiod_time: str = "Time"
tron__owner_address: str = "Owner address"
+ tron__undelegate_resource: str = "Undelegate resource"
tutorial__continue: str = "Continue tutorial"
tutorial__did_you_know: str = "Did you know?"
tutorial__exit: str = "Exit tutorial"
@@ -1129,6 +1131,7 @@ class TR:
words__contains: str = "Contains"
words__continue_anyway_question: str = "Continue anyway?"
words__continue_with: str = "Continue with"
+ words__delegate: str = "Delegate"
words__deposit: str = "Deposit"
words__device: str = "Device"
words__disabled: str = "Disabled"
@@ -1138,6 +1141,7 @@ class TR:
words__fee: str = "Fee"
words__fee_limit: str = "Fee limit"
words__from: str = "from"
+ words__from_title: str = "From"
words__function: str = "Function"
words__important: str = "Important"
words__instructions: str = "Instructions"
@@ -1187,6 +1191,7 @@ class TR:
words__token: str = "Token"
words__transaction_fee: str = "Transaction fee"
words__try_again: str = "Try again."
+ words__undelegate: str = "Undelegate"
words__unknown: str = "Unknown"
words__unlimited: str = "Unlimited"
words__unlocked: str = "Unlocked"
### core/src/apps/eos/actions/layout.py
@@ -89,7 +89,7 @@ async def confirm_action_delegate(msg: EosActionDelegate) -> None:
await _confirm_properties(
"confirm_delegate",
- TR.eos__delegate,
+ TR.words__delegate,
props,
)
@@ -108,7 +108,7 @@ async def confirm_action_sellram(msg: EosActionSellRam) -> None:
async def confirm_action_undelegate(msg: EosActionUndelegate) -> None:
await _confirm_properties(
"confirm_undelegate",
- TR.eos__undelegate,
+ TR.words__undelegate,
(
(TR.eos__sender, eos_name_to_string(msg.sender), True),
(TR.eos__receiver, eos_name_to_string(msg.receiver), True),
@@ -162,7 +162,7 @@ async def confirm_action_voteproducer(msg: EosActionVoteProducer) -> None:
async def confirm_action_transfer(msg: EosActionTransfer, account: str) -> None:
props = [
- (TR.eos__from, eos_name_to_string(msg.sender), True),
+ (TR.words__from_title, eos_name_to_string(msg.sender), True),
(TR.eos__to, eos_name_to_string(msg.receiver), True),
(TR.words__amount, eos_asset_to_string(msg.quantity), True),
(TR.eos__contract, account, True),
### core/src/apps/tron/consts.py
@@ -16,6 +16,8 @@
MessageType.TronUnfreezeBalanceV2Contract,
MessageType.TronWithdrawUnfreeze,
MessageType.TronWithdrawBalance,
+ MessageType.TronDelegateResourceContract,
+ MessageType.TronUnDelegateResourceContract,
)
# https://github.com/tronprotocol/protocol/blob/37bb922a9967bbbef1e84de1c9e5cda56a2d7998/core/Tron.proto#L339-L379
@@ -27,6 +29,8 @@
54: "FreezeBalanceV2Contract",
55: "UnfreezeBalanceV2Contract",
56: "WithdrawExpireUnfreezeContract",
+ 57: "DelegateResourceContract",
+ 58: "UnDelegateResourceContract",
}
### core/src/trezor/enums/MessageType.py
@@ -302,4 +302,6 @@
TronUnfreezeBalanceV2Contract = 2208
TronWithdrawUnfreeze = 2209
TronVoteWitnessContract = 2210
+ TronDelegateResourceContract = 2211
+ TronUnDelegateResourceContract = 2212
TronWithdrawBalance = 2213
### core/src/trezor/enums/TronRawContractType.py
@@ -9,3 +9,5 @@
FreezeBalanceV2Contract = 54
UnfreezeBalanceV2Contract = 55
WithdrawExpireUnfreezeContract = 56
+DelegateResourceContract = 57
+UnDelegateResourceContract = 58
### core/src/trezor/enums/__init__.py
@@ -470,6 +470,8 @@ class TronRawContractType(IntEnum):
FreezeBalanceV2Contract = 54
UnfreezeBalanceV2Contract = 55
WithdrawExpireUnfreezeContract = 56
+ DelegateResourceContract = 57
+ UnDelegateResourceContract = 58
class MessageType(IntEnum):
Initialize = 0
@@ -761,6 +763,8 @@ class MessageType(IntEnum):
TronUnfreezeBalanceV2Contract = 2208
TronWithdrawUnfreeze = 2209
TronVoteWitnessContract = 2210
+ TronDelegateResourceContract = 2211
+ TronUnDelegateResourceContract = 2212
TronWithdrawBalance = 2213
BenchmarkListNames = 9100
BenchmarkNames = 9101
### core/src/trezor/messages.py
@@ -7847,6 +7847,50 @@ def __init__(
def is_type_of(cls, msg: Any) -> TypeGuard["TronWithdrawBalance"]:
return isinstance(msg, cls)
+ class TronDelegateResourceContract(protobuf.MessageType):
+ owner_address: "AnyBytes"
+ resource: "TronResourceCode"
+ balance: "int"
+ receiver_address: "AnyBytes"
+ lock: "bool | None"
+ lock_period: "int | None"
+
+ def __init__(
+ self,
+ *,
+ owner_address: "AnyBytes",
+ balance: "int",
+ receiver_address: "AnyBytes",
+ resource: "TronResourceCode | None" = None,
+ lock: "bool | None" = None,
+ lock_period: "int | None" = None,
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["TronDelegateResourceContract"]:
+ return isinstance(msg, cls)
+
+ class TronUnDelegateResourceContract(protobuf.MessageType):
+ owner_address: "AnyBytes"
+ resource: "TronResourceCode"
+ balance: "int"
+ receiver_address: "AnyBytes"
+
+ def __init__(
+ self,
+ *,
+ owner_address: "AnyBytes",
+ balance: "int",
+ receiver_address: "AnyBytes",
+ resource: "TronResourceCode | None" = None,
+ ) -> None:
+ pass
+
+ @classmethod
+ def is_type_of(cls, msg: Any) -> TypeGuard["TronUnDelegateResourceContract"]:
+ return isinstance(msg, cls)
+
class TronSignature(protobuf.MessageType):
signature: "AnyBytes"
### core/translations/cs.json
@@ -687,24 +687,12 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__delegate": {
- "Bolt": "Delegovat",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__delete_auth": {
"Bolt": "Odstranit ověření",
"Caesar": "",
"Delizia": "",
"Eckhart": ""
},
- "eos__from": {
- "Bolt": "Od",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__link_auth": {
"Bolt": "Spojit ověření",
"Caesar": "",
@@ -819,12 +807,6 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__undelegate": {
- "Bolt": "Zrušit delegaci",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__unlink_auth": {
"Bolt": "Odpojit ověření",
"Caesar": "",
@@ -3391,6 +3373,12 @@
"Delizia": "",
"Eckhart": ""
},
+ "words__delegate": {
+ "Bolt": "Delegovat",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__deposit": "Vklad",
"words__device": "Zařízení",
"words__disabled": {
@@ -3420,6 +3408,12 @@
"Delizia": "ze",
"Eckhart": ""
},
+ "words__from_title": {
+ "Bolt": "Od",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__function": "Funkce",
"words__important": "Důležité",
"words__instructions": "Pokyny",
@@ -3559,6 +3553,12 @@
"Delizia": "Zkuste to znovu.",
"Eckhart": "Zkusit znovu"
},
+ "words__undelegate": {
+ "Bolt": "Zrušit delegaci",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__unknown": "Neznámé",
"words__unlimited": "Bez limitu",
"words__unlocked": {
### core/translations/de.json
@@ -832,24 +832,12 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__delegate": {
- "Bolt": "Delegieren",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__delete_auth": {
"Bolt": "Auth löschen",
"Caesar": "",
"Delizia": "",
"Eckhart": ""
},
- "eos__from": {
- "Bolt": "Von",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__link_auth": {
"Bolt": "Auth verknüpfen",
"Caesar": "",
@@ -964,12 +952,6 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__undelegate": {
- "Bolt": "Delegieren aufheben",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__unlink_auth": {
"Bolt": "Auth-Verknüpfung aufheben",
"Caesar": "",
@@ -3826,6 +3808,12 @@
"Delizia": "",
"Eckhart": ""
},
+ "words__delegate": {
+ "Bolt": "Delegieren",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__deposit": "Einzahlung",
"words__device": "Gerät",
"words__disabled": {
@@ -3855,6 +3843,12 @@
"Delizia": "von",
"Eckhart": ""
},
+ "words__from_title": {
+ "Bolt": "Von",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__function": "Funktion",
"words__important": "Wichtig",
"words__instructions": "Anweisungen",
@@ -3999,6 +3993,12 @@
"Delizia": "Versuche es erneut.",
"Eckhart": "Versuche es erneut"
},
+ "words__undelegate": {
+ "Bolt": "Delegieren aufheben",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__unknown": "Unbekannt",
"words__unlimited": "Unbegrenzt",
"words__unlocked": {
### core/translations/en.json
@@ -670,24 +670,12 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__delegate": {
- "Bolt": "Delegate",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__delete_auth": {
"Bolt": "Delete Auth",
"Caesar": "",
"Delizia": "",
"Eckhart": ""
},
- "eos__from": {
- "Bolt": "From",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__link_auth": {
"Bolt": "Link Auth",
"Caesar": "",
@@ -802,12 +790,6 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__undelegate": {
- "Bolt": "Undelegate",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__unlink_auth": {
"Bolt": "Unlink Auth",
"Caesar": "",
@@ -3049,7 +3031,22 @@
},
"tron__claim_unfrozen_balance": "Claim unfrozen balance?",
"tron__claim_voting_rewards": "Claim voting rewards?",
+ "tron__delegate_resource": "Delegate resource",
+ "tron__lock_period": "Lock period",
+ "tron__lockperiod_blocks": {
+ "Bolt": "Blocks",
+ "Caesar": "Lock period (Blocks)",
+ "Delizia": "Blocks",
+ "Eckhart": "Blocks"
+ },
+ "tron__lockperiod_time": {
+ "Bolt": "Time",
+ "Caesar": "Lock period (Time)",
+ "Delizia": "Time",
+ "Eckhart": "Time"
+ },
"tron__owner_address": "Owner address",
+ "tron__undelegate_resource": "Undelegate resource",
"tutorial__continue": {
"Bolt": "",
"Caesar": "",
@@ -3396,6 +3393,7 @@
"Delizia": "",
"Eckhart": ""
},
+ "words__delegate": "Delegate",
"words__deposit": "Deposit",
"words__device": "Device",
"words__disabled": {
@@ -3425,6 +3423,7 @@
"Delizia": "from",
"Eckhart": ""
},
+ "words__from_title": "From",
"words__function": "Function",
"words__important": "Important",
"words__instructions": "Instructions",
@@ -3564,6 +3563,7 @@
"Delizia": "Try again.",
"Eckhart": "Try again"
},
+ "words__undelegate": "Undelegate",
"words__unknown": "Unknown",
"words__unlimited": "Unlimited",
"words__unlocked": {
### core/translations/es.json
@@ -707,24 +707,12 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__delegate": {
- "Bolt": "Delegar",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__delete_auth": {
"Bolt": "Eliminar autorización",
"Caesar": "",
"Delizia": "",
"Eckhart": ""
},
- "eos__from": {
- "Bolt": "De",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__link_auth": {
"Bolt": "Vincular autorización",
"Caesar": "",
@@ -839,12 +827,6 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__undelegate": {
- "Bolt": "Anular delegación",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__unlink_auth": {
"Bolt": "Desvincular autorización",
"Caesar": "",
@@ -3401,6 +3383,12 @@
"Delizia": "",
"Eckhart": ""
},
+ "words__delegate": {
+ "Bolt": "Delegar",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__deposit": "Depósito",
"words__device": "Dispositivo",
"words__disabled": {
@@ -3430,6 +3418,12 @@
"Delizia": "del",
"Eckhart": ""
},
+ "words__from_title": {
+ "Bolt": "De",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__function": "Función",
"words__important": "Importante",
"words__instructions": "Instrucciones",
@@ -3574,6 +3568,12 @@
"Delizia": "Reintentar.",
"Eckhart": "Reintentar."
},
+ "words__undelegate": {
+ "Bolt": "Anular delegación",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__unknown": "Desconocido",
"words__unlimited": "Ilimitado",
"words__unlocked": {
### core/translations/fr.json
@@ -812,24 +812,12 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__delegate": {
- "Bolt": "Déléguer",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__delete_auth": {
"Bolt": "Supprimer l'autorisation",
"Caesar": "",
"Delizia": "",
"Eckhart": ""
},
- "eos__from": {
- "Bolt": "De",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__link_auth": {
"Bolt": "Lier auth.",
"Caesar": "",
@@ -944,12 +932,6 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__undelegate": {
- "Bolt": "Annuler la délégation",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__unlink_auth": {
"Bolt": "Dissocier l'autorisation",
"Caesar": "",
@@ -3641,6 +3623,12 @@
"Delizia": "",
"Eckhart": ""
},
+ "words__delegate": {
+ "Bolt": "Déléguer",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__deposit": "Dépôt",
"words__device": "Appareil",
"words__disabled": {
@@ -3670,6 +3658,12 @@
"Delizia": "du",
"Eckhart": ""
},
+ "words__from_title": {
+ "Bolt": "De",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__function": "Fonction",
"words__important": "Important",
"words__instructions": "Instructions",
@@ -3809,6 +3803,12 @@
"Delizia": "Réessayez.",
"Eckhart": "Réessayer"
},
+ "words__undelegate": {
+ "Bolt": "Annuler la délégation",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__unknown": "Inconnu(e)(s)",
"words__unlimited": "Illimité(e)(s)",
"words__unlocked": {
### core/translations/order.json
@@ -1284,5 +1284,13 @@
"1282": "stellar__token_contract",
"1283": "stellar__transfer_token",
"1284": "backup__info_multi_group_backup",
- "1285": "backup__info_n_of_m_template"
+ "1285": "backup__info_n_of_m_template",
+ "1286": "tron__delegate_resource",
+ "1287": "tron__lock_period",
+ "1288": "tron__lockperiod_blocks",
+ "1289": "tron__lockperiod_time",
+ "1290": "tron__undelegate_resource",
+ "1291": "words__delegate",
+ "1292": "words__from_title",
+ "1293": "words__undelegate"
}
### core/translations/pt.json
@@ -717,24 +717,12 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__delegate": {
- "Bolt": "Delegar",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__delete_auth": {
"Bolt": "Excluir autorização",
"Caesar": "",
"Delizia": "",
"Eckhart": ""
},
- "eos__from": {
- "Bolt": "De",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__link_auth": {
"Bolt": "Vincular autorização",
"Caesar": "",
@@ -849,12 +837,6 @@
"Delizia": "",
"Eckhart": ""
},
- "eos__undelegate": {
- "Bolt": "Revogar delegação",
- "Caesar": "",
- "Delizia": "",
- "Eckhart": ""
- },
"eos__unlink_auth": {
"Bolt": "Desvincular autorização",
"Caesar": "",
@@ -3511,6 +3493,12 @@
"Delizia": "",
"Eckhart": ""
},
+ "words__delegate": {
+ "Bolt": "Delegar",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__deposit": "Depósito",
"words__device": "Dispositivo",
"words__disabled": {
@@ -3540,6 +3528,12 @@
"Delizia": "do",
"Eckhart": ""
},
+ "words__from_title": {
+ "Bolt": "De",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__function": "Função",
"words__important": "Importante",
"words__instructions": "Instruções",
@@ -3679,6 +3673,12 @@
"Delizia": "Tente novamente.",
"Eckhart": "Tente novamente"
},
+ "words__undelegate": {
+ "Bolt": "Revogar delegação",
+ "Caesar": "",
+ "Delizia": "",
+ "Eckhart": ""
+ },
"words__unknown": "Desconhecido",
"words__unlimited": "Ilimitado",
"words__unlocked": {
### core/translations/signatures.json
@@ -1,8 +1,8 @@
{
"current": {
- "merkle_root": "94bf8d929cb0d24b92c87ff8f8efc00aee41fb9ef5f6482e1c908ad9605ff768",
- "datetime": "2026-08-25T15:56:41.250312+00:00",
- "commit": "4b96a3119828c6862308a52bf3b50c3c73d2d372"
+ "merkle_root": "c33ecb2e98a957bf6251736af6c12449a6ec5777691d3c83d14ca484ad0c9047",
+ "datetime": "2026-08-25T17:53:47.379637+00:00",
+ "commit": "f36dff00aa1aff424fb291a41a864b9e254d822a"
},
"history": [
{
### python/src/trezorlib/messages.py
@@ -534,6 +534,8 @@ class TronRawContractType(IntEnum):
FreezeBalanceV2Contract = 54
UnfreezeBalanceV2Contract = 55
WithdrawExpireUnfreezeContract = 56
+ DelegateResourceContract = 57
+ UnDelegateResourceContract = 58
class MessageType(IntEnum):
@@ -826,6 +828,8 @@ class MessageType(IntEnum):
TronUnfreezeBalanceV2Contract = 2208
TronWithdrawUnfreeze = 2209
TronVoteWitnessContract = 2210
+ TronDelegateResourceContract = 2211
+ TronUnDelegateResourceContract = 2212
TronWithdrawBalance = 2213
BenchmarkListNames = 9100
BenchmarkNames = 9101
@@ -9861,6 +9865,58 @@ def __init__(
self.owner_address = owner_address
+class TronDelegateResourceContract(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 2211
+ FIELDS = {
+ 1: protobuf.Field("owner_address", "bytes", repeated=False, required=True),
+ 2: protobuf.Field("resource", "TronResourceCode", repeated=False, required=False, default=TronResourceCode.BANDWIDTH),
+ 3: protobuf.Field("balance", "uint64", repeated=False, required=True),
+ 4: protobuf.Field("receiver_address", "bytes", repeated=False, required=True),
+ 5: protobuf.Field("lock", "bool", repeated=False, required=False, default=None),
+ 6: protobuf.Field("lock_period", "uint64", repeated=False, required=False, default=None),
+ }
+
+ def __init__(
+ self,
+ *,
+ owner_address: "bytes",
+ balance: "int",
+ receiver_address: "bytes",
+ resource: Optional["TronResourceCode"] = TronResourceCode.BANDWIDTH,
+ lock: Optional["bool"] = None,
+ lock_period: Optional["int"] = None,
+ ) -> None:
+ self.owner_address = owner_address
+ self.balance = balance
+ self.receiver_address = receiver_address
+ self.resource = resource
+ self.lock = lock
+ self.lock_period = lock_period
+
+
+class TronUnDelegateResourceContract(protobuf.MessageType):
+ MESSAGE_WIRE_TYPE = 2212
+ FIELDS = {
+ 1: protobuf.Field("owner_address", "bytes", repeated=False, required=True),
+ 2: protobuf.Field("resource", "TronResourceCode", repeated=False, required=False, default=TronResourceCode.BANDWIDTH),
+ 3: protobuf.Field("balance", "uint64", repeated=False, required=True),
+ 4: protobuf.Field("receiver_address", "bytes", repeated=False, required=True),
+ }
+
+ def __init__(
+ self,
+ *,
+ owner_address: "bytes",
+ balance: "int",
+ receiver_address: "bytes",
+ resource: Optional["TronResourceCode"] = TronResourceCode.BANDWIDTH,
+ ) -> None:
+ self.owner_address = owner_address
+ self.balance = balance
+ self.receiver_address = receiver_address
+ self.resource = resource
+
+
class TronSignature(protobuf.MessageType):
MESSAGE_WIRE_TYPE = 2203
FIELDS = {
### rust/trezor-client/src/messages/generated.rs
@@ -341,6 +341,8 @@ trezor_message_impl! {
TronUnfreezeBalanceV2Contract => MessageType_TronUnfreezeBalanceV2Contract,
TronWithdrawUnfreeze => MessageType_TronWithdrawUnfreeze,
TronVoteWitnessContract => MessageType_TronVoteWitnessContract,
+ TronDelegateResourceContract => MessageType_TronDelegateResourceContract,
+ TronUnDelegateResourceContract => MessageType_TronUnDelegateResourceContract,
TronWithdrawBalance => MessageType_TronWithdrawBalance,
}
### rust/trezor-client/src/protos/generated/messages.rs
@@ -605,6 +605,10 @@ pub enum MessageType {
MessageType_TronWithdrawUnfreeze = 2209,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TronVoteWitnessContract)
MessageType_TronVoteWitnessContract = 2210,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TronDelegateResourceContract)
+ MessageType_TronDelegateResourceContract = 2211,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TronUnDelegateResourceContract)
+ MessageType_TronUnDelegateResourceContract = 2212,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TronWithdrawBalance)
MessageType_TronWithdrawBalance = 2213,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_BenchmarkListNames)
@@ -919,6 +923,8 @@ impl ::protobuf::Enum for MessageType {
2208 => ::std::option::Option::Some(MessageType::MessageType_TronUnfreezeBalanceV2Contract),
2209 => ::std::option::Option::Some(MessageType::MessageType_TronWithdrawUnfreeze),
2210 => ::std::option::Option::Some(MessageType::MessageType_TronVoteWitnessContract),
+ 2211 => ::std::option::Option::Some(MessageType::MessageType_TronDelegateResourceContract),
+ 2212 => ::std::option::Option::Some(MessageType::MessageType_TronUnDelegateResourceContract),
2213 => ::std::option::Option::Some(MessageType::MessageType_TronWithdrawBalance),
9100 => ::std::option::Option::Some(MessageType::MessageType_BenchmarkListNames),
9101 => ::std::option::Option::Some(MessageType::MessageType_BenchmarkNames),
@@ -1221,6 +1227,8 @@ impl ::protobuf::Enum for MessageType {
"MessageType_TronUnfreezeBalanceV2Contract" => ::std::option::Option::Some(MessageType::MessageType_TronUnfreezeBalanceV2Contract),
"MessageType_TronWithdrawUnfreeze" => ::std::option::Option::Some(MessageType::MessageType_TronWithdrawUnfreeze),
"MessageType_TronVoteWitnessContract" => ::std::option::Option::Some(MessageType::MessageType_TronVoteWitnessContract),
+ "MessageType_TronDelegateResourceContract" => ::std::option::Option::Some(MessageType::MessageType_TronDelegateResourceContract),
+ "MessageType_TronUnDelegateResourceContract" => ::std::option::Option::Some(MessageType::MessageType_TronUnDelegateResourceContract),
"MessageType_TronWithdrawBalance" => ::std::option::Option::Some(MessageType::MessageType_TronWithdrawBalance),
"MessageType_BenchmarkListNames" => ::std::option::Option::Some(MessageType::MessageType_BenchmarkListNames),
"MessageType_BenchmarkNames" => ::std::option::Option::Some(MessageType::MessageType_BenchmarkNames),
@@ -1522,6 +1530,8 @@ impl ::protobuf::Enum for MessageType {
MessageType::MessageType_TronUnfreezeBalanceV2Contract,
MessageType::MessageType_TronWithdrawUnfreeze,
MessageType::MessageType_TronVoteWitnessContract,
+ MessageType::MessageType_TronDelegateResourceContract,
+ MessageType::MessageType_TronUnDelegateResourceContract,
MessageType::MessageType_TronWithdrawBalance,
MessageType::MessageType_BenchmarkListNames,
MessageType::MessageType_BenchmarkNames,
@@ -1829,13 +1839,15 @@ impl ::protobuf::EnumFull for MessageType {
MessageType::MessageType_TronUnfreezeBalanceV2Contract => 286,
MessageType::MessageType_TronWithdrawUnfreeze => 287,
MessageType::MessageType_TronVoteWitnessContract => 288,
- MessageType::MessageType_TronWithdrawBalance => 289,
- MessageType::MessageType_BenchmarkListNames => 290,
- MessageType::MessageType_BenchmarkNames => 291,
- MessageType::MessageType_BenchmarkRun => 292,
- MessageType::MessageType_BenchmarkResult => 293,
- MessageType::MessageType_TelemetryGet => 294,
- MessageType::MessageType_Telemetry => 295,
+ MessageType::MessageType_TronDelegateResourceContract => 289,
+ MessageType::MessageType_TronUnDelegateResourceContract => 290,
+ MessageType::MessageType_TronWithdrawBalance => 291,
+ MessageType::MessageType_BenchmarkListNames => 292,
+ MessageType::MessageType_BenchmarkNames => 293,
+ MessageType::MessageType_BenchmarkRun => 294,
+ MessageType::MessageType_BenchmarkResult => 295,
+ MessageType::MessageType_TelemetryGet => 296,
+ MessageType::MessageType_Telemetry => 297,
};
Self::enum_descriptor().value_by_index(index)
}
@@ -1854,7 +1866,7 @@ impl MessageType {
}
static file_descriptor_proto_data: &'static [u8] = b"\
- \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xf8h\
+ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\roptions.proto*\xe4i\
\n\x0bMessageType\x12(\n\x16MessageType_Initialize\x10\0\x1a\x0c\xb0\xb5\
\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\x1e\n\x10MessageType_Ping\
\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x13MessageType_S\
@@ -2187,25 +2199,27 @@ static file_descriptor_proto_data: &'static [u8] = b"\
4\n)MessageType_TronUnfreezeBalanceV2Contract\x10\xa0\x11\x1a\x04\x90\
\xb5\x18\x01\x12+\n\x20MessageType_TronWithdrawUnfreeze\x10\xa1\x11\x1a\
\x04\x90\xb5\x18\x01\x12.\n#MessageType_TronVoteWitnessContract\x10\xa2\
- \x11\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_TronWithdrawBalance\
- \x10\xa5\x11\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_BenchmarkList\
- Names\x10\x8cG\x1a\x04\x80\xa6\x1d\x01\x12%\n\x1aMessageType_BenchmarkNa\
- mes\x10\x8dG\x1a\x04\x80\xa6\x1d\x01\x12#\n\x18MessageType_BenchmarkRun\
- \x10\x8eG\x1a\x04\x80\xa6\x1d\x01\x12&\n\x1bMessageType_BenchmarkResult\
- \x10\x8fG\x1a\x04\x80\xa6\x1d\x01\x12'\n\x18MessageType_TelemetryGet\x10\
- \xcc\x08\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x15MessageType_T\
- elemetry\x10\xcd\x08\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x1a\x08\xc8\
- \xf3\x18\x01\xd0\xf3\x18\x01\"\x04\x08Z\x10\\\"\x04\x08M\x10N\"\x04\x08G\
- \x10J\"\x06\x08\xd9\x03\x10\xda\x03\"\x04\x08r\x10z\"\x05\x08{\x10\x95\
- \x01\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\xe0\x01\"\x06\
- \x08\xe2\x01\x10\xe2\x01\"\x06\x08\xe3\x01\x10\xe3\x01\"\x06\x08\xe4\x01\
- \x10\xe4\x01\"\x06\x08\xe5\x01\x10\xe5\x01\"\x06\x08\xe7\x01\x10\xe7\x01\
- \"\x06\x08\xe8\x01\x10\xe8\x01\"\x06\x08\xe9\x01\x10\xe9\x01\"\x06\x08\
- \xea\x01\x10\xea\x01\"\x06\x08\xec\x01\x10\xec\x01\"\x06\x08\xed\x01\x10\
- \xed\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02\"\
- \x06\x08\xbc\x05\x10\xc5\x05\"\x06\x08\xe9\x07\x10\xf7\x07\"\x06\x08\xfa\
- \x07\x10\xcb\x08B8\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage\
- \x80\xa6\x1d\x01\
+ \x11\x1a\x04\x90\xb5\x18\x01\x123\n(MessageType_TronDelegateResourceCont\
+ ract\x10\xa3\x11\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_TronUnDelega\
+ teResourceContract\x10\xa4\x11\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessage\
+ Type_TronWithdrawBalance\x10\xa5\x11\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eM\
+ essageType_BenchmarkListNames\x10\x8cG\x1a\x04\x80\xa6\x1d\x01\x12%\n\
+ \x1aMessageType_BenchmarkNames\x10\x8dG\x1a\x04\x80\xa6\x1d\x01\x12#\n\
+ \x18MessageType_BenchmarkRun\x10\x8eG\x1a\x04\x80\xa6\x1d\x01\x12&\n\x1b\
+ MessageType_BenchmarkResult\x10\x8fG\x1a\x04\x80\xa6\x1d\x01\x12'\n\x18M\
+ essageType_TelemetryGet\x10\xcc\x08\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\
+ \x01\x12$\n\x15MessageType_Telemetry\x10\xcd\x08\x1a\x08\x80\xa6\x1d\x01\
+ \x98\xb5\x18\x01\x1a\x08\xc8\xf3\x18\x01\xd0\xf3\x18\x01\"\x04\x08Z\x10\
+ \\\"\x04\x08M\x10N\"\x04\x08G\x10J\"\x06\x08\xd9\x03\x10\xda\x03\"\x04\
+ \x08r\x10z\"\x05\x08{\x10\x95\x01\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\
+ \x08\xe0\x01\x10\xe0\x01\"\x06\x08\xe2\x01\x10\xe2\x01\"\x06\x08\xe3\x01\
+ \x10\xe3\x01\"\x06\x08\xe4\x01\x10\xe4\x01\"\x06\x08\xe5\x01\x10\xe5\x01\
+ \"\x06\x08\xe7\x01\x10\xe7\x01\"\x06\x08\xe8\x01\x10\xe8\x01\"\x06\x08\
+ \xe9\x01\x10\xe9\x01\"\x06\x08\xea\x01\x10\xea\x01\"\x06\x08\xec\x01\x10\
+ \xec\x01\"\x06\x08\xed\x01\x10\xed\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\
+ \x06\x08\xb5\x02\x10\xb8\x02\"\x06\x08\xbc\x05\x10\xc5\x05\"\x06\x08\xe9\
+ \x07\x10\xf7\x07\"\x06\x08\xfa\x07\x10\xcb\x08B8\n#com.satoshilabs.trezo\
+ r.lib.protobufB\rTrezorMessage\x80\xa6\x1d\x01\
";
/// `FileDescriptorProto` object which was a source for this generated file
### rust/trezor-client/src/protos/generated/messages_tron.rs
@@ -2751,6 +2751,676 @@ impl ::protobuf::reflect::ProtobufValue for TronWithdrawBalance {
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
}
+// @@protoc_insertion_point(message:hw.trezor.messages.tron.TronDelegateResourceContract)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct TronDelegateResourceContract {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronDelegateResourceContract.owner_address)
+ pub owner_address: ::std::option::Option<::std::vec::Vec<u8>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronDelegateResourceContract.resource)
+ pub resource: ::std::option::Option<::protobuf::EnumOrUnknown<TronResourceCode>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronDelegateResourceContract.balance)
+ pub balance: ::std::option::Option<u64>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronDelegateResourceContract.receiver_address)
+ pub receiver_address: ::std::option::Option<::std::vec::Vec<u8>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronDelegateResourceContract.lock)
+ pub lock: ::std::option::Option<bool>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronDelegateResourceContract.lock_period)
+ pub lock_period: ::std::option::Option<u64>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.tron.TronDelegateResourceContract.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a TronDelegateResourceContract {
+ fn default() -> &'a TronDelegateResourceContract {
+ <TronDelegateResourceContract as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl TronDelegateResourceContract {
+ pub fn new() -> TronDelegateResourceContract {
+ ::std::default::Default::default()
+ }
+
+ // required bytes owner_address = 1;
+
+ pub fn owner_address(&self) -> &[u8] {
+ match self.owner_address.as_ref() {
+ Some(v) => v,
+ None => &[],
+ }
+ }
+
+ pub fn clear_owner_address(&mut self) {
+ self.owner_address = ::std::option::Option::None;
+ }
+
+ pub fn has_owner_address(&self) -> bool {
+ self.owner_address.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_owner_address(&mut self, v: ::std::vec::Vec<u8>) {
+ self.owner_address = ::std::option::Option::Some(v);
+ }
+
+ // Mutable pointer to the field.
+ // If field is not initialized, it is initialized with default value first.
+ pub fn mut_owner_address(&mut self) -> &mut ::std::vec::Vec<u8> {
+ if self.owner_address.is_none() {
+ self.owner_address = ::std::option::Option::Some(::std::vec::Vec::new());
+ }
+ self.owner_address.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_owner_address(&mut self) -> ::std::vec::Vec<u8> {
+ self.owner_address.take().unwrap_or_else(|| ::std::vec::Vec::new())
+ }
+
+ // optional .hw.trezor.messages.tron.TronResourceCode resource = 2;
+
+ pub fn resource(&self) -> TronResourceCode {
+ match self.resource {
+ Some(e) => e.enum_value_or(TronResourceCode::BANDWIDTH),
+ None => TronResourceCode::BANDWIDTH,
+ }
+ }
+
+ pub fn clear_resource(&mut self) {
+ self.resource = ::std::option::Option::None;
+ }
+
+ pub fn has_resource(&self) -> bool {
+ self.resource.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_resource(&mut self, v: TronResourceCode) {
+ self.resource = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
+ }
+
+ // required uint64 balance = 3;
+
+ pub fn balance(&self) -> u64 {
+ self.balance.unwrap_or(0)
+ }
+
+ pub fn clear_balance(&mut self) {
+ self.balance = ::std::option::Option::None;
+ }
+
+ pub fn has_balance(&self) -> bool {
+ self.balance.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_balance(&mut self, v: u64) {
+ self.balance = ::std::option::Option::Some(v);
+ }
+
+ // required bytes receiver_address = 4;
+
+ pub fn receiver_address(&self) -> &[u8] {
+ match self.receiver_address.as_ref() {
+ Some(v) => v,
+ None => &[],
+ }
+ }
+
+ pub fn clear_receiver_address(&mut self) {
+ self.receiver_address = ::std::option::Option::None;
+ }
+
+ pub fn has_receiver_address(&self) -> bool {
+ self.receiver_address.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_receiver_address(&mut self, v: ::std::vec::Vec<u8>) {
+ self.receiver_address = ::std::option::Option::Some(v);
+ }
+
+ // Mutable pointer to the field.
+ // If field is not initialized, it is initialized with default value first.
+ pub fn mut_receiver_address(&mut self) -> &mut ::std::vec::Vec<u8> {
+ if self.receiver_address.is_none() {
+ self.receiver_address = ::std::option::Option::Some(::std::vec::Vec::new());
+ }
+ self.receiver_address.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_receiver_address(&mut self) -> ::std::vec::Vec<u8> {
+ self.receiver_address.take().unwrap_or_else(|| ::std::vec::Vec::new())
+ }
+
+ // optional bool lock = 5;
+
+ pub fn lock(&self) -> bool {
+ self.lock.unwrap_or(false)
+ }
+
+ pub fn clear_lock(&mut self) {
+ self.lock = ::std::option::Option::None;
+ }
+
+ pub fn has_lock(&self) -> bool {
+ self.lock.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_lock(&mut self, v: bool) {
+ self.lock = ::std::option::Option::Some(v);
+ }
+
+ // optional uint64 lock_period = 6;
+
+ pub fn lock_period(&self) -> u64 {
+ self.lock_period.unwrap_or(0)
+ }
+
+ pub fn clear_lock_period(&mut self) {
+ self.lock_period = ::std::option::Option::None;
+ }
+
+ pub fn has_lock_period(&self) -> bool {
+ self.lock_period.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_lock_period(&mut self, v: u64) {
+ self.lock_period = ::std::option::Option::Some(v);
+ }
+
+ fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(6);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "owner_address",
+ |m: &TronDelegateResourceContract| { &m.owner_address },
+ |m: &mut TronDelegateResourceContract| { &mut m.owner_address },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "resource",
+ |m: &TronDelegateResourceContract| { &m.resource },
+ |m: &mut TronDelegateResourceContract| { &mut m.resource },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "balance",
+ |m: &TronDelegateResourceContract| { &m.balance },
+ |m: &mut TronDelegateResourceContract| { &mut m.balance },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "receiver_address",
+ |m: &TronDelegateResourceContract| { &m.receiver_address },
+ |m: &mut TronDelegateResourceContract| { &mut m.receiver_address },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "lock",
+ |m: &TronDelegateResourceContract| { &m.lock },
+ |m: &mut TronDelegateResourceContract| { &mut m.lock },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "lock_period",
+ |m: &TronDelegateResourceContract| { &m.lock_period },
+ |m: &mut TronDelegateResourceContract| { &mut m.lock_period },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TronDelegateResourceContract>(
+ "TronDelegateResourceContract",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for TronDelegateResourceContract {
+ const NAME: &'static str = "TronDelegateResourceContract";
+
+ fn is_initialized(&self) -> bool {
+ if self.owner_address.is_none() {
+ return false;
+ }
+ if self.balance.is_none() {
+ return false;
+ }
+ if self.receiver_address.is_none() {
+ return false;
+ }
+ true
+ }
+
+ fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
+ while let Some(tag) = is.read_raw_tag_or_eof()? {
+ match tag {
+ 10 => {
+ self.owner_address = ::std::option::Option::Some(is.read_bytes()?);
+ },
+ 16 => {
+ self.resource = ::std::option::Option::Some(is.read_enum_or_unknown()?);
+ },
+ 24 => {
+ self.balance = ::std::option::Option::Some(is.read_uint64()?);
+ },
+ 34 => {
+ self.receiver_address = ::std::option::Option::Some(is.read_bytes()?);
+ },
+ 40 => {
+ self.lock = ::std::option::Option::Some(is.read_bool()?);
+ },
+ 48 => {
+ self.lock_period = ::std::option::Option::Some(is.read_uint64()?);
+ },
+ tag => {
+ ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
+ },
+ };
+ }
+ ::std::result::Result::Ok(())
+ }
+
+ // Compute sizes of nested messages
+ #[allow(unused_variables)]
+ fn compute_size(&self) -> u64 {
+ let mut my_size = 0;
+ if let Some(v) = self.owner_address.as_ref() {
+ my_size += ::protobuf::rt::bytes_size(1, &v);
+ }
+ if let Some(v) = self.resource {
+ my_size += ::protobuf::rt::int32_size(2, v.value());
+ }
+ if let Some(v) = self.balance {
+ my_size += ::protobuf::rt::uint64_size(3, v);
+ }
+ if let Some(v) = self.receiver_address.as_ref() {
+ my_size += ::protobuf::rt::bytes_size(4, &v);
+ }
+ if let Some(v) = self.lock {
+ my_size += 1 + 1;
+ }
+ if let Some(v) = self.lock_period {
+ my_size += ::protobuf::rt::uint64_size(6, v);
+ }
+ my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
+ self.special_fields.cached_size().set(my_size as u32);
+ my_size
+ }
+
+ fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
+ if let Some(v) = self.owner_address.as_ref() {
+ os.write_bytes(1, v)?;
+ }
+ if let Some(v) = self.resource {
+ os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
+ }
+ if let Some(v) = self.balance {
+ os.write_uint64(3, v)?;
+ }
+ if let Some(v) = self.receiver_address.as_ref() {
+ os.write_bytes(4, v)?;
+ }
+ if let Some(v) = self.lock {
+ os.write_bool(5, v)?;
+ }
+ if let Some(v) = self.lock_period {
+ os.write_uint64(6, v)?;
+ }
+ os.write_unknown_fields(self.special_fields.unknown_fields())?;
+ ::std::result::Result::Ok(())
+ }
+
+ fn special_fields(&self) -> &::protobuf::SpecialFields {
+ &self.special_fields
+ }
+
+ fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
+ &mut self.special_fields
+ }
+
+ fn new() -> TronDelegateResourceContract {
+ TronDelegateResourceContract::new()
+ }
+
+ fn clear(&mut self) {
+ self.owner_address = ::std::option::Option::None;
+ self.resource = ::std::option::Option::None;
+ self.balance = ::std::option::Option::None;
+ self.receiver_address = ::std::option::Option::None;
+ self.lock = ::std::option::Option::None;
+ self.lock_period = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static TronDelegateResourceContract {
+ static instance: TronDelegateResourceContract = TronDelegateResourceContract {
+ owner_address: ::std::option::Option::None,
+ resource: ::std::option::Option::None,
+ balance: ::std::option::Option::None,
+ receiver_address: ::std::option::Option::None,
+ lock: ::std::option::Option::None,
+ lock_period: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for TronDelegateResourceContract {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| file_descriptor().message_by_package_relative_name("TronDelegateResourceContract").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for TronDelegateResourceContract {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for TronDelegateResourceContract {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
+// @@protoc_insertion_point(message:hw.trezor.messages.tron.TronUnDelegateResourceContract)
+#[derive(PartialEq,Clone,Default,Debug)]
+pub struct TronUnDelegateResourceContract {
+ // message fields
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronUnDelegateResourceContract.owner_address)
+ pub owner_address: ::std::option::Option<::std::vec::Vec<u8>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronUnDelegateResourceContract.resource)
+ pub resource: ::std::option::Option<::protobuf::EnumOrUnknown<TronResourceCode>>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronUnDelegateResourceContract.balance)
+ pub balance: ::std::option::Option<u64>,
+ // @@protoc_insertion_point(field:hw.trezor.messages.tron.TronUnDelegateResourceContract.receiver_address)
+ pub receiver_address: ::std::option::Option<::std::vec::Vec<u8>>,
+ // special fields
+ // @@protoc_insertion_point(special_field:hw.trezor.messages.tron.TronUnDelegateResourceContract.special_fields)
+ pub special_fields: ::protobuf::SpecialFields,
+}
+
+impl<'a> ::std::default::Default for &'a TronUnDelegateResourceContract {
+ fn default() -> &'a TronUnDelegateResourceContract {
+ <TronUnDelegateResourceContract as ::protobuf::Message>::default_instance()
+ }
+}
+
+impl TronUnDelegateResourceContract {
+ pub fn new() -> TronUnDelegateResourceContract {
+ ::std::default::Default::default()
+ }
+
+ // required bytes owner_address = 1;
+
+ pub fn owner_address(&self) -> &[u8] {
+ match self.owner_address.as_ref() {
+ Some(v) => v,
+ None => &[],
+ }
+ }
+
+ pub fn clear_owner_address(&mut self) {
+ self.owner_address = ::std::option::Option::None;
+ }
+
+ pub fn has_owner_address(&self) -> bool {
+ self.owner_address.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_owner_address(&mut self, v: ::std::vec::Vec<u8>) {
+ self.owner_address = ::std::option::Option::Some(v);
+ }
+
+ // Mutable pointer to the field.
+ // If field is not initialized, it is initialized with default value first.
+ pub fn mut_owner_address(&mut self) -> &mut ::std::vec::Vec<u8> {
+ if self.owner_address.is_none() {
+ self.owner_address = ::std::option::Option::Some(::std::vec::Vec::new());
+ }
+ self.owner_address.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_owner_address(&mut self) -> ::std::vec::Vec<u8> {
+ self.owner_address.take().unwrap_or_else(|| ::std::vec::Vec::new())
+ }
+
+ // optional .hw.trezor.messages.tron.TronResourceCode resource = 2;
+
+ pub fn resource(&self) -> TronResourceCode {
+ match self.resource {
+ Some(e) => e.enum_value_or(TronResourceCode::BANDWIDTH),
+ None => TronResourceCode::BANDWIDTH,
+ }
+ }
+
+ pub fn clear_resource(&mut self) {
+ self.resource = ::std::option::Option::None;
+ }
+
+ pub fn has_resource(&self) -> bool {
+ self.resource.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_resource(&mut self, v: TronResourceCode) {
+ self.resource = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v));
+ }
+
+ // required uint64 balance = 3;
+
+ pub fn balance(&self) -> u64 {
+ self.balance.unwrap_or(0)
+ }
+
+ pub fn clear_balance(&mut self) {
+ self.balance = ::std::option::Option::None;
+ }
+
+ pub fn has_balance(&self) -> bool {
+ self.balance.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_balance(&mut self, v: u64) {
+ self.balance = ::std::option::Option::Some(v);
+ }
+
+ // required bytes receiver_address = 4;
+
+ pub fn receiver_address(&self) -> &[u8] {
+ match self.receiver_address.as_ref() {
+ Some(v) => v,
+ None => &[],
+ }
+ }
+
+ pub fn clear_receiver_address(&mut self) {
+ self.receiver_address = ::std::option::Option::None;
+ }
+
+ pub fn has_receiver_address(&self) -> bool {
+ self.receiver_address.is_some()
+ }
+
+ // Param is passed by value, moved
+ pub fn set_receiver_address(&mut self, v: ::std::vec::Vec<u8>) {
+ self.receiver_address = ::std::option::Option::Some(v);
+ }
+
+ // Mutable pointer to the field.
+ // If field is not initialized, it is initialized with default value first.
+ pub fn mut_receiver_address(&mut self) -> &mut ::std::vec::Vec<u8> {
+ if self.receiver_address.is_none() {
+ self.receiver_address = ::std::option::Option::Some(::std::vec::Vec::new());
+ }
+ self.receiver_address.as_mut().unwrap()
+ }
+
+ // Take field
+ pub fn take_receiver_address(&mut self) -> ::std::vec::Vec<u8> {
+ self.receiver_address.take().unwrap_or_else(|| ::std::vec::Vec::new())
+ }
+
+ fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
+ let mut fields = ::std::vec::Vec::with_capacity(4);
+ let mut oneofs = ::std::vec::Vec::with_capacity(0);
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "owner_address",
+ |m: &TronUnDelegateResourceContract| { &m.owner_address },
+ |m: &mut TronUnDelegateResourceContract| { &mut m.owner_address },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "resource",
+ |m: &TronUnDelegateResourceContract| { &m.resource },
+ |m: &mut TronUnDelegateResourceContract| { &mut m.resource },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "balance",
+ |m: &TronUnDelegateResourceContract| { &m.balance },
+ |m: &mut TronUnDelegateResourceContract| { &mut m.balance },
+ ));
+ fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
+ "receiver_address",
+ |m: &TronUnDelegateResourceContract| { &m.receiver_address },
+ |m: &mut TronUnDelegateResourceContract| { &mut m.receiver_address },
+ ));
+ ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<TronUnDelegateResourceContract>(
+ "TronUnDelegateResourceContract",
+ fields,
+ oneofs,
+ )
+ }
+}
+
+impl ::protobuf::Message for TronUnDelegateResourceContract {
+ const NAME: &'static str = "TronUnDelegateResourceContract";
+
+ fn is_initialized(&self) -> bool {
+ if self.owner_address.is_none() {
+ return false;
+ }
+ if self.balance.is_none() {
+ return false;
+ }
+ if self.receiver_address.is_none() {
+ return false;
+ }
+ true
+ }
+
+ fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
+ while let Some(tag) = is.read_raw_tag_or_eof()? {
+ match tag {
+ 10 => {
+ self.owner_address = ::std::option::Option::Some(is.read_bytes()?);
+ },
+ 16 => {
+ self.resource = ::std::option::Option::Some(is.read_enum_or_unknown()?);
+ },
+ 24 => {
+ self.balance = ::std::option::Option::Some(is.read_uint64()?);
+ },
+ 34 => {
+ self.receiver_address = ::std::option::Option::Some(is.read_bytes()?);
+ },
+ tag => {
+ ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
+ },
+ };
+ }
+ ::std::result::Result::Ok(())
+ }
+
+ // Compute sizes of nested messages
+ #[allow(unused_variables)]
+ fn compute_size(&self) -> u64 {
+ let mut my_size = 0;
+ if let Some(v) = self.owner_address.as_ref() {
+ my_size += ::protobuf::rt::bytes_size(1, &v);
+ }
+ if let Some(v) = self.resource {
+ my_size += ::protobuf::rt::int32_size(2, v.value());
+ }
+ if let Some(v) = self.balance {
+ my_size += ::protobuf::rt::uint64_size(3, v);
+ }
+ if let Some(v) = self.receiver_address.as_ref() {
+ my_size += ::protobuf::rt::bytes_size(4, &v);
+ }
+ my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
+ self.special_fields.cached_size().set(my_size as u32);
+ my_size
+ }
+
+ fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
+ if let Some(v) = self.owner_address.as_ref() {
+ os.write_bytes(1, v)?;
+ }
+ if let Some(v) = self.resource {
+ os.write_enum(2, ::protobuf::EnumOrUnknown::value(&v))?;
+ }
+ if let Some(v) = self.balance {
+ os.write_uint64(3, v)?;
+ }
+ if let Some(v) = self.receiver_address.as_ref() {
+ os.write_bytes(4, v)?;
+ }
+ os.write_unknown_fields(self.special_fields.unknown_fields())?;
+ ::std::result::Result::Ok(())
+ }
+
+ fn special_fields(&self) -> &::protobuf::SpecialFields {
+ &self.special_fields
+ }
+
+ fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
+ &mut self.special_fields
+ }
+
+ fn new() -> TronUnDelegateResourceContract {
+ TronUnDelegateResourceContract::new()
+ }
+
+ fn clear(&mut self) {
+ self.owner_address = ::std::option::Option::None;
+ self.resource = ::std::option::Option::None;
+ self.balance = ::std::option::Option::None;
+ self.receiver_address = ::std::option::Option::None;
+ self.special_fields.clear();
+ }
+
+ fn default_instance() -> &'static TronUnDelegateResourceContract {
+ static instance: TronUnDelegateResourceContract = TronUnDelegateResourceContract {
+ owner_address: ::std::option::Option::None,
+ resource: ::std::option::Option::None,
+ balance: ::std::option::Option::None,
+ receiver_address: ::std::option::Option::None,
+ special_fields: ::protobuf::SpecialFields::new(),
+ };
+ &instance
+ }
+}
+
+impl ::protobuf::MessageFull for TronUnDelegateResourceContract {
+ fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
+ static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
+ descriptor.get(|| file_descriptor().message_by_package_relative_name("TronUnDelegateResourceContract").unwrap()).clone()
+ }
+}
+
+impl ::std::fmt::Display for TronUnDelegateResourceContract {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+ ::protobuf::text_format::fmt(self, f)
+ }
+}
+
+impl ::protobuf::reflect::ProtobufValue for TronUnDelegateResourceContract {
+ type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
+}
+
// @@protoc_insertion_point(message:hw.trezor.messages.tron.TronSignature)
#[derive(PartialEq,Clone,Default,Debug)]
pub struct TronSignature {
@@ -3738,6 +4408,10 @@ pub mod tron_raw_transaction {
UnfreezeBalanceV2Contract = 55,
// @@protoc_insertion_point(enum_value:hw.trezor.messages.tron.TronRawTransaction.TronRawContract.TronRawContractType.WithdrawExpireUnfreezeContract)
WithdrawExpireUnfreezeContract = 56,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.tron.TronRawTransaction.TronRawContract.TronRawContractType.DelegateResourceContract)
+ DelegateResourceContract = 57,
+ // @@protoc_insertion_point(enum_value:hw.trezor.messages.tron.TronRawTransaction.TronRawContract.TronRawContractType.UnDelegateResourceContract)
+ UnDelegateResourceContract = 58,
}
impl ::protobuf::Enum for TronRawContractType {
@@ -3756,6 +4430,8 @@ pub mod tron_raw_transaction {
54 => ::std::option::Option::Some(TronRawContractType::FreezeBalanceV2Contract),
55 => ::std::option::Option::Some(TronRawContractType::UnfreezeBalanceV2Contract),
56 => ::std::option::Option::Some(TronRawContractType::WithdrawExpireUnfreezeContract),
+ 57 => ::std::option::Option::Some(TronRawContractType::DelegateResourceContract),
+ 58 => ::std::option::Option::Some(TronRawContractType::UnDelegateResourceContract),
_ => ::std::option::Option::None
}
}
@@ -3769,6 +4445,8 @@ pub mod tron_raw_transaction {
"FreezeBalanceV2Contract" => ::std::option::Option::Some(TronRawContractType::FreezeBalanceV2Contract),
"UnfreezeBalanceV2Contract" => ::std::option::Option::Some(TronRawContractType::UnfreezeBalanceV2Contract),
"WithdrawExpireUnfreezeContract" => ::std::option::Option::Some(TronRawContractType::WithdrawExpireUnfreezeContract),
+ "DelegateResourceContract" => ::std::option::Option::Some(TronRawContractType::DelegateResourceContract),
+ "UnDelegateResourceContract" => ::std::option::Option::Some(TronRawContractType::UnDelegateResourceContract),
_ => ::std::option::Option::None
}
}
@@ -3781,6 +4459,8 @@ pub mod tron_raw_transaction {
TronRawContractType::FreezeBalanceV2Contract,
TronRawContractType::UnfreezeBalanceV2Contract,
TronRawContractType::WithdrawExpireUnfreezeContract,
+ TronRawContractType::DelegateResourceContract,
+ TronRawContractType::UnDelegateResourceContract,
];
}
@@ -3799,6 +4479,8 @@ pub mod tron_raw_transaction {
TronRawContractType::FreezeBalanceV2Contract => 4,
TronRawContractType::UnfreezeBalanceV2Contract => 5,
TronRawContractType::WithdrawExpireUnfreezeContract => 6,
+ TronRawContractType::DelegateResourceContract => 7,
+ TronRawContractType::UnDelegateResourceContract => 8,
};
Self::enum_descriptor().value_by_index(index)
}
@@ -3915,27 +4597,39 @@ static file_descriptor_proto_data: &'static [u8] = b"\
hw.trezor.messages.tron.TronResourceCode:\tBANDWIDTHR\x08resource\";\n\
\x14TronWithdrawUnfreeze\x12#\n\rowner_address\x18\x01\x20\x02(\x0cR\x0c\
ownerAddress\":\n\x13TronWithdrawBalance\x12#\n\rowner_address\x18\x01\
- \x20\x02(\x0cR\x0cownerAddress\"-\n\rTronSignature\x12\x1c\n\tsignature\
- \x18\x01\x20\x02(\x0cR\tsignature\"\xb2\x06\n\x12TronRawTransaction\x12&\
- \n\x0fref_block_bytes\x18\x01\x20\x02(\x0cR\rrefBlockBytes\x12$\n\x0eref\
- _block_hash\x18\x04\x20\x02(\x0cR\x0crefBlockHash\x12\x1e\n\nexpiration\
+ \x20\x02(\x0cR\x0cownerAddress\"\x8f\x02\n\x1cTronDelegateResourceContra\
+ ct\x12#\n\rowner_address\x18\x01\x20\x02(\x0cR\x0cownerAddress\x12P\n\
+ \x08resource\x18\x02\x20\x01(\x0e2).hw.trezor.messages.tron.TronResource\
+ Code:\tBANDWIDTHR\x08resource\x12\x18\n\x07balance\x18\x03\x20\x02(\x04R\
+ \x07balance\x12)\n\x10receiver_address\x18\x04\x20\x02(\x0cR\x0freceiver\
+ Address\x12\x12\n\x04lock\x18\x05\x20\x01(\x08R\x04lock\x12\x1f\n\x0bloc\
+ k_period\x18\x06\x20\x01(\x04R\nlockPeriod\"\xdc\x01\n\x1eTronUnDelegate\
+ ResourceContract\x12#\n\rowner_address\x18\x01\x20\x02(\x0cR\x0cownerAdd\
+ ress\x12P\n\x08resource\x18\x02\x20\x01(\x0e2).hw.trezor.messages.tron.T\
+ ronResourceCode:\tBANDWIDTHR\x08resource\x12\x18\n\x07balance\x18\x03\
+ \x20\x02(\x04R\x07balance\x12)\n\x10receiver_address\x18\x04\x20\x02(\
+ \x0cR\x0freceiverAddress\"-\n\rTronSignature\x12\x1c\n\tsignature\x18\
+ \x01\x20\x02(\x0cR\tsignature\"\xf0\x06\n\x12TronRawTransaction\x12&\n\
+ \x0fref_block_bytes\x18\x01\x20\x02(\x0cR\rrefBlockBytes\x12$\n\x0eref_b\
+ lock_hash\x18\x04\x20\x02(\x0cR\x0crefBlockHash\x12\x1e\n\nexpiration\
\x18\x08\x20\x02(\x04R\nexpiration\x12\x12\n\x04data\x18\n\x20\x01(\x0cR\
\x04data\x12W\n\x08contract\x18\x0b\x20\x03(\x0b2;.hw.trezor.messages.tr\
on.TronRawTransaction.TronRawContractR\x08contract\x12\x1c\n\ttimestamp\
\x18\x0e\x20\x02(\x04R\ttimestamp\x12\x1b\n\tfee_limit\x18\x12\x20\x01(\
- \x04R\x08feeLimit\x1a\x85\x04\n\x0fTronRawContract\x12c\n\x04type\x18\
+ \x04R\x08feeLimit\x1a\xc3\x04\n\x0fTronRawContract\x12c\n\x04type\x18\
\x01\x20\x02(\x0e2O.hw.trezor.messages.tron.TronRawTransaction.TronRawCo\
ntract.TronRawContractTypeR\x04type\x12j\n\tparameter\x18\x02\x20\x02(\
\x0b2L.hw.trezor.messages.tron.TronRawTransaction.TronRawContract.TronRa\
wParameterR\tparameter\x1aC\n\x10TronRawParameter\x12\x19\n\x08type_url\
\x18\x01\x20\x02(\tR\x07typeUrl\x12\x14\n\x05value\x18\x02\x20\x02(\x0cR\
- \x05value\"\xdb\x01\n\x13TronRawContractType\x12\x14\n\x10TransferContra\
+ \x05value\"\x99\x02\n\x13TronRawContractType\x12\x14\n\x10TransferContra\
ct\x10\x01\x12\x17\n\x13VoteWitnessContract\x10\x04\x12\x1b\n\x17Withdra\
wBalanceContract\x10\r\x12\x18\n\x14TriggerSmartContract\x10\x1f\x12\x1b\
\n\x17FreezeBalanceV2Contract\x106\x12\x1d\n\x19UnfreezeBalanceV2Contrac\
- t\x107\x12\"\n\x1eWithdrawExpireUnfreezeContract\x108*-\n\x10TronResourc\
- eCode\x12\r\n\tBANDWIDTH\x10\0\x12\n\n\x06ENERGY\x10\x01B8\n#com.satoshi\
- labs.trezor.lib.protobufB\x11TrezorMessageTron\
+ t\x107\x12\"\n\x1eWithdrawExpireUnfreezeContract\x108\x12\x1c\n\x18Deleg\
+ ateResourceContract\x109\x12\x1e\n\x1aUnDelegateResourceContract\x10:*-\
+ \n\x10TronResourceCode\x12\r\n\tBANDWIDTH\x10\0\x12\n\n\x06ENERGY\x10\
+ \x01B8\n#com.satoshilabs.trezor.lib.protobufB\x11TrezorMessageTron\
";
/// `FileDescriptorProto` object which was a source for this generated file
@@ -3953,7 +4647,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
file_descriptor.get(|| {
let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
let mut deps = ::std::vec::Vec::with_capacity(0);
- let mut messages = ::std::vec::Vec::with_capacity(16);
+ let mut messages = ::std::vec::Vec::with_capacity(18);
messages.push(TronGetAddress::generated_message_descriptor_data());
messages.push(TronAddress::generated_message_descriptor_data());
messages.push(TronSignTx::generated_message_descriptor_data());
@@ -3965,6 +4659,8 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
messages.push(TronUnfreezeBalanceV2Contract::generated_message_descriptor_data());
messages.push(TronWithdrawUnfreeze::generated_message_descriptor_data());
messages.push(TronWithdrawBalance::generated_message_descriptor_data());
+ messages.push(TronDelegateResourceContract::generated_message_descriptor_data());
+ messages.push(TronUnDelegateResourceContract::generated_message_descriptor_data());
messages.push(TronSignature::generated_message_descriptor_data());
messages.push(TronRawTransaction::generated_message_descriptor_data());
messages.push(tron_vote_witness_contract::TronVote::generated_message_descriptor_data());Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.