Skip to content

Commit

Permalink
Merge pull request #19 for FF exhibition v4 release
Browse files Browse the repository at this point in the history
Feralfile Exhibition V4
  • Loading branch information
lemonlatte authored Jun 29, 2023
2 parents 0df5ffe + 78295a7 commit ff80a5d
Show file tree
Hide file tree
Showing 12 changed files with 1,867 additions and 58 deletions.
17 changes: 17 additions & 0 deletions .github/workflows/prettier.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: prettier
on:
push:
pull_request:

jobs:
prettier:
name: prettier
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Prettify code
uses: creyD/[email protected]
with:
# This part is also where you can pass other options, for example:
prettier_options: --check contracts/FeralfileArtworkV4.sol
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
build
node_modules
coverage/*
coverage.json
coverage.json
46 changes: 46 additions & 0 deletions contracts/ECDSASigner.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract ECDSASigner is Ownable {
address private _signer;

constructor(address signer_) {
require(signer_ != address(0), "ECDSASign: signer_ is zero address");
_signer = signer_;
}

/// @notice isValidSignature validates a message by ecrecover to ensure
// it is signed by signer.
/// @param message_ - the raw message for signing
/// @param r_ - part of signature for validating parameters integrity
/// @param s_ - part of signature for validating parameters integrity
/// @param v_ - part of signature for validating parameters integrity
function isValidSignature(
bytes32 message_,
bytes32 r_,
bytes32 s_,
uint8 v_
) internal view returns (bool) {
address reqSigner = ECDSA.recover(
ECDSA.toEthSignedMessageHash(message_),
v_,
r_,
s_
);
return reqSigner == _signer;
}

/// @notice set the signer
/// @param signer_ - the address of signer
function setSigner(address signer_) external onlyOwner {
require(signer_ != address(0), "ECDSASign: signer_ is zero address");
_signer = signer_;
}

function signer() external view returns (address) {
return _signer;
}
}
Loading

0 comments on commit ff80a5d

Please sign in to comment.