账户
0x0b...db05
0x0b...db05

0x0b...db05

US$0.00
此合同的源代码已经过验证!
合同元数据
编译器
0.8.24+commit.e11b9ed9
语言
Solidity
合同源代码
文件 1 的 2:AuthorizedClaimers.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.23;

import {IAuthorizedClaimers} from "./IAuthorizedClaimers.sol";

contract AuthorizedClaimers is IAuthorizedClaimers {
  mapping(address => address) authorizedClaimers;

  /// @inheritdoc IAuthorizedClaimers
  function authorizeClaimer(address claimer) external {
    address currentClaimer = authorizedClaimers[msg.sender];

    if (currentClaimer == claimer)
      revert AuthorizedClaimers_ClaimerAlreadyAuthorized();

    authorizedClaimers[msg.sender] = claimer;

    emit AuthorizedClaimerChanged(msg.sender, claimer);
  }

  /// @inheritdoc IAuthorizedClaimers
  function removeAuthorizedClaimer() external {
    delete authorizedClaimers[msg.sender];
    emit AuthorizedClaimerRemoved(msg.sender);
  }

  /// @inheritdoc IAuthorizedClaimers
  function getAuthorizedClaimer(
    address authorizer
  ) external view returns (address) {
    return authorizedClaimers[authorizer];
  }
}
合同源代码
文件 2 的 2:IAuthorizedClaimers.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.23;

// This contract is used to authorize claimers to claim rewards on the authorizer's behalf

interface IAuthorizedClaimers {
  error AuthorizedClaimers_ClaimerAlreadyAuthorized();

  event AuthorizedClaimerChanged(
    address indexed authorizer,
    address indexed claimer
  );
  event AuthorizedClaimerRemoved(address indexed authorizer);

  // Authorize a claimer to claim rewards on the callers behalf
  function authorizeClaimer(address claimer) external;

  // Get the authorized claimer for the authorizer
  function getAuthorizedClaimer(
    address authorizer
  ) external view returns (address);

  // Remove the authorized claimer for the caller
  function removeAuthorizedClaimer() external;
}
设置
{
  "compilationTarget": {
    "contracts/src/tokens/river/mainnet/AuthorizedClaimers.sol": "AuthorizedClaimers"
  },
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "appendCBOR": false,
    "bytecodeHash": "none"
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [
    ":@openzeppelin/=lib/@openzeppelin/",
    ":@prb/math/=lib/@prb/math/src/",
    ":@prb/test/=lib/@prb/test/src/",
    ":account-abstraction/=lib/account-abstraction/contracts/",
    ":base64/=lib/base64/",
    ":ds-test/=lib/ds-test/src/",
    ":forge-std/=lib/forge-std/src/",
    ":hardhat-deploy/=lib/hardhat-deploy/"
  ]
}
ABI
[{"inputs":[],"name":"AuthorizedClaimers_ClaimerAlreadyAuthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","type":"address"},{"indexed":true,"internalType":"address","name":"claimer","type":"address"}],"name":"AuthorizedClaimerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","type":"address"}],"name":"AuthorizedClaimerRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"claimer","type":"address"}],"name":"authorizeClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"authorizer","type":"address"}],"name":"getAuthorizedClaimer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAuthorizedClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"}]