-
Notifications
You must be signed in to change notification settings - Fork 513
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
Conversation
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}}
This is the file: Paper.pdf. Note that more cross-references could be added. |
Updated: Paper.pdf Note that I may make more commits as there are still more cross-refs to be added. |
I closed other PRs to reduce clutter. |
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: 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. |
I won't split all the commits in this PR, or I closed ones that I did split.
Aug 10 2017
Sep 12
Sep 16
Sep 19
Sep 21
Sep 22 (8)
Sep 23 (9)
Sep 24 (4)
Sep 26 (3)
Sep 28
Sep 29 (4)
Sep 30 (4)
Oct 1 (9+5 = 14)
Oct 2 (14)
Oct 5 (9)
Oct 6 (5)
Oct 14
Oct 15 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:
git checkout
to the branch that is to be duplicated (which preferably is flush with the original master unless there are dependencies like hyperref), thengit checkout -b <describe-the-change>
then make the changes locally, then rungit push -u
after changing the default push settings. It's easier to use Github, but Github isn't good when you need tocherry-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).