Skip to content

Commit 3bf3eff

Browse files
committed
Adding mocks to verify that the sdk is actually importable
1 parent fdee3b4 commit 3bf3eff

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

scripts/mocks/HelloWormhole.sol

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// SPDX-License-Identifier: UNLICENSED
2+
pragma solidity ^0.8.13;
3+
4+
import {IWormholeRelayer} from "../interfaces/IWormholeRelayer.sol";
5+
import {IWormholeReceiver} from "../interfaces/IWormholeReceiver.sol";
6+
7+
contract HelloWormhole is IWormholeReceiver {
8+
event GreetingReceived(string greeting, uint16 senderChain, address sender);
9+
10+
uint256 constant GAS_LIMIT = 50_000;
11+
12+
IWormholeRelayer public immutable wormholeRelayer;
13+
14+
string public latestGreeting;
15+
16+
constructor(address _wormholeRelayer) {
17+
wormholeRelayer = IWormholeRelayer(_wormholeRelayer);
18+
}
19+
20+
function quoteCrossChainGreeting(
21+
uint16 targetChain
22+
) public view returns (uint256 cost) {
23+
(cost, ) = wormholeRelayer.quoteEVMDeliveryPrice(
24+
targetChain,
25+
0,
26+
GAS_LIMIT
27+
);
28+
}
29+
30+
function sendCrossChainGreeting(
31+
uint16 targetChain,
32+
address targetAddress,
33+
string memory greeting
34+
) public payable {
35+
uint256 cost = quoteCrossChainGreeting(targetChain);
36+
require(msg.value == cost);
37+
wormholeRelayer.sendPayloadToEvm{value: cost}(
38+
targetChain,
39+
targetAddress,
40+
abi.encode(greeting, msg.sender), // payload
41+
0, // no receiver value needed since we're just passing a message
42+
GAS_LIMIT
43+
);
44+
}
45+
46+
function receiveWormholeMessages(
47+
bytes memory payload,
48+
bytes[] memory, // additionalVaas
49+
bytes32, // address that called 'sendPayloadToEvm' (HelloWormhole contract address)
50+
uint16 sourceChain,
51+
bytes32 // unique identifier of delivery
52+
) public payable override {
53+
require(msg.sender == address(wormholeRelayer), "Only relayer allowed");
54+
55+
// Parse the payload and do the corresponding actions!
56+
(string memory greeting, address sender) = abi.decode(
57+
payload,
58+
(string, address)
59+
);
60+
latestGreeting = greeting;
61+
emit GreetingReceived(latestGreeting, sourceChain, sender);
62+
}
63+
}

scripts/publish.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ if [[ -d "contracts" ]]; then
2323
rm -rf contracts
2424
fi
2525

26-
mkdir contracts
26+
mkdir -p contracts
2727

2828
cp -r src/* contracts/.
29+
cp -r scripts/mocks contracts/.
2930
rm -rf contracts/testing
3031
node scripts/clean-remapping.js
3132

@@ -40,6 +41,8 @@ npx hardhat compile
4041
if [ $? -ne 0 ]; then
4142
echo "Compilation failed. Exiting."
4243
exit 1
44+
elif
45+
rm -rf contracts/mocks
4346
fi
4447

4548
# Continue with the rest of your script

0 commit comments

Comments
 (0)