have to change the owner to the contract?
no {} after interface function declaration
address[] memory ETHarray = new address[](2);
ETHarray[0] = ETH;
ETHarray[1] = ETH;
uint[] memory values = new uint[](2);
values[0] = 2 ether;
values[1] = 2 ether;
...
OKAY MAYBE NO as the modern ans do it this way too…
bytes memory data = abi.encodeWithSelector(token.approve.selector, address(this), totalAmount);
abi.encodeWithSelector
by abi.encodeCall
🧐 Motivation
Since 0.8.11, abi.encodeCall
provide type-safe encode utility comparing with abi.encodeWithSelector
.