Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [9.2.3]
- add method for trigger contract
- add method for check acc resources

## [9.2.2]
- update actions upload-artifact
- add method for getting transactions receipt.

## [9.2.1]
- fix max_retries and retry_delay params adding for tron monitoring

Expand Down
38 changes: 38 additions & 0 deletions aiotx/clients/_tron_base_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,44 @@ async def get_balance(
address = self.base58_to_hex_address(address)
return await super().get_balance(address, block_parameter)

async def get_account_resource(self, address) -> dict:
client = Tron()
path = "/wallet/getaccountresource"
if client.is_base58check_address(address):
address = self.base58_to_hex_address(address)
data = {"address": address, "visible": False}
return await self._make_api_call(payload=data, method="POST", path=path)

async def trigger_constant_contract(
self, from_address, contract_address, to_address, amount
) -> dict:
from eth_abi import encode

client = Tron()
path = "/wallet/triggerconstantcontract"
hex_to_address = self.base58_to_hex_address(to_address)
if hex_to_address.startswith("41"):
hex_to_address = hex_to_address[2:] # Remove '41' prefix
hex_to_address = "0x" + hex_to_address

transfer_data = encode(["address", "uint256"], [hex_to_address, amount])
parameter = transfer_data.hex()

if client.is_base58check_address(from_address):
from_address = self.base58_to_hex_address(from_address)

if client.is_base58check_address(contract_address):
contract_address = self.base58_to_hex_address(contract_address)

data = {
"owner_address": from_address,
"contract_address": contract_address,
"function_selector": "transfer(address,uint256)",
"parameter": parameter,
"visible": False,
}
return await self._make_api_call(payload=data, method="POST", path=path)

async def get_contract_balance(
self, address, contract_address, block_parameter: BlockParam = BlockParam.LATEST
) -> int:
Expand Down
290 changes: 290 additions & 0 deletions tests/fixtures/cassettes/tron/get_account_resource.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
interactions:
- request:
body: '{"address": "41fd76d0c83ce08e518fc7fb4b38d963436f701fac", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetUsed": 264,"freeNetLimit": 600,"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight": 12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '167'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:16:26 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "4199477b140c6266d7bd7c7f21145a44d80b21facf", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetUsed": 330,"freeNetLimit": 600,"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight": 12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '167'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:16:27 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "4175f12b06daae11e5be71c1025732a02bea437d97", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetLimit": 600,"assetNetUsed": [{"key": "1001058","value": 0}],"assetNetLimit":
[{"key": "1001058","value": 0}],"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight": 12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '245'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:16:28 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "411aef008c25dfec6e2d85cbe286d690bdd1e31dfa", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetLimit": 600,"assetNetUsed": [{"key": "1000520","value": 0},{"key":
"1001304","value": 0}],"assetNetLimit": [{"key": "1000520","value": 0},{"key":
"1001304","value": 1000000}],"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"EnergyLimit": 176989,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight":
12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '333'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:16:29 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "41fd76d0c83ce08e518fc7fb4b38d963436f701fac", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetUsed": 261,"freeNetLimit": 600,"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight": 12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '167'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:30:34 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "4199477b140c6266d7bd7c7f21145a44d80b21facf", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetUsed": 327,"freeNetLimit": 600,"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight": 12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '167'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:30:35 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "4175f12b06daae11e5be71c1025732a02bea437d97", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetLimit": 600,"assetNetUsed": [{"key": "1001058","value": 0}],"assetNetLimit":
[{"key": "1001058","value": 0}],"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight": 12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '245'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:30:36 GMT
Server:
- openresty
status:
code: 200
message: OK
- request:
body: '{"address": "411aef008c25dfec6e2d85cbe286d690bdd1e31dfa", "visible": false}'
headers:
Content-Type:
- application/json
method: POST
uri: https://api.shasta.trongrid.io/wallet/getaccountresource
response:
body:
string: '{"freeNetLimit": 600,"assetNetUsed": [{"key": "1000520","value": 0},{"key":
"1001304","value": 0}],"assetNetLimit": [{"key": "1000520","value": 0},{"key":
"1001304","value": 1000000}],"TotalNetLimit": 43200000000,"TotalNetWeight":
356265954283,"EnergyLimit": 176989,"TotalEnergyLimit": 180000000000,"TotalEnergyWeight":
12774681836}

'
headers:
Access-Control-Allow-Credentials:
- 'true'
Access-Control-Allow-Headers:
- DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type
Access-Control-Allow-Methods:
- GET, POST, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Length:
- '333'
Content-Type:
- application/json;charset=utf-8
Date:
- Tue, 30 Sep 2025 11:30:37 GMT
Server:
- openresty
status:
code: 200
message: OK
version: 1
Loading
Loading