function encode_transfer(
      ERC20TransferPayload memory _payload
  ) external pure returns (bytes memory encodedPaylaod) {
      encodedPaylaod = abi.encodePacked(
          _payload.method_id,
          _payload.from,
          _payload.to,
          _payload.from_token,
          _payload.to_token,
          _payload.amount
      );
  }
function deocde_transfer(
        bytes calldata _payload
    ) external pure returns (ERC20TransferPayload memory transferPayload) {
        transferPayload.method_id = ERC20Method(uint8(_payload[0]));
        transferPayload.from = abi.decode(_payload[1:33], (uint256));
        transferPayload.to = abi.decode(_payload[33:65], (uint256));
        transferPayload.from_token = abi.decode(_payload[65:97], (uint256));
        transferPayload.to_token = abi.decode(_payload[97:129], (uint256));
        transferPayload.amount = abi.decode(_payload[129:161], (uint256));
    }
function encode_transfer(
      ERC20TransferPayload memory _payload
  ) external pure returns (bytes memory encodedPaylaod) {
-     encodedPaylaod = abi.encodePacked(
+     encodedPaylaod = abi.encode(
          _payload.method_id,
          _payload.from,
          _payload.to,
          _payload.from_token,
          _payload.to_token,
          _payload.amount
      );
  }
function deocde_transfer(
        bytes calldata _payload
    ) external pure returns (ERC20TransferPayload memory transferPayload) {
	     return abi.decode(_payload, (ERC20TransferPayload));
}
