const Web3 = require('web3');

async function encodeFunction() {

  // generate function signature
  const hashedFunction = web3.utils.keccak256("transfer(address,uint256)")  // Function name and parameters
  const functionSignature = hashedFunction.substr(0, 10); // Extract the first 8 digits (4bytes) + 0x

  // Encode function parameters
  const firstParameter = '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'
  const paddedFirstParameter = web3.utils.padLeft(firstParameter, 64); // Pad to 32 bytes (64 hex characters)
  const encodedParam1= paddedFirstParameter.slice(2) // Slice(2) remove 0x

  const secondParameter = '1000000000000000000'
  const hexParameter = web3.utils.toHex(secondParameter); // Convert the input from decimal to hex
  const paddedSecondParameter = web3.utils.padLeft(hexParameter, 64); // Pad to 32 bytes (64 hex characters)
  const encodedParam2= paddedSecondParameter.slice(2) // Slice(2) remove 0x

  // Generate calldata
  const functionCallData = functionSignature + encodedParam1 + encodedParam2

  console.log(`Encoded function signature: ${functionSignature}\n`); // Log the encoded function signature
  console.log(`Encoded parameter 1: ${encodedParam1}\n`); // Log the encoded first parameter
  console.log(`Encoded parameter 2: ${encodedParam2}\n`); // Log the encoded second parameter
  console.log(`Function calldata: ${functionCallData}`) // Log the complete calldata
}

encodeFunction()
$ node theory
Encoded function signature: 0xa9059cbb

Encoded parameter 1: 000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d

Encoded parameter 2: 0000000000000000000000000000000000000000000000000de0b6b3a7640000

Function calldata: 0xa9059cbb000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d0000000000000000000000000000000000000000000000000de0b6b3a7640000

$ node index
Function name: transfer
Function signature: 0xa9059cbb
Encoded parameters: 000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d0000000000000000000000000000000000000000000000000de0b6b3a7640000

Function calldata: 0xa9059cbb000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d0000000000000000000000000000000000000000000000000de0b6b3a7640000
const Web3 = require('web3');

async function encodeFunction() {

  // generate function signature
  const hashedFunction = web3.utils.keccak256("transfer(address,uint256)")  // Function name and parameters
  const functionSignature = hashedFunction.substr(0, 10); // Extract the first 8 digits (4bytes) + 0x

  // Encode function parameters
  const firstParameter = '0xdfd5293d8e347dfe59e90efd55b2956a1343963d'
  const paddedFirstParameter = web3.utils.padLeft(firstParameter, 64); // Pad to 32 bytes (64 hex characters)
  const encodedParam1= paddedFirstParameter.slice(2) // Slice(2) remove 0x

  const secondParameter = '1000000000000000000'
  const hexParameter = web3.utils.toHex(secondParameter); // Convert the input from decimal to hex
  const paddedSecondParameter = web3.utils.padLeft(hexParameter, 64); // Pad to 32 bytes (64 hex characters)
  const encodedParam2= paddedSecondParameter.slice(2) // Slice(2) remove 0x

  // Generate calldata
  const functionCallData = functionSignature + encodedParam1 + encodedParam2

  console.log(`Encoded function signature: ${functionSignature}\n`); // Log the encoded function signature
  console.log(`Encoded parameter 1: ${encodedParam1}\n`); // Log the encoded first parameter
  console.log(`Encoded parameter 2: ${encodedParam2}\n`); // Log the encoded second parameter
  console.log(`Function calldata: ${functionCallData}`) // Log the complete calldata
}

encodeFunction()
$ node theory
Encoded function signature: 0xa9059cbb

Encoded parameter 1: 000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d

Encoded parameter 2: 0000000000000000000000000000000000000000000000000de0b6b3a7640000

Function calldata: 0xa9059cbb000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d0000000000000000000000000000000000000000000000000de0b6b3a7640000

$ node index
Function name: transfer
Function signature: 0xa9059cbb
Encoded parameters: 000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d0000000000000000000000000000000000000000000000000de0b6b3a7640000

Function calldata: 0xa9059cbb000000000000000000000000dfd5293d8e347dfe59e90efd55b2956a1343963d0000000000000000000000000000000000000000000000000de0b6b3a7640000