Skip to content

Commit

Permalink
Update examples
Browse files Browse the repository at this point in the history
  • Loading branch information
boyuanx committed Aug 21, 2024
1 parent b5fc001 commit dd9b856
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"solidity.compileUsingRemoteVersion": "v0.8.24+commit.e11b9ed9",
"solidity.compileUsingRemoteVersion": "v0.8.26+commit.8a97fa7a",
"editor.formatOnSave": true,
"[solidity]": {
"editor.defaultFormatter": "JuanBlanco.solidity"
Expand Down
3 changes: 2 additions & 1 deletion foundry.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
[profile.default]
src = "src"
out = "out"
solc = "0.8.24"
solc = "0.8.26"
bytecode_hash = "none"
optimizer = true
optimizer_runs = 200
build_info = true
extra_output = ["storageLayout"]
auto_detect_remappings = true
gas_reports = ["*"]
via_ir = true

[fmt]
bracket_spacing = true
Expand Down
2 changes: 1 addition & 1 deletion hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const config: HardhatUserConfig = {
solidity: {
compilers: [
{
version: '0.8.24',
version: '0.8.26',
settings: {
optimizer: {
enabled: true,
Expand Down
File renamed without changes.
80 changes: 80 additions & 0 deletions src/02-schema-hook/WhitelistHook.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
import { IERC20 } from "@openzeppelin/contracts/interfaces/IERC20.sol";
import { ISPHook } from "@ethsign/sign-protocol-evm/src/interfaces/ISPHook.sol";

// @dev This contract manages the whitelist. We are separating the whitelist logic from the hook to make things easier
// to read.
contract WhitelistMananger is Ownable {
mapping(address attester => bool allowed) public whitelist;

error UnauthorizedAttester();

constructor() Ownable(_msgSender()) { }

function setWhitelist(address attester, bool allowed) external onlyOwner {
whitelist[attester] = allowed;
}

function _checkAttesterWhitelistStatus(address attester) internal view {
// solhint-disable-next-line custom-errors
require(whitelist[attester], UnauthorizedAttester());
}
}

// @dev This contract implements the actual schema hook.
contract WhitelistHook is ISPHook, WhitelistMananger {
function didReceiveAttestation(
address attester,
uint64, // schemaId
uint64, // attestationId
bytes calldata // extraData
)
external
payable
{
_checkAttesterWhitelistStatus(attester);
}

function didReceiveAttestation(
address attester,
uint64, // schemaId
uint64, // attestationId
IERC20, // resolverFeeERC20Token
uint256, // resolverFeeERC20Amount
bytes calldata // extraData
)
external
view
{
_checkAttesterWhitelistStatus(attester);
}

function didReceiveRevocation(
address attester,
uint64, // schemaId
uint64, // attestationId
bytes calldata // extraData
)
external
payable
{
_checkAttesterWhitelistStatus(attester);
}

function didReceiveRevocation(
address attester,
uint64, // schemaId
uint64, // attestationId
IERC20, // resolverFeeERC20Token
uint256, // resolverFeeERC20Amount
bytes calldata // extraData
)
external
view
{
_checkAttesterWhitelistStatus(attester);
}
}

0 comments on commit dd9b856

Please sign in to comment.