@0x:contracts-staking Addressed review feedback by removing simplyProxyCallWithData

This commit is contained in:
Alex Towle
2019-09-13 15:41:31 -07:00
parent 6fd9308e1b
commit 2cd0990c65
4 changed files with 9 additions and 60 deletions

View File

@@ -104,14 +104,22 @@ contract StakingProxy is
public
returns (bytes[] memory batchReturnData)
{
// Initialize commonly used variables.
bool success;
bytes memory returnData;
batchReturnData = new bytes[](data.length);
// Ensure that a staking contract has been attached to the proxy.
if (stakingContract == address(0)) {
LibRichErrors.rrevert(
LibStakingRichErrors.ProxyDestinationCannotBeNilError()
);
}
// Execute all of the calls encoded in the provided calldata.
for (uint256 i = 0; i < data.length; i++) {
// Call the staking contract with the provided calldata.
(success, returnData) = stakingContract.simpleProxyCallWithData(data[i]);
(success, returnData) = stakingContract.delegatecall(data[i]);
// Revert on failure.
if (!success) {

View File

@@ -109,24 +109,4 @@ library LibProxy {
return(0, returndatasize())
}
}
/// @dev Proxies incoming call to destination contract with specified calldata.
/// @param destination Address to call.
/// @param data The calldata that will be sent to the destination.
function simpleProxyCallWithData(
address destination,
bytes memory data
)
internal
returns (bool, bytes memory)
{
if (destination == address(0)) {
LibRichErrors.rrevert(
LibStakingRichErrors.ProxyDestinationCannotBeNilError()
);
}
// delegatecall into the destination address, and return the result.
return destination.delegatecall(data);
}
}

View File

@@ -71,14 +71,4 @@ contract TestLibProxy {
proxyCallArgs = args;
(success, returnData) = address(this).call(data);
}
/// @dev Calls the destination with the provided calldata.
/// @param destination The contract that should be called by the proxy call.
/// @param data The bytes that should be used to call into the destination contract.
function publicSimpleProxyCallWithData(address destination, bytes memory data)
public
returns (bool success, bytes memory returnData)
{
return destination.simpleProxyCallWithData(data);
}
}

View File

@@ -271,33 +271,4 @@ blockchainTests.resets('LibProxy', env => {
]);
});
});
describe('simpleProxyCallWithData', () => {
it('should revert if address zero is the destination', async () => {
const expectedError = new StakingRevertErrors.ProxyDestinationCannotBeNilError();
const tx = proxy.publicSimpleProxyCallWithData.awaitTransactionSuccessAsync(
constants.NULL_ADDRESS,
constants.NULL_BYTES,
);
return expect(tx).to.revertWith(expectedError);
});
it('should call the receiver with the correct calldata and report a success when the receiver succeeds', async () => {
const calldata = constructRandomSuccessCalldata();
verifyPostConditions(
await proxy.publicSimpleProxyCallWithData.callAsync(receiver.address, calldata),
true,
calldata,
);
});
it('should call the receiver with the correct calldata and report a success when the receiver succeeds', async () => {
const calldata = constructRandomFailureCalldata();
verifyPostConditions(
await proxy.publicSimpleProxyCallWithData.callAsync(receiver.address, calldata),
false,
calldata,
);
});
});
});