For on-chain transactions, you can use abi.encodeWithSelector. This article has a ton of great information about it.
In your case, you can do the following:
bytes4 methodSig = 0xbeabacc8;
address addressOne = address(0);
address addressTwo = address(1);
uint256 uintOne = 2;
You can execute the call the following way (members of addresses, abi.encode*, low-level calls):
Example 1: Call using already calculated function signature (this answers your question)
bytes memory transferPayload = abi.encodeWithSelector(bytes4(0xbeabacc8), param1, param2, param3);
bytes memory executePayload = abi.encodeWithSignature("execute(address,...
Calldata is the data sent to contract with external calls and since 0.6.0 Solidity introduced fallback and receive functions for contracts to receive calldata and/or ethers ( see https://solidity.readthedocs.io/en/v0.6.0/contracts.html#receive-ether-function )
This part of Deploy & Run tx's plugin of Remix-ide is to provide an interface to use them. see ...
Ethereum transactions follow a certain low-level structure:
from: address (signed by this)
value: uint (ether)
data: message data bytes
The first four bytes of data are a function selector, where the selector is derived from a hash of the function name (source code) and arguments, truncated to four bytes. After that comes the arguments. That's ...
The general error:
Invalid implicit conversion from type[N] memory to type memory requested.
Occurs when trying to send a static array to a function which expects a dynamic array.
In order to fix it in your specific case, you should do something like:
address memory recipients = new address(2);
uint memory tokenAmounts = new uint(2);