Skip to content

Commit

Permalink
update QueryResponse.sol
Browse files Browse the repository at this point in the history
  • Loading branch information
evan-gray committed Jan 29, 2024
1 parent e8d9ea8 commit d5c54ea
Showing 1 changed file with 22 additions and 22 deletions.
44 changes: 22 additions & 22 deletions src/libraries/QueryResponse.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// contracts/query/QueryResponse.sol
// SPDX-License-Identifier: Apache 2

pragma solidity ^0.8.0;
pragma solidity ^0.8.4;

// TODO: Change this to use the version of BytesParsing.sol in wormhole-solidity-sdk once it is release.
import {BytesParsing} from "./BytesParsing.sol";
import "../interfaces/IWormhole.sol";

Expand Down Expand Up @@ -137,7 +139,7 @@ abstract contract QueryResponse {
function parseAndVerifyQueryResponse(bytes memory response, IWormhole.Signature[] memory signatures) public view returns (ParsedQueryResponse memory r) {
verifyQueryResponseSignatures(response, signatures);

uint index = 0;
uint index;

(r.version, index) = response.asUint8Unchecked(index);
if (r.version != VERSION) {
Expand Down Expand Up @@ -189,7 +191,7 @@ abstract contract QueryResponse {
r.responses = new ParsedPerChainQueryResponse[](numPerChainQueries);

// Walk through the requests and responses in lock step.
for (uint idx = 0; idx < numPerChainQueries;) {
for (uint idx; idx < numPerChainQueries;) {
(r.responses[idx].chainId, reqIdx) = response.asUint16Unchecked(reqIdx);
uint16 respChainId;
(respChainId, respIdx) = response.asUint16Unchecked(respIdx);
Expand Down Expand Up @@ -232,8 +234,8 @@ abstract contract QueryResponse {
revert UnsupportedQueryType();
}

uint reqIdx = 0;
uint respIdx = 0;
uint reqIdx;
uint respIdx;

uint32 len;
(len, reqIdx) = pcr.request.asUint32Unchecked(reqIdx); // block_id_len
Expand All @@ -258,7 +260,7 @@ abstract contract QueryResponse {
r.result = new EthCallData[](numBatchCallData);

// Walk through the call data and results in lock step.
for (uint idx = 0; idx < numBatchCallData;) {
for (uint idx; idx < numBatchCallData;) {
(r.result[idx].contractAddress, reqIdx) = pcr.request.asAddressUnchecked(reqIdx);

(len, reqIdx) = pcr.request.asUint32Unchecked(reqIdx); // call_data_len
Expand All @@ -281,8 +283,8 @@ abstract contract QueryResponse {
revert UnsupportedQueryType();
}

uint reqIdx = 0;
uint respIdx = 0;
uint reqIdx;
uint respIdx;
uint32 len;

(r.requestTargetTimestamp, reqIdx) = pcr.request.asUint64Unchecked(reqIdx); // Request target_time_us
Expand Down Expand Up @@ -313,7 +315,7 @@ abstract contract QueryResponse {
r.result = new EthCallData[](numBatchCallData);

// Walk through the call data and results in lock step.
for (uint idx = 0; idx < numBatchCallData;) {
for (uint idx; idx < numBatchCallData;) {
(r.result[idx].contractAddress, reqIdx) = pcr.request.asAddressUnchecked(reqIdx);

(len, reqIdx) = pcr.request.asUint32Unchecked(reqIdx); // call_data_len
Expand All @@ -335,8 +337,8 @@ abstract contract QueryResponse {
revert UnsupportedQueryType();
}

uint reqIdx = 0;
uint respIdx = 0;
uint reqIdx;
uint respIdx;
uint32 len;

(len, reqIdx) = pcr.request.asUint32Unchecked(reqIdx); // Request block_id_len
Expand All @@ -363,7 +365,7 @@ abstract contract QueryResponse {
r.result = new EthCallData[](numBatchCallData);

// Walk through the call data and results in lock step.
for (uint idx = 0; idx < numBatchCallData;) {
for (uint idx; idx < numBatchCallData;) {
(r.result[idx].contractAddress, reqIdx) = pcr.request.asAddressUnchecked(reqIdx);

(len, reqIdx) = pcr.request.asUint32Unchecked(reqIdx); // call_data_len
Expand All @@ -385,8 +387,8 @@ abstract contract QueryResponse {
revert UnsupportedQueryType();
}

uint reqIdx = 0;
uint respIdx = 0;
uint reqIdx;
uint respIdx;
uint32 len;

(len, reqIdx) = pcr.request.asUint32Unchecked(reqIdx); // Request commitment_len
Expand All @@ -411,15 +413,13 @@ abstract contract QueryResponse {
r.results = new SolanaAccountResult[](numAccounts);

// Walk through the call data and results in lock step.
for (uint idx = 0; idx < numAccounts;) {
for (uint idx; idx < numAccounts;) {
(r.results[idx].account, reqIdx) = pcr.request.asBytes32Unchecked(reqIdx); // Request account

(r.results[idx].lamports, respIdx) = pcr.response.asUint64Unchecked(respIdx); // Response lamports
(r.results[idx].rentEpoch, respIdx) = pcr.response.asUint64Unchecked(respIdx); // Response rent_epoch

uint8 executable;
(executable, respIdx) = pcr.response.asUint8Unchecked(respIdx); // Response executable
r.results[idx].executable = (executable != 0);
(r.results[idx].executable, respIdx) = pcr.response.asBoolUnckecked(respIdx); // Response executable

(r.results[idx].owner, respIdx) = pcr.response.asBytes32Unchecked(respIdx); // Response owner

Expand Down Expand Up @@ -458,7 +458,7 @@ abstract contract QueryResponse {

uint256 numChainIds = _validChainIds.length;

for (uint256 idx = 0; idx < numChainIds;) {
for (uint256 idx; idx < numChainIds;) {
if (chainId == _validChainIds[idx]) {
validChainId = true;
break;
Expand All @@ -474,7 +474,7 @@ abstract contract QueryResponse {
function validateMultipleEthCallData(EthCallData[] memory r, address[] memory _expectedContractAddresses, bytes4[] memory _expectedFunctionSignatures) public pure {
uint256 callDatasLength = r.length;

for (uint256 idx = 0; idx < callDatasLength;) {
for (uint256 idx; idx < callDatasLength;) {
validateEthCallData(r[idx], _expectedContractAddresses, _expectedFunctionSignatures);

unchecked { ++idx; }
Expand All @@ -497,7 +497,7 @@ abstract contract QueryResponse {
uint256 contractAddressesLength = _expectedContractAddresses.length;

// Check that the contract address called in the request is expected
for (uint256 idx = 0; idx < contractAddressesLength;) {
for (uint256 idx; idx < contractAddressesLength;) {
if (r.contractAddress == _expectedContractAddresses[idx]) {
validContractAddress = true;
break;
Expand All @@ -514,7 +514,7 @@ abstract contract QueryResponse {
uint256 functionSignaturesLength = _expectedFunctionSignatures.length;

// Check that the function signature called is expected
for (uint256 idx = 0; idx < functionSignaturesLength;) {
for (uint256 idx; idx < functionSignaturesLength;) {
(bytes4 funcSig,) = r.callData.asBytes4Unchecked(0);
if (funcSig == _expectedFunctionSignatures[idx]) {
validFunctionSignature = true;
Expand Down

0 comments on commit d5c54ea

Please sign in to comment.