Skip to content

Commit dda8978

Browse files
committed
feat: tos signature struct
1 parent 2327dad commit dda8978

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

src/contracts/cloud/ComputeRegistry.sol

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ contract ComputeRegistry is
8989
*/
9090
function registerForCompute(
9191
OperatorSet memory operatorSet,
92-
bytes memory tosSignature
92+
bytes memory signature
9393
) external checkCanCall(operatorSet.avs) isValidOperatorSet(operatorSet) {
9494
// Check if there is at least one release for the operator set
9595
// The ReleaseManager will revert with `NoReleases()` if there are no releases for the operator set
@@ -99,7 +99,7 @@ contract ComputeRegistry is
9999
_checkIsValidSignatureNow({
100100
signer: msg.sender,
101101
signableDigest: calculateTOSAgreementDigest(operatorSet, msg.sender),
102-
signature: tosSignature,
102+
signature: signature,
103103
expiry: MAX_EXPIRY
104104
});
105105

@@ -109,9 +109,10 @@ contract ComputeRegistry is
109109

110110
// Register the operator set
111111
isOperatorSetRegistered[operatorSetKey] = true;
112-
operatorSetTosSignature[operatorSetKey] = tosSignature;
112+
_operatorSetTosSignature[operatorSetKey] =
113+
TOSSignature({signer: msg.sender, tosHash: tosHash, signature: signature});
113114

114-
emit OperatorSetRegistered(operatorSet, tosSignature);
115+
emit OperatorSetRegistered(operatorSet, msg.sender, tosHash, signature);
115116
}
116117

117118
/**
@@ -163,6 +164,15 @@ contract ComputeRegistry is
163164
*
164165
*/
165166

167+
/**
168+
* @inheritdoc IComputeRegistry
169+
*/
170+
function getOperatorSetTosSignature(
171+
OperatorSet memory operatorSet
172+
) external view returns (TOSSignature memory) {
173+
return _operatorSetTosSignature[operatorSet.key()];
174+
}
175+
166176
/**
167177
* @notice Calculates the EIP-712 digest hash that should be signed
168178
* @param operatorSet The operator set that is agreeing to the TOS

src/contracts/cloud/ComputeRegistryStorage.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ abstract contract ComputeRegistryStorage is IComputeRegistry {
2929

3030
/// @notice Mapping to track if an operator set is registered for compute
3131
/// @dev operatorSetKey => isRegistered
32-
mapping(bytes32 => bool) public isOperatorSetRegistered;
32+
mapping(bytes32 operatorSetKey => bool isRegistered) public isOperatorSetRegistered;
3333

3434
/// @notice Mapping to store the Terms of Service signature for each registered operator set
3535
/// @dev operatorSetKey => tosSignature
36-
mapping(bytes32 => bytes) public operatorSetTosSignature;
36+
mapping(bytes32 operatorSetKey => TOSSignature tosSignature) internal _operatorSetTosSignature;
3737

3838
/**
3939
* @dev This empty reserved space is put in place to allow future versions to add new

src/contracts/interfaces/IComputeRegistry.sol

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ import {OperatorSet} from "../libraries/OperatorSetLib.sol";
55
import {IReleaseManager} from "./IReleaseManager.sol";
66
import {IAllocationManager} from "./IAllocationManager.sol";
77

8+
interface IComputeRegistryTypes {
9+
/// @notice The Terms of Service signature
10+
struct TOSSignature {
11+
address signer;
12+
bytes32 tosHash;
13+
bytes signature;
14+
}
15+
}
16+
817
interface IComputeRegistryErrors {
918
/// @dev Thrown when the provided signature does not match the expected Terms of Service signature
1019
error InvalidTOSSignature();
@@ -22,8 +31,12 @@ interface IComputeRegistryErrors {
2231
interface IComputeRegistryEvents {
2332
/// @notice Emitted when an operator set is registered for compute
2433
/// @param operatorSet The operator set that was registered
25-
/// @param tosSignature The signature of the Terms of Service
26-
event OperatorSetRegistered(OperatorSet indexed operatorSet, bytes tosSignature);
34+
/// @param signer The address that signed the Terms of Service
35+
/// @param tosHash The hash of the Terms of Service
36+
/// @param signature The signature of the Terms of Service
37+
event OperatorSetRegistered(
38+
OperatorSet indexed operatorSet, address indexed signer, bytes32 indexed tosHash, bytes signature
39+
);
2740

2841
/// @notice Emitted when an operator set is deregistered from compute
2942
/// @param operatorSet The operator set that was deregistered
@@ -34,7 +47,7 @@ interface IComputeRegistryEvents {
3447
event TosHashSet(bytes32 tosHash);
3548
}
3649

37-
interface IComputeRegistry is IComputeRegistryErrors, IComputeRegistryEvents {
50+
interface IComputeRegistry is IComputeRegistryErrors, IComputeRegistryEvents, IComputeRegistryTypes {
3851
/**
3952
*
4053
* WRITE FUNCTIONS
@@ -44,12 +57,12 @@ interface IComputeRegistry is IComputeRegistryErrors, IComputeRegistryEvents {
4457
/**
4558
* @notice Registers an operator set for compute services
4659
* @param operatorSet The operator set to register
47-
* @param tosSignature The EIP-712 signature of the Terms of Service
60+
* @param signature The EIP-712 signature of the Terms of Service
4861
* @dev Requires the caller to have permission to call on behalf of the operatorSet.avs
4962
* @dev The operator set must have at least one release available in the ReleaseManager
5063
* @dev The signature must be a valid EIP-712 signature of the Terms of Service with expiry set to MAX_EXPIRY
5164
*/
52-
function registerForCompute(OperatorSet calldata operatorSet, bytes memory tosSignature) external;
65+
function registerForCompute(OperatorSet calldata operatorSet, bytes memory signature) external;
5366

5467
/**
5568
* @notice Deregisters an operator set from compute services
@@ -116,13 +129,13 @@ interface IComputeRegistry is IComputeRegistryErrors, IComputeRegistryEvents {
116129
) external view returns (bool);
117130

118131
/**
119-
* @notice Returns the Terms of Service signature for a registered operator set
120-
* @param operatorSetKey The key of the operator set to query
132+
* @notice Returns the Terms of Service signature for an operator set
133+
* @param operatorSet The operator set to query
121134
* @return The Terms of Service signature
122135
*/
123-
function operatorSetTosSignature(
124-
bytes32 operatorSetKey
125-
) external view returns (bytes memory);
136+
function getOperatorSetTosSignature(
137+
OperatorSet memory operatorSet
138+
) external view returns (TOSSignature memory);
126139

127140
/**
128141
* @notice Calculates the EIP-712 digest hash that should be signed

0 commit comments

Comments
 (0)