47 lines
1.4 KiB
Solidity
47 lines
1.4 KiB
Solidity
|
|
||
|
// SPDX-License-Identifier: CC0-1.0
|
||
|
pragma solidity ^0.8.0;
|
||
|
import "./interfaces/IERC5851.sol";
|
||
|
|
||
|
|
||
|
abstract contract ERC5851Issuer is IERC5851{
|
||
|
mapping(uint256 => IERC5851.Claim[]) private _claimMetadata;
|
||
|
mapping(address => mapping(uint256 => bool)) private _SBTVerified;
|
||
|
address public admin;
|
||
|
|
||
|
constructor() {
|
||
|
admin = msg.sender;
|
||
|
|
||
|
}
|
||
|
|
||
|
function ifVerified(address claimmer, uint256 SBTID) public override view returns (bool){
|
||
|
return(_SBTVerified[claimmer][SBTID]);
|
||
|
}
|
||
|
|
||
|
function standardClaim(uint256 SBTID) public override view returns (Claim[] memory){
|
||
|
return(_claimMetadata[SBTID]);
|
||
|
}
|
||
|
|
||
|
function changeStandardClaim(uint256 SBTID, Claim[] memory _claims) public override returns (bool){
|
||
|
require(msg.sender == admin);
|
||
|
_claimMetadata[SBTID] = _claims;
|
||
|
emit StandardChanged(SBTID, _claims);
|
||
|
return(true);
|
||
|
}
|
||
|
|
||
|
function certify(address claimer, uint256 SBTID) public override returns (bool){
|
||
|
require(msg.sender == admin);
|
||
|
_SBTVerified[claimer][SBTID] = true;
|
||
|
emit Certified(claimer, SBTID);
|
||
|
return(true);
|
||
|
}
|
||
|
|
||
|
function revoke(address claimer, uint256 SBTID) external override returns (bool){
|
||
|
require(msg.sender == admin);
|
||
|
_SBTVerified[claimer][SBTID] = false;
|
||
|
emit Revoked(claimer, SBTID);
|
||
|
return(true);
|
||
|
}
|
||
|
|
||
|
}
|