Multidelivery, forwarding tests work + Relayer engine fix!
This commit is contained in:
parent
249145af86
commit
f5c1fe3a7b
|
@ -92,17 +92,30 @@ contract MockRelayerIntegration is IWormholeReceiver {
|
|||
function sendMessagesWithFurtherInstructions(
|
||||
bytes[] memory messages,
|
||||
FurtherInstructions memory furtherInstructions,
|
||||
uint16 targetChainId,
|
||||
address destination,
|
||||
address refundAddress,
|
||||
uint256 applicationBudget,
|
||||
uint32 nonce
|
||||
uint16[] memory chains,
|
||||
uint256[] memory computeBudgets
|
||||
) public payable {
|
||||
for(uint16 i=0; i<messages.length; i++) {
|
||||
wormhole.publishMessage{value: wormhole.messageFee()}(nonce, messages[i], 200);
|
||||
wormhole.publishMessage{value: wormhole.messageFee()}(1, messages[i], 200);
|
||||
}
|
||||
wormhole.publishMessage{value: wormhole.messageFee()}(nonce, encodeFurtherInstructions(furtherInstructions), 200);
|
||||
executeSend(targetChainId, destination, refundAddress, applicationBudget, nonce);
|
||||
wormhole.publishMessage{value: wormhole.messageFee()}(1, encodeFurtherInstructions(furtherInstructions), 200);
|
||||
ICoreRelayer.DeliveryRequest[] memory requests = new ICoreRelayer.DeliveryRequest[](chains.length);
|
||||
for(uint16 i=0; i<chains.length; i++) {
|
||||
requests[i] = ICoreRelayer.DeliveryRequest({
|
||||
targetChain: chains[i],
|
||||
targetAddress: registeredContracts[chains[i]],
|
||||
refundAddress: registeredContracts[chains[i]],
|
||||
computeBudget: computeBudgets[i],
|
||||
applicationBudget: 0,
|
||||
relayParameters: relayer.getDefaultRelayParams()
|
||||
});
|
||||
}
|
||||
ICoreRelayer.DeliveryRequestsContainer memory container = ICoreRelayer.DeliveryRequestsContainer({
|
||||
payloadId: 1,
|
||||
requests: requests,
|
||||
relayProviderAddress: address(relayer.getDefaultRelayProvider())
|
||||
});
|
||||
relayer.requestMultidelivery{value: (msg.value - wormhole.messageFee()*(1 + messages.length))}(container, 1);
|
||||
}
|
||||
|
||||
function executeSend(
|
||||
|
|
|
@ -4,31 +4,31 @@
|
|||
"relayProviders": [
|
||||
{
|
||||
"chainId": 2,
|
||||
"address": "0x59a13b07fE44Aa7221Fd6C55A3E8df26d4E37a65"
|
||||
"address": "0x027e4121d4675465E8029F09511D813c3476Ebf5"
|
||||
},
|
||||
{
|
||||
"chainId": 4,
|
||||
"address": "0x3e5399049a779489000583dD0d14576D0472Fe94"
|
||||
"address": "0x13331A9E619b4e016f35f29dF84c1b14675fE33D"
|
||||
}
|
||||
],
|
||||
"coreRelayers": [
|
||||
{
|
||||
"chainId": 2,
|
||||
"address": "0x32e02F2934824ec085298E2B4e0e07935Ec6DaeC"
|
||||
"address": "0xaa8751Df9FC4b9424831Fb361F0C14096FC0C204"
|
||||
},
|
||||
{
|
||||
"chainId": 4,
|
||||
"address": "0xa69F4c9F17e4C90138c55279aAF1917352D435C7"
|
||||
"address": "0xbbf69673e44988D2FD7D878eDbD1cDDa1A70fAB7"
|
||||
}
|
||||
],
|
||||
"mockIntegrations": [
|
||||
{
|
||||
"chainId": 2,
|
||||
"address": "0x3Cc7B9a386410858B412B00B13264654F68364Ed"
|
||||
"address": "0x01c4052ac7EEF0cbDdc83F3780149D52D4174776"
|
||||
},
|
||||
{
|
||||
"chainId": 4,
|
||||
"address": "0xba5b7E64bae1f953816B9f3a7de6B5b5378F9Fb8"
|
||||
"address": "0x7fcFA6cE32bF1F20337bD6AA6805EF28A04e906f"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -71,7 +71,7 @@ describe("Core Relayer Integration Test - Two Chains", () => {
|
|||
console.log(`Sent message: ${arbitraryPayload}`)
|
||||
const value = await sourceCoreRelayer.quoteGasDeliveryFee(
|
||||
targetChain.chainId,
|
||||
1000000,
|
||||
500000,
|
||||
await sourceCoreRelayer.getDefaultRelayProvider()
|
||||
)
|
||||
console.log(`Quoted gas delivery fee: ${value}`)
|
||||
|
@ -88,7 +88,7 @@ describe("Core Relayer Integration Test - Two Chains", () => {
|
|||
await new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(0)
|
||||
}, 1000)
|
||||
}, 2000)
|
||||
})
|
||||
|
||||
console.log("Checking if message was relayed")
|
||||
|
@ -127,11 +127,8 @@ describe("Core Relayer Integration Test - Two Chains", () => {
|
|||
const tx = await sourceMockIntegration.sendMessagesWithFurtherInstructions(
|
||||
[arbitraryPayload1],
|
||||
furtherInstructions,
|
||||
targetChain.chainId,
|
||||
targetMockIntegrationAddress,
|
||||
targetMockIntegrationAddress,
|
||||
0,
|
||||
1,
|
||||
[targetChain.chainId],
|
||||
[value.add(extraForwardingValue)],
|
||||
{ value: value.add(extraForwardingValue), gasLimit: 500000 }
|
||||
)
|
||||
console.log("Sent delivery request!")
|
||||
|
@ -141,7 +138,7 @@ describe("Core Relayer Integration Test - Two Chains", () => {
|
|||
await new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(0)
|
||||
}, 2000)
|
||||
}, 4000)
|
||||
})
|
||||
|
||||
console.log("Checking if message was relayed")
|
||||
|
@ -158,4 +155,59 @@ describe("Core Relayer Integration Test - Two Chains", () => {
|
|||
console.log(`Received message on source: ${message2}`)
|
||||
expect(message2).to.equal(arbitraryPayload2)
|
||||
})
|
||||
|
||||
it("Executes a multidelivery", async () => {
|
||||
const arbitraryPayload1 = ethers.utils.hexlify(
|
||||
ethers.utils.toUtf8Bytes(generateRandomString(32))
|
||||
)
|
||||
console.log(`Sent message: ${arbitraryPayload1}`)
|
||||
const value1 = await sourceCoreRelayer.quoteGasDeliveryFee(
|
||||
sourceChain.chainId,
|
||||
500000,
|
||||
await sourceCoreRelayer.getDefaultRelayProvider()
|
||||
)
|
||||
const value2 = await sourceCoreRelayer.quoteGasDeliveryFee(
|
||||
targetChain.chainId,
|
||||
500000,
|
||||
await sourceCoreRelayer.getDefaultRelayProvider()
|
||||
)
|
||||
console.log(`Quoted gas delivery fee: ${value1.add(value2)}`)
|
||||
|
||||
const furtherInstructions: MockRelayerIntegration.FurtherInstructionsStruct = {
|
||||
keepSending: false,
|
||||
newMessages: [],
|
||||
chains: [],
|
||||
gasLimits: [],
|
||||
}
|
||||
const tx = await sourceMockIntegration.sendMessagesWithFurtherInstructions(
|
||||
[arbitraryPayload1],
|
||||
furtherInstructions,
|
||||
[sourceChain.chainId, targetChain.chainId],
|
||||
[value1, value2],
|
||||
{ value: value1.add(value2), gasLimit: 500000 }
|
||||
)
|
||||
console.log("Sent delivery request!")
|
||||
const rx = await tx.wait()
|
||||
console.log("Message confirmed!")
|
||||
|
||||
await new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(0)
|
||||
}, 4000)
|
||||
})
|
||||
|
||||
console.log("Checking if first message was relayed")
|
||||
const message1 = await sourceMockIntegration.getMessage()
|
||||
console.log(
|
||||
`Sent message: ${arbitraryPayload1}`
|
||||
)
|
||||
console.log(`Received message: ${message1}`)
|
||||
expect(message1).to.equal(arbitraryPayload1)
|
||||
|
||||
console.log("Checking if second message was relayed")
|
||||
const message2 = await targetMockIntegration.getMessage()
|
||||
console.log(`Sent message: ${arbitraryPayload1}`)
|
||||
console.log(`Received message: ${message2}`)
|
||||
expect(message2).to.equal(arbitraryPayload1)
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue