Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions contracts/interfaces/ISocket.sol
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ interface ISocket {
* @notice executes a payload
*/
function execute(
ExecuteParams memory executeParams_,
TransmissionParams memory transmissionParams_
) external payable returns (bool, bool, bytes memory);
ExecuteParams calldata executeParams_,
TransmissionParams calldata transmissionParams_
) external payable returns (bool, bytes memory);

/**
* @notice sets the config specific to the plug
Expand Down
2 changes: 1 addition & 1 deletion contracts/interfaces/ISocketBatcher.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ interface ISocketBatcher {
bytes calldata proof_,
bytes calldata transmitterSignature_,
address refundAddress_
) external payable returns (bool, bool, bytes memory);
) external payable returns (bool, bytes memory);
}
28 changes: 16 additions & 12 deletions contracts/protocol/socket/Socket.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ contract Socket is SocketUtils {
mapping(bytes32 => bytes32) public payloadIdToDigest;

// @notice buffer to account for gas used by current contract execution
uint256 public constant GAS_LIMIT_BUFFER = 105;
uint256 private constant GAS_LIMIT_BUFFER = 105;

////////////////////////////////////////////////////////
////////////////////// ERRORS //////////////////////////
Expand Down Expand Up @@ -69,9 +69,9 @@ contract Socket is SocketUtils {
* @notice Executes a payload that has been delivered by transmitters and authenticated by switchboards
*/
function execute(
ExecuteParams memory executeParams_,
TransmissionParams memory transmissionParams_
) external payable returns (bool, bool, bytes memory) {
ExecuteParams calldata executeParams_,
TransmissionParams calldata transmissionParams_
) external payable returns (bool, bytes memory) {
// check if the deadline has passed
if (executeParams_.deadline < block.timestamp) revert DeadlinePassed();
// check if the call type is valid
Expand All @@ -83,6 +83,7 @@ contract Socket is SocketUtils {

if (msg.value < executeParams_.value + transmissionParams_.socketFees)
revert InsufficientMsgValue();

bytes32 payloadId = _createPayloadId(plugConfig.switchboard, executeParams_);

// validate the execution status
Expand All @@ -107,6 +108,7 @@ contract Socket is SocketUtils {

// verify the digest
_verify(digest, payloadId, plugConfig.switchboard);

return _execute(payloadId, executeParams_, transmissionParams_);
}

Expand All @@ -129,15 +131,16 @@ contract Socket is SocketUtils {
*/
function _execute(
bytes32 payloadId_,
ExecuteParams memory executeParams_,
TransmissionParams memory transmissionParams_
) internal returns (bool, bool, bytes memory) {
ExecuteParams calldata executeParams_,
TransmissionParams calldata transmissionParams_
) internal returns (bool success, bytes memory returnData) {
// check if the gas limit is sufficient
// bump by 5% to account for gas used by current contract execution
if (gasleft() < (executeParams_.gasLimit * GAS_LIMIT_BUFFER) / 100) revert LowGasLimit();

// NOTE: external un-trusted call
(bool success, bool exceededMaxCopy, bytes memory returnData) = executeParams_
bool exceededMaxCopy;
(success, exceededMaxCopy, returnData) = executeParams_
.target
.tryCall(
executeParams_.value,
Expand All @@ -148,6 +151,7 @@ contract Socket is SocketUtils {

if (success) {
emit ExecutionSuccess(payloadId_, exceededMaxCopy, returnData);

if (address(socketFeeManager) != address(0)) {
socketFeeManager.payAndCheckFees{value: transmissionParams_.socketFees}(
executeParams_,
Expand All @@ -156,20 +160,20 @@ contract Socket is SocketUtils {
}
} else {
payloadExecuted[payloadId_] = ExecutionStatus.Reverted;

address receiver = transmissionParams_.refundAddress == address(0)
? msg.sender
: transmissionParams_.refundAddress;
SafeTransferLib.forceSafeTransferETH(receiver, msg.value);

emit ExecutionFailed(payloadId_, exceededMaxCopy, returnData);
}

return (success, exceededMaxCopy, returnData);
return (success, returnData);
}

function _validateExecutionStatus(bytes32 payloadId_) internal {
if (payloadExecuted[payloadId_] == ExecutionStatus.Executed)
revert PayloadAlreadyExecuted(payloadExecuted[payloadId_]);

payloadExecuted[payloadId_] = ExecutionStatus.Executed;
}

Expand All @@ -180,7 +184,7 @@ contract Socket is SocketUtils {
* @notice To trigger to a connected remote chain. Should only be called by a plug.
*/
function _triggerAppGateway(address plug_) internal returns (bytes32 triggerId) {
PlugConfig storage plugConfig = _plugConfigs[plug_];
PlugConfig memory plugConfig = _plugConfigs[plug_];

// if no sibling plug is found for the given chain slug, revert
// sends the trigger to connected app gateway
Expand Down
2 changes: 1 addition & 1 deletion contracts/protocol/socket/SocketBatcher.sol
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ contract SocketBatcher is ISocketBatcher, Ownable {
bytes calldata proof_,
bytes calldata transmitterSignature_,
address refundAddress_
) external payable returns (bool, bool, bytes memory) {
) external payable returns (bool, bytes memory) {
ISwitchboard(switchboard_).attest(digest_, proof_);
return
socket__.execute{value: msg.value}(
Expand Down
10 changes: 5 additions & 5 deletions contracts/protocol/socket/SocketUtils.sol
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ abstract contract SocketUtils is SocketConfig {
address transmitter_,
bytes32 payloadId_,
bytes32 appGatewayId_,
ExecuteParams memory executeParams_
ExecuteParams calldata executeParams_
) internal view returns (bytes32) {
return
keccak256(
Expand Down Expand Up @@ -78,16 +78,16 @@ abstract contract SocketUtils is SocketConfig {
*/
function _createPayloadId(
address switchboard_,
ExecuteParams memory executeParams_
ExecuteParams calldata executeParams_
) internal view returns (bytes32) {
return
keccak256(
abi.encode(
executeParams_.requestCount,
executeParams_.batchCount,
executeParams_.payloadCount,
switchboard_,
chainSlug
chainSlug,
switchboard_
)
);
}
Expand All @@ -100,7 +100,7 @@ abstract contract SocketUtils is SocketConfig {
*/
function _recoverSigner(
bytes32 digest_,
bytes memory signature_
bytes calldata signature_
) internal view returns (address signer) {
bytes32 digest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", digest_));
// recovered signer is checked for the valid roles later
Expand Down
22 changes: 11 additions & 11 deletions contracts/protocol/utils/common/Structs.sol
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ struct ResolvedPromises {

// AM
struct Bid {
address transmitter;
uint256 fee;
address transmitter;
bytes extraData;
}

Expand Down Expand Up @@ -233,28 +233,28 @@ struct RequestParams {
}

struct RequestMetadata {
bool onlyReadRequests;
address consumeFrom;
address appGateway;
address auctionManager;
uint256 maxFees;
Bid winningBid;
bytes onCompleteData;
bool onlyReadRequests;
address consumeFrom;
uint256 queryCount;
uint256 finalizeCount;
Bid winningBid;
bytes onCompleteData;
}

struct ExecuteParams {
CallType callType;
uint256 deadline;
uint256 gasLimit;
uint256 value;
bytes payload;
address target;
uint40 requestCount;
uint40 batchCount;
uint40 payloadCount;
uint256 deadline;
uint256 gasLimit;
uint256 value;
bytes32 prevDigestsHash;
address target;
bytes payload;
bytes extraData;
}

Expand All @@ -269,6 +269,6 @@ struct PayloadIdParams {
uint40 requestCount;
uint40 batchCount;
uint40 payloadCount;
address switchboard;
uint32 chainSlug;
address switchboard;
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ library WatcherIdUtils {
) internal pure returns (bytes32) {
return
keccak256(
abi.encode(requestCount_, batchCount_, payloadCount_, switchboard_, chainSlug_)
abi.encode(requestCount_, batchCount_, payloadCount_, chainSlug_, switchboard_)
);
}
}
4 changes: 2 additions & 2 deletions test/SetupTest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ contract SetupTest is Test {
isLastPayload
);
} else {
(, , bytes memory returnData) = _uploadProofAndExecute(payloadParams);
(, bytes memory returnData) = _uploadProofAndExecute(payloadParams);
_resolveAndExpectFinalizeRequested(
payloadParams.payloadId,
payloadParams,
Expand All @@ -270,7 +270,7 @@ contract SetupTest is Test {

function _uploadProofAndExecute(
PayloadParams memory payloadParams
) internal returns (bool, bool, bytes memory) {
) internal returns (bool, bytes memory) {
(bytes memory watcherProof, bytes32 digest) = _generateWatcherProof(payloadParams);
_writeProof(payloadParams.payloadId, watcherProof);

Expand Down
2 changes: 1 addition & 1 deletion test/apps/Counter.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ contract CounterTest is DeliveryHelperTest {
requestCount = _deploy(chainSlug, counterGateway, contractIds);
}

function testCounterDeployment1() external {
function testCounterDeployment() external {
deploySetup();
deployCounterApp(arbChainSlug);

Expand Down
6 changes: 3 additions & 3 deletions test/mock/MockSocket.sol
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ contract MockSocket is ISocket {
* @notice Executes a payload that has been delivered by transmitters and authenticated by switchboards
*/
function execute(
ExecuteParams memory executeParams_,
TransmissionParams memory transmissionParams_
) external payable override returns (bool, bool, bytes memory) {
ExecuteParams calldata executeParams_,
TransmissionParams calldata transmissionParams_
) external payable override returns (bool, bytes memory) {
// execute payload
// return
// _execute(
Expand Down