If $f:\mathbb R \to \mathbb R^+$ satisfies $f(a+b) = f(a)f(b)$, and if we write $f(1) = B$, then it is fairly straightforward to prove that for any rational number $x \in \mathbb Q$, $f(x) = B^x$. If in addition we know that $f$ is continuous, this can be extended to all $x \in \mathbb R$.
But what if $f$ is not continuous? It seems clear (to me) that a function $\mathbb Q \to \mathbb R, x \mapsto B^x$ can be extended to (for example) $\mathbb R[\sqrt{2}]$ by choosing an arbitrary $r\in\mathbb R$ and mapping $\sqrt{2}\mapsto r$; then for any $a,b\in\mathbb Q$ the functional equation would require that $a+b\sqrt{2} \mapsto B^a r^b$. Continuing in this fashion we can extend the function to all of $\mathbb R$ by mapping each member of a Hamel basis to any real number we like.
Or can we? Does the description above oversimplify things? Are there hidden relations that I have overlooked that constrain things?
Moreover, is it possible to do this so that we end up with a dicontinuous $bijection$ $\mathbb R \to \mathbb R^+$?
You can define your $f$ using a Hamel basis $B$ of $\mathbb R$ over the rationals $\mathbb Q$ and an arbitrary function $g: B \to \mathbb Q$, so that if $x = \sum_{\beta \in B} c_\beta \beta$ (with finitely many $c_\beta$ nonzero), $f(x) = \exp(\sum_{\beta \in B} c_\beta g(\beta) \beta)$. If $g(\beta) \ne 0$ for all $\beta \in B$, then $f$ is a bijection.