Skip to content

Commit dcc276f

Browse files
committed
wip
1 parent 5978143 commit dcc276f

File tree

7 files changed

+86
-51
lines changed

7 files changed

+86
-51
lines changed

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
[submodule "lib/WAVS"]
55
path = lib/WAVS
66
url = https://github.com/Lay3rLabs/WAVS
7+
branch = chain-name-newtype

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,14 @@ make start-all
7575

7676
```bash
7777
# Deploy (override: FOUNDRY_ANVIL_PRIVATE_KEY)
78-
forge script ./script/WavsServiceManager.s.sol --rpc-url http://localhost:8545 --broadcast
78+
forge script ./script/WavsSubmit.s.sol --rpc-url http://localhost:8545 --broadcast
7979

8080
# Grab deployed service manager from script file output
81-
export SERVICE_MANAGER_ADDRESS=`jq -r '.service_manager' "./.docker/cli/script_deploy.json"`
82-
echo "Service Manager Address: $SERVICE_MANAGER_ADDRESS"
81+
export SERVICE_HANDLER_ADDR=`jq -r '.service_handler' "./.docker/cli/script_deploy.json"`
82+
echo "Service Handler Addr: $SERVICE_HANDLER_ADDR"
83+
84+
wavs-cli deploy-eigen-service-manager --data ./.docker/cli --service-handler ${SERVICE_HANDLER_ADDR}
85+
export SERVICE_MANAGER=0x99bba657f2bbc93c02d617f8ba121cb8fc104acf # manually parsing because json output is terrible
8386
```
8487

8588
### Build WASI components
@@ -106,7 +109,7 @@ trigger_event=$(cast sig-event "NewTrigger(bytes)"); echo "Trigger Event: $trigg
106109
service_info=`wavs-cli deploy-service --log-level=error --data ./.docker/cli --component $(pwd)/compiled/eth_trigger_weather.wasm \
107110
--trigger-event-name ${trigger_event:2} \
108111
--trigger eth-contract-event \
109-
--submit-address ${SERVICE_MANAGER_ADDRESS} \
112+
--submit-address ${SERVICE_MANAGER} \
110113
--service-config '{"fuelLimit":100000000,"maxGas":5000000,"hostEnvs":["WAVS_ENV_OPEN_WEATHER_API_KEY"],"kv":[],"workflowId":"default","componentId":"default"}'`
111114

112115
echo "Service info: $service_info"

lib/WAVS

Submodule WAVS updated 84 files
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.8.13;
33

44
import "forge-std/Script.sol";
5-
import {WavsServiceManager} from "../src/WavsServiceManager.sol";
5+
import {WavsSubmit} from "../src/WavsSubmit.sol";
66
import {ECDSAStakeRegistry} from "@eigenlayer/middleware/src/unaudited/ECDSAStakeRegistry.sol";
77
import {IDelegationManager} from
88
"@eigenlayer/middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol";
@@ -13,8 +13,8 @@ import { Strings } from "@openzeppelin-contracts/utils/Strings.sol";
1313

1414

1515

