Giter Site home page Giter Site logo

monerobook's Introduction

Mastering Monero

"Mastering Monero: The future of private transactions" is your guide through the world of Monero, a leading cryptocurrency with a focus on private and censorship-resistant transactions. This book contains everything you need to know to start using Monero in your business or day-to-day life, even if you've never understood or interacted with cryptocurrencies before.

Available on AMAZON KINDLE, GOOGLE PLAY, or on Our website for free.

ToC

Chapter Title
0 Preface
1 Introduction to cryptocurrencies & Monero
2 Getting started: receiving, storing and sending Monero
3 How Monero Works
4 The Monero network
5 A deep dive into Monero & cryptography
6 Community and contributing
7 Monero integration for developers
8 Wallet guide and troubleshooting tips
9 Glossary

Licenses

Name License
Cover Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
Content Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
Images Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)

Contribution License Agreement

Please review the Contribution License Agreement before contributing.

monerobook's People

Contributors

aaronmboyd avatar cryptochangements34 avatar d4nte avatar domol avatar hugbubby avatar jaki avatar kim0 avatar lee-chiffre avatar pet3r-pan avatar quickbasic avatar rex4539 avatar russoj88 avatar serhack avatar tcharding avatar v1docq47 avatar wonal avatar xmoreee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monerobook's Issues

Add difficulty adjustment formula

Conceptually described in first edition, but adding the equation in an advanced chapter would be nice, and flow with the technical level of the book.

History needs to be expanded

In light of this, “thankful_for_today” decided to fork Bytecoin in order to launch a cryptocurrency with a strong, community-driven development team working off of the CryptoNote protocol. On April 18th, 2014, “thankful_for_today” launched BitMonero and on April 30th, 2014, the name of the cryptocurrency was changed to Monero.
There are three years missing here. Much took place in those three years that readers are going to want and benefit from knowing about. Please add at least two more paragraphs to cover significant developments between 2014 and 2017.
During January 2017, the privacy of transactions was strengthened further with the optional use of the Ring Confidential Transactions (RingCT) algorithm, which introduced an additional layer of confidentiality by not displaying the amounts implicated in a transaction to someone who did not directly take part in it. By early February 2017, over 95% of all non-coinbase transactions used the optional RingCT feature. As of today, RingCT is a default feature and is no longer optional.

Chapter 8 v2- Add View-only wallet tutorial.

This chapter is a good start, and feels incomplete. I think one thing that could be added would be:

How to add a view-only wallet
This tutorial assumes you have already setup a paper/cold storage wallet, and are now ready to create a "view-only" wallet in the GUI.

  1. Launch Monero GUI program.
  2. At landing screen, select, "Restore wallet from keys or mnemonic seed."
  3. Edit your preferred "Wallet Name" and "Wallet Location"
  4. Select the button "Restore from Keys"
  5. Enter the Public Address for the paper/cold storage wallet you created.
  6. Enter the Private View Key for the paper/cold storage wallet you created.
  7. Leave the Private Spend Key field blank!
  8. Enter your preferred Restore hieght or creation date. Hit next button.
  9. On the next screen enter a strong password. Hit next button.
  10. On the next screen select whether you want to connect via local node (recommended) or a remote node. If local, select the folder that contains your copy of the blockchain.
  11. On the last screen, confirm the wallet details are correct and Open the view-only wallet!

Now you can view and confirm transactions that you've sent to your paper/cold storage wallet!

If you'd like to do a test run to get familiar with the process, you may like to follow the above steps with the Monero General Fund wallet information:

Public Wallet Address: 44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A

Private View Key: f359631075708155cc3d92a32b75a7d02a5dcf27756707b47a2b31b21c389501

5.3.5 Other methods for key derivation: EdDSA cited in Mnemonic

You write: " [...] to produce a valid EdDSA scalar".

My educated guess is that it comes from Luigi1111's Cryptonote Address Tests because I also have been inspired by it in first issue of "Monero Addresses Cheatsheet" (see "Elliptic notes" in v20201113)

