Skip to content

Commit

Permalink
Fixed all solidity warnings and applied some best practices. (#1923)
Browse files Browse the repository at this point in the history
Closes [1913](#1913)

* Removed all unnecessary variable initializations, unused parameters,
dead code, and fixed function visibilities, etc.
* Some other best practices/gas optimizations applied to code eg: 
  *  Unneeded initializations of an integer variable to `0`.
  *  Cache Local Variable Array Length In For Loop
  *  Unused imports
  *  Conditions can be optimized
  • Loading branch information
Caglankaan authored May 26, 2024
2 parents 63efe3f + 5b4aea2 commit 3dc7ae2
Show file tree
Hide file tree
Showing 71 changed files with 591 additions and 709 deletions.
26 changes: 13 additions & 13 deletions evm/contracts/apps/ucs/00-pingpong/PingPong.sol
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ contract PingPong is IBCAppBase {

function onRecvPacket(
IbcCoreChannelV1Packet.Data calldata packet,
address relayer
address
)
external
virtual
Expand All @@ -110,9 +110,9 @@ contract PingPong is IBCAppBase {
}

function onAcknowledgementPacket(
IbcCoreChannelV1Packet.Data calldata packet,
IbcCoreChannelV1Packet.Data calldata,
bytes calldata acknowledgement,
address relayer
address
) external virtual override onlyIBC {
/*
In practice, a more sophisticated protocol would check
Expand All @@ -129,8 +129,8 @@ contract PingPong is IBCAppBase {
}

function onTimeoutPacket(
IbcCoreChannelV1Packet.Data calldata packet,
address relayer
IbcCoreChannelV1Packet.Data calldata,
address
) external virtual override onlyIBC {
/*
Similarly to the onAcknowledgementPacket function, this indicates a failure to deliver the packet in expected time.
Expand Down Expand Up @@ -169,34 +169,34 @@ contract PingPong is IBCAppBase {
}

function onChanOpenAck(
string calldata _portId,
string calldata,
string calldata _channelId,
string calldata _counterpartyChannelId,
string calldata _counterpartyVersion
string calldata,
string calldata
) external virtual override onlyIBC {
// Store the port/channel needed to send packets.
channelId = _channelId;
}

function onChanOpenConfirm(
string calldata _portId,
string calldata,
string calldata _channelId
) external virtual override onlyIBC {
// Symmetric to onChanOpenAck
channelId = _channelId;
}

function onChanCloseInit(
string calldata _portId,
string calldata _channelId
string calldata,
string calldata
) external virtual override onlyIBC {
// The ping-pong is infinite, closing the channel is disallowed.
revert PingPongLib.ErrInfiniteGame();
}

function onChanCloseConfirm(
string calldata _portId,
string calldata _channelId
string calldata,
string calldata
) external virtual override onlyIBC {
// Symmetric to onChanCloseInit
revert PingPongLib.ErrInfiniteGame();
Expand Down
63 changes: 32 additions & 31 deletions evm/contracts/apps/ucs/01-relay/Relay.sol
Original file line number Diff line number Diff line change
Expand Up @@ -284,12 +284,11 @@ contract UCS01Relay is
) external override {
Token[] memory normalizedTokens = new Token[](tokens.length);
uint256 tokensLength = tokens.length;
for (uint256 i = 0; i < tokensLength; i++) {
for (uint256 i; i < tokensLength; i++) {
LocalToken calldata localToken = tokens[i];
normalizedTokens[i].denom = sendToken(sourceChannel, localToken);
normalizedTokens[i].amount = localToken.amount;
}
string memory sender = msg.sender.toHexString();
RelayPacket memory packet = RelayPacket({
sender: abi.encodePacked(msg.sender),
receiver: receiver,
Expand All @@ -298,7 +297,7 @@ contract UCS01Relay is
uint64 packetSequence = ibcHandler.sendPacket(
sourceChannel, timeoutHeight, timeoutTimestamp, packet.encode()
);
for (uint256 i = 0; i < tokensLength; i++) {
for (uint256 i; i < tokensLength; i++) {
LocalToken calldata localToken = tokens[i];
Token memory normalizedToken = normalizedTokens[i];
emit RelayLib.Sent(
Expand All @@ -321,7 +320,8 @@ contract UCS01Relay is
string memory receiver = packet.receiver.toHexString();
// We're going to refund, the receiver will be the sender.
address userToRefund = RelayLib.bytesToAddress(packet.sender);
for (uint256 i = 0; i < packet.tokens.length; i++) {
uint256 packetTokensLength = packet.tokens.length;
for (uint256 i; i < packetTokensLength; i++) {
Token memory token = packet.tokens[i];
address denomAddress = denomToAddress[channelId][token.denom];
if (denomAddress != address(0)) {
Expand Down Expand Up @@ -351,7 +351,7 @@ contract UCS01Relay is

function onRecvPacketProcessing(
IbcCoreChannelV1Packet.Data calldata ibcPacket,
address relayer
address
) public {
if (msg.sender != address(this)) {
revert RelayLib.ErrUnauthorized();
Expand All @@ -360,7 +360,8 @@ contract UCS01Relay is
string memory prefix = RelayLib.makeDenomPrefix(
ibcPacket.source_port, ibcPacket.source_channel
);
for (uint256 i = 0; i < packet.tokens.length; i++) {
uint256 packetTokensLength = packet.tokens.length;
for (uint256 i; i < packetTokensLength; i++) {
Token memory token = packet.tokens[i];
strings.slice memory denomSlice = token.denom.toSlice();
// This will trim the denom in-place IFF it is prefixed
Expand Down Expand Up @@ -428,7 +429,7 @@ contract UCS01Relay is
returns (bytes memory)
{
// TODO: maybe consider threading _res in the failure ack
(bool success, bytes memory _res) = address(this).call(
(bool success,) = address(this).call(
abi.encodeWithSelector(
this.onRecvPacketProcessing.selector, ibcPacket, relayer
)
Expand All @@ -445,7 +446,7 @@ contract UCS01Relay is
function onAcknowledgementPacket(
IbcCoreChannelV1Packet.Data calldata ibcPacket,
bytes calldata acknowledgement,
address _relayer
address
) external override(IBCAppBase, IIBCModule) onlyIBC {
if (
acknowledgement.length != RelayLib.ACK_LENGTH
Expand All @@ -468,7 +469,7 @@ contract UCS01Relay is

function onTimeoutPacket(
IbcCoreChannelV1Packet.Data calldata ibcPacket,
address _relayer
address
) external override(IBCAppBase, IIBCModule) onlyIBC {
refundTokens(
ibcPacket.sequence,
Expand All @@ -479,12 +480,12 @@ contract UCS01Relay is

function onChanOpenInit(
IbcCoreChannelV1GlobalEnums.Order order,
string[] calldata _connectionHops,
string calldata portId,
string calldata channelId,
IbcCoreChannelV1Counterparty.Data calldata counterpartyEndpoint,
string[] calldata,
string calldata,
string calldata,
IbcCoreChannelV1Counterparty.Data calldata,
string calldata version
) external override(IBCAppBase, IIBCModule) onlyIBC {
) external view override(IBCAppBase, IIBCModule) onlyIBC {
if (!RelayLib.isValidVersion(version)) {
revert RelayLib.ErrInvalidProtocolVersion();
}
Expand All @@ -495,13 +496,13 @@ contract UCS01Relay is

function onChanOpenTry(
IbcCoreChannelV1GlobalEnums.Order order,
string[] calldata _connectionHops,
string calldata portId,
string calldata channelId,
IbcCoreChannelV1Counterparty.Data calldata counterpartyEndpoint,
string[] calldata,
string calldata,
string calldata,
IbcCoreChannelV1Counterparty.Data calldata,
string calldata version,
string calldata counterpartyVersion
) external override(IBCAppBase, IIBCModule) onlyIBC {
) external view override(IBCAppBase, IIBCModule) onlyIBC {
if (!RelayLib.isValidVersion(version)) {
revert RelayLib.ErrInvalidProtocolVersion();
}
Expand All @@ -514,32 +515,32 @@ contract UCS01Relay is
}

function onChanOpenAck(
string calldata portId,
string calldata channelId,
string calldata counterpartyChannelId,
string calldata,
string calldata,
string calldata,
string calldata counterpartyVersion
) external override(IBCAppBase, IIBCModule) onlyIBC {
) external view override(IBCAppBase, IIBCModule) onlyIBC {
if (!RelayLib.isValidVersion(counterpartyVersion)) {
revert RelayLib.ErrInvalidCounterpartyProtocolVersion();
}
}

function onChanOpenConfirm(
string calldata _portId,
string calldata _channelId
string calldata,
string calldata
) external override(IBCAppBase, IIBCModule) onlyIBC {}

function onChanCloseInit(
string calldata _portId,
string calldata _channelId
) external override(IBCAppBase, IIBCModule) onlyIBC {
string calldata,
string calldata
) external view override(IBCAppBase, IIBCModule) onlyIBC {
revert RelayLib.ErrUnstoppable();
}

function onChanCloseConfirm(
string calldata _portId,
string calldata _channelId
) external override(IBCAppBase, IIBCModule) onlyIBC {
string calldata,
string calldata
) external view override(IBCAppBase, IIBCModule) onlyIBC {
revert RelayLib.ErrUnstoppable();
}

Expand Down
Loading

0 comments on commit 3dc7ae2

Please sign in to comment.