diff --git a/docs/contracts/ERC725/ERC725.md b/docs/contracts/ERC725/ERC725.md index c07702b51..659c54b4f 100644 --- a/docs/contracts/ERC725/ERC725.md +++ b/docs/contracts/ERC725/ERC725.md @@ -14,13 +14,9 @@ ::: -> ERC725 bundle +> ERC725 bundle. -Bundles ERC725X and ERC725Y together into one smart contract. This implementation does not have by default a: - -- `receive() external payable {}` - -- or `fallback() external payable {}` +Bundle ERC725X and ERC725Y together into one smart contract. This implementation does not have by default a `receive() external payable {}` or `fallback() external payable {}` function. ## Public Methods @@ -37,16 +33,26 @@ When marked as 'public', a method can be called both externally and internally, ::: ```solidity -constructor(address newOwner); +constructor(address initialOwner); ``` -_Sets the owner of the contract_ +_Deploying an ERC725 smart contract and setting address `initialOwner` as the contract owner._ + +Deploy a new ERC725 contract with the provided `initialOwner` as the contract [`owner`](#owner). + +
+ +**Requirements:** + +- `initialOwner` CANNOT be the zero address. + +
#### Parameters -| Name | Type | Description | -| ---------- | :-------: | ------------------------- | -| `newOwner` | `address` | the owner of the contract | +| Name | Type | Description | +| -------------- | :-------: | -------------------------- | +| `initialOwner` | `address` | the owner of the contract. |
@@ -70,21 +76,35 @@ function execute( ) external payable returns (bytes); ``` +_Calling address `target` using `operationType`, transferring `value` wei and data: `data`. _ + Generic executor function to: - send native tokens to any address. - interact with any contract by passing an abi-encoded function call in the `data` parameter. -- deploy a contract by providing its creation bytecode in the `data` parameter. Requirements: +- deploy a contract by providing its creation bytecode in the `data` parameter. -- SHOULD only be callable by the owner of the contract set via ERC173. +
-- if a `value` is provided, the contract MUST have at least this amount in its balance to execute successfully. +**Requirements:** -- if the operation type is STATICCALL or DELEGATECALL, `value` SHOULD be 0. +- SHOULD only be callable by the [`owner`](#owner) of the contract. +- if a `value` is provided, the contract MUST have at least this amount to transfer to `target` from its balance and execute successfully. +- if the operation type is `STATICCALL` (`3`) or `DELEGATECALL` (`4`), `value` transfer is disallowed and SHOULD be 0. +- `target` SHOULD be `address(0)` when deploying a new contract via `operationType` `CREATE` (`1`), or `CREATE2` (`2`). -- `target` SHOULD be address(0) when deploying a contract. Emits an [`Executed`](#executed) event, when a call is made with `operationType` 0 (CALL), 3 (STATICCALL) or 4 (DELEGATECALL) Emits a [`ContractCreated`](#contractcreated) event, when deploying a contract with `operationType` 1 (CREATE) or 2 (CREATE2) +
+ +
+ +**Emitted events:** + +- [`Executed`](#executed) event when a call is made with `operationType` 0 (CALL), 3 (STATICCALL) or 4 (DELEGATECALL). +- [`ContractCreated`](#contractcreated) event when deploying a new contract with `operationType` 1 (CREATE) or 2 (CREATE2). + +
#### Parameters @@ -93,7 +113,7 @@ Generic executor function to: | `operationType` | `uint256` | The operation type used: CALL = 0; CREATE = 1; CREATE2 = 2; STATICCALL = 3; DELEGATECALL = 4 | | `target` | `address` | The address of the EOA or smart contract. (unused if a contract is created via operation type 1 or 2) | | `value` | `uint256` | The amount of native tokens to transfer (in Wei) | -| `data` | `bytes` | The call data, or the creation bytecode of the contract to deploy | +| `data` | `bytes` | The call data, or the creation bytecode of the contract to deploy if `operationType` is `1` or `2`. | #### Returns @@ -123,32 +143,37 @@ function executeBatch( ) external payable returns (bytes[]); ``` -Generic batch executor function to: +_Calling multiple addresses `targets` using `operationsType`, transferring `values` wei and data: `datas`. _ -- send native tokens to any address. +Batch executor function that behaves the same as [`execute`](#execute) but allowing multiple operations in the same transaction. + +
-- interact with any contract by passing an abi-encoded function call in the `datas` parameter. +**Requirements:** -- deploy a contract by providing its creation bytecode in the `datas` parameter. Requirements: +- All the array parameters provided MUST be equal and have the same length. +- SHOULD only be callable by the [`owner`](#owner) of the contract. +- The contract MUST have in its balance **at least the sum of all the `values`** to transfer and execute successfully each calldata payloads. -- The length of the parameters provided MUST be equal +
-- SHOULD only be callable by the owner of the contract set via ERC173. +
-- if a `values` is provided, the contract MUST have at least this amount in its balance to execute successfully. +**Emitted events:** -- if the operation type is STATICCALL or DELEGATECALL, `values` SHOULD be 0. +- [`Executed`](#executed) event, when a call is made with `operationType` 0 (CALL), 3 (STATICCALL) or 4 (DELEGATECALL) +- [`ContractCreated`](#contractcreated) event, when deploying a contract with `operationType` 1 (CREATE) or 2 (CREATE2) -- `targets` SHOULD be address(0) when deploying a contract. Emits an [`Executed`](#executed) event, when a call is made with `operationType` 0 (CALL), 3 (STATICCALL) or 4 (DELEGATECALL) Emits a [`ContractCreated`](#contractcreated) event, when deploying a contract with `operationType` 1 (CREATE) or 2 (CREATE2) +
#### Parameters -| Name | Type | Description | -| ---------------- | :---------: | ----------------------------------------------------------------------------------------------------------- | -| `operationsType` | `uint256[]` | The list of operations type used: CALL = 0; CREATE = 1; CREATE2 = 2; STATICCALL = 3; DELEGATECALL = 4 | -| `targets` | `address[]` | The list of addresses to call. `targets` will be unused if a contract is created (operation types 1 and 2). | -| `values` | `uint256[]` | The list of native token amounts to transfer (in Wei) | -| `datas` | `bytes[]` | The list of call data, or the creation bytecode of the contract to deploy | +| Name | Type | Description | +| ---------------- | :---------: | --------------------------------------------------------------------------------------------------------------- | +| `operationsType` | `uint256[]` | The list of operations type used: `CALL = 0`; `CREATE = 1`; `CREATE2 = 2`; `STATICCALL = 3`; `DELEGATECALL = 4` | +| `targets` | `address[]` | The list of addresses to call. `targets` will be unused if a contract is created (operation types 1 and 2). | +| `values` | `uint256[]` | The list of native token amounts to transfer (in Wei). | +| `datas` | `bytes[]` | The list of calldata, or the creation bytecode of the contract to deploy if `operationType` is `1` or `2`. | #### Returns @@ -173,19 +198,21 @@ Generic batch executor function to: function getData(bytes32 dataKey) external view returns (bytes dataValue); ``` -_Gets singular data at a given `dataKey`_ +_Reading the ERC725Y storage for data key `dataKey` returned the following value: `dataValue`._ + +Get in the ERC725Y storage the bytes data stored at a specific data key `dataKey`. #### Parameters -| Name | Type | Description | -| --------- | :-------: | ------------------------------- | -| `dataKey` | `bytes32` | The key which value to retrieve | +| Name | Type | Description | +| --------- | :-------: | --------------------------------------------- | +| `dataKey` | `bytes32` | The data key for which to retrieve the value. | #### Returns -| Name | Type | Description | -| ----------- | :-----: | -------------------------- | -| `dataValue` | `bytes` | The data stored at the key | +| Name | Type | Description | +| ----------- | :-----: | ---------------------------------------------------- | +| `dataValue` | `bytes` | The bytes value stored under the specified data key. |
@@ -206,7 +233,9 @@ function getDataBatch( ) external view returns (bytes[] dataValues); ``` -_Gets array of data for multiple given keys_ +_Reading the ERC725Y storage for data keys `dataKeys` returned the following values: `dataValues`._ + +Get in the ERC725Y storage the bytes data stored at multiple data keys `dataKeys`. #### Parameters @@ -277,18 +306,42 @@ Leaves the contract without owner. It will not be possible to call `onlyOwner` f ::: +:::caution Warning + +**Note for developers:** despite the fact that this function is set as `payable`, if the function is not intended to receive value (= native tokens), **an additional check should be implemented to ensure that `msg.value` sent was equal to 0**. + +::: + ```solidity function setData(bytes32 dataKey, bytes dataValue) external payable; ``` -_Sets singular data for a given `dataKey`_ +_Setting the following data key value pair in the ERC725Y storage. Data key: `dataKey`, data value: `dataValue`. _ + +Sets a single bytes value `dataValue` in the ERC725Y storage for a specific data key `dataKey`. The function is marked as payable to enable flexibility on child contracts. For instance to implement a fee mechanism for setting specific data. + +
+ +**Requirements:** + +- SHOULD only be callable by the [`owner`](#owner). + +
+ +
+ +**Emitted events:** + +- [`DataChanged`](#datachanged) event. + +
#### Parameters -| Name | Type | Description | -| ----------- | :-------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dataKey` | `bytes32` | The key to retrieve stored value | -| `dataValue` | `bytes` | The value to set SHOULD only be callable by the owner of the contract set via ERC173 The function is marked as payable to enable flexibility on child contracts If the function is not intended to receive value, an additional check should be implemented to check that value equal 0. Emits a {DataChanged} event. | +| Name | Type | Description | +| ----------- | :-------: | ------------------------------------------ | +| `dataKey` | `bytes32` | The data key for which to set a new value. | +| `dataValue` | `bytes` | The new bytes value to set. |
@@ -303,20 +356,42 @@ _Sets singular data for a given `dataKey`_ ::: +:::caution Warning + +**Note for developers:** despite the fact that this function is set as `payable`, if the function is not intended to receive value (= native tokens), **an additional check should be implemented to ensure that `msg.value` sent was equal to 0**. + +::: + ```solidity function setDataBatch(bytes32[] dataKeys, bytes[] dataValues) external payable; ``` -Sets array of data for multiple given `dataKeys` SHOULD only be callable by the owner of the contract set via ERC173 The function is marked as payable to enable flexibility on child contracts If the function is not intended to receive value, an additional check should be implemented to check that value equal +_Setting the following data key value pairs in the ERC725Y storage. Data keys: `dataKeys`, data values: `dataValues`. _ + +Batch data setting function that behaves the same as [`setData`](#setdata) but allowing to set multiple data key/value pairs in the ERC725Y storage in the same transaction. + +
+ +**Requirements:** + +- SHOULD only be callable by the [`owner`](#owner) of the contract. + +
+ +
+ +**Emitted events:** -0. Emits a [`DataChanged`](#datachanged) event. +- [`DataChanged`](#datachanged) event **for each data key/value pair set**. + +
#### Parameters -| Name | Type | Description | -| ------------ | :---------: | ---------------------------------------- | -| `dataKeys` | `bytes32[]` | The array of data keys for values to set | -| `dataValues` | `bytes[]` | The array of values to set | +| Name | Type | Description | +| ------------ | :---------: | ---------------------------------------------------- | +| `dataKeys` | `bytes32[]` | An array of data keys to set bytes values for. | +| `dataValues` | `bytes[]` | An array of bytes values to set for each `dataKeys`. |
@@ -414,8 +489,7 @@ function _execute( ) internal nonpayable returns (bytes); ``` -check the `operationType` provided and perform the associated low-level opcode. -see `IERC725X.execute(uint256,address,uint256,bytes)`. +check the `operationType` provided and perform the associated low-level opcode after checking for requirements (see [`execute`](#execute)).
@@ -430,8 +504,7 @@ function _executeBatch( ) internal nonpayable returns (bytes[]); ``` -same as `_execute` but for batch execution -see `IERC725X,execute(uint256[],address[],uint256[],bytes[])` +check each `operationType` provided in the batch and perform the associated low-level opcode after checking for requirements (see [`executeBatch`](#executebatch)).
@@ -445,7 +518,7 @@ function _executeCall( ) internal nonpayable returns (bytes result); ``` -perform low-level call (operation type = 0) +Perform low-level call (operation type = 0) #### Parameters @@ -472,7 +545,7 @@ function _executeStaticCall( ) internal nonpayable returns (bytes result); ``` -perform low-level staticcall (operation type = 3) +Perform low-level staticcall (operation type = 3) #### Parameters @@ -498,7 +571,7 @@ function _executeDelegateCall( ) internal nonpayable returns (bytes result); ``` -perform low-level delegatecall (operation type = 4) +Perform low-level delegatecall (operation type = 4) #### Parameters @@ -524,7 +597,7 @@ function _deployCreate( ) internal nonpayable returns (bytes newContract); ``` -deploy a contract using the CREATE opcode (operation type = 1) +Deploy a contract using the `CREATE` opcode (operation type = 1) #### Parameters @@ -550,7 +623,7 @@ function _deployCreate2( ) internal nonpayable returns (bytes newContract); ``` -deploy a contract using the CREATE2 opcode (operation type = 2) +Deploy a contract using the `CREATE2` opcode (operation type = 2) #### Parameters @@ -573,6 +646,25 @@ deploy a contract using the CREATE2 opcode (operation type = 2) function _getData(bytes32 dataKey) internal view returns (bytes dataValue); ``` +Read the value stored under a specific `dataKey` inside the underlying ERC725Y storage, +represented as a mapping of `bytes32` data keys mapped to their `bytes` data values. + +```solidity +mapping(bytes32 => bytes) _store +``` + +#### Parameters + +| Name | Type | Description | +| --------- | :-------: | ----------------------------------------------------------------------- | +| `dataKey` | `bytes32` | A bytes32 data key to read the associated `bytes` value from the store. | + +#### Returns + +| Name | Type | Description | +| ----------- | :-----: | ----------------------------------------------------------------------------- | +| `dataValue` | `bytes` | The `bytes` value associated with the given `dataKey` in the ERC725Y storage. | +
### \_setData @@ -581,6 +673,28 @@ function _getData(bytes32 dataKey) internal view returns (bytes dataValue); function _setData(bytes32 dataKey, bytes dataValue) internal nonpayable; ``` +Write a `dataValue` to the underlying ERC725Y storage, represented as a mapping of +`bytes32` data keys mapped to their `bytes` data values. + +```solidity +mapping(bytes32 => bytes) _store +``` + +
+ +**Emitted events:** + +- [`DataChanged`](#datachanged) event emitted after a successful `setData` call. + +
+ +#### Parameters + +| Name | Type | Description | +| ----------- | :-------: | ------------------------------------------------------------------------------- | +| `dataKey` | `bytes32` | A bytes32 data key to write the associated `bytes` value to the store. | +| `dataValue` | `bytes` | The `bytes` value to associate with the given `dataKey` in the ERC725Y storage. | +
## Events @@ -600,18 +714,18 @@ function _setData(bytes32 dataKey, bytes dataValue) internal nonpayable; event ContractCreated(uint256 indexed operationType, address indexed contractAddress, uint256 indexed value, bytes32 salt); ``` -_Emitted when deploying a contract_ +_Deployed new contract at address `contractAddress` and funded with `value` wei (deployed using opcode: `operationType`)._ Emitted whenever a contract is created #### Parameters -| Name | Type | Description | -| ------------------------------- | :-------: | ------------------------------------------------------------------------------ | -| `operationType` **`indexed`** | `uint256` | The opcode used to deploy the contract (CREATE or CREATE2) | -| `contractAddress` **`indexed`** | `address` | The created contract address | -| `value` **`indexed`** | `uint256` | The amount of native tokens (in Wei) sent to fund the created contract address | -| `salt` | `bytes32` | - | +| Name | Type | Description | +| ------------------------------- | :-------: | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `operationType` **`indexed`** | `uint256` | The opcode used to deploy the contract (`CREATE` or `CREATE2`). | +| `contractAddress` **`indexed`** | `address` | The created contract address. | +| `value` **`indexed`** | `uint256` | The amount of native tokens (in Wei) sent to fund the created contract on deployment. | +| `salt` | `bytes32` | The salt used to deterministically deploy the contract (`CREATE2` only). If `CREATE` opcode is used, the salt value will be `bytes32(0)`. |
@@ -630,14 +744,16 @@ Emitted whenever a contract is created event DataChanged(bytes32 indexed dataKey, bytes dataValue); ``` -_Emitted when data at a key is changed_ +_The following data key/value pair has been changed in the ERC725Y storage: Data key: `dataKey`, data value: `dataValue`._ + +Emitted when data at a specific `dataKey` was changed to a new value `dataValue`. #### Parameters -| Name | Type | Description | -| ----------------------- | :-------: | ------------------------------------ | -| `dataKey` **`indexed`** | `bytes32` | The data key which data value is set | -| `dataValue` | `bytes` | The data value to set | +| Name | Type | Description | +| ----------------------- | :-------: | -------------------------------------------- | +| `dataKey` **`indexed`** | `bytes32` | The data key for which a bytes value is set. | +| `dataValue` | `bytes` | The value to set for the given data key. |
@@ -656,16 +772,18 @@ _Emitted when data at a key is changed_ event Executed(uint256 indexed operationType, address indexed target, uint256 indexed value, bytes4 selector); ``` -_Emitted when calling an address (EOA or contract)_ +_Called address `target` using `operationType` with `value` wei and `data`._ + +Emitted when calling an address `target` (EOA or contract) with `value`. #### Parameters -| Name | Type | Description | -| ----------------------------- | :-------: | ------------------------------------------------------------------------------------------------ | -| `operationType` **`indexed`** | `uint256` | The low-level call opcode used to call the `to` address (CALL, STATICALL or DELEGATECALL) | -| `target` **`indexed`** | `address` | The address to call. `target` will be unused if a contract is created (operation types 1 and 2). | -| `value` **`indexed`** | `uint256` | The amount of native tokens transferred with the call (in Wei) | -| `selector` | `bytes4` | The first 4 bytes (= function selector) of the data sent with the call | +| Name | Type | Description | +| ----------------------------- | :-------: | ---------------------------------------------------------------------------------------------------- | +| `operationType` **`indexed`** | `uint256` | The low-level call opcode used to call the `target` address (`CALL`, `STATICALL` or `DELEGATECALL`). | +| `target` **`indexed`** | `address` | The address to call. `target` will be unused if a contract is created (operation types 1 and 2). | +| `value` **`indexed`** | `uint256` | The amount of native tokens transferred along the call (in Wei). | +| `selector` | `bytes4` | The first 4 bytes (= function selector) of the data sent with the call. |
@@ -710,7 +828,7 @@ event OwnershipTransferred(address indexed previousOwner, address indexed newOwn error ERC725X_ContractDeploymentFailed(); ``` -reverts when contract deployment via `ERC725X.execute(...)`/`ERC725X.executeBatch(...)` failed. whether using operation type 1 (CREATE) or 2 (CREATE2). +Reverts when contract deployment failed via [`execute`](#execute) or [`executeBatch`](#executebatch) functions, This error can occur using either operation type 1 (`CREATE`) or 2 (`CREATE2`).
@@ -729,7 +847,7 @@ reverts when contract deployment via `ERC725X.execute(...)`/`ERC725X.executeBatc error ERC725X_CreateOperationsRequireEmptyRecipientAddress(); ``` -reverts when passing a `to` address while deploying a contract va `ERC725X.execute(...)`/`ERC725X.executeBatch(...)` whether using operation type 1 (CREATE) or 2 (CREATE2). +Reverts when passing a `to` address that is not `address(0)` (= address zero) while deploying a contract via [`execute`](#execute) or [`executeBatch`](#executebatch) functions. This error can occur using either operation type 1 (`CREATE`) or 2 (`CREATE2`).
@@ -748,7 +866,7 @@ reverts when passing a `to` address while deploying a contract va `ERC725X.execu error ERC725X_ExecuteParametersEmptyArray(); ``` -reverts when one of the array parameter provided to `executeBatch(uint256[],address[],uint256[],bytes[]) is an empty array +Reverts when one of the array parameter provided to the [`executeBatch`](#executebatch) function is an empty array.
@@ -767,7 +885,7 @@ reverts when one of the array parameter provided to `executeBatch(uint256[],addr error ERC725X_ExecuteParametersLengthMismatch(); ``` -reverts when there is not the same number of operation, to addresses, value, and data. +Reverts when there is not the same number of elements in the `operationTypes`, `targets` addresses, `values`, and `datas` array parameters provided when calling the [`executeBatch`](#executebatch) function.
@@ -786,14 +904,14 @@ reverts when there is not the same number of operation, to addresses, value, and error ERC725X_InsufficientBalance(uint256 balance, uint256 value); ``` -reverts when trying to send more native tokens `value` than available in current `balance`. +Reverts when trying to send more native tokens `value` than available in current `balance`. #### Parameters -| Name | Type | Description | -| --------- | :-------: | ---------------------------------------------------------------------------------------- | -| `balance` | `uint256` | the balance of the ERC725X contract. | -| `value` | `uint256` | the amount of native tokens sent via `ERC725X.execute(...)`/`ERC725X.executeBatch(...)`. | +| Name | Type | Description | +| --------- | :-------: | -------------------------------------------------------------------------------------------------------------------------------------- | +| `balance` | `uint256` | The balance of native tokens of the ERC725X smart contract. | +| `value` | `uint256` | The amount of native tokens sent via `ERC725X.execute(...)`/`ERC725X.executeBatch(...)` that is greater than the contract's `balance`. |
@@ -812,7 +930,7 @@ reverts when trying to send more native tokens `value` than available in current error ERC725X_MsgValueDisallowedInDelegateCall(); ``` -the `value` parameter (= sending native tokens) is not allowed when making a delegatecall via `ERC725X.execute(...)`/`ERC725X.executeBatch(...)` because msg.value is persisting. +Reverts when trying to send native tokens (`value` / `values[]` parameter of [`execute`](#execute) or [`executeBatch`](#executebatch) functions) while making a `delegatecall` (`operationType == 4`). Sending native tokens via `staticcall` is not allowed because `msg.value` is persisting.
@@ -831,7 +949,7 @@ the `value` parameter (= sending native tokens) is not allowed when making a del error ERC725X_MsgValueDisallowedInStaticCall(); ``` -the `value` parameter (= sending native tokens) is not allowed when making a staticcall via `ERC725X.execute(...)`/`ERC725X.executeBatch(...)` because sending native tokens is a state changing operation. +Reverts when trying to send native tokens (`value` / `values[]` parameter of [`execute`](#execute) or [`executeBatch`](#executebatch) functions) while making a `staticcall` (`operationType == 3`). Sending native tokens via `staticcall` is not allowed because it is a state changing operation.
@@ -850,7 +968,7 @@ the `value` parameter (= sending native tokens) is not allowed when making a sta error ERC725X_NoContractBytecodeProvided(); ``` -reverts when no contract bytecode was provided as parameter when trying to deploy a contract via `ERC725X.execute(...)`/`ERC725X.executeBatch(...)`, whether using operation type 1 (CREATE) or 2 (CREATE2). +Reverts when no contract bytecode was provided as parameter when trying to deploy a contract via [`execute`](#execute) or [`executeBatch`](#executebatch). This error can occur using either operation type 1 (`CREATE`) or 2 (`CREATE2`).
@@ -869,13 +987,13 @@ reverts when no contract bytecode was provided as parameter when trying to deplo error ERC725X_UnknownOperationType(uint256 operationTypeProvided); ``` -reverts when the `operationTypeProvided` is none of the default operation types available. (CALL = 0; CREATE = 1; CREATE2 = 2; STATICCALL = 3; DELEGATECALL = 4) +Reverts when the `operationTypeProvided` is none of the default operation types available. (CALL = 0; CREATE = 1; CREATE2 = 2; STATICCALL = 3; DELEGATECALL = 4) #### Parameters -| Name | Type | Description | -| ----------------------- | :-------: | ----------- | -| `operationTypeProvided` | `uint256` | - | +| Name | Type | Description | +| ----------------------- | :-------: | ------------------------------------------------------------------------------------------------------ | +| `operationTypeProvided` | `uint256` | The unrecognised operation type number provided to `ERC725X.execute(...)`/`ERC725X.executeBatch(...)`. |
@@ -894,7 +1012,7 @@ reverts when the `operationTypeProvided` is none of the default operation types error ERC725Y_DataKeysValuesEmptyArray(); ``` -reverts when one of the array parameter provided to `setDataBatch` is an empty array +Reverts when one of the array parameter provided to [`setDataBatch`](#setdatabatch) function is an empty array.
@@ -913,7 +1031,7 @@ reverts when one of the array parameter provided to `setDataBatch` is an empty a error ERC725Y_DataKeysValuesLengthMismatch(); ``` -reverts when there is not the same number of elements in the lists of data keys and data values when calling setDataBatch. +Reverts when there is not the same number of elements in the `datakeys` and `dataValues` array parameters provided when calling the [`setDataBatch`](#setdatabatch) function.
@@ -932,6 +1050,6 @@ reverts when there is not the same number of elements in the lists of data keys error ERC725Y_MsgValueDisallowed(); ``` -reverts when sending value to the `setData(..)` functions +Reverts when sending value to the [`setData`](#setdata) or [`setDataBatch`](#setdatabatch) function.