  \textsc{Edge Triangle Packing} and \textsc{Edge Triangle Covering} are dual
problems extensively studied in the field of parameterized complexity.
  Given a graph $G$ and an integer $k$, \textsc{Edge Triangle Packing} seeks to
determine whether there exists a set of at least $k$ edge-disjoint triangles in
$G$,
  while \textsc{Edge Triangle Covering} aims to find out whether there exists a
set of at most $k$ edges that intersects all triangles in $G$.
  Previous research has shown that \textsc{Edge Triangle Packing} has a kernel
of $(3+\epsilon)k$ vertices, while \textsc{Edge Triangle Covering} has a kernel
of $6k$ vertices.
  In this paper, we show that the two problems allow kernels of $3k$ vertices,
improving all previous results. A significant contribution of our work is the
utilization of a novel discharging method for analyzing kernel size, which
exhibits potential for analyzing other kernel algorithms.