However during my PR Koe correctly underlined that EdDSA isn't used in Monero and citing it can be a bit misleading.
As far as I have understood the private key is capped to make it < l because that's the prime order (=the number of elements) of G-basepoint subgroup of the elliptic curve Ed25519.
So the reason privkeys are not any 256 bit number is related to cyclic nature of EC subgroup -highlighted when this subgroup doesn't comprise all N elliptic curve points (cofactor h != 1)- and not to EdDSA requirements.
(if -like me- you come from BTC world, that's not obvious because in BTC the cofactor h=1, and not 8 like in Monero)

Of course I guess this explanation is too complex for your book "reference reader", anyway I would suggest to not cite EdDSA

CH1 Introduction.Ethical discussion

Can Mastering Monero please not take a stance on 'legal' vs 'illegal'?

If there is an ethical discussion, maybe we can just remove the words legal and illegal, and mention that people have always and will always do bad things with money. Wars of aggression are funded with every major currency.

Supporting Monero is not about censoring participants. Monero takes money and transacting out of the hands of those who would wish to have the power to control others property.

I would love to be able to spot and censor transactions for things I don't like (weapons sold to aggressive countries and world-police types, things like that) but fortunately or unfortunately I won't ever have the power to identify things like that on the monero blockchain, much less censor it even if I could find them.

Chapter for Monero Community?

This is just a thought rather than a suggestion.... sorry if there is a better channel for this one.

With all the mentions about the importance of the Monero Community (it's even on the book cover as being co-authors!), would it be appropriate to add a chapter specifically about it? Topics might include (not in any particular order):

-notable achievements made by groups or individuals in the community (showcasing developments and milestones reached)
-current projects or goals being tackled by the community
-community fundraising and how it works
-ways that readers could begin contributing to the community
-methods of organizing or communication that is utilized by the community (social media, meet-ups, etc..)

Chapter 4 edits

I am not a programmer and have only used Git Hub to submit comments and edits for this book. As a result I am not familiar with pull requests and how to use them. Please forgive my ignorance (proofreading books is much easier with something like Google Docs or MS Word..). Serhack asked me to work on Chapters 4-6 as the hired proofreader is currently working on 3. I am just going to copy/paste chapter 4 below and make my edits in bold italics. I hope this helps...

Chapter 4
Mining and Proof of Work

At the beginning of this ebook we talked about the double spending problem. Avoiding double spending is a priority for several cryptocurrencies. In this chapter we will look at how Monero avoids this problem.

An essential function of the decentralized blockchain is it's ability to confirm that each input in the transaction could be trusted. In order to check that, the blockchain use algorithms to find "consensus", meaning each node will agree on and provide its confirmation for the transaction.

What is mining?

Mining is the process by which transactions are verified and added to the public ledger, known as the blockchain, and also the means through which new monero are released. Anyone with access to the internet and suitable hardware can participate in mining. The mining process involves compiling recent transactions into blocks and trying to solve a computationally difficult puzzle. The participant who first solves the puzzle gets to place the next block on the block chain and claim the rewards. The rewards, which incentivize mining, are both the transaction fees associated with the transactions compiled in the block**,** as well as newly released Monero. Moved from earlier in paragraph: A lot of people would like to mark that mining is not the process of creation of coins. Beyond confirming transactions and creating new monero, mining also secures the decentralized Monero network. The more people using their computer hardware to mine monero, the more secure the network becomes. Even you can mine Monero!

Coin Emission

Monero main emission curve will issue about 18.4 million coins to be mined in approximately 8 years from its creation. (more precisely 18.132 Million coins by ca. end of May 2022) After that, a constant "tail emission" of 0.6 XMR per 2-minutes block (modified from initially equivalent 0.3 XMR per 1-minute block) will create a sub-1% perpetual inflation starting with 0.87% yearly inflation around May 2022) to prevent the lack of incentives for miners once a currency is not mineable anymore.

This "built-in inflation" feature is often overlooked or misunderstood. It is also the one of the many features that makes Monero more suitable to replace fiat cash than any other cryptocurrency. Here is why: In both local and global fiat economies, mild, predictable inflation is actually a good thing. Mild, predictable inflation 1) ensures demand for products (I want to buy it now when it will be cheaper than later), and 2) protects against rapid deflation (the value of my money is quickly dropping). A sub-1% perpetual inflation is arguably more secure, stable, and protective than any current or historical examples of fiat currency.

Despite to others cryptocurrencies, Monero has infinite supply.
Eligiptiaran Proof of Work

A proof of work is a piece of data which is difficult (costly, time consuming) to produce but easy for others to verify and which satisfies certain requirements. Producing a proof of work can be a random process with low probability so that a lot of trial and error is required on average before a valid proof of work is generated. In order for a block to be accepted by network participants, miners must complete a proof of work which covers all of the data in the block. The difficulty of this work is adjusted so as to limit the rate at which new blocks can be generated by the network to one every 10 minutes. Due to the very low probability of successful generation, this makes it unpredictable which worker computer in the network will be able to generate the next block.

Monero is powered strictly by Proof of Work. It employs a mining algorithm that has the potential to be efficiently tasked to billions of existing devices (any modern x86 CPU and many GPUs). Monero uses the CryptoNight Proof of Work (PoW) algorithm, which is designed for use in ordinary CPUs and GPUs.

The smart mining feature allows transparent CPU mining on the user's computer, far from the de facto centralization of mining farms and pool mining, pursuing Satoshi Nakamoto's original vision of a true P2P currency. As a result, it makes the currency more accessible to the average person and helps secure the network at the same time.

ASIC-resistant algorithm

An ASIC (Application Specific Integrated Circuit) is custom mining hardware that is specialized for a particular use. For example, Bitcoin ASICs are specialized to mine cryptocurrencies utilizing a SHA256 hash algorithm. Due to the fact that they are designed for a specific use, they will typically have a large performance advantage over hardware that is intended for general-purpose use like CPUs, GPUs, and even FPGAs. Thus, any newly developed ASIC will obtain a significant majority of the network hashrate and introduce centralization.

The Monero code was forked from the CryptoNote reference implementation. In the CryptoNote whitepaper (https://cryptonote.org/whitepaper.pdf), one of the identified deficiencies of Bitcoin is how it utilizes Proof of Work due to its centralizing nature, as we will discuss below.

In order to create a more egalitarian mining network and foster decentralization, the original CryptoNote developers created the Cryptonight Proof of Work function to "close the gap between CPU (majority) and GPU/FPGA/ASIC (minority) miners." While the CryptoNote authors admit that "It is appropriate that some users can have a certain advantage over others," they propose that "their investments should grow at least linearly with the power." Thus, it is recognized that ASICs may be an inevitable development for any Proof of Work. We also concede that ASICs may be inevitable, but we feel that any transition to an ASIC-dominated network needs to be as egalitarian as possible in order to foster decentralization.

The drawback of Bitcoin's (SHA256) proof-of-work system is the easy migration from CPUs to GPUs, to FPGAs, and finally to ASICs, where each step came with huge efficiency improvements. Thus, there is a large gap between CPU mining and ASIC mining, which resulted in ASICs being the only viable way to mine. In essence, this causes centralization, because only those with access to specialized hardware (ASICs) are still able to mine, and these typically come from one or very few manufacturers. Cryptonight (Monero's proof-of-work system) intends to close the gap between CPU and GPU, FPGA, and ASIC mining by using a proof-of-work system that is memory bound over a moderate amount of memory. As a result, ASICs get significantly more expensive to build.
separated paragraph
This proof-of-work system intends to foster egalitarian mining, which yields the following benefits: First, if mining is decentralized (because CPUs and GPUs are still usable for mining), it will be very difficult to pressure miners into not confirming a certain transaction, or otherwise act as a censor to the Monero blockchain. Second, it will lessen the pressure towards centralization of mining in large data centers (as can be seen in Bitcoin). Third, it is quite difficult for governments to regulate companies selling general-purpose hardware (as opposed to companies selling specialized hardware).

Let's further discuss this last point. Specialized hardware will, most likely, only be designed by a few companies. As we can see from Bitcoin, the majority of ASICs are designed and shipped by Bitmain. (maybe add some stats here demonstrating the power and scope of Bitmain, to help drive it home to the reader that it's a cause of concern)

This creates a single point of failure. For instance, a government could require these ASIC manufacturers to add a "kill-switch" which allows them to shut down a miner remotely or otherwise control it. This threat has the potential to destroy the whole network. In a similar fashion, governments could require miners to have a license to buy and operate ASICs, thereby confining ASICs to a certain group of licensed people. Furthermore, licensing could ultimately lead to blacklisting certain transactions, i.e., governments can require miners to not mine certain transactions, where disobedience would result in miners having their license revoked. By contrast, introducing a license to operate general purpose hardware is probably an infeasible endeavor.

For these reasons, Monero announced to make an hard fork in order to preserve A**SIC** resistance. This occured in April 2018 and a drop in network hashrate was revealed, leading many to estimate ASICs had gained control of nearly half the network hashrate. The ASIC companies had economic incentive not to attack the network, but for reasons described above, it was a cause for concern among many in the Monero Community. Furthermore, in order to maintain its goal of decentralization**,** deleted and to provide a deterrent for ASIC development**,** and to protect against unknown or undetectable ASIC development, the Monero team proposes modifying the Cryptonight PoW hash every scheduled fork, twice a year.

chapter 8 missing?

chapters/8.md is not available.
this is either a numbering error, or the file is really missing.

Almost entire paragraph repeated in 1.3.5.

Hello!
I've just started reading the book and found that text:

to facilitate illegal activity, which has plagued every currency since the idea of money was conceived thousands of years ago. The scale of illegal transactions conducted using cryptocurrencies is dwarfed by the staggeringly-vast amount of criminal activity that occurs every day denominated in fiat currencies like Euros, Rupees, Yen, or Dollars.
is repeated two lines below.
Do not know if this is intended but wanted to give heads-up.
Edit:
I am not sure if this is the case but here is PR that removes paragraphs that I think should be replaced by new added in last commit
PR: #54

Small spelling/grammar

Section 1.2.3 (page 23):
"Big data and tech companies carefully record your activities online, so that they can profile your preferences in order to provide better services."

Big data is not an entity but just a term (as far as I know), hence the sentence does not seem to make sense.

Edit:
I found a number of pieces that make the text flow less nicely. I will be working on a pull request to fix this.

Edit 2:
#112

Chapter 6 edits

Serhack asked me to work on Chapter 6 initially, and since I have absolultely no programming or cryptography experience, I was afraid to touch it with a ten foot pole. After combing through this, I am glad I did. For a layman like myself, this chapter is very painful to read. It is full of terms I have no understanding of and is lacking any explanation of them. I tried to note those terms with an & to flag them so you can expand upon them. I think it might benefit from the contributors taking a second look at it and determining what information could be deleted, in order to make room for some technical summaries of what I note at the bottom that seems to be missing (i.e. Ring CT, Stealth Addresses, Ring Signatures, Kovri, etc...)

I am glad I am able to contribute whatever I can to this book. I hope this helps...

Chapter 6
A Deep Dive into Monero & Cryptography

The cryptography behind Monero is what makes it more secure, private, and untraceable than all other cryptocurrencies. This chapter will take a deep dive into it's cryptography features. Due to the mathmetical nature of cryptography, this chapter is the most technical of this book. So, to start at the basics, we'll begin with cryptographic primitives.

A cryptographic primitive is an algorithm that serves as the building block for cryptographic protocols. Monero uses a wide variety of cryptographic primitives for various use cases, which will be discussed in depth throughout this chapter.

Comparing to Bitcoin, Monero uses much more primitives, and some of them are more advanced. Particularly those related to privacy and Proof of Work. Some choices are deliberately non-standard (for better or worse <-- explain why it's for better or worse, or else delete it) - oftentimes a legacy of the CryptoNote protocol (for more information about the CryptoNote protocol, see Chapter 9).

(moved down) Comparing to various altcoins, the multiple primitives of Monero cryptography is often considered more conservative, sound and robust. So let's take a look at what they are specifically.

In this part, we will talk about address generation, blockchain and privacy more in depth than in the first chapters. <-- Delete this sentence.

Monero Pseudorandom Number Generation (PRNG)

(Everything below seems choppy and unorganized. With such technical content, the least we can do is have it organized to help with the reader's comprehension. Once these edits have been made and some of the words in here are summarized/expanded upon, I will go through again and re-organize if need be.)

Monero uses PRNG based on the Keccak hashing function. (insert a sentence summarizing what hashing means) This hashing function basically makes whatever resulted as an output from the previous hashing round- now an input for the next hash. (edited and moved up from below -->)Keccak is the leading hashing function, designed by non-NSA designers (replace designers with developers, engineers, something else?). Keccak won National Institute of Standards and Technology (NIST) competition to become the official SHA3. It is used for transaction and block hashing.

&&From here forward, if there is a word that looks &like this, it means this word needs to be summarized or expanded on for the reader:&&

The &initial seed comes from &entropy sources provided by the user's operating system. On Linux and MacOS the seed comes from /dev/urandom. On Windows the WinAPI CryptGenRandom call is used for seeding. <-- are these two sentences necessary?

This concerns <--what concerns? the reference &C++ &implementation of Monero. Please note there are many alternative &implementations of private key generation, including JavaScript, Python, Android/Java. These should be researched case by case for correctness. <--is this a note to the reader, or the writers?

Hashing <---is this supposed to be here?

For generating addresses (especially public address), it's important to hash keys. (why is it important?)

Monero employs Keccak as a hashing function. <--- this is redundant. I think these sections need to be combined to make it easier to read. In most contexts specifically &Keccak-256 is used, providing 32-byte hashes.

This paragraph should be near the beginning of this section --> Choosing a good hashing algorithm is a must for creating addresses in a secure way: if it generates the same addresses, there will be a "collision", which means two people will have the same seed, so same private and public keys. Obviously this would be problematic for the use of blockchain transaction capabilities.

Keccak (delete)

Base58

Base58 is a group of binary-to-text encoding schemes used to represent large integers as alphanumeric text.

It is similar to another scheme called Base64 but has been modified to avoid both non-alphanumeric characters and letters which might look ambiguous when printed.

It is therefore designed for human users who manually enter the data, copying from some visual source, but also allows easy copy and paste because a double-click will usually select the whole string.

Base58 Alphabet used in Monero:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Note: Zero (0) along with the letters I (uppercase i), O (uppercase o), and l (lowercase L) are not present in this Base58 alphabet as they are the previously mentioned characters which might appear ambiguous.
The relationships between seeds, address and keys

Before we get into the Monero deep, we have to introduce the concept of address generation. <--- is this supposed to be here?
Elliptic curve

**&&&&&**A finite field Fp where p is a prime number, is the field formed by the set {0, 1, 2, ..., p−1}. with arithmetic operations (+, ·) calculated. <-- this needs a sentence or two to lead into the information. Explain why this information is relevant for the purpose of Monero use (something you should do throughout this chapter).

Typically, elliptic curves are defined as the set of points (x, y) satisfying an equation:

y^2 = x^3 + ax + b

However, the cryptocurrency Monero uses a special curve known to offer improved security over other commonly used NIST curves, as well as excellent performance of cryptographic primitives. The curve used belongs to the category of s.c. Twisted Edwards curves, which are commonly expressed as: ax^2 + y^2 = 1 + dx^2y^2
Ed25519 Function

The address generation <-- delete?
The Monero Blockchain

Monero has a unique kind of blockchain. If you recall, a blockchain is a distributed or decentralized public ledger where payments and transactions are recorded and verified. The blockchain cannot be modified due to its distributed nature. It is based on various cryptography protocols and algorithms in order to avoid any cheating. Monero uses a variety of these to ensure it is secure from prying eyes, and untraceable.

Lightning Memory Mapped Database

Monero uses the Lightning Memory Mapped Database (LMDB) databas**e** system to store its blockchain. LMDB is a software library that provides a high-performance embedded transactional database in the form of a key-value store. <--follow with a sentence in layman's terms

LMDB is written in &C(++?) with _&API** bindings_** for several programming languages and is developed by Symas Corporation. Here are a few LMDB features:

  • stores arbitrary key/data pairs as byte arrays, (meaning...)

  • has a range-based search capability, (allowing...)

  • supports multiple data items for a single key, (providing....)

  • has a special mode for appending records at the end of the database which gives a dramatic write performance increase over other similar stores.

LMDB is not a relational database but like Berkeley DB and other similar databases such as dbm is strictly a key-value store. <--- explain what this means or why it's important. otherwise, delete it.

Block structure

The block structure was defined by the third document of CryptoNote Standar**ds. It defines the way data is stored within blocks and the blockchain,** along with the corresponding data structures.

A block consists of three parts:

block header
base transaction body
list of transaction identifiers.

The list (<-- what list? explain this) starts with the number of transaction identifiers that it contains.

Block Header
Base Transaction
Fees
Privacy Transactions
Stealth Addresses

&&The examples below here need images/graphics to help explain this concept

Chapter 3 described a situation where Leo sent George some Monero and in doing so he used George's public keys to produce a one-time public key, also known as a stealth address, that is unlinkable to the (delete the) George's real keys. This section will go deeper to explain the cryptography behind that one-time public key.
Sending

The highly technical formula descibed in the CryptoNote whitepaper to produce this public output is P = Hs(rA|i)G + B. This means that when Leo wants to send Monero to George he generates a 256 bit pseudorandom scalar to be used as the transaction private key, r. Leo is the only person that will ever know this key, not even George. Leo then multiplies George's public view key, A, by his pseudorandom scalar and then &concatantes the output index, i, to resulting point. This data is then run through the Hash to Scalar function. This function takes the input data, hashes it using the Keccak-256 algorithm, then takes that resulting hash modulo the prime number 2^255 + 27742317777372353535851937790883648493. The &ed25519 basepoint, G, is then multiplied by the scalar that is output from that function. Finally, Leo adds this point with George's public spend key, B, to produce the final output, P.
Recieving

Now, as described in chapter 3, George must scan the blockchain for outputs that belong to him. To do this he must calculate P' = Hs(aR|i)G + B. The process is very similiar to what Leo had to do to send the Monero. George will get the public transaction key, R, used in the transaction from the blockchain and multiply it by his private view key, a. He then must concatenate the output index to the resulting point and that data through the Hash to Scalar function. He then multiplies the ed25519 basepoint, G, by the resulting scalar and finally adds his own public spend key, B, to the resulting point to produce the final point P'. If the output George generated independantly, P', matches the output from the blockchain, P, then George knows that he owns that output and can spend the associated Monero.

&this chapter seems to be missing the cryptographic/"deep dive" explanation or summaries behind Ring CT, Stealth Addresses, Ring Signatures, Kovri, etc...

Chapter 5 examples

At the end of Chapter 5, I think it would be great to name a few examples of other things that have been done:

Over 200 contributors in the past year have contributed to Monero codebase (that includes the Monero “core”) and over 500 users have created their little (delete) Monero related project s, ranging from online payment and wallet services, usability and adoption, and even artwork and merchandise that have contributed to the cultural fabric of the Monero community.

Add license

I suggest to add a license for this repository, right now i don't see any.

Chapter 4 v2- Suggested edits

Overall this chapter is looking great! Below in bold are a few suggested edits:

  • 4.2.3- Consider adding this sentence to last paragraph:

There are some minor privacy concessions that come into play when using remote nodes, since the node operator is aware of the times and IP addresses from which your device broadcasts transactions or connects for updates. This could be mitigated by connecting to the node via a VPN or Tor. The upcoming Kovri privacy technology will significantly mitigate these....

  • 4.3.4-Consider adding a comparison to Gold in last paragraph:

The annual supply increase from Monero's 0.6 XMR tail emission is less than 1% per year. This is comparable to the annual gold supply increase globally, which in modern civilization has historically been the purest and most stable form of money.

  • 4.4.1.2- Fix the heading

  • 4.4.3.2- Fourth paragraph, fix misspelling of amateur:

It would be difficult to exert this influence over a global collection of amateur miners, and...

  • 4.4.3.3- A suggested update to the last paragraph:

For the time being, it appears that the Monero network has successfully mitigated the unexpected ASIC threat. To continue discouraging ASICs, Monero now slightly changes the mining algorithm at each network update. They are also exploring entirely new algorithms to safeguard the network from ASICs long term. Since Monero carries out routine hard forks every 6 months, this should permanently disincentivize attempts to produce Monero ASICs, since each expensive and lengthy redesign would be promptly rendered obsolete.

Chapter 6 v2- Suggested Edits

Having been involved in the community pretty heavily over the past year and a half, I enjoyed reading and contributing to this chapter. Here are my suggested edits:

  • 6.1.2- Add to first paragraph-

At the time of writing, more than 500 people have contributed code, including 200 in the last year. Among all cryptocurrencies this number of contributors is led only by Bitcoin and Ethereum. Monero has adopted an un-governance...

The Monero Workgroups are collaborations formed to join people around unique goals. This allows small teams of individuals to connect and tackle specific tasks. For example, the Monero Hardware Workgroup is well underway on its mission to build the first open-source community-driven hardware wallet. Monero Localizations Workgroup has translated Monero code and content into dozens of languages. Monero Outreach is a workgroup that is working on increasing adoption and awareness of Monero. Another instance was the Monero Integrations Workgroup, which developed open-source payment gateways.

Other workgroups plan events, craft kits for Meetups, or help users with software issues. Anyone can get involved in a Monero workgroup, and you are invited to do so! You can get started with these resources:

1. See which workgroups are active on Taiga: https://taiga.getmonero.org/discover
2. Join the discussion on IRC #monero-community and find out where your skills and passions might be best suited to help.

  • 6.2.4- Add to first paragraph:

Many different repositories are hosted at the Monero Project and on GitHub. In fact, there are over 23 repositories in the Monero Ecosystem and 340 repositories on the Monero topic. Several of them house components that we've already discussed in Mastering Monero, for example:

  • Add 6.2.5- Monero-announce Mailing List

There is a mailing list that sends important announcements about the Monero software and network. Anyone who is interested in being involved in the Monero community or staying informed of its updates is welcome to subscribe to the mailing list here: https://lists.getmonero.org/postorius/lists/monero-announce.lists.getmonero.org/

Replace Kovri with Dandelion++ in section 3.2.4

Since Kovri development seems to have halted and Dandelion++ provides a solution to the same problem that Kovri was meant for, that section describing Kovri could be replaced with a description of Dandelion++.

Strong example at the beginning

@wonal wrote:

If you are trying to show the reader that the current state of the financial system carries risks of trusting a centralized party, I'm not sure if a friend lending money to another friend helps set the stage for that.

Splitting chapter 5 into more chapters

I am opening up a discussion to split chapter 5 into seperate chapters. Chapter 6 looks to explore the technicalities of the cryptography behind Monero. Currently the chapter content structure looks like:

  • Introduction
  • Monero Randon Number Generation
  • Hashing
  • Base 58 Encoding scheme
  • Ecliptic curve cryptography (without any introduction of public/private key crypto)
  • Address generation
  • Monero Blockchain Design (blocks, transactions, identifiers)
  • Private transactions (ring sigs and one time stealth addresses)

I would like to suggest that chapter 5 should be split into 2 different chapters

These chapters would be known as the "Technical aspects of Monero"

  • Monero's blockchain design (blockchain, hashes, PoW, public key crypto, addresses)
  • Monero's private transactions and how the work (cryptography behind one time addresses, ring sigs etc.) -> this differs from the earlier chapter 3 as it will go into the maths and cryptography.

Happy to take charge of restructuring the information, explaining the concepts (not just describing) and making it all digestible :)

Cheers

FOSS expansion/reiteration may strengthen understanding of it's importance

For layman like myself, a deaper explanation of FOSS and why it is so valuable to Monero could help strengthen the reader's comprehension and understanding. A few additional sentences or paragraphs would probably do the trick.

Perhaps add something after here in "What is Monero" section:

Monero is based on the CryptoNote protocol and it uses the most powerful cryptographic techniques in order to hide the sender, the receiver, and the amounts transacted. Monero is not a corporation; rather it is an open source project. Being open source allows Monero to....fill in the blank....

In "Why Open Source" section, maybe consider expanding or reiterating the importance:

The benefits of open-source software, namely trust and security, align well with the goals of cryptocurrency, which is why the code to The Monero Project is completely open-source. This sets Monero apart from other major cryptocurrency projects and allows it to...fill in the blank....

Also, under the "Why Monero" section, perhaps add something along the lines of:

Decentralisation: Due its open-source nature, Monero cannot be centralized, meaning no one can block you from sending and receiving coins;

Chapter 5 v2- Suggested edits

I really enjoyed reading this chapter. Below are some suggested edits for consideration:

  • 5.2.2- third paragraph word choice. Replace word build with built.

...which employs a special CryptoNote hash algorithm, which is built on the Keccak...

  • 5.2.3- Fix heading. Make bold.

  • 5.3.2.2- fourth paragraph, reword:

For example, consider the the main Monero General Fund donation address:

  • 5.3.2.2- Consider adding paragraph before concluding paragaph:

The view-only wallet feature of Monero may also prove to be Monero's protection against regulation that would attempt to ban Monero in certain jurisdictions. Since individual Monero users can choose to share their view-keys, they could choose to provide them to auditors to verify their funds. This would be a reasonable approach to appeasing auditors and as a result, relinquish fears that Monero could not work within the paradigms of existing financial structures.

  • 5.3.2.2- Last paragraph. I do not have suggested wording, but isn't their a workaround for view-only wallets not showing outgoing transactions, via sharing key images? If information on that were included here I think it would complete this section.

  • 5.3.4- Second paragaph. Swap words: to link > link to

....so nobody can link to those transactions from analyzing the blockchain (including the spenders). However, this....

  • 5.3.4.3.3 Second paragraph. Pick one of the words, its or the. I suggest its.

....the wallet checks calculations based on its the public view key and public spend key.

  • 5.4.3- Third to last paragaph. This doesn't make sense to me and I'm not sure how to properly suggest an alternative.

Nobody can ascertain which commitment hides your true key, but everybody can mathematically verify for themselves that:

the sender knew one of the private keys represented by the public keys the key image was computed correctly

Trying saying this sentence^ out loud, then consider rewriting in a way that makes more sense.

  • 5.4.4- Consider editing:

If you want to venture even further into the calculations behind these technologies, check out 'Zero to Monero', by Alonso, K.M. & Koe. This book is a highly-technical mathematical tour that is also available as a free community-funded PDF.

  • 5.5.3.2- Second paragraph. Delete "a"

To avoid these issues, Monero uses a dynamic block size mechanism that allows the miners to use a larger blocks to accommodate increased traffic.

  • 5.5.3.3- Third paragaph. Delete "in", add "s" to transaction.

Fees are calculated by the weight in of the transaction in kB. Larger (“heavier”) transactions incur a higher fee.

  • Add a 5.6 Conclusion

As you can see, Monero uses several highly sophisticated encryption protocols to secure its network and adhere to the fundamental principles of privacy and decentralization. With the help of the Monero Research Lab and various auditing agencies, Monero will continue to identify and validate cutting edge encryption technology to make the technology as fast, secure, private, and efficient as possible.

One of the key features of money is the feature known as fungibility. Fungibility means that one piece of value is equal to another piece of value of the same amount. One ounce of gold equals one ounce of gold. Or in our case, one moneroj equals one moneroj. The encryption protocols used by Monero make it fungible and allow it to reach its goal of being true, digital money.

Cryptocurrencies that are transparent at their base layer do not have these encryption layers in place and as a result, are not fungible. A coin that can be traced to the dark net will be tainted and coins that are newly minted or sold on auction by law enforcement might be sold at a premium. So in the case of transparent cryptocurrencies, one coin does not equal the same value as another coin of the same amount. They are not fungible. This is truly problematic in the goal of being digital money.

So beyond maintaining good security, privacy, and decentralization through Monero's sophisticated encryption protocols, it also ensures fungibility, an essential component of sound money.

Do you accept contributors?

I just cloned this repository in order to contribute some minor corrections, but it turned out that this isn't the code for the paperback.

Now I realize that the FFS request never promised that "Mastering Monero" would be open source.

Regardless, is there a way to get access in order to contribute content?

Chapter 5 edits

I am not a programmer and have only used Git Hub to submit comments and edits for this book. As a result I am not familiar with pull requests and how to use them. Please forgive my ignorance (proofreading books is much easier with something like Google Docs or MS Word..). Serhack asked me to work on Chapters 4-6 as the hired proofreader is currently working on 3. I am just going to copy/paste chapter 5 below and make my edits in bold italics. I hope this helps...

Chapter 5
Monero Core and Community
Monero Community

The community behind Monero is a crucial part of it's history and development. Starting at it's inception, the anonymous founder of the BitMonero cryptocurrency made sweeping changes without asking for solid feedback from the community, and when he made mistakes, the community of BitMonero decided to fork the software and continue to develop it without him. BitMonero was shortly renamed Monero by consensus of the community. The community has been trailblazing ever since.

One of the greatest strengths of Monero is it's community; each month there are two Monero-community meetings where everyone can follow the progresses about Monero and ?frequest? developer meetings that are open for the community to join or follow on IRC (consider adding the #'s for the IRC chats). Contributers and community members are encouraged to comment on development and ideas on the Monero Project Github.

Originally**,** the community was composed of just a few people (the original fans of Monero), but by early 2018, the community grew a lot: over 150,000 users on social networks! Other sub-communities have begun to grow around Monero. These sub-communities range from miners, developers, organizers, entrepreneurs, marketers, engineers and more.

There have been 330 people who have contributed code, with 140 in the past year (this is a historical document, so say the year :) 2017? 2018?). The organization scheme of the project has been described as “un-governance”. The “ungovernance” (<-- one has a - and one doesn't. Pick one and stick with it.) model, as implemented by Monero, is comprised of four different aspects or “branches”: the Monero Research Group, the Monero Community Group, the Monero Workgroups and the Monero Core.

The Monero Research Group is an open group of academics and researchers who are constantly coming up with new ideas for Monero and testing and researching existing ideas.

The Monero Community Group performs functions like posting on the subreddit, helping out newcomers, updating the Monero website, providing feedbacks, and building out the ecosystem.

The Monero Workgroups are special Workgroups created with a unique goal: joining people for the same tasks. For example, there is Monero Hardware Workgroup that has the mission to build the first community-driven Hardware Wallet (a secure way to store cryptocurrency off devices connected to the internet). Another example could be the Monero Integrations Workgroup that has the mission to build free and open source payment gateways (tools to help increase usability and adoption of Monero).

Finally, the Monero Core Team is the team that manages critical tasks for Monero. Some of the responsibilities of the Core Team are:

Acting as primary trusted arbiters of the Forum Funding System on behalf of the community, so as to ensure the completion of all projects to the satisfaction of the community.
Managing the codebase of the Monero Project, which includes merging code on Github, keeping backups, and ensuring the safety, security, and free access of the code from any party.
Stewarding the general donation fund, and spending the Monero there on anything they see fit to further the Monero Project.
Acting as trusted signers and distributors of reference clients for the Monero coin, and other related technologies.
Setting a vision for the Monero Project

Monero Core

Repository of Monero on Github:

monero The Core of Monero Network, written in C++ language
monero-gui GUI for Monero, build with Qt library
monero-site The website for Monero
sekura The Community Hardware wallet
kovri The Kovri I2P Router Project
kovri-site The website for Kovri

In 2017?2018?, over 200 contributors along with Monero Core contributed to Monero codebase (delete: that includes the Monero “core”) and over 500 users have created Monero related projects ranging from online payment and wallet services, usability and adoption, and even artwork and merchandise that have contributed to the cultural fabric of the Monero community.

There are not many cryptocurrencies with a community as strong as Monero's. Anyone in the future who benefits from Monero, has this entire community to thank.

Index Error in Equality

hi, guys. The original sentence in 5.3.4.3 is "If the equality X==Hs(pV0•R)G+PS0 is true, then that output can be unlocked and spent! ". Original equality has an index error. the equality possibly should be X == Hs(pV0•R)G+PSi. please check. thanks.

Rephrase cryptonote paper release in history section

"The underlying CryptoNote protocol that Monero is based on was
originally launched by pseudonymous author Nicolas van Saberhagen
in October 2013" -> "The underlying CryptoNote protocol that Monero is based on was
originally described by pseudonymous author Nicolas van Saberhagen
in October 2013". (so launched -> described).

A paper describes, it cannot be "launched". Only code can launch a network.
It is important to get this right, as we do not want to be vague about the fact that cryptonote was NOT launched pre-2014, as claimed by the Bytecoin scam.

Just creating an issue as it will be faster for anyone already working on the project to change this than for me to clone PR etc. :)

What's missing?

Would you like to contribute to this project?
There are a lot of contents that are missing from the resource.

  • Integrate Monero Chapter + OpenAlias (including JSON RPC, the daemon and wallet api, not monero integrations projects)
  • Monero subproject: Kovri
  • Monero P2P
  • Monero Hard fork / Consensus

Chapter 7 v2- Suggested Edits

I'm not a developer so I can't provide much value to this chapter. Having a few more eyes on this chapter from programmers would be a good thing to do, just to be safe. This is all I noticed:

7.2- Second paragraph, delete "a"

The example URI below URL shows a an example string that

Second edition credits

Please kindly add xmrhaelan to the credits ;)

For the parts of Chapter 2 that were used from Monero Outreach's Best Practice PSA's, please add Monero Outreach to the credits as well.

Thanks for this awesome resource! We are glad to be a part of it :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.