keyFromPrivate($privateKeyHex); $sig = $key->sign($txIdHex, ['canonical' => true]); $r = str_pad($sig->r->toString(16), 64, '0', STR_PAD_LEFT); $s = str_pad($sig->s->toString(16), 64, '0', STR_PAD_LEFT); $v = dechex($sig->recoveryParam & 0xff); if (strlen($v) === 1) { $v = '0'.$v; } return $r.$s.$v; } }