diff --git a/01_introduction.asciidoc b/01_introduction.asciidoc index b1236f01..93b20dde 100644 --- a/01_introduction.asciidoc +++ b/01_introduction.asciidoc @@ -222,7 +222,7 @@ Chan is a Chinese entrepreneur who sells information services related to the Lig Gamer:: Dina is a teenage gamer from Russia. She plays many different computer games, but her favorite ones are those that have an "in-game economy" based on real money. As she plays games, she also earns money by acquiring and selling virtual in-game items. The Lightning Network allows her to transact in small amounts for in-game items as well as earn small amounts for completing quests. -=== Chapter Summary +=== Conclusion In this chapter, we talked about the fundamental concept that underlies both Bitcoin and the Lightning Network: the fairness protocol. diff --git a/02_getting_started.asciidoc b/02_getting_started.asciidoc index 2e3db59a..8cd5c398 100644 --- a/02_getting_started.asciidoc +++ b/02_getting_started.asciidoc @@ -25,9 +25,9 @@ Users have the highest degree of control by running their own Bitcoin node and L Following is an inexhaustive list: -* https://1ml.com/1ML[Lightning explorer] +* https://1ml.com[1ML Lightning explorer] * https://explorer.acinq.co[ACINQ's Lightning explorer], with fancy visualization -* https://amboss.space[Amboss Space Lightning explorer], with community metrics and intuitive visualizations +* https://amboss.space[Amboss Space Lightning explorer], with community metrics and intuitive pass:[visualizations] * https://ln.bigsun.xyz[Fiatjaf's Lightning explorer] with many diagrams * https://hashxp.org/lightning/node[hashXP Lightning explorer] @@ -152,8 +152,8 @@ You can get some tBTC to play with from a _testnet bitcoin faucet_, which gives ++++
2 <Alice_funding_pubkey> <Bob_funding_pubkey> 2 CHECKMULTISIG ++++++ Note that, in practice, the funding keys are deterministically _sorted_ (using lexicographical order of the serialized compressed form of the public keys) before being placed in the witness script. By agreeing to this sorted order ahead of time, we ensure that both parties will construct an identical funding transaction output, which is signed by the exchanged commitment transaction signature. @@ -277,7 +276,7 @@ bc1q89ju02heg32yrqdrnqghe6132wek25p6sv6e564znvrvez7tq5zqt4dn02 ---- ==== Constructing the Funding Transaction -((("payment channel","constructing the funding transaction")))Alice's node can now construct a funding transaction, sending the amount agreed on with Bob (`funding_satoshis`) to the 2-of-2 multisig address. Let's assume that funding_satoshis was 140,000 and Alice is spending a 200,000 satoshi output and creating 60,000 satoshi change. The transaction will look something like Figure 7-4. +((("payment channel","constructing the funding transaction")))Alice's node can now construct a funding transaction, sending the amount agreed on with Bob (`funding_satoshis`) to the 2-of-2 multisig address. Let's assume that funding_satoshis was 140,000 and Alice is spending a 200,000 satoshi output and creating 60,000 satoshi change. The transaction will look something like <
A
record)] address for our target node (replaced by ++__X.X.X.X__++ in the preceding example). Now that we have the raw public key, IP address, and TCP port, we can connect to the node transport protocol at:
----
026c64f5a7f24c6f7f0e1d6ec877f23b2f672fb48967c2545f227d70636395eaf3@X.X.X.X:9735
@@ -253,9 +253,9 @@ r0.a2.n10.nodes.lightning.directory
Breaking down the query one key-value pair at a time, we gain the following
insights:
- * +r0+: The query targets the Bitcoin realm
- * +a2+: The query only wants IPv4 addresses to be returned
- * +n10+: The query requests
++r0+:: The query targets the Bitcoin realm
++a2+:: The query only wants IPv4 addresses to be returned
++n10+:: The query requests
Try some combinations of the various flags using the +dig+ DNS command-line tool yourself(((range="endofrange", startref="ix_11_gossip_channel_graph-asciidoc3")))(((range="endofrange", startref="ix_11_gossip_channel_graph-asciidoc2"))):
@@ -360,7 +360,7 @@ Due to the existence of unadvertised channels, the _true_ size of the channel gr
((("blockchain","locating a channel on the Bitcoin blockchain")))((("channel_announcement message","locating a channel on the Bitcoin blockchain")))As mentioned earlier, the channel graph is authenticated due to its usage of public key cryptography, as well as the Bitcoin blockchain as a spam prevention system. To have a node accept a new +channel_announcement+, the advertisement must _prove_ that the channel actually exists in the Bitcoin blockchain. This proof system adds an up-front cost to adding a new entry to the channel graph (the on-chain fees one must pay to create the UTXO of the channel). As a result, we mitigate spam and ensure that a dishonest node on the network can't fill up the memory of an honest node at no cost with bogus channels.
Given that we need to construct a proof of the existence of a channel, a
-natural question that arises is: how do we "point to" or reference a given channel for the verifier? Given that a payment channel is anchored in an unspent transaction output (see <c
].
+
The nonce `sn` must be incremented after this step.
5. Send `lc || c` over the network buffer.
@@ -616,7 +616,7 @@ steps are completed:
* A zero-length byte slice is to be passed as the AD (associated data).
* The nonce `rn` must be incremented after this step.
4. Read _exactly_ `l + 16` bytes from the network buffer, and let the bytes be
- known as `c`.
+ known pass:[as c
].
5. Decrypt `c` (using `ChaCha20-Poly1305`, `rn`, and `rk`) to obtain decrypted
plain-text packet `p`.
+
diff --git a/15_payment_requests.asciidoc b/15_payment_requests.asciidoc
index 70c2c258..0ab407d6 100644
--- a/15_payment_requests.asciidoc
+++ b/15_payment_requests.asciidoc
@@ -24,7 +24,7 @@ to complete a payment from receiver to sender is described in https://github.com
payment hash and destination are communicated in a payment request to
make the encoding more fully featured.
-=== Lightning Payment Requests versus Bitcoin Addresses
+=== Lightning Payment Requests Versus Bitcoin Addresses
((("Bitcoin addresses, Lightning invoices versus")))((("Lightning invoices","Bitcoin addresses versus")))A commonly asked question when people first encounter a Lightning Payment
request is: why can't a normal static address format be used instead?
@@ -57,7 +57,7 @@ a mechanism that allows a sender to typically request a new payment request
from the receiver, then an interactive protocol can be used to allow a
degree of payment request reuse.
-=== BOLT #11: Lightning Payment Request Serialization and Interpretation
+=== BOLT #11: Lightning Payment Request Serialization pass:[and Interpretation]
((("BOLT (Basis of Lightning Technology) standards documents","Lightning payment request serialization/interpretation")))((("Lightning invoices","payment request serialization/interpretation")))In this section, we'll describe the mechanism used to encode the set of
information required to complete a payment on the Lightning Network. As
@@ -71,9 +71,12 @@ possibly an on-chain fallback address are also communicated. The full specificat
((("Lightning invoices","payment request encoding in practice")))First, let's examine what a real payment request looks like in practice. The
following is a valid payment request that could have been used to complete a
payment on the mainnet Lightning Network at the time it was created:
-```
-lnbc2500u1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpuaztrnwngzn3kdzw5hydlzf03qdgm2hdq27cqv3agm2awhz5se903vruatfhq77w3ls4evs3ch9zw97j25emudupq63nyw24cg27h2rspfj9srp
-```
+
+----
+lnbc2500u1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysx
+xatsyp3k7enxv4jsxqzpuaztrnwngzn3kdzw5hydlzf03qdgm2hdq27cqv3agm2awhz5se903vruatf
+hq77w3ls4evs3ch9zw97j25emudupq63nyw24cg27h2rspfj9srp
+----
==== The Human-Readable Prefix
@@ -180,7 +183,7 @@ A full list of all the currently defined tagged fields is given in <Andreas M. Antonopoulos is a best-selling author, speaker, educator, and highly sought after expert in Bitcoin and open blockchain technologies. He is known for making complex subjects easy to understand and highlighting both the positive and negative impacts these technologies can have on our global societies.
-Andreas has written two more best-selling technical books for programmers with O’Reilly Media, Mastering Bitcoin and Mastering Ethereum. He has also published The Internet of Money series of books, which focus on the social, political, and economic importance and implications of these technologies. Andreas produces free educational content on his YouTube channel weekly and teaches virtual workshops on his website. Learn more at aantonop.com.
+Andreas has written two more best-selling technical books for programmers with O’Reilly Media, Mastering Bitcoin and Mastering Ethereum. He has also published The Internet of Money series of books, which focus on the social, political, and economic importance and implications of these technologies. Andreas produces free educational content on his YouTube channel weekly and teaches virtual workshops on his website. Learn more at aantonop.com.
-Olaoluwa Osuntokun is the cofounder and CTO of Lightning Labs, and also the lead developer of lnd, one of the main implementations of Lightning. He received his BS and MS in Computer Science from UCSB and was a member of the Forbes 30 Under 30 class of 2019. During his graduate studies he focused on the field of applied cryptography, specifically encrypted search. He has been an active Bitcoin developer for over five years, and is an author of several Bitcoin Improvement Proposals (BIP-157 and 158). These days, his primary focus lies in building, designing, and evolving private, scalable off-chain blockchain protocols, such as Lightning.
+Olaoluwa Osuntokun is the cofounder and CTO of Lightning Labs, and also the lead developer of lnd, one of the main implementations of Lightning. He received his BS and MS in computer science from UCSB and was a member of the Forbes 30 Under 30 class of 2019. During his graduate studies he focused on the field of applied cryptography, specifically encrypted search. He has been an active Bitcoin developer for over five years, and is an author of several Bitcoin Improvement Proposals (BIP-157 and 158). These days, his primary focus lies in building, designing, and evolving private, scalable off-chain blockchain protocols, such as Lightning.
René Pickhardt is a trained mathematician and data science consultant who uses his statistical knowledge to do research with NTNU about pathfinding, privacy, reliability of payments, and service-level agreements of the Lightning Network. René maintains a technical and developer-oriented YouTube channel about the Lightning Network and has answered roughly half of the questions about the Lightning Network on the Bitcoin Stack Exchange, making him the go-to point for almost all new developers who want to join the space. René has held numerous workshops about the Lightning Network in public and private, including teaching students of the 2019 Chaincode Labs residency together with other core Lightning developers.
diff --git a/colo.html b/colo.html index 5b5c176f..634c9280 100644 --- a/colo.html +++ b/colo.html @@ -5,11 +5,11 @@Also known as the southern wood ant, this subspecies of wood ants are aggressive, active, and large. The wood ant queens are typically 12–15 mm in size and can live up to 15 years. Worker ants, on the other hand, are slightly smaller at 8–10 mm and have a lifespan of anywhere between a few weeks to seven years depending on whether they’re male or female (males die soon after mating).
-Capable of producing formic acid in their abdomens, red wood ants can eject it up to a few feet away when threatened by predators. Their nests are often conspicuous mounds of grass, twigs, or conifer needles, often built against a rotting tree stump in an area that the sunlight can easily reach. Wood ants live in large colonies that may have 100,000 to 400,000 workers and 100 queens. Red wood ants are very territorial, and often attack and remove other ant species from the area.
+Capable of producing formic acid in their abdomens, red wood ants can eject it up to a few feet away when threatened by predators. Their nests are usually conspicuous mounds of grass, twigs, or conifer needles, often built against a rotting tree stump in an area that the sunlight can easily reach. Wood ants live in large colonies that may have 100,000 to 400,000 workers and 100 queens. Red wood ants are very territorial, and known to attack and remove other ant species from the area.
Red wood worker ants forage up to 50 meters from their nest to collect a natural resin found dripping from pine trees. In a behavior unique to wood ants, individual ants walk over the resin to disinfect themselves from bacteria and fungi. Additionally, they also eat aphid honeydew, small insects, and arachnids. Red wood ants are commonly used in forestry and often introduced into an area as a form of pest management.
-The red wood ants are currently a protected species and are categorized as “near threatened” by the IUCN. Many of the animals on O'Reilly covers are endangered; all of them are important to the world. To learn more about how you can help, go to animals.oreilly.com.
+The red wood ants are currently a protected species and are categorized as “near threatened” by the IUCN. Many of the animals on O'Reilly covers are endangered; all of them are important to the world.
The cover illustration is by Karen Montgomery, based on a black-and-white engraving from a loose plate, origin unknown. The cover fonts are Gilroy Semibold and Guardian Sans. The text font is Adobe Minion Pro; the heading font is Adobe Myriad Condensed; and the code font is Dalton Maag's Ubuntu Mono.
diff --git a/cover.html b/cover.html index a0caca6d..d02d9691 100644 --- a/cover.html +++ b/cover.html @@ -1,3 +1,3 @@A Second Layer Blockchain Protocol for Instant Bitcoin Payments
- +