Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/solidity-utilities/execution-permissions
Utility contract for setting/enforcing execution permissions per function
https://github.com/solidity-utilities/execution-permissions
Last synced: 25 days ago
JSON representation
Utility contract for setting/enforcing execution permissions per function
- Host: GitHub
- URL: https://github.com/solidity-utilities/execution-permissions
- Owner: solidity-utilities
- License: agpl-3.0
- Created: 2022-11-30T04:45:49.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-03-03T03:06:27.000Z (almost 2 years ago)
- Last Synced: 2023-03-06T08:21:27.227Z (almost 2 years ago)
- Language: TypeScript
- Size: 1.48 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Execution Permissions
[heading__top]:
#execution-permissions
"⬆ Utility contract for setting/enforcing execution permissions per function"Utility contract for setting/enforcing execution permissions per function
## [![Byte size of Execution Permissions][badge__main__execution_permissions__source_code]][execution_permissions__main__source_code] [![Open Issues][badge__issues__execution_permissions]][issues__execution_permissions] [![Open Pull Requests][badge__pull_requests__execution_permissions]][pull_requests__execution_permissions] [![Latest commits][badge__commits__execution_permissions__main]][commits__execution_permissions__main] [![GitHub Actions Build Status][badge__github_actions]][activity_log__github_actions] [![License][badge__license]][branch__current__license]
---
- [:arrow_up: Top of Document][heading__top]
- [:building_construction: Requirements][heading__requirements]
- [:zap: Quick Start][heading__quick_start]
- [🧰 Usage][heading__usage]
- [`ExampleUsage` contract][heading__exampleusage_contract]- [Networks][heading__networks]
- [Ethereum Main][heading__ethereum_main]- [🔣 API][heading__api]
- [Contracts `ExecutionPermissions` and `IExecutionPermissions`][heading__contracts_executionpermissions_and_iexecutionpermissions]
- [Method `isPermitted(bytes4,address)`][heading__method_ispermittedbytes4address]
- [Method `isPermitted(string,address)`][heading__method_ispermittedstringaddress]
- [Method `setBatchPermission(BatchPermissionEntry[])`][heading__method_setbatchpermissionbatchpermissionentry]
- [Method `setTargetPermission(bytes4,address,bool)`][heading__method_settargetpermissionbytes4addressbool]
- [Method `setRegistered(bool)`][heading__method_setregisteredbool]
- [Method `setRegistered(address,bool)`][heading__method_setregisteredaddressbool]
- [Method `tip()`][heading__method_tip]
- [Method `withdraw(address,uint256)`][heading__method_withdrawaddressuint256]- [Storage `permissions(address,bytes4,address)`][heading__storage_permissionsaddressbytes4address]
- [Storage `registered(address)`][heading__storage_registeredaddress]
- [Storage `owner()`][heading__storage_owner]
- [Storage `nominated_owner()`][heading__storage_nominated_owner]- [🗒 Notes][heading__notes]
- [:chart_with_upwards_trend: Contributing][heading__contributing]
- [:trident: Forking][heading__forking]
- [:currency_exchange: Sponsor][heading__sponsor]- [:card_index: Attribution][heading__attribution]
- [:balance_scale: Licensing][heading__license]
---
## Requirements
[heading__requirements]:
#requirements
"🏗 Prerequisites and/or dependencies that this project needs to function properly"> Prerequisites and/or dependencies that this project needs to function properly
This project utilizes Truffle for organization of source code and tests, thus
it is recommended to install Truffle _globally_ to your current user account```Bash
npm install -g truffle
```... Or to your project root directory
```Bash
cd your_projectnpm install truffle
```______
## Quick Start
[heading__quick_start]:
#quick-start
"⚡ Perhaps as easy as one, 2.0,..."> Perhaps as easy as one, 2.0,...
NPM and Truffle are recommended for importing and managing dependencies
```Bash
cd your_projectnpm install @solidity-utilities/execution-permissions
```> Note, source code will be located within the
> `node_modules/@solidity-utilities/execution-permissions` directory of
> _`your_project`_ rootSolidity contracts may then import code via similar syntax as shown
```Solidity
import {
ExecutionPermissions
} from "@solidity-utilities/execution-permissions/contracts/ExecutionPermissions.sol";import {
IExecutionPermissions,
BatchPermissionEntry
} from "@solidity-utilities/execution-permissions/contracts/interfaces/IExecutionPermissions.sol";
```> Note, above paths are **not** relative (ie. there's no `./` preceding the
> file path) which causes Truffle to search the `node_modules` subs-directoriesReview the
[Truffle -- Package Management via NPM][truffle__package_management_via_npm]
documentation for more details.---
> In the future, after beta testers have reported bugs and feature requests, it
> should be possible to link the deployed `ExecutionPermissions` via Truffle
> migration similar to the following.
>
>
> **`migrations/2_example_usage.js`**
>
>
> const refExecutionPermissions = "0x0...0";
> const ExampleUsage = artifacts.require("ExampleUsage");
>
> module.exports = (deployer, _network, _accounts) {
> deployer.deploy(ExampleUsage, refExecutionPermissions);
> };______
## Usage
[heading__usage]:
#usage
"🧰 How to utilize this repository"> How to utilize this repository
Write contract(s) that make use of, and extend, `ExecutionPermissions` features.
### `ExampleUsage` contract
[heading__exampleusage_contract]:
#exampleusage-contract
"Example contract that utilizes existing `ExecutionPermissions` contract"> Example contract that utilizes existing `ExecutionPermissions` contract
```solidity
// SPDX-License-Identifier: AGPL-3.0
pragma solidity >=0.4.22 <0.9.0;import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import {
IExecutionPermissions,
BatchPermissionEntry
} from "@solidity-utilities/execution-permissions/contracts/interfaces/IExecutionPermissions.sol";/// @title Example of how to utilize ExecutionPermissions features
/// @author S0AndS0
contract ExampleUsage is Ownable {
address private _permissionStore;mapping(address => uint256) public account_score;
// Store referenced to `ExecutionPermissions` contract
constructor(address permissionStore_) Ownable() {
_permissionStore = permissionStore_;
}// Restrict execution to only permitted callers
modifier onlyPermitted() {
require(
IExecutionPermissions(_permissionStore).isPermitted(
bytes4(msg.data),
msg.sender
),
"ExampleUsage: sender not permitted"
);
_;
}// Example of restricted function
function setScore(uint256 value) external payable onlyPermitted {
account_score[msg.sender] = value;
}// Allow only contract owner to modify own registration state
function setRegistered(bool state) external payable virtual onlyOwner {
IExecutionPermissions(_permissionStore).setRegistered(state);
}// Allow only contract owner to modify permissions
function setBatchPermission(BatchPermissionEntry[] memory entries)
external
payable
virtual
onlyOwner
{
IExecutionPermissions(_permissionStore).setBatchPermission(entries);
}// Allow only contract owner to modify permissions
function setTargetPermission(
bytes4 target,
address caller,
bool state
) external payable virtual onlyOwner {
IExecutionPermissions(_permissionStore).setTargetPermission(
target,
caller,
state
);
}
}
```> Tip; review the `ts/test`, and `test/solidity`, sub-directories for extensive
> usage examples______
## Networks
[heading__networks]:
#networks
"Anyone may utilize the contract on-chain via the following network addresses"> Anyone may utilize the contract on-chain via the following network addresses
**`migrations/1000_ExampleUsage.js` (example)**
```javascript
'use strict';module.exports = (deployer, network, accounts) => {
const ExampleUsage = artifacts.require('ExampleUsage');const parameters = {
permissionStore: '0x90f94E4Fa212Aafb4d9528c3A064815B3378c8b9',
};deployer.deploy(ExampleUsage, ...Object.values(parameters));
};
```---
### Ethereum Main
[heading__ethereum_main]: #ethereum-main> Address: `0x90f94E4Fa212Aafb4d9528c3A064815B3378c8b9`
- [Sourcify](https://sourcify.dev/#/lookup/0x90f94E4Fa212Aafb4d9528c3A064815B3378c8b9)
- [Etherscan](https://etherscan.io/address/0x90f94E4Fa212Aafb4d9528c3A064815B3378c8b9#code)______
## API
[heading__api]:
#api
"Application Programming Interfaces for Solidity smart contracts"> Application Programming Interfaces for Solidity smart contracts
---
### Contracts `ExecutionPermissions` and `IExecutionPermissions`
[heading__contracts_executionpermissions_and_iexecutionpermissions]:
#contracts-executionpermissions-and-iexecutionpermissions
"Utility contract for setting/enforcing execution permissions per function"> Utility contract for setting/enforcing execution permissions per function
**Source**
- [`contracts/ExecutionPermissions.sol`][source__contracts__executionpermissions_sol]
- [`contracts/interfaces/IExecutionPermissions.sol`][source__contracts__iexecutionpermissions_sol]---
#### Method `isPermitted(bytes4,address)`
[heading__method_ispermittedbytes4address]:
#method-ispermittedbytes4address
"Check execution permissions of target function for given caller"> Check execution permissions of target function for given caller
**Source**
- [`contracts/ExecutionPermissions.sol` -- `isPermitted(bytes4,address)`][source__contracts__executionpermissions_sol__isPermitted__bytes4_address]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `isPermitted(bytes4,address)`][source__contracts__iexecutionpermissions_sol__isPermitted__bytes4_address]**Parameters**
- `target` **{bytes4}** Function ID to check
- `caller` **{address}** Original `msg.sender` of targeted function**Throws** -> **{Error}** `"ExecutionPermissions: instance not registered"`
---
#### Method `isPermitted(string,address)`
[heading__method_ispermittedstringaddress]:
#method-ispermittedstringaddress
"Check execution permissions of target function for given caller"> Check execution permissions of target function for given caller
**Source**
- [`contracts/ExecutionPermissions.sol` -- `isPermitted(string,address)`][source__contracts__executionpermissions_sol__isPermitted__string_address]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `isPermitted(string,address)`][source__contracts__iexecutionpermissions_sol__isPermitted__string_address]**Parameters**
- `target` **{string}** Function signature to check
- `caller` **{address}** Original `msg.sender` of targeted function**Throws** -> **{Error}** `"ExecutionPermissions: instance not registered"`
**Developer note** -> Note will cost more gas than
`isPermitted(bytes4,address)` due to implicit conversion of function signature
string to ID---
#### Method `setBatchPermission(BatchPermissionEntry[])`
[heading__method_setbatchpermissionbatchpermissionentry]:
#method-setbatchpermissionbatchpermissionentry
"Assign multiple permission entries in one transaction"> Assign multiple permission entries in one transaction
**Source**
- [`contracts/ExecutionPermissions.sol` -- `setBatchPermission(BatchPermissionEntry[])`][source__contracts__executionpermissions_sol__setBatchPermission__BatchPermissionEntry]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `setBatchPermission(BatchPermissionEntry[])`][source__contracts__iexecutionpermissions_sol__setBatchPermission__BatchPermissionEntry]**Parameters**
- `BatchPermissionEntry` **{array}** entries List of permissions to assign
**Throws** -> **{Error}** `"ExecutionPermissions: instance not registered"`
**Developer note** -> Note may cost less gas due to fewer initialization
transaction fees of multiple `setTargetPermission(bytes4,address,bool)` calls---
#### Method `setTargetPermission(bytes4,address,bool)`
[heading__method_settargetpermissionbytes4addressbool]:
#method-settargetpermissionbytes4addressbool
"Assign single function caller permission state"> Assign single function caller permission state
**Source**
- [`contracts/ExecutionPermissions.sol` -- `setTargetPermission(bytes4,address,bool)`][source__contracts__executionpermissions_sol__setTargetPermission__bytes4_address_bool]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `setTargetPermission(bytes4,address,bool)`][source__contracts__iexecutionpermissions_sol__setTargetPermission__bytes4_address_bool]**Parameters**
- `BatchPermissionEntry` **{array}** entries List of permissions to assign
- `target` **{bytes4}** Function ID to set caller permission
- `caller` **{address}** Original `msg.sender` of targeted function
- `state` **{boolean}** Value to assign for function caller interaction**Throws** -> **{Error}** `"ExecutionPermissions: instance not registered"`
---
#### Method `setRegistered(bool)`
[heading__method_setregisteredbool]:
#method-setregisteredbool
"Set registration state for calling contract instance"> Set registration state for calling contract instance
**Source**
- [`contracts/ExecutionPermissions.sol` -- `setRegistered(bool)`][source__contracts__executionpermissions_sol__setRegistered__bool]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `setRegistered(bool)`][source__contracts__iexecutionpermissions_sol__setRegistered__bool]**Parameters**
- `state` **{boolean}** Set `true` for registered and `false` for unregistered (default)
**Throws** -> **{Error}** `"ExecutionPermissions: instance not initialized"`
---
#### Method `setRegistered(address,bool)`
[heading__method_setregisteredaddressbool]:
#method-setregisteredaddressbool
"Set registration state for referenced contract instance"> Set registration state for referenced contract instance
**Source**
- [`contracts/ExecutionPermissions.sol` -- `setRegistered(bool)`][source__contracts__executionpermissions_sol__setRegistered__address_bool]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `setRegistered(bool)`][source__contracts__iexecutionpermissions_sol__setRegistered__address_bool]**Parameters**
- `ref` **{address}** Contract instance owned by `msg.sender`
- `state` **{boolean}** Set `true` for registered and `false` for unregistered (default)**Throws** -> **{Error}** `"ExecutionPermissions: instance not initialized"`
**Throws** -> **{Error}** `"ExecutionPermissions: instance does not implement `.owner()`"`
**Throws** -> **{Error}** `"ExecutionPermissions: not instance owner"`---
#### Method `tip()`
[heading__method_tip]:
#method-tip
"Show some support developers of this contract"> Show some support developers of this contract
**Source**
- [`contracts/ExecutionPermissions.sol` -- `tip()`][source__contracts__executionpermissions_sol__tip]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `tip()`][source__contracts__iexecutionpermissions_sol__tip]---
#### Method `withdraw(address,uint256)`
[heading__method_withdrawaddressuint256]:
#method-withdrawaddressuint256
"Allow owner of `ExecutionPermissions` to receive tips"> Allow owner of `ExecutionPermissions` to receive tips
**Source**
- [`contracts/ExecutionPermissions.sol` -- `withdraw(address,uint256)`][source__contracts__executionpermissions_sol__withdraw__address_uint256]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `withdraw(address,uint256)`][source__contracts__iexecutionpermissions_sol__withdraw__address_uint256]**Parameters**
- `to` **{address}** Where to send Ethereum
- `amount` **{uint256}** Measured in Wei**Throws** -> **{Error}** `"ExecutionPermissions: caller not owner"`
**Throws** -> **{Error}** `"ExecutionPermissions: transfer failed"`---
#### Method `nominateOwner(address)`
[heading__method_nominateowneraddress]:
#method-nominateowneraddress
"Initiate transfer of contract ownership"> Initiate transfer of contract ownership
**Source**
- [`contracts/ExecutionPermissions.sol` -- `nominateOwner(address)`][source__contracts__executionpermissions_sol__nominateOwner__address]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `nominateOwner(address)`][source__contracts__iexecutionpermissions_sol__nominateOwner__address]**Parameters**
- `newOwner` **{address}** Account that may claim ownership of contract
**Throws** -> **{Error}** `"ExecutionPermissions: caller not owner"`
**Throws** -> **{Error}** `"ExecutionPermissions: new owner cannot be zero address"`---
#### Method `claimOwnership`
[heading__method_claimownership]:
#method-claimownership
"Accept transfer of contract ownership"> Accept transfer of contract ownership
**Source**
- [`contracts/ExecutionPermissions.sol` -- `claimOwnership()`][source__contracts__executionpermissions_sol__claimOwnership]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `claimOwnership()`][source__contracts__iexecutionpermissions_sol__claimOwnership]**Throws** -> **{Error}** `"ExecutionPermissions: new owner cannot be zero address"`
**Throws** -> **{Error}** `"ExecutionPermissions: sender not nominated"`---
#### Storage `permissions(address,bytes4,address)`
[heading__storage_permissionsaddressbytes4address]:
#storage-permissionsaddressbytes4address
"Check execution permissions of referenced contract function for given caller"> Check execution permissions of referenced contract function for given caller
**Source**
- [`contracts/ExecutionPermissions.sol` -- `permissions(address,bytes4,address)`][source__contracts__executionpermissions_sol__permissions__address_bytes4_address]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `permissions(address,bytes4,address)`][source__contracts__iexecutionpermissions_sol__permissions__address_bytes4_address]**Parameters**
- `ref` **{address}** Contract address with `target` function
- `target` **{bytes4}** Function ID to check
- `caller` **{address}** Original `msg.sender` of targeted function---
#### Storage `registered(address)`
[heading__storage_registeredaddress]:
#storage-registeredaddress
"Check registration status of referenced contract"> Check registration status of referenced contract
**Source**
- [`contracts/ExecutionPermissions.sol` -- `registered(address,bool)`][source__contracts__executionpermissions_sol__registered__address_bool]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `registered(address,bool)`][source__contracts__iexecutionpermissions_sol__registered__address_bool]**Parameters**
- `ref` **{address}** Contract address to check registration state
**Returns** -> **{boolean}** State of `ref` registration
---
#### Storage `owner()`
[heading__storage_owner]:
#storage-owner
"Obtain current owner address"> Obtain current owner address
**Source**
- [`contracts/ExecutionPermissions.sol` -- `owner()`][source__contracts__executionpermissions_sol__owner]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `owner()`][source__contracts__iexecutionpermissions_sol__owner]**Returns** -> **{address}** Current owner of contract instance
---
#### Storage `nominated_owner()`
[heading__storage_nominated_owner]:
#storage-nominated_owner
"Obtain new owner nominated address"> Obtain new owner nominated address
**Source**
- [`contracts/ExecutionPermissions.sol` -- `nominated_owner()`][source__contracts__executionpermissions_sol__nominated_owner]
- [`contracts/interfaces/IExecutionPermissions.sol` -- `nominated_owner()`][source__contracts__iexecutionpermissions_sol__nominated_owner]**Returns** -> **{address}** Last nominated address of new contract instance owner
______
## Notes
[heading__notes]:
#notes
"🗒 Additional things to keep in mind when developing"This repository may not be feature complete and/or fully functional, Pull Requests that add features or fix bugs are certainly welcomed.
______
## Contributing
[heading__contributing]:
#contributing
"📈 Options for contributing to execution-permissions and solidity-utilities"Options for contributing to execution-permissions and solidity-utilities
---
### Forking
[heading__forking]:
#forking
"🔱 Tips for forking execution-permissions"Start making a [Fork][execution_permissions__fork_it] of this repository to an account that you have write permissions for.
- Add remote for fork URL. The URL syntax is _`[email protected]:/.git`_...
```Bash
cd ~/git/hub/solidity-utilities/execution-permissionsgit remote add fork [email protected]:/execution-permissions.git
```- Commit your changes and push to your fork, eg. to fix an issue...
```Bash
cd ~/git/hub/solidity-utilities/execution-permissionsgit commit -F- <<'EOF'
:bug: Fixes #42 Issue**Edits**
- `` script, fixes some bug reported in issue
EOFgit push fork main
```> Note, the `-u` option may be used to set `fork` as the default remote, eg. _`git push -u fork main`_ however, this will also default the `fork` remote for pulling from too! Meaning that pulling updates from `origin` must be done explicitly, eg. _`git pull origin main`_
- Then on GitHub submit a Pull Request through the Web-UI, the URL syntax is _`https://github.com///pull/new/`_
> Note; to decrease the chances of your Pull Request needing modifications before being accepted, please check the [dot-github](https://github.com/solidity-utilities/.github) repository for detailed contributing guidelines.
---
### Sponsor
[heading__sponsor]:
#sponsor
"💱 Methods for financially supporting solidity-utilities that maintains execution-permissions"Thanks for even considering it!
Via Liberapay you may [![sponsor__shields_io__liberapay]][sponsor__link__liberapay] on a repeating basis.
Regardless of if you're able to financially support projects such as execution-permissions that solidity-utilities maintains, please consider sharing projects that are useful with others, because one of the goals of maintaining Open Source repositories is to provide value to the community.
______
## Attribution
[heading__attribution]:
#attribution
"📇 Resources that where helpful in building this project so far."- [GitHub -- `github-utilities/make-readme`](https://github.com/github-utilities/make-readme)
- [GitHub -- `dethcrypto/TypeChain`](https://github.com/dethcrypto/TypeChain)
______
## License
[heading__license]:
#license
"⚖ Legal side of Open Source"```
Utility contract for setting/enforcing execution permissions per function
Copyright (C) 2022 S0AndS0This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, version 3 of the License.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
```For further details review full length version of [AGPL-3.0][branch__current__license] License.
[branch__current__license]:
/LICENSE
"⚖ Full length version of AGPL-3.0 License"[badge__license]:
https://img.shields.io/github/license/solidity-utilities/execution-permissions[badge__commits__execution_permissions__main]:
https://img.shields.io/github/last-commit/solidity-utilities/execution-permissions/main.svg[commits__execution_permissions__main]:
https://github.com/solidity-utilities/execution-permissions/commits/main
"📝 History of changes on this branch"[execution_permissions__community]:
https://github.com/solidity-utilities/execution-permissions/community
"🌱 Dedicated to functioning code"[issues__execution_permissions]:
https://github.com/solidity-utilities/execution-permissions/issues
"☢ Search for and _bump_ existing issues or open new issues for project maintainer to address."[execution_permissions__fork_it]:
https://github.com/solidity-utilities/execution-permissions/fork
"🔱 Fork it!"[pull_requests__execution_permissions]:
https://github.com/solidity-utilities/execution-permissions/pulls
"🏗 Pull Request friendly, though please check the Community guidelines"[execution_permissions__main__source_code]:
https://github.com/solidity-utilities/execution-permissions/
"⌨ Project source!"[badge__issues__execution_permissions]:
https://img.shields.io/github/issues/solidity-utilities/execution-permissions.svg[badge__pull_requests__execution_permissions]:
https://img.shields.io/github/issues-pr/solidity-utilities/execution-permissions.svg[badge__main__execution_permissions__source_code]:
https://img.shields.io/github/repo-size/solidity-utilities/execution-permissions[badge__github_actions]:
https://github.com/solidity-utilities/execution-permissions/actions/workflows/test.yaml/badge.svg?branch=main[activity_log__github_actions]:
https://github.com/solidity-utilities/execution-permissions/deployments/activity_log[truffle__package_management_via_npm]:
https://www.trufflesuite.com/docs/truffle/getting-started/package-management-via-npm
"Documentation on how to install, import, and interact with Solidity packages"[source__contracts__executionpermissions_sol]:
contracts/ExecutionPermissions.sol
"Utility contract for setting/enforcing execution permissions per function"[source__contracts__iexecutionpermissions_sol]:
contracts/interfaces/IExecutionPermissions.sol
"Describe all functions available to third-parties"[source__contracts__executionpermissions_sol__isPermitted__bytes4_address]:
contracts/ExecutionPermissions.sol#L65
"Insert `address` into `mapping` of `authorized` data structure"[source__contracts__iexecutionpermissions_sol__isPermitted__bytes4_address]:
contracts/interfaces/IExecutionPermissions.sol#L36
"Insert `address` into `mapping` of `authorized` data structure"[source__contracts__executionpermissions_sol__isPermitted__string_address]:
contracts/ExecutionPermissions.sol#L78
"Insert `address` into `mapping` of `authorized` data structure"[source__contracts__iexecutionpermissions_sol__isPermitted__string_address]:
contracts/interfaces/IExecutionPermissions.sol#L85
"Insert `address` into `mapping` of `authorized` data structure"[source__contracts__executionpermissions_sol__setBatchPermission__BatchPermissionEntry]:
contracts/ExecutionPermissions.sol#L96
"Assign multiple permission entries in one transaction"[source__contracts__iexecutionpermissions_sol__setBatchPermission__BatchPermissionEntry]:
contracts/interfaces/IExecutionPermissions.sol#L133
"Assign multiple permission entries in one transaction"[source__contracts__executionpermissions_sol__setTargetPermission__bytes4_address_bool]:
contracts/ExecutionPermissions.sol#L117
"Assign single function caller permission state"[source__contracts__iexecutionpermissions_sol__setTargetPermission__bytes4_address_bool]:
contracts/interfaces/IExecutionPermissions.sol#L184
"Assign single function caller permission state"[source__contracts__executionpermissions_sol__setRegistered__bool]:
contracts/ExecutionPermissions.sol#L127
"Set registration state for calling contract instance"[source__contracts__iexecutionpermissions_sol__setRegistered__bool]:
contracts/interfaces/IExecutionPermissions.sol#L241
"Set registration state for calling contract instance"[source__contracts__executionpermissions_sol__setRegistered__address_bool]:
contracts/ExecutionPermissions.sol#L138
"Set registration state for referenced contract instance"[source__contracts__iexecutionpermissions_sol__setRegistered__address_bool]:
contracts/interfaces/IExecutionPermissions.sol#L286
"Set registration state for referenced contract instance"[source__contracts__executionpermissions_sol__tip]:
contracts/ExecutionPermissions.sol#L168
"Show some support developers of this contract"[source__contracts__iexecutionpermissions_sol__tip]:
contracts/interfaces/IExecutionPermissions.sol#L318
"Show some support developers of this contract"[source__contracts__executionpermissions_sol__withdraw__address_uint256]:
contracts/ExecutionPermissions.sol#L176
"Allow owner of `ExecutionPermissions` to receive tips"[source__contracts__iexecutionpermissions_sol__withdraw__address_uint256]:
contracts/interfaces/IExecutionPermissions.sol#L349
"Allow owner of `ExecutionPermissions` to receive tips"[source__contracts__executionpermissions_sol__nominateOwner__address]:
contracts/ExecutionPermissions.sol#L189
"Initiate transfer of contract ownership"[source__contracts__iexecutionpermissions_sol__nominateOwner__address]:
contracts/interfaces/IExecutionPermissions.sol#L386
"Initiate transfer of contract ownership"[source__contracts__executionpermissions_sol__claimOwnership]:
contracts/ExecutionPermissions.sol#L208
"Accept transfer of contract ownership"[source__contracts__iexecutionpermissions_sol__claimOwnership]:
contracts/interfaces/IExecutionPermissions.sol#L419
"Accept transfer of contract ownership"[source__contracts__executionpermissions_sol__permissions__address_bytes4_address]:
contracts/ExecutionPermissions.sol#L21
"Map contract to function target to caller to permission"[source__contracts__iexecutionpermissions_sol__permissions__address_bytes4_address]:
contracts/interfaces/IExecutionPermissions.sol#L453
"Check execution permissions of referenced contract function for given caller"[source__contracts__executionpermissions_sol__registered__address_bool]:
contracts/ExecutionPermissions.sol#L26
"Map contract to registered state"[source__contracts__iexecutionpermissions_sol__registered__address_bool]:
contracts/interfaces/IExecutionPermissions.sol#L494
"Check registration status of referenced contract"[source__contracts__executionpermissions_sol__owner]:
contracts/ExecutionPermissions.sol#L30
"Store current owner of this contract instance"[source__contracts__iexecutionpermissions_sol__owner]:
contracts/interfaces/IExecutionPermissions.sol#L524
"Obtain current owner address"[source__contracts__executionpermissions_sol__nominated_owner]:
contracts/ExecutionPermissions.sol#L34
"Store address of possible new owner of this contract instance"[source__contracts__iexecutionpermissions_sol__nominated_owner]:
contracts/interfaces/IExecutionPermissions.sol#L540
"Obtain new owner nominated address"