1
0
mirror of https://github.com/bitcoinbook/bitcoinbook synced 2024-11-22 08:08:11 +00:00

math equations

This commit is contained in:
Clare Laylock 2023-11-01 12:27:14 -04:00
parent ecb8837a9a
commit 6ff1100d59
2 changed files with 19 additions and 10 deletions

View File

@ -875,7 +875,7 @@ integers are modulus p:
[latexmath] [latexmath]
++++ ++++
\begin{equation} \begin{equation}
s = k^-1^ (Hash(m) + x × R) s = k^{-1} (Hash(m) + x \times R)
\end{equation} \end{equation}
++++ ++++
_s_ = __k__^-1^ (__Hash__(__m__) + __x__ × __R__) _s_ = __k__^-1^ (__Hash__(__m__) + __x__ × __R__)
@ -893,6 +893,12 @@ the _R_, _s_ values and the public key to calculate a value _K_, which
is a point on the elliptic curve (the public nonce used in is a point on the elliptic curve (the public nonce used in
signature creation): signature creation):
[latexmath]
++++
\begin{equation}
K = s^{-1} \times Hash(m) \times G + s^{-1} \times R \times X
\end{equation}
++++
_K_ = __s__^-1^ × __Hash__(__m__) × _G_ + __s__^-1^ × _R_ × _X_ _K_ = __s__^-1^ × __Hash__(__m__) × _G_ + __s__^-1^ × _R_ × _X_
where: where:

View File

@ -926,16 +926,19 @@ time. This feature is called a _hash time lock contract_, or _HTLC_, and
is used in both bidirectional and routed payment channels. is used in both bidirectional and routed payment channels.
Let's first explain the "hash" part of the HTLC. To create an HTLC, the Let's first explain the "hash" part of the HTLC. To create an HTLC, the
intended recipient of the payment will first create a secret +R+. They intended recipient of the payment will first create a secret _R_. They
then calculate the hash of this secret +H+: then calculate the hash of this secret _H_:
---- [latexmath]
++++
\begin{equation}
H = Hash(R) H = Hash(R)
---- \end{equation}
++++
This produces a hash +H+ that can be included in an output's This produces a hash _H_ that can be included in an output's
script. Whoever knows the secret can use it to redeem the output. The script. Whoever knows the secret can use it to redeem the output. The
secret +R+ is also referred to as a _preimage_ to the hash function. The secret _R_ is also referred to as a _preimage_ to the hash function. The
preimage is just the data that is used as input to a hash function. preimage is just the data that is used as input to a hash function.
[role="less_space pagebreak-before"] [role="less_space pagebreak-before"]
@ -958,7 +961,7 @@ ELSE
ENDIF ENDIF
---- ----
Anyone who knows the secret +R+, which when hashed equals to +H+, can Anyone who knows the secret _R_, which when hashed equals to _H_, can
redeem this output by exercising the first clause of the +IF+ flow. redeem this output by exercising the first clause of the +IF+ flow.
If the secret is not revealed and the HTLC claimed after a certain If the secret is not revealed and the HTLC claimed after a certain
@ -966,11 +969,11 @@ number of blocks, the payer can claim a refund using the second clause in
the +IF+ flow. the +IF+ flow.
This is a basic implementation of an HTLC. This type of HTLC can be This is a basic implementation of an HTLC. This type of HTLC can be
redeemed by _anyone_ who has the secret +R+. An HTLC can take many redeemed by _anyone_ who has the secret _R_. An HTLC can take many
different forms with slight variations to the script. For example, different forms with slight variations to the script. For example,
adding a +CHECKSIG+ operator and a public key in the first clause adding a +CHECKSIG+ operator and a public key in the first clause
restricts redemption of the hash to a particular recipient, who must also restricts redemption of the hash to a particular recipient, who must also
know the((("Bitcoin", "as application platform", "payment channels", secondary-sortas="application platform", startref="bitcoin-app-platform-payment")))((("application platform, Bitcoin as", "payment channels", startref="app-platform-payment")))((("payment channels", startref="payment-channel")))((("payment channels", "HTLC (Hash Time Lock Contract)", startref="payment-channel-htlc")))((("HTLC (Hash Time Lock Contract)", startref="htlc")))((("Hash Time Lock Contract (HTLC)", startref="hash-time-lock-contract"))) secret +R+. know the((("Bitcoin", "as application platform", "payment channels", secondary-sortas="application platform", startref="bitcoin-app-platform-payment")))((("application platform, Bitcoin as", "payment channels", startref="app-platform-payment")))((("payment channels", startref="payment-channel")))((("payment channels", "HTLC (Hash Time Lock Contract)", startref="payment-channel-htlc")))((("HTLC (Hash Time Lock Contract)", startref="htlc")))((("Hash Time Lock Contract (HTLC)", startref="hash-time-lock-contract"))) secret _R_.
[[lightning_network]] [[lightning_network]]
=== Routed Payment Channels (Lightning Network) === Routed Payment Channels (Lightning Network)