LCOV - code coverage report
Current view: top level - protocol/tokenization/base - EIP712Base.sol (source / functions) Coverage Total Hit
Test: lcov.info.p Lines: 100.0 % 7 7
Test Date: 2024-09-24 09:34:24 Functions: 100.0 % 4 4
Branches: - 0 0

             Branch data     Line data    Source code
       1                 :             : // SPDX-License-Identifier: MIT
       2                 :             : pragma solidity ^0.8.10;
       3                 :             : 
       4                 :             : /**
       5                 :             :  * @title EIP712Base
       6                 :             :  * @author Aave
       7                 :             :  * @notice Base contract implementation of EIP712.
       8                 :             :  */
       9                 :             : abstract contract EIP712Base {
      10                 :             :   bytes public constant EIP712_REVISION = bytes('1');
      11                 :             :   bytes32 internal constant EIP712_DOMAIN =
      12                 :             :     keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)');
      13                 :             : 
      14                 :             :   // Map of address nonces (address => nonce)
      15                 :             :   mapping(address => uint256) internal _nonces;
      16                 :             : 
      17                 :             :   bytes32 internal _domainSeparator;
      18                 :             :   uint256 internal immutable _chainId;
      19                 :             : 
      20                 :             :   /**
      21                 :             :    * @dev Constructor.
      22                 :             :    */
      23                 :             :   constructor() {
      24                 :       15145 :     _chainId = block.chainid;
      25                 :             :   }
      26                 :             : 
      27                 :             :   /**
      28                 :             :    * @notice Get the domain separator for the token
      29                 :             :    * @dev Return cached value if chainId matches cache, otherwise recomputes separator
      30                 :             :    * @return The domain separator of the token at current chain
      31                 :             :    */
      32                 :             :   function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
      33                 :        4021 :     if (block.chainid == _chainId) {
      34                 :        4020 :       return _domainSeparator;
      35                 :             :     }
      36                 :           1 :     return _calculateDomainSeparator();
      37                 :             :   }
      38                 :             : 
      39                 :             :   /**
      40                 :             :    * @notice Returns the nonce value for address specified as parameter
      41                 :             :    * @param owner The address for which the nonce is being returned
      42                 :             :    * @return The nonce value for the input address`
      43                 :             :    */
      44                 :             :   function nonces(address owner) public view virtual returns (uint256) {
      45                 :        1009 :     return _nonces[owner];
      46                 :             :   }
      47                 :             : 
      48                 :             :   /**
      49                 :             :    * @notice Compute the current domain separator
      50                 :             :    * @return The domain separator for the token
      51                 :             :    */
      52                 :             :   function _calculateDomainSeparator() internal view returns (bytes32) {
      53                 :      339395 :     return
      54                 :      339395 :       keccak256(
      55                 :             :         abi.encode(
      56                 :             :           EIP712_DOMAIN,
      57                 :             :           keccak256(bytes(_EIP712BaseId())),
      58                 :             :           keccak256(EIP712_REVISION),
      59                 :             :           block.chainid,
      60                 :             :           address(this)
      61                 :             :         )
      62                 :             :       );
      63                 :             :   }
      64                 :             : 
      65                 :             :   /**
      66                 :             :    * @notice Returns the user readable name of signing domain (e.g. token name)
      67                 :             :    * @return The name of the signing domain
      68                 :             :    */
      69                 :             :   function _EIP712BaseId() internal view virtual returns (string memory);
      70                 :             : }
        

Generated by: LCOV version 2.1-1