16-
// forge script ./script/WavsServiceManager.s.sol --rpc-url http://localhost:8545 --broadcast
17-
contract WavsServiceManagerScript is Script {
16+
// forge script ./script/WavsSubmit.s.sol --rpc-url http://localhost:8545 --broadcast
17+
contract WavsSubmitScript is Script {
1818
using stdJson for string;
1919

2020
string root = vm.projectRoot();
@@ -38,22 +38,22 @@ contract WavsServiceManagerScript is Script {
3838
console.log("rewards_coordinator:", eigen.rewards_coordinator);
3939
console.log("avs_directory:", eigen.avs_directory);
4040

41-
WavsServiceManager sm = new WavsServiceManager(
42-
eigen.avs_directory, address(ecdsa_registry), eigen.rewards_coordinator, eigen.delegation_manager
41+
WavsSubmit submit = new WavsSubmit(
42+
// eigen.avs_directory, address(ecdsa_registry), eigen.rewards_coordinator, eigen.delegation_manager
4343
);
4444

4545
IStrategy mockStrategy = IStrategy(address(0x1234));
4646
Quorum memory quorum = Quorum({strategies: new StrategyParams[](1)});
4747
quorum.strategies[0] = StrategyParams({strategy: mockStrategy, multiplier: 10_000});
48-
ecdsa_registry.initialize(address(sm), 0, quorum);
48+
ecdsa_registry.initialize(address(submit), 0, quorum);
4949

5050
vm.stopBroadcast();
5151

5252
console.log("ecdsa_registry:", address(ecdsa_registry));
53-
console.log("service_manager:", address(sm));
53+
console.log("service_handler:", address(submit));
5454

5555
string memory json = "json";
56-
json.serialize("service_manager", Strings.toHexString(address(sm)));
56+
json.serialize("service_handler", Strings.toHexString(address(submit)));
5757
string memory finalJson = json.serialize("ecdsa_registry", Strings.toHexString(address(ecdsa_registry)));
5858
vm.writeFile(script_output_path, finalJson);
5959
}

src/WavsServiceManager.sol

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/WavsSubmit.sol

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
import {IServiceHandler} from "./interfaces/IWAVSServiceHandler.sol";
5+
import {ISimpleTrigger} from "./interfaces/ISimpleTrigger.sol";
6+
import {ISimpleSubmit} from "./interfaces/ISimpleSubmit.sol";
7+
8+
contract WavsSubmit is IServiceHandler {
9+
address private owner;
10+
address private serviceManager;
11+
12+
mapping(ISimpleTrigger.TriggerId => bool) validTriggers;
13+
mapping(ISimpleTrigger.TriggerId => bytes) datas;
14+
mapping(ISimpleTrigger.TriggerId => bytes) signatures;
15+
16+
constructor() {
17+
owner = msg.sender;
18+
}
19+
20+
modifier onlyOwner() {
21+
require(msg.sender == owner, "Only the owner can call this function.");
22+
_;
23+
}
24+
25+
modifier onlyServiceManager() {
26+
require(msg.sender == serviceManager, "Only the service manager can call this function.");
27+
_;
28+
}
29+
30+
function setServiceManager(address newServiceManager) external onlyOwner {
31+
serviceManager = newServiceManager;
32+
}
33+
34+
function getServiceManager() public view returns (address) {
35+
return serviceManager;
36+
}
37+
38+
function handleAddPayload(bytes calldata data, bytes calldata signature) external { // onlyServiceManager
39+
ISimpleSubmit.DataWithId memory dataWithId = abi.decode(data, (ISimpleSubmit.DataWithId));
40+
41+
signatures[dataWithId.triggerId] = signature;
42+
datas[dataWithId.triggerId] = dataWithId.data;
43+
validTriggers[dataWithId.triggerId] = true;
44+
}
45+
46+
function isValidTriggerId(ISimpleTrigger.TriggerId triggerId) external view returns (bool) {
47+
return validTriggers[triggerId];
48+
}
49+
50+
function getSignature(ISimpleTrigger.TriggerId triggerId) external view returns (bytes memory signature) {
51+
signature = signatures[triggerId];
52+
}
53+
54+
function getData(ISimpleTrigger.TriggerId triggerId) external view returns (bytes memory data) {
55+
data = datas[triggerId];
56+
}
57+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.0;
3+
4+
// https://github.com/Lay3rLabs/WAVS/blob/chain-name-newtype/sdk/contracts/solidity/interfaces/IServiceHandler.sol
5+
interface IServiceHandler {
6+
/**
7+
* @notice Called by LayerServiceManager after successful payload signature validation.
8+
* @param data The arbitrary data that was signed.
9+
* @param signature The signature of the data.
10+
*/
11+
function handleAddPayload(bytes calldata data, bytes calldata signature) external;
12+
}

0 commit comments

Comments
 (0)