Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Yellow Paper is out of date and won't be maintained because of all rights reserved copyright (by default). Feel free to make PRs to my repo. Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. #376

Closed
wants to merge 106 commits into from

Conversation

jamesray1
Copy link
Contributor

@jamesray1 jamesray1 commented Oct 16, 2017

Here is the latest version of the PDF that is based on the changes that I've made:

Paper.pdf

Feel free to make PRs to this branch in this repo. There is also https://github.com/chronaeon/modules/, however I see that as a WIP, e.g. with more formal specification in the paper needed, and still prefer my version of the yellow paper, e.g. because pseudocode isn't as concise or formal as maths (more details are in this closed issue).

I was requested to split the large PR #365 into smaller PRs, which this PR extends upon. However, this is a very time-consuming, tedious job that I don't want to do. I'd rather be working on sharding, PoS or other protocol improvements. I just decided to edit the Yellow Paper as I read it. Additionally I have made a few smaller PRs that are a subset of this one, but none of them have been merged, which doesn't give me a lot of encouragement to do further work in splitting this up.

(I created a separate issue for this paragraph plus the many open PRs.) Furthermore, the Byzantium EIPS have not even been added to the yellow paper, which means that it is technically also outdated. It would be good to get the yellow paper up-to-date, very readable and reliable. Something else that would be worth doing is to have online modules like Pydocs. Using hyperlinks in LaTeX PDF is not as efficient for reading or writing as modules on a website. Therefore I would like permission for the public to take the content of the yellow paper and develop into online docs, like on readthedocs, while incorporating Byzantium and future EIPS.

Also, it is hard to split the changes into smaller PRs, because:

  1. Commits mix up different types of changes that are independent, e.g. grammar and other minor edits; clarifications and cross-references. In these cases, to keep each PR to have only related changes, the commit should probably be split up. In future, I will ensure that commits are kept small and have only related changes.
  2. Many of the changes are dependent, e.g. many changes are cross-refs which are dependent on hyperref.
  3. It also seems harder to work with Git and Github when there are many branches (there is one branch for each PR). Every time I make a change in Git to keep PRs short it'd be best to create the change in a separate branch with git checkout to the branch that is to be duplicated (which preferably is flush with the original master unless there are dependencies like hyperref), then git checkout -b <describe-the-change> then make the changes locally, then run git push -u after changing the default push settings. It's easier to use Github, but Github isn't good when you need to cherry-pick commits, with which you also need to use a mergetool for any conflicts.

It seems like it would be less time-consuming overall to review the big PR incrementally (it doesn't need to be all in one go) by adding comments and checkpoints. I also suggested to post a link in the readme to a comment e.g. this comment that contains a link to my latest version of the paper, with a warning that this version has not been reviewed, approved, or merged. In either case, for reviewing the PR and merging it or posting a link, whatever change would need to be approved by @gavofyork. If the link in the readme option is preferred, I can create another PR for that change. At any rate, it seems like there is a bit of a stalemate since I don't really want to cherry pick commits and modify ones that have non-related changes, but reviewers don't want to merge it as is.

I think the reason the yellow paper is a bit outdated and isn't being improved much may be because it's hard or time consuming to keep up with the pace of development. Additionally with PoS replacing PoW the formal specification will need an almost complete rewrite. I definitely think it's a good idea to have more useful docs, but I guess that reviewers may think that it is not worth spending time on making existing docs more readable! However, continuing to release docs for improvements is more important. If a document is outdated it would at least be good to have a flag to indicate that and refer to more recent developments (preferably docs).

jamesray1 and others added 30 commits August 10, 2017 11:27
For archiving purposes, I've added live URLs and archived URLS (where possible) for all references.
Fixing errors on lines 78 & 86 as per the failed Travis CI build.
"Another way is to use special field url and make bibliography style recognise it.

url = "http://www.example.com"

You need to use \usepackage{url} in the first case or \usepackage{hyperref} in the second case."

Source: https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management#Authors
For the added refs, see ethereum#335
For Appendix F:
- ECDSAWikipedia and ECDSAcerticom for "we assert the functions ECDSASIGN, ECDSARESTORE and ECDSAPUBKEY. These are formally defined in the literature." ethereum#335 (comment)
- secp256k1BitcoinWiki2016 and secp256k1StackExchange2014 for Secp256k1. ethereum#335 (comment)
- npmElectrum2017 for Electrum style signatures. ethereum#335 (comment)
This does need to be added, but commenting out for now as I'm not sure how. Will look into it later.
To avoid complexity with adding a footnote in a math environment.
Formula 210 has ECDSARECOVER. For consistency, I think ECDSARESTORE should be changed to ECDSARECOVER. CTRL+F ECDSARECOVER returns 5 results, while ECDSARESTORE only returns one, where it is mentioned that it is asserted with "We assert the functions ECDSASIGN, ECDSARESTORE and ECDSAPUBKEY", but then ECDSASIGN, ECDSARECOVER and ECDSAPUBKEY are asserted.
Prepended 'the' before countable definite articles, 'an' before indefinite articles, rewording to avoid stringing too many nouns in succession, etc. Added the top/first word/byte, e.g. instead of "Save word to memory", changed to "Save the first word to memory" (implying the first word of the stack as per the following formula.
Complete sentences, NOT operation
For "Missing $ inserted" in the failed Travis build starting from 098adb8 (where the citation to the URL was introduced), I found this.
To prevent builds failing that have underscores in URLs.
…with-_mathrm

>490 `_\mathbf`s replaced with `_\mathrm`
where foo is a substate field of a block, account, transaction, machine state, global state, etc.
…with-_mathrm

_foo & _{foo} -> _{\mathrm{foo}}
@jamesray1 jamesray1 changed the title [WIP] split into smaller commits. Originally PR #365 All commits: split into smaller PRs. Oct 19, 2017
@jamesray1 jamesray1 changed the title All commits: split into smaller PRs. Almost all of my commits: requested to split into smaller PRs. Oct 19, 2017
@jamesray1
Copy link
Contributor Author

This is the file: Paper.pdf.

Note that more cross-references could be added.

@jamesray1
Copy link
Contributor Author

Updated: Paper.pdf

Note that I may make more commits as there are still more cross-refs to be added.

@jamesray1 jamesray1 changed the title Almost all of my commits: requested to split into smaller PRs. Improving readability: cross-refs, hyperref, grammar and clarifications Oct 20, 2017
@jamesray1 jamesray1 changed the title Improving readability: cross-refs, hyperref, grammar and clarifications Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs + more Oct 20, 2017
@jamesray1 jamesray1 changed the title Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs + more Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. Oct 20, 2017
@jamesray1 jamesray1 changed the title Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. (Feel free to make PRs to my repo.) Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. Dec 15, 2017
@jamesray1
Copy link
Contributor Author

@jamesray1 jamesray1 changed the title (Feel free to make PRs to my repo.) Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. The Yellow Paper is out of date. Feel free to make PRs to my repo. Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. Jan 2, 2018
@jamesray1
Copy link
Contributor Author

I closed other PRs to reduce clutter.

@jamesray1
Copy link
Contributor Author

jamesray1 commented Jan 3, 2018

See the ensuing discussion at https://gitter.im/ethereum/yellowpaper?at=5a4ad08e03838b2f2a5d350f to gain a better understanding of why the Yellow paper won't be maintained by the Ethereum Foundation. In short, because of using the KEVM, "the first fully executable formal semantics of the EVM", which is reasonable.

Here is the latest version of the PDF that is based on the changes that I've made:

Paper.pdf

This version of the yellow paper can be used to get links that direct to specific info in the yellow paper, which is useful e.g. for pedagogical and academic purposes. Here is an example of that:

https://github.com/ethereum/yellowpaper/files/1596574/Paper.pdf#blockhash

To get this link you just right click on a link that directs to the target that you want in the PDF (in a browser or program) and copy the link.

Feel free to make PRs to this branch in my repo.

@jamesray1 jamesray1 changed the title The Yellow Paper is out of date. Feel free to make PRs to my repo. Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. The Yellow Paper is out of date and won't be maintained because of using the KEVM, "the first fully executable formal semantics of the EVM". Feel free to make PRs to my repo. Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. Jan 3, 2018
@jamesray1
Copy link
Contributor Author

jamesray1 commented Jan 3, 2018

I won't split all the commits in this PR, or I closed ones that I did split.
~~

  • >94 total commits. >7 split off. List of splitted commits (details are below): 1-3, 4, 5, 6, 7, 8, 10, 11, 21.

Aug 10 2017

Sep 12

Sep 16

Sep 19

  • 11: see 7. Hyperref. 3feff95. Superceded by 21.
  • 12:
  • 13
  • 14

Sep 21

  • 15.
  • 16
  • 17

Sep 22 (8)

Sep 23 (9)

  • 26.
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

Sep 24 (4)

Sep 26 (3)

  • 39:
  • 40
  • 41

Sep 28

  • 42:

Sep 29 (4)

  • 43:
  • 44
  • 45
  • 46

Sep 30 (4)

  • 47:
  • 48
  • 49
  • 50

Oct 1 (9+5 = 14)

  • 51:
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

Oct 2 (14)

  • 65:
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 78

Oct 5 (9)

  • 79:
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87

Oct 6 (5)

  • 88: Oct 6 as above for the commit 8 point 54036a3.
  • 89: Oct 6 as above for the commit 8 point e55a5f6.
  • 90
  • 91
  • 92

Oct 14

  • 93

Oct 15 2017

@jamesray1 jamesray1 changed the title The Yellow Paper is out of date and won't be maintained because of using the KEVM, "the first fully executable formal semantics of the EVM". Feel free to make PRs to my repo. Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. The Yellow Paper is out of date and won't be maintained because of all rights reserved copyright (by default). Feel free to make PRs to my repo. Improving readability and reliability: cross-refs, hyperref, grammar, clarifications, extra references, URLs added for existing refs; list of maths symbols; fixed formatting e.g. subscripts to \mathrm font; archive links; readme: omitted yellowpaper.io and added more details on how to build. Jan 6, 2018
@jamesray1 jamesray1 closed this Jan 6, 2018
@5chdn 5chdn mentioned this pull request Jan 7, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant