# Table of Contents
- [Introduction | Glider](#introduction-glider)
- [Overview | Glider API | Glider](#overview-glider-api-glider)
- [Trust Score | Glider API | Glider](#trust-score-glider-api-glider)
- [Risks Breakdown | Glider API | Glider](#risks-breakdown-glider-api-glider)
- [FAQ | Glider API | Glider](#faq-glider-api-glider)
- [Supported Chains | Glider API | Glider](#supported-chains-glider-api-glider)
- [API Documentation | Glider API | Glider](#api-documentation-glider-api-glider)
- [API Documentation | Glider API | Glider](#api-documentation-glider-api-glider)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Glider introduction | Glider IDE | Glider](#glider-introduction-glider-ide-glider)
- [Glider: The Basics | Glider IDE | Glider](#glider-the-basics-glider-ide-glider)
- [Intro to Python | Glider IDE | Glider](#intro-to-python-glider-ide-glider)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [API Documentation | Glider API | Glider](#api-documentation-glider-api-glider)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
- [Unknown](#unknown)
---
# Introduction | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/introduction.md)
.
Welcome to Glider documentation.
Glider is the world's first scalable technology to tag and find logic in deployed smart contracts.
Glider Solutions[](https://docs.r.xyz/#glider-solutions)
---------------------------------------------------------

[Glider IDE](https://docs.r.xyz/glider-ide/)
is Hexen's contribution to the Web3 security researcher community.
It is purpose-built for scalable variant and data-driven analysis of smart contracts, enabling researchers to uncover logical patterns and vulnerabilities across entire blockchain ecosystems.
[Glider IDE docs](https://glide.gitbook.io/main/glider)
[How to write queries](https://glide.gitbook.io/main/glider/glider-the-basics)
* * *

[Glider API](https://docs.r.xyz/glider-api/)
empowers you to analyze smart contracts on supported blockchains using our advanced labeling system. This enables you to identify contract behavior, functionality, and potential risk factors in an automatice, streamlined and effective manner.
[Glider API docs](https://glide.gitbook.io/main/glider-api)
Last updated 1 year ago
---
# Overview | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/overview.md)
.
The Glider API enables deep analysis of smart contracts across supported blockchains. It helps to understand how a contract behaves and whether it poses any detectable risk, all without manual review.
Built on top of **Glider**, Hexens’ scalable analysis engine, the API delivers high-precision behavioral labeling and risk detection in seconds.
[Learn about Glider](https://glide.gitbook.io/main)
* * *
### Use cases of the Glider API[](https://docs.r.xyz/glider-api#use-cases-of-glider-data-api)
* **Identify Risk Factors:** Instantly detect if a contract includes high-risk logic.
* **Understand Contract Behavior:** Get clear labels that describe the contract’s logic, whether it’s pausable, includes blocklists/whitelists, transfer fees, or is a proxy, etc.
* **Make Informed Decisions:** Use risk insights to vet third-party contracts, protect your users, or support internal security reviews. Do it in a fast and automated fashion.
* **Integration:** You can integrate this into your dashboard, backend, alert system, or due diligence flow, or any automated process.
* * *
### How It Works[](https://docs.r.xyz/glider-api#how-it-works)
Request API by passing a contract address and chain ID as parameters. You’ll get back a reply showing:
* The risks present
* Overall trust score
* * *
### Authentication[](https://docs.r.xyz/glider-api#authentication)
To start using the API, you’ll need an access token.
➡️ [Contact our team to get your token:](https://hexens.io/solutions/glider?book-a-demo=true&utm_source=gitbook&utm_medium=docs&utm_campaign=glider-api-docs)
[NextRisks Breakdown](https://docs.r.xyz/glider-api/risks-breakdown)
Last updated 3 months ago
* [Use cases of the Glider API](https://docs.r.xyz/glider-api#use-cases-of-glider-data-api)
* [How It Works](https://docs.r.xyz/glider-api#how-it-works)
* [Authentication](https://docs.r.xyz/glider-api#authentication)
---
# Trust Score | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/trust-score.md)
.
The Glider Trust Score helps quantify the overall trust level of a smart contract by assigning a score from 0 to 100. The score is based on the number and severity of risks, as well as various contract attributes such as financial value, popularity, and more. The higher the risk level, the greater the negative impact on the score. Below is a table of risk levels and their descriptions.
Severity Level
Description
🔴 High
Critical risks that allow full control, destruction, or abuse (e.g. centralized mint, selfdestruct)
🟠 Medium
Moderate risks that affect usability or introduce behavioral constraints
🟢 Low
Minor issues such as address-based privileges
🔵 Info
Design traits or capabilities worth noting, but not inherently risky
[PreviousRisks Breakdown](https://docs.r.xyz/glider-api/risks-breakdown)
[NextSupported Chains](https://docs.r.xyz/glider-api/supported-chains)
Last updated 7 months ago
---
# Risks Breakdown | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/risks-breakdown.md)
.
The Glider API identifies and labels various risk types in smart contracts. Below is a list of all currently detectable risks.
#
Risk Type
Description
JSON key
Severity
1
**Centralized Mint**
An external authority can create (mint) new tokens.
This can dilute holders and manipulate token supply.
risk\_centralized\_mint
High
2
**Hidden Fees**
The contract includes a fee that’s not clearly declared in transfers.
Receivers may get fewer tokens than expected.
risk\_hidden\_fees
High
3
**Unauthorized Token Approvals**
An external authority can approve token transfers on behalf of users.
This may allow unauthorized spending.
risk\_unauthorized\_token\_approvals
High
4
**Proxy (Upgradeabl)**
Implementation of the contract potentially upgradable: The contract uses the proxy pattern to separate the main address from implementation, with the potential ability to change the main underlying logic.
risk\_proxy
High
5
**Selfdestruct**
The contract can be destroyed.
When triggered, it erases all stored values, including balances.
risk\_selfdestruct
High
6
**Centralized Burn**
An external authority can burn tokens from user balances.
This reduces supply and can affect holder value.
risk\_centralized\_burn
High
7
**Blacklist**
Specific users can be blocked from transferring tokens.
This introduces censorship and central control.
risk\_blacklist
High
8
**Transfer event amount mismatch**
The amount emitted in the transfer event does not match the actual amount of the balance change. This can be used to misguide the blockchain indexers, user-facing applications and end users by showing them inconsistent transfer history and balances.
risk\_token\_transfer\_event\_amount\_mismatch
High
9
**Cooldown checks**
Transfers are subject to cooldown periods or timed delays.
This may prevent immediate token movement.
risk\_transfer\_time\_constraints
Medium
10
**Basic Transfer Fee**
The contract includes an optional, declared fee on transfers.
While visible, it still alters expected amounts.
risk\_basic\_transfer\_fee
Medium
11
**External Call in Transfer**
Transfers depend on other contracts.
External code can influence whether or how transfers succeed.
risk\_external\_call\_in\_transfer
Medium
12
**Balance Manipulation**
Balances can be altered using functions outside typical mint/burn/transfer logic.
This adds unpredictability to user balances.
risk\_balance\_manipulation\_in\_non\_standard\_functions
Medium
13
**Pausable**
An external authority can pause the contract.
All transfers or functions may be temporarily disabled.
risk\_pausable
Medium
14
**Blockable Transfer**
Transfers can be blocked under certain conditions (e.g. large amounts, cooldowns, specific addresses).
This can freeze tokens for certain users.
risk\_blockable\_transfer
Medium
15
**No Transfer event emitted**
The token's transfer functions lack transfer event emission, which can cause problems with blockchain indexers and user-facing applications not being able to show the transfer history and balances correctly.
risk\_not\_emmiting\_transfer\_event\_in\_transfer\_function
Medium
16
**Approval event not emitted**
The token's approve function lacks approval event emission, which can cause problems with blockchain indexers and user-facing applications to show the approval history and state correctly.
risk\_not\_emmiting\_approval\_event\_in\_approve\_function
Medium
17
**Whitelist**
Transfers are allowed only between approved addresses.
This favors certain users and limits token flow.
risk\_whitelist
Low
18
**Asset Withdrawal**
The contract can move tokens from its balance.
Relevant if the contract is expected to hold funds.
risk\_excessive\_token\_withdrawal
Informational
19
**ETH Balance Sweep**
The contract can move ETH from its balance.
This matters if ETH is sent to the contract.
risk\_eth\_balance\_sweep
Informational
20
**Assembly usage in transfer**
The token's transfer functions use assembly code, there is a probability that this can be used to obfuscate the transferring logic.
risk\_assembly\_usage\_in\_transfer\_function
Informational
21
**Not fully ERC20 compliant**
The token's contract does not fully implement all of the ERC20 standard's requirements.
risk\_not\_erc20\_full\_compliance
Informational
[PreviousOverview](https://docs.r.xyz/glider-api)
[NextTrust Score](https://docs.r.xyz/glider-api/trust-score)
Last updated 9 months ago
---
# FAQ | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/faq.md)
.
How does the Glider API work?[](https://docs.r.xyz/glider-api/faq#how-does-the-glider-api-work)
You send a request with a smart contract address and chain ID. The API returns:
* A set of detected risks
* Overall trust score (0 to 100)
* Proxy and verification metadata
Which blockchains are supported?[](https://docs.r.xyz/glider-api/faq#which-blockchains-are-supported)
The Glider API supports smart contract analysis on multiple chains. [See the full list here.](https://docs.r.xyz/glider-api/supported-chains)
What is the Glider Trust Score?[](https://docs.r.xyz/glider-api/faq#what-is-the-glider-trust-score)
It’s a numerical value from 0 to 100 representing the trust level of a contract:
* **100** = No detectable risks
* **Lower score** = More or higher-severity risks
Any contract that hasn’t been verified has a 0 base score.
Each risk subtracts a fixed number of points based on severity (info, low, medium, high).
[See the full details.](https://docs.r.xyz/glider-api/trust-score)
What kinds of risks does the API detect?[](https://docs.r.xyz/glider-api/faq#what-kinds-of-risks-does-the-api-detect)
The API detects 15+ risks. [See the full list here](https://docs.r.xyz/glider-api/risks-breakdown)
Is proxy detection supported?[](https://docs.r.xyz/glider-api/faq#is-proxy-detection-supported)
Yes. If a contract is a proxy, the API scans the underlying implementation and returns both `proxy_address` and `implementation_address` .
What does `is_verified` mean?[](https://docs.r.xyz/glider-api/faq#what-does-is_verified-mean)
This flag tells you whether the smart contract is **verified** (i.e., the code is publicly visible on-chain). If `false`, the contract has no accessible source code and is considered untrustworthy.
How do I get access?[](https://docs.r.xyz/glider-api/faq#how-do-i-get-access)
[**Contact the Hexens team**](https://hexens.io/solutions/glider?book-a-demo=true&utm_source=gitbook&utm_medium=docs&utm_campaign=glider-api-docs)
to request your token.
[PreviousSupported Chains](https://docs.r.xyz/glider-api/supported-chains)
[NextAPI Documentation](https://docs.r.xyz/glider-api/enterprise/api-documentation)
Last updated 1 year ago
---
# Supported Chains | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/supported-chains.md)
.
The Glider API currently supports smart contract analysis across the following blockchain networks.
Chain Name
Chain ID
Ethereum
1
BNB Chain
56
Optimism
10
Polygon
137
Arbitrum One
42161
Moonbeam
1284
Moonriver
1285
Cronos
25
BitTorrent Chain (BTTC)
199
Celo
42220
Gnosis
100
Arbitrum Nova
42170
Base
8453
Polygon zkEVM
1101
Linea
59144
Frax (Fraxtal)
252
Avalanche C-Chain
43114
Blast
81457
Mantle
5000
Taiko
167000
XDC Network
50
ApeChain
33139
World Chain
480
Unichain
130
Sonic
146
Sophon
50104
Abstract
2741
Berachain
80094
Memecore
4352
[PreviousTrust Score](https://docs.r.xyz/glider-api/trust-score)
[NextFAQ](https://docs.r.xyz/glider-api/faq)
Last updated 10 months ago
---
# API Documentation | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/enterprise/api-documentation.md)
.
API Domain: `https://data1.hexens.io`
### Supported Blockchains[](https://docs.r.xyz/glider-api/enterprise/api-documentation#supported-blockchains)
**Endpoint:** GET /api/v1/chain/list
**Description:** Retrieve a list of all supported blockchains for contract analysis. Use the `chainid` value from the response when analyzing contracts.
**Sample Response:**
Copy
{
"chains": [\
{"tag": "ethereum", "chainid": "1"},\
{"tag": "bsc", "chainid": "56"},\
{"tag": "optimism", "chainid": "10"},\
// ....\
]
}
* * *
### Analyze Contract Risk[](https://docs.r.xyz/glider-api/enterprise/api-documentation#analyze-contract-risk)
**Endpoint:** GET /api/v1/contract/analyze-risk
**Description:** Run a comprehensive risk analysis on a smart contract by specifying its address and chain ID.
#### **Request Parameters:**[](https://docs.r.xyz/glider-api/enterprise/api-documentation#request-parameters)
* `address` (string): The smart contract address to analyze.
* `chain_id` (string): The blockchain chain ID (use /api/v1/chain/list).
* `token` (string): Your authentication token in the format {public\_token}-{private\_token}.
#### **Result Parameters:**[](https://docs.r.xyz/glider-api/enterprise/api-documentation#result-parameters)
* `address` – Contract address to be analyzed.
* `chain_id` – chain ID.
* `info` – General information about the address.
* `is_proxy` – `true`/`false`. Indicates whether the provided address is a proxy contract. If it is a proxy, we scan the implementation contract instead of the proxy itself. In the results, we show both the original address provided by the user (`proxy_address`) and the actual implementation address that was scanned (`implementation_address`).
* `implementation_address` – See `is_proxy`.
* `proxy_address` – See `is_proxy`.
* `is_verified` – `true`/`false`. Indicates whether the contract provided by the user is verified. If false, it means the deployer intentionally hid the code, leaving no way for users to check its functionality.
* `is_erc20` - `true`/`false`. In case of "`false`", the API output will not include risk breakdown
* `results` - Array of risks. Each element of the array contains:
* `key`: Risk name
* `value`: `true` / `false` — whether the risk exists
* `title`: Risk title
* `sub_title`: Risk subtitle
* `description`: Risk description
* `severity`: Risk severity
* `market-endorsed`: Property complements the technical and code-analysis-based trust score by indicating whether a token has been broadly adopted, integrated, and trusted by traders, platforms, and end-users over time
#### **Example Request:**[](https://docs.r.xyz/glider-api/enterprise/api-documentation#example-request)
#### **Sample Response: erc\_20 true**[](https://docs.r.xyz/glider-api/enterprise/api-documentation#sample-response-erc_20-true)
#### **Sample Response: erc\_20 false**[](https://docs.r.xyz/glider-api/enterprise/api-documentation#sample-response-erc_20-false)
### Errors[](https://docs.r.xyz/glider-api/enterprise/api-documentation#errors)
400
`MISSING_PARAMETERS`
Required parameters are missing. Please provide `address`, `chain_id`, and `token`.
400
`INVALID_TOKEN_FORMAT`
Token must be in format `public-private` separated by a hyphen.
400
`INVALID_ADDRESS_FORMAT`
The address could not be parsed due to an invalid or unrecognized format.
400
`INVALID_CHAIN_ID`
Invalid chain ID, must be one of the supported chain IDs.
400 (or 200)
`PROCESSING_TIMEOUT`
The request took too long to process. Please try again later. _(May still return_ `200`_)_
400 (or 200)
`INTERNAL_ERROR`
Something went wrong. Please contact support if the issue persists. _(May still return_ `200`_)_
429
–
Rate limit exceeded.
⚠️ **Note**: Both timeout and internal errors may still arrive in the response body with `status: 200` due to the streaming mechanism.
[PreviousFAQ](https://docs.r.xyz/glider-api/faq)
[NextAPI Documentation](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation)
Last updated 3 months ago
* [Supported Blockchains](https://docs.r.xyz/glider-api/enterprise/api-documentation#supported-blockchains)
* [Analyze Contract Risk](https://docs.r.xyz/glider-api/enterprise/api-documentation#analyze-contract-risk)
* [Errors](https://docs.r.xyz/glider-api/enterprise/api-documentation#errors)
Copy
curl "https://data1.hexens.io/api/v1/contract/analyze-risk?address=0xdac17f958d2ee523a2206206994597c13d831ec7&chain_id=1&token=publictoken-privatetoken"
Copy
{
"address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": "1",
"results": [\
{\
"key": "risk_upgradeable",\
"value": "false",\
"title": "Upgradeable",\
"sub_title": "Token contract can be used by other proxies as delegated implementation",\
"description": "The token contract is designed to also be used as an implementation for proxy contracts to delegate their implementations to.",\
"severity": "info"\
},\
{\
"key": "risk_basic_transfer_fee",\
"value": "true",\
"title": "Basic Transfer Fee",\
"sub_title": "Basic Fee functionality included in transfers",\
"description": "The token contract's transfer or transferFrom functions have a basic fee functionality that can be turned on. This may mean that the receiver address can get fewer or a different amount of tokens than passed within the transfer functions.",\
"severity": "medium"\
},\
{\
"key": "risk_external_call_in_transfer",\
"value": "true",\
"title": "External call in transfer",\
"sub_title": "Transfer functionality is dependent on other contracts",\
"description": "The token contract has at least one external call in its transfer functions. There is a possibility that these external calls may be used to alter the transfer flow, e.g. blocking the transfers or manipulating the amount of tokens being sent.",\
"severity": "medium"\
},\
{\
"key": "risk_pausable",\
"value": "true",\
"title": "Pausable",\
"sub_title": "Token operations can be Paused by an external authority",\
"description": "The token contract has a pausing mechanism implemented and controlled by an external authority. This may mean token operations, such as transfers, can be paused.",\
"severity": "medium"\
},\
{\
"key": "risk_unauthorized_token_approvals",\
"value": "false",\
"title": "Unauthorized Token Approvals",\
"sub_title": "An external authority can Approve tokens for holders",\
"description": "The token contract has approve functionality, using which an external authority can manipulate the allowances of the token holders.",\
"severity": "high"\
},\
{\
"key": "risk_whitelist",\
"value": "false",\
"title": "Whitelist",\
"sub_title": "Whitelist-based functionality implemented in transfers",\
"description": "The token contract's transfer functions have implemented whitelist functionality. This generally means that some token holders have privileges over others; a whitelist can also be used to block transfers for many token holders.",\
"severity": "low"\
},\
{\
"key": "risk_blacklist",\
"value": "true",\
"title": "Blacklist",\
"sub_title": "Transfers can be blocked for specific senders using Blocklist",\
"description": "The token contract's transfer functionality includes checking the token sender address against a controlled blocklist, which may cause a transfer freeze for certain holders.",\
"severity": "high"\
},\
{\
"key": "risk_excessive_token_withdrawal",\
"value": "false",\
"title": "Asset Withdrawal",\
"sub_title": "An external authority can Sweep (transfer out) tokens from the contract",\
"description": "The token contract has asset sweeping (transferring out) functionality for the assets on its balance. While generally, the token contract itself should not hold any assets on its balance, this may impose a risk for users in case the contract is designed to receive tokens or native assets directly.",\
"severity": "info"\
},\
{\
"key": "risk_hidden_fees",\
"value": "false",\
"title": "Hidden fees",\
"sub_title": "Hidden fee functionality included in transfers",\
"description": "The token contract's transfer or transferFrom functions have a hidden fee functionality that can be turned on. This may mean that the receiver address can get fewer or a different amount of tokens than passed within the transfer functions.",\
"severity": "high"\
},\
{\
"key": "risk_blockable_transfer",\
"value": "true",\
"title": "Blockable Transfer",\
"sub_title": "Transfers can be blocked for specific senders using various checks",\
"description": "The token contract's transfer functionality includes checks such as transfer pausing, cooldown period checks, big transfer amounts checks etc. This may cause a transfer freeze for certain holders.",\
"severity": "medium"\
},\
{\
"key": "risk_eth_balance_sweep",\
"value": "false",\
"title": "ETH Balance Sweep",\
"sub_title": "An external authority can Sweep (transfer out) native currency from the contract",\
"description": "The token contract has asset sweeping (transferring out) functionality for the assets on its balance. While generally, the token contract itself should not hold any assets on its balance, this may impose a risk for users in case the contract is designed to receive tokens or native assets directly.",\
"severity": "info"\
},\
{\
"key": "risk_transfer_time_constraints",\
"value": "false",\
"title": "Cooldown checks",\
"sub_title": "Transfers can be Time-Constrained (cooldown periods)",\
"description": "The transfer functions in the token contract have time-based checks. This can implement transfer cooldowns or even fully block token transfers.",\
"severity": "medium"\
},\
{\
"key": "risk_selfdestruct",\
"value": "false",\
"title": "Selfdestruct",\
"sub_title": "Self-destructing token contract",\
"description": "The token contract has self-destruct functionality. This means the storage values, including balances, will be wiped after the contract self-destructs.",\
"severity": "high"\
},\
{\
"key": "risk_proxy",\
"value": "false",\
"title": "Proxy",\
"sub_title": "Token contract is a Proxy (upgradable contract)",\
"description": "The token contract does not directly implement the logic but instead uses the proxy pattern to be upgradable. This means that the contract actual code can be changed at any time, which may impose various risks.",\
"severity": "high"\
},\
{\
"key": "risk_centralized_mint",\
"value": "false",\
"title": "Centralized Mint",\
"sub_title": "An external authority can Mint tokens",\
"description": "The token contract has a token minting functionality that can be called only by an external authority and can affect the actual price of the token, diluting the holders.",\
"severity": "high"\
},\
{\
"key": "risk_balance_manipulation_in_non_standard_functions",\
"value": "false",\
"title": "Balance Manipulation",\
"sub_title": "Balance of the token can be manipulated in non-standard functions",\
"description": "The token contract has callable functions that manipulate the balance and are not standard token functions like transfer/transferFrom or burn/mint functionality.",\
"severity": "medium"\
},\
{\
"key": "risk_centralized_burn",\
"value": "false",\
"title": "Centralized Burn",\
"sub_title": "An external authority can Burn holders' tokens",\
"description": "The token contract has a token burning functionality which can be called only by an external authority and can affect the balances of token holders.",\
"severity": "high"\
}\
],
"info": {
"implementation_address": null,
"is_proxy": false,
"proxy_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"is_verified": true,
"is_erc20": true
},
"execution_time": 0.01406703,
"score": 0,
"market_endorsed": true
}
Copy
{
"address": "0x000000000000040470635eb91b7ce4d132d616ed",
"chain_id": "1",
"results": [],
"info": {
"implementation_address": null,
"is_proxy": false,
"proxy_address": "0x000000000000040470635eb91b7ce4d132d616ed",
"is_verified": true,
"is_erc20": false
},
"execution_time": 0.013219836,
"score": 0,
"market_endorsed": false
}
---
# API Documentation | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation.md)
.
#### Supported Blockchains[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#supported-blockchains)
**Endpoint:** GET /api/v1/chain/list
**Description:** Retrieve a list of all supported blockchains for contract analysis. Use the `chainid` value from the response when analyzing contracts.
### Endpoint[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#endpoint)
Copy
| | |
|---|---|
| **Method** | `POST` |
| **Path** | `/api/v1/portal/contract/analyze-risk` (Swagger advertises `/v1/portal/contract/analyze-risk`; the live base path is `/api`) |
| **Content-Type** | `application/json` |
| **Auth** | API key in body (`api_key`). No header-based auth. |
| **Idempotency** | Per `(user_id, address, chain_id)`. Re-calls return the cached result without a new charge. |
| **Async** | First call for a fresh contract returns **202 pending**. Client polls the same endpoint until **200 ready**. |
## Request body
```json
{
"api_key": "string",
"address": "string",
"chain_id": "string"
}
```
| Field | Type | Required | Notes |
|---|---|---|---|
| `api_key` | string | yes | Risk-API scoped access token issued in the portal. |
| `address` | string | yes | Contract address. EVM addresses must be `0x`-prefixed; non-EVM follows the chain's native format. |
| `chain_id` | string | yes | Decimal string (e.g. `"1"`, `"8453"`, `"56"`). |
Empty or malformed JSON, or any missing field, → **400 `INVALID_REQUEST_PAYLOAD`**.
### Successful responses[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#successful-responses)
### Error responses[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#error-responses)
### Examples[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#examples)
### Polling pseudocode[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#polling-pseudocode)
### Behavior notes[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#behavior-notes)
* **Pending is free.** Polling does not deduct from the user's balance. Only the first 200 response charges.
[PreviousAPI Documentation](https://docs.r.xyz/glider-api/enterprise/api-documentation)
Last updated 3 months ago
* [Endpoint](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#endpoint)
* [Successful responses](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#successful-responses)
* [Error responses](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#error-responses)
* [Examples](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#examples)
* [Polling pseudocode](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#polling-pseudocode)
* [Behavior notes](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation#behavior-notes)
Copy
Both 200 and 202 share a single envelope shape. Branch on the `status` field — only the matching subset of fields is populated.
### 200 OK — `status: "ready"`
The analysis is cached; result is returned inline. The user has been charged for this `(address, chain_id)` exactly once across the lifetime of the API key (subsequent ready-hits are free).
```json
{
"status": "ready",
"address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": "1",
"query_name": "token-risk",
"results": { /* analyzer output, shape depends on query */ }
}
```
| Field | Type | Notes |
|---|---|---|
| `status` | enum | `"ready"` for 200. |
| `address` | string | Echoed from request. |
| `chain_id` | string | Echoed from request. |
| `query_name` | string | Identifier of the analyzer query that produced `results`. |
| `results` | object/array | Free-shape analyzer payload. Stable per `query_name`/`query_version` upstream. |
### 202 Accepted — `status: "pending"`
The contract has not been analyzed yet. `gld-service-data-analyze` enqueues a background task and returns immediately. Client should retry after `retry_after_seconds`.
```json
{
"status": "pending",
"retry_after_seconds": 30
}
```
| Field | Type | Notes |
|---|---|---|
| `status` | enum | `"pending"` for 202. |
| `retry_after_seconds` | int | Currently `30`. Client should treat as advisory (lower bound). |
A pending response is **not billed**. Billing happens on the first successful 200.
Copy
| HTTP | `error_code` | When |
|---|---|---|
| `400` | `INVALID_REQUEST_PAYLOAD` | Body is not JSON / required fields missing / fails struct validation. |
| `400` | `INVALID_ADDRESS_FORMAT` | Address fails chain-specific format check (passthrough from data-analyze). |
| `400` | `INVALID_QUERY_NAME` | Resolved query name is not registered (configuration issue, normally not surfaced). |
| `400` | `ANALYSIS_FAILED` | Background analysis terminally failed (`ANALYSIS_FAILED`, `ANALYSIS_TIMEOUT`, `ANALYSIS_CANCELED` from data-analyze are all surfaced under this code). |
| `400` | `INTERNAL_ERROR` | Catch-all for unclassified errors. |
| `401`/`404` | — | Returned when the supplied `api_key` is not found / not in `risk-api` scope. Status code is the verbatim passthrough from `gld-service-user`. |
| `402` | `INSUFFICIENT_FUNDS` | Billing balance is below the per-call price. User must top up. |
| `429` | `RATE_LIMIT_EXCEEDED` | Per-key rate limit exceeded (passthrough from data-analyze). |
### Error body
```json
{
"error_code": "INSUFFICIENT_FUNDS",
"message": "insufficient funds"
}
```
For payload-shape errors only `error_code` is guaranteed; for validator failures the body additionally includes `error` with the validator string. Clients should branch on `error_code` and treat `message`/`error` as human-readable detail.
Copy
### cURL — fresh request (202 → poll → 200)
```bash
curl -sS -X POST \
-H 'Content-Type: application/json' \
-d '{"api_key":"sk_live_…","address":"0xdac17f958d2ee523a2206206994597c13d831ec7","chain_id":"1"}'
# → 202 {"status":"pending","retry_after_seconds":30}
# wait 30s, retry the same request
# → 200 {"status":"ready","address":"…","chain_id":"1","query_name":"token-risk","results":{…}}
```
Copy
```python
while True:
r = post(url, json=body)
if r.status_code == 200:
return r.json()["results"]
if r.status_code == 202:
sleep(r.json().get("retry_after_seconds", 30))
continue
raise ApiError(r.status_code, r.json())
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/overview.md). # Overview The Glider API enables deep analysis of smart contracts across supported blockchains. It helps to understand how a contract behaves and whether it poses any detectable risk, all without manual review. Built on top of \*\*Glider\*\*, Hexens’ scalable analysis engine, the API delivers high-precision behavioral labeling and risk detection in seconds. \[Learn about Glider\](https://glide.gitbook.io/main) \*\*\* ### Use cases of the Glider API [](https://docs.r.xyz/glider-api/overview.md#use-cases-of-glider-data-api)
\* \*\*Identify Risk Factors:\*\* Instantly detect if a contract includes high-risk logic. \* \*\*Understand Contract Behavior:\*\* Get clear labels that describe the contract’s logic, whether it’s pausable, includes blocklists/whitelists, transfer fees, or is a proxy, etc. \* \*\*Make Informed Decisions:\*\* Use risk insights to vet third-party contracts, protect your users, or support internal security reviews. Do it in a fast and automated fashion. \* \*\*Integration:\*\* You can integrate this into your dashboard, backend, alert system, or due diligence flow, or any automated process. \*\*\* ### How It Works Request API by passing a contract address and chain ID as parameters. You’ll get back a reply showing: \* The risks present \* Overall trust score \*\*\* ### Authentication To start using the API, you’ll need an access token. ➡️ \[Contact our team to get your token:\](https://hexens.io/solutions/glider?book-a-demo=true\\&utm\_source=gitbook\\&utm\_medium=docs\\&utm\_campaign=glider-api-docs)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/introduction.md). # Introduction Welcome to Glider documentation. Glider is the world's first scalable technology to tag and find logic in deployed smart contracts. ## Glider Solutions

\[Glider IDE\](https://docs.r.xyz/glider-ide/) is Hexen's contribution to the Web3 security researcher community. It is purpose-built for scalable variant and data-driven analysis of smart contracts, enabling researchers to uncover logical patterns and vulnerabilities across entire blockchain ecosystems. [Glider IDE docs](https://glide.gitbook.io/main/glider)
[How to write queries](https://glide.gitbook.io/main/glider/glider-the-basics)
\*\*\*

\[Glider API\](https://docs.r.xyz/glider-api/) empowers you to analyze smart contracts on supported blockchains using our advanced labeling system. This enables you to identify contract behavior, functionality, and potential risk factors in an automatice, streamlined and effective manner. [Glider API docs](https://glide.gitbook.io/main/glider-api)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/trust-score.md). # Trust Score The Glider Trust Score helps quantify the overall trust level of a smart contract by assigning a score from 0 to 100. The score is based on the number and severity of risks, as well as various contract attributes such as financial value, popularity, and more. The higher the risk level, the greater the negative impact on the score.\\ Below is a table of risk levels and their descriptions.
| Severity Level | Description |
| --- | --- |
| 🔴 High | Critical risks that allow full control, destruction, or abuse (e.g. centralized mint, selfdestruct) |
| 🟠 Medium | Moderate risks that affect usability or introduce behavioral constraints |
| 🟢 Low | Minor issues such as address-based privileges |
| 🔵 Info | Design traits or capabilities worth noting, but not inherently risky |
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/faq.md). # FAQ How does the Glider API work? You send a request with a smart contract address and chain ID. The API returns: \* A set of detected risks \* Overall trust score (0 to 100) \* Proxy and verification metadata Which blockchains are supported? The Glider API supports smart contract analysis on multiple chains. \[See the full list here.\](/glider-api/supported-chains.md) What is the Glider Trust Score? It’s a numerical value from 0 to 100 representing the trust level of a contract: \* \*\*100\*\* = No detectable risks \* \*\*Lower score\*\* = More or higher-severity risks Any contract that hasn’t been verified has a 0 base score. Each risk subtracts a fixed number of points based on severity (info, low, medium, high). \[See the full details.\](/glider-api/trust-score.md) What kinds of risks does the API detect? The API detects 15+ risks. \[See the full list here\](/glider-api/risks-breakdown.md) Is proxy detection supported? Yes. If a contract is a proxy, the API scans the underlying implementation and returns both \`proxy\_address\` and \`implementation\_address\` . What does `is_verified` mean? This flag tells you whether the smart contract is \*\*verified\*\* (i.e., the code is publicly visible on-chain). If \`false\`, the contract has no accessible source code and is considered untrustworthy. How do I get access? \[\*\*Contact the Hexens team\*\*\](https://hexens.io/solutions/glider?book-a-demo=true\\&utm\_source=gitbook\\&utm\_medium=docs\\&utm\_campaign=glider-api-docs) to request your token.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/risks-breakdown.md). # Risks Breakdown The Glider API identifies and labels various risk types in smart contracts. Below is a list of all currently detectable risks.
| # | Risk Type | Description | JSON key | Severity |
| --- | --- | --- | --- | --- |
| 1 | **Centralized Mint** | An external authority can create (mint) new tokens.
This can dilute holders and manipulate token supply. | risk\_centralized\_mint | High |
| 2 | **Hidden Fees** | The contract includes a fee that’s not clearly declared in transfers.
Receivers may get fewer tokens than expected. | risk\_hidden\_fees | High |
| 3 | **Unauthorized Token Approvals** | An external authority can approve token transfers on behalf of users.
This may allow unauthorized spending. | risk\_unauthorized\_token\_approvals | High |
| 4 | **Proxy (Upgradeabl)** | Implementation of the contract potentially upgradable: The contract uses the proxy pattern to separate the main address from implementation, with the potential ability to change the main underlying logic. | risk\_proxy | High |
| 5 | **Selfdestruct** | The contract can be destroyed.
When triggered, it erases all stored values, including balances. | risk\_selfdestruct | High |
| 6 | **Centralized Burn** | An external authority can burn tokens from user balances.
This reduces supply and can affect holder value. | risk\_centralized\_burn | High |
| 7 | **Blacklist** | Specific users can be blocked from transferring tokens.
This introduces censorship and central control. | risk\_blacklist | High |
| 8 | **Transfer event amount mismatch** | The amount emitted in the transfer event does not match the actual amount of the balance change. This can be used to misguide the blockchain indexers, user-facing applications and end users by showing them inconsistent transfer history and balances. | risk\_token\_transfer\_event\_amount\_mismatch | High |
| 9 | **Cooldown checks** | Transfers are subject to cooldown periods or timed delays.
This may prevent immediate token movement. | risk\_transfer\_time\_constraints | Medium |
| 10 | **Basic Transfer Fee** | The contract includes an optional, declared fee on transfers.
While visible, it still alters expected amounts. | risk\_basic\_transfer\_fee | Medium |
| 11 | **External Call in Transfer** | Transfers depend on other contracts.
External code can influence whether or how transfers succeed. | risk\_external\_call\_in\_transfer | Medium |
| 12 | **Balance Manipulation** | Balances can be altered using functions outside typical mint/burn/transfer logic.
This adds unpredictability to user balances. | risk\_balance\_manipulation\_in\_non\_standard\_functions | Medium |
| 13 | **Pausable** | An external authority can pause the contract.
All transfers or functions may be temporarily disabled. | risk\_pausable | Medium |
| 14 | **Blockable Transfer** | Transfers can be blocked under certain conditions (e.g. large amounts, cooldowns, specific addresses).
This can freeze tokens for certain users. | risk\_blockable\_transfer | Medium |
| 15 | **No Transfer event emitted** | The token's transfer functions lack transfer event emission, which can cause problems with blockchain indexers and user-facing applications not being able to show the transfer history and balances correctly. | risk\_not\_emmiting\_transfer\_event\_in\_transfer\_function | Medium |
| 16 | **Approval event not emitted** | The token's approve function lacks approval event emission, which can cause problems with blockchain indexers and user-facing applications to show the approval history and state correctly. | risk\_not\_emmiting\_approval\_event\_in\_approve\_function | Medium |
| 17 | **Whitelist** | Transfers are allowed only between approved addresses.
This favors certain users and limits token flow. | risk\_whitelist | Low |
| 18 | **Asset Withdrawal** | The contract can move tokens from its balance.
Relevant if the contract is expected to hold funds. | risk\_excessive\_token\_withdrawal | Informational |
| 19 | **ETH Balance Sweep** | The contract can move ETH from its balance.
This matters if ETH is sent to the contract. | risk\_eth\_balance\_sweep | Informational |
| 20 | **Assembly usage in transfer** | The token's transfer functions use assembly code, there is a probability that this can be used to obfuscate the transferring logic. | risk\_assembly\_usage\_in\_transfer\_function | Informational |
| 21 | **Not fully ERC20 compliant** | The token's contract does not fully implement all of the ERC20 standard's requirements. | risk\_not\_erc20\_full\_compliance | Informational |
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/supported-chains.md). # Supported Chains The Glider API currently supports smart contract analysis across the following blockchain networks.
| Chain Name | Chain ID |
| --- | --- |
| Ethereum | 1 |
| BNB Chain | 56 |
| Optimism | 10 |
| Polygon | 137 |
| Arbitrum One | 42161 |
| Moonbeam | 1284 |
| Moonriver | 1285 |
| Cronos | 25 |
| BitTorrent Chain (BTTC) | 199 |
| Celo | 42220 |
| Gnosis | 100 |
| Arbitrum Nova | 42170 |
| Base | 8453 |
| Polygon zkEVM | 1101 |
| Linea | 59144 |
| Frax (Fraxtal) | 252 |
| Avalanche C-Chain | 43114 |
| Blast | 81457 |
| Mantle | 5000 |
| Taiko | 167000 |
| XDC Network | 50 |
| ApeChain | 33139 |
| World Chain | 480 |
| Unichain | 130 |
| Sonic | 146 |
| Sophon | 50104 |
| Abstract | 2741 |
| Berachain | 80094 |
| Memecore | 4352 |
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation.md). # API Documentation #### Supported Blockchains [](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation.md#supported-blockchains)
\*\*Endpoint:\*\* GET /api/v1/chain/list \*\*Description:\*\* Retrieve a list of all supported blockchains for contract analysis. Use the \`chainid\` value from the response when analyzing contracts. ### Endpoint \`\`\`\` | | | |---|---| | \*\*Method\*\* | \`POST\` | | \*\*Path\*\* | \`/api/v1/portal/contract/analyze-risk\` (Swagger advertises \`/v1/portal/contract/analyze-risk\`; the live base path is \`/api\`) | | \*\*Content-Type\*\* | \`application/json\` | | \*\*Auth\*\* | API key in body (\`api\_key\`). No header-based auth. | | \*\*Idempotency\*\* | Per \`(user\_id, address, chain\_id)\`. Re-calls return the cached result without a new charge. | | \*\*Async\*\* | First call for a fresh contract returns \*\*202 pending\*\*. Client polls the same endpoint until \*\*200 ready\*\*. | ## Request body \`\`\`json { "api\_key": "string", "address": "string", "chain\_id": "string" } \`\`\` | Field | Type | Required | Notes | |---|---|---|---| | \`api\_key\` | string | yes | Risk-API scoped access token issued in the portal. | | \`address\` | string | yes | Contract address. EVM addresses must be \`0x\`-prefixed; non-EVM follows the chain's native format. | | \`chain\_id\` | string | yes | Decimal string (e.g. \`"1"\`, \`"8453"\`, \`"56"\`). | Empty or malformed JSON, or any missing field, → \*\*400 \`INVALID\_REQUEST\_PAYLOAD\`\*\*. \`\`\`\` ### Successful responses \`\`\`\` Both 200 and 202 share a single envelope shape. Branch on the \`status\` field — only the matching subset of fields is populated. ### 200 OK — \`status: "ready"\` The analysis is cached; result is returned inline. The user has been charged for this \`(address, chain\_id)\` exactly once across the lifetime of the API key (subsequent ready-hits are free). \`\`\`json { "status": "ready", "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", "chain\_id": "1", "query\_name": "token-risk", "results": { /\* analyzer output, shape depends on query \*/ } } \`\`\` | Field | Type | Notes | |---|---|---| | \`status\` | enum | \`"ready"\` for 200. | | \`address\` | string | Echoed from request. | | \`chain\_id\` | string | Echoed from request. | | \`query\_name\` | string | Identifier of the analyzer query that produced \`results\`. | | \`results\` | object/array | Free-shape analyzer payload. Stable per \`query\_name\`/\`query\_version\` upstream. | ### 202 Accepted — \`status: "pending"\` The contract has not been analyzed yet. \`gld-service-data-analyze\` enqueues a background task and returns immediately. Client should retry after \`retry\_after\_seconds\`. \`\`\`json { "status": "pending", "retry\_after\_seconds": 30 } \`\`\` | Field | Type | Notes | |---|---|---| | \`status\` | enum | \`"pending"\` for 202. | | \`retry\_after\_seconds\` | int | Currently \`30\`. Client should treat as advisory (lower bound). | A pending response is \*\*not billed\*\*. Billing happens on the first successful 200. \`\`\`\` ### Error responses \`\`\`\` | HTTP | \`error\_code\` | When | |---|---|---| | \`400\` | \`INVALID\_REQUEST\_PAYLOAD\` | Body is not JSON / required fields missing / fails struct validation. | | \`400\` | \`INVALID\_ADDRESS\_FORMAT\` | Address fails chain-specific format check (passthrough from data-analyze). | | \`400\` | \`INVALID\_QUERY\_NAME\` | Resolved query name is not registered (configuration issue, normally not surfaced). | | \`400\` | \`ANALYSIS\_FAILED\` | Background analysis terminally failed (\`ANALYSIS\_FAILED\`, \`ANALYSIS\_TIMEOUT\`, \`ANALYSIS\_CANCELED\` from data-analyze are all surfaced under this code). | | \`400\` | \`INTERNAL\_ERROR\` | Catch-all for unclassified errors. | | \`401\`/\`404\` | — | Returned when the supplied \`api\_key\` is not found / not in \`risk-api\` scope. Status code is the verbatim passthrough from \`gld-service-user\`. | | \`402\` | \`INSUFFICIENT\_FUNDS\` | Billing balance is below the per-call price. User must top up. | | \`429\` | \`RATE\_LIMIT\_EXCEEDED\` | Per-key rate limit exceeded (passthrough from data-analyze). | ### Error body \`\`\`json { "error\_code": "INSUFFICIENT\_FUNDS", "message": "insufficient funds" } \`\`\` For payload-shape errors only \`error\_code\` is guaranteed; for validator failures the body additionally includes \`error\` with the validator string. Clients should branch on \`error\_code\` and treat \`message\`/\`error\` as human-readable detail. \`\`\`\` ### Examples \`\`\`\` ### cURL — fresh request (202 → poll → 200) \`\`\`bash curl -sS -X POST \\ -H 'Content-Type: application/json' \\ -d '{"api\_key":"sk\_live\_…","address":"0xdac17f958d2ee523a2206206994597c13d831ec7","chain\_id":"1"}' # → 202 {"status":"pending","retry\_after\_seconds":30} # wait 30s, retry the same request # → 200 {"status":"ready","address":"…","chain\_id":"1","query\_name":"token-risk","results":{…}} \`\`\` \`\`\`\` ### Polling pseudocode \`\`\`\` \`\`\`python while True: r = post(url, json=body) if r.status\_code == 200: return r.json()\["results"\] if r.status\_code == 202: sleep(r.json().get("retry\_after\_seconds", 30)) continue raise ApiError(r.status\_code, r.json()) \`\`\`\` ### Behavior notes \* \*\*Pending is free.\*\* Polling does not deduct from the user's balance. Only the first 200 response charges.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-api/enterprise/api-documentation.md). # API Documentation API Domain: \`https://data1.hexens.io\` ### Supported Blockchains \*\*Endpoint:\*\*\\ GET /api/v1/chain/list \*\*Description:\*\*\\ Retrieve a list of all supported blockchains for contract analysis. Use the \`chainid\` value from the response when analyzing contracts. \*\*Sample Response:\*\* \`\`\`json { "chains": \[ {"tag": "ethereum", "chainid": "1"}, {"tag": "bsc", "chainid": "56"}, {"tag": "optimism", "chainid": "10"}, // .... \] } \`\`\` \*\*\* ### Analyze Contract Risk \*\*Endpoint:\*\*\\ GET /api/v1/contract/analyze-risk \*\*Description:\*\*\\ Run a comprehensive risk analysis on a smart contract by specifying its address and chain ID. #### \*\*Request Parameters:\*\* \* \`address\` (string): The smart contract address to analyze. \* \`chain\_id\` (string): The blockchain chain ID (use /api/v1/chain/list). \* \`token\` (string): Your authentication token in the format {public\\\_token}-{private\\\_token}. #### \*\*Result Parameters:\*\* \* \`address\` – Contract address to be analyzed. \* \`chain\_id\` – chain ID. \* \`info\` – General information about the address. \* \`is\_proxy\` – \`true\`/\`false\`. Indicates whether the provided address is a proxy contract. If it is a proxy, we scan the implementation contract instead of the proxy itself. In the results, we show both the original address provided by the user (\`proxy\_address\`) and the actual implementation address that was scanned (\`implementation\_address\`). \* \`implementation\_address\` – See \`is\_proxy\`. \* \`proxy\_address\` – See \`is\_proxy\`. \* \`is\_verified\` – \`true\`/\`false\`. Indicates whether the contract provided by the user is verified. If false, it means the deployer intentionally hid the code, leaving no way for users to check its functionality. \* \`is\_erc20\` - \`true\`/\`false\`. In case of "\`false\`", the API output will not include risk breakdown \* \`results\` - Array of risks. Each element of the array contains: \* \`key\`: Risk name \* \`value\`: \`true\` / \`false\` — whether the risk exists \* \`title\`: Risk title \* \`sub\_title\`: Risk subtitle \* \`description\`: Risk description \* \`severity\`: Risk severity \* \`market-endorsed\`: Property complements the technical and code-analysis-based trust score by indicating whether a token has been broadly adopted, integrated, and trusted by traders, platforms, and end-users over time #### \*\*Example Request:\*\* {% code overflow="wrap" %} \`\`\`bash curl "https://data1.hexens.io/api/v1/contract/analyze-risk?address=0xdac17f958d2ee523a2206206994597c13d831ec7&chain\_id=1&token=publictoken-privatetoken" \`\`\` {% endcode %} #### \*\*Sample Response: erc\\\_20 true\*\* \`\`\`json { "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", "chain\_id": "1", "results": \[ { "key": "risk\_upgradeable", "value": "false", "title": "Upgradeable", "sub\_title": "Token contract can be used by other proxies as delegated implementation", "description": "The token contract is designed to also be used as an implementation for proxy contracts to delegate their implementations to.", "severity": "info" }, { "key": "risk\_basic\_transfer\_fee", "value": "true", "title": "Basic Transfer Fee", "sub\_title": "Basic Fee functionality included in transfers", "description": "The token contract's transfer or transferFrom functions have a basic fee functionality that can be turned on. This may mean that the receiver address can get fewer or a different amount of tokens than passed within the transfer functions.", "severity": "medium" }, { "key": "risk\_external\_call\_in\_transfer", "value": "true", "title": "External call in transfer", "sub\_title": "Transfer functionality is dependent on other contracts", "description": "The token contract has at least one external call in its transfer functions. There is a possibility that these external calls may be used to alter the transfer flow, e.g. blocking the transfers or manipulating the amount of tokens being sent.", "severity": "medium" }, { "key": "risk\_pausable", "value": "true", "title": "Pausable", "sub\_title": "Token operations can be Paused by an external authority", "description": "The token contract has a pausing mechanism implemented and controlled by an external authority. This may mean token operations, such as transfers, can be paused.", "severity": "medium" }, { "key": "risk\_unauthorized\_token\_approvals", "value": "false", "title": "Unauthorized Token Approvals", "sub\_title": "An external authority can Approve tokens for holders", "description": "The token contract has approve functionality, using which an external authority can manipulate the allowances of the token holders.", "severity": "high" }, { "key": "risk\_whitelist", "value": "false", "title": "Whitelist", "sub\_title": "Whitelist-based functionality implemented in transfers", "description": "The token contract's transfer functions have implemented whitelist functionality. This generally means that some token holders have privileges over others; a whitelist can also be used to block transfers for many token holders.", "severity": "low" }, { "key": "risk\_blacklist", "value": "true", "title": "Blacklist", "sub\_title": "Transfers can be blocked for specific senders using Blocklist", "description": "The token contract's transfer functionality includes checking the token sender address against a controlled blocklist, which may cause a transfer freeze for certain holders.", "severity": "high" }, { "key": "risk\_excessive\_token\_withdrawal", "value": "false", "title": "Asset Withdrawal", "sub\_title": "An external authority can Sweep (transfer out) tokens from the contract", "description": "The token contract has asset sweeping (transferring out) functionality for the assets on its balance. While generally, the token contract itself should not hold any assets on its balance, this may impose a risk for users in case the contract is designed to receive tokens or native assets directly.", "severity": "info" }, { "key": "risk\_hidden\_fees", "value": "false", "title": "Hidden fees", "sub\_title": "Hidden fee functionality included in transfers", "description": "The token contract's transfer or transferFrom functions have a hidden fee functionality that can be turned on. This may mean that the receiver address can get fewer or a different amount of tokens than passed within the transfer functions.", "severity": "high" }, { "key": "risk\_blockable\_transfer", "value": "true", "title": "Blockable Transfer", "sub\_title": "Transfers can be blocked for specific senders using various checks", "description": "The token contract's transfer functionality includes checks such as transfer pausing, cooldown period checks, big transfer amounts checks etc. This may cause a transfer freeze for certain holders.", "severity": "medium" }, { "key": "risk\_eth\_balance\_sweep", "value": "false", "title": "ETH Balance Sweep", "sub\_title": "An external authority can Sweep (transfer out) native currency from the contract", "description": "The token contract has asset sweeping (transferring out) functionality for the assets on its balance. While generally, the token contract itself should not hold any assets on its balance, this may impose a risk for users in case the contract is designed to receive tokens or native assets directly.", "severity": "info" }, { "key": "risk\_transfer\_time\_constraints", "value": "false", "title": "Cooldown checks", "sub\_title": "Transfers can be Time-Constrained (cooldown periods)", "description": "The transfer functions in the token contract have time-based checks. This can implement transfer cooldowns or even fully block token transfers.", "severity": "medium" }, { "key": "risk\_selfdestruct", "value": "false", "title": "Selfdestruct", "sub\_title": "Self-destructing token contract", "description": "The token contract has self-destruct functionality. This means the storage values, including balances, will be wiped after the contract self-destructs.", "severity": "high" }, { "key": "risk\_proxy", "value": "false", "title": "Proxy", "sub\_title": "Token contract is a Proxy (upgradable contract)", "description": "The token contract does not directly implement the logic but instead uses the proxy pattern to be upgradable. This means that the contract actual code can be changed at any time, which may impose various risks.", "severity": "high" }, { "key": "risk\_centralized\_mint", "value": "false", "title": "Centralized Mint", "sub\_title": "An external authority can Mint tokens", "description": "The token contract has a token minting functionality that can be called only by an external authority and can affect the actual price of the token, diluting the holders.", "severity": "high" }, { "key": "risk\_balance\_manipulation\_in\_non\_standard\_functions", "value": "false", "title": "Balance Manipulation", "sub\_title": "Balance of the token can be manipulated in non-standard functions", "description": "The token contract has callable functions that manipulate the balance and are not standard token functions like transfer/transferFrom or burn/mint functionality.", "severity": "medium" }, { "key": "risk\_centralized\_burn", "value": "false", "title": "Centralized Burn", "sub\_title": "An external authority can Burn holders' tokens", "description": "The token contract has a token burning functionality which can be called only by an external authority and can affect the balances of token holders.", "severity": "high" } \], "info": { "implementation\_address": null, "is\_proxy": false, "proxy\_address": "0xdac17f958d2ee523a2206206994597c13d831ec7", "is\_verified": true, "is\_erc20": true }, "execution\_time": 0.01406703, "score": 0, "market\_endorsed": true } \`\`\` #### \*\*Sample Response: erc\\\_20 false\*\* \`\`\` { "address": "0x000000000000040470635eb91b7ce4d132d616ed", "chain\_id": "1", "results": \[\], "info": { "implementation\_address": null, "is\_proxy": false, "proxy\_address": "0x000000000000040470635eb91b7ce4d132d616ed", "is\_verified": true, "is\_erc20": false }, "execution\_time": 0.013219836, "score": 0, "market\_endorsed": false } \`\`\` ### Errors | 400 | \`MISSING\_PARAMETERS\` | Required parameters are missing. Please provide \`address\`, \`chain\_id\`, and \`token\`. | | ------------ | ------------------------ | ------------------------------------------------------------------------------------------------ | | 400 | \`INVALID\_TOKEN\_FORMAT\` | Token must be in format \`public-private\` separated by a hyphen. | | 400 | \`INVALID\_ADDRESS\_FORMAT\` | The address could not be parsed due to an invalid or unrecognized format. | | 400 | \`INVALID\_CHAIN\_ID\` | Invalid chain ID, must be one of the supported chain IDs. | | 400 (or 200) | \`PROCESSING\_TIMEOUT\` | The request took too long to process. Please try again later. \*(May still return\* \`200\`\*)\* | | 400 (or 200) | \`INTERNAL\_ERROR\` | Something went wrong. Please contact support if the issue persists. \*(May still return\* \`200\`\*)\* | | 429 | – | Rate limit exceeded. | ⚠️ \*\*Note\*\*: Both timeout and internal errors may still arrive in the response body with \`status: 200\` due to the streaming mechanism.
---
# Unknown
\# Glider ## Intoduction - \[Introduction\](https://docs.r.xyz/introduction.md) ## Glider IDE - \[Glider introduction\](https://docs.r.xyz/glider-ide/glider-introduction.md): High-level introduction to the Glider query framework - \[Glider: The Basics\](https://docs.r.xyz/glider-ide/glider-the-basics.md) - \[Intro to Python\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python.md) - \[Basic Python\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python/basic-python.md) - \[Advanced Python\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python/advanced-python.md) - \[Intro to Glider\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-glider.md) - \[Instructions\](https://docs.r.xyz/glider-ide/glider-the-basics/instructions.md) - \[Learning Instructions\](https://docs.r.xyz/glider-ide/glider-the-basics/instructions/learning-instructions.md) - \[Exercises\](https://docs.r.xyz/glider-ide/glider-the-basics/instructions/exercises.md) - \[Functions\](https://docs.r.xyz/glider-ide/glider-the-basics/functions.md) - \[Learning Functions\](https://docs.r.xyz/glider-ide/glider-the-basics/functions/learning-functions.md) - \[Exercises\](https://docs.r.xyz/glider-ide/glider-the-basics/functions/exercises.md) - \[Contracts\](https://docs.r.xyz/glider-ide/glider-the-basics/contracts.md) - \[Learning Contracts\](https://docs.r.xyz/glider-ide/glider-the-basics/contracts/learning-contracts.md) - \[Exercises\](https://docs.r.xyz/glider-ide/glider-the-basics/contracts/exercises.md) - \[Bonus Challenges\](https://docs.r.xyz/glider-ide/glider-the-basics/bonus-challenges.md) - \[Glider Cheatsheet\](https://docs.r.xyz/glider-ide/glider-the-basics/glider-cheatsheet.md) - \[Custom scope\](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md) - \[Glider Contest\](https://docs.r.xyz/glider-ide/glider-contest.md) - \[Recommended Vulnerabilities to Query\](https://docs.r.xyz/glider-ide/glider-contest/recommended-vulnerabilities-to-query.md) - \[Common Pitfalls of Glider\](https://docs.r.xyz/glider-ide/glider-contest/common-pitfalls-of-glider.md) - \[Triage Guidelines\](https://docs.r.xyz/glider-ide/glider-contest/triage-guidelines.md) - \[PoC Guidelines\](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md) - \[FAQ\](https://docs.r.xyz/glider-ide/glider-contest/faq.md): Find frequently asked questions about Glider and the Glider contest below. - \[Bug Bounty Hunting With Glider\](https://docs.r.xyz/glider-ide/bug-bounty-hunting-with-glider.md) - \[Hunting Governance Delegation Bugs with Glider\](https://docs.r.xyz/glider-ide/bug-bounty-hunting-with-glider/hunting-governance-delegation-bugs-with-glider.md): Turning a single incident into a scalable detection workflow - \[Finding Smart Contract Vulnerabilities with Glider’s Function Filters\](https://docs.r.xyz/glider-ide/bug-bounty-hunting-with-glider/finding-smart-contract-vulnerabilities-with-gliders-function-filters.md) - \[How to Write a Great Glider Query - Finding Arbitrary Calls\](https://docs.r.xyz/glider-ide/bug-bounty-hunting-with-glider/how-to-write-a-great-glider-query-finding-arbitrary-calls.md) - \[Writing Queries\](https://docs.r.xyz/glider-ide/writing-queries.md): This page describes what are the main concepts of writing Glider queries. - \[Glider and Declarative Query Writing\](https://docs.r.xyz/glider-ide/glider-and-declarative-query-writing.md) - \[API\](https://docs.r.xyz/glider-ide/api.md): Write queries, describe code scenarios and find matching contract code - \[Main concepts\](https://docs.r.xyz/glider-ide/api/main-concepts.md): Basic concepts of using API module - \[Iterables\](https://docs.r.xyz/glider-ide/api/iterables.md) - \[APITuple\](https://docs.r.xyz/glider-ide/api/iterables/apituple.md) - \[APISet\](https://docs.r.xyz/glider-ide/api/iterables/apiset.md) - \[APIList\](https://docs.r.xyz/glider-ide/api/iterables/apilist.md) - \[Argument\](https://docs.r.xyz/glider-ide/api/argument.md): The class represents a single argument. - \[Argument.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/argument/argument.backward\_df.md): Returns a list of all previous instructions/arguments of the current point in the data flow graph. Intraprocedural - \[Argument.data\](https://docs.r.xyz/glider-ide/api/argument/argument.data.md): Returns the internal data of the Argument - \[Argument.df\\\_reaches\\\_from\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/argument/argument.df\_reaches\_from\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument number from which data flow reaches the argument (it may reach through a chain of calls). - \[Argument.df\\\_reaching\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/argument/argument.df\_reaching\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument to which data flow reaches from the argument (it may reach through a chain of calls). - \[Argument.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/argument/argument.forward\_df.md): Returns a list of all instructions following the current point in the current data flow graph. - \[Argument.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/argument/argument.get\_parent.md): Returns parent function/modifier of the argument. - \[Argument.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/argument/argument.get\_variable.md): Returns the Variable representing the argument. - \[Argument.index\](https://docs.r.xyz/glider-ide/api/argument/argument.index.md): Returns the index of the argument. - \[Argument.memory\\\_type\](https://docs.r.xyz/glider-ide/api/argument/argument.memory\_type.md): Returns the memory type of the argument - \[Argument.name\](https://docs.r.xyz/glider-ide/api/argument/argument.name.md): Returns the name of the argument. - \[Argument.procedure\\\_graph\\\_node\](https://docs.r.xyz/glider-ide/api/argument/argument.procedure\_graph\_node.md) - \[Argument.source\\\_code()\](https://docs.r.xyz/glider-ide/api/argument/argument.source\_code.md): Returns the source code of the argument. - \[Argument.type\](https://docs.r.xyz/glider-ide/api/argument/argument.type.md): Returns the type of the argument. - \[Arguments\](https://docs.r.xyz/glider-ide/api/arguments.md): The class represents a list of arguments and allows to filter them with certain properties. - \[Arguments.list()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.list.md): Returns a list of all the arguments that are passed as parameters to the function. - \[Arguments.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_memory\_type.md): Returns a list of arguments having specified memory type. - \[Arguments.with\\\_name()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_name.md): Returns a list of arguments having specified name - \[Arguments.with\\\_type()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_type.md): Returns a list of arguments having specified memory type. - \[Arguments.with\\\_type\\\_convertible()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_type\_convertible.md): Returns a list of arguments that can be converted to specified types. Convertor will define a table of allowed conversions. - \[Convertor\](https://docs.r.xyz/glider-ide/api/arguments/convertor.md): The aim of this class is to define type conversions. - \[Convertor.add()\](https://docs.r.xyz/glider-ide/api/arguments/convertor/convertor.add.md): Add a new conversion. - \[Convertor.can\\\_convert()\](https://docs.r.xyz/glider-ide/api/arguments/convertor/convertor.can\_convert.md) - \[Convertor.set\\\_conversions()\](https://docs.r.xyz/glider-ide/api/arguments/convertor/convertor.set\_conversions.md) - \[Contract\](https://docs.r.xyz/glider-ide/api/contract.md): The class represents a single contract object. - \[Contract.address()\](https://docs.r.xyz/glider-ide/api/contract/contract.address.md): Returns the address of the contract. - \[Contract.base\\\_contracts()\](https://docs.r.xyz/glider-ide/api/contract/contract.base\_contracts.md): Returns Contracts object for the contracts from which contract was inherited directly or indirectly. - \[Contract.call\\\_graph()\](https://docs.r.xyz/glider-ide/api/contract/contract.call\_graph.md): Returns call graph of the contract. - \[Contract.chain\\\_id()\](https://docs.r.xyz/glider-ide/api/contract/contract.chain\_id.md): Returns the ChainID of the blockchain where the Contract was deployed. - \[Contract.constructor()\](https://docs.r.xyz/glider-ide/api/contract/contract.constructor.md): Returns the constructor of the contract, if exists. - \[Contract.derived\\\_contracts()\](https://docs.r.xyz/glider-ide/api/contract/contract.derived\_contracts.md): Returns Contracts object for the contracts which were derived from the contract. - \[Contract.direct\\\_base\\\_contracts()\](https://docs.r.xyz/glider-ide/api/contract/contract.direct\_base\_contracts.md): Returns Contracts for the contracts from which the contract was inherited directly. - \[Contract.enums()\](https://docs.r.xyz/glider-ide/api/contract/contract.enums.md): The function returns all the enums of a Contract. - \[Contract.errors()\](https://docs.r.xyz/glider-ide/api/contract/contract.errors.md): The function returns all the errors of a Contract. - \[Contract.events()\](https://docs.r.xyz/glider-ide/api/contract/contract.events.md): The function returns all the events of a Contract. - \[Contract.functions()\](https://docs.r.xyz/glider-ide/api/contract/contract.functions.md): Returns all the functions of a Contract. - \[Contract.get\\\_contracts\\\_from\\\_same\\\_src\\\_file()\](https://docs.r.xyz/glider-ide/api/contract/contract.get\_contracts\_from\_same\_src\_file.md): Returns a collection of lists, with each list representing contracts originating from the same document. - \[Contract.is\\\_lib()\](https://docs.r.xyz/glider-ide/api/contract/contract.is\_lib.md): Returns true if the Contract is a library, false otherwise. - \[Contract.is\\\_main()\](https://docs.r.xyz/glider-ide/api/contract/contract.is\_main.md): Returns true if the Contract is main, false otherwise. - \[Contract.modifiers()\](https://docs.r.xyz/glider-ide/api/contract/contract.modifiers.md): Returns all the modifiers of a Contract. - \[Contract.name\](https://docs.r.xyz/glider-ide/api/contract/contract.name.md): Returns the name of a Contract. - \[Contract.pragmas()\](https://docs.r.xyz/glider-ide/api/contract/contract.pragmas.md): Returns the list of all pragmas of the contract. - \[Contract.source\\\_code()\](https://docs.r.xyz/glider-ide/api/contract/contract.source\_code.md): Returns the source code of the contract. - \[Contract.state\\\_variables()\](https://docs.r.xyz/glider-ide/api/contract/contract.state\_variables.md): Returns the list of all state variables of the contract. - \[Contract.structs()\](https://docs.r.xyz/glider-ide/api/contract/contract.structs.md): Returns the list of all structs of the contract. - \[Contracts\](https://docs.r.xyz/glider-ide/api/contracts.md): The aim of this class is to filter contracts with some properties. - \[Contracts.exec()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.exec.md): Executes the formed query and returns the list of Contract objects. - \[Contracts.functions()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.functions.md): Returns the Functions object for the functions of the contracts. - \[Contracts.interface\\\_contracts()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.interface\_contracts.md): Adds a filter to get contracts that are interface. - \[Contracts.mains()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.mains.md): Adds a filter to get contracts that are main. - \[Contracts.non\\\_interface\\\_contracts()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.non\_interface\_contracts.md): Adds a filter to get contracts that are not interface. - \[Contracts.state\\\_variables()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.state\_variables.md): Returns the State Variables object for the state variables of the contracts. - \[Contracts.with\\\_address()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_address.md): Adds a filter to get contracts associated with the given address. - \[Contracts.with\\\_all\\\_function\\\_names()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_all\_function\_names.md): Adds a filter to get contracts that have functions with all the given names. - \[Contracts.with\\\_all\\\_function\\\_signatures()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_all\_function\_signatures.md): Adds a filter to get contracts that have all functions with the given signatures. - \[Contracts.with\\\_compiler\\\_range()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_compiler\_range.md): Adds a filter to get contracts whose compilation version is in the given range. - \[Contracts.with\\\_compiler\\\_range\\\_not()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_compiler\_range\_not.md): Adds a filter to get contracts whose compilation version isn't in the given range. - \[Contracts.with\\\_error\\\_name()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_error\_name.md): Adds a filter to get contracts that have an error with the given name. - \[Contracts.with\\\_error\\\_prefix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_error\_prefix.md): Adds a filter to get contracts that have an error whose name has the given prefix. - \[Contracts.with\\\_error\\\_regex()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_error\_regex.md): Adds a filter to get contracts that have an error whose name matches the given regex. - \[Contracts.with\\\_error\\\_signature()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_error\_signature.md): Adds a filter to get contracts that have an error with the given signature. - \[Contracts.with\\\_error\\\_suffix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_error\_suffix.md): Adds a filter to get contracts that have an error whose name has the given suffix. - \[Contracts.with\\\_event\\\_name()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_event\_name.md): Adds a filter to get contracts that have an event with the given name. - \[Contracts.with\\\_event\\\_prefix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_event\_prefix.md): Adds a filter to get contracts that have an event whose name has the given prefix. - \[Contracts.with\\\_event\\\_regex()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_event\_regex.md): Adds a filter to get contracts that have an event whose name matches the given regex. - \[Contracts.with\\\_event\\\_signature()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_event\_signature.md): Adds a filter to get contracts that have an event with the given signature. - \[Contracts.with\\\_event\\\_suffix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_event\_suffix.md): Adds a filter to get contracts that have an event whose name has the given suffix. - \[Contracts.with\\\_function\\\_name()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name.md): Adds a filter to get contracts that have a function with the given name. - \[Contracts.with\\\_function\\\_name\\\_not()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_not.md): Adds a filter to get contracts that don't have any function with the given name. - \[Contracts.with\\\_function\\\_name\\\_prefix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_prefix.md): Adds a filter to get contracts that have a function whose name has the given prefix. - \[Contracts.with\\\_function\\\_name\\\_regex()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_regex.md): Adds a filter to get contracts that have a function whose name matches the specified regex. - \[Contracts.with\\\_function\\\_name\\\_suffix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_suffix.md): Adds a filter to get contracts that have a function whose name has the given suffix. - \[Contracts.with\\\_function\\\_signature()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_signature.md): Adds a filter to get contracts that have a function with the given signature. - \[Contracts.with\\\_name()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_name.md): Adds a filter to get contracts with the given name. - \[Contracts.with\\\_name\\\_not()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_name\_not.md): Adds a filter to get contracts that don't have the given name. - \[Contracts.with\\\_name\\\_prefix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_name\_prefix.md): Adds a filter to get contracts whose names have the given prefix. - \[Contracts.with\\\_name\\\_regex()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_name\_regex.md): Adds a filter to get contracts whose names match the given regex. - \[Contracts.with\\\_name\\\_suffix()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_name\_suffix.md): Adds a filter to get contracts that names have the given suffix. - \[Contracts.with\\\_one\\\_of\\\_the\\\_function\\\_names()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_one\_of\_the\_function\_names.md): Adds a filter to get contracts that have at least one function from the given names. - \[Contracts.with\\\_one\\\_of\\\_the\\\_function\\\_signatures()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_one\_of\_the\_function\_signatures.md) - \[Contracts.with\\\_struct\\\_field\\\_name()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_struct\_field\_name.md): Adds a filter to get contracts that have a struct with the given field name. - \[Contracts.with\\\_struct\\\_field\\\_type()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_struct\_field\_type.md): Adds a filter to get contracts that have a struct with the given field type. - \[Contracts.with\\\_struct\\\_fields\\\_count()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_struct\_fields\_count.md): Adds a filter to get contracts that have a struct with the given fields count. - \[Contracts.with\\\_struct\\\_name()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_struct\_name.md): Adds a filter to get contracts that have a struct with the given name. - \[Contracts.without\\\_function\\\_signature()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.without\_function\_signature.md): Adds a filter to get contracts that do not have a function with the given signature. - \[Contracts.without\\\_function\\\_signatures()\](https://docs.r.xyz/glider-ide/api/contracts/contracts.without\_function\_signatures.md): Adds a filter to get contracts that do not have a function with the given signatures. - \[DfPathFinder\](https://docs.r.xyz/glider-ide/api/dfpathfinder.md) - \[DfPathFinder.get\\\_all\\\_paths\\\_between\\\_points()\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.get\_all\_paths\_between\_points.md): Returns all data flow paths between two points. - \[DfPathFinder.get\\\_path\\\_between\\\_points()\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.get\_path\_between\_points.md): Returns the first encountered data flow path from source to destination, if it exists. Otherwise, returns an empty tuple. - \[DfPathFinder.is\\\_df\\\_path()\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.is\_df\_path.md): Checks if there is a data flow path from source to destination. - \[Enum\](https://docs.r.xyz/glider-ide/api/enum.md): The class represents a single enum object. - \[Enum.address\](https://docs.r.xyz/glider-ide/api/enum/enum.address.md): Returns the address of the enum. - \[Enum.data\](https://docs.r.xyz/glider-ide/api/enum/enum.data.md): Returns the data of the enum. - \[Enum.max\](https://docs.r.xyz/glider-ide/api/enum/enum.max.md): Returns the maximum value of the enum. - \[Enum.min\](https://docs.r.xyz/glider-ide/api/enum/enum.min.md): Returns the minimum value of the enum. - \[Enum.name\](https://docs.r.xyz/glider-ide/api/enum/enum.name.md): Returns the name of the enum. - \[Enum.source\\\_code()\](https://docs.r.xyz/glider-ide/api/enum/enum.source\_code.md): Returns the source code of the enum. - \[Enum.values\](https://docs.r.xyz/glider-ide/api/enum/enum.values.md): Returns the values of the enum. - \[Enums\](https://docs.r.xyz/glider-ide/api/enums.md): The aim of this class is to filter enums with some properties. - \[Enums.exec()\](https://docs.r.xyz/glider-ide/api/enums/enums.exec.md): Executes the formed query and returns the list of Enum objects. - \[Error\](https://docs.r.xyz/glider-ide/api/error.md): The class represents a single error object. - \[Error.address\](https://docs.r.xyz/glider-ide/api/error/error.address.md): Returns the address of the error. - \[Error.args\](https://docs.r.xyz/glider-ide/api/error/error.args.md): Returns the list of arguments of the error. - \[Error.name\](https://docs.r.xyz/glider-ide/api/error/error.name.md): Returns the name of the error. - \[Error.signature\](https://docs.r.xyz/glider-ide/api/error/error.signature.md): Returns the signature of the error. - \[Error.source\\\_code()\](https://docs.r.xyz/glider-ide/api/error/error.source\_code.md): Returns the source code of the error. - \[Errors\](https://docs.r.xyz/glider-ide/api/errors.md): The aim of this class is to filter errors with some properties. - \[Errors.exec()\](https://docs.r.xyz/glider-ide/api/errors/errors.exec.md): Executes the formed query and returns the list of Error objects. - \[Event\](https://docs.r.xyz/glider-ide/api/event.md): The class represents a single event object - \[Event.address\](https://docs.r.xyz/glider-ide/api/event/event.address.md): Returns the name of the event. - \[Event.arg\\\_list()\](https://docs.r.xyz/glider-ide/api/event/event.arg\_list.md): Returns arguments' types of the event. - \[Event.data\](https://docs.r.xyz/glider-ide/api/event/event.data.md): Returns the data of the event. - \[Event.name\](https://docs.r.xyz/glider-ide/api/event/event.name.md): Returns the name of the event. - \[Event.signature\](https://docs.r.xyz/glider-ide/api/event/event.signature.md): Returns the signature of the event. - \[Event.source\\\_code()\](https://docs.r.xyz/glider-ide/api/event/event.source\_code.md): Returns the source code of the event. - \[Events\](https://docs.r.xyz/glider-ide/api/events.md): The aim of this class is to filter events with some properties. - \[Events.exec()\](https://docs.r.xyz/glider-ide/api/events/events.exec.md): Executes the formed query and returns the list of Event objects. - \[Filters\](https://docs.r.xyz/glider-ide/api/filters.md): This class represents Filter objects used for filtering results. - \[GlobalFilters\](https://docs.r.xyz/glider-ide/api/filters/globalfilters.md): Class containing all custom filters for global values. - \[GlobalFilters.BLOCK\\\_BASEFEE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_basefee.md) - \[GlobalFilters.BLOCK\\\_CHAIN\\\_ID\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_chain\_id.md) - \[GlobalFilters.BLOCK\\\_COINBASE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_coinbase.md) - \[GlobalFilters.BLOCK\\\_DIFFICULTY\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_difficulty.md) - \[GlobalFilters.BLOCK\\\_GAS\\\_LIMIT\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_gas\_limit.md) - \[GlobalFilters.BLOCK\\\_NUMBER\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_number.md) - \[GlobalFilters.BLOCK\\\_PREVRANDAO\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_prevrandao.md) - \[GlobalFilters.BLOCK\\\_TIME\\\_STAMP\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_time\_stamp.md) - \[GlobalFilters.MSG\\\_DATA\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_data.md) - \[GlobalFilters.MSG\\\_GAS\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_gas.md) - \[GlobalFilters.MSG\\\_SENDER\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sender.md) - \[GlobalFilters.MSG\\\_SIG\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sig.md) - \[GlobalFilters.MSG\\\_VALUE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_value.md) - \[GlobalFilters.NOW\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.now.md) - \[GlobalFilters.TX\\\_GASPRICE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_gasprice.md) - \[GlobalFilters.TX\\\_ORIGIN\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_origin.md) - \[GlobalFilters.get()\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.get.md) - \[Function\](https://docs.r.xyz/glider-ide/api/function.md) - \[Function.caller\\\_functions()\](https://docs.r.xyz/glider-ide/api/function/function.caller\_functions.md): Returns a Functions object that represents functions that call the function. - \[Function.caller\\\_functions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/function/function.caller\_functions\_recursive.md): Returns a Functions object representing the functions which are called from the function - \[Function.has\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/function/function.has\_modifiers.md): Returns true if the function has modifiers, otherwise returns false - \[Function.is\\\_constructor()\](https://docs.r.xyz/glider-ide/api/function/function.is\_constructor.md): Returns true if the function is constructor, otherwise returns false. - \[Function.is\\\_external()\](https://docs.r.xyz/glider-ide/api/function/function.is\_external.md): Returns true if the visibility of the function is external, otherwise returns false. - \[Function.is\\\_global()\](https://docs.r.xyz/glider-ide/api/function/function.is\_global.md): Returns true if the function is global, otherwise returns false. - \[Function.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/function/function.is\_internal.md): Returns true if the visibility of the function is internal, otherwise returns false. - \[Function.is\\\_payable()\](https://docs.r.xyz/glider-ide/api/function/function.is\_payable.md): Returns true if the function is payable, otherwise returns false. - \[Function.is\\\_private()\](https://docs.r.xyz/glider-ide/api/function/function.is\_private.md): Returns true if the visibility of the function is private, otherwise returns false. - \[Function.is\\\_public()\](https://docs.r.xyz/glider-ide/api/function/function.is\_public.md): Returns true if the visibility of the function is public, otherwise returns false. - \[Function.is\\\_pure()\](https://docs.r.xyz/glider-ide/api/function/function.is\_pure.md): Returns true if the function is pure, otherwise returns false. - \[Function.is\\\_view()\](https://docs.r.xyz/glider-ide/api/function/function.is\_view.md): Returns true if the function is view, otherwise returns false. - \[Function.modifiers()\](https://docs.r.xyz/glider-ide/api/function/function.modifiers.md): Returns the Modifiers object for the modifiers of the function. - \[Function.properties()\](https://docs.r.xyz/glider-ide/api/function/function.properties.md): Returns the function's properties. - \[Function.return\\\_instructions()\](https://docs.r.xyz/glider-ide/api/function/function.return\_instructions.md) - \[Function.return\\\_tuple()\](https://docs.r.xyz/glider-ide/api/function/function.return\_tuple.md) - \[Functions\](https://docs.r.xyz/glider-ide/api/functions.md) - \[Functions.caller\\\_functions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/functions/functions.caller\_functions\_recursive.md): Returns a Functions object representing the functions through which the functions from current Functions object could be called. - \[Functions.caller\\\_modifiers\\\_recursive()\](https://docs.r.xyz/glider-ide/api/functions/functions.caller\_modifiers\_recursive.md): Returns a Modifiers object representing the modifiers through which the functions from current Functions object could be called. - \[Functions.constructors()\](https://docs.r.xyz/glider-ide/api/functions/functions.constructors.md) - \[Functions.exec()\](https://docs.r.xyz/glider-ide/api/functions/functions.exec.md): Executes the formed query and returns a list of the Function objects. - \[Functions.modifiers()\](https://docs.r.xyz/glider-ide/api/functions/functions.modifiers.md): Returns the Modifiers object for the modifiers of the function. - \[Functions.with\\\_all\\\_modifier\\\_names()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_all\_modifier\_names.md) - \[Functions.with\\\_all\\\_properties()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_all\_properties.md): with\\\_all\\\_properties is deprecated and will be removed in future versions. Please use with\\\_properties in- stead. Adds a filter to get functions that have all given properties. - \[Functions.with\\\_modifier\\\_name()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_name.md) - \[Functions.with\\\_modifier\\\_name\\\_regex()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_name\_regex.md): Adds a filter to get functions, that have modifier whose name matches the given regex. - \[Functions.with\\\_modifier\\\_name\\\_regex()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_name\_regex-1.md) - \[Functions.with\\\_modifier\\\_properties()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_properties.md): Filter functions that have modifiers satisfying the given expr. - \[Functions.with\\\_modifier\\\_signature()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_signature.md) - \[Functions.with\\\_one\\\_of\\\_the\\\_modifier\\\_name\\\_regexes()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_one\_of\_the\_modifier\_name\_regexes.md) - \[Functions.with\\\_one\\\_of\\\_the\\\_modifier\\\_names()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_one\_of\_the\_modifier\_names.md) - \[Functions.with\\\_one\\\_property()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_one\_property.md): with\\\_one\\\_property is deprecated and will be removed in future versions. Please use with\\\_properties in- stead. Adds a filter to get functions that at least have one of the given properties. - \[Functions.with\\\_properties()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_properties.md): Filter functions satisfying the given expression - \[Functions.with\\\_properties\\\_considering\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_properties\_considering\_modifiers.md): Filter functions that satisfies or have modifiers satisfying the given expr. - \[Functions.without\\\_modifier\\\_name()\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_modifier\_name.md) - \[Functions.without\\\_modifier\\\_names()\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_modifier\_names.md) - \[Functions.without\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_modifiers.md) - \[Functions.without\\\_properties()\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_properties.md): without\\\_properties is deprecated and will be removed in future versions. Please use with\\\_properties instead. Adds a filter to get functions that don't have any of the given properties. - \[Modifier\](https://docs.r.xyz/glider-ide/api/modifier.md) - \[Modifier.functions()\](https://docs.r.xyz/glider-ide/api/modifier/modifier.functions.md) - \[Modifier.placeholder\\\_instructions()\](https://docs.r.xyz/glider-ide/api/modifier/modifier.placeholder\_instructions.md) - \[Modifier.properties()\](https://docs.r.xyz/glider-ide/api/modifier/modifier.properties.md): Returns the modifier's properties. - \[Modifiers\](https://docs.r.xyz/glider-ide/api/modifiers.md): The aim of this class is to filter modifiers with specified properties. - \[Modifiers.exec()\](https://docs.r.xyz/glider-ide/api/modifiers/modifiers.exec.md): Executes the formed query and returns an APIList of the Modifier objects. - \[Modifiers.placeholder\\\_instructions()\](https://docs.r.xyz/glider-ide/api/modifiers/modifiers.placeholder\_instructions.md) - \[Modifiers.with\\\_properties()\](https://docs.r.xyz/glider-ide/api/modifiers/modifiers.with\_properties.md): Filter modifiers satisfying the given expression - \[Callable\](https://docs.r.xyz/glider-ide/api/callable.md) - \[Callable.address()\](https://docs.r.xyz/glider-ide/api/callable/callable.address.md): Returns the address of the function/modifier. - \[Callable.arguments()\](https://docs.r.xyz/glider-ide/api/callable/callable.arguments.md): Returns an Arguments object for the arguments of the function/modifier. - \[Callable.break\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.break\_instructions.md): Returns break instructions of the function/modifier. - \[Callable.callee\\\_functions()\](https://docs.r.xyz/glider-ide/api/callable/callable.callee\_functions.md): Returns a Functions object that represents called functions from the function/modifier. - \[Callable.callee\\\_functions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/callable/callable.callee\_functions\_recursive.md): Returns a Functions object representing the functions through which the function could be called - \[Callable.callee\\\_values()\](https://docs.r.xyz/glider-ide/api/callable/callable.callee\_values.md): Returns a list of Call objects that represents called functions from the function/modifier. - \[Callable.calls\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.calls\_instructions.md): Returns an Instructions object for the call instructions of the function/modifier. - \[Callable.catch\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.catch\_instructions.md): Returns catch instructions of the function/modifier. - \[Callable.continue\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.continue\_instructions.md): Returns continue instructions of the function/modifier. - \[Callable.end\\\_asm\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.end\_asm\_instructions.md): Returns end\\\_assembly instructions of the function/modifier. - \[Callable.end\\\_if\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.end\_if\_instructions.md): Returns end\\\_if instructions of the function/modifier. - \[Callable.end\\\_loop\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.end\_loop\_instructions.md): Returns end\\\_loop instructions of the function/modifier. - \[Callable.entry\\\_point\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.entry\_point\_instructions.md): Returns entry\\\_point instructions of the function/modifier. - \[Callable.expression\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.expression\_instructions.md): Returns expression instructions of the function/modifier. - \[Callable.get\\\_contract()\](https://docs.r.xyz/glider-ide/api/callable/callable.get\_contract.md): Returns the parent contract of the function/modifier if exists, otherwise (global functions) returns NoneObject. - \[Callable.get\\\_pg()\](https://docs.r.xyz/glider-ide/api/callable/callable.get\_pg.md): Constructs and returns procedure graph of the function/modifier. - \[Callable.get\\\_reachable\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.get\_reachable\_instructions.md): Returns the instructions which are reachable from the entry node - \[Callable.if\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.if\_instructions.md): Returns if instructions of the function/modifier. - \[Callable.if\\\_loop\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.if\_loop\_instructions.md): Returns if\\\_loop instructions of the function/modifier. - \[Callable.instruction\\\_with\\\_id()\](https://docs.r.xyz/glider-ide/api/callable/callable.instruction\_with\_id.md): Returns an Instruction object with specified id from function. - \[Callable.instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.instructions.md): Returns an Instructions object for the instructions of the function/modifier. - \[Callable.instructions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/callable/callable.instructions\_recursive.md): Returns the set of all instructions from the current function entry in the control flow graph. - \[Callable.local\\\_variables()\](https://docs.r.xyz/glider-ide/api/callable/callable.local\_variables.md): Returns a LocalVariables object for the local variables of the function/modifier. - \[Callable.loops()\](https://docs.r.xyz/glider-ide/api/callable/callable.loops.md): Retrieves loops from Callable - \[Callable.name\](https://docs.r.xyz/glider-ide/api/callable/callable.name.md): Returns the function's or modifier's name. - \[Callable.new\\\_contract\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.new\_contract\_instructions.md): Returns the function's/modifier's instructions that create a new contract. - \[Callable.selector()\](https://docs.r.xyz/glider-ide/api/callable/callable.selector.md): Returns keccak256 selector of the function's or modifier's signature. - \[Callable.signature()\](https://docs.r.xyz/glider-ide/api/callable/callable.signature.md): Returns the function's or modifier's signature. - \[Callable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/callable/callable.source\_code.md): Returns the source code of the function/modifier. - \[Callable.source\\\_line()\](https://docs.r.xyz/glider-ide/api/callable/callable.source\_line.md): Returns the function's or modifier's source line numbers. - \[Callable.start\\\_asm\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.start\_asm\_instructions.md): Returns start assembly instructions of the function/modifier. - \[Callable.start\\\_loop\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.start\_loop\_instructions.md): Returns start\\\_loop instructions of the function/modifier. - \[Callable.throw\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.throw\_instructions.md): Returns throw instructions of the function/modifier. - \[Callable.try\\\_instructions()\](https://docs.r.xyz/glider-ide/api/callable/callable.try\_instructions.md): Returns try instructions of the function/modifier. - \[Callables\](https://docs.r.xyz/glider-ide/api/callables.md) - \[Callables.callee\\\_functions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/callables/callables.callee\_functions\_recursive.md): Returns a Functions object representing the functions which are called from the callables of the Callables object. - \[Callables.contracts()\](https://docs.r.xyz/glider-ide/api/callables/callables.contracts.md): Returns Contracts object for the contracts of the functions/modifiers. - \[Callables.instructions()\](https://docs.r.xyz/glider-ide/api/callables/callables.instructions.md) - \[Callables.with\\\_address()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_address.md): Adds a filter to get functions/modifiers associated with the given address. - \[Callables.with\\\_arg\\\_count()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_arg\_count.md) - \[Callables.with\\\_arg\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_arg\_memory\_type.md) - \[Callables.with\\\_arg\\\_name()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_arg\_name.md) - \[Callables.with\\\_arg\\\_type()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_arg\_type.md) - \[Callables.with\\\_arg\\\_types()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_arg\_types.md) - \[Callables.with\\\_callee\\\_names()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_callee\_names.md): Adds a filter to get functions/modifiers having specified callee names. - \[Callables.with\\\_declarer\\\_contract\\\_name()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_declarer\_contract\_name.md): Adds a filter to get functions/modifiers that have declarer contract with the given name. - \[Callables.with\\\_globals()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_globals.md): Filter functions/modifiers satisfying the given expression of global variables. - \[Callables.with\\\_name()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name.md) - \[Callables.with\\\_name\\\_prefix()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_prefix.md) - \[Callables.with\\\_name\\\_prefixes()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_prefixes.md) - \[Callables.with\\\_name\\\_regex()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_regex.md) - \[Callables.with\\\_name\\\_regexes()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_regexes.md) - \[Callables.with\\\_name\\\_suffix()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_suffix.md) - \[Callables.with\\\_name\\\_suffixes()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_suffixes.md) - \[Callables.with\\\_one\\\_of\\\_the\\\_names()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_one\_of\_the\_names.md) - \[Callables.with\\\_signature()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_signature.md) - \[Callables.with\\\_signatures()\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_signatures.md) - \[Callables.without\\\_name()\](https://docs.r.xyz/glider-ide/api/callables/callables.without\_name.md) - \[Callables.without\\\_names()\](https://docs.r.xyz/glider-ide/api/callables/callables.without\_names.md) - \[MethodProp\](https://docs.r.xyz/glider-ide/api/callables/methodprop.md) - \[MethodProp.EXTERNAL\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.external.md) - \[MethodProp.HAS\\\_ARGS\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_args.md) - \[MethodProp.HAS\\\_CALLEES\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_callees.md) - \[MethodProp.HAS\\\_ERRORS\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_errors.md) - \[MethodProp.HAS\\\_MODIFIERS\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_modifiers.md) - \[MethodProp.HAS\\\_STATE\\\_VARIABLES\\\_READ\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_state\_variables\_read.md) - \[MethodProp.HAS\\\_STATE\\\_VARIABLES\\\_WRITTEN\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_state\_variables\_written.md) - \[MethodProp.INTERNAL\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.internal.md) - \[MethodProp.IS\\\_CONSTRUCTOR\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_constructor.md) - \[MethodProp.IS\\\_GLOBAL\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_global.md) - \[MethodProp.IS\\\_PAYABLE\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_payable.md) - \[MethodProp.IS\\\_PURE\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_pure.md) - \[MethodProp.IS\\\_VIEW\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_view.md) - \[MethodProp.PRIVATE\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.private.md) - \[MethodProp.PUBLIC\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.public.md) - \[Instruction\](https://docs.r.xyz/glider-ide/api/instruction.md) - \[Instruction.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.backward\_df.md): Returns a list of all previous instructions/arguments/variables of the current point in the data flow graph. - \[Instruction.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[Instruction.builtin\\\_callee\\\_names()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.builtin\_callee\_names.md): Returns the list of builtin call names that are called from the instruction. E.g. keccak256, ecrecover... - \[Instruction.callee\\\_names()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.callee\_names.md): Returns the list of function names that are called from the instruction. It returns an empty list for an instruction that does not call any functions - \[Instruction.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.forward\_df.md): Returns a list of all instructions following the current point in the current data flow graph. - \[Instruction.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[Instruction.get\\\_callees()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_callees.md): Returns metadata on all calls in the Instruction. - \[Instruction.get\\\_component()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_component.md): Returns the instruction's i-th component. - \[Instruction.get\\\_components()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_components.md): Returns the instruction's components. - \[Instruction.get\\\_dest()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_dest.md): Returns the destination (lvalue) if the instruction has any type of assignment - \[Instruction.get\\\_dests()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_dests.md): Returns the list of Value objects representing the destination(s) of the instruction. This function returns the list to accommodate cases like 'a= b = c= 5', where the destinations are \\\[a, b, c\]. - \[Instruction.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_parent.md): Returns parent function/modifier of the instruction. - \[Instruction.get\\\_value()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.get\_value.md): Returns the Instruction's Value object. - \[Instruction.is\\\_break()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_break.md): Returns True if the instruction is break instruction, otherwise returns False. - \[Instruction.is\\\_call()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_call.md): Returns True if the instruction is call instruction, otherwise returns False. - \[Instruction.is\\\_catch()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_catch.md): Returns True if the instruction is catch instruction in a try-catch block, otherwise returns False. - \[Instruction.is\\\_cmp()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_cmp.md): Returns True if the instruction is a comparison instruction i.e performing comparison operation/s using operators like >, <, == etc.., otherwise returns False. - \[Instruction.is\\\_continue()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_continue.md): Returns True if the instruction is CONTINUE instruction, otherwise returns False. - \[Instruction.is\\\_end\\\_assembly()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_end\_assembly.md): Returns true if the instruction is end\\\_assembly instruction, otherwise returns false. - \[Instruction.is\\\_end\\\_if()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_end\_if.md): Returns true if the instruction is end\\\_if instruction, otherwise returns false. - \[Instruction.is\\\_end\\\_loop()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_end\_loop.md): Returns true if the instruction is end\\\_loop instruction, otherwise returns false. - \[Instruction.is\\\_entry\\\_point()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_entry\_point.md): Returns true if the instruction is entry\\\_point instruction, otherwise returns false. - \[Instruction.is\\\_expression()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_expression.md): Returns true if the instruction is an expression instruction, otherwise returns false. - \[Instruction.is\\\_from\\\_assembly()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_from\_assembly.md): Returns true if the instruction is from assembly block, otherwise returns false. - \[Instruction.is\\\_if()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_if.md): Returns true if the instruction is an if instruction, otherwise returns false. - \[Instruction.is\\\_if\\\_loop()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_if\_loop.md): Returns true if the instruction is if\\\_loop instruction, otherwise returns false. - \[Instruction.is\\\_new\\\_contract()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_new\_contract.md): Returns true if the instruction creates a new contract. - \[Instruction.is\\\_placeholder()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_placeholder.md): Returns true if the instruction is placeholder instruction, otherwise returns false. A placeholder instruction is generally found in modifiers - \[Instruction.is\\\_return()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_return.md): Returns true if the instruction is return instruction, otherwise returns false. - \[Instruction.is\\\_start\\\_assembly()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_start\_assembly.md): Returns true if the instruction is start assembly instruction, otherwise returns false. - \[Instruction.is\\\_start\\\_loop()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_start\_loop.md): Returns true if the instruction is start\\\_loop instruction, otherwise returns false. - \[Instruction.is\\\_storage\\\_read()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_storage\_read.md): Returns True if the instruction is a storage read instruction, else returns False. A storage read instruction just reads the value of a state variable without making any changes to it - \[Instruction.is\\\_storage\\\_write()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_storage\_write.md): Returns True if the instruction is a storage write instruction, else returns False. A storage write instruction writes to the state variable of a contract - \[Instruction.is\\\_throw()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_throw.md): Returns True if the instruction is throw instruction, otherwise returns False. - \[Instruction.is\\\_try()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.is\_try.md): Returns True if the instruction is Try instruction in a try-catch block, otherwise returns False. - \[Instruction.next\\\_block()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.next\_block.md): Returns the list of instructions following the current instruction till the branching point. - \[Instruction.next\\\_instruction()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.next\_instruction.md): Returns a list of immediate following instructions in the control flow graph. - \[Instruction.next\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.next\_instructions.md): Returns a list of all instructions following the current node in the control flow graph. - \[Instruction.next\\\_instructions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.next\_instructions\_recursive.md): Returns the set of all instructions following the current node in the control flow graph. - \[Instruction.previous\\\_instruction()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.previous\_instruction.md): Returns a list of immediate previous instructions in the control flow graph. - \[Instruction.previous\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.previous\_instructions.md): Returns a list of the previous instructions of the current node in the control flow graph. - \[Instruction.previous\\\_instructions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.previous\_instructions\_recursive.md): Returns the set of all instructions preceding the current node in the control flow graph. - \[Instruction.procedure\\\_graph\](https://docs.r.xyz/glider-ide/api/instruction/instruction.procedure\_graph.md) - \[Instruction.procedure\\\_graph\\\_node\](https://docs.r.xyz/glider-ide/api/instruction/instruction.procedure\_graph\_node.md): Returns corresponding node in procedure graph. - \[Instruction.source\\\_code()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.source\_code.md): Returns the source code of the instruction - \[Instruction.source\\\_lines()\](https://docs.r.xyz/glider-ide/api/instruction/instruction.source\_lines.md): Returns the corresponding source line numbers of a instruction - \[BreakInstruction\](https://docs.r.xyz/glider-ide/api/instruction/breakinstruction.md): The class extends the Instruction class and represents break instruction. - \[CatchInstruction\](https://docs.r.xyz/glider-ide/api/instruction/catchinstruction.md): The class extends the Instruction class and represents catch instruction. - \[CatchInstruction.get\\\_block\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instruction/catchinstruction/catchinstruction.get\_block\_instructions.md): Returns all instructions from the catch block - \[ContinueInstruction\](https://docs.r.xyz/glider-ide/api/instruction/continueinstruction.md): The class extends the Instruction class and represents continue instruction. - \[EndAssemblyInstruction\](https://docs.r.xyz/glider-ide/api/instruction/endassemblyinstruction.md): The class extends the Instruction class and represents end\\\_assembly instruction. - \[EndIfInstruction\](https://docs.r.xyz/glider-ide/api/instruction/endifinstruction.md): The class extends the Instruction class and represents end\\\_if instruction. - \[EndLoopInstruction\](https://docs.r.xyz/glider-ide/api/instruction/endloopinstruction.md): The class extends the Instruction class and represents end\\\_loop instruction. - \[EntryPointInstruction\](https://docs.r.xyz/glider-ide/api/instruction/entrypointinstruction.md): The class extends the Instruction class and represents entry\\\_point instruction. - \[ExpressionInstruction\](https://docs.r.xyz/glider-ide/api/instruction/expressioninstruction.md): The class extends the Instruction class and represents expression instruction. - \[IfInstruction\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction.md): The class extends the Instruction class and represents if instruction, for both Solidity and assembly (yul) level. - \[IfInstruction.first\\\_false\\\_instruction()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/ifinstruction.first\_false\_instruction.md) - \[IfInstruction.first\\\_true\\\_instruction()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/ifinstruction.first\_true\_instruction.md) - \[IfInstruction.get\\\_condition()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/ifinstruction.get\_condition.md) - \[Condition\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition.md): The class represents a condition in if-statement or a ternary operator. - \[Condition.is\\\_eq()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition/condition.is\_eq.md): Returns true if it is an equality check, otherwise returns false. - \[Condition.is\\\_geq()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition/condition.is\_geq.md): Returns true if it is ">=" check, otherwise returns false. - \[Condition.is\\\_gr()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition/condition.is\_gr.md): Returns true if it is ">" check, otherwise returns false. - \[Condition.is\\\_le()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition/condition.is\_le.md): Returns true if it is "<" check, otherwise returns false. - \[Condition.is\\\_leq()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition/condition.is\_leq.md): Returns true if it is "<=" check, otherwise returns false. - \[Condition.is\\\_neq()\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition/condition.is\_neq.md): Returns true if it is a non-equality check, otherwise returns false. - \[IfLoopInstruction\](https://docs.r.xyz/glider-ide/api/instruction/ifloopinstruction.md): The class extends the Instruction class and represents if\\\_loop instruction. - \[NewVariableInstruction\](https://docs.r.xyz/glider-ide/api/instruction/newvariableinstruction.md): The class extends the Instruction class and represents new\\\_variable instruction. - \[PlaceholderInstruction\](https://docs.r.xyz/glider-ide/api/instruction/placeholderinstruction.md): The class extends the Instruction class and represents placeholder instruction. - \[ReturnInstruction\](https://docs.r.xyz/glider-ide/api/instruction/returninstruction.md): The class extends the Instruction class and represents return instruction. - \[StartAssemblyInstruction\](https://docs.r.xyz/glider-ide/api/instruction/startassemblyinstruction.md): The class extends the Instruction class and represents the start of an assembly block. - \[StartAssemblyInstruction.get\\\_block\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instruction/startassemblyinstruction/startassemblyinstruction.get\_block\_instructions.md): Returns all instructions from the assembly block - \[StartLoopInstruction\](https://docs.r.xyz/glider-ide/api/instruction/startloopinstruction.md): The class extends the Instruction class and represents start\\\_loop instruction. - \[ThrowInstruction\](https://docs.r.xyz/glider-ide/api/instruction/throwinstruction.md): The class extends the Instruction class and represents throw instruction. - \[TryInstruction\](https://docs.r.xyz/glider-ide/api/instruction/tryinstruction.md): The class extends the Instruction class and represents try instruction - \[TryInstruction.get\\\_block\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instruction/tryinstruction/tryinstruction.get\_block\_instructions.md): The method returns a list of instruction in a try block. - \[Instructions\](https://docs.r.xyz/glider-ide/api/instructions.md) - \[Instructions.CALLEES\](https://docs.r.xyz/glider-ide/api/instructions/instructions.callees.md) - \[Instructions.asm\\\_block\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.asm\_block\_instructions.md): Returns an Instructions object for the instructions that are from assembly block. - \[Instructions.break\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.break\_instructions.md): Returns an Instructions object for the 'break' instructions - \[Instructions.callables\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.callables\_recursive.md): Returns a set of Callables objects for the callables where the instructions can be executed in. - \[Instructions.calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.calls.md): Returns an Instructions object for the call instructions - \[Instruction.catch\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instruction.catch\_instructions.md): Returns an Instructions object for the 'catch' instructions - \[Instructions.continue\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.continue\_instructions.md): Returns an Instructions object for the 'continue' instructions - \[Instructions.delegate\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.delegate\_calls.md): Returns a list of all delegate call instructions. - \[Instructions.delegate\\\_calls\\\_from\\\_assembly()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.delegate\_calls\_from\_assembly.md): Returns a list of delegate call instructions from assembly. - \[Instructions.delegate\\\_calls\\\_non\\\_assembly()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.delegate\_calls\_non\_assembly.md): Returns a list of delegate call instructions from non assembly. - \[Instructions.end\\\_asm\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.end\_asm\_instructions.md): Returns an Instructions object for the 'end assembly' instructions. - \[Instructions.end\\\_if\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.end\_if\_instructions.md): Returns an Instructions object for the 'end if' instructions. - \[Instructions.end\\\_loop\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.end\_loop\_instructions.md): Returns an Instructions object for the 'end loop' instructions. - \[Instructions.entry\\\_point\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.entry\_point\_instructions.md): Returns an Instructions object for the 'entry point' instructions - \[Instructions.exec()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.exec.md): Executes the formed query and returns the list of Instruction objects - \[Instructions.expression\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.expression\_instructions.md): Returns an Instructions object for the 'expression' instructions. - \[Instructions.external\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.external\_calls.md): Returns the Instructions object withe all the external call instructions. - \[Instructions.functions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.functions.md): Returns Functions object for the functions of the instructions. Note: The function will return parent functions for those instructions that belong to a function, not to a modifier. To get parent modif - \[Instructions.functions\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.functions\_recursive.md): Returns Functions object for the functions where the instructions can be executed in. - \[Instructions.high\\\_level\\\_static\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.high\_level\_static\_calls.md): Returns a list of all high level static call instructions. - \[Instructions.if\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.if\_instructions.md): Returns an Instructions object for the 'if' instructions. - \[Instructions.if\\\_loop\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.if\_loop\_instructions.md): Returns an Instructions object for the 'if loop' instructions. - \[Instructions.internal\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.internal\_calls.md): Returns a list of all internal call instructions if the parameter is skipped. Otherwise, returns call instructions of corresponding type (internal, public or private) - \[Instructions.library\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.library\_calls.md): Returns a list of all library call instructions. - \[Instructions.low\\\_level\\\_external\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.low\_level\_external\_calls.md): Returns a list of the functions calls instructions - \[Instructions.low\\\_level\\\_static\\\_calls()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.low\_level\_static\_calls.md): Returns a list of all low level static call instructions. - \[Instructions.modifiers()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.modifiers.md) - \[Instructions.modifiers\\\_recursive()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.modifiers\_recursive.md): Returns Functions object for the functions where the instructions can be executed in. - \[Instructions.new\\\_contract\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.new\_contract\_instructions.md): Returns an Instructions object for the instructions that create new contract. - \[Instructions.new\\\_variable\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.new\_variable\_instructions.md): Returns an Instructions object for the new variable creation instructions - \[Instructions.placeholder\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.placeholder\_instructions.md): Returns an Instructions object for the Modifier placeholder instructions. - \[Instructions.return\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.return\_instructions.md) - \[Instructions.start\\\_asm\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.start\_asm\_instructions.md): Returns an Instructions object for the 'start assembly' instructions. - \[Instructions.start\\\_loop\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.start\_loop\_instructions.md): Returns an Instructions object for the 'start loop' instructions. - \[Instructions.throw\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.throw\_instructions.md): Returns an Instructions object for the 'throw' instructions - \[Instructions.try\\\_instructions()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.try\_instructions.md): Returns an Instructions object for the 'try' instructions. - \[Instructions.with\\\_all\\\_callee\\\_names()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_all\_callee\_names.md): Adds a filter to get Instructions that have callees with all the given names. - \[Instructions.with\\\_callee\\\_name()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_callee\_name.md): Adds a filter to get Instructions that call a function with the given name. - \[Instructions.with\\\_callee\\\_name\\\_prefix()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_callee\_name\_prefix.md): Adds a filter to get instructions that call a function whose name has the given prefix. - \[Instructions.with\\\_callee\\\_name\\\_suffix()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_callee\_name\_suffix.md): Adds a filter to get instructions that call a function whose name has the given suffix. - \[Instructions.with\\\_callee\\\_signature()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_callee\_signature.md): Adds a filter to get instructions that call a function with the given signature. - \[Instructions.with\\\_globals()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_globals.md): Filter instructions satisfying the given expr of global variables. - \[Instructions.with\\\_one\\\_of\\\_callee\\\_names()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_one\_of\_callee\_names.md): Adds a filter to get Instructions that call a function with the given signature. - \[Instructions.with\\\_operators()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_operators.md): Filter instructions satisfying the given expr of operators. - \[Instructions.without\\\_callee\\\_name()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.without\_callee\_name.md): Adds a filter to get instructions that don't call a function with the given name. - \[Instructions.without\\\_callee\\\_names()\](https://docs.r.xyz/glider-ide/api/instructions/instructions.without\_callee\_names.md): Adds a filter to get instructions that don't call a function with the given name. - \[Value\](https://docs.r.xyz/glider-ide/api/value.md) - \[Call\](https://docs.r.xyz/glider-ide/api/value/call.md) - \[Call.signature\](https://docs.r.xyz/glider-ide/api/value/call/call.signature.md): Returns the called function signature - \[Call.name\](https://docs.r.xyz/glider-ide/api/value/call/call.name.md): Returns the called function name - \[Call.get\\\_contract\\\_name()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_contract\_name.md): Returns the name of the contract in which the called function is - \[Call.get\\\_arg()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_arg.md): Returns the i-th argument of called function - \[Call.get\\\_args()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_args.md): Returns the arguments of the call, or empty array if the call has no arguments. - \[Call.get\\\_call\\\_gas()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_call\_gas.md): Returns Value representing the gas-parameter used in the external calls. - \[Call.get\\\_call\\\_qualifier()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_call\_qualifier.md): Returns the call's qualifier (target) is exists - \[Call.get\\\_call\\\_salt()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_call\_salt.md): Return the value representing the salt parameter of the contract creation call - \[Call.get\\\_call\\\_type()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_call\_type.md): Returns the type of the call - \[Call.get\\\_call\\\_value()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_call\_value.md): Returns the Value representing the "value" (ether sent) during the external call - \[Call.get\\\_contract\\\_name()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_contract\_name-1.md): Returns the name of the contract in which the called function is. - \[Call.get\\\_function()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_function.md): Returns the function that is being called, if exists, otherwise returns NoneObject - \[Call.get\\\_special\\\_params()\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_special\_params.md): Return the dict representing the special params of the call - \[Call.kv\\\_parameters()\](https://docs.r.xyz/glider-ide/api/value/call/call.kv\_parameters.md): Returns the arguments of the call in key/value format - \[CallType\](https://docs.r.xyz/glider-ide/api/value/call/calltype.md) - \[CallType.EVENT\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.event.md): EVENT: str = 'event' - \[CallType.EXTERNAL\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.external.md): EXTERNAL: str = 'external' - \[CallType.INTERNAL\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.internal.md): INTERNAL: str = 'internal' - \[CallType.LIBRARY\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.library.md): LIBRARY: str = 'library' - \[CallType.LOW\\\_LEVEL\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.low\_level.md): LOW\\\_LEVEL: str = 'low\\\_level' - \[CallType.NEW\\\_ARR\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.new\_arr.md): NEW\\\_ARR: str = 'new\\\_arr' - \[CallType.NEW\\\_ELEMENTARY\\\_TYPE:\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.new\_elementary\_type.md): NEW\\\_ELEMENTARY\\\_TYPE: str = 'new\\\_elementary\\\_type' - \[CallType.NEW\\\_STRUCT\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.new\_struct.md): NEW\\\_STRUCT: str = 'new\\\_struct' - \[CallType.PRIVATE\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.private.md): PRIVATE: str = 'private' - \[CallType.PUBLIC\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.public.md): PUBLIC: str = 'public' - \[CallType.SOLIDITY\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.solidity.md): SOLIDITY: str = 'solidity' - \[CallType.TYPE\\\_CONVERSION\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.type\_conversion.md): TYPE\\\_CONVERSION: str = 'type\\\_conversion' - \[CallType.UNKNOWN\](https://docs.r.xyz/glider-ide/api/value/call/calltype/calltype.unknown.md): UNKNOWN: str = 'unknown' - \[IndexAccess\](https://docs.r.xyz/glider-ide/api/value/indexaccess.md) - \[IndexAccess.get\\\_index()\](https://docs.r.xyz/glider-ide/api/value/indexaccess/indexaccess.get\_index.md): Returns the index value of the index access. - \[IndexAccess.get\\\_sequence()\](https://docs.r.xyz/glider-ide/api/value/indexaccess/indexaccess.get\_sequence.md): Returns the sequence value of the index access. - \[Literal\](https://docs.r.xyz/glider-ide/api/value/literal.md) - \[Literal.type\](https://docs.r.xyz/glider-ide/api/value/literal/literal.type.md): Returns the type of the literal. - \[Literal.value\](https://docs.r.xyz/glider-ide/api/value/literal/literal.value.md): Returns the value of the literal. - \[Operator\](https://docs.r.xyz/glider-ide/api/value/operator.md) - \[Operator.get\\\_operator()\](https://docs.r.xyz/glider-ide/api/value/operator/operator.get\_operator.md): Retrieves the OperatorType of the operator. - \[OperatorType\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype.md) - \[OperatorType.ADDITION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.addition.md) - \[OperatorType.AND\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.and.md) - \[OperatorType.ANDAND\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.andand.md) - \[OperatorType.ASSIGN\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign.md) - \[OperatorType.ASSIGN\\\_ADDITION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_addition.md) - \[OperatorType.ASSIGN\\\_AND\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_and.md) - \[OperatorType.ASSIGN\\\_CARET\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_caret.md) - \[OperatorType.ASSIGN\\\_DIVISION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_division.md) - \[OperatorType.ASSIGN\\\_LEFT\\\_SHIFT\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_left\_shift.md) - \[OperatorType.ASSIGN\\\_MODULO\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_modulo.md) - \[OperatorType.ASSIGN\\\_MULTIPLICATION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_multiplication.md) - \[OperatorType.ASSIGN\\\_OR\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_or.md) - \[OperatorType.ASSIGN\\\_RIGHT\\\_SHIFT\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_right\_shift.md) - \[OperatorType.ASSIGN\\\_SUBTRACTION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.assign\_subtraction.md) - \[OperatorType.CARET\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.caret.md) - \[OperatorType.DELETE\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.delete.md) - \[OperatorType.DIVISION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.division.md) - \[OperatorType.EQUAL\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.equal.md) - \[OperatorType.GREATER\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.greater.md) - \[OperatorType.GREATER\\\_EQUAL\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.greater\_equal.md) - \[OperatorType.INDEX\\\_ACCESS\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.index\_access.md) - \[OperatorType.LEFT\\\_SHIFT\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.left\_shift.md) - \[OperatorType.LESS\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.less.md) - \[OperatorType.LESS\\\_EQUAL\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.less\_equal.md) - \[OperatorType.MINUS\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.minus.md) - \[OperatorType.MINUSMINUS\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.minusminus.md) - \[OperatorType.MODULO\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.modulo.md) - \[OperatorType.MULTIPLICATION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.multiplication.md) - \[OperatorType.NOT\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.not.md) - \[OperatorType.NOT\\\_EQUAL\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.not\_equal.md) - \[OperatorType.OR\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.or.md) - \[OperatorType.OROR\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.oror.md) - \[OperatorType.PLUS\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.plus.md) - \[OperatorType.PLUSPLUS\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.plusplus.md) - \[OperatorType.POWER\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.power.md) - \[OperatorType.RIGHT\\\_SHIFT\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.right\_shift.md) - \[OperatorType.SUBTRACTION\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.subtraction.md) - \[OperatorType.TILD\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.tild.md) - \[OperatorType.UNKNOWN\\\_OPERATOR\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype/operatortype.unknown\_operator.md) - \[Value\](https://docs.r.xyz/glider-ide/api/value/value.md) - \[Value.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/value/value/value.backward\_df.md): Returns a list of all previous instructions/arguments of the current point in the data flow graph. - \[Value.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/value/value.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[Value.expression\](https://docs.r.xyz/glider-ide/api/value/value/value.expression.md): Returns the value's expression. - \[Value.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/value/value/value.forward\_df.md): Returns a list of all instructions following the current point in the current data flow graph - \[Value.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/value/value.forward\_df\_recursive.md): Returns a list of all instructions following the current point in the current data flow graph and outside of that - \[Value.get\\\_arg\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_arg\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is an argument variable. - \[Value.get\\\_callee\\\_values()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_callee\_values.md): Returns the list of Call values of current value - \[Value.get\\\_global\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_global\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is a GlobalVariable. - \[Value.get\\\_local\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_local\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is a LocalVariable. - \[Value.get\\\_state\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_state\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is a StateVariable. - \[Value.get\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_vars.md): Returns a list of all VarValue objects of current value. - \[Value.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/value/value/value.has\_global\_df.md): Returns true when the value interacts with a global variable such as msg.sender, msg.data, etc. from inside the function. - \[Value.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/value/value.has\_global\_df\_recursive.md): Returns true when the value interacts with a global variable such as msg.sender, msg.data, etc. across multiple functions. - \[Value.instruction\](https://docs.r.xyz/glider-ide/api/value/value/value.instruction.md): Returns the instruction in which the value is. - \[Value.is\\\_main\\\_value()\](https://docs.r.xyz/glider-ide/api/value/value/value.is\_main\_value.md): Returns true if the value doesn't have a parent value, false otherwise - \[Value.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/value/value/value.is\_tainted.md): Returns whether the value is tainted. - \[Value.parent\\\_value\](https://docs.r.xyz/glider-ide/api/value/value/value.parent\_value.md) - \[Value.source\\\_code()\](https://docs.r.xyz/glider-ide/api/value/value/value.source\_code.md) - \[Value.type\](https://docs.r.xyz/glider-ide/api/value/value/value.type.md): Returns the type of the value - \[ValueExpression\](https://docs.r.xyz/glider-ide/api/value/valueexpression.md) - \[ValueExpression.get\\\_dest()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_dest.md): Returns the Value object representing the leftmost destination of the instruction - \[ValueExpression.get\\\_dests()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_dests.md): Returns the list of Value objects representing the destination(s) of the value expression. This function returns the list to accommodate cases like'a = b = c= 5',where the destinations are\\\[a, b, c\]. - \[ValueExpression.get\\\_component()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_component.md): Returns the value expression's i-th component - \[ValueExpression.get\\\_components()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_components.md): Returns the value expression's components - \[ValueExpression.get\\\_assignment\\\_operator()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_assignment\_operator.md): Returns the Operator that assigned the variable in the variable assignment. - \[ValueExpression.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.has\_global\_df.md): Returns true if the value expression has a dependency on external variables in the current data flow graph, false otherwise. - \[ValueExpression.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.has\_global\_df\_recursive.md): Returns true if the value expression has a dependency on external variables in the current data flow graph and outside of that, false otherwise. - \[ValueExpression.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.is\_tainted.md): Returns whether the value expression is tainted. - \[Point\](https://docs.r.xyz/glider-ide/api/point.md) - \[Point\](https://docs.r.xyz/glider-ide/api/point/point.md): Abstract base class representing a point in a data flow graph. - \[Point.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.backward\_df.md): Returns the list of all previous points of the current point in the data flow graph. - \[Point.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[Point.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df.md): Returns the list of all points following the current point in the current data flow graph. - \[Point.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[Point.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.has\_global\_df.md): Returns true if the point has a dependency on external variables in the current data flow graph, false otherwise. - \[Point.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.has\_global\_df\_recursive.md): Returns true if the point has a dependency on external variables in the current data flow graph and outside of that, false otherwise. - \[Point.get\\\_all\\\_tainted\\\_paths\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_all\_tainted\_paths\_affecting\_point.md): Returns all paths containing tainted data that influence the point. This includes not only tainted paths within the current function but also extends to paths belonging to other functions. - \[Point.get\\\_tainted\\\_path\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_tainted\_path\_affecting\_point.md): Returns the first encountered path containing tainted data that influence the point, if it exists. Otherwise, returns an empty tuple. - \[Point.get\\\_tainted\\\_sources\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_tainted\_sources\_affecting\_point.md): Returns all tainted sources that influence the point. This includes not only tainted sources within the current function but also extends to sources belonging to other functions. - \[Point.df\\\_reaching\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/point/point/point.df\_reaching\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument to which data flow reaches from the point (it may reach through a chain of calls). - \[Point.df\\\_reaches\\\_from\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/point/point/point.df\_reaches\_from\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element the argument number from which data flow reaches to the point (it may reach through a chain of calls). - \[Point.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/point/point/point.is\_tainted.md): Returns whether the point is tainted. - \[ArgumentPoint\](https://docs.r.xyz/glider-ide/api/point/argumentpoint.md): Base class ExternalPoint - \[ArgumentPoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/argumentpoint/argumentpoint.get\_variable.md): Return object of argument variable - \[ArgumentPoints\](https://docs.r.xyz/glider-ide/api/point/argumentpoints.md): Base class: object - \[ArgumentsPoints.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentspoints.with\_memory\_type.md): Returns the list of ArgumentPoints having specified memory type. - \[ArgumentPoints.with\\\_name()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.with\_name.md): Returns the list of ArgumentPoints having specified name. - \[ArgumentPoints.with\\\_type()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.with\_type.md): Returns the list of ArgumentPoints having specified type. - \[ArgumentPoints.list()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.list.md): Convert ArgumentPoints to List\\\[ArgumentPoint\] - \[ExternalPoint\](https://docs.r.xyz/glider-ide/api/point/externalpoint.md): Base class: Point - \[ExternalPoint.get\\\_address()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_address.md): Retrieves the address of the external point. - \[ExternalPoint.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_parent.md): Returns parent function/modifier of the ExternalPoint. - \[ExternalPoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_variable.md): Abstract method that returns object of variable - \[ExternalPoint.source\\\_code()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.source\_code.md): Returns corresponding node in procedure graph. - \[GlobalPoint\](https://docs.r.xyz/glider-ide/api/point/globalpoint.md): Base class: ExternalPoint - \[GlobalPoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/globalpoint/globalpoint.get\_variable.md): Abstract method that returns object of variable - \[StatePoint\](https://docs.r.xyz/glider-ide/api/point/statepoint.md): Base class: ExternalPoint - \[StatePoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/statepoint/statepoint.get\_variable.md): Method that returns object of variable - \[VarValue\](https://docs.r.xyz/glider-ide/api/point/varvalue.md): Base class: Value, Point - \[VarValue.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df.md): Returns the list of all previous points of the current point in the data flow graph. - \[VarValue.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[VarValue.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df.md): Returns the list of all points following the current point in the current data flow graph. - \[VarValue.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[VarValue.get\\\_defining\\\_points()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_defining\_points.md): Returns the points which define the variable. - \[VarValue.get\\\_object\\\_of\\\_var()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_object\_of\_var.md): Returns corresponding object of the variable. - \[VarValue.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_parent.md): Returns parent function/modifier of the variable. - \[VarValue.is\\\_depending\\\_on\\\_any\\\_argument()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.is\_depending\_on\_any\_argument.md): Returns whether the object depends on any of its function's arguments. - \[VarValue.type\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.type.md): Returns the variable's type. - \[Variables\](https://docs.r.xyz/glider-ide/api/variables.md) - \[Variable\](https://docs.r.xyz/glider-ide/api/variables/variable.md) - \[Variable.canonical\\\_name\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.canonical\_name.md): Returns the canonical name of the variable. - \[Variable.data\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.data.md): Returns the canonical name of the variable. - \[Variable.name\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.name.md): Returns the name of the variable. - \[Variable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.source\_code.md): Returns source code of variable - \[Variable.type\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.type.md): Returns the type of the variable. - \[StateVariables\](https://docs.r.xyz/glider-ide/api/variables/statevariables.md) - \[StateVariables\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables.md): The aim of this class is to filter state variables with some properties. - \[StateVariables.exec()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.exec.md): Executes the formed query and returns the list of StateVariable objects. - \[StateVariables.with\\\_all\\\_properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_all\_properties.md): Adds a filter to get state variables that have all given properties - \[StateVariables.with\\\_one\\\_property()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_one\_property.md): Adds a filter to get state variables that at least have one of the given properties. - \[StateVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_type.md): Adds a filter to get state variables that have the given type. - \[StateVariable.with\\\_name()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariable.with\_name.md): Adds a filter to get state variables with the given name - \[StateVariableProp\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariableprop.md): Class that represents the properties of StateVariables - \[StateVariable\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable.md): This class represents a state variable. - \[StateVariable.contract()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.contract.md): Returns state variable's parent contract if it exists. - \[StateVariable.is\\\_accessible()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_accessible.md): Returns true if the state variable is accessible in current contract, otherwise returns false. The state variable isn't accessible in current contract if it is a private inherited state variable - \[StateVariable.is\\\_constant()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_constant.md): Returns true if the state variable is constant, otherwise returns false. - \[StateVariable.is\\\_immutable()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_immutable.md): Returns true if the state variable is immutable, otherwise returns false. - \[StateVariable.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_internal.md): Returns true if the visibility of the state variable is internal, otherwise returns false. - \[StateVariable.is\\\_private()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_private.md): Returns true if the visibility of the state variable is private, otherwise returns false. - \[StateVariable.is\\\_public()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_public.md): Returns true if the visibility of the state variable is public, otherwise returns false. - \[StateVariable.properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.properties.md): Returns the list of the state variable's properties. - \[StateVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.source\_code.md): Returns the source code of the state variable. - \[LocalVariables\](https://docs.r.xyz/glider-ide/api/variables/localvariables.md): The class represents the list of local variables. - \[LocalVariables\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables.md): The class represents the list of local variables. - \[LocalVariables.list()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.list.md): Returns the list of all local variables. - \[LocalVariables.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_memory\_type.md): Returns the list of local variables having specified memory type. - \[LocalVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_type.md): Returns the list of local variables having specified type. - \[LocalVariable\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable.md): The class represents a single local variable. - \[LocalVariable.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.get\_parent.md): Returns parent function/modifier of the local variable. - \[LocalVariable.index\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.index.md): Returns the index of the local variable in relation to the function scope. - \[LocalVariable.memory\\\_property\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.memory\_property.md): Returns the memory type of the local variable. - \[LocalVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.source\_code.md): Returns the source code of the local variable. - \[GlobalVariables\](https://docs.r.xyz/glider-ide/api/variables/globalvariables.md): Classes that describe Solidity global variables - \[ArgumentVariable\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable.md): The class represents a single argument variable. - \[ArgumentVariable.index\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.index.md): Returns the position of the argument variable in the function signature. The index represents the argument variable's position, starting from 0. - \[ArgumentVariable.data\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.data.md): Returns detailed information about the argument variable. - \[ArgumentVariable.memory\\\_type\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.memory\_type.md): Returns the memory type of the argument variable. - \[ArgumentVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.source\_code.md): Returns the source code of the argument variable. - \[StateVariable\](https://docs.r.xyz/glider-ide/api/statevariable.md): This class represents a single state variable. - \[StateVariable.contract()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.contract.md): Returns state variable's parent contract if it exists. - \[StateVariable.is\\\_constant()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_constant.md): Returns true if the state variable is constant, otherwise returns false. - \[StateVariable.is\\\_immutable()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_immutable.md): Returns true if the state variable is immutable, otherwise returns false. - \[StateVariable.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_internal.md): Returns true if the visibility of the state variable is internal, otherwise returns false. - \[StateVariable.is\\\_private()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_private.md): Returns true if the visibility of the state variable is private, otherwise returns false. - \[StateVariable.is\\\_public()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_public.md): Returns true if the visibility of the state variable is public, otherwise returns false. - \[StateVariable.name()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.name.md): Returns the state variable's name. - \[StateVariable.properties()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.properties.md): Returns the list of the state variable's properties. - \[StateVariables\](https://docs.r.xyz/glider-ide/api/statevariables.md): The aim of this class is to query and filter state variables with specific properties. - \[StateVariables.exec()\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.exec.md): Executes the formed query and returns a list of StateVariable objects. - \[StateVariables.with\\\_all\\\_properties()\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_all\_properties.md): Adds a filter to get state variables that have all given properties. - \[StateVariables.with\\\_name()\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_name.md): Adds a filter to get state variables with the given name. - \[StateVariables.with\\\_one\\\_property()\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_one\_property.md): Adds a filter to get state variables that at least have one of the given properties. - \[StateVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_type.md): Adds a filter to get state variables that have the given type. - \[StateVariableProp\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop.md): State variable properties. - \[StateVariableProp.CONSTANT\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.constant.md): StateVariableProp.CONSTANT: str = 'constant' - \[StateVariableProp.IMMUTABLE\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.immutable.md): StateVariableProp.IMMUTABLE: str = 'immutable' - \[StateVariableProp.INTERNAL\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.internal.md): StateVariableProp.INTERNAL: str = 'internal' - \[StateVariableProp.PRIVATE\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.private.md): StateVariableProp.PRIVATE: str = 'private' - \[StateVariableProp.PUBLIC\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.public.md): StateVariableProp.PUBLIC: str = 'public' - \[Struct\](https://docs.r.xyz/glider-ide/api/struct.md): The class represents a single struct object. - \[Struct.address\](https://docs.r.xyz/glider-ide/api/struct/struct.address.md): Returns the address of the struct. - \[Struct.data\](https://docs.r.xyz/glider-ide/api/struct/struct.data.md): Returns the data of the struct. - \[Struct.fields\](https://docs.r.xyz/glider-ide/api/struct/struct.fields.md): Returns the fields of the struct. - \[Struct.name\](https://docs.r.xyz/glider-ide/api/struct/struct.name.md): Returns the name of the struct. - \[Struct.source\\\_code()\](https://docs.r.xyz/glider-ide/api/struct/struct.source\_code.md): Returns the source code of the struct. - \[StructField\](https://docs.r.xyz/glider-ide/api/structfield.md): This class represents a single struct field object. - \[StructField.name\](https://docs.r.xyz/glider-ide/api/structfield/structfield.name.md): Returns the name of the struct field. - \[StructField.type\](https://docs.r.xyz/glider-ide/api/structfield/structfield.type.md): Returns the type of the struct field. - \[Structs\](https://docs.r.xyz/glider-ide/api/structs.md): The aim of this class is to filter structs with some properties. - \[Structs.exec()\](https://docs.r.xyz/glider-ide/api/structs/structs.exec.md): Executes the formed query and returns the list of Struct objects. - \[LocalVariable\](https://docs.r.xyz/glider-ide/api/localvariable.md): The class represents a single local variable. Local variables are defined inside functions and modifiers. - \[LocalVariable.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/localvariable/localvariable.get\_parent.md): Returns parent function/modifier of the local variable. - \[LocalVariable.memory\\\_type\](https://docs.r.xyz/glider-ide/api/localvariable/localvariable.memory\_type.md): Returns the memory type of the local variable. - \[LocalVariable.type\](https://docs.r.xyz/glider-ide/api/localvariable/localvariable.type.md): Returns the type of the local variable. - \[LocalVariables\](https://docs.r.xyz/glider-ide/api/localvariables.md): The class represents the list of local variables. - \[LocalVariables.list()\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.list.md): Returns the list of all local variables. - \[LocalVariables.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.with\_memory\_type.md): Returns the list of local variables having specified memory type. - \[LocalVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.with\_type.md): Returns the list of local variables having specified type. - \[Variable\](https://docs.r.xyz/glider-ide/api/variable.md): The class represents a single variable. All other \\\*Variable classes inherit from this class. - \[Variable.name\](https://docs.r.xyz/glider-ide/api/variable/variable.name.md): Returns the name of the variable. - \[Variable.canonical\\\_name\](https://docs.r.xyz/glider-ide/api/variable/variable.canonical\_name.md): Returns the canonical name of the variable. - \[Variable.type\](https://docs.r.xyz/glider-ide/api/variable/variable.type.md): Returns the type of the variable - \[Internal\](https://docs.r.xyz/glider-ide/api/internal.md) - \[CallGraph\](https://docs.r.xyz/glider-ide/api/internal/callgraph.md) - \[CallGraph.all\\\_nodes()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.all\_nodes.md): Returns the list of all call nodes. - \[CallGraph.get\\\_corresponding\\\_node\\\_for\\\_function()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.get\_corresponding\_node\_for\_function.md): Returns the node which represents the given function. - \[CallGraph.nodes()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.nodes.md): Returns the map of all call nodes. The key of the map is the id of a node. - \[CallGraph.with\\\_name()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name.md): Returns a list of call nodes whose corresponding function has the specified name. - \[CallGraph.with\\\_name\\\_not()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name\_not.md): Returns a list of call nodes whose corresponding function doesn't have the specified name. - \[CallGraph.with\\\_name\\\_prefix()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name\_prefix.md): Returns the list of call nodes whose corresponding function name has the specified suffix. - \[CallGraph.with\\\_name\\\_suffix()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name\_suffix.md): Returns the list of call nodes whose corresponding function name has the specified suffix. - \[CallGraph.with\\\_names()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_names.md): Returns the list of call nodes whose corresponding function has the specified name. - \[CallNode\](https://docs.r.xyz/glider-ide/api/internal/callnode.md): The class represents a single node in a call graph. - \[CallNode.callable()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callable.md): Returns corresponding callable. - \[CallNode.callable\\\_name()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callable\_name.md): Returns corresponding callable name. - \[CallNode.callee\\\_functions()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callee\_functions.md): Returns Functions object for the functions that are called from the current node corresponding function. - \[CallNode.callee\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callee\_modifiers.md): Returns Modifiers object for the modifiers that are called from the current node corresponding callable. - \[CallNode.callees()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callees.md): Returns a list of CallNode whose corresponding functions are called from the current CallNode corresponding function. - \[CallNode.caller\\\_functions()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.caller\_functions.md): Returns Functions object for the functions that call the current node corresponding function. - \[CallNode.caller\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.caller\_modifiers.md): Returns Modifiers object for the modifiers that call the current node corresponding callable. - \[CallNode.callers()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callers.md): Returns a list of CallNodes whose corresponding functions call the current node's corresponding function. - \[CallNode.callees\\\_recursive()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callees\_recursive.md): Returns all nodes corresponding the callees of the corresponding callable with the callees of those callables etc. - \[CallNode.callers\\\_recursive()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callers\_recursive.md): Returns all nodes corresponding the callers of the corresponding callable with the callers of those callables etc. - \[CallNode.is\\\_function\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.is\_function.md): Returns whether the node represents a function. - \[CallNode.is\\\_modifier\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.is\_modifier.md): Returns whether the node represents a modifier. - \[Queryable\](https://docs.r.xyz/glider-ide/api/internal/queryable.md) - \[Queryable.query\\\_aggregator\](https://docs.r.xyz/glider-ide/api/internal/queryable/queryable.query\_aggregator.md) - \[NoneObject\](https://docs.r.xyz/glider-ide/api/internal/noneobject.md) - \[NoneObject.dump\\\_into\\\_json()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.dump\_into\_json.md) - \[NoneObject.instructions()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.instructions.md) - \[NoneObject.name()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.name.md) - \[Usage\](https://docs.r.xyz/glider-ide/usage.md): This page describes how to use Glider interface and its features - \[Glider Usage\](https://docs.r.xyz/glider-ide/glider-usage.md): This page explains how the Glider UI works and what features it has - \[Roadmap\](https://docs.r.xyz/glider-ide/roadmap.md): This page describes the current functionality and future development milestones. - \[Comparison with other tools\](https://docs.r.xyz/glider-ide/comparison-with-other-tools.md): Glider, Semgrep, Solgrep, SAST - \[Limitations\](https://docs.r.xyz/glider-ide/limitations.md): This page describes limitations implemented on query execution. - \[Changelog\](https://docs.r.xyz/glider-ide/changelog.md): Page to follow the updates on Glider engine ## Glider API - \[Overview\](https://docs.r.xyz/glider-api/overview.md) - \[Risks Breakdown\](https://docs.r.xyz/glider-api/risks-breakdown.md) - \[Trust Score\](https://docs.r.xyz/glider-api/trust-score.md) - \[Supported Chains\](https://docs.r.xyz/glider-api/supported-chains.md) - \[FAQ\](https://docs.r.xyz/glider-api/faq.md): Below you'll find answers to the most common questions about how the API works, its use cases, supported features, and integration details. - \[API Documentation\](https://docs.r.xyz/glider-api/enterprise/api-documentation.md) - \[API Documentation\](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation.md)
---
# Glider introduction | Glider IDE | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-ide/glider-introduction.md)
.
[Glider](https://glide.r.xyz/)
is a code query engine designed to run variant and data analysis on smart contracts by providing a framework that gives anyone the ability to query contract code as one would do with data.
The researcher writes a query describing a scenario of code they want to match and runs it against any type of codebase; specifically, now, it can be run against whole blockchains that are integrated into the system.
Example of a query:
Copy
from glider import *
def query():
# iterate over all of the instructions in the blockchain
# and find the ones that call selfdestruct()
instructions = Instructions().with_callee_function_name('selfdestruct').exec(100)
return instructions
An example output (from Kovan testnet):
Copy
{
"contract":"0xcFd05BebB84787EE2EfB2eA633981E44d754485d"
"contract_name":"AdminAuth"
"sol_function":
function kill() public onlyAdmin {
selfdestruct(payable(msg.sender));
}
"sol_instruction":
selfdestruct(payable(msg.sender))
}
This is a playbook example; in fact Glider gives the ability to describe much more complex scenarios (such as traversing CFG/DFG graphs) in smart contract code and to find the ones that match it.
The core concepts of the engine are scalability, distribution and reusability.
Scalable[](https://docs.r.xyz/glider-ide#scalable)
---------------------------------------------------
Glider gives the possibility to do variant analysis and security research on the scale of all open-source (verified) smart contracts across integrated EVM blockchains at breakneck speed. With its taint analysis and other advanced features, Glider represents a paradigm shift in code analysis.
Distributable[](https://docs.r.xyz/glider-ide#distributable)
-------------------------------------------------------------
Giving a unified and easy-to-use interface to code, Glider's main mission is to be a framework that can be distributed to and used by the community for greater impact on the whole industry.
One of the reasons why Glider does not introduce a new language for queries and rather uses Python syntax is to smoothen the learning curve, make it more accessible for everyone and also give more flexibility to the framework to integrate external tools.
Reusable[](https://docs.r.xyz/glider-ide#reusable)
---------------------------------------------------
The above mentioned concepts make queries reusable, and while the ability to describe scenarios is distributed, the reported queries can be reused by everyone and even be improved by other users and the community.
[NextGlider: The Basics](https://docs.r.xyz/glider-ide/glider-the-basics)
Last updated 1 year ago
* [Scalable](https://docs.r.xyz/glider-ide#scalable)
* [Distributable](https://docs.r.xyz/glider-ide#distributable)
* [Reusable](https://docs.r.xyz/glider-ide#reusable)
---
# Glider: The Basics | Glider IDE | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-ide/glider-the-basics.md)
.
What Is Glider[](https://docs.r.xyz/glider-ide/glider-the-basics#what-is-glider)
---------------------------------------------------------------------------------
Glider is a scalable code analyzer designed to help security researchers, developers, and more scan for code patterns, bugs, and code usage in Solidity contracts deployed on an EVM chain. Users can write Glider queries, using Glider API to identify the code they are looking for.
Types of Glider Queries[](https://docs.r.xyz/glider-ide/glider-the-basics#types-of-glider-queries)
---------------------------------------------------------------------------------------------------
How you write a Glider query depends on your goal. While there are many ways to write a query, queries can broadly be categorized into two types: **targeting specific vulnerabilities** or **gathering broader insights**.
### 1\. Specific Vulnerability Queries[](https://docs.r.xyz/glider-ide/glider-the-basics#id-1.-specific-vulnerability-queries)
These queries are designed to help security researchers identify specific vulnerabilities by minimizing the number of results. This is achieved by filtering out false positives and tailoring the query to target specific edge cases. A smaller, more precise result set allows researchers to quickly identify vulnerabilities.
### 2\. Code Pattern and Statistical Queries[](https://docs.r.xyz/glider-ide/glider-the-basics#id-2.-code-pattern-and-statistical-queries)
These queries focus on identifying broader trends, such as common code patterns or statistical insights. Here, the priority is not on individual results but on gathering a larger dataset to observe overall patterns. These queries are designed to be less focused on specific code scenarios and more on abstract code usage.
How Glider Works[](https://docs.r.xyz/glider-ide/glider-the-basics#how-glider-works)
-------------------------------------------------------------------------------------
The Glider language, a subset of Python, is what powers these queries. If you understand Python, then you can begin writing Glider queries.
When a user writes a Glider query, they can submit it to the Glider engine for processing. The Glider engine executes the query against the Glider database, which contains every verified (or matching one) Solidity contract deployed on-chain. If any matching results are found, they are returned to the user.
Purpose of Course[](https://docs.r.xyz/glider-ide/glider-the-basics#purpose-of-course)
---------------------------------------------------------------------------------------
This course is designed to teach beginners how to write basic Glider queries. We will go over Glider basics, such as debugging and creating filters. Then, we will cover various Glider components that will help you solidify writing Glider queries: Instructions, Functions, and Contracts.
Each section will consist of exercises that let users build a query from scratch. By the end of the section, the user will have completed a query that will identify specific code patterns or vulnerabilities. If you ever feel stuck, don’t worry! We’ve included solutions for each exercise that you can reference to get back on track or to confirm your answers.
The final section includes several bonus challenges to help you further sharpen your Glider skills. We recommend exploring these challenges after completing the other sections.
A Note on Foundational Queries[](https://docs.r.xyz/glider-ide/glider-the-basics#a-note-on-foundational-queries)
-----------------------------------------------------------------------------------------------------------------
In the following sections, each section will introduce a foundational query. We refer to these queries as "foundational" as they will serve as essential building blocks for writing future Glider queries.
Mastering foundational queries will give you a strong base for creating more advanced and customized queries as you progress toward becoming a Glider expert!
[PreviousGlider introduction](https://docs.r.xyz/glider-ide)
[NextIntro to Python](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python)
Last updated 1 year ago
* [What Is Glider](https://docs.r.xyz/glider-ide/glider-the-basics#what-is-glider)
* [Types of Glider Queries](https://docs.r.xyz/glider-ide/glider-the-basics#types-of-glider-queries)
* [1\. Specific Vulnerability Queries](https://docs.r.xyz/glider-ide/glider-the-basics#id-1.-specific-vulnerability-queries)
* [2\. Code Pattern and Statistical Queries](https://docs.r.xyz/glider-ide/glider-the-basics#id-2.-code-pattern-and-statistical-queries)
* [How Glider Works](https://docs.r.xyz/glider-ide/glider-the-basics#how-glider-works)
* [Purpose of Course](https://docs.r.xyz/glider-ide/glider-the-basics#purpose-of-course)
* [A Note on Foundational Queries](https://docs.r.xyz/glider-ide/glider-the-basics#a-note-on-foundational-queries)
---
# Intro to Python | Glider IDE | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python.md)
.
Introduction[](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python#introduction)
---------------------------------------------------------------------------------------------
Before we dive into Glider, this module will introduce you to several Python fundamental concepts needed to understand how to write Glider queries with ease. If you’re new to Python, this guide will help you build a solid foundation before moving forward.
This section is broken up into two pages:
• **The Basics**: Learn about different data types, variables, and functions.
• **Advanced Python**: Learn about classes, Glider API functions, and lists.
Throughout this section, we’ll explore Python through the lens of our foundational query - a query that illustrates key Python concepts and serves as a reference when writing other Glider queries.
If you’re already comfortable with Python, feel free to skip ahead to the [Getting Started - Basics](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-glider)
section. Otherwise, let’s get started!

[PreviousGlider: The Basics](https://docs.r.xyz/glider-ide/glider-the-basics)
[NextBasic Python](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python/basic-python)
Last updated 1 year ago
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-introduction.md).
# Glider introduction
\[Glider\](https://glide.r.xyz/) is a code query engine designed to run variant and data analysis on smart contracts by providing a framework that gives anyone the ability to query contract code as one would do with data.
The researcher writes a query describing a scenario of code they want to match and runs it against any type of codebase; specifically, now, it can be run against whole blockchains that are integrated into the system.
Example of a query:
\`\`\`python
from glider import \*
def query():
# iterate over all of the instructions in the blockchain
# and find the ones that call selfdestruct()
instructions = Instructions().with\_callee\_function\_name('selfdestruct').exec(100)
return instructions
\`\`\`
An example output (from Kovan testnet):
\`\`\`solidity
{
"contract":"0xcFd05BebB84787EE2EfB2eA633981E44d754485d"
"contract\_name":"AdminAuth"
"sol\_function":
function kill() public onlyAdmin {
selfdestruct(payable(msg.sender));
}
"sol\_instruction":
selfdestruct(payable(msg.sender))
}
\`\`\`
This is a playbook example; in fact Glider gives the ability to describe much more complex scenarios (such as traversing CFG/DFG graphs) in smart contract code and to find the ones that match it.
The core concepts of the engine are scalability, distribution and reusability.
## Scalable
Glider gives the possibility to do variant analysis and security research on the scale of all open-source (verified) smart contracts across integrated EVM blockchains at breakneck speed. With its taint analysis and other advanced features, Glider represents a paradigm shift in code analysis.
## Distributable
Giving a unified and easy-to-use interface to code, Glider's main mission is to be a framework that can be distributed to and used by the community for greater impact on the whole industry.
One of the reasons why Glider does not introduce a new language for queries and rather uses Python syntax is to smoothen the learning curve, make it more accessible for everyone and also give more flexibility to the framework to integrate external tools.
## Reusable
The above mentioned concepts make queries reusable, and while the ability to describe scenarios is distributed, the reported queries can be reused by everyone and even be improved by other users and the community.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics.md).
# Glider: The Basics
## What Is Glider
Glider is a scalable code analyzer designed to help security researchers, developers, and more scan for code patterns, bugs, and code usage in Solidity contracts deployed on an EVM chain. Users can write Glider queries, using Glider API to identify the code they are looking for.
## Types of Glider Queries
How you write a Glider query depends on your goal. While there are many ways to write a query, queries can broadly be categorized into two types: \*\*targeting specific vulnerabilities\*\* or \*\*gathering broader insights\*\*.
### 1. Specific Vulnerability Queries
These queries are designed to help security researchers identify specific vulnerabilities by minimizing the number of results. This is achieved by filtering out false positives and tailoring the query to target specific edge cases. A smaller, more precise result set allows researchers to quickly identify vulnerabilities.
### 2. Code Pattern and Statistical Queries
These queries focus on identifying broader trends, such as common code patterns or statistical insights. Here, the priority is not on individual results but on gathering a larger dataset to observe overall patterns. These queries are designed to be less focused on specific code scenarios and more on abstract code usage.
## How Glider Works
The Glider language, a subset of Python, is what powers these queries. If you understand Python, then you can begin writing Glider queries.
When a user writes a Glider query, they can submit it to the Glider engine for processing. The Glider engine executes the query against the Glider database, which contains every verified (or matching one) Solidity contract deployed on-chain. If any matching results are found, they are returned to the user.
## Purpose of Course
This course is designed to teach beginners how to write basic Glider queries. We will go over Glider basics, such as debugging and creating filters. Then, we will cover various Glider components that will help you solidify writing Glider queries: Instructions, Functions, and Contracts.
Each section will consist of exercises that let users build a query from scratch. By the end of the section, the user will have completed a query that will identify specific code patterns or vulnerabilities. If you ever feel stuck, don’t worry! We’ve included solutions for each exercise that you can reference to get back on track or to confirm your answers.
The final section includes several bonus challenges to help you further sharpen your Glider skills. We recommend exploring these challenges after completing the other sections.
## A Note on Foundational Queries
In the following sections, each section will introduce a foundational query. We refer to these queries as "foundational" as they will serve as essential building blocks for writing future Glider queries.
Mastering foundational queries will give you a strong base for creating more advanced and customized queries as you progress toward becoming a Glider expert!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python.md).
# Intro to Python
## Introduction
Before we dive into Glider, this module will introduce you to several Python fundamental concepts needed to understand how to write Glider queries with ease. If you’re new to Python, this guide will help you build a solid foundation before moving forward.
This section is broken up into two pages:
• \*\*The Basics\*\*: Learn about different data types, variables, and functions.
• \*\*Advanced Python\*\*: Learn about classes, Glider API functions, and lists.
Throughout this section, we’ll explore Python through the lens of our foundational query - a query that illustrates key Python concepts and serves as a reference when writing other Glider queries.
If you’re already comfortable with Python, feel free to skip ahead to the \[Getting Started - Basics\](/glider-ide/glider-the-basics/intro-to-glider.md) section. Otherwise, let’s get started!
---
# API Documentation | Glider API | Glider
For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt)
. This page is also available as [Markdown](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go/api-documentation.md)
.
#### Supported Blockchains[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#supported-blockchains)
**Endpoint:** GET /api/v1/chain/list
**Description:** Retrieve a list of all supported blockchains for contract analysis. Use the `chainid` value from the response when analyzing contracts.
### Endpoint[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#endpoint)
Copy
| | |
|---|---|
| **Method** | `POST` |
| **Path** | `/api/v1/portal/contract/analyze-risk` (Swagger advertises `/v1/portal/contract/analyze-risk`; the live base path is `/api`) |
| **Content-Type** | `application/json` |
| **Auth** | API key in body (`api_key`). No header-based auth. |
| **Idempotency** | Per `(user_id, address, chain_id)`. Re-calls return the cached result without a new charge. |
| **Async** | First call for a fresh contract returns **202 pending**. Client polls the same endpoint until **200 ready**. |
## Request body
```json
{
"api_key": "string",
"address": "string",
"chain_id": "string"
}
```
| Field | Type | Required | Notes |
|---|---|---|---|
| `api_key` | string | yes | Risk-API scoped access token issued in the portal. |
| `address` | string | yes | Contract address. EVM addresses must be `0x`-prefixed; non-EVM follows the chain's native format. |
| `chain_id` | string | yes | Decimal string (e.g. `"1"`, `"8453"`, `"56"`). |
Empty or malformed JSON, or any missing field, → **400 `INVALID_REQUEST_PAYLOAD`**.
### Successful responses[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#successful-responses)
Copy
Both 200 and 202 share a single envelope shape. Branch on the `status` field — only the matching subset of fields is populated.
### 200 OK — `status: "ready"`
The analysis is cached; result is returned inline. The user has been charged for this `(address, chain_id)` exactly once across the lifetime of the API key (subsequent ready-hits are free).
```json
{
"status": "ready",
"address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"chain_id": "1",
"query_name": "token-risk",
"results": { /* analyzer output, shape depends on query */ }
}
```
| Field | Type | Notes |
|---|---|---|
| `status` | enum | `"ready"` for 200. |
| `address` | string | Echoed from request. |
| `chain_id` | string | Echoed from request. |
| `query_name` | string | Identifier of the analyzer query that produced `results`. |
| `results` | object/array | Free-shape analyzer payload. Stable per `query_name`/`query_version` upstream. |
### 202 Accepted — `status: "pending"`
The contract has not been analyzed yet. `gld-service-data-analyze` enqueues a background task and returns immediately. Client should retry after `retry_after_seconds`.
```json
{
"status": "pending",
"retry_after_seconds": 30
}
```
| Field | Type | Notes |
|---|---|---|
| `status` | enum | `"pending"` for 202. |
| `retry_after_seconds` | int | Currently `30`. Client should treat as advisory (lower bound). |
A pending response is **not billed**. Billing happens on the first successful 200.
### Error responses[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#error-responses)
Copy
| HTTP | `error_code` | When |
|---|---|---|
| `400` | `INVALID_REQUEST_PAYLOAD` | Body is not JSON / required fields missing / fails struct validation. |
| `400` | `INVALID_ADDRESS_FORMAT` | Address fails chain-specific format check (passthrough from data-analyze). |
| `400` | `INVALID_QUERY_NAME` | Resolved query name is not registered (configuration issue, normally not surfaced). |
| `400` | `ANALYSIS_FAILED` | Background analysis terminally failed (`ANALYSIS_FAILED`, `ANALYSIS_TIMEOUT`, `ANALYSIS_CANCELED` from data-analyze are all surfaced under this code). |
| `400` | `INTERNAL_ERROR` | Catch-all for unclassified errors. |
| `401`/`404` | — | Returned when the supplied `api_key` is not found / not in `risk-api` scope. Status code is the verbatim passthrough from `gld-service-user`. |
| `402` | `INSUFFICIENT_FUNDS` | Billing balance is below the per-call price. User must top up. |
| `429` | `RATE_LIMIT_EXCEEDED` | Per-key rate limit exceeded (passthrough from data-analyze). |
### Error body
```json
{
"error_code": "INSUFFICIENT_FUNDS",
"message": "insufficient funds"
}
```
For payload-shape errors only `error_code` is guaranteed; for validator failures the body additionally includes `error` with the validator string. Clients should branch on `error_code` and treat `message`/`error` as human-readable detail.
### Examples[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#examples)
Copy
### cURL — fresh request (202 → poll → 200)
```bash
curl -sS -X POST \
-H 'Content-Type: application/json' \
-d '{"api_key":"sk_live_…","address":"0xdac17f958d2ee523a2206206994597c13d831ec7","chain_id":"1"}'
# → 202 {"status":"pending","retry_after_seconds":30}
# wait 30s, retry the same request
# → 200 {"status":"ready","address":"…","chain_id":"1","query_name":"token-risk","results":{…}}
```
### Polling pseudocode[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#polling-pseudocode)
Copy
```python
while True:
r = post(url, json=body)
if r.status_code == 200:
return r.json()["results"]
if r.status_code == 202:
sleep(r.json().get("retry_after_seconds", 30))
continue
raise ApiError(r.status_code, r.json())
### Behavior notes[](https://docs.r.xyz/glider-api/individuals-or-pay-as-you-go#behavior-notes)
* **Pending is free.** Polling does not deduct from the user's balance. Only the first 200 response charges.
[PreviousAPI Documentation](https://docs.r.xyz/glider-api/enterprise/api-documentation)
Last updated 3 months ago
This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://docs.r.xyz/privacy-notice/)
.
AcceptReject
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/comparison-with-other-tools.md). # Comparison with other tools There are a variety of static analysis tools that one can use for security research purposes. In this page, we will compare Glider to some of the other tools mainly used by researchers. ## Semgrep/Solgrep One of the static analysis tools that address the reusability, ease of use, and distribution aspects is Semgrep (also solgrep which is very similar). The main difference between Semgrep and Glider is that Semgrep works on the AST of the code and does not have the full potential to use Control Flow and Data Flow graphs of the code. Although Semgrep has taint mode, it is \[limited\](https://semgrep.dev/docs/writing-rules/data-flow/data-flow-overview/#design-trade-offs). It only allows declarative logic, while Glider gives the ability to write both declarative and imperative logic, making it much more flexible. While benefiting from a shallow learning curve, it is limited in its functionality. ## Slither In comparison to Semgrep, SAST tools like Slither can operate on CFG/DFG, do complex taint analysis, and so on, as well as it has well-designed IR (Intermediate Representation), moreover the Glider uses the SlithIR for intermediate representation. But the overall downside of these kind of tool is its learning curve as well as the inability to do the analysis on a scale, which affects both distribution and scalability aspects.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/limitations.md). # Limitations ## Time limit Every query has a timeout limit of 1000 seconds. ## Parallel execution count limit Every user can run only one query in parallel. ## Output limit Every query's output size is limited to 200KB. ## Python limitations Note that the Python environment is very strictly sandboxed and does not have all of the built-in functions and features.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/instructions.md). # Instructions ## Introduction In this section, we will explore Instructions, one of the most fundamental components of Solidity code. At its simplest level, an instruction represents a single line of code. Understanding how to query for instructions is essential for building a strong foundation in writing Glider queries. Mastering this concept will enable you to perform security analysis, code auditing, and code exploration with Glider. ## \*\*Section Breakdown\*\* This section is divided into two pages: \* \*\*Learning Instructions\*\* \* \*\*What Are Instructions?\*\* - Understand the basics of Solidity instructions. \* \*\*Breaking Down an Instructions Query\*\* - Analyze a practical example of an Instruction-focused query. \* \*\*Reviewing the Query Results\*\* - Review and interpret the query results. \* \*\*Exercises\*\* - Apply what you’ve learned through hands-on exercises. Let’s get started!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/bug-bounty-hunting-with-glider.md). # Bug Bounty Hunting With Glider
### Welcome to the Articles section!
Here, you’ll find in-depth guides, tips, and insights on how to use Glider to discover, analyze, and hunt bug bounties more efficiently. Whether you’re a beginner or a seasoned researcher, this space is packed with practical knowledge to help you make the most of Glider in your bug bounty journey.
🚀 **Let's Go!**
{% content-ref url="/pages/WQTlOiFfGzv5ODQkcSz0" %} \[Hunting Governance Delegation Bugs with Glider\](/glider-ide/bug-bounty-hunting-with-glider/hunting-governance-delegation-bugs-with-glider.md) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python/advanced-python.md). # Advanced Python ## Classes ### What is a Class In Python, a class is a way to group related code together, making it easier to work with complex data. While we won’t be creating our own classes in this tutorial, we do need to understand how to use them. Many built-in features in Glider queries rely on classes. To use Glider classes, we: \* Create an instance of the class. \* Call methods (aka functions) on that instance to perform actions. {% hint style="info" %} \*\*Note\*\*: Although methods and functions have minor differences in Python, for the purposes of this series, we will use the terms interchangeably. {% endhint %} ### How to Create a Class Instance A class instance is a representation of a class that allows us to access its methods. To create a class instance, use the class name followed by parentheses \`()\`: \`\`\`python Functions() \`\`\` ### How to Call a Class Instance Method To call a class method, we call the method after creating the class instance. For example, the code below calls the Functions class' with\\\_name() function: \`\`\`python Functions().with\_name("swap") \`\`\` This allows us to interact with Glider API class functions. ### Class Exercise \*\*Challenge\*\*: Identify every class instance created in the following code: \`\`\`python def query(): Functions().with\_name("swap").exec(10) Instructions().delegate\_calls().exec(10) Contracts().with\_struct\_name("Order").exec(1337) \`\`\` 💡 Click here for the solution The following class instances are created in the query above: \* Functions \* Instructions \* Contracts \## Glider API Methods When writing a Glider query, Glider provides additional classes and class methods that are built-in and ready for use. These class methods power a Glider query and are essential for querying Solidity code. If we refer back to our foundational query, we see the following code: \`\`\`python Functions().with\_name("swap").exec(10) \`\`\` In this example, we are calling two Glider API functions: \* \*\*with\\\_name("swap")\*\* → A predefined method that queries for functions named "swap". \* \*\*exec(10)\*\* → A predefined method that executes the query and returns 10 results. These built-in methods make it easier to write powerful and easy-to-understand Glider queries. {% hint style="info" %} The \[Glider API documentation\](https://glide.gitbook.io/main/glider-ide/api) is a valuable resource for understanding and utilizing Glider’s API methods. It offers detailed explanations, practical code examples, and a complete reference to the available classes and their methods, making it easier to integrate and work with the API effectively. {% endhint %} ## Lists In Python, lists allow us to store multiple values within a single variable. They are a fundamental data structure used frequently in Python and in Glider. #### \*\*What Do Lists Look Like?\*\* A list is defined using square brackets \\\[\] and can contain multiple elements, such as strings, numbers, or objects. Here’s an example of a list containing three strings: \`\`\`python \["swap", "swapEth", "swapToken"\] \`\`\` As mentioned earlier, lists are not limited to storing strings. In Glider, lists are commonly used to store query results. For instance, if we run the following code: \`\`\`python Functions().with\_name("swap").exec(10) \`\`\` Glider will return a list of function objects that match the query: \`\`\`python \[ , , , \] \`\`\` Each object in this list represents a Solidity function Glider found based on the search criteria. Lists like this make it easy to iterate over and process multiple query results efficiently. {% hint style="info" %} \*\*Fact\*\*: Although not covered in this tutorial series, there is another data type called sets, which is similar to lists. For the purposes of this series, we will use the terms interchangeably. {% endhint %} ### Filtering Lists One of the most common operations when working with lists is filtering, which helps remove unwanted items. This is especially useful for refining Glider query results by eliminating irrelevant data. #### \*\*Filtering with filter()\*\* The recommended way to filter items from a list is by using Glider's built-in filter() function. This function applies a filtering criterion to each item in the list and retains only those that meet the specified criteria. Take a look at the example below, where we use filter() to filter out functions that aren't part of a specific address: \`\`\`python functions.filter(only\_uniswap\_router) def only\_uniswap\_router(function): return function.address() == "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f" \`\`\` Before diving into the criteria inside filter(), let’s quickly go over how filter works internally: 1. filter() iterates through each item in the list. 2. filter() applies the only\\\_swap\\\_functions to each item. 3. If the only\\\_swap\\\_functions returns True, the item remains in the filtered list. 4. If the only\\\_swap\\\_functions returns False, the item is removed. 5. A new list is returned, containing only the filtered items. ### The Filter argument The next big question is: What goes inside the filter() parentheses? In our example, we pass the only\\\_uniswap\\\_router function name into filter(): \`\`\`python functions.filter(only\_uniswap\_router) \`\`\` This tells Glider to call only\\\_uniswap\\\_router on each item found. Note that we don't need to add the parenthesis after only\\\_uniswap\\\_router. \*\*What Does Passing only\\\_swap\\\_functions Do?\*\* By passing only\\\_uniswap\\\_router into filter(), we are instructing filter() to apply the only\\\_uniswap\\\_router function to each item in the list. \* If only\\\_uniswap\\\_router returns True, the item stays in the list. \* If only\\\_uniswap\\\_router returns False, the item is removed from the list. This allows filter() to iterate through all items in the list, keeping those that meet the condition and discarding those that don’t. ### Refactoring Our Code We can simplify the code by using a lambda function. With a lambda function, we can write the filter logic criteria like so: \`\`\`python functions.filter(lambda function : function.address() == "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045") \`\`\` #### \*\*Why Use a Lambda Function?\*\* \* \*\*More concise\*\* - No need to define a separate function. \* \*\*Quick one-liners\*\* - Ideal for simple conditions. \* \*\*Easier to read -\*\* Filter logic is clear and compact. #### \*\*When to Use a Regular Function Instead?\*\* While lambda functions are great for short, simple filters, using a function is better when dealing with complex filtering logic that requires multiple conditions or other complex code. ## \*\*Filtering Out Functions Exercise\*\* Now that we understand how filter() works, let’s apply it to an example where we want to filter out functions that lack if instructions. \`\`\`python from glider import \* def query(): swap\_functions = Functions().with\_name("swap").exec(10) return swap\_functions \`\`\` In the query above, we retrieve functions named “swap”. However, we want to remove functions from the functions list that do not contain if instructions. To achieve this, we can use filter() to keep only functions that contain if instructions. {% hint style="info" %} \*\*Hint\*\*: To see if a function contains any if instructions, we can use the following code: \`\`\` len(function.if\_instructions().exec()) \`\`\` {% endhint %} \*\*Challenge\*\*: Write a filter that will filter out functions that don't have if instructions. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Conclusion Congratulations! 🎉 Throughout this Python section, we’ve explored various Python features that will directly support your work in Glider. We started with the basics, such as creating variables and functions, and progressed to more advanced topics, like working with classes and filtering lists. These concepts are essential for writing effective Glider queries. As we move into other sections, we’ll continue to refer back to the foundational query as a reference for building more complex Glider queries. Now that we understand Glide queries from a Python-perspective, we will now focus on queries from a Glider-perspective. Let’s jump into the \[Intro to Glider section \](/glider-ide/glider-the-basics/intro-to-glider.md)to get started!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-contest/common-pitfalls-of-glider.md). # Common Pitfalls of Glider Some issues are currently impossible or unviable to formalize as a query. To provide general guidance on what most likely will not work, here are two main points. \* Any query that requires reading from the state will not work, as Glider currently doesn't support reading state data from the chain. For example, consider the first issue in the Medium section:\\ \*\*\*Swap calls to various DeFi apps with slippage hardcoded to 0.\*\*\*\\ There may be cases where the slippage is stored in a storage variable. In such cases, we cannot query for that value because we wouldn't be able to check whether the slippage storage variable is set to 0. Therefore, we must query for hardcoded 0s in the contract instead. \* It is largely unviable to try and find a function with specific functionality you have in mind, as it is nearly impossible to account for all edge cases. You will either have too high a false positive rate, or your query will be too computationally intensive and hit Glider's limits. For example, suppose you want to find all possible iterations of the ERC4626 deposit function without searching by function name or signature. You might think you can query for a function that takes one token from the user, gives another token back, and increments some variable. However, this query would also return many DEX contracts where the user gives a token, an internal balance counter is incremented, and the user receives another token. If you start accounting for every possible edge case (which, in our experience, is mostly impossible), you will start hitting Glider limits. That said, if you believe you can find a significant bug without being too computationally heavy, we would be more than happy to receive your query and as such don't feel discouraged from trying. Even in the worst-case scenario where your query doesn't work, you will learn a lot about Glider.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-contest.md). # Glider Contest
**We’re on a mission to secure every EVM chain in Web3 - and invite you to be part of it.**
### Write a Glider query that catches real Solidity bugs and earn recognition + cash rewards for your contributions.
⭐ **Total Rewards: $50.000** ⭐
⭐ **Backed By: Ethereum Foundation** ⭐
⭐ **Start Date: 6 November 2025** ⭐
\*\*\* #### How to Join 1. Submit your query through Glider IDE, following the official submission guidelines. 2. Once your query is added to the Query Database, you’ll receive a reward. 3. The best part? There’s no limit to how many queries you can write - keep contributing, keep earning.
### Learn more
Useful URLs
{% embed url="" %} {% content-ref url="/pages/ks9NO9h01IsleI9U0sHS" %} \[Glider: The Basics\](/glider-ide/glider-the-basics.md) {% endcontent-ref %} {% embed url="" %} {% content-ref url="/pages/FxBR3oTQLDQOOvwDAjGX" %} \[Bug Bounty Hunting With Glider\](/glider-ide/bug-bounty-hunting-with-glider.md) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/roadmap.md). # Roadmap Currently, Glider has the capability to run queries and do CFG/DFG analysis on a scale, but there is still a lot to do and to improve; this is not even version 1.0. The main milestones we want to deliver in the foreseeable future: \* Add API functionality - there are some cases that the framework does not support currently. This is the first-class objective for the team to cover all of the possible scenarios, and the engine will be updated constantly to improve. Also, we are working on the API design in a way that it should become as easy to use as it can be; for this, Glider will be constantly updated with its user-friendly and shortcut functions that will help researchers describe complex scenarios without needing a PhD in code analysis. \* Move Graph module to API - in the current design, the dataflow and taint analysis features are heavily dependent on the Graph module of the framework (not API), which is less user-friendly. Our goal is to get rid of the need to use these functions. \* Storage Query - one of the major features in development is the ability to write storage/state queries and filters in the query as well. Imagine finding all non-conventional implementations of some ERC standards, searching for all contracts that interact with them and continuing analysis on that set. \* Integration with third-party toolings - as the Glider is using a Python environment, we plan to add integrations with other toolings that have interfaces accessible through Python. Researchers will be able to connect symbolic execution and fuzzing engines directly in the queries. \* CI/CD integration \* ... \* Many many more!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/usage.md). # Usage {% hint style="info" %} Note that in case the query is run against a whole blockchain the results will be grouped by uniques bytecodes, thus while checking a contract address, one should also check for similar contracts in etherscan to get full list of duplicate addresses. {% endhint %} ### Basic usage

Sample Query Code
In general, Glider provides with a REPL-like interface. On the left side, the query code is written; on the right side, the output is shown. \* To run the query, the researcher needs to press the \`Run\` button. \* The \`Chain\` dropdown list is used to select the blockchain on which to run the query. \* The \`Execute\` clause is used to filter the recent contracts or to run on a full list. This feature is still in development. \* The \`Profiler\` checkbox is used to show line-by-line profiling information of the execution; this is useful to do benchmarks, reveal bottlenecks and optimize the query code.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/functions.md). # Functions ## Introduction In this section, we will explore Functions in Solidity. Functions contain groups of related code and operate similarly to those in other programming languages. Querying for functions is essential for identifying code patterns, making them one of the most effective starting points when analyzing Solidity contracts. Whether you’re conducting security research, code audits, or code usage, functions provide valuable clues for building precise Glider queries. ## \*\*Section Breakdown\*\* This section is divided into two pages: \* \*\*Learning Functions\*\* \* \*\*What Are Functions?\*\* - Understand the role of functions in Solidity. \* \*\*Breaking Down a Functions Query\*\* - Analyze a practical example of an Function-focused query. \* \*\*Reviewing the Query Results\*\* - Review and interpret the query results. \* \*\*Exercises\*\* - Apply what you’ve learned through hands-on exercises.
Let’s dive in!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/contracts.md). # Contracts ## Introduction In this section, we will explore Contracts in Solidity. A contract represents a smart contract deployed on the blockchain and acts similarly to classes in other programming languages. Contracts represent an entire feature or product within a given protocol, making them a powerful query target. By learning how to query contracts, you’ll be able to target specific protocols, well-known implementations, and more. ## \*\*Section Breakdown\*\* This section is divided into two pages: \* \*\*Learning Contracts\*\* \* \*\*What Are Contracts?\*\* - Understanding the role of Solidity contracts. \* \*\*Breaking Down a Contract Query\*\* - Analyze a practical example of an Contract-focused query. \* \*\*Reviewing the Query Results\*\* - Review and interpret the query results. \* \*\*Exercises\*\* - Apply what you’ve learned through hands-on exercises. Let's get started!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/arguments.md). # Arguments - \[Arguments.list()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.list.md): Returns a list of all the arguments that are passed as parameters to the function. - \[Arguments.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_memory\_type.md): Returns a list of arguments having specified memory type. - \[Arguments.with\\\_name()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_name.md): Returns a list of arguments having specified name - \[Arguments.with\\\_type()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_type.md): Returns a list of arguments having specified memory type. - \[Arguments.with\\\_type\\\_convertible()\](https://docs.r.xyz/glider-ide/api/arguments/arguments.with\_type\_convertible.md): Returns a list of arguments that can be converted to specified types. Convertor will define a table of allowed conversions. - \[Convertor\](https://docs.r.xyz/glider-ide/api/arguments/convertor.md): The aim of this class is to define type conversions. - \[Convertor.add()\](https://docs.r.xyz/glider-ide/api/arguments/convertor/convertor.add.md): Add a new conversion. - \[Convertor.can\\\_convert()\](https://docs.r.xyz/glider-ide/api/arguments/convertor/convertor.can\_convert.md) - \[Convertor.set\\\_conversions()\](https://docs.r.xyz/glider-ide/api/arguments/convertor/convertor.set\_conversions.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md). # PoC Guidelines ### Overview [](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md#overview)
A Proof of Concept (PoC) in the Glider Query Contest is a practical demonstration showing that a vulnerability detected by a query is real and can be reproduced against a returned Glider result.\\ It should clearly prove that the issue exists under real on-chain conditions, while remaining safe for both users and networks.\\ All tests must stay local and isolated from live systems such as the Ethereum mainnet or public testnets. A well-written PoC is easy to understand, simple to run, and transparent about what it verifies. \*\*\* ### Environment [](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md#environment)
When preparing your environment: \* Use reliable tools such as \*\*Hardhat\*\*, \*\*Foundry\*\*, or \*\*Anvil\*\*. \* Specify both the \*\*RPC endpoint\*\* and the \*\*exact block number\*\* used for the fork. \* Keep the setup completely local. The PoC should never send transactions or move funds. \* Replicate real contract states as accurately as possible to show the vulnerability in a safe and controlled setting. \*\*\* ### Implementation [](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md#implementation)
Each PoC should be \*\*runnable, minimal, and self-contained\*\*. Reviewers should be able to reproduce it easily by following the included instructions. To make your PoC clear and reproducible: \* Include all configuration and dependency files (for example, \`package.json\`, \`foundry.toml\`, or environment setup). \* Use environment variables such as \`RPC\_URL\` and \`BLOCK\_NUMBER\` instead of embedding sensitive data directly in the code. \* Add concise \*\*comments and print statements\*\* to describe each major step: \* Setting up the forked environment \* Triggering the condition or running the query \* Displaying the observable outcome \* Ensure the console output clearly shows the point where the vulnerability or query condition is confirmed. \* Focus only on what is necessary to reproduce the issue. Avoid unrelated code or complex setup steps. \* If useful, include a short explanation of the potential impact (for example, total affected tokens multiplied by the average 7-day price). \*\*\* ### Submission Format [](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md#submission-format)
Every PoC submission should contain the following elements: 1. \*\*Runnable code\*\* — preferably a single script or test file that executes from start to finish. 2. \*\*Run instructions\*\* — step-by-step commands explaining how to start the local fork and execute the PoC. 3. \*\*Expected output\*\* — a short example of the results or console logs that should appear. 4. \*\*Safety statement\*\* — a note confirming that the PoC runs only in a local fork and does not interact with live networks. 5. \*\*Configuration files\*\* — all necessary files and dependencies required to run the PoC. 6. \*(Optional)\* A link to a GitHub repository or Google Drive folder if the PoC consists of multiple files. \*\*\* ### Safety and Compliance [](https://docs.r.xyz/glider-ide/glider-contest/poc-guidelines.md#safety-and-compliance)
PoCs must always be conducted responsibly and in accordance with contest rules.\\ To keep testing environments secure and compliant: \* Never interact with mainnet, testnets, or production systems. \* Do not use private keys, seed phrases, or any sensitive credentials. \* Avoid actions that could result in fund movement or state modification. \* Submit only complete, reproducible PoCs. Theoretical or partial examples will not be accepted. \* Follow all official Glider Query Contest policies and related security guidelines. \*\*\* A clear and reproducible PoC is one of the most valuable parts of your submission.\\ It demonstrates technical accuracy, shows that your query truly detects a real vulnerability, and allows reviewers to verify your findings safely and confidently.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.public.md). # StateVariableProp.PUBLIC
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop.md). # StateVariableProp - \[StateVariableProp.CONSTANT\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.constant.md): StateVariableProp.CONSTANT: str = 'constant' - \[StateVariableProp.IMMUTABLE\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.immutable.md): StateVariableProp.IMMUTABLE: str = 'immutable' - \[StateVariableProp.INTERNAL\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.internal.md): StateVariableProp.INTERNAL: str = 'internal' - \[StateVariableProp.PRIVATE\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.private.md): StateVariableProp.PRIVATE: str = 'private' - \[StateVariableProp.PUBLIC\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.public.md): StateVariableProp.PUBLIC: str = 'public'
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable.md). # StateVariable - \[StateVariable.contract()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.contract.md): Returns state variable's parent contract if it exists. - \[StateVariable.is\\\_constant()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_constant.md): Returns true if the state variable is constant, otherwise returns false. - \[StateVariable.is\\\_immutable()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_immutable.md): Returns true if the state variable is immutable, otherwise returns false. - \[StateVariable.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_internal.md): Returns true if the visibility of the state variable is internal, otherwise returns false. - \[StateVariable.is\\\_private()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_private.md): Returns true if the visibility of the state variable is private, otherwise returns false. - \[StateVariable.is\\\_public()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_public.md): Returns true if the visibility of the state variable is public, otherwise returns false. - \[StateVariable.name()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.name.md): Returns the state variable's name. - \[StateVariable.properties()\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.properties.md): Returns the list of the state variable's properties.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-python/basic-python.md). # Basic Python ## The Foundational Query Glider queries are powered by Python, a high-level programming language known for its simplicity and readability. If you’re new to Python, this section will introduce you to core concepts such as variables and functions. Along the way we will show you Python is used to write Glider queries. In the following topics below, we’ll analyze our foundational query, discovering essential Python functionalities used throughout the query. If you’re unfamiliar with Python, you can refer to this query as a guide to understanding how different aspects of the language work. The first foundational query we will review can be found below: \`\`\`python from glider import \* def query(): swap\_functions = Functions().with\_name("swap").exec(10) swap\_functions.filter(lambda function: print(function.address())) return swap\_functions \`\`\` ## Variables In Python, variables allow you to store and manage data, such as strings, integers, and more. They act as placeholders for values that you can reference later in your code. For example, consider the following code:
swap_functions = Functions().with_name("swap").exec(10)
Here, we are creating a variable called \`swap\_functions\`. The variable name is on the left side of the equals = operator, while the right side contains the data the variable stores. In this case, the data consists of the query results for the first 10 "swap" functions. \`\`\`python Functions().with\_name("swap").exec(10) \`\`\` ### \*\*Naming Variables\*\* You can name variables however you like, but it’s best to choose a name that clearly describes what the variable stores. In this case, since the variable holds queried functions, we name the variable \`swap\_functions\` to keep the code clear and readable. Once created, a variable can be reused throughout the query, making the code more elegant and easy to read. ### Variable Exercise \*\*Exercise\*\*: Create a variable that stores the number of functions found in the \`swap\_functions\` variable. {% hint style="info" %} \*\*Hint\*\*: You can use Python’s built-in len() function to count the number of items in a variable. {% endhint %} \`\`\`python from glider import \* def query(): swap\_functions = Functions().with\_name("swap").exec(10) # CHALLENGE: Create a variable and assign it to len(swap\_functions) swap\_functions.filter(lambda function : print(function.address())) return swap\_functions \`\`\` 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Strings, Integers, and Booleans ### Strings In Python, text is often enclosed in double quotes " " like this: \`\`\`python "This is a string" \`\`\` This is called a string - a data type used to store text. Strings have many uses, but in Glider queries, they play a key role in specifying how a query should be executed. For example, when searching for functions by name, we use a string to specify the function name we want to find: \`\`\`python Functions().with\_name("swap") \`\`\` In the code above, we have the "swap" string which tells Glider we want to find functions named "swap." ### Integers In programming, we often work with numbers. In Python, these are called integers. Glider queries use integers to specify how many records Glider should search for. If we look back at our foundational query, we can see an integer written in the exec() call: \`\`\`python Functions().with\_name("swap").exec(10) \`\`\` Here, the integer 10 tells Glider to fetch 10 matching functions. ### Booleans In Python, a boolean (bool) is a data type that represents either a True or False value. Certain Python code can return booleans. Booleans are useful for making decisions in code, such as filtering results in a Glider query. Let’s look at some examples. In the code below, the statement returns True because both strings are identical: \`\`\`python "onERC721Received" == "onERC721Received" # Returns True \`\`\` If the strings were different, the expression would return False. \`\`\`python "onERC721Received" == "receivedERCToken" # Returns False \`\`\` {% hint style="info" %} \*\*Tip\*\*: An \*\*expression\*\* is code that returns a value. A \*\*value\*\* is a piece of data that can be a string, integer, boolean, etc. \`\`\`python "onERC721Received" == "receivedERCToken" \`\`\` The code shown above is an expression since it returns return True or False. An expression can return more than just True or False; it can return strings, integers, etc. {% endhint %} ## Functions In Python, we often find ourselves writing the same code multiple times. This can make our programs long, repetitive, and difficult to understand. A great way to solve this is by using functions. A function is a reusable block of code that helps keep our programs organized and clean. Python and Glider provide many built-in functions, but we can also create our own! Let’s look at the following function: \`\`\`python def contains\_state\_variables(contract): return len(contract.state\_variables().exec()) > 0 \`\`\` This function contains a single line of code that checks whether a contract contains any state variables. Once we create a function, we can then run the function (aka execute the function code). With a function, our code becomes smaller and simpler to understand. To use (or call) this function, we write: \`\`\`python creates\_local\_variables(function) \`\`\` In this section, we will go over various aspects of functions, how to create them, and conclude with an challenge exercise. {% hint style="info" %} \*\*Tip\*\*: In Python, functions are sometimes called methods. While there’s a difference between the two, for this series, we’ll use "functions" to refer to both. {% endhint %} ### Why Use Functions When we write code, we often reuse the same logic multiple times or find ourselves grouping chunks of code together. Let’s consider the following Glider query: \`\`\`python Functions() .exec(1000) .filter(lambda function : function.get\_contract().name not in {"UniswapV3Pool"}) .filter( lambda function : len( function .instructions\_recursive() .filter(lambda instruction: instruction.is\_if() or instruction.is\_if\_loop() or instruction.is\_start\_loop()) ) > 30 ) \`\`\` Even without understanding exactly how this code works, it’s clear that a lot is happening. Can we improve the readability of this query? Yes! By using functions, we can simplify the query as follows: \`\`\`python ( Functions() .exec(1000) .filter(not\_uniswap\_pools) .filter(has\_too\_much\_control\_flow) ) def not\_uniswap\_pools(function): return function.get\_contract().name not in \["UniswapV3Pool"\] def has\_too\_much\_control\_flow(function): return len( function .instructions\_recursive() .filter(is\_control\_flow) ) > 30 def is\_control\_flow(instruction): return instruction.is\_if() or instruction.is\_if\_loop() or instruction.is\_start\_loop() \`\`\` In this updated version, we’ve extracted parts of the query into separate functions. This makes the code more readable by clearly defining what each section of code does. Now, if we look at the main portion of the query: \`\`\`python ( Functions() .exec(1000) .filter(not\_uniswap\_pools) .filter(has\_too\_much\_control\_flow) ) \`\`\` We can easily understand it at a glance. Roughly translated, it means: > Find 1000 functions that are not part of a Uniswap pool and has too much control flow. By creating functions, we’ve written cleaner, more readable code that is easier to maintain and understand. ### Function Name A function name describes what the function does. Choosing a clear and meaningful name makes your code easier to read and understand. For example, if we create a function to find contracts named IERC20, we might call the function get\\\_erc20\\\_interface\\\_contracts as seen below: \`\`\`python def get\_erc20\_interface\_contracts(): \`\`\` Each function name must be unique, and we use the name to call (run) the function later. We can identify the function name by looking at the text that comes after the def keyword: \`\`\`python def defines\_variables(): \`\`\` This function name gives us an idea of what the function does and hints at what it might return (more on that soon!). ### Returning Data from Functions Functions don’t just execute code - they can also return data. This is useful when we want a function to perform a task and then provide a result we can use elsewhere. {% hint style="info" %} \*\*Tip\*\*: Functions are not required to return data. {% endhint %} In fact, every Glider query relies on return values! For example, the query() function below returns the Glider query results: \`\`\`python def query(): swap\_functions = Functions().with\_name("swap").exec(10) # Return the Glider results return swap\_functions \`\`\` By returning values, functions become powerful tools for organizing and reusing code efficiently. This allows us to break down complex logic into smaller, more manageable pieces. ### Function Arguments When writing functions, we often need to use data from outside the function inside of the function. This is where function arguments come in. A function argument allows us to pass additional data into a function so it knows exactly what to do. #### \*\*What do function arguments look like?\*\* Function arguments are placed inside parentheses \`()\` when defining a function. For example, the function below accepts a single argument named \`contract\`: \`\`\`python def contains\_state\_variables(contract): return len(contract.state\_variables().exec()) > 0 \`\`\` Inside the function, we can use the function argument just like any other variable. Functions can also accept multiple arguments like so: \`\`\`python def contains\_state\_variables(contract, state\_variables\_count): return len(contract.state\_variables().exec()) > state\_variables\_count \`\`\` In this example, we introduced a second argument, \`state\_variables\_count\`, which we then use to gauge how many state variables the contract has. Using function arguments makes our functions more flexible and reusable, allowing us to work with different data each time we call the function. ### How to Create Functions Now that we’ve covered the basics of functions, let’s learn how to create one. In Python, we use specific keywords and syntax to define a function. Here’s a simple function template: \`\`\`python def name\_of\_function(argument\_1, argument\_2): # ADD CODE HERE \`\`\` #### \*\*Breaking it Down\*\* In the function above we: \* Defined a function using the \`def\` keyword. \* Named the function \`name\_of\_function\`. \* Added two arguments inside the parentheses \`(argument\_1, argument\_2)\`. \* Add code inside of the function. Be sure to indent the code inside the function, otherwise the code won't execute. This template can be used whenever you want to create a function. Now, let’s explore how to call and use our functions! ### Calling Functions Once we define a function, we need to call it to execute its code. To call a function, simply write the function name followed by parentheses \`()\`: \`\`\`python if\_instructions() \`\`\` This calls a function named \*\*if\\\_instructions\*\*. #### \*\*Calling Functions with Arguments\*\* If a function requires arguments, we need to add the arguments inside the parentheses. For example, the with\\\_name() function accepts a single argument: \`\`\`python with\_name("swap") \`\`\` Here, we pass the string "swap" into the with\\\_name() function. This tells with\\\_name() we want to find functions named swap. Calling functions allows us to run reusable code and pass in custom values when needed. ### Chaining Function Calls A useful feature in Python is chaining function calls, which allows us to call multiple functions back to back. But what does this actually do, and why use it? #### \*\*How It Works\*\* When we chain function calls, each function returns data that the next function uses. This makes our code more concise and readable. For example, consider this Glider query: \`\`\`python Functions().with\_name("swap").exec(10) \`\`\` #### \*\*Breaking It Down\*\* Let's now break down the code snippet into sections: \* \`Functions()\` → Creates a Functions class instance. \*\*Note\*\*: We'll discuss class instances more in the \[Advanced Python section\](/glider-ide/glider-the-basics/intro-to-python/advanced-python.md#how-to-create-a-class-instance). \* \`.with\_name("swap")\` → Calls the with\\\_name() function on the Functions object to query for functions named "swap", returning a Functions object. \* \`.exec(10)\` → Calls the exec() function on the Functions object to execute the query and return 10 results. By chaining these function calls together, we can apply multiple operations in a single statement. This makes the code cleaner, more readable, and more efficient. {% hint style="info" %} You can wrap chained function calls in parentheses \`()\` to make the code easier to read: \`\`\`python ( Functions() .with\_name("swap") .exec(10) ) \`\`\` {% endhint %} ### Using print() in Glider queries for debugging One of the most useful functions in Glider queries is print(). It can take any number or type of arguments. When called, print() prints the arguments to the Output Panel in the Glider IDE. For example running the following code below:
print("Check out this cool info!")
Will display in following content in the Glider IDE Output panel: \`\`\` Check out this cool info! \`\`\`

Printing Output to the Glider IDE
\#### \*\*Why Use print()?\*\* The print() function is great for: \* View what a variable stores. \* Check if a section is executed (if it's printed, you know the code is executed) ## Printing Function Properties Exercise \*\*Challenge\*\*: Modify the query below by adding the print() function to display the function properties of the \`swap\_function\` variable in the Glider IDE output panel. {% hint style="info" %} \*\*Hint\*\*: To determine the function properties, we can call: \`\`\`python function.properties() \`\`\` {% endhint %} \`\`\`python from glider import \* def query(): swap\_functions = Functions().with\_name("swap").exec(10) swap\_function = swap\_functions\[0\] # CHALLENGE: Print the swap\_function properties below return swap\_functions \`\`\` 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Conclusion Great job! 🎉 You’ve now learned some of the fundamental building blocks of Python, including: \* \*\*Variables\*\* - How to store and reuse data. \* S\*\*trings, Integers, and Booleans\*\* - The different types of data you can work with. \* \*\*Functions\*\* - How to create reusable blocks of code and run functions. \* \*\*Chaining function calls\*\* - How to streamline your Glider queries by calling multiple functions back-to-back. \* \*\*The print() function\*\* - A useful function for debugging and checking values inside your queries. ### \*\*What’s Next?\*\* In the \[next section\](/glider-ide/glider-the-basics/intro-to-python/advanced-python.md), we’ll dive into more complex concepts including: \* \*\*Classes\*\* - Understanding how to create class instances. \* \*\*Glider API Functions\*\* - Exploring built-in functions provided by Glider. \* \*\*Lists\*\* - Understanding and efficiently managing Glider query results. Keep going as you’re on your way to mastering Python for Glider queries!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/variable.md). # Variable - \[Variable.canonical\\\_name\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.canonical\_name.md): Returns the canonical name of the variable. - \[Variable.data\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.data.md): Returns the canonical name of the variable. - \[Variable.name\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.name.md): Returns the name of the variable. - \[Variable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.source\_code.md): Returns source code of variable - \[Variable.type\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.type.md): Returns the type of the variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/varvalue.md). # VarValue - \[VarValue.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df.md): Returns the list of all previous points of the current point in the data flow graph. - \[VarValue.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[VarValue.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df.md): Returns the list of all points following the current point in the current data flow graph. - \[VarValue.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[VarValue.get\\\_defining\\\_points()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_defining\_points.md): Returns the points which define the variable. - \[VarValue.get\\\_object\\\_of\\\_var()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_object\_of\_var.md): Returns corresponding object of the variable. - \[VarValue.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_parent.md): Returns parent function/modifier of the variable. - \[VarValue.is\\\_depending\\\_on\\\_any\\\_argument()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.is\_depending\_on\_any\_argument.md): Returns whether the object depends on any of its function's arguments. - \[VarValue.type\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.type.md): Returns the variable's type.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_assignment\_operator.md). # ValueExpression.get\\\_assignment\\\_operator() \`get\_assignment\_operator() →\` \[\`Value\`\](/glider-ide/api/value.md) \`|\` \[\`NoneObject\`\](/glider-ide/api/internal/noneobject.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contract.md). # Contract The Contract class represents a contract or contract-like entity such as an interface or library. If a single Solidity file includes different contracts, interfaces, and libraries, the engine will create separate Contract objects for each. Bases: \`Queryable\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value/value.expression.md). # Value.expression \`property expression: str\` The property returns the "part" of the instruction that the Value represents. ## Query Example \`\`\`python from glider import \* def query(): instructions = ( Instructions() .exec(1, 100) ) for instruction in instructions: print(instruction.get\_components().expression) return instructions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable/callable.catch\_instructions.md). # Callable.catch\\\_instructions() \`catch\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Example \`\`\`python from glider import \* def query(): functions = Functions().exec(5000) catch\_instructions = \[\] for function in functions: # List all catch instructions inside a try/catch block from the given functions for instruction in function.catch\_instructions().exec(): catch\_instructions.append(instruction) return catch\_instructions \`\`\` ## Example output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable/callable.selector.md). # Callable.selector() \`selector() → int\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable/callable.loops.md). # Callable.loops() \`loops() -> APIList\[Loop\]\` ##
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable/callable.get\_reachable\_instructions.md). # Callable.get\\\_reachable\\\_instructions() \`get\_reachable\_instructions() →\` \[\`APISet\`\](/glider-ide/api/iterables/apiset.md)\`\[\`\[\`Instruction\`\](/glider-ide/api/instruction.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): functions = Functions().exec(1) for reachable\_instruction in functions\[0\].get\_reachable\_instructions(): print(f"{reachable\_instruction.source\_code()}") return functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_callees.md). # MethodProp.HAS\\\_CALLEES The property HAS\\\_CALLEES is used to add a filter to include or exclude functions that have functions that call them from within the same contract. An example of a query which will filter for functions that have callees is: \`\`\`python from glider import \* def query(): props\_included = \[MethodProp.HAS\_CALLEES\] functions = Functions()\\ .with\_all\_properties(props\_included)\\ .exec(5) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_state\_variables\_written.md). # MethodProp.HAS\\\_STATE\\\_VARIABLES\\\_WRITTEN If a variable is declared outside of a function within a smart contract it is considered a STATE variable. Such variable's value are stored permanently on the blockchain, for instance account balances and admin addresses. An example of a query which will select functions that modify STATE variables from within the code of the function is: \`\`\`python from glider import \* def query(): props\_included = \[MethodProp.HAS\_STATE\_VARIABLES\_WRITTEN\] functions = Functions()\\ .with\_all\_properties(props\_included)\\ .exec(5) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callables/methodprop.md). # MethodProp - \[MethodProp.EXTERNAL\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.external.md) - \[MethodProp.HAS\\\_ARGS\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_args.md) - \[MethodProp.HAS\\\_CALLEES\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_callees.md) - \[MethodProp.HAS\\\_ERRORS\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_errors.md) - \[MethodProp.HAS\\\_MODIFIERS\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_modifiers.md) - \[MethodProp.HAS\\\_STATE\\\_VARIABLES\\\_READ\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_state\_variables\_read.md) - \[MethodProp.HAS\\\_STATE\\\_VARIABLES\\\_WRITTEN\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.has\_state\_variables\_written.md) - \[MethodProp.INTERNAL\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.internal.md) - \[MethodProp.IS\\\_CONSTRUCTOR\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_constructor.md) - \[MethodProp.IS\\\_GLOBAL\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_global.md) - \[MethodProp.IS\\\_PAYABLE\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_payable.md) - \[MethodProp.IS\\\_PURE\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_pure.md) - \[MethodProp.IS\\\_VIEW\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.is\_view.md) - \[MethodProp.PRIVATE\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.private.md) - \[MethodProp.PUBLIC\](https://docs.r.xyz/glider-ide/api/callables/methodprop/methodprop.public.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.functions.md). # Contracts.functions() \`functions() →\` \[\`Functions\`\](/glider-ide/api/function.md) ## Example Query \`\`\`python from glider import \* def query(): functions = Contracts().functions().exec(1) return functions \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_all\_function\_signatures.md). # Contracts.with\\\_all\\\_function\\\_signatures()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/entrypointinstruction.md). # EntryPointInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`EntryPointInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/placeholderinstruction.md). # PlaceholderInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`PlaceholderInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction.md). # Instruction The class represents a single instruction object. \\ Bases: \`Queryable\`, \`Point\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/ifloopinstruction.md). # IfLoopInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`IfLoopInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/catchinstruction.md). # CatchInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`CatchInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/continueinstruction.md). # ContinueInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`ContinueInstruciton\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/throwinstruction.md). # ThrowInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`ThrowInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/startloopinstruction.md). # StartLoopInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`StartLoopInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/returninstruction.md). # ReturnInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`ReturnInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/endassemblyinstruction.md). # EndAssemblyInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`EndAssemblyInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/breakinstruction.md). # BreakInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`BreakInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/startassemblyinstruction.md). # StartAssemblyInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instructions.md) Example of \`StartAsseblyInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/newvariableinstruction.md). # NewVariableInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`NewVariableInstruciton\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_name.md). # Contracts.with\\\_name() \`with\_name(name: str, sensitivity: bool = True) ->\` \[\`Contracts\`\](/glider-ide/api/contracts.md) ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("Manager").exec(10) return contracts \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_all\_function\_names.md). # Contracts.with\\\_all\\\_function\\\_names() \`with\_all\_function\_names(names: List\[str\], sensitivity: bool = True) ->\` \[\`Contracts\`\](/glider-ide/api/contracts.md) ## Query Example \`\`\`python from glider import \* def query(): contracts = ( Contracts(). non\_interface\_contracts(). with\_all\_function\_names(\["transfer", "TransferFrom"\], sensitivity=False). exec(1)) return contracts \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction.md). # IfInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`IfInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_prefix.md). # Contracts.with\\\_function\\\_name\\\_prefix()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_signature.md). # Contracts.with\\\_function\\\_signature()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_compiler\_range\_not.md). # Contracts.with\\\_compiler\\\_range\\\_not() \`with\_compiler\_range\_not(lower\_bound: str, upper\_bound: str) ->\` \[\`Contracts\`\](/glider-ide/api/contracts.md) ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_compiler\_range\_not("0.8.0", "0.8.11").exec(3) for contract in contracts: print(contract.pragmas()) return contracts \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_suffix.md). # Contracts.with\\\_function\\\_name\\\_suffix()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_one\_of\_the\_function\_signatures.md). # Contracts.with\\\_one\\\_of\\\_the\\\_function\\\_signatures()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_event\_name.md). # Contracts.with\\\_event\\\_name() \`with\_event\_name(name: str, sensitivity: bool = True) ->\` \[\`Contracts\`\](/glider-ide/api/contracts.md) ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_event\_name('Modified').exec(1) events = contracts\[0\].events() for event in events: print(event.signature) return contracts \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.with\_function\_name\_regex.md). # Contracts.with\\\_function\\\_name\\\_regex()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.without\_function\_signatures.md). # Contracts.without\\\_function\\\_signatures()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.callees.md). # Instructions.CALLEES
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/ifinstruction/condition.md). # Condition \`Condition(\`\*\`token: str = ''\`\*\`)\` The \[IfInstruction.get\\\_condition()\](/glider-ide/api/instruction/ifinstruction/ifinstruction.get\_condition.md) function can be used to get the condition object of an if-statement. Base: \*\*object\*\* \*\*\* {% content-ref url="/pages/jwVTbcO2FlG0sDgJ5B9N" %} \[Condition.is\\\_eq()\](/glider-ide/api/instruction/ifinstruction/condition/condition.is\_eq.md) {% endcontent-ref %} {% content-ref url="/pages/HZq1Urb3oBHtXpPMojKB" %} \[Condition.is\\\_geq()\](/glider-ide/api/instruction/ifinstruction/condition/condition.is\_geq.md) {% endcontent-ref %} {% content-ref url="/pages/3O3x42cImwbEsCdvzWMf" %} \[Condition.is\\\_gr()\](/glider-ide/api/instruction/ifinstruction/condition/condition.is\_gr.md) {% endcontent-ref %} {% content-ref url="/pages/badjKuJeQVZTrbHBWlYG" %} \[Condition.is\\\_le()\](/glider-ide/api/instruction/ifinstruction/condition/condition.is\_le.md) {% endcontent-ref %} {% content-ref url="/pages/8YvIxPDlCRDsBCVRSFeT" %} \[Condition.is\\\_leq()\](/glider-ide/api/instruction/ifinstruction/condition/condition.is\_leq.md) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contracts/contracts.without\_function\_signature.md). # Contracts.without\\\_function\\\_signature()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instruction/tryinstruction.md). # TryInstruction Bases: \[\`Instruction\`\](/glider-ide/api/instruction.md) Example of \`TryInstruction\`

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.delegate\_calls.md). # Instructions.delegate\\\_calls() \`delegate\_calls() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().delegate\_calls().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.delegate\_calls\_non\_assembly.md). # Instructions.delegate\\\_calls\\\_non\\\_assembly() \`delegate\_calls\_non\_assembly() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().delegate\_calls\_non\_assembly().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.if\_loop\_instructions.md). # Instructions.if\\\_loop\\\_instructions() \`if\_loop\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instruction.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().if\_loop\_instructions().exec(2) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_operators.md). # Instructions.with\\\_operators() \`with\_operators(expr: Any) →\` \[\`Instructions\`\](/glider-ide/api/instructions.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable.md). # Callable The class is the base class for \[Function\](/glider-ide/api/function.md) and \[Modifier\](/glider-ide/api/modifier.md) classes.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.end\_loop\_instructions.md). # Instructions.end\\\_loop\\\_instructions() \`end\_loop\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().end\_loop\_instructions().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.break\_instructions.md). # Instructions.break\\\_instructions() \`break\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().break\_instructions().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.with\_globals.md). # Instructions.with\\\_globals() \`with\_globals(expr: Any) →\` \[\`Instructions\`\](/glider-ide/api/instructions.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.new\_variable\_instructions.md). # Instructions.new\\\_variable\\\_instructions() \`new\_variable\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().new\_variable\_instructions().exec(2,3) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable/callable.callee\_values.md). # Callable.callee\\\_values() \`callee\_values() →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`Call\`\](/glider-ide/api/value/call.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): functions = Functions().exec(1,5) for function in functions: for call in function.callee\_values(): print(f"function {function.name}, call {call.expression}") return functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.end\_asm\_instructions.md). # Instructions.end\\\_asm\\\_instructions() \`end\_loop\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().end\_asm\_instructions().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.low\_level\_external\_calls.md). # Instructions.low\\\_level\\\_external\\\_calls() \`low\_level\_function\_calls() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().low\_level\_external\_calls().exec(3) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.continue\_instructions.md). # Instructions.continue\\\_instructions() \`continue\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().continue\_instructions().exec(1, 1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value/value.parent\_value.md). # Value.parent\\\_value Returns the parent \[Value\](/glider-ide/api/value.md) in case the current one is inside another Value; returns None otherwise. \`property parent\_value:\` \[\`Value\`\](/glider-ide/api/value.md) \`| None\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): instructions = Instructions().exec(1,1) value = instructions.get\_components() print(f"Value: {value\[0\].expression}") print(f"Parent values: {value\[0\].parent\_value.expression}") return instructions \`\`\` \*\*Output\*\*

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_address.md). # Callables.with\\\_address() ## Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_name("swapTokens") .with\_address("0x4186829914d1b7b130b5153f4aabd21142e8e658") .exec(1) ) return functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instruction.catch\_instructions.md). # Instruction.catch\\\_instructions() \`catch\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().catch\_instructions().exec(1,1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value/value.is\_main\_value.md). # Value.is\\\_main\\\_value() \`is\_main\_value() → bool\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): instructions = Instructions().exec(1, 5) for instruction in instructions: components = instruction.get\_components() for component in components: print(component.is\_main\_value()) if component.is\_main\_value(): print(component.expression) return instructions \`\`\` \*\*Output\*\*

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callables/callables.with\_name\_suffix.md). # Callables.with\\\_name\\\_suffix() \`with\_name\_suffix(\`\*\`suffix: str\`\*\`,\`\` \`\*\`sensitivity: bool = True\`\*\`) →\` \[\`Callables\`\](/glider-ide/api/callables.md) Adds a filter to get callables whose names have the given suffix. Returns a filtered \[Callables\](/glider-ide/api/callables.md) child object. This method can be called on all \[Callables\](/glider-ide/api/callables.md) child classes: \[Functions\](/glider-ide/api/functions.md) and \[Modifiers\](/glider-ide/api/modifiers.md). To filter given a list of suffixes, refer to \[Callables.with\\\_name\\\_suffixes()\](/glider-ide/api/callables/callables.with\_name\_suffixes.md). ### Functions Example \`\`\`python from glider import \* def query(): # Retrieve the functions that have \`down\` as suffix functions = Functions().with\_name\_suffix("down").exec(100) # Return the first five functions return functions\[:5\] \`\`\` Output:

\### Modifiers Example \`\`\`python from glider import \* def query(): # Retrieve the modifiers that have \`Initialized\` as suffix modifiers = Modifiers().with\_name\_suffix("Initialized").exec(100) # Return the first five modifiers return modifiers\[:5\] \`\`\` Output:

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.start\_loop\_instructions.md). # Instructions.start\\\_loop\\\_instructions() \`start\_loop\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().start\_loop\_instructions().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value/value.source\_code.md). # Value.source\\\_code() \`source\_code() → str\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_contract\_name-1.md). # Call.get\\\_contract\\\_name() \`get\_contract\_name() → str\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callables.md). # Callables The Callables class is the base class for the \[Functions\](/glider-ide/api/functions.md) and \[Modifiers\](/glider-ide/api/modifiers.md) classes, and implements a series of methods common to both Functions and Modifiers: {% content-ref url="/pages/RxUCQjCvWAhrbxzh5iGz" %} \[Callables.contracts()\](/glider-ide/api/callables/callables.contracts.md) {% endcontent-ref %} {% content-ref url="/pages/J0WjFfjLZ7IFtY4gTzCC" %} \[Callables.instructions()\](/glider-ide/api/callables/callables.instructions.md) {% endcontent-ref %} {% content-ref url="/pages/N17KXGTUge1hEdLrSx7s" %} \[Callables.with\\\_name\\\_prefix()\](/glider-ide/api/callables/callables.with\_name\_prefix.md) {% endcontent-ref %} {% content-ref url="/pages/qRz1Ajmb4RUOHVVWAtoO" %} \[Callables.with\\\_name\\\_prefixes()\](/glider-ide/api/callables/callables.with\_name\_prefixes.md) {% endcontent-ref %} {% content-ref url="/pages/AKg1SXToUxQSLd9I5PtN" %} \[Callables.with\\\_name\\\_regex()\](/glider-ide/api/callables/callables.with\_name\_regex.md) {% endcontent-ref %} {% content-ref url="/pages/IUDaLcxsqvYjhGDWovwa" %} \[Callables.with\\\_name\\\_regexes()\](/glider-ide/api/callables/callables.with\_name\_regexes.md) {% endcontent-ref %} {% content-ref url="/pages/IzJQDJXGtjnDc4zJP1PO" %} \[Callables.with\\\_name\\\_suffix()\](/glider-ide/api/callables/callables.with\_name\_suffix.md) {% endcontent-ref %} {% content-ref url="/pages/8FEG1js0YHLHiZ220l1M" %} \[Callables.with\\\_name\\\_suffixes()\](/glider-ide/api/callables/callables.with\_name\_suffixes.md) {% endcontent-ref %} {% content-ref url="/pages/XFL4NmcRO5pj28eCUcAm" %} \[Callables.with\\\_arg\\\_count()\](/glider-ide/api/callables/callables.with\_arg\_count.md) {% endcontent-ref %} {% content-ref url="/pages/UawgM6v2XjLj80KR3sDy" %} \[Callables.with\\\_arg\\\_memory\\\_type()\](/glider-ide/api/callables/callables.with\_arg\_memory\_type.md) {% endcontent-ref %} {% content-ref url="/pages/7h3IX6x1E8F9qQKcUv6a" %} \[Callables.with\\\_arg\\\_name()\](/glider-ide/api/callables/callables.with\_arg\_name.md) {% endcontent-ref %} {% content-ref url="/pages/wBMG3Ud6AnKUwK8pDIHQ" %} \[Callables.with\\\_arg\\\_type()\](/glider-ide/api/callables/callables.with\_arg\_type.md) {% endcontent-ref %} {% content-ref url="/pages/mkGOTzBWzdhgd0fVwuIm" %} \[Callables.with\\\_arg\\\_types()\](/glider-ide/api/callables/callables.with\_arg\_types.md) {% endcontent-ref %} {% content-ref url="/pages/s0NZET8gM7Ru4cLMYI3w" %} \[Broken mention\](broken://pages/s0NZET8gM7Ru4cLMYI3w) {% endcontent-ref %} {% content-ref url="/pages/CXlOqZWEOAiMcNrHcAIg" %} \[Callables.with\\\_name()\](/glider-ide/api/callables/callables.with\_name.md) {% endcontent-ref %} {% content-ref url="/pages/E8IHRCsmdRfw5gYk26Bb" %} \[Callables.without\\\_name()\](/glider-ide/api/callables/callables.without\_name.md) {% endcontent-ref %} {% content-ref url="/pages/RbiNalxQWP7ZPUpI8sJw" %} \[Callables.with\\\_one\\\_of\\\_the\\\_names()\](/glider-ide/api/callables/callables.with\_one\_of\_the\_names.md) {% endcontent-ref %} {% content-ref url="/pages/PD3E0VMhjf8oIz7Kue7g" %} \[Callables.without\\\_names()\](/glider-ide/api/callables/callables.without\_names.md) {% endcontent-ref %} {% content-ref url="/pages/OqhGrOYa5v5ICoCZ22Jb" %} \[Callables.with\\\_signature()\](/glider-ide/api/callables/callables.with\_signature.md) {% endcontent-ref %} {% content-ref url="/pages/9gz3ruYx7XEpo6w4xdSo" %} \[Callables.with\\\_signatures()\](/glider-ide/api/callables/callables.with\_signatures.md) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions/instructions.end\_if\_instructions.md). # Instructions.end\\\_if\\\_instructions() \`end\_if\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) ## Query Example \`\`\`python from glider import \* def query(): return Instructions().end\_if\_instructions().exec(1) \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/callable/callable.source\_code.md). # Callable.source\\\_code() \`source\_code() → str\` ## Example \`\`\`python from glider import \* def query(): functions = Functions().exec(1,1) for function in functions: # Aggregate the code of each function along with their name print(f"function: {function.name}, code: {function.source\_code()}") return functions \`\`\` ## Example output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.exec.md). # Functions.exec() \`exec(\`\*\`limit\_count: int = 0\`\*\`,\`\` \`\*\`offset\_count: int = 0\`\*\`) →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`Function\`\](/glider-ide/api/function.md)\`\]\` ## Query Example
from glider import *
def query():
# Fetch a list of functions
functions = Functions().exec(2)
return functions
\## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_properties.md). # Functions.without\\\_properties() \*\*Deprecated\*\*: This method is deprecated and will be removed in future versions. \*\*Alternative:\*\* Use \`with\_properties()\` instead for improved functionality. \`without\_properties(\`\*\`properties: List\[MethodProp\]\`\*\`) →\` \[\`Functions\`\](/glider-ide/api/functions.md) ## Example \`\`\`python from glider import \* def query(): # Fetch a list of functions which are not external/public functions = Functions().without\_properties(\[MethodProp.EXTERNAL, MethodProp.PUBLIC\]).exec(3) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_modifiers.md). # Functions.without\\\_modifiers() \`without\_modifiers() →\` \[\`Functions\`\](/glider-ide/api/functions.md) Adds a filter to get functions that don't have modifiers at all. ## Example \`\`\`python from glider import \* def query(): functions = Functions().without\_modifiers().exec(1) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_name.md). # Functions.with\\\_modifier\\\_name() \`with\_modifier\_name(\`\*\`name: str\`\*\`,\`\` \`\*\`sensitivity: bool = True\`\*\`) →\` \[\`Functions\`\](/glider-ide/api/functions.md) Adds a filter to get functions that have a modifier with the given name. ## Example \`\`\`python from glider import \* def query(): # Fetch a list of functions with nonReentrant modifier functions = Functions().with\_modifier\_name('nonReentrant').exec(2) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value/value.type.md). # Value.type \`property type: Type\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/instructions.md). # Instructions The aim of this class is to filter instructions with some properties. Bases: \[Queryable\](/glider-ide/api/internal/queryable.md) {% content-ref url="/pages/wqUlaLN9Z2G8GBuNjcHC" %} \[Instructions.CALLEES\](/glider-ide/api/instructions/instructions.callees.md) {% endcontent-ref %} {% content-ref url="/pages/43Xlu9QyFQc6Rrv3BF9m" %} \[Broken mention\](broken://pages/43Xlu9QyFQc6Rrv3BF9m) {% endcontent-ref %} {% content-ref url="/pages/9fEqrjEfn4lzR2xwTusc" %} \[Instructions.calls()\](/glider-ide/api/instructions/instructions.calls.md) {% endcontent-ref %} {% content-ref url="/pages/pUPlexSTIS6L0TING4Vk" %} \[Instructions.delegate\\\_calls()\](/glider-ide/api/instructions/instructions.delegate\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/t0vFbeGdUzk3ZTGoNqjL" %} \[Instructions.delegate\\\_calls\\\_from\\\_assembly()\](/glider-ide/api/instructions/instructions.delegate\_calls\_from\_assembly.md) {% endcontent-ref %} {% content-ref url="/pages/KToD8EhPFt1FPEKiimyH" %} \[Instructions.delegate\\\_calls\\\_non\\\_assembly()\](/glider-ide/api/instructions/instructions.delegate\_calls\_non\_assembly.md) {% endcontent-ref %} {% content-ref url="/pages/KToD8EhPFt1FPEKiimyH" %} \[Instructions.delegate\\\_calls\\\_non\\\_assembly()\](/glider-ide/api/instructions/instructions.delegate\_calls\_non\_assembly.md) {% endcontent-ref %} {% content-ref url="/pages/w9a7pP9lSCv1yjyFBERD" %} \[Instructions.entry\\\_point\\\_instructions()\](/glider-ide/api/instructions/instructions.entry\_point\_instructions.md) {% endcontent-ref %} {% content-ref url="/pages/ete4XwpHX5FXR8GBZCvv" %} \[Instructions.exec()\](/glider-ide/api/instructions/instructions.exec.md) {% endcontent-ref %} {% content-ref url="/pages/7kEHX20OlD3rOzfzMt43" %} \[Instructions.external\\\_calls()\](/glider-ide/api/instructions/instructions.external\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/BLm3YtXgBiUqBNQEjBqL" %} \[Instructions.functions()\](/glider-ide/api/instructions/instructions.functions.md) {% endcontent-ref %} {% content-ref url="/pages/xF9GqISwI9XA4L5mNNyg" %} \[Instructions.high\\\_level\\\_static\\\_calls()\](/glider-ide/api/instructions/instructions.high\_level\_static\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/8terh1NUZETBeG2DySIA" %} \[Instructions.if\\\_instructions()\](/glider-ide/api/instructions/instructions.if\_instructions.md) {% endcontent-ref %} {% content-ref url="/pages/NuwXzH2uK2siDj7wiEpR" %} \[Instructions.internal\\\_calls()\](/glider-ide/api/instructions/instructions.internal\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/7tlgx9UevBV2HGqWNjXw" %} \[Instructions.library\\\_calls()\](/glider-ide/api/instructions/instructions.library\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/nHvZxZUhVyFbVOXUFHWb" %} \[Broken mention\](broken://pages/nHvZxZUhVyFbVOXUFHWb) {% endcontent-ref %} {% content-ref url="/pages/ILR9QH2BLCmiKI9tmNBH" %} \[Broken mention\](broken://pages/ILR9QH2BLCmiKI9tmNBH) {% endcontent-ref %} {% content-ref url="/pages/YrCWqrUh7cYUWKDibzJR" %} \[Instructions.low\\\_level\\\_external\\\_calls()\](/glider-ide/api/instructions/instructions.low\_level\_external\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/K3xn6RMDXEntEeM4lpid" %} \[Instructions.low\\\_level\\\_static\\\_calls()\](/glider-ide/api/instructions/instructions.low\_level\_static\_calls.md) {% endcontent-ref %} {% content-ref url="/pages/yGBvzDi5QQ069p2WgW9z" %} \[Instructions.modifiers()\](/glider-ide/api/instructions/instructions.modifiers.md) {% endcontent-ref %} {% content-ref url="/pages/32FEY2lwBVtHk4F8u0T0" %} \[Broken mention\](broken://pages/32FEY2lwBVtHk4F8u0T0) {% endcontent-ref %} {% content-ref url="/pages/bTqtJ4jXWI2BGKopx2pq" %} \[Instructions.with\\\_callee\\\_name()\](/glider-ide/api/instructions/instructions.with\_callee\_name.md) {% endcontent-ref %} {% content-ref url="/pages/wmsxPmi4skSQYixklDqw" %} \[Instructions.without\\\_callee\\\_names()\](/glider-ide/api/instructions/instructions.without\_callee\_names.md) {% endcontent-ref %} {% content-ref url="/pages/8q4QWKWX933mQk9V66IV" %} \[Instructions.with\\\_callee\\\_name\\\_prefix()\](/glider-ide/api/instructions/instructions.with\_callee\_name\_prefix.md) {% endcontent-ref %} {% content-ref url="/pages/1NVzLRbsRLuYR3Sp6We9" %} \[Instructions.with\\\_callee\\\_name\\\_suffix()\](/glider-ide/api/instructions/instructions.with\_callee\_name\_suffix.md) {% endcontent-ref %} {% content-ref url="/pages/zhNoD90IUZKIS06prG8b" %} \[Instructions.with\\\_callee\\\_signature()\](/glider-ide/api/instructions/instructions.with\_callee\_signature.md) {% endcontent-ref %} {% content-ref url="/pages/e9NkZWoc2frZr2lW2sDE" %} \[Broken mention\](broken://pages/e9NkZWoc2frZr2lW2sDE) {% endcontent-ref %} {% content-ref url="/pages/vCdM2kmhR8bQwmzoFQgO" %} \[Broken mention\](broken://pages/vCdM2kmhR8bQwmzoFQgO) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_name\_regex.md). # Functions.with\\\_modifier\\\_name\\\_regex() \`with\_modifier\_name\_regex(regex: str) →\` \[\`Functions\`\](/glider-ide/api/functions.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/call/calltype.md). # CallType The class represents \[call\](/glider-ide/api/value/call.md) types. \`EVENT: str = 'event'\` \`EXTERNAL: str = 'external'\` \`INTERNAL: str = 'internal'\` \`LIBRARY: str = 'library'\` \`LOW\_LEVEL: str = 'low\_level'\` \`NEW\_ARR: str = 'new\_arr'\` \`NEW\_ELEMENTARY\_TYPE: str = 'new\_elementary\_type'\` \`NEW\_STRUCT: str = 'new\_struct'\` \`PRIVATE: str = 'private'\` \`PUBLIC: str = 'public'\` \`SOLIDITY: str = 'solidity'\` \`TYPE\_CONVERSION: str = 'type\_conversion'\` \`UNKNOWN: str = 'unknown'\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value/value.instruction.md). # Value.instruction \`property instruction:\` \[\`Instruction\`\](/glider-ide/api/instruction.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.caller\_modifiers\_recursive.md). # Functions.caller\\\_modifiers\\\_recursive() \`caller\_modifiers\_recursive() →\` \[\`Modifiers\`\](/glider-ide/api/modifiers.md) The function will retrieve \*\*\*extended\*\*\*\*\*/\*\*\*\*\*inter-procedural\*\*\* modifiers, meaning it works recursively. It returns the Modifiers object representing all the modifiers that ultimately call the function in question. ## Query Example \`\`\`python from glider import \* def query(): modifiers = Functions().with\_name("onlyOwner").caller\_modifiers\_recursive().exec(2) return modifiers \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/call.md). # Call The class represents any type of call inside an \[instruction\](/glider-ide/api/instruction.md). The type of call can be different, such as an event call (emit Log();)), a function call, or an external call, etc. A full list of supported call types can be seen in CallType.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_all\_modifier\_names.md). # Functions.with\\\_all\\\_modifier\\\_names() \`with\_all\_modifier\_names(names: List\[str\], sensitivity: bool = True) →\` \[\`Functions\`\](/glider-ide/api/functions.md) Adds a filter to get functions that have modifiers with all the given names. ## Example \`\`\`python from glider import \* def query(): functions = Functions().with\_all\_modifier\_names(\['lock', 'onlyOwner'\]).exec(1) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.modifiers.md). # Functions.modifiers() \`modifiers() →\` \[\`Modifiers\`\](/glider-ide/api/modifiers.md) ## Query Example \`\`\`python from glider import \* def query(): modifiers = ( Functions() .with\_name("swapTokens") .modifiers() .exec(5) ) return modifiers \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contract/contract.errors.md). # Contract.errors() \`errors() →\` \[\`Errors\`\](/glider-ide/api/errors.md) ## Example query \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 13) for contract in contracts: errors = contract.errors().exec() for error in errors: print(error.signature) return contracts \`\`\` ## Example output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/call/call.get\_call\_type.md). # Call.get\\\_call\\\_type() \`get\_call\_type() →\` \[\`CallType\`\](/glider-ide/api/value/call/calltype.md) The Call represents all types of call values: external, internal, log emit, etc. This function can be used to get the type of the call. \*\*Query Example\*\* \`\`\`python from glider import \* def query(): instructions = ( Instructions() .exec(100) .filter(lambda x: x.is\_call()) ) for ins in instructions: call = ins.get\_value() if isinstance(call, Call): print(call.get\_call\_type()) return instructions \`\`\` \*\*Output\*\*

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/value.md). # Value - \[Value.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/value/value/value.backward\_df.md): Returns a list of all previous instructions/arguments of the current point in the data flow graph. - \[Value.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/value/value.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[Value.expression\](https://docs.r.xyz/glider-ide/api/value/value/value.expression.md): Returns the value's expression. - \[Value.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/value/value/value.forward\_df.md): Returns a list of all instructions following the current point in the current data flow graph - \[Value.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/value/value.forward\_df\_recursive.md): Returns a list of all instructions following the current point in the current data flow graph and outside of that - \[Value.get\\\_arg\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_arg\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is an argument variable. - \[Value.get\\\_callee\\\_values()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_callee\_values.md): Returns the list of Call values of current value - \[Value.get\\\_global\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_global\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is a GlobalVariable. - \[Value.get\\\_local\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_local\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is a LocalVariable. - \[Value.get\\\_state\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_state\_vars.md): Returns a list of VarValue objects of current value whose corresponding object is a StateVariable. - \[Value.get\\\_vars()\](https://docs.r.xyz/glider-ide/api/value/value/value.get\_vars.md): Returns a list of all VarValue objects of current value. - \[Value.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/value/value/value.has\_global\_df.md): Returns true when the value interacts with a global variable such as msg.sender, msg.data, etc. from inside the function. - \[Value.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/value/value.has\_global\_df\_recursive.md): Returns true when the value interacts with a global variable such as msg.sender, msg.data, etc. across multiple functions. - \[Value.instruction\](https://docs.r.xyz/glider-ide/api/value/value/value.instruction.md): Returns the instruction in which the value is. - \[Value.is\\\_main\\\_value()\](https://docs.r.xyz/glider-ide/api/value/value/value.is\_main\_value.md): Returns true if the value doesn't have a parent value, false otherwise - \[Value.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/value/value/value.is\_tainted.md): Returns whether the value is tainted. - \[Value.parent\\\_value\](https://docs.r.xyz/glider-ide/api/value/value/value.parent\_value.md) - \[Value.source\\\_code()\](https://docs.r.xyz/glider-ide/api/value/value/value.source\_code.md) - \[Value.type\](https://docs.r.xyz/glider-ide/api/value/value/value.type.md): Returns the type of the value
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contract/contract.source\_code.md). # Contract.source\\\_code() \`source\_code() → str\` ## Example query \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1) print(contracts\[0\].source\_code()) return contracts \`\`\` ## Example output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contract/contract.address.md). # Contract.address() \`address() → str\` ## Example query \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("Deposit").exec(5) for contract in contracts: print(contract.address()) return contracts \`\`\` ## Example output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.without\_modifier\_names.md). # Functions.without\\\_modifier\\\_names() \`without\_modifier\_names(\`\*\`names: List\[str\]\`\*\`,\`\` \`\*\`sensitivity: bool = True\`\*\`) →\` \[\`Functions\`\](/glider-ide/api/functions.md) Adds a filter to get functions that don't have any modifier with one of the given names. ## Example \`\`\`python from glider import \* def query(): # Fetch a list of functions without modifiers from the given list functions = Functions().without\_modifier\_names(\['onlyAdmin','onlyOwner'\]).exec(10) return functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contract/contract.is\_main.md). # Contract.is\\\_main() \`is\_main() → bool\` The engine marks the contract as main, if it is the one being executed on the deployed address ## Example query \`\`\`python from glider import \* def query(): mains = Contracts().exec(30).filter(lambda x: x.is\_main()) return mains \`\`\` ## Example output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions.md). # Functions The aim of this class is to represent a set of functions and give functionality to filter functions with specified properties. Bases: \[\`Callables\`\](/glider-ide/api/callables.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_modifier\_properties.md). # Functions.with\\\_modifier\\\_properties() \`with\_modifier\_properties(expr) →\` \[\`Functions\`\](/glider-ide/api/functions.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df.md). # Point.forward\\\_df() \`forward\_df() →\` \[\`APISet\`\](/glider-ide/api/iterables/apiset.md)\`\[\`\[\`Point\`\](/glider-ide/api/point/point.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): instructions = Instructions().exec(1,1) forward\_dfs = instructions\[0\].forward\_df() for forward\_df in forward\_dfs: print(forward\_df.source\_code()) return instructions \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/functions/functions.with\_properties\_considering\_modifiers.md). # Functions.with\\\_properties\\\_considering\\\_modifiers() \`with\_properties\_considering\_modifiers(expr) →\` \[\`Functions\`\](/glider-ide/api/functions.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sig.md). # GlobalFilters.MSG\\\_SIG The MSG\\\_SIG property is used to add a filter to include or exclude functions that calls \`msg.sig\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.MSG\_SIG) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_basefee.md). # GlobalFilters.BLOCK\\\_BASEFEE The BLOCK\\\_BASEFEE property is used to add a filter to include or exclude functions that calls \`block.basefee\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.BLOCK\_BASEFEE) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/contract/contract.get\_contracts\_from\_same\_src\_file.md). # Contract.get\\\_contracts\\\_from\\\_same\\\_src\\\_file()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_value.md). # GlobalFilters.MSG\\\_VALUE The MSG\\\_VALUE property is used to add a filter to include or exclude functions that calls \`msg.value\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.MSG\_VALUE) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sender.md). # GlobalFilters.MSG\\\_SENDER The MSG\\\_SENDER property is used to add a filter to include or exclude functions that calls \`msg.sender\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.MSG\_SENDER) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_coinbase.md). # GlobalFilters.BLOCK\\\_COINBASE The BLOCK\\\_COINBASE property is used to add a filter to include or exclude functions that calls \`block.coinbase\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.BLOCK\_COINBASE) .exec(1, 4) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters.md). # GlobalFilters - \[GlobalFilters.BLOCK\\\_BASEFEE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_basefee.md) - \[GlobalFilters.BLOCK\\\_CHAIN\\\_ID\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_chain\_id.md) - \[GlobalFilters.BLOCK\\\_COINBASE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_coinbase.md) - \[GlobalFilters.BLOCK\\\_DIFFICULTY\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_difficulty.md) - \[GlobalFilters.BLOCK\\\_GAS\\\_LIMIT\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_gas\_limit.md) - \[GlobalFilters.BLOCK\\\_NUMBER\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_number.md) - \[GlobalFilters.BLOCK\\\_PREVRANDAO\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_prevrandao.md) - \[GlobalFilters.BLOCK\\\_TIME\\\_STAMP\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_time\_stamp.md) - \[GlobalFilters.MSG\\\_DATA\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_data.md) - \[GlobalFilters.MSG\\\_GAS\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_gas.md) - \[GlobalFilters.MSG\\\_SENDER\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sender.md) - \[GlobalFilters.MSG\\\_SIG\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sig.md) - \[GlobalFilters.MSG\\\_VALUE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_value.md) - \[GlobalFilters.NOW\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.now.md) - \[GlobalFilters.TX\\\_GASPRICE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_gasprice.md) - \[GlobalFilters.TX\\\_ORIGIN\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_origin.md) - \[GlobalFilters.get()\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.get.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_origin.md). # GlobalFilters.TX\\\_ORIGIN The TX\\\_ORIGIN property is used to add a filter to include or exclude functions that calls \`tx.origin\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.TX\_ORIGIN) .exec(1, 2) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/point.md). # Point - \[Point.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.backward\_df.md): Returns the list of all previous points of the current point in the data flow graph. - \[Point.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[Point.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df.md): Returns the list of all points following the current point in the current data flow graph. - \[Point.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[Point.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.has\_global\_df.md): Returns true if the point has a dependency on external variables in the current data flow graph, false otherwise. - \[Point.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.has\_global\_df\_recursive.md): Returns true if the point has a dependency on external variables in the current data flow graph and outside of that, false otherwise. - \[Point.get\\\_all\\\_tainted\\\_paths\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_all\_tainted\_paths\_affecting\_point.md): Returns all paths containing tainted data that influence the point. This includes not only tainted paths within the current function but also extends to paths belonging to other functions. - \[Point.get\\\_tainted\\\_path\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_tainted\_path\_affecting\_point.md): Returns the first encountered path containing tainted data that influence the point, if it exists. Otherwise, returns an empty tuple. - \[Point.get\\\_tainted\\\_sources\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_tainted\_sources\_affecting\_point.md): Returns all tainted sources that influence the point. This includes not only tainted sources within the current function but also extends to sources belonging to other functions. - \[Point.df\\\_reaching\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/point/point/point.df\_reaching\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument to which data flow reaches from the point (it may reach through a chain of calls). - \[Point.df\\\_reaches\\\_from\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/point/point/point.df\_reaches\_from\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element the argument number from which data flow reaches to the point (it may reach through a chain of calls). - \[Point.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/point/point/point.is\_tainted.md): Returns whether the point is tainted.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_gas.md). # GlobalFilters.MSG\\\_GAS The MSG\\\_GAS property is used to add a filter to include or exclude functions that calls \`msg.gas\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.MSG\_GAS) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_difficulty.md). # GlobalFilters.BLOCK\\\_DIFFICULTY The BLOCK\\\_DIFFICULTY property is used to add a filter to include or exclude functions that calls \`block.difficulty\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.BLOCK\_DIFFICULTY) .exec(1, 4) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_gasprice.md). # GlobalFilters.TX\\\_GASPRICE The TX\\\_GASPRICE property is used to add a filter to include or exclude functions that calls \`tx.gasprice\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.TX\_GASPRICE) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_chain\_id.md). # GlobalFilters.BLOCK\\\_CHAIN\\\_ID The BLOCK\\\_CHAIN\\\_ID property is used to add a filter to include or exclude functions that calls \`block.chainid\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.BLOCK\_CHAIN\_ID) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_data.md). # GlobalFilters.MSG\\\_DATA The MSG\\\_DATA property is used to add a filter to include or exclude functions that calls \`msg.data\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.MSG\_DATA) .exec(1) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.get.md). # GlobalFilters.get()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.is\_constructor.md). # Function.is\\\_constructor() \`is\_constructor() → bool\` ## Example \`\`\`python from glider import \* def query(): constructors = ( Functions() .exec(100) .filter(lambda x: x.is\_constructor()) ) return constructors \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.is\_view.md). # Function.is\\\_view() \`is\_view() → bool\` ## Example \`\`\`python from glider import \* def query(): view\_functions = ( Functions() .exec(100) .filter(lambda x: x.is\_view()) ) return view\_functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.is\_global.md). # Function.is\\\_global() \`is\_global() → bool\` ## Query Example \`\`\`python from glider import \* def query(): global\_functions = ( Functions() .exec(85\_200) .filter(lambda x: x.is\_global()) ) return global\_functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_gas\_limit.md). # GlobalFilters.BLOCK\\\_GAS\\\_LIMIT The BLOCK\\\_GAS\\\_LIMIT property is used to add a filter to include or exclude functions that calls \`block.gaslimit\`. ### Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_globals(GlobalFilters.BLOCK\_GAS\_LIMIT) .exec(1, 4) ) return functions \`\`\` ### Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.is\_internal.md). # Function.is\\\_internal() \`is\_internal() → bool\` ## Example \`\`\`python from glider import \* def query(): internal\_functions = ( Functions() .exec(20) .filter(lambda x: x.is\_internal()) ) return internal\_functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.modifiers.md). # Function.modifiers() \`modifiers() →\` \[\`Modifiers\`\](/glider-ide/api/modifiers.md) Returns the \[Modifiers\](/glider-ide/api/modifiers.md) object for the modifiers of the function. ## Example \`\`\`python from glider import \* def query(): # Fetch a list of functions functions = Functions().with\_one\_property(\[MethodProp.HAS\_MODIFIERS\]).exec(1) # Retrieve the modifiers of the first function modifers = functions\[0\].modifiers().exec() return modifers \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_component.md). # ValueExpression.get\\\_component() \`get\_component(i: int) -> Union\[\`\[\`Value\`\](/glider-ide/api/value/value.md)\`,\` \[\`NoneObject\`\](/glider-ide/api/internal/noneobject.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): instructions = ( Instructions() .new\_variable\_instructions() .exec(1,1) ) for instruction in instructions: print(instruction.get\_value().get\_component(0)) print(instruction.get\_value().get\_component(0).expression) return instructions \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.is\_pure.md). # Function.is\\\_pure() \`is\_pure() → bool\` ## Example \`\`\`python from glider import \* def query(): pure\_functions = ( Functions() .exec(100) .filter(lambda x: x.is\_pure()) ) return pure\_functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df.md). # VarValue.forward\\\_df() \`forward\_df() →\` \[\`APISet\`\](/glider-ide/api/iterables/apiset.md)\`\[\`\[\`Point\`\](/glider-ide/api/point/point.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): instructions = Instructions().exec(1, 611) for instruction in instructions: components = instruction.get\_components() for component in components: if isinstance(component, VarValue): points = component.forward\_df() print(points) for forward\_df in points: print(forward\_df.source\_code()) return instructions \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df\_recursive.md). # VarValue.forward\\\_df\\\_recursive() \`forward\_df\_recursive() →\` \[\`APISet\`\](/glider-ide/api/iterables/apiset.md)\`\[\`\[\`Point\`\](/glider-ide/api/point/point.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): instructions = Instructions().exec(1, 611) for instruction in instructions: components = instruction.get\_components() for component in components: if isinstance(component, VarValue): points = component.forward\_df\_recursive() for forward\_df in points: print(forward\_df.source\_code()) return instructions \`\`\` ## Output Example

To clarify, what is the difference between \`forward\_df\` and \`forward\_df\_recursive\`? \`forward\_df\_recursive\` operates recursively. Below is the output when \`forward\_df\` was used instead of \`forward\_df\_recursive\` :

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/valueexpression.md). # ValueExpression - \[ValueExpression.get\\\_dest()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_dest.md): Returns the Value object representing the leftmost destination of the instruction - \[ValueExpression.get\\\_dests()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_dests.md): Returns the list of Value objects representing the destination(s) of the value expression. This function returns the list to accommodate cases like'a = b = c= 5',where the destinations are\\\[a, b, c\]. - \[ValueExpression.get\\\_component()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_component.md): Returns the value expression's i-th component - \[ValueExpression.get\\\_components()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_components.md): Returns the value expression's components - \[ValueExpression.get\\\_assignment\\\_operator()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_assignment\_operator.md): Returns the Operator that assigned the variable in the variable assignment. - \[ValueExpression.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.has\_global\_df.md): Returns true if the value expression has a dependency on external variables in the current data flow graph, false otherwise. - \[ValueExpression.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.has\_global\_df\_recursive.md): Returns true if the value expression has a dependency on external variables in the current data flow graph and outside of that, false otherwise. - \[ValueExpression.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.is\_tainted.md): Returns whether the value expression is tainted.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function.md). # Function The class represents a single function object. Bases: \[\`Callable\`\](/glider-ide/api/callables.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.memory\_type.md). # ArgumentVariable.memory\\\_type \`property memory\_type: str\` ## Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .exec(1, 50) ) for func in functions: args = func.arguments() print(f"Memory type: {args.list()\[0\].get\_variable().memory\_type}") return functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.caller\_functions.md). # Function.caller\\\_functions() \`caller\_functions() →\` \[\`Functions\`\](/glider-ide/api/functions.md) The caller functions are the functions that directly call the specified function. ## Example \`\`\`python from glider import \* def query(): # Retrieve a function with name \_afterTokenTransfer functions = Functions().with\_name('\_afterTokenTransfer').exec(1) # Return its caller functions return functions\[0\].caller\_functions().exec() \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df\_recursive.md). # VarValue.backward\\\_df\\\_recursive() \`backward\_df\_recursive() →\` \[\`APISet\`\](/glider-ide/api/iterables/apiset.md)\`\[\`\[\`Point\`\](/glider-ide/api/point/point.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): instructions = Instructions().exec(1, 187) for instruction in instructions: components = instruction.get\_components() for component in components: points = component.backward\_df\_recursive() print(points) for backward\_df in points: print(backward\_df.source\_code()) return instructions \`\`\` ## Output Example

To clarify, what is the difference between \`backward\_df\` and \`backward\_df\_recursive\`? \`backward\_df\_recursive\` operates recursively. Below is the output when \`backward\_df\` was used instead of \`backward\_df\_recursive\` :

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/argumentpoints.md). # ArgumentPoints The class represents the list of ArgumentPoints.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.type.md). # Variable.type \`property type: Type\` ## Query Example \`\`\`python from glider import \* def query(): state\_variables = ( StateVariables() .exec(5) ) print(state\_variables\[0\].type) return state\_variables \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.name.md). # Variable.name \`property name: str\` ## Query Example \`\`\`python from glider import \* def query(): state\_variables = ( StateVariables() .exec(5) ) print(state\_variables\[0\].name) return state\_variables \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/externalpoint.md). # ExternalPoint This class inherits from the abstract base class Point and represents a specific instance of an external point, encapsulating a single external variable associated with a function or modifier.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/function/function.is\_payable.md). # Function.is\\\_payable() \`is\_payable() → bool\` ## Example \`\`\`python from glider import \* def query(): payable\_functions = ( Functions() .exec(1000) .filter(lambda x: x.is\_payable()) ) return payable\_functions \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.get\_dests.md). # ValueExpression.get\\\_dests() \`get\_dests() →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`Value\`\](/glider-ide/api/value.md) \`|\` \[\`NoneObject\`\](/glider-ide/api/internal/noneobject.md)\`\]\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.index.md). # ArgumentVariable.index \`property data: Dict\` ## Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .exec(1, 50) ) for func in functions: args = func.arguments() print(f"Argument index: {args.list()\[0\].get\_variable().index}") return functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.has\_global\_df.md). # ValueExpression.has\\\_global\\\_df() \`has\_global\_df() → bool\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.source\_code.md). # Variable.source\\\_code() \`source\_code() → str\` ## Query Example \`\`\`python from glider import \* def query(): state\_variables = ( StateVariables() .exec(5) ) print(state\_variables\[0\].source\_code()) return state\_variables \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/indexaccess/indexaccess.get\_index.md). # IndexAccess.get\\\_index() \`get\_index() →\` \[\`Value\`\](/glider-ide/api/value.md) \`|\` \[\`NoneObject\`\](/glider-ide/api/internal/noneobject.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/valueexpression/valueexpression.is\_tainted.md). # ValueExpression.is\\\_tainted() \`is\_tainted() → bool\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_address.md). # ExternalPoint.get\\\_address() ## Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_name("transferFrom") .exec(1) ) arguments = functions\[0\].arguments() print(arguments.list()\[0\].get\_address()) print(arguments.list()\[0\].source\_code()) return functions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/callnode.md). # CallNode Bases: \*\*object\*\* {% content-ref url="/pages/cQ5zjwlPAaO2EFdnMv5U" %} \[CallNode.callee\\\_functions()\](/glider-ide/api/internal/callnode/callnode.callee\_functions.md) {% endcontent-ref %} {% content-ref url="/pages/HjwaIg9PwlW7guDeZWni" %} \[CallNode.callees()\](/glider-ide/api/internal/callnode/callnode.callees.md) {% endcontent-ref %} {% content-ref url="/pages/wPa1H5Gm5exy6JvtlkUx" %} \[CallNode.caller\\\_functions()\](/glider-ide/api/internal/callnode/callnode.caller\_functions.md) {% endcontent-ref %} {% content-ref url="/pages/uOeXnFqhoDluNw6RXC8c" %} \[CallNode.callers()\](/glider-ide/api/internal/callnode/callnode.callers.md) {% endcontent-ref %} {% content-ref url="/pages/FHo6nt44xmIeNO143XGU" %} \[Broken mention\](broken://pages/FHo6nt44xmIeNO143XGU) {% endcontent-ref %} {% content-ref url="/pages/UmJIflK5AEM3IO5LPmnf" %} \[Broken mention\](broken://pages/UmJIflK5AEM3IO5LPmnf) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable.md). # ArgumentVariable - \[ArgumentVariable.index\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.index.md): Returns the position of the argument variable in the function signature. The index represents the argument variable's position, starting from 0. - \[ArgumentVariable.data\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.data.md): Returns detailed information about the argument variable. - \[ArgumentVariable.memory\\\_type\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.memory\_type.md): Returns the memory type of the argument variable. - \[ArgumentVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.source\_code.md): Returns the source code of the argument variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.with\_name.md). # ArgumentPoints.with\\\_name() \`with\_name(arg\_name: str, sensitivity: bool = False) →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`ArgumentPoint\`\](/glider-ide/api/point/argumentpoint.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_name("transfer") .exec(1) ) arguments = functions\[0\].arguments() print(arguments.with\_name("\_amount").source\_code()) return functions \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/statepoint/statepoint.get\_variable.md). # StatePoint.get\\\_variable() \`get\_variable() →\` \[\`StateVariable\`\](/glider-ide/api/variables/statevariables/statevariable.md) ## Query Example \`\`\`python from glider import \* def query(): instructions = ( Functions() .with\_name("latestRoundData") .exec(1) .instructions() .exec() ) for instruction in instructions: for df in instruction.get\_components(): if isinstance(df, VarValue): for state\_point in df.get\_defining\_points(): print(state\_point.get\_variable()) return instructions \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/operator/operatortype.md). # OperatorType The OperatorType represents a type of operator.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables.md). # StateVariables - \[StateVariables.exec()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.exec.md): Executes the formed query and returns the list of StateVariable objects. - \[StateVariables.with\\\_all\\\_properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_all\_properties.md): Adds a filter to get state variables that have all given properties - \[StateVariables.with\\\_one\\\_property()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_one\_property.md): Adds a filter to get state variables that at least have one of the given properties. - \[StateVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_type.md): Adds a filter to get state variables that have the given type. - \[StateVariable.with\\\_name()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariable.with\_name.md): Adds a filter to get state variables with the given name
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/globalpoint.md). # GlobalPoint This class inherits from ExternalPoint and represents a specific instance of a global point, encapsulating a single global variable associated with a function or modifier.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/statevariables.md). # StateVariables - \[StateVariables\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables.md): The aim of this class is to filter state variables with some properties. - \[StateVariables.exec()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.exec.md): Executes the formed query and returns the list of StateVariable objects. - \[StateVariables.with\\\_all\\\_properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_all\_properties.md): Adds a filter to get state variables that have all given properties - \[StateVariables.with\\\_one\\\_property()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_one\_property.md): Adds a filter to get state variables that at least have one of the given properties. - \[StateVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_type.md): Adds a filter to get state variables that have the given type. - \[StateVariable.with\\\_name()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariable.with\_name.md): Adds a filter to get state variables with the given name - \[StateVariableProp\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariableprop.md): Class that represents the properties of StateVariables - \[StateVariable\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable.md): This class represents a state variable. - \[StateVariable.contract()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.contract.md): Returns state variable's parent contract if it exists. - \[StateVariable.is\\\_accessible()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_accessible.md): Returns true if the state variable is accessible in current contract, otherwise returns false. The state variable isn't accessible in current contract if it is a private inherited state variable - \[StateVariable.is\\\_constant()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_constant.md): Returns true if the state variable is constant, otherwise returns false. - \[StateVariable.is\\\_immutable()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_immutable.md): Returns true if the state variable is immutable, otherwise returns false. - \[StateVariable.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_internal.md): Returns true if the visibility of the state variable is internal, otherwise returns false. - \[StateVariable.is\\\_private()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_private.md): Returns true if the visibility of the state variable is private, otherwise returns false. - \[StateVariable.is\\\_public()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_public.md): Returns true if the visibility of the state variable is public, otherwise returns false. - \[StateVariable.properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.properties.md): Returns the list of the state variable's properties. - \[StateVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.source\_code.md): Returns the source code of the state variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/event/event.address.md). # Event.address \*\`property\`\*\` \`\`address:\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): # Find contracts with the suffix "ERC20" contracts = Contracts().with\_name\_suffix("ERC20").exec(100) for c in contracts: for event in c.events().exec(): # For each contract's event, print the event address print(event.address) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/event/event.arg\_list.md). # Event.arg\\\_list() \`arg\_list() → List\[str\]\` ## Example query \`\`\`python from glider import \* def query(): # Find contracts with an event called "Transfer" contracts = Contracts().with\_event\_name('Transfer').exec(100) for contract in contracts: for event in contract.events().exec(): if event.name == "Transfer": # For each "Transfer" event in every single contract, print its arguments print(event.arg\_list()) return \[\] \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariableprop.md). # StateVariableProp Base: Enum State Variable Properties: \* \`CONSTANT: str = 'constant'\` \* \`IMMUTABLE: str = 'immutable'\` \* \`INTERNAL: str = 'internal'\` \* \`PRIVATE: str = 'private'\` \* \`PUBLIC: str = 'public'\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enum/enum.min.md). # Enum.min \*\`property\`\*\` \`\`min:\`\` \`\*\`int\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 71) for enum in contracts\[0\].enums().exec(): print(enum.min) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable.md). # StateVariable - \[StateVariable.contract()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.contract.md): Returns state variable's parent contract if it exists. - \[StateVariable.is\\\_accessible()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_accessible.md): Returns true if the state variable is accessible in current contract, otherwise returns false. The state variable isn't accessible in current contract if it is a private inherited state variable - \[StateVariable.is\\\_constant()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_constant.md): Returns true if the state variable is constant, otherwise returns false. - \[StateVariable.is\\\_immutable()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_immutable.md): Returns true if the state variable is immutable, otherwise returns false. - \[StateVariable.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_internal.md): Returns true if the visibility of the state variable is internal, otherwise returns false. - \[StateVariable.is\\\_private()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_private.md): Returns true if the visibility of the state variable is private, otherwise returns false. - \[StateVariable.is\\\_public()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_public.md): Returns true if the visibility of the state variable is public, otherwise returns false. - \[StateVariable.properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.properties.md): Returns the list of the state variable's properties. - \[StateVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.source\_code.md): Returns the source code of the state variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/operator/operator.get\_operator.md). # Operator.get\\\_operator() \`get\_operator() →\` \[\`OperatorType\`\](/glider-ide/api/value/operator/operatortype.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/indexaccess.md). # IndexAccess The class represents an index access of a mapping inside an \[instruction\](/glider-ide/api/instruction.md).
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enum/enum.name.md). # Enum.name \*\`property\`\*\` \`\`name:\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 71) for enum in contracts\[0\].enums().exec(): print(enum.name) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/argumentpoint.md). # ArgumentPoint This class inherits from ExternalPoint and represents a specific instance of an argument point, encapsulating a single argument variable associated with a function or modifier.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/indexaccess/indexaccess.get\_sequence.md). # IndexAccess.get\\\_sequence() \`get\_sequence() →\` \[\`Value\`\](/glider-ide/api/value.md) \`|\` \[\`NoneObject\`\](/glider-ide/api/internal/noneobject.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point/statepoint.md). # StatePoint This class inherits from ExternalPoint and represents a specific instance of a state point, encapsulating a single state variable associated with a function or modifier.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/literal.md). # Literal - \[Literal.type\](https://docs.r.xyz/glider-ide/api/value/literal/literal.type.md): Returns the type of the literal. - \[Literal.value\](https://docs.r.xyz/glider-ide/api/value/literal/literal.value.md): Returns the value of the literal.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enum/enum.address.md). # Enum.address \*\`property\`\*\` \`\`address:\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 71) for enum in contracts\[0\].enums().exec(): print(enum.address) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enum.md). # Enum - \[Enum.address\](https://docs.r.xyz/glider-ide/api/enum/enum.address.md): Returns the address of the enum. - \[Enum.data\](https://docs.r.xyz/glider-ide/api/enum/enum.data.md): Returns the data of the enum. - \[Enum.max\](https://docs.r.xyz/glider-ide/api/enum/enum.max.md): Returns the maximum value of the enum. - \[Enum.min\](https://docs.r.xyz/glider-ide/api/enum/enum.min.md): Returns the minimum value of the enum. - \[Enum.name\](https://docs.r.xyz/glider-ide/api/enum/enum.name.md): Returns the name of the enum. - \[Enum.source\\\_code()\](https://docs.r.xyz/glider-ide/api/enum/enum.source\_code.md): Returns the source code of the enum. - \[Enum.values\](https://docs.r.xyz/glider-ide/api/enum/enum.values.md): Returns the values of the enum.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value.md). # Value This class represents different parts of an \[instruction\](/glider-ide/api/instruction.md). While an easy way to understand what instruction is is to imagine that it is everything that ends with ";" e.g \`\`\`solidity require(predicate); uint a = 0; foo(bar()-1); \`\`\` These are all examples of instructions. Value represents the internal parts of instruction, e.g for the instruction: \`\`\`solidity foo(bar()-1); \`\`\` the \`bar()\` - call, \`bar()-1\` expression and \`foo(bar()-1)\` calls will be the values of the instruction. While the Value is a very important part of the engine, one will most likely never work with the Value class directly, but rather with the derived classes of the Value, which are: \* \[Call\](/glider-ide/api/value/call.md) \* \[Var\](broken://pages/rnn4Jn6B6awdIwYN0lHF) \* \[ValueExpression\](/glider-ide/api/value/valueexpression.md) \* ValueContractType \* \[Literal\](/glider-ide/api/value/literal.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/value/operator.md). # Operator The class represents an operator called inside an \[instruction\](/glider-ide/api/instruction.md).
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.private.md). # StateVariableProp.PRIVATE
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/localvariable.md). # LocalVariable - \[LocalVariable.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/localvariable/localvariable.get\_parent.md): Returns parent function/modifier of the local variable. - \[LocalVariable.memory\\\_type\](https://docs.r.xyz/glider-ide/api/localvariable/localvariable.memory\_type.md): Returns the memory type of the local variable. - \[LocalVariable.type\](https://docs.r.xyz/glider-ide/api/localvariable/localvariable.type.md): Returns the type of the local variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/localvariables.md). # LocalVariables - \[LocalVariables.list()\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.list.md): Returns the list of all local variables. - \[LocalVariables.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.with\_memory\_type.md): Returns the list of local variables having specified memory type. - \[LocalVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.with\_type.md): Returns the list of local variables having specified type.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enum/enum.max.md). # Enum.max \*\`property\`\*\` \`\`max:\`\` \`\*\`int\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 71) for enum in contracts\[0\].enums().exec(): print(enum.max) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable.md). # LocalVariable - \[LocalVariable.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.get\_parent.md): Returns parent function/modifier of the local variable. - \[LocalVariable.index\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.index.md): Returns the index of the local variable in relation to the function scope. - \[LocalVariable.memory\\\_property\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.memory\_property.md): Returns the memory type of the local variable. - \[LocalVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.source\_code.md): Returns the source code of the local variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument.md). # Argument - \[Argument.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/argument/argument.backward\_df.md): Returns a list of all previous instructions/arguments of the current point in the data flow graph. Intraprocedural - \[Argument.data\](https://docs.r.xyz/glider-ide/api/argument/argument.data.md): Returns the internal data of the Argument - \[Argument.df\\\_reaches\\\_from\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/argument/argument.df\_reaches\_from\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument number from which data flow reaches the argument (it may reach through a chain of calls). - \[Argument.df\\\_reaching\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/argument/argument.df\_reaching\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument to which data flow reaches from the argument (it may reach through a chain of calls). - \[Argument.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/argument/argument.forward\_df.md): Returns a list of all instructions following the current point in the current data flow graph. - \[Argument.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/argument/argument.get\_parent.md): Returns parent function/modifier of the argument. - \[Argument.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/argument/argument.get\_variable.md): Returns the Variable representing the argument. - \[Argument.index\](https://docs.r.xyz/glider-ide/api/argument/argument.index.md): Returns the index of the argument. - \[Argument.memory\\\_type\](https://docs.r.xyz/glider-ide/api/argument/argument.memory\_type.md): Returns the memory type of the argument - \[Argument.name\](https://docs.r.xyz/glider-ide/api/argument/argument.name.md): Returns the name of the argument. - \[Argument.procedure\\\_graph\\\_node\](https://docs.r.xyz/glider-ide/api/argument/argument.procedure\_graph\_node.md) - \[Argument.source\\\_code()\](https://docs.r.xyz/glider-ide/api/argument/argument.source\_code.md): Returns the source code of the argument. - \[Argument.type\](https://docs.r.xyz/glider-ide/api/argument/argument.type.md): Returns the type of the argument.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variable/variable.type.md). # Variable.type \`property: type -> Type\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.procedure\_graph\_node.md). # Argument.procedure\\\_graph\\\_node
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.immutable.md). # StateVariableProp.IMMUTABLE
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variable.md). # Variable - \[Variable.name\](https://docs.r.xyz/glider-ide/api/variable/variable.name.md): Returns the name of the variable. - \[Variable.canonical\\\_name\](https://docs.r.xyz/glider-ide/api/variable/variable.canonical\_name.md): Returns the canonical name of the variable. - \[Variable.type\](https://docs.r.xyz/glider-ide/api/variable/variable.type.md): Returns the type of the variable
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables.md). # StateVariables Bases: Queryable
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/dfpathfinder.md). # DfPathFinder - \[DfPathFinder.get\\\_all\\\_paths\\\_between\\\_points()\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.get\_all\_paths\_between\_points.md): Returns all data flow paths between two points. - \[DfPathFinder.get\\\_path\\\_between\\\_points()\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.get\_path\_between\_points.md): Returns the first encountered data flow path from source to destination, if it exists. Otherwise, returns an empty tuple. - \[DfPathFinder.is\\\_df\\\_path()\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.is\_df\_path.md): Checks if there is a data flow path from source to destination.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.name.md). # StateVariable.name() \`name() → str\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(3) for state\_var in state\_vars: print(state\_var.name()) return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{1 item "print\_output":\[3 items 0:string"\_owner" 1:string"\_decimals" 2:string"uniswapV2Router" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variable/variable.canonical\_name.md). # Variable.canonical\\\_name \`property: canonical\_name -> str\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.constant.md). # StateVariableProp.CONSTANT
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_name.md). # StateVariables.with\\\_name() \`with\_name(name: str, sensitivity: bool = True) →\` \[\`StateVariables\`\](/glider-ide/api/statevariables.md) \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().with\_name('balance', sensitivity=False).exec(2) for state\_var in state\_vars: print(state\_var.name()) print(state\_var.properties()) return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{1 item "print\_output":\[4 items 0:string"balance" 1:string"\['internal'\]" 2:string"BALANCE" 3:string"\['constant', 'internal'\]" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariableprop/statevariableprop.internal.md). # StateVariableProp.INTERNAL
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variable/variable.name.md). # Variable.name \`property: name -> str\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal.md). # Internal - \[CallGraph\](https://docs.r.xyz/glider-ide/api/internal/callgraph.md) - \[CallGraph.all\\\_nodes()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.all\_nodes.md): Returns the list of all call nodes. - \[CallGraph.get\\\_corresponding\\\_node\\\_for\\\_function()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.get\_corresponding\_node\_for\_function.md): Returns the node which represents the given function. - \[CallGraph.nodes()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.nodes.md): Returns the map of all call nodes. The key of the map is the id of a node. - \[CallGraph.with\\\_name()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name.md): Returns a list of call nodes whose corresponding function has the specified name. - \[CallGraph.with\\\_name\\\_not()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name\_not.md): Returns a list of call nodes whose corresponding function doesn't have the specified name. - \[CallGraph.with\\\_name\\\_prefix()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name\_prefix.md): Returns the list of call nodes whose corresponding function name has the specified suffix. - \[CallGraph.with\\\_name\\\_suffix()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_name\_suffix.md): Returns the list of call nodes whose corresponding function name has the specified suffix. - \[CallGraph.with\\\_names()\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_names.md): Returns the list of call nodes whose corresponding function has the specified name. - \[CallNode\](https://docs.r.xyz/glider-ide/api/internal/callnode.md): The class represents a single node in a call graph. - \[CallNode.callable()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callable.md): Returns corresponding callable. - \[CallNode.callable\\\_name()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callable\_name.md): Returns corresponding callable name. - \[CallNode.callee\\\_functions()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callee\_functions.md): Returns Functions object for the functions that are called from the current node corresponding function. - \[CallNode.callee\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callee\_modifiers.md): Returns Modifiers object for the modifiers that are called from the current node corresponding callable. - \[CallNode.callees()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callees.md): Returns a list of CallNode whose corresponding functions are called from the current CallNode corresponding function. - \[CallNode.caller\\\_functions()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.caller\_functions.md): Returns Functions object for the functions that call the current node corresponding function. - \[CallNode.caller\\\_modifiers()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.caller\_modifiers.md): Returns Modifiers object for the modifiers that call the current node corresponding callable. - \[CallNode.callers()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callers.md): Returns a list of CallNodes whose corresponding functions call the current node's corresponding function. - \[CallNode.callees\\\_recursive()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callees\_recursive.md): Returns all nodes corresponding the callees of the corresponding callable with the callees of those callables etc. - \[CallNode.callers\\\_recursive()\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.callers\_recursive.md): Returns all nodes corresponding the callers of the corresponding callable with the callers of those callables etc. - \[CallNode.is\\\_function\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.is\_function.md): Returns whether the node represents a function. - \[CallNode.is\\\_modifier\](https://docs.r.xyz/glider-ide/api/internal/callnode/callnode.is\_modifier.md): Returns whether the node represents a modifier. - \[Queryable\](https://docs.r.xyz/glider-ide/api/internal/queryable.md) - \[Queryable.query\\\_aggregator\](https://docs.r.xyz/glider-ide/api/internal/queryable/queryable.query\_aggregator.md) - \[NoneObject\](https://docs.r.xyz/glider-ide/api/internal/noneobject.md) - \[NoneObject.dump\\\_into\\\_json()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.dump\_into\_json.md) - \[NoneObject.instructions()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.instructions.md) - \[NoneObject.name()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.name.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/structs.md). # Structs - \[Structs.exec()\](https://docs.r.xyz/glider-ide/api/structs/structs.exec.md): Executes the formed query and returns the list of Struct objects.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.get\_path\_between\_points.md). # DfPathFinder.get\\\_path\\\_between\\\_points() \`get\_path\_between\_points(source:\` \[\`Point\`\](/glider-ide/api/point.md)\`, destination:\` \[\`Point\`\](/glider-ide/api/point.md)\`) → PointPath\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/noneobject.md). # NoneObject - \[NoneObject.dump\\\_into\\\_json()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.dump\_into\_json.md) - \[NoneObject.instructions()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.instructions.md) - \[NoneObject.name()\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.name.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/errors.md). # Errors - \[Errors.exec()\](https://docs.r.xyz/glider-ide/api/errors/errors.exec.md): Executes the formed query and returns the list of Error objects.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_private.md). # StateVariable.is\\\_private() \`is\_private() → bool\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(100) for state\_var in state\_vars: if state\_var.is\_private(): print(state\_var.name()) return \[state\_var.contract()\] return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{2 items "contract":string"0xd705c24267ed3c55458160104994c55c6492dfcf" "contract\_name":string"Ownable" } "root":{1 item "print\_output":\[1 item 0:string"\_owner" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/arguments/convertor.md). # Convertor The class is used in conjunction with \[Arguments\](/glider-ide/api/arguments.md) functions such as \[with\\\_type\\\_convertible()\](/glider-ide/api/arguments/arguments.with\_type\_convertible.md). For example, if you want to treat \`uint160\` as a type \`address\`, you can use the \`Convertor\` to add that conversion type. Bases: \*\*object\*\* {% content-ref url="/pages/7TH21mImLMNtdAsFG2dr" %} \[Convertor.add()\](/glider-ide/api/arguments/convertor/convertor.add.md) {% endcontent-ref %} {% content-ref url="/pages/CV31CzihGrNl0f6KsOoR" %} \[Convertor.can\\\_convert()\](/glider-ide/api/arguments/convertor/convertor.can\_convert.md) {% endcontent-ref %} {% content-ref url="/pages/rha2XFjmW7zoifsU9G43" %} \[Convertor.set\\\_conversions()\](/glider-ide/api/arguments/convertor/convertor.set\_conversions.md) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.is\_df\_path.md). # DfPathFinder.is\\\_df\\\_path() \`is\_df\_path(source:\` \[\`Point\`\](/glider-ide/api/point.md)\`, destination:\` \[\`Point\`\](/glider-ide/api/point.md)\`) → bool\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/events.md). # Events - \[Events.exec()\](https://docs.r.xyz/glider-ide/api/events/events.exec.md): Executes the formed query and returns the list of Event objects.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/callgraph.md). # CallGraph This class represents a call graph. Bases: \*\*object\*\* {% content-ref url="/pages/DuRHioYqTZlgADa7yJG8" %} \[CallGraph.with\\\_name\\\_prefix()\](/glider-ide/api/internal/callgraph/callgraph.with\_name\_prefix.md) {% endcontent-ref %} {% content-ref url="/pages/eGlEx1F0RE2ljCt8fitr" %} \[CallGraph.with\\\_name\\\_suffix()\](/glider-ide/api/internal/callgraph/callgraph.with\_name\_suffix.md) {% endcontent-ref %} {% content-ref url="/pages/XT6I74M7tqt9HdNOOmxH" %} \[CallGraph.nodes()\](/glider-ide/api/internal/callgraph/callgraph.nodes.md) {% endcontent-ref %} {% content-ref url="/pages/TFq6HmmFaBgpo21aAJRa" %} \[CallGraph.with\\\_name()\](/glider-ide/api/internal/callgraph/callgraph.with\_name.md) {% endcontent-ref %} {% content-ref url="/pages/fvHvwrAt3AliVCJ6BpbV" %} \[CallGraph.with\\\_name\\\_not()\](/glider-ide/api/internal/callgraph/callgraph.with\_name\_not.md) {% endcontent-ref %}
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/structfield.md). # StructField - \[StructField.name\](https://docs.r.xyz/glider-ide/api/structfield/structfield.name.md): Returns the name of the struct field. - \[StructField.type\](https://docs.r.xyz/glider-ide/api/structfield/structfield.type.md): Returns the type of the struct field.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.name.md). # Argument.name \*\`property\`\*\` \`\`name\`\*\`: str\`\* ## Query Example \`\`\`python from glider import \* def query(): functions = Functions().with\_arg\_count(2).exec(100) for f in functions: for arg in f.arguments().list(): print(f"Argument: {arg.get\_variable().name}") return \[\] \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/dfpathfinder/dfpathfinder.get\_all\_paths\_between\_points.md). # DfPathFinder.get\\\_all\\\_paths\\\_between\\\_points() \`get\_all\_paths\_between\_points(source:\` \[\`Point\`\](/glider-ide/api/point.md)\`,dest:\` \[\`Point\`\](/glider-ide/api/point.md)\`) →\` \[\`APISet\`\](/glider-ide/api/iterables/apiset.md)\`\[PointPath\]\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.name.md). # NoneObject.name()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/queryable.md). # Queryable - \[Queryable.query\\\_aggregator\](https://docs.r.xyz/glider-ide/api/internal/queryable/queryable.query\_aggregator.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/localvariables/localvariables.list.md). # LocalVariables.list() \`list() → List\[\`\[\`LocalVariable\`\](/glider-ide/api/localvariable.md)\`\]\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): funcs = Functions().exec(500) for func in funcs: local\_vars = func.local\_variables().list() for local\_var in local\_vars: print(local\_var.name) print(local\_var.type.name) return \[local\_var.get\_parent()\] return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{3 items "contract":string"0xd705c24267ed3c55458160104994c55c6492dfcf" "contract\_name":string"SafeMath" "sol\_function":solidity function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } } "root":{1 item "print\_output":\[2 items 0:string"c" 1:string"uint256" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/iterables/apituple.md). # APITuple
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.memory\_type.md). # Argument.memory\\\_type \*\`property\`\*\` \`\`memory\_type:\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): functions = Functions().with\_arg\_count(2).exec(100) for f in functions: for arg in f.arguments().list(): print(f"Argument: {arg.get\_variable().name} - {arg.get\_variable().memory\_type}") return \[\] \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_internal.md). # StateVariable.is\\\_internal() \`is\_internal() → bool\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(100) for state\_var in state\_vars: if state\_var.is\_internal(): print(state\_var.name()) return \[state\_var.contract()\] return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{2 items "contract":string"0x23297ee054e8f600af482013ddbe856b7178a7d3" "contract\_name":string"LibBytesRichErrors" }, "root":{1 item "print\_output":\[1 item 0:string"INVALID\_BYTE\_OPERATION\_ERROR\_SELECTOR" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.properties.md). # StateVariable.properties() \`properties() → List\[StateVariableProp\]\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(3) for state\_var in state\_vars: print(state\_var.name()) print(state\_var.properties()) return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{1 item "print\_output":\[6 items 0:string"\_owner" 1:string"\['private'\]" 2:string"\_decimals" 3:string"\['private', 'constant'\]" 4:string"uniswapV2Router" 5:string"\['private'\]" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/noneobject/noneobject.instructions.md). # NoneObject.instructions()
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_one\_property.md). # StateVariables.with\\\_one\\\_property() \`with\_one\_property(properties: List\[\`\[\`StateVariableProp\`\](/glider-ide/api/statevariables/statevariableprop.md)\`\]) →\` \[\`StateVariables\`\](/glider-ide/api/statevariables.md) \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().with\_one\_property(\[StateVariableProp.IMMUTABLE, StateVariableProp.PUBLIC\]).exec(3) for state\_var in state\_vars: print(state\_var.name()) print(state\_var.properties()) return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{1 item "print\_output":\[6 items 0:string"tradeOpen" 1:string"\['public'\]" 2:string"name" 3:string"\['public'\]" 4:string"symbol" 5:string"\['public'\]" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_constant.md). # StateVariable.is\\\_constant() \`is\_constant() → bool\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(10) for state\_var in state\_vars: if state\_var.is\_constant(): print(state\_var.name()) return \[state\_var.contract()\] return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{2 items "contract":string"0xd705c24267ed3c55458160104994c55c6492dfcf" "contract\_name":string"Token" }, "root":{1 item "print\_output":\[1 item 0:string"\_decimals" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/filters.md). # Filters - \[GlobalFilters\](https://docs.r.xyz/glider-ide/api/filters/globalfilters.md): Class containing all custom filters for global values. - \[GlobalFilters.BLOCK\\\_BASEFEE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_basefee.md) - \[GlobalFilters.BLOCK\\\_CHAIN\\\_ID\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_chain\_id.md) - \[GlobalFilters.BLOCK\\\_COINBASE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_coinbase.md) - \[GlobalFilters.BLOCK\\\_DIFFICULTY\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_difficulty.md) - \[GlobalFilters.BLOCK\\\_GAS\\\_LIMIT\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_gas\_limit.md) - \[GlobalFilters.BLOCK\\\_NUMBER\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_number.md) - \[GlobalFilters.BLOCK\\\_PREVRANDAO\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_prevrandao.md) - \[GlobalFilters.BLOCK\\\_TIME\\\_STAMP\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.block\_time\_stamp.md) - \[GlobalFilters.MSG\\\_DATA\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_data.md) - \[GlobalFilters.MSG\\\_GAS\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_gas.md) - \[GlobalFilters.MSG\\\_SENDER\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sender.md) - \[GlobalFilters.MSG\\\_SIG\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_sig.md) - \[GlobalFilters.MSG\\\_VALUE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.msg\_value.md) - \[GlobalFilters.NOW\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.now.md) - \[GlobalFilters.TX\\\_GASPRICE\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_gasprice.md) - \[GlobalFilters.TX\\\_ORIGIN\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.tx\_origin.md) - \[GlobalFilters.get()\](https://docs.r.xyz/glider-ide/api/filters/globalfilters/globalfilters.get.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.get\_variable.md). # Argument.get\\\_variable() \`get\_variable() ->\` \[\`Variable\`\](/glider-ide/api/variable.md) ## Example Query \`\`\`python from glider import \* def query(): func = Contracts().non\_interface\_contracts().functions().with\_arg\_count(1).exec(1, 1)\[0\] print(func.arguments().list()\[0\].get\_variable()) return \[\] \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_type.md). # StateVariables.with\\\_type() \`with\_type(variable\_type: str) →\` \[\`StateVariables\`\](/glider-ide/api/statevariables.md) \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().with\_type('mapping(address => bool)').exec(1) for state\_var in state\_vars: print(state\_var.name()) print(state\_var.properties()) return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{1 item "print\_output":\[2 items 0:string"\_isExcludedFromFee" 1:string"\['private'\]" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.forward\_df.md). # Argument.forward\\\_df() \`forward\_df() → List\[\`\[\`Instruction\`\](/glider-ide/api/instruction.md)\`\]\` ## Example Query \`\`\`python from glider import \* def query(): func = Contracts().non\_interface\_contracts().functions().with\_arg\_count(1).exec(1, 1)\[0\] instrs = \[\] for ins in func.arguments().list()\[0\].forward\_df(): instrs.append(ins) return instrs \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.source\_code.md). # Argument.source\\\_code() \`source\_code() → str\` ## Query Example \`\`\`python from glider import \* def query(): functions = Functions().exec(100) for f in functions: for arg in f.arguments().list(): print(f"Argument Source code: {arg.source\_code()}") return \[\] \`\`\` ## Output Example

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.with\_names.md). # CallGraph.with\\\_names() \`with\_names(\`\*\`names: List\[str\],sensitivity: bool = True\`\*\`) →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`CallNode\`\](/glider-ide/api/internal/callnode.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): # Fetch the first contract contracts = Contracts().exec(1) # Get call nodes of functions ending with "Sender" call\_nodes = contracts\[0\].call\_graph().with\_names(\["\_msgSender", "\_msgData"\]) for node in call\_nodes: print(node.callable\_name()) return contracts \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/argument/argument.backward\_df.md). # Argument.backward\\\_df() \`backward\_df() → List\[Point\]\` As Argument has no intraprocedural backward dataflow, this function solely exists to comply with the glider architecture, but if used will return an empty list \`\`\`python from glider import \* def query(): func = Contracts().non\_interface\_contracts().functions().with\_arg\_count(1).exec(1)\[0\] for ins in func.arguments().list()\[0\].backward\_df(): print(ins.source\_code()) return \[func\] \`\`\` \`\`\`json "root":{3 items "contract":string"0xd705c24267ed3c55458160104994c55c6492dfcf" "contract\_name":string"Token" "sol\_function":solidity function balanceOf(address account) public view override returns (uint256) { return \_balances\[account\]; } } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.contract.md). # StateVariable.contract() \`contract() →\` \[\`Contract\`\](/glider-ide/api/contract.md) \`| NoneObject\` The function returns the Contract object (if exists, otherwise NoneObject) of the contract where the state variable is declared. \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(1) print(state\_vars\[0\].name()) return \[state\_vars\[0\].contract()\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{2 items "contract":string"0xd705c24267ed3c55458160104994c55c6492dfcf" "contract\_name":string"Ownable" }, "root":{1 item "print\_output":\[1 item 0:string"\_owner" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enums.md). # Enums - \[Enums.exec()\](https://docs.r.xyz/glider-ide/api/enums/enums.exec.md): Executes the formed query and returns the list of Enum objects.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/events/events.exec.md). # Events.exec() \`exec(limit\_count: int= 0, offset\_count: int = 0) →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`Event\`\](/glider-ide/api/event.md)\`\]\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/iterables.md). # Iterables - \[APITuple\](https://docs.r.xyz/glider-ide/api/iterables/apituple.md) - \[APISet\](https://docs.r.xyz/glider-ide/api/iterables/apiset.md) - \[APIList\](https://docs.r.xyz/glider-ide/api/iterables/apilist.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_public.md). # StateVariable.is\\\_public() \`is\_public() → bool\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(100) for state\_var in state\_vars: if state\_var.is\_public(): print(state\_var.name()) return \[state\_var.contract()\] return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{2 items "contract":string"0xd705c24267ed3c55458160104994c55c6492dfcf" "contract\_name":string"Token" }, "root":{1 item "print\_output":\[1 item 0:string"tradeOpen" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariable/statevariable.is\_immutable.md). # StateVariable.is\\\_immutable() \`is\_immutable() → bool\` \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().exec(100) for state\_var in state\_vars: if state\_var.is\_immutable(): print(state\_var.name()) return \[state\_var.contract()\] return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{2 items "contract":string"0x5e6b2027f794a069bfa5e80195e22544d40ae600" "contract\_name":string"NATEHALLINAN" }, "root":{1 item "print\_output":\[1 item 0:string"uniswapV2Router" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/statevariables/statevariables.with\_all\_properties.md). # StateVariables.with\\\_all\\\_properties() \`with\_all\_properties(properties: List\[\`\[\`StateVariableProp\`\](/glider-ide/api/statevariables/statevariableprop.md)\`\]) →\` \[\`StateVariables\`\](/glider-ide/api/statevariables.md) \*\*Query Example\*\* \`\`\`python from glider import \* def query(): state\_vars = StateVariables().with\_all\_properties(\[StateVariableProp.IMMUTABLE, StateVariableProp.PUBLIC\]).exec(1) for state\_var in state\_vars: print(state\_var.name()) print(state\_var.properties()) return \[\] \`\`\` \*\*Output\*\* \`\`\`solidity "root":{1 item "print\_output":\[2 items 0:string"uniswapV2Router" 1:string"\['public', 'immutable'\]" \] } \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/modifier.md). # Modifier The class represents a single modifier object. \\ Bases: \[\`Callable\`\](/glider-ide/api/callable.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/errors/errors.exec.md). # Errors.exec() \`exec(\`\*\`limit\_count: int = 0, offset\_count: int = 0\`\*\`) →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`Error\`\](/glider-ide/api/error.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 2265) for contract in contracts: for error in contract.errors().exec(): print(error.name) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/internal/callgraph/callgraph.get\_corresponding\_node\_for\_function.md). # CallGraph.get\\\_corresponding\\\_node\\\_for\\\_function() \`get\_corresponding\_node\_for\_function(function:\` \[\`Callable\`\](/glider-ide/api/callable.md)\`) →\` \[\`CallNode\`\](/glider-ide/api/internal/callnode.md) ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1) contract = contracts\[0\] for func in contract.functions().exec(): call\_node = contract.call\_graph().get\_corresponding\_node\_for\_function(func) print(call\_node.callable\_name()) return contracts \`\`\` ## Example Output \`\`\`json \[ { "print\_output": \[ "\_msgSender", "\_msgData" \] } \] \`\`\`
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables.md). # Variables - \[Variable\](https://docs.r.xyz/glider-ide/api/variables/variable.md) - \[Variable.canonical\\\_name\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.canonical\_name.md): Returns the canonical name of the variable. - \[Variable.data\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.data.md): Returns the canonical name of the variable. - \[Variable.name\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.name.md): Returns the name of the variable. - \[Variable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.source\_code.md): Returns source code of variable - \[Variable.type\](https://docs.r.xyz/glider-ide/api/variables/variable/variable.type.md): Returns the type of the variable. - \[StateVariables\](https://docs.r.xyz/glider-ide/api/variables/statevariables.md) - \[StateVariables\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables.md): The aim of this class is to filter state variables with some properties. - \[StateVariables.exec()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.exec.md): Executes the formed query and returns the list of StateVariable objects. - \[StateVariables.with\\\_all\\\_properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_all\_properties.md): Adds a filter to get state variables that have all given properties - \[StateVariables.with\\\_one\\\_property()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_one\_property.md): Adds a filter to get state variables that at least have one of the given properties. - \[StateVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariables.with\_type.md): Adds a filter to get state variables that have the given type. - \[StateVariable.with\\\_name()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariables/statevariable.with\_name.md): Adds a filter to get state variables with the given name - \[StateVariableProp\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariableprop.md): Class that represents the properties of StateVariables - \[StateVariable\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable.md): This class represents a state variable. - \[StateVariable.contract()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.contract.md): Returns state variable's parent contract if it exists. - \[StateVariable.is\\\_accessible()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_accessible.md): Returns true if the state variable is accessible in current contract, otherwise returns false. The state variable isn't accessible in current contract if it is a private inherited state variable - \[StateVariable.is\\\_constant()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_constant.md): Returns true if the state variable is constant, otherwise returns false. - \[StateVariable.is\\\_immutable()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_immutable.md): Returns true if the state variable is immutable, otherwise returns false. - \[StateVariable.is\\\_internal()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_internal.md): Returns true if the visibility of the state variable is internal, otherwise returns false. - \[StateVariable.is\\\_private()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_private.md): Returns true if the visibility of the state variable is private, otherwise returns false. - \[StateVariable.is\\\_public()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.is\_public.md): Returns true if the visibility of the state variable is public, otherwise returns false. - \[StateVariable.properties()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.properties.md): Returns the list of the state variable's properties. - \[StateVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/statevariables/statevariable/statevariable.source\_code.md): Returns the source code of the state variable. - \[LocalVariables\](https://docs.r.xyz/glider-ide/api/variables/localvariables.md): The class represents the list of local variables. - \[LocalVariables\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables.md): The class represents the list of local variables. - \[LocalVariables.list()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.list.md): Returns the list of all local variables. - \[LocalVariables.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_memory\_type.md): Returns the list of local variables having specified memory type. - \[LocalVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_type.md): Returns the list of local variables having specified type. - \[LocalVariable\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable.md): The class represents a single local variable. - \[LocalVariable.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.get\_parent.md): Returns parent function/modifier of the local variable. - \[LocalVariable.index\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.index.md): Returns the index of the local variable in relation to the function scope. - \[LocalVariable.memory\\\_property\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.memory\_property.md): Returns the memory type of the local variable. - \[LocalVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.source\_code.md): Returns the source code of the local variable. - \[GlobalVariables\](https://docs.r.xyz/glider-ide/api/variables/globalvariables.md): Classes that describe Solidity global variables - \[ArgumentVariable\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable.md): The class represents a single argument variable. - \[ArgumentVariable.index\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.index.md): Returns the position of the argument variable in the function signature. The index represents the argument variable's position, starting from 0. - \[ArgumentVariable.data\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.data.md): Returns detailed information about the argument variable. - \[ArgumentVariable.memory\\\_type\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.memory\_type.md): Returns the memory type of the argument variable. - \[ArgumentVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/argumentvariable/argumentvariable.source\_code.md): Returns the source code of the argument variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/enums/enums.exec.md). # Enums.exec() \`exec(\`\*\`limit\_count: int = 0, offset\_count: int = 0\`\*\`) →\` \[\`APIList\`\](/glider-ide/api/iterables/apilist.md)\`\[\`\[\`Enum\`\](/glider-ide/api/enum.md)\`\]\` ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 71) for contract in contracts: for enum in contract.enums().exec(): print(enum.name) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/modifier/modifier.functions.md). # Modifier.functions() \`functions() →\` \[\`Functions\`\](/glider-ide/api/functions.md) Returns the \[Functions\](/glider-ide/api/functions.md) object for the functions which have the modifier. An example to retrieve the functions object for the modifier is as below \`\`\`python from glider import \* def query(): modifierlist = Modifiers()\\ .with\_name\_prefix("check")\\ .exec(1) results = \[\] for modd in modifierlist: for funcs in modd.functions().exec(): results.append(funcs) return results \`\`\` ## Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/structfield/structfield.name.md). # StructField.name \*\`property\`\*\` \`\`name :\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("DefaultReserveInterestRateStrategy").exec(1) for contract in contracts: for struct in contract.structs().exec(): for struct\_field in struct.fields: print(struct\_field.name) return contracts \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/struct/struct.address.md). # Struct.address \`property address: str\` ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("DefaultReserveInterestRateStrategy").exec(1) for contract in contracts: for struct in contract.structs().exec(): print(struct.address) return contracts \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/struct.md). # Struct - \[Struct.address\](https://docs.r.xyz/glider-ide/api/struct/struct.address.md): Returns the address of the struct. - \[Struct.data\](https://docs.r.xyz/glider-ide/api/struct/struct.data.md): Returns the data of the struct. - \[Struct.fields\](https://docs.r.xyz/glider-ide/api/struct/struct.fields.md): Returns the fields of the struct. - \[Struct.name\](https://docs.r.xyz/glider-ide/api/struct/struct.name.md): Returns the name of the struct. - \[Struct.source\\\_code()\](https://docs.r.xyz/glider-ide/api/struct/struct.source\_code.md): Returns the source code of the struct.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/modifiers/modifiers.placeholder\_instructions.md). # Modifiers.placeholder\\\_instructions() \`placeholder\_instructions() →\` \[\`Instructions\`\](/glider-ide/api/instructions.md) Returns placeholder \[instructions\](/glider-ide/api/instructions.md) for the set of \[Modifiers\](/glider-ide/api/modifiers.md). The placeholder or placer instruction is the "\\\_" (underline) instruction which defines where the function code must be inline in the modifier. ## Query Example An example to retrieve the instructions used by the modifiers with the name \`lock\` is as below \`\`\`python from glider import \* def query(): instructionlist = Modifiers()\\ .with\_name("lock")\\ .placer\_instructions()\\ .exec(5,5) return instructionlist \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/modifiers.md). # Modifiers Bases: \[\`Callables\`\](/glider-ide/api/callables.md)
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/structfield/structfield.type.md). # StructField.type \*\`property\`\*\` \`\`type :\`\` \`\*\`Type\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("DefaultReserveInterestRateStrategy").exec(1) for contract in contracts: for struct in contract.structs().exec(): for struct\_field in struct.fields: print(struct\_field.type) return contracts \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/error.md). # Error - \[Error.address\](https://docs.r.xyz/glider-ide/api/error/error.address.md): Returns the address of the error. - \[Error.args\](https://docs.r.xyz/glider-ide/api/error/error.args.md): Returns the list of arguments of the error. - \[Error.name\](https://docs.r.xyz/glider-ide/api/error/error.name.md): Returns the name of the error. - \[Error.signature\](https://docs.r.xyz/glider-ide/api/error/error.signature.md): Returns the signature of the error. - \[Error.source\\\_code()\](https://docs.r.xyz/glider-ide/api/error/error.source\_code.md): Returns the source code of the error.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/localvariables.md). # LocalVariables - \[LocalVariables\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables.md): The class represents the list of local variables. - \[LocalVariables.list()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.list.md): Returns the list of all local variables. - \[LocalVariables.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_memory\_type.md): Returns the list of local variables having specified memory type. - \[LocalVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_type.md): Returns the list of local variables having specified type. - \[LocalVariable\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable.md): The class represents a single local variable. - \[LocalVariable.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.get\_parent.md): Returns parent function/modifier of the local variable. - \[LocalVariable.index\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.index.md): Returns the index of the local variable in relation to the function scope. - \[LocalVariable.memory\\\_property\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.memory\_property.md): Returns the memory type of the local variable. - \[LocalVariable.source\\\_code()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariable/localvariable.source\_code.md): Returns the source code of the local variable.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/error/error.args.md). # Error.args \*\`property\`\*\` \`\`args:\`\` \`\*\`List\[Dict\]\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 2265) for contract in contracts: for error in contract.errors().exec(): print(f"{error.name} - {error.args}") return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables.md). # LocalVariables - \[LocalVariables.list()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.list.md): Returns the list of all local variables. - \[LocalVariables.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_memory\_type.md): Returns the list of local variables having specified memory type. - \[LocalVariables.with\\\_type()\](https://docs.r.xyz/glider-ide/api/variables/localvariables/localvariables/localvariables.with\_type.md): Returns the list of local variables having specified type.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/variables/globalvariables.md). # GlobalVariables These classes describe global variables, such as \`msg.sender\` and \`block.timestamp\`, in the glider. \* \`MsgData\` | Base: \`GlobalVariabe\` | object that represents \`msg.data\` \* \`MsgGas\` | Base: \`GlobalVariable\` | object that represents \`msg.gas\` \* \`MsgSender\` | Base: \`GlobalVariable\` | object that represents \`msg.sender\` \* \`MsgSig\` | Base: \`GlobalVariable\` | object that represents \`msg.sig\` \* \`MsgValue\` | Base: \`GlobalVariable\` | object that represents \`msg.value\` \* \`Now\` | Base: \`GlobalVariable\` | object that represents \`now\` \* \`TxGasprice\` | Base: \`GlobalVariable\` | object that represents \`tx.gasprice\` \* \`TxOrigin\` | Base: \`GlobalVariable\` | object that represents \`tx.origin\` \* \`GlobalVariable\` | Base: Object
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/event.md). # Event - \[Event.address\](https://docs.r.xyz/glider-ide/api/event/event.address.md): Returns the name of the event. - \[Event.arg\\\_list()\](https://docs.r.xyz/glider-ide/api/event/event.arg\_list.md): Returns arguments' types of the event. - \[Event.data\](https://docs.r.xyz/glider-ide/api/event/event.data.md): Returns the data of the event. - \[Event.name\](https://docs.r.xyz/glider-ide/api/event/event.name.md): Returns the name of the event. - \[Event.signature\](https://docs.r.xyz/glider-ide/api/event/event.signature.md): Returns the signature of the event. - \[Event.source\\\_code()\](https://docs.r.xyz/glider-ide/api/event/event.source\_code.md): Returns the source code of the event.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/point.md). # Point - \[Point\](https://docs.r.xyz/glider-ide/api/point/point.md): Abstract base class representing a point in a data flow graph. - \[Point.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.backward\_df.md): Returns the list of all previous points of the current point in the data flow graph. - \[Point.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[Point.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df.md): Returns the list of all points following the current point in the current data flow graph. - \[Point.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[Point.has\\\_global\\\_df()\](https://docs.r.xyz/glider-ide/api/point/point/point.has\_global\_df.md): Returns true if the point has a dependency on external variables in the current data flow graph, false otherwise. - \[Point.has\\\_global\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/point/point.has\_global\_df\_recursive.md): Returns true if the point has a dependency on external variables in the current data flow graph and outside of that, false otherwise. - \[Point.get\\\_all\\\_tainted\\\_paths\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_all\_tainted\_paths\_affecting\_point.md): Returns all paths containing tainted data that influence the point. This includes not only tainted paths within the current function but also extends to paths belonging to other functions. - \[Point.get\\\_tainted\\\_path\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_tainted\_path\_affecting\_point.md): Returns the first encountered path containing tainted data that influence the point, if it exists. Otherwise, returns an empty tuple. - \[Point.get\\\_tainted\\\_sources\\\_affecting\\\_point()\](https://docs.r.xyz/glider-ide/api/point/point/point.get\_tainted\_sources\_affecting\_point.md): Returns all tainted sources that influence the point. This includes not only tainted sources within the current function but also extends to sources belonging to other functions. - \[Point.df\\\_reaching\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/point/point/point.df\_reaching\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element is the argument to which data flow reaches from the point (it may reach through a chain of calls). - \[Point.df\\\_reaches\\\_from\\\_functions\\\_arguments()\](https://docs.r.xyz/glider-ide/api/point/point/point.df\_reaches\_from\_functions\_arguments.md): Returns the list of pairs, where the first element is the function and the second element the argument number from which data flow reaches to the point (it may reach through a chain of calls). - \[Point.is\\\_tainted()\](https://docs.r.xyz/glider-ide/api/point/point/point.is\_tainted.md): Returns whether the point is tainted. - \[ArgumentPoint\](https://docs.r.xyz/glider-ide/api/point/argumentpoint.md): Base class ExternalPoint - \[ArgumentPoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/argumentpoint/argumentpoint.get\_variable.md): Return object of argument variable - \[ArgumentPoints\](https://docs.r.xyz/glider-ide/api/point/argumentpoints.md): Base class: object - \[ArgumentsPoints.with\\\_memory\\\_type()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentspoints.with\_memory\_type.md): Returns the list of ArgumentPoints having specified memory type. - \[ArgumentPoints.with\\\_name()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.with\_name.md): Returns the list of ArgumentPoints having specified name. - \[ArgumentPoints.with\\\_type()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.with\_type.md): Returns the list of ArgumentPoints having specified type. - \[ArgumentPoints.list()\](https://docs.r.xyz/glider-ide/api/point/argumentpoints/argumentpoints.list.md): Convert ArgumentPoints to List\\\[ArgumentPoint\] - \[ExternalPoint\](https://docs.r.xyz/glider-ide/api/point/externalpoint.md): Base class: Point - \[ExternalPoint.get\\\_address()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_address.md): Retrieves the address of the external point. - \[ExternalPoint.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_parent.md): Returns parent function/modifier of the ExternalPoint. - \[ExternalPoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.get\_variable.md): Abstract method that returns object of variable - \[ExternalPoint.source\\\_code()\](https://docs.r.xyz/glider-ide/api/point/externalpoint/externalpoint.source\_code.md): Returns corresponding node in procedure graph. - \[GlobalPoint\](https://docs.r.xyz/glider-ide/api/point/globalpoint.md): Base class: ExternalPoint - \[GlobalPoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/globalpoint/globalpoint.get\_variable.md): Abstract method that returns object of variable - \[StatePoint\](https://docs.r.xyz/glider-ide/api/point/statepoint.md): Base class: ExternalPoint - \[StatePoint.get\\\_variable()\](https://docs.r.xyz/glider-ide/api/point/statepoint/statepoint.get\_variable.md): Method that returns object of variable - \[VarValue\](https://docs.r.xyz/glider-ide/api/point/varvalue.md): Base class: Value, Point - \[VarValue.backward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df.md): Returns the list of all previous points of the current point in the data flow graph. - \[VarValue.backward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.backward\_df\_recursive.md): Returns the list of all previous points of the current point in the current data flow graph and outside of that. - \[VarValue.forward\\\_df()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df.md): Returns the list of all points following the current point in the current data flow graph. - \[VarValue.forward\\\_df\\\_recursive()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.forward\_df\_recursive.md): Returns the list of all points following the current point in the current data flow graph and outside of that. - \[VarValue.get\\\_defining\\\_points()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_defining\_points.md): Returns the points which define the variable. - \[VarValue.get\\\_object\\\_of\\\_var()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_object\_of\_var.md): Returns corresponding object of the variable. - \[VarValue.get\\\_parent()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.get\_parent.md): Returns parent function/modifier of the variable. - \[VarValue.is\\\_depending\\\_on\\\_any\\\_argument()\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.is\_depending\_on\_any\_argument.md): Returns whether the object depends on any of its function's arguments. - \[VarValue.type\](https://docs.r.xyz/glider-ide/api/point/varvalue/varvalue.type.md): Returns the variable's type.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/struct/struct.source\_code.md). # Struct.source\\\_code() ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("DefaultReserveInterestRateStrategy").exec(1) for contract in contracts: for struct in contract.structs().exec(): print(struct.source\_code()) return contracts \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/struct/struct.name.md). # Struct.name \*\`property\`\*\` \`\`name :\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().with\_name("DefaultReserveInterestRateStrategy").exec(1) for contract in contracts: for struct in contract.structs().exec(): print(struct.name) return contracts \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/api/error/error.signature.md). # Error.signature \*\`property\`\*\` \`\`signature :\`\` \`\*\`str\`\* ## Query Example \`\`\`python from glider import \* def query(): contracts = Contracts().exec(1, 2265) for contract in contracts: for error in contract.errors().exec(): print(error.signature) return \[\] \`\`\` ## Example Output

---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-contest/faq.md). # FAQ ⭐ How do I start writing Glider queries? \* Start with the \[Glider Basics\](https://glide.gitbook.io/main/glider-ide/glider-the-basics) \* Join \[Remedy Discord Server\](https://discord.com/invite/remedy) for educational content and support from the Community. ⭐ Can I use AI to navigate through Glider Documentation faster? Yes. If you’re using an external AI assistant (like ChatGPT, Claude, or a local LLM), you can feed it the full Glider API documentation to improve context and accuracy.\\ To generate a single file containing all API docs from our GitHub repo, run this one-line command in your terminal: \`\`\` git clone https://github.com/Hexens/glider-docs tmp-repo 2>/dev/null || (cd tmp-repo && git pull) && find tmp-repo/api -name "\*.md" -type f -print0 | xargs -0 cat > api-docs-merged.md && rm -Rf tmp-repo \`\`\` Is there any Remedy fee if I find a bounty-eligible bug with Glider? No. Remedy doesn’t claim any rewards, fees, or commissions associated with any bug bounties researchers are able to claim. What is “Rarity”? Rarity (Uncommon/Rare/Epic/Legendary) is used to measure Glider query’s quality. It is set by the triager using weighted risk metrics (e.g., Risk Likelihood, Impact, Potential, Initial Damage, Remedy Opinion). Legendary is the rarest. Learn more about rarity and how it's being defined in \[Triage Guidelines\](/glider-ide/glider-contest/triage-guidelines.md) ⭐ Which bugs are queryable with Glider? Ideally participants should come up with any vulnerability scenario that no one has reported yet, if you run out of ideas you can always check out \[Recommended Vulnerabilities to Query\](/glider-ide/glider-contest/recommended-vulnerabilities-to-query.md) for hand-picked bugs that are suggested to formalize as Glider queries. What is Glider Watcher? Glider Watcher lets you schedule recurring query runs and notifies you only when new results appear on-chain. This feature is available exclusively for Legendary Queries. Can I ask to keep my query’s code private and get contest monetary rewards? No, however, in certain cases, the Triager has the right and the ability to set the visibility to hidden after the reward was paid out to the author, to provide ample time for the protocol to be fixed. If the query was hidden by Triager for responsible disclosure to the protocol, after the implementation of the fix or expiration of 60 calendar days after the finding, the query will again become visible. Who and how assess the queries? After query submission, the system creates a thread with a Remedy triager. All communications around the submission take place in that thread. Learn more about the \[Triage Guidelines\](/glider-ide/glider-contest/triage-guidelines.md) What are “optimizations” and why do they matter? Optimizations are improvements to an existing Glider query. They aim to: result in a safer, fresher query that finds more real issues with less noise. How do optimizations work? What happens to the original query? When your optimization is approved, it becomes the active version. The previous one is marked Outdated. The Query DB shows origin and last iteration for credit. What are Glider limitations? Output memory: 200 KB. Execution timeout: 1000 seconds. See more limits in the Glider \[docs\](https://glide.gitbook.io/main/glider-ide/limitations#output-limit). Can I run my query on chains other than Ethereum mainnet? Not yet. On-chain runs are limited to Ethereum mainnet. After approval, we provide a one-time cross-chain results snapshot for supported chains. We’ll add more chains in phases. If you need a specific chain, mention it in your submission thread. ⭐ Where can I ask questions? oin \[Discord\](https://discord.com/invite/remedy) to get help from the community and Glider experts. How to get paid for Glider Contest participation? Write a Glider query that detects a smart contract vulnerability on any EVM chain. Queries targeting past exploits and known vulnerabilities are eligible for rewards.\\ If your query uncovers a real-world issue with funds at risk, your Query Rarity and contest payout may increase!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md). # Custom scope ### What is Custom Scope? [](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md#what-is-custom-scope)
Custom scopes let you run queries against your own set of deployed Solidity contracts instead of an entire chain. This makes queries run faster and gives you precise control over what contracts you work with. ### Why it matters [](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md#why-it-matters)
1\. \*\*Iterate faster\*\*\\ Executing against a full chain can take from a couple of seconds to minutes. With a custom scope, it only takes seconds because you’re querying just a handful of contracts. 2. \*\*Signal over noise\*\*\\ Focus on the exact contracts you care about while you iterate on detections. 3. \*\*Tighter feedback loop\*\*\\ Quickly harden queries before you scale them to chain-wide runs. ### Use case: Rapid incident response [](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md#use-case-rapid-incident-response)
Scenario: a new vulnerability is exploited and you want to ship a Glider query to find other occurrences on-chain. 1. \*\*Collect addresses\*\*\\ Gather the deployed addresses of the vulnerable contracts (from the incident write-up, explorer). 2. \*\*Create a custom scope\*\*\\ Put those addresses in a new scope and compile. 3. \*\*Develop your query\*\*\\ Iterate on the query against the custom scope until it reliably flags the vulnerable contracts. 4. \*\*Scale up safely\*\*\\ Once your query is stable, switch execution to the relevant chain and run it broadly to find additional affected contracts or patterns. Repeat as needed: refine the query in the scope, then re-run on chain to widen coverage. ### Use case: Hitting memory or output limit [](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md#use-case-hitting-memory-or-output-limit)
If your query hits a memory or output limit, you likely need to narrow it down. Check Performance → Profiler, or compile a custom scope and iterate your query against a handful of contracts. ### Create a custom scope [](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md#create-a-custom-scope)
1\. Open \[My Scopes\](https://glide.r.xyz/my-scopes/) → click \[Create new scope\](https://glide.r.xyz/my-scopes/create). 2. Add contracts\\ Add up to 5 addresses from verified contracts on 30+ supported chains. 3. Compile\\ Compilation takes up to a minute 4. Query your scope\\ Once compiled, click Open in IDE to start querying the scope ### Limitations [](https://docs.r.xyz/glider-ide/glider-the-basics/custom-scope.md#limitations)
1\. Users are limited to a single custom scope. You can edit your scope unlimited number of times. 2. Users are limited to deployed contracts only. You may want to deploy your contract on Sepolia if it's not on chain yet. 3. Users are limited to 5 contracts. 4. Users can only add verified contracts. Meaning that if the contract owner didn't verify the source code, it won't be visible. 5. Only scopes with the Compiled successfully status appear in the Execution Scope selector. Pick the scope, then run your queries
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/contracts/exercises.md). # Exercises ## Intro In this section, we will present several exercises that will fortify your Functions query skills. Each exercise provided comes along with a solution if you get stuck. ## \*\*Exercise #1 - Contracts Containing the Term "Swap"\*\* In this exercise, your task is to identify contracts that contain the term "Swap" in their contract names. As we’ve done in previous sections, start by reviewing the \[Glider API documentation\](https://glide.gitbook.io/main/glider-ide/api) to find any Glider functions that can help you find contracts by their name. \*\*Challenge\*\*: Find the necessary Glider function that finds contracts given a regex. Then update the query with the found Glider function. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #2 - Finding Contracts with the "setOracleAddress" Function\*\* Now that we’ve identified contracts with names containing the word "Swap", let’s take it a step further by filtering for contracts that contain the \*\*setOracleAddress\*\* function. \*\*Challenge\*\*: Update your query from Example #1 to filter out contracts that don’t contain the \*\*setOracleAddress\*\* function. {% hint style="info" %} Refer to the \[Contracts API documentation section\](https://glide.gitbook.io/main/glider-ide/api/contracts) to find the function needed to complete this challenge. {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #3 - Finding the Main Contract\*\* A Solidity contract may inherit from parent contracts. Both the main contract and its parent contracts share the same address. When querying contracts, Glider may return multiple associated contracts in the results. To specifically identify the main contract, you can use Glider’s \`mains()\` method. \*\*Challenge\*\*: Update the query to return only the main contracts from the query results. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #4 - Functions Without Modifiers\*\* This query has focused on identifying swap-like contracts that update their oracle address through a Solidity function called \*\*setOracleAddress\*\*. But what if we want to return all functions that don’t have modifiers? Identifying functions without modifiers can help us uncover potential access control vulnerabilities, as these functions may be publicly accessible without restrictions. Thankfully, we can achieve this with Glider! To do so, we’ll: 1\\. Iterate through each contract function. 2\\. Count the number of modifiers applied to each function. 3\\. Filter out functions with modifiers to focus only on unrestricted functions. This approach will give us a list of functions without modifiers, helping us identify any security risks in the contract. \*\*Challenge\*\*: Update the query from Exercise #4 to return functions without modifiers. {% hint style="info" %} Using a \`filter()\` can simplify our query. {% endhint %} {% hint style="info" %} In this query, we’ll need to retrieve each contract’s functions. As a hint, refer to the relevant \[Glider method\](https://glide.gitbook.io/main/glider-ide/api/contracts/contracts.functions) in the documentation that allows you to query a contract’s functions. {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Bonus Challenge We want to look for state variables in a contract. \*\*Challenge\*\*: Identify the Glider class that will query for state variables. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE:
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/instructions/exercises.md). # Exercises ## Intro In this section, we will present several exercises that will fortify your Instructions query skills. Each exercise provided comes along with a solution if you get stuck. ## \*\*Exercise #1 - Find external calls\*\* Now, let’s update this query to find instructions that make external calls to other contracts. To achieve this, we can reference the \[Instructions() section\](https://glide.gitbook.io/main/glider-ide/api/instructions) of the Glider API documentation to identify the function that queries for external calls. \*\*Challenge\*\*: Update the following query such that it queries for external call instructions: \`\`\`python from glider import \* def query(): # CHALLENGE: Update this query such that it looks for external call instructions. return Instructions().exec(10) \`\`\` 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #2 - Find the Instructions that Follow External Calls\*\* Now that we’ve identified external call instructions, let’s take it a step further and find the instructions executed immediately after those external calls.

Instructions following an external call instruction are highlighted in blue
To achieve this, we need to iterate over each instruction and check how many next instructions exist. If 1 or more instructions do exist, then we have a positive hit. {% hint style="info" %} Refer to this \[Glider method\](https://glide.gitbook.io/main/glider-ide/api/instruction/instruction.next\_instructions) to learn how to retrieve an instruction’s next instructions. {% endhint %} \*\*Challenge\*\*: Update the query below to only return external call instructions that are followed by other instructions. \*\*Extra Challenge:\*\* Use the filter() function to exclude instructions that don’t have any next instructions. \`\`\`python from glider import \* def query(): return ( Instructions() .external\_calls() .exec(10) # CHALLENGE: Add your solution here. ) \`\`\` 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #3 - Return instructions that Write to Storage\*\* Now that we’ve identified cases where additional instructions are executed after an external call, let’s take it further by examining these instructions to see if any of them write to the contract’s storage (i.e., update a state variable). To check if an instruction is writing to contract storage, Glider provides a \[dedicated method named is\\\_storage\\\_write()\](https://glide.gitbook.io/main/glider-ide/api/instruction/instruction.is\_storage\_write) we can use. This function allows us to determine whether a given instruction performs a write operation on the contract’s state. \*\*Challenge\*\*: Use the \`is\_storage\_write()\` method to filter instructions and return only external call instructions that are followed by instructions that update the contract’s storage. {% hint style="info" %} Python provides a built-in function called any(). It takes a list, set, or array and returns True if at least one value in the data structure evaluates to True. {% endhint %} {% hint style="info" %} With Glider, you can call a method on a list of items, and that method will automatically be applied to each item in the list. This makes it easy to perform operations on multiple items at once. For example, the following code will return an array of function names: \`\`\`python func\_names = Functions().exec(4).name print(func\_names) \`\`\` {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #4 - External Calls invoking abi.encode\*\* So far, our query identifies external calls and checks if any of the following instructions write to storage. In this final exercise, we want to take it a step further by identifying external call instructions that also invoke \*\*abi.encode\*\*. To achieve this, you’ll need to add an additional filter to your query that checks for cases where the external call instruction includes a call to \*\*abi.encode\*\*. {% hint style="info" %} To retrieve all the calls made within an instruction, use the \[callee\\\_names()\](https://glide.gitbook.io/main/glider-ide/api/instruction/instruction.callee\_names) function. {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Bonus Challenge {% hint style="info" %} Although we have not discussed what an instruction is yet, think of it as a line of code in a function. {% endhint %} We have a query that finds Solidity instructions: \`\`\`python from glider import \* def query(): return ( Instructions() .exec(10) ) \`\`\` We want to update this query to find delegatecall instructions. \*\*Challenge\*\*: Identify the Glider function that, when called on \`Instructions()\`, will return only delegatecall instructions. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE:
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/bonus-challenges.md). # Bonus Challenges Now that we’ve covered the basics of Glider, it’s time to put your knowledge to the test with a series of bonus challenges. These challenges are designed to reinforce what you’ve learned by asking you to create queries that identify specific vulnerabilities, code patterns, or statistics. ## Challenge #1 - Calls to Curve's get\\\_virtual\\\_price() Curve pools have a \*\*get\\\_virtual\\\_price()\*\* function that returns the price of the Curve pool’s LP token. However, due to a \[known reentrancy vulnerability\](https://www.chainsecurity.com/blog/curve-lp-oracle-manipulation-post-mortem) in Curve pools, the \*\*get\\\_virtual\\\_price()\*\* function can be manipulated by attackers. If a third-party contract relies on \*\*get\\\_virtual\\\_price()\*\* to determine the LP token price, that contract can also be vulnerable to exploitation. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Challenge #2 - Find Long Function Names In this challenge, your task is to identify functions that have more than 55 characters in it's function name. {% hint style="info" %} We can use Python's len() function to check how many characters a Solidity function has. {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \[https://glide.r.xyz/query/BK94oa8HZ\](< https://glide.r.xyz/query/BK94oa8HZ>) \## Challenge #3 - Arbitrary Spender Roles Contracts that approve tokens to other addresses must ensure that the spender address is properly whitelisted. Failing to do so can lead to serious security risks. For example, in December 2024, \[Moonhacker experienced an attack\](https://blog.solidityscan.com/moonhacker-vault-hack-analysis-ab122cb226f6) where hackers were able to arbitrarily set the spender address for the approve() function, leading to significant losses. In the next two challenges, we will aim to write a query to identify this vulnerability type. ### Challenge #3a - Get ERC20.approve() Spender In this challenge, your goal is to: 1\\. Find calls to the ERC20 \*\*approve()\*\* function. 2\\. Identify the spender argument passed to the \*\*approve()\*\* function. 3\\. Print the spender argument to the Glider IDE Output panel to confirm your results. {% hint style="info" %} This challenge will require you to use function/methods that you haven’t worked with before. Since the goal is to identify calls and print out call arguments, the following Glider methods will be helpful: \* \[get\\\_components()\](https://glide.gitbook.io/main/glider-ide/api/instruction/instruction.get\_components) – To retrieve the different parts of an instruction. \* \[get\\\_arg()\](https://glide.gitbook.io/main/glider-ide/api/value/call/call.get\_arg) – To find the spender argument in a call. \* \[isinstance()\](https://www.w3schools.com/python/ref\_func\_isinstance.asp) - Checks if a variable belongs to a specific class. {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \### Challenge #3b - Find Arbitrary Spenders In the second part of this challenge, your goal is to determine if the spender argument passed to the \*\*approve()\*\* function comes from a function argument. If the spender originates from a function argument, it likely means that the user can arbitrarily set the spender, which could be a potential security risk. {% hint style="info" %} To check if a variable comes from a function argument, call \[get\\\_object\\\_of\\\_var()\](https://glide.gitbook.io/main/glider-ide/api/point/varvalue/varvalue.get\_object\_of\_var) on the variable and verify if it is an instance of \[ArgumentVariable\](https://glide.gitbook.io/main/glider-ide/api/variables/argumentvariable). {% endhint %} #### \*\*Bonus Task\*\* To reduce noise and focus just on public/external functions, update your query to filter out approve() calls made within private or internal functions. By limiting your results to public or external functions, you can better identify potential vulnerabilities that external users could exploit. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE:
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/intro-to-glider.md). # Intro to Glider ## \*\*Prerequisites Before Getting Started\*\* Before getting started, make sure to \[sign up\](https://account.r.xyz/auth/signup) to access the \[Glider IDE page\](https://glide.r.xyz/), where you’ll be running your queries.

Glider IDE page
\## The Foundational Query In our \[previous section\](/glider-ide/glider-the-basics/intro-to-python/basic-python.md), we looked at a Glider query that looked for swap functions. In this section, we will take that same query and inspect it from a Glider-perspective. To begin, visit the \[Glider IDE page\](https://glide.r.xyz/), paste the query below into the IDE, and click the "Run" button. \`\`\`python from glider import \* def query(): swap\_functions = Functions().with\_name("swap").exec(10) swap\_functions.filter(lambda function : print(function.address())) return swap\_functions \`\`\`

Running a Glider Query
Once the query runs, the Glider query results will appear in the Output panel on the right. These results represent Solidity functions named swap. Each result includes the contract’s address and the corresponding code snippet.

Viewing Glider Results
\## Breaking Down The Foundational Query In this topic, we will go line by line through each code snippet in our foundational query above and describe what's happening. #### \*\*Step 1: Create a Query Function\*\* Every Glider query requires a query() function to be defined like so: \`\`\`python def query(): # Add query logic here \`\`\` The query() function is executed by Glider’s backend engine and represents the core logic of your query, containing all the necessary information for Glider to search for Solidity code patterns. Within this function, you’ll define what to search for, apply any filters, and return the results. Every query must return a list, which will then be displayed in the Output panel of the Glider IDE. #### \*\*Step 2: Creating Functions class instance\*\* In order to find functions named swap, we must first create a functions class instance like below: \`\`\`python Functions() # Create a Functions class instance \`\`\` The Functions class is provided by the Glider API library. #### \*\*Step 3: Filtering by Function Name\*\* \`\`\`python Functions().with\_name("swap") \`\`\` Next, we call the .with\\\_name("swap") method. This tells Glider to specifically look for Solidity functions named swap. #### \*\*Step 4: Executing the Query\*\* \`\`\`python Functions().with\_name("swap").exec(10) \`\`\` Finally, we call .exec(10), which executes the query and retrieves the first 10 results that match our criteria. As mentioned in the \[Intro to Python section\](https://glide.gitbook.io/main/glider-ide/glider-the-basics/intro-to-python/basic-python#integers), .exec() returns a list of results. In this case, the list will contain the swap functions found by Glider. #### \*\*Step 5: Storing the Results\*\* Since .exec(10) returns a list, we can save the list it to a variable for further processing: \`\`\`python swap\_functions = Functions().with\_name("swap").exec(10) \`\`\` Now, swap\\\_functions holds a list of the swap functions Glider found, allowing us to reuse and refine this data in future queries. Now that we found our swap function, let’s continue by exploring how we can iterate through these reulsts and extract additional details! ## Iterating Through The Results In the next code snippet from the query, we call the filter() function. \`\`\`python swap\_functions.filter(lambda function : print(function.address())) \`\`\` As mentioned in the \[Advanced Python section\](https://glide.gitbook.io/main/glider-ide/glider-the-basics/intro-to-python/advanced-python#filtering-lists), the filter() function is used to filter out items in the list we don't want. That said, there is another nifty trick we can use with filter() that doesn't deal with filtering at all! Let's say we want to get more info on each item in the swap\\\_functions variable. One way we can do this is call filter(). Since filter() iterates through the list, we have the ability to access each item in the list. In our case, we can use print() in combination with filter() to get more info on each item. To accomplish this, we call filter() on the swap\\\_functions variable and pass in a lambda function. This lambda function includes print() and call to get a \[function’s address\](https://glide.gitbook.io/main/glider-ide/api/callable/callable.address): \`\`\`python print(function.address()) \`\`\` Since we aren’t assigning the filter() results to a variable, it doesn’t matter whether print() returns True or False. Additionally, we don’t care if any items are filtered out, as we’re not using the filtered results—we’re simply calling filter() on swap\\\_functions. This is a great way to iterate through a list and debug each item. ## Returning Our Results In the final line of our query, we return the swap\\\_functions variable using: \`\`\`python return swap\_functions \`\`\` #### \*\*Why is this necessary?\*\* Every Glider query must include a query() function, and the query() function must return a list. The returned list is what gets displayed in the Output panel of the Glider IDE. In our case, the swap\\\_functions variable contains every swap function found. By returning the swap\\\_functions variable, we ensure that our query results are displayed in the Output panel. After running the query in the Glider IDE, we should see a list of matching functions printed in the Output panel.

Running a Query and Reviewing the Results
\## Conclusion With this query, we can efficiently identify functions named swap and extract additional details by iterating through the results. Of course, this is just the beginning! As we progress through this series, we’ll explore more Glider query features, learning how to expand this query to search for different Solidity components and apply more advanced filtering criteria to refine results. Finally, keep experimenting with the foundational queries we provide. Hands-on experimentation is one of the best ways to gain deeper insights into Glider and master its full potential!
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/contracts/learning-contracts.md). # Learning Contracts ## What are Contracts A Solidity contract is a piece of executable code consisting of state variables, functions, modifiers, and more. Contracts form the backbone of Solidity applications, defining the logic and rules that run on the the EVM. ## Finding Contracts Glider makes it easy to identify contracts using Glider’s Contracts class. Let’s see how this works by running the query below: \`\`\`python from glider import \* def query(): return Contracts().exec(10) \`\`\` After running the query, you should see the first 10 contract results found by Glider displayed in the Output panel.

Glider IDE contract output results
\## Foundational Contracts Query Let's take a look at our foundational contracts query and break down the query code. ### \*\*Query Goal\*\* We are interested in finding "Market" contracts that are eligible to receive ERC-721 tokens. To find these contracts, we will search for contracts that have the name "Market" in them and contain the "onERC721Received" function. The query is below: \`\`\`python from glider import \* def query(): contracts = ( Contracts() .with\_name\_regex("Market") .exec(1000) .filter(lambda contract : "onERC721Received" in contract.functions().exec().name) ) return contracts \`\`\` Now let's start by breaking down each query into sections below. ### Step 1 - Finding Contracts To find smart contracts, we first create an instance of the \[Contracts class\](https://glide.gitbook.io/main/glider-ide/api/contracts): \`\`\`python Contracts() \`\`\` #### \*\*Filtering Contracts by Name Using Regex\*\* Next, we use the .with\\\_name\\\_regex() method provided by Glider. This method searches for contracts whose names match a given regular expression (regex). Since we are looking for contracts that contain the term "Market", we pass "Market" as our regex pattern: \`\`\`python Contracts().with\_name\_regex("Market") \`\`\` This ensures that any contract with "Market" in its name - such as "NFTMarket", "TokenMarketplace", or "MarketExchange" will be included in the results. ### Step 2 - Filtering Contracts that Receive ERC-721 tokens Now that we’ve queried for contracts with "Market" in their names, our next step is to ensure that our results only include contracts designed to receive ERC-721 tokens. Contracts that expect to receive ERC-721 tokens must implement the onERC721Received function. If a contract does not define this function, it is not intending to receive ERC-721 tokens. #### \*\*Filtering with .filter()\*\* We add a .filter() method to our \[method call chain\](https://glide.gitbook.io/main/glider-ide/glider-the-basics/intro-to-python/basic-python#chaining-function-calls) to exclude contracts that lack the onERC721Received function. The filter uses a lambda function to apply this criterion: \`\`\`python .filter(lambda contract: "onERC721Received" in contract.functions().exec().name) \`\`\` #### \*\*Breaking Down the .filter() Function\*\* Let’s take a closer look at how the .filter() function helps us refine our query results: \`\`\`python .filter(lambda contract : "onERC721Received" in contract.functions().exec().name) \`\`\` #### \*\*Adding the Lambda Function\*\* The .filter() method takes a lambda function, which is applied to every contract in the query results. \`\`\`python lambda contract : "onERC721Received" in contract.functions().exec().name \`\`\` #### \*\*Retrieving All Functions in Each Contract\*\* The lambda function first queries all functions in the contract: \`\`\`python contract.functions().exec() \`\`\` Calling .functions() retrieves all defined functions in the contract and calling .exec() executes the query, returning a list of function objects. #### \*\*Checking for onERC721Received\*\* We then access the function names: \`\`\`python contract.functions().exec().name \`\`\` This extracts the names of all functions defined in the contract. Finally, calling "onERC721Received"\`in\` tells Glider to check if "onERC721Received" is inside the list of function names. \`\`\`python "onERC721Received" in contract.functions().exec().name \`\`\` {% hint style="info" %} \*\*Tip\*\*: When we have a list of strings and want to check if a specific string exists in that list, we use the in keyword: \`\`\`python "term to look for" in list \`\`\` {% endhint %} If the function name exists in the list, the expression returns True. If the function does not exist, the expression returns False. #### \*\*Filtering Out Results\*\* Since .filter() only keeps results where the lambda function evaluates to True. This ensures that: \* Contracts defining onERC721Received remain in the results. \* Contracts without onERC721Received are filtered out. This guarantees that our query only includes contracts capable of receiving ERC-721 tokens. ### Step 3 - Returning Contracts Once we’ve completed our query and filtered out unwanted results, we assign the final results to a variable named contracts and return it in the query() function: \`\`\`python return contracts \`\`\` This ensures our results will be displayed in the Glider IDE Output panel. ## Query Results ### \*\*Running the Query\*\* Now that we’ve covered the query, let’s run it in Glider IDE. Paste the following query into the Glider IDE, click “Run”, and wait for the results: \`\`\`python from glider import \* def query(): contracts = ( Contracts() .with\_name\_regex("Market") .exec(1000) .filter(lambda contract : "onERC721Received" in contract.functions().exec().name) ) return contracts \`\`\` ### \*\*Interpreting the Results\*\* Once the query completes, Glider returns a list of contracts and their addresses. Each contract in the results: \* Contains "Market" in its name, as specified in our query. \* Defines the onERC721Received function, confirming it is designed to receive ERC-721 tokens. This ensures we have successfully filtered contracts that both match the "Market" naming criteria and are capable of handling ERC-721 token transfers.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/instructions/learning-instructions.md). # Learning Instructions ## What are Instructions Instructions can be thought of as individual lines of code within a function. They can include anything from an if statement or a function call to a return statement. Instructions are the building blocks of Solidity contracts and represent the operations that the EVM (Ethereum Virtual Machine) will execute. This is why we refer to them as instructions. ## Finding Instructions Let's start by running a simple query to find some instructions: \`\`\`python from glider import \* def query(): return Instructions().exec(3) \`\`\` After running this query in the Glider IDE. You should find 3 instructions returned in the Output panel.

Glider IDE instruction output results
\## Foundational Instructions Query Now that we understand what instructions are, let's walk through our second foundational query in this series, a Glider query designed to look for Solidity instructions that call Solidity's famous transferFrom function. Before we break down the query, let's identify the query goal. ### \*\*Query Goal\*\* 1. Find Solidity instructions that call the transferFrom() function - an ERC-20 function used to transfer tokens from one address to another. 2. Extract and inspect the arguments passed to each transferFrom() call. The query can be found below: \`\`\`python from glider import \* def query(): instructions = ( Instructions() .with\_callee\_name("transferFrom") .exec(3) ) instructions.filter(lambda instruction : print(instruction.get\_value().get\_args().expression)) return instructions \`\`\` ## Breaking The Query Down ### Step 1 - Finding Instructions In the first part of our query, we create an instance of the Instructions class: \`\`\`python Instructions() \`\`\` By initializing this class, we gain access to a variety of Instruction API methods provided by Glider. These methods allow us to further filter and query instructions programmatically. {% hint style="info" %} For a full list of available Instructions methods, refer to the \[Glider API documentation\](https://glide.gitbook.io/main/glider-ide/api/instructions). {% endhint %} Next, we use the .with\\\_callee\\\_name() method, which allows us to locate instructions that contain function calls to transferFrom. This method requires a single argument - the name of the function we want to search for. In our case, we pass "transferFrom" as a string:
.with_callee_name("transferFrom")
\### Step 2 - Execute query Now that we’ve defined a query to search for instructions that call transferFrom, we need to execute it. To do this, we call the .exec() method, which instructs Glider to run the query and return 3 results: \`\`\`python .exec(3) \`\`\` #### \*\*Understanding exec()\*\* The .exec() method accepts two optional arguments: \* \*\*Limit\*\* – Specifies how many results Glider should return. \* \*\*Offset (optional)\*\* – Defines where Glider should start the search (useful for pagination). In our case, we pass in 3 which tells Glider to return the first 3 results. The offset argument is optional so for now we ignore it. {% hint style="info" %} exec() returns a special type of list called \[APIList\](/glider-ide/api/iterables/apilist.md). For now, we won’t focus on the differences between a Python List and APIList, as they won’t impact our use case in this series. {% endhint %} ### Step 3 - Printing function call arguments Now that we have our query results, we can extract additional info from our instructions. In this case, we want to analyze the arguments passed into the transferFrom function calls. There are multiple ways to achieve this, but for this query, we use the \[.filter() method\](https://glide.gitbook.io/main/glider-ide/api/iterables/apilist#the-filter-function) provided by Glider. #### \*\*Using filter() to iterate through results\*\* We’ve previously discussed using filter to \[iterate through results\](https://glide.gitbook.io/main/glider-ide/glider-the-basics/intro-to-glider#iterating-through-the-results) in an earlier section. Here, we’ll use filter again to iterate through our results. The .filter() method accepts either a named function or a lambda function. In our query, we pass a lambda function to filter(): \`\`\`python lambda instruction : print(instruction.get\_value().get\_args().expression) \`\`\` #### \*\*Breaking Down the Lambda Function\*\* Inside the lambda function, we have the following code: \`\`\`python print(instruction.get\_value().get\_args().expression) \`\`\` Let’s break it down by ignoring print() for a moment and focusing on: \`\`\`python instruction.get\_value().get\_args().expression \`\`\` This expression retrieves the arguments passed to the transferFrom function from each instruction. {% hint style="info" %} \*\*Tip\*\*: An expression is a piece of code that returns a value when executed. Expressions can be written in many ways and can return different types of values. In our case, we are specifically interested in expressions that return True or False. {% endhint %} #### \*\*What's exactly happening here?\*\* In our query, the instruction variable represents a single instruction from the instructions list. Using the instruction variable, we can apply a \[method chain call\](mailto:undefined) to execute a series of methods in sequence. To extract the arguments passed into the transferFrom function, we call the following methods in sequence: \* \*\*get\\\_value()\*\* - Every instruction contains a value, which represents what the instruction is doing. There are different types of values. Since we are analyzing function calls, this method returns a value representing the transferFrom function call. We call a Call value. \* \*\*get\\\_args()\*\* - This method is called on the Call value returned by .get\\\_value(). get\\\_args() retrieves the list of arguments passed to the transferFrom function. \* \*\*expression\*\* - This final call converts each argument into its source code representation, allowing us to see how the argument appears in Solidity. {% hint style="info" %} \*\*expression\*\* is not a method, it’s a property. While the distinction between methods and properties goes beyond the scope of this series, it’s important to note that because \*\*expression\*\* is a property, we do not need to use parentheses () when calling it. For example, instead of writing: \`\`\`python instruction.get\_value().get\_args().expression() \`\`\` We call it by: \`\`\`python instruction.get\_value().get\_args().expression \`\`\` This allows us to retrieve the source code representation of the argument directly. {% endhint %} #### \*\*End Result\*\* When we check the final output, we see that the query returns an array representing the arguments passed into each transferFrom function call: \`\`\`python "\['\_from', 'this', '\_value'\]" \`\`\` #### \*\*Printing Output in the Glider IDE\*\* Glider IDE provides a useful Debug panel where we can print out query results for inspection. To take advantage of this feature, we use the standard print() function, which allows us to output any number of arguments directly to the Debug panel. Since our query retrieves a list of function arguments, we can print them as follows: \`\`\`python print(instruction.get\_value().get\_args().expression) \`\`\` ### \*\*Step 4 - Returning the Results\*\* In the final step, we return the query results so they can be displayed in the Glider IDE Output panel. Since the query() function is expected to return a list, we ensure it returns our filtered instructions query results (represented as a list): \`\`\`python return instructions \`\`\` ## Query Results Now that we’ve reviewed the query, let’s run it in the Glider IDE. ### \*\*Running the Query\*\* Paste the following query into the Glider IDE, click "Run", and wait for the results: \`\`\`python from glider import \* def query(): instructions = ( Instructions() .with\_callee\_name("transferFrom") .exec(3) ) instructions.filter(lambda instruction : print(instruction.get\_value().get\_args().expression)) return instructions \`\`\` ### \*\*Interpreting the Results\*\* Once the query completes, Glider returns a series of instructions, each containing: \* The instruction source code \* The contract address for every instruction \* A printed list of transferFrom arguments from the results Each instruction represents a call to the transferFrom function, and we can now view, in a structured and programmatic way, every argument that was passed into these function calls. This demonstrates how Glider can efficiently and elegantly analyze function arguments within Solidity smart contracts.
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/functions/exercises.md). # Exercises ## Intro In this section, we will present several exercises that will fortify your Functions query skills. Each exercise provided comes along with a solution if you get stuck. ## \*\*Exercise #1 - Finding Functions Named "buy"\*\* In our first exercise, we will look for functions named \*\*buy\*\*. Much like instructions, we have many Glider functions available to us that we can use to find functions. In this case, we are querying for function names. If we review the \[Callables class Glider API documentation\](https://glide.gitbook.io/main/glider-ide/api/callables), we can find several functions available to us to query functions by their name. \*\*Challenge\*\*: Update the query below to find functions named \*\*buy\*\*. \`\`\`python from glider import \* def query(): return ( Functions() # CHALLENGE: Update the query to find functions named "buy." .exec(10) ) \`\`\` 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #2 - Filtering Out Owner Functions\*\* Now that we have a query to find functions named \*\*buy\*\*, the next step is to filter out functions that can only be called by the contract owner. While there are various ways a contract might restrict a function to owner-only access, we’ll focus on removing functions that use the \*\*onlyOwner\*\* modifier, as this is the most common approach developers use to enforce the owner-only restriction. For example, we want to exclude this Solidity function from our results: \`\`\`solidity // The onlyOwner modifier restricts this function to be called only // by the contract owner. function buy(uint amount) external payable onlyOwner { // Code omitted } \`\`\` If we review the Glider API documentation, we can find a \[helpful function\](https://glide.gitbook.io/main/glider-ide/api/functions/functions.without\_modifier\_name) to filter out functions that contain a specific modifier. \*\*Challenge\*\*: Update the query to filter out functions that use the \*\*onlyOwner\*\* modifier. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #3 - Library Call Functions\*\* With our updated query, we can now identify functions named \*\*buy\*\* that can be called by anyone. Our next step is to identify \*\*buy\*\* functions that call a library function. ### \*\*What Is a Solidity Library?\*\* A Solidity library is a piece of reusable code that contains one or more functions. Libraries can be injected into multiple Solidity contracts, making them a common way to reuse code across contracts. ### \*\*Identifying Library Calls\*\* So far, we’ve focused on querying Solidity functions. However, if we review the \[Glider API documentation\](https://glide.gitbook.io/main/glider-ide/api/function), we’ll notice there’s no direct way to check if a Solidity function is calling a library function. To query this, we can find library calls by first querying a function's instructions and then call Glider's \[library\\\_calls()\](https://glide.gitbook.io/main/glider-ide/api/instructions/instructions.library\_calls) against the instructions. ### \*\*Getting Instructions from Functions\*\* There’s one obstacle: How do we go from querying functions to querying a function's instructions? Thankfully, Glider provides a solution. We can call \`instructions()\` on a list of Glider Functions, and it will return a list of Instructions, containing every instruction from each function. Here’s what the Glider code would look like: \`\`\`python functions = Functions().with\_name("buy").exec(100) instructions = functions.instructions() \`\`\` With this approach, you can now query library calls by converting your list of functions into their corresponding instructions and identify library calls. Once we have a list of instructions, we call the library\\\_calls() function from the Glider API. This will filter the results to include only instructions that contain library calls. \*\*Challenge\*\*: Update the query from Exercise #2 to return instructions that are library calls in the \*\*buy\*\* function. {% hint style="info" %} Remember that exec() returns an \[APIList\](https://glide.gitbook.io/main/glider-ide/api/iterables/apilist). This means you can chain a method call to the list, and that method will be applied to every item in the list automatically. {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## \*\*Exercise #4 - Functions with More than 5 Parameters\*\* In this final exercise, we’ll update the query to only include \*\*buy\*\* functions that have more than 5 arguments. To achieve this, we can use the \`arguments()\` method from the Glider API, which returns the arguments of a Solidity function. We can then use Python’s \`len()\` function to count the number of arguments returned. {% hint style="info" %} We can query for function arguments via the \[arguments()\](https://glide.gitbook.io/main/glider-ide/api/callable/callable.arguments) Glider method. This Glider function will return the functions arguments. Note that we need to also call list() on the arguments() return value. For example: \`\`\`python function.arguments().list() \`\`\` {% endhint %} {% hint style="info" %} We can then use Python's \`len()\` function to count the number of function arguments. {% endhint %} \*\*Challenge\*\*: Add a filter to your query that removes \*\*buy\*\* functions with fewer than 5 arguments. 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE: \## Bonus Challenge Below we have a Glider query that finds the first function named \*\*transferAll\*\*. \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_name("transferAll") .exec(3) ) first\_func = functions\[0\] # CHALLENGE: View the arguments of the first\_func return functions \`\`\` \*\*Challenge\*\*: Identify the Glider function that will return a list of Solidity function arguments given a function. {% hint style="info" %} Glider functions inherit from the Callable class. Refer to the \[Callable documentation\](https://glide.gitbook.io/main/glider-ide/api/callable) to find the answer! {% endhint %} 💡 Click here for the solution Stuck or want to confirm your answer? Visit the link below where you can view and run the solution inside of Glider IDE:
---
# Unknown
\> For the complete documentation index, see \[llms.txt\](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.r.xyz/glider-ide/glider-the-basics/functions/learning-functions.md). # Learning Functions ## What are Functions In Solidity, functions are blocks of re-usable code that can be used by contracts to execute one or more instructions. Functions can be called by other contracts or be called internally within the same contract. ## Finding Functions We can identify Solidity functions through the use of the Functions() class. Let's see this in action by running the following query below: \`\`\`python from glider import \* def query(): return Functions().exec(10) \`\`\` As you can see in the results of the Output panel, Glider has returned us 10 functions.

Glider IDE function output results
{% hint style="info" %} The Glider Functions class inherits from the Callables class, which provides various methods for querying Solidity functions. Although we won’t delve into inheritance here, just know that any method available to a Callables instance can be used interchangeably with a Functions instance. {% endhint %} ## Foundational Functions Query In this section, we’ll explore a foundational query designed to find Solidity functions that searches for functions that call the ECDSA.recover function. ### \*\*Query Goal\*\* We want to identify functions named "castVoteBySig" that call OpenZeppelin’s ECDSA.recover function. In this query, we assume that any function that calls a function named "recover" is utilizing the ECDSA library. To achieve this, our query will: 1\\. Search for functions named "castVoteBySig". 2\\. Filter functions that contain a call to "recover", assuming it’s from the ECDSA library. ### \*\*Query Code\*\* \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_name("castVoteBySig") .exec(100) .filter(lambda function : "recover" in function.callee\_values().name) ) return functions \`\`\` Now let’s break down this query step by step. ### Step 1 - Finding the castVoteBySig Functions The first step in our query is to find functions named castByVoteSig. To do this, we create an instance of the Functions class: \`\`\`python Functions() \`\`\` By creating this class instance, we gain access to Glider API methods that allow us to filter and retrieve functions found via Glider. \*\*Using .with\\\_name() to Find Functions by Name\*\* With our Functions class instance, we can now call the .with\\\_name() method to search for functions with a specific name. Since we are looking for castVoteBySig functions, we pass this name as an argument: \`\`\`python .with\_name("castVoteBySig") \`\`\` #### \*\*Executing the Query with .exec()\*\* To run the query, we call .exec(), which executes the query. As discussed in the \[Learning Instructions section\](https://glide.gitbook.io/main/glider-ide/glider-the-basics/instructions/learning-instructions#breaking-the-query-down), exec() requires an integer argument specifying the maximum number of results to return. In this case, we pass 100, meaning we want to retrieve up to 100 results: \`\`\`python .exec(100) \`\`\` #### \*\*Putting It All Together\*\* When combined, our query so far looks like this: \`\`\`python Functions() .with\_name("castVoteBySig") .exec(100) \`\`\` This ensures that we return up to 100 Solidity functions named castVoteBySig, setting us up for the next step, filtering functions that call the recover function. ### \*\*Step 2 - Filtering functions via calls to recover()\*\* Now that we have found functions named castVoteBySig, we need to filter the results further to only include functions that call ECDSA.recover. To achieve this, we use the .filter() method, which allows us to exclude any functions that do not meet our criteria. #### \*\*Applying the Filter\*\* We call .filter() and pass in a lambda function that checks if recover() is present in the callee function names of each result: \`\`\`python .filter(lambda function : "recover" in function.callee\_values().name) \`\`\` #### \*\*Breaking Down the Filter Condition\*\* Inside of filter, we provide a lambda function that contains the filter criteria: \`\`\`python "recover" in function.callee\_values().name \`\`\` The code can be broken down as follows: \* \*\*function.callee\\\_values()\*\* - Retrieves a list of functions that the current function calls. \* \*\*.name\*\* - Extracts the functions names from the list of function calls. \* \*\*"recover" in function.callee\\\_values().name\*\* - Checks if "recover" is among the called function names lists. Returns True if recover is in the list. False if not. If the expression returns True, then the function will be kept. If the expression returns False, then the function will be discarded from the list. #### \*\*The Query as a Whole\*\* Here our query put together looks like: \`\`\`python Functions() .with\_name("castVoteBySig") .exec(100) .filter(lambda function: "recover" in function.callee\_values().name) \`\`\` ## Query Results ### \*\*Running the Query\*\* Now that we’ve covered the query, let’s run it in Glider IDE. Paste the following query into the Glider IDE, click "Run", and wait for the results: \`\`\`python from glider import \* def query(): functions = ( Functions() .with\_name("castVoteBySig") .exec(100) .filter(lambda function : "recover" in function.callee\_values().name) ) return functions \`\`\` ### \*\*Interpreting the Results\*\* Once the query completes, Glider returns a list of functions and their contract addresses. Each function in the results: \* Is named castVoteBySig, as specified in our query. \* Contains a call to ECDSA.recover(), confirming our filtering logic worked correctly. \* Includes the function’s Solidity source code, allowing us to inspect its implementation. With this query, we efficiently identify functions that match castVoteBySig and interact with OpenZeppelin’s ECDSA.recover(). This allows us to review relevant results gaining valuable insights into how these functions are implemented and used.
---