Skip to content

Commit f286a74

Browse files
committed
Contract?
1 parent 99ef124 commit f286a74

File tree

4 files changed

+13
-59
lines changed

4 files changed

+13
-59
lines changed

script/Counter.s.sol

-19
This file was deleted.

src/Counter.sol

-14
This file was deleted.

src/WeekPool.sol

+13-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
pragma solidity ^0.8.13;
33

44
import {Token} from "./Token.sol";
5+
import {ECDSA} from "solady/utils/ECDSA.sol";
56

67
contract WeekPool {
78
uint256 private _week;
89
uint256 private _totalPoints;
910
Token private _token;
11+
uint256 private _tokens;
1012

1113
address private _signer;
1214

@@ -16,11 +18,12 @@ contract WeekPool {
1618
bytes32 private constant SOME_TYPE_HASH = keccak256("BaselineRequest(uint256 vehicleId,address owner,uint256 week,uint256 points)");
1719

1820

19-
constructor(address token, uint256 week, uint256 totalPoints, address signer) {
21+
constructor(address token, uint256 week, uint256 totalPoints, address signer, uint256 tokens) {
2022
_token = Token(token);
2123
_week = week;
2224
_totalPoints = totalPoints;
2325
_signer = signer;
26+
_tokens = tokens;
2427
}
2528

2629
function claim(bytes calldata data) external {
@@ -34,8 +37,16 @@ contract WeekPool {
3437

3538
(uint256 vehicleId, address owner, uint256 week, uint256 points, bytes memory signature) = abi.decode(data, (uint256, address, uint256, uint256, bytes));
3639

40+
require(!_claimed[vehicleId], "Already claimed");
41+
require(_week == week, "Wrong week");
42+
3743
bytes32 structHash = keccak256(abi.encode(SOME_TYPE_HASH, vehicleId, owner, week, points));
3844
bytes32 fullHash = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, structHash));
39-
45+
46+
require(ECDSA.recover(fullHash, signature) == _signer, "Wrong signer");
47+
48+
_claimed[vehicleId] = true;
49+
50+
require(_token.transfer(owner, (_tokens * points) / _totalPoints), "Transfer failed");
4051
}
4152
}

test/Counter.t.sol

-24
This file was deleted.

0 commit comments

Comments
 (0)