From 3debb4c40158ef13cee86c03697712d31119a764 Mon Sep 17 00:00:00 2001
From: James Ray <16969914+jamesray1@users.noreply.github.com>
Date: Sun, 7 Jan 2018 16:29:53 +1100
Subject: [PATCH 01/22] Add license, introduction, dapps
---
Decentralized-apps-(dapps).md | 83 ++++++++++
Ethereum-introduction.md | 277 ++++++++++++++++++++++++++++++++++
LICENSE | 5 +
3 files changed, 365 insertions(+)
create mode 100644 Decentralized-apps-(dapps).md
create mode 100644 Ethereum-introduction.md
create mode 100644 LICENSE
diff --git a/Decentralized-apps-(dapps).md b/Decentralized-apps-(dapps).md
new file mode 100644
index 000000000..1dbed731b
--- /dev/null
+++ b/Decentralized-apps-(dapps).md
@@ -0,0 +1,83 @@
+Any good, service, governance or economic activity can be decentralized and tokenized with and transacted via Ethereum. The token represents the dapp (an abbreviation for decentralized app) while it uses the Ethereum blockchain, but the price of the token is different. Activity that has any economic or governance aspect, conceived or as of yet inconceived, can be done via Ethereum, provided that the right code is written and the necessary hardware is used (such as computers running an Ethereum node, and in some special cases, a measurement device to measure a resource flow for additional verification/auditable purposes, like a meter for electricity ⚡🔌, water 🚰 or gas 🔥; or a waste 🗑️ volume detector). Here's a challenge: keep an eye out for activity that has not been implemented on Ethereum (or could be implemented in a better way; check this article and research to check whether it's implementeId and if so, how well) and then:
+
+ - develop a dapp for the idea yourself (after learning Solidity, if you don't already know it); or
+ - sign an NDA with someone who is interested in developing dapps, share the idea, and form some agreement if they want to proceed with it (which could be proposed in the NDA itself), e.g. a founder's stake in an ICO, a salary, equity in the venture (although a community model more like Ethereum's non-profit foundation is better for a more equitable solution), royalties, a fee for every transaction, etc.
+
+
+This platform aspect of Ethereum has been referred to as a 'fat protocol' here, as opposed to the 'thin protocols' of Web 1.0 and 2.0 with HTTP, SMTP, etc., with the take home point (in bold) being:
+the market cap of the protocol always grows faster than the combined value of the applications built on top, since the success of the application layer drives further speculation at the protocol layer.
+One kind of application that is particularly intriguing is decentralized autononous organisations (DAOs, this includes entities as large as, or even larger than nation-states 🇦🇺🇺🇸🇮🇳🇬🇧🇨🇳🇧🇷🇷🇺🇯🇵, social networks, multinational public companies, etc.). Note that having complete autonomy is probably not a good idea, since code may not be able to handle new issues that arise, so human intervention should probably always be an option, but preferably in the hands of a small, non-profit entity or some decentralized solution (perhaps similar to the Aragon Network). By analogy, you wouldn't want a nuclear power plant to be completely automated with no possible means of human intervention. As a precaution, you'd want several safeguards including, for example, an off button 😉. As explained in this Ethereum Wiki here, the first DAO, known as The DAO, resulted in many funds being stolen, and Ethereum hard forking into Ethereum and Ethereum Classic.
+
+The following list is sourced from [Coin Market Cap tokens (you can sort by market cap)](https://coinmarketcap.com/tokens/) and State of the Dapps, both of which lists many more, as well as elsewhere, e.g. Gitter research room chats. (There are 854 dapps on State of the Dapps as of Dec 1 2017; then [909 on Jan 1 2018] (https://web.archive.org/web/20180101114436/https://www.stateofthedapps.com/). 😯 You can search by tags.) Other examples are also presented e.g. on day 4 of [Devcon 3](http://www.ryanyosua.me/devcon-3-talks/), as well as outlined in the Ethereum whitepaper in the introduction and applications section. Note also that while most of the dapps in the following list run on the Ethereum platform, some examples do not, and where they don't run on Ethereum, it is generally noted as what they do run on. This is not a big deal, as any dapp could theoretically run on another blockchain, (or indirectly via inter-blockchains like Cosmos or Polkadot) provided that the host blockchain has the required features. Also note that the below list is not an endorsement, and is not exhaustive or necessarily well-maintained. At worst, it's included because it was briefly looked into and it seemed like a good idea, while more time may have been spent doing due diligence on some ideas and can therefore have a better idea of its usefulness. Dapps that have been implemented, or are under development, or have been publicly conceptualised, includes:
+* a stable coin, e.g. [Dai](https://makerdao.com/whitepaper/DaiDec17WP.pdf)
+* smart contracts for the legally enforceable and/or liquid transfer of assets, plus related services e.g. [Mattereum](https://mattereum.com/) and [Sweetbridge](https://sweetbridge.com), e.g. settlement, accounting, risk management, resource sharing, and Optimization & Liquid Talent. Also, asset-based lending: secure loans with holding of assets e.g cryptocurrenices (locking them up) in exchange for cash (fiat currencies), such as Sweetbridge and [SALT](https://coinmarketcap.com/currencies/salt/);
+* [Veritaseum](http://veritas.veritaseum.com/), which "enables software-driven P2P capital markets without brokerages, banks and traditional exchanges".
+* [invoice financing with Populous](https://populous.co/)
+* decentralized exchanges to buy and sell cryptos and fiat, e.g. localethereum; for cryptos only there is Decentrex, Omega One and NVO, where the latter two have not been launched as of November 30.
+* non-decentralized exchanges such as [Coinbase](https://www.coinbase.com/) (US), [BTCmarkets](https://btcmarkets.net/) (Australia), while more are below, or ones that only exchange cryptocurrencies like Poloniex;
+* other exchanges like [OmiseGo](https://omisego.network/). "OmiseGO is a public Ethereum-based financial technology for use in mainstream digital wallets, that enables real-time, peer-to-peer value exchange and payment services agnostically across jurisdictions and organizational silos, and across both fiat money and decentralized currencies. Designed to enable financial inclusion and disrupt existing institutions, access will be made available to everyone via the OmiseGO network and digital wallet framework.";
+* exchange platforms like [Binance](https://www.binance.com/aboutUs.html);
+* asset exchanges like [WAX](https://wax.io/).
+* the Brave browser (which the author uses) which uses the Basic Attention Token, which provides a better solution for users, publishers and advertisers;
+* [MaidSafe](https://maidsafe.net/), which has another browser that actually runs on the [Omni](http://www.omnilayer.org/) layer that runs on Bitcoin, not Ethereum. It is also claiming to be: "The World's First Autonomous Data Network". [Currently you have to receive an invite which requires roughly an hour of interaction on their Discourse forum/site.](https://web.archive.org/web/20171230003420/https://invite.maidsafe.net/)
+* [ZeroNet](https://zeronet.io/), another decentralized internet network that runs on Bitcoin cryptography and the [BitTorrent network](http://www.bittorrent.com/). [It on Ubuntu 17.10](http://127.0.0.1:43110/Talk.ZeroNetwork.bit/?Topic:1514631579_13fVMZu2wTNAykEvkYHYfGmTBMSFxz9gFG/It+would+be+good+if+you+could+link+to+a+comment). You can make [your own site](http://127.0.0.1:43110/1zz1z8YPFQizJshGkgHq7GVtBSPCyQM5W/), although [you may have issues with following a tutorial](http://127.0.0.1:43110/Blog.ZeroNetwork.bit/?Post:99:ZeroChat+tutorial#comment_1_13fVMZu2wTNAykEvkYHYfGmTBMSFxz9gFG). Note that this link won't work unless you are running ZeroNet.sh) by clicking the download button on the homepage (then as detailed concisely below the button) extracting it and running (in bash) `./ZeroNet.sh` while `cd`ed to the extracted folder that ZeroNet.sh is located in.
+* storage, e.g. Swarm and a distributed hypermedia protocol, IPFS [website](https://ipfs.io/), [doc](https://github.com/ipfs/ipfs);
+* communication protocols, e.g. Whisper (also see here for code), which allows dapps (you don't need to capitalize this since it is an abbreviation of decentralized applications) to communicate with each other;
+* multi-chain networks/tools like [Polkadot](https://polkadot.io/) and [BTCRelay](http://btcrelay.org/)
+* Ethereum Name Service (names like jamesray.eth map to an address);
+* mesh networking e.g. implemented here and as voted for here on Twitter (which also has other ideas posted in the comments);
+* social networks e.g. Akasha (news here),
+* Status: "A Mobile Ethereum OS: Browse, chat and make payments securely on the decentralized web.";
+* decentralized search engines, e.g. Weipoint (a news post is here);
+* reputation and ratings network e.g. as used by [Etheal](https://etheal.com/), which is described below (CTRL+F);
+* identity (e.g. as provided by uPort, as well as [in-blockchain proposal](https://www.ethnews.com/erc725-a-self-sovereign-identity-standard-for-ethereum and [Shyft](https://www.shyft.network/));
+* decentralized electricity trading and other decentralized energy economic applications, which would allow renewable energy to be more economical and accelerate the transition to a clean, renewable energy and safe climate future.
+
+
+
+Examples of local electricity trading include: Grid+, LO3/Transactive Grid, Power Ledger, Nexergy, Local Volts and Divvi. Grid+ uses Ethereum and they have open source code. Power Ledger has closed source code and runs on the Ethereum Enterprise Alliance, rather than the public Ethereum blockchain. They had a token sale in early October. Both Power Ledger and Grid+ also detail more unique applications in their pipeline, such as renewable energy asset generation (Power Ledger) and Grid+'s in-home computer, an "intelligent agent" that pays for a customers electricity in real-time, using stable tokens, stores cryptocurrency like the hardware wallet functions of Ledger and Trezor; providing Casper proof-of-stake signing, and provide an Ethereum API for IoT ([pp. 26 and 34-36, white paper](https://drive.google.com/file/d/0Bz90riPGRHquNDVXVE81RmppaUk/view)). Transactive Grid uses Ethereum and it has been rolled out in Brooklyn with a microgrid, however LO3 hasn't released any code or details for its Transactive Grid application. The others are still all under development (as of August 2017), and they have been scant on the details of how they would implement their application, at the least not releasing their code. Divvi say on its website that they will use the blockchain. Local Volts and Nexergy do not.
+* electricity tokenization: e.g. SolarCoin, EnergyCoin, although both are altcoins rather than Ethereum tokens;
+* governance of any organisation, e.g. Democracy.Earth; and also governance of DAOs, e.g. Aragon;
+* decentralized search engines like [BitClave](https://www.bitclave.com/en/), [Weipoint](https://www.weipoint.com/) and [Epocum](https://www.stateofthedapps.com/dapps/epocum);
+* wallets like MyEtherWallet or hardware wallets Trezor or Ledger;
+* blockchain explorers like [Etherscan](https://etherscan.io/);
+* a gateway to decentralized services such as [Infura](https://infura.io/);
+* visit dapps in your browser with [Metamask](https://metamask.io/);
+* decentralized media;
+* asset titles (such as land titles). Read more on that here: "Having so far built the software and tested it with a couple dozen land title registrations, Bitfury and the Georgian National Agency of Public Registry have now signed a new memorandum of understanding to expand the service to purchases and sales of land titles, registration of new land titles, demolition of property, mortgages and rentals, as well as notary services". Nottar.io also provides notary services. A similar, more specific application is for academic certificates with [Smart Diploma](https://www.stateofthedapps.com/dapps/smart-diploma);
+* Debit card 💳 transactions 🤝 (done on several exchanges 💱, e.g. Coinjar Swipe (but it accepts BTC only), Coinbase, while others which I've mentioned elsewhere in this article have plans to do this e.g. [OmiseGO](https://www.omise.co/go);
+* co-ownership of real assets e.g. the [Swarm Fund](https://www.swarm.fund/how-swarm-works/index.html)
+* crowdsales, e.g. an Initial Coin Offering (ICO) as compared with an Intial Public Offering (IPO), or for tokens with Ethereum: an Initial Token Offering (ITO). Note that this is not so much a business model in itself, per se, rather it is more of a fundraising method (which has also led to scams, e.g. here);
+* crowd development (but not as part of the blockchain, e.g. here), e.g. for infrastructure and other public assets;
+* think of public companies being remodelled into communities with tokens instead of shares, governance using a platform like Democracy.Earth (which can be tailored to have voting anywhere between one vote one person like direct democracy, or conventionally more hierarchical like a board of directors and token-holders instead of or in addition to—and probably eventually superceding—shareholders);
+* dividend payouts and secure email-based transactions with [Dividend](https://www.dividend.cloud/). For sending ETH via email there is also [You've Got ETH](https://www.stateofthedapps.com/dapps/you-ve-got-eth);
+* prediction 🔮 🦉 markets like GNOSIS, Augur and [WINGS DAO](https://www.stateofthedapps.com/dapps/wings-dao);
+* [Built-in price discovery and a liquidity mechanism for tokens with Bancor](https://www.bancor.network/);
+* labour/recruitment/freelance markets like Chronobank and [Ethlance](https://ethlance.com/);
+* permissioned distributed ledgers like [Hydrachain](http://www.brainbot.com/projects#hydrachain);
+* trust-based models like the [Trustlines Network](http://trustlines.network/)
+* Secure distributed computing, e.g. Golem. Ethereum needs to be faster e.g. with EWASM and parallelizability.
+* accountability, e.g. for non-profits (e.g. "how do I know how badly you need a donation unless I can see your net liabilities, net assets, and balance sheet, and how you plan to use the funds?") and aid (also see here)
+* Self Learning, Autonomous, Decentralized Artificial Intelligence (this could be used for many things such as self-driving cars, robots, or anything else that is owned by a contract; bots; and art);
+* decentralised financial services like [WeTrust](https://www.wetrust.io);
+* futures-like dapps such as [TimeBank](https://www.stateofthedapps.com/dapps/timebank) and [hodlethereum](https://hodlethereum.com/);
+* sharing car refueling stations with [Share&Charge](https://www.stateofthedapps.com/dapps/share-charge);
+* health, e.g. [Etheal](https://etheal.com/), a healthcare service comparison site with a content platform, trust and review / reputation system; an anonymous marketing platform for surveys, ads and communication research where users are paid by pharmaceutical companies; and a platform for building health apps;
+* examples of contracts are [here](https://solidity.readthedocs.io/en/develop/solidity-by-example.html) and [here](https://viper.readthedocs.io/en/latest/viper-by-example.html), e.g. voting, auctions (open or blind), safe remote purchases, micropayment channels, crowdfunding and company stock. Many more can be found on Github, which may be referenced from the whitepaper and the website of a dapp.
+* [insurance](https://www.stateofthedapps.com/tagged/insurance/);
+
+
+Examples that have been conceptualized, but not implemented (at least as far as the creator of this wiki is aware of) include:
+* reducing transaction costs for existing business models (here is a good read about that). However, to tokenize online centric business models, the network model should change from client-server to peer-to-peer, to avoid a conflict of interest. This is more difficult to achieve since a server is a piece of infrastructure, and transferring to a peer-to-peer model would cause it to be a sunk cost. Additionally, it may be difficult to build a replacement dapp for a successful website, because it is hard to get a network of engaged users to change to using something else (inertia). Centralized web apps (not just mobile apps but websites, and use the word to contrast with dapps) include:
+* * Google (although note [Weipoint](https://www.weipoint.com/) as mentioned previously),
+* * social networks like [Facebook](http://www.trustnodes.com/2018/01/04/zuckerberg-studying-cryptocurrency-implementation-facebook), Twitter, (although note [Akasha](https://akasha.world/) above);
+* * online marketplaces e.g. Amazon, eBay and Alibaba (decentralized alternatives include [Soma for products or services](https://soma.co/), [Canya for services](https://canya.io/) also note this simple implementation and subreddit [here](https://www.reddit.com/r/ethmarket/), as well as more specific or niche marketplaces like [Cryptokitties](https://www.cryptokitties.co/), [Hamster](https://hmstr.io/)). For more info see [here](https://www.forbes.com/sites/rogeraitken/2017/10/24/whats-the-future-of-online-marketplaces-blockchains-technology-impact/#3f6bde2a63a0)
+* making economically viable other business models that have seen low uptake or aren't economically viable without blockchain tech. So-called sharing economy business models (which are more aptly called tasker or rentier capitalism models) like Airbnb, Uber, AirTasker, Fiverr, Upwork, TaskRabbit, and Menulog are particularly ripe for transformation (the term transformation is preferrable to disruption, since it should be a net positive change, while negative effects are manageable or solvable), since no trusted third party for a transaction is needed, such as banks 🏦, credit card 💳 companies or PayPal, just a smart contract; and
+* mortgage brokers;
+* More examples are here—scroll to the examples—they have bold headings and are about two thirds of the way down, or search for "Dank meme trading". Note that the Basic Attention Token has already been mentioned, and the creator of this wiki is skeptical that AI will create truly beautiful art, since no AI can have any feeling. CryptoKitties is an example of meme trading and has taken up [a lot of the transactions on the Ethereum network](https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d).
+* curation markets, which is part of what [Steemit](https://steemit.com/@jamesray/feed) does (which runs on the STEEM network), and which curators, social networks and wiki authors would all benefit from. More info is [here](https://medium.com/@simondlr/introducing-curation-markets-trade-popularity-of-memes-information-with-code-70bf6fed9881);
+* [P2P Decentralised Autonomous Transportation Network](http://www.flyingcarpet.network/)
+* [Waste collection management](https://twitter.com/JamesCRay01/status/936992945173020672). Other ideas include plus generally thinking of existing business models running on the blockchain, like real estate developers and investment trusts (with which blockchains could be used e.g. for crowdfunding).
+* legally enforceable wills running on the blockchain, as well as being able to appoint an executor in a legally enforceable way on the blockchain.
+
+More examples are e.g. [here in a blog post](https://medium.com/@Ethereum_AI/ethereum-introduction-what-exactly-is-it-why-care-how-to-invest-9a627ab04408) and [here on Wikipedia](https://github.com/Ethereum-community/Ethereum-introduction/wiki/Decentralised-apps-(dapps))
diff --git a/Ethereum-introduction.md b/Ethereum-introduction.md
new file mode 100644
index 000000000..8d6a862fb
--- /dev/null
+++ b/Ethereum-introduction.md
@@ -0,0 +1,277 @@
+![Ethereum Homestead gold ingots](https://sustergy.files.wordpress.com/2017/05/ethereum-homestead-background-17.jpg?w=1000)
+
+Note that due to the lightning-fast pace of development in the Ethereum space with core development and dapps continually being launched, certain parts of this article may be outdated. You can help by keeping it up to date!
+
+
+
+Table of Contents
+=================
+
+ * [Table of Contents](#table-of-contents)
+ * [About Ethereum](#about-ethereum)
+ * [Uses](#uses)
+ * [List of dapps](#list-of-dapps)
+ * [Market analysis](#market-analysis)
+ * [Issues](#issues)
+ * [Scalability](#scalability)
+ * [Proof of work / proof of stake / other proving methods](#proof-of-work--proof-of-stake--other-proving-methods)
+ * [Public permissionless blockchains vs. private permissioned blockchains](#public-permissionless-blockchains-vs-private-permissioned-blockchains)
+ * [No technological artefacts can be a panacea](#no-technological-artefacts-can-be-a-panacea)
+ * [How do you buy and sell Ether, the currency of Ethereum?](#how-do-you-buy-and-sell-ether-the-currency-of-ethereum)
+ * [Table of exchanges](#table-of-exchanges)
+ * [More details about what I've tried (not very necessary to know)](#more-details-about-what-ive-tried-not-very-necessary-to-know)
+ * [Development](#development)
+ * [Concluding remarks](#concluding-remarks)
+ * [Further reading](#further-reading)
+
+# About Ethereum
+Ethereum is a [decentralized](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) blockchain platform for "building unstoppable applications", while Ether is the cryptocurrency used on this platform. Ethereum has been described in several ways, such as (the first and third resources are more general introductions, while the second is a technical introduction, although all are outdated.
+Another introduction is available [here](https://bitsonblocks.net/2016/10/02/a-gentle-introduction-to-ethereum/), but again, it is outdated. Despite being outdated, Ethereum has maintained backwards compatibility thus far up till January 1 2018, so the info is still relevant.):
+
+Let's briefly breakdown what those terms mean.
+
+**Decentralized** technology uses [peer-to-peer computer networks](https://en.wikipedia.org/wiki/Peer-to-peer) (there's a picture below), and are not subject to the whims of a central authority such as a government or server administrator (like Google or Facebook) which can help to achieve better decision making for public good. **Blockchain** means that the currency is built and secured by adding and verifying blocks of transactions to blocks made previously, thus forming a "chain". Blocks added to the chain become harder and harder to crack over time, as they are verified by more nodes in the blockchain peer-to-peer network. Blockchain technology has been referred to as the **Web 3.0**. The world wide web (retroactively the Web 1.0) consisted of websites publishing content and users passively reading/viewing it. The Web 2.0 used user interaction, such as forums (with upvoting and commenting), reaction buttons (e.g. the Facebook reactions: likes 👍, love ❤️ , laughter 😆, wow 😲, sad 😢, angry 😠), sharing (republishing), however these interactions have no direct economic effect on the host website; users do not share in the value generated from the website. The Web 3.0 is starting to be defined as the movement away from centralisation of computation power in servers which provide services to clients (known as the client-server network model) to peer-to-peer networks and blockchains, and from centralisation of authority and sovereignty from nation-states and corporations to the networked individual.
+
+![server-based-network](https://sustergy.files.wordpress.com/2017/05/200px-server-based-network-svg.png)
+![p2p-network](https://sustergy.files.wordpress.com/2017/05/200px-p2p-network-svg.png)
+
+**Cryptocurrency** refers to a a digital currency that secures transactions with cryptographic code, which is solved through hardware computational power (known as mining or proof of work) or other less energy-intensive ways such as proof-of-stake. (There are more details on that below.)
+
+Zero knowledge proofs like ZK SNARKs can also be used to make cryptocurrency transactions more private 🕵️ or secret 🤐 (which is different to being secure 🔒), thus negating the need to run applications on a permissioned private network like the [Ethereum Enterprise Alliance](https://entethalliance.org/). Ethereum uses [precompiled contracts for addition and scalar multiplication on the elliptic curve alt_bn128](https://github.com/ethereum/EIPs/pull/213), for [pairing checks](https://github.com/ethereum/EIPs/pull/212), which permit [zk-SNARKs](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/), also see [here](https://medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6), [as implemented](https://github.com/ethereum/EIPs#finalized-eips-standards-that-have-been-adopted) in the [Byzantium hard fork](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/). There is also the Zerocoin protocol which is demonstrated by Zcoin (which plans to integrate Ethereum).
+
+# Uses
+The platform part of Ethereum makes it much more useful than just a cryptocurrency. With it, you can create any decentralized application (known as a dapp, which works over a peer-to- peer network rather than a centralized client-server network 💻🕸️), so the functionality is only limited by what programs could potentially do and not do, and by consequence, what programmers develop, 👨💻 but it can theoretically be used for any economic or governance activity.
+
+## List of dapps
+
+For a list of dapps, visit [here](https://github.com/Ethereum-community/Ethereum-introduction/wiki/Decentralised-apps-(dapps)).
+
+
+***
+
+
+However, there are several issues that will need to be resolved to help Ethereum be used to its full potential, which are described below.
+
+## Market analysis
+As of the 1st of December 2017, [the market capitalisation of Ethereum is $32.6 billion USD](https://cryptolization.com/ethereum) (refer to the link for the latest figure), and [it has been in circulation possibly since 30 July 2015](https://github.com/jamesray1/homestead-guide/blob/32d2fa4ccfa3d45f8493a673a08247450d55fea0/source/introduction/the-homestead-release.rst#milestones-of-the-ethereum-development-roadmap), with the [first transaction using Ethereum on 8 August 2015](https://www.etherchain.org/account/0x5abfec25f74cd88437631a7731906932776356f9). Compare this with the next largest and the current largest cryptocurrency, [Bitcoin, with a market cap of $41.0 b. US](https://cryptolization.com/ethereum), where [it has been in circulation since January 2009](http://www.newyorker.com/reporting/2011/10/10/111010fa_fact_davis). Technically, Ethereum has had a much faster growth rate, while more importantly for long term investment (I do not encourage speculation as that only causes volatility as has been seen) the fundamentals are much better than Bitcoin. While it is true that Bitcoin has more of a market and currency, e.g. in terms of more entities that will accept it as a form of payment, the creator of this wiki expects that time will change that (indeed the market cap of Ethereum recently surpassed half that of Bitcoin, around May 2017). Also, [the number of transactions of Ethereum surpassed that of several cryptocurrencies combined on 22 Nov 2017](https://www.reddit.com/r/ethereum/comments/7est9k/ethereum_is_now_processing_more_transactions_a/). However, note [this retort](https://www.reddit.com/r/ethereum/comments/7est9k/ethereum_is_now_processing_more_transactions_a/dq7a31u/).
+
+# Issues
+There also several issues with Ethereum, such as not being scalable enough, not being full decentralized, energy consumption with mining, if quantum computing advances it would be insecure (but this is being fixed). With its [large storage database](https://www.reddit.com/r/ethtrader/comments/7axn5g/ethereum_blockchain_sizewe_have_a_problem/) (I have to provide a [Reddit link](https://www.reddit.com/r/ethtrader/comments/7axn5g/ethereum_blockchain_sizewe_have_a_problem/) as a source as the [original link](https://etherscan.io/chart/chaindatasizefull) doesn't have the graph any more, while [Wayback doesn't render it either](https://web.archive.org/web/20171211015955/https://etherscan.io/chart/chaindatasizefull).), mining and architecture requiring to run a full node to mine or validate transactions, it is not decentralized enough. More (outdated but still applicable) info on that is e.g. [here](https://ethereum.stackexchange.com/questions/143/what-are-the-ethereum-disk-space-needs#826), as well as [here](https://github.com/ethereum/go-ethereum#full-node-on-the-main-ethereum-network).
+
+## Scalability
+
+Ethereum will need to scale to process far more transactions per second (to become a "world computer") than Visa, Mastercard and American Express combined (which process on the order of [tens of thousands of transactions per second](https://usa.visa.com/run-your-business/small-business-tools/retail.html) [in the link, CTRL+F 24,000]), while Ethereum 1.0, the current version as of December 30 2017, processed [a record of 1103523 transactions on Friday, December 22, 2017, or 12.77 transactions per second](https://web.archive.org/web/20171230005127/https://etherscan.io/chart/tx).
+
+Note that [Ripple claims that it's Consensus Ledger can process a thousand transactions per second](https://ripple.com/dev-blog/ripple-consensus-ledger-can-sustain-1000-transactions-per-second/), while it could process more with payment channels. "Although payment channels achieve practically infinite scalability by decoupling payment from settlement, they do so without incurring the risk typically associated with delayed settlement." Further note that Ripple achieves this by trading off on decentralization, through a [distributed network of validators or distributed servers](https://ripple.com/build/xrp-ledger-consensus-process/), while it has been described as a [federation protocol](https://wiki.ripple.com/Federation_protocol).
+
+There are even more scalable blockchains that use a delegated proof of stake (DPOS) consensus protocol, such as Bitshares and Steem. [Bitshares can apparently process 100,000 TPS](https://bitshares.org/technology/industrial-performance-and-scalability/).
+
+More generally, in order to have faster payments or higher transaction throughput, you need to reduce the number of validators (miners are a kind of validator that perform energy intensive computational work, finding a random nonce or sequence number in a large set of numbers) in the consensus protocol, or reduce the other (i.e. for faster payments you can reduce transaction throughput or reduce validators, while for higher transaction throughput you can reduce validators or have payments take longer to finalize). This is [a trade-off triangle](https://twitter.com/VladZamfir/status/932319930363494400). You could potentially have one blockchain with [heterogeneous sharding](https://twitter.com/VladZamfir/status/932320997021171712), with different shards with a different degree of balance between these properties. Ethereum is working on [sharding](https://github.com/ethereum/sharding/blob/develop/docs/doc.md), which includes using [stateless clients](https://github.com/ethereum/sharding/blob/develop/docs/doc.md#stateless-clients) (while more on that is [here](https://ethresear.ch/t/the-stateless-client-concept/172/14)).
+
+If you increase scalability in an instant via some blockchain or shard, while keeping latency constant (or reducing it) you need to reduce decentralization, which reduces the number of points of attack needed to compromise the whole network, i.e. reducing decentralization reduces security.
+
+## Proof of work / proof of stake / other proving methods
+The mining process to crack cryptographic code (specifically to discover the nonce, a very large number, for each block by trial and error) requires a lot of computation power. Nevertheless, I'm guessing that the computation power should be less when you consider the energy consumption of incumbent financial systems. (Think of extracting and processing resources to make coins and notes, minting and printing, energy consumption of banks and tiers of related energy consumption in the life cycle of fiat money.) Still, developers of some cryptocurrencies such as Ethereum are transitioning to (as is the case for Ethereum), or already using, a different way of maintaining and creating blocks, known as proof of stake. For more information, you can see this Proof of Stake Wikipedia article here (although note the header warning about the article potentially not being verifiable or neutral due to relying heavily on sources too closely associated to the subject). The tricky part is in getting proof methods to work better than proof of work, as outlined here in the criticism section of the PoS Wiki.
+
+## No technological artefacts can be a panacea
+For the continual improvement of humanity, there needs to be balance in life between things that benefit us materially and things that benefit us on higher levels, particularly spiritually. There is a risk that technology can make some people better off, and others worse off. So there needs to be consideration for how technology can be implemented to maximise [utility](https://en.wikipedia.org/wiki/Utilitarianism). One consideration of that is [here](https://medium.com/@RhysLindmark/co-evolving-the-phase-shift-to-cryptocapitalism-by-founding-the-ethereum-commons-co-op-f4771e5f0c83).
+
+## There's a risk of attacks from quantum computing, if it becomes performant enough
+
+
+
+# How do you buy and sell Ether, the currency of Ethereum?
+
+Summary: compare deals with buying and sell through different exchanges such as P2P ones with an arbitrator like [**LocalEthereum**](https://localethereum.com), or with centralized exchanges (which vary with your local jurisdiction, e.g. in Australia there is [BTCmarkets](https://btcmarkets.net/fees) and in the US plus worldwide there is [Coinbase](https://www.coinbase.com), which also allows you to spend cryptocurrencies e.g. with a debit card. For more see the table below, [here](https://github.com/jamesray1/Ethereum-introduction/wiki/Ethereum-introduction#table-of-exchanges)).
+
+The simplest way may be to use [**LocalEthereum**](https://localethereum.com), where you don't need to go through KYC processes. The creator of this wiki has found that "I can **sell Ether for a better deal** than I can find with an exchange, without any trading or withdrawal fees, apart from those associated with different payment methods". I like that it has lower fees compared to exchanges. I also read about how the localethereum platform works, and it seems pretty secure. The maker fee (which is what the party of the trade that puts up the offer) is 0.25% while the taker fee is 0.75%. [BTCmarkets](https://btcmarkets.net/fees) has higher fees compared to the maker fee, and higher than the taker fee if the amount is below $3000. Additionally, there have been hacks with exchanges like Mt. Gox and Bithumb. That's harder to achieve with localethereum since they can't get access to your funds, they can only settle disputes (if they arise) by sending the funds in the escrow to the buyer or the seller. However, I have been able to find a **better deal**, at least at certain times, with buying Ether if I buy through [**BTCmarkets**](https://btcmarkets.net/fees), although that would be slower via BPAY with bank transfer than paying via cash deposit via an ATM or bank."
+
+More information about Ether is [here](http://ethdocs.org/en/latest/ether.html).
+
+Disclaimer from the creator of this wiki: I have put most of my funds in Ether, the currency of Ethereum. Does that shock you? 😲 Yep, it's risky, but I've done due diligence 🔍 with fundamental analysis, and a little bit of sentiment and technical analysis, and I think that the market cap of Ether will continue to grow 🌱🌳 and increase, albeit with some volatility 📈. I consider it a digital currency that is in a pioneering, rapid growth stage of development (fuelled by a lot of genuine uptake of the currency as well as speculation about its future value, if not its current value), not just an asset. I hope my post will outline why investing in Ether is a good idea (and not just investing a small percentage of your cash, unless you are tied up with a mortgage 🏠 or have other monetary or non-monetary ties or circumstances that limit your investable capital). However, if you don't want to risk the downside volatility, e.g. if you don't have any risk capital, then you may want to consider buying a stable coin like [Dai Coin](https://makerdao.com/) instead.
+
+Based on my research below, if you're in Australia 🇦🇺 (otherwise skip to the next paragraph), I recommend creating an account with BTCmarkets.net, verifying your ID, and using BPAY or PoliPayments to deposit AUD. Note that the rest of the following info in this paragraph is outdated since MEBank used to not support BPAY publicly, but now they do. If your bank doesn't support PoliPayments and you want to use that instead of BPAY, although I can't think of any good reason why you'd want to use PoliPayments over BPAY, then you can set up a bank account with BOQ (or any other bank that supports POLi Payments, doesn't invest in fossil fuels and has no fees for transaction and savings accounts [note that Bendigo doesn't have an Ultimate Everyday account any more]. You can probably ignore the interest rate since it is so marginal compared to other bank's rates and the gains that you are likely to make by holding funds with Ether instead. However, when I did research for interest rates I found that ME Bank savings rates were second only to UBank, which invests in fossil fuels indirectly as it is owned by NAB.
+
+## Table of exchanges
+
+You can use [localethereum](https://localethereum.com) anywhere, but in my experience you may not get as good a deal as buying it on a local exchange.
+
+If you're not in Australia 🇦🇺, then here's a comparison of exchange rates 💱 for fiat to crypto- and crypto- to crypto- currencies (note that there is still a focus on Australia, but you can click on the links to get more information of the fees):
+
+
+
+ Exchange link (may go to a fees page) |
+Fiat to crypto exchange fee buy/sell spread |
+
+
+BTCmarkets |
+AUD is the only fiat currency. 0.85% trading fee. Funds available to deposit, withdraw, buy and sell are: AUD, ETH, ETC, BTC and LTC. To deposit AUD, you need to verify your account and then use POLi Payments (available banks are here. My bank is ME Bank, which doesn't support POLi Payments. I applied with BOQ because they do support POLi Payments, they don't invest in fossil fuels [like ME Bank] and they have transaction and savings accounts with no fees [like ME Bank].) |
+
+
+GDAX |
+0.25/.3% maker fee low volume, 0% taker fee BTC for USD/EUR/GBP, ETH/LTC for USD/BTC/EUR |
+
+
+Coinjar, has a debit card with accounts for Ether, BTC, XRP and LTC. |
+1.00% AUD/BTC (and only AUD/BTC) |
+
+
+Coinbase |
+In Aus: 3.99% credit/debit card only (no other transaction method accepted). Other fiat and crypto currencies are available. |
+
+
+CEX |
+7% BTC/ETH for USD/EUR/GBP/RUB |
+
+
+ice3x |
+1% ZAR/BTC |
+
+
+Luno |
+ZAR/BTC fee not easy to find |
+
+
+okcoin |
+CNY/USD for BTC/LTC, fee not easy to find |
+
+
+Maicoin |
+TN/BTC Fee not shown, claimed none |
+
+
+
+
+
+
+ |
+Crypto to crypto exchange fee / buy/sell spread |
+
+
+Poloniex |
+0.15/.25% BTC/ETH “maker-taker” (presumably the same as buy-sell) |
+
+
+gdax.com/fees/ |
+0.25/.3% maker fee low volume, 0% taker fee ETH/LTC for BTC |
+
+
+Exodus |
+~0.4720–.528% BTC/ETH variable. Desktop app. Sometimes currencies are not available for exchange! |
+
+
+NVO |
+Decentralised. ICO 05/27/17 02:00 UTC to 06/27/17 02:00 UTC |
+
+
+
+
+Exchanges are listed in [this article](https://medium.com/@Ethereum_AI/ethereum-introduction-what-exactly-is-it-why-care-how-to-invest-9a627ab04408), which I've copied and pasted (repetition is OK):
+
+**America, US dollars**
+
+https://www.coinbase.com
+
+https://gemini.com/
+
+**Australian Dollar**
+
+https://btcmarkets.net/
+
+**Canadian Dollar**
+
+https://www.quadrigacx.com
+
+**Chinese Yuan**
+
+https://www.huobi.com
+
+https://www.okcoin.com
+
+https://yunbi.com
+
+**European Euros**
+
+https://www.kraken.com
+
+**India**
+
+https://duckduckgo.com/?q=Ethereum+exchange+india&t=brave&ia=web
+
+**Mexican Peso**
+
+https://bitso.com
+
+**South Korean Won**
+
+https://coinone.co.kr/
+
+https://www.bithumb.com/
+
+## More details about what I've tried (not very necessary to know)
+
+I bought BTC in a different way. Step 2 worked for me. I will try step 1 next time I buy more BTC.
+
+I created an account on btcmarkets.net, verified my email address, tried to login, but couldn't. I tried to disable two factor authentication, but it asked for my mobile number, which I didn't enter when I created my account. I tried to reset my password and log in again, but that didn't work. I entered my email address correctly. I sent a message to support to ask for help. I figured out that my password was too long, and have notified btcmarkets.net. After creating a password of 23 characters, I was able to log in. I created another password of 56 characters using Chinese characters, emojis and ASCII characters, and was able to log in. (Incidentally, it is a hassle to do this, so a decentralised, private password generator would be wonderful.)
+
+The following steps are what I have tried so far, in detail.
+
+ - Convert AUD to Bitcoin (BTC) via an exchange like Coinjar. I left a review of Coinjar here. Fee: 1%. While this step is tailored for Australia, it can be adapted to any country that has a bitcoin exchange.
+ - I created a Poloniex account, sent funds from got the Bitcoin deposit address, then sent my BitGo funds to that address. Once the transaction completed, I then used Poloniex Exchange to convert to Eth, with a maker-taker fee of: 0.15/0.25%.
+
+Before step 2 above, I tried the following:
+
+ - Create an Ethereum Wallet 👛 like MyEtherWallet. Unfortunately Mist, a program being developed by Ethereum that has a browser and a wallet is still a pre-release, so it may not be very suitable for end users just yet.
+ - Convert BTC to Ether (ETH) via a cryptocurrency exchange like Shapeshift. Use a precise transaction, make sure the amount is within the min. and max. deposit. Copy and paste the bitcoin address in Coinjar by signing in (if you aren't already) and going to Accounts > Everyday Bitcoin > View address. Put this address as the refundable address. Copy and paste the address from MyEtherWallet. Put this as the destination address. Tick the box to save the destination address for future payments. However, this didn't work.
+
+I also sent an email to Coinjar to suggest that they develop functionality for purchasing Ether directly using AUD. You can do the same with the exchange of your choice.
+
+I have been able to deposit funds into Coinjar (needing to be less than the transaction limits) but have not been able to get Eth funds as of yet. I have also tried to create an account on BitGo, send coins from Coinjar to BitGo, and use Shapeshift with that account and still with MyEtherWallet, however that didn't work.
+
+I will not discuss trading (which I mean buying with the intention to sell most or all of the purchase at any future time particularly in the short term in order to realize a profit) as I am not very interested in trying to guess the short-term direction of markets (although I admit that trading helps to provide liquidity).
+
+# Development
+Are you interested in learning to develop smart contracts with Ethereum, and maybe develop a really useful dapp and become a millionaire?
+
+Check out the [Ethereum website](https://www.ethereum.org/)! Then, you can [read the Solidity docs](https://solidity.readthedocs.io/en/develop/).
+
+If you want to help contribute to core development, there is also:
+* the [Yellow Paper](https://github.com/ethereum/yellowpaper/pull/376) (make sure that you read the [EIPs](https://github.com/ethereum/EIPs) too since as of Dec 8 it is not up-to-date with the last commit on August 8, while the Constantinople EIPs were implemented in October). Instead I recommend ;
+* Learn Python first, e.g. with [Learn Python the Hard Way](https://www.learnpythonthehardway.org/) (I learnt using this, it's pretty good), [Codecademy](https://www.codecademy.com/learn/learn-python), [Pydocs](https://docs.python.org/3/), [Coursera](https://www.coursera.org/courses?languages=en&query=learn+python), etc. Knowing Python is useful for [pyethereum](https://github.com/ethereum/pyethereum), which is being used as an Ethereum client, to implement Serenity and sharding, as well as [vyper](https://github.com/ethereum/Vyper), an experimental, secure smart contract programming language;
+* [LLL](https://media.consensys.net/an-introduction-to-lll-for-ethereum-smart-contract-development-e26e38ea6c23) (also see [here](https://github.com/ethereum/solidity/tree/develop/liblll) and [here](https://github.com/ethereum/solidity/tree/develop/lllc));
+* [JULIA](https://solidity.readthedocs.io/en/develop/julia.html), an intermediate language for different Ethereum virtual machines;
+* clients such as [Geth](https://github.com/ethereum/go-ethereum), [Parity](https://github.com/paritytech/parity) which is under [Parity Tech](https://github.com/paritytech) a separate organization to the Ethereum Foundation, [C++ Ethereum](https://github.com/ethereum/cpp-ethereum), [Pyethereum](https://github.com/ethereum/pyethereum);
+* [Serenity](https://github.com/ethereum/pyethereum/tree/serenity);
+* [sharding](https://github.com/ethereum/sharding/blob/develop/docs/doc.md);
+* [research](https://github.com/ethereum/research) such as stateless clients, sharding, scalability improvements, Casper and more;
+* [EWasM](https://github.com/ewasm);
+* if you're interested in testing, see the documentation [here](https://ethereum-tests.readthedocs.io/en/latest/), as well as [the Github tests repo](https://github.com/ethereum/tests), [a Gist here (it is outdated)](https://gist.github.com/Souptacular/fd197b1fac7c6d2660b0bef27a33ed40#lll-and-evm-stack-resources), and [Gitter here](https://gitter.im/ethereum/tests) ; and
+* [many other repositories](https://github.com/ethereum).
+
+# Concluding remarks
+
+Ether certainly seems like a good investment, and a good alternative to using fiat currencies, as well as an enabler for otherwise uneconomical business, due to lower transaction costs. It's more decentralized nature than central banks has advantages for trade from a local to global scale. With governance applications and systems on top Ethereum, it is even possible to do away with the hindering borders surmounted by nation-states. By doing away with these borders, society can be more open, inclusive and equitable.
+
+However, all technology can only help mankind and the world to a certain extent. What is more important is for each and every person to become increasingly blissful. Each person must go within and enter a stillness of body and mind, which is when that bliss starts to manifest, and practice balanced living. Practicing certain techniques such as those given by Self-Realization Fellowship, such as daily Kriya yoga meditation, developing unconditional love that starts in the heart, keeping the mind at the point between the eyebrows, and moral living, helps each person manifest that bliss within, and from there, express that bliss outwardly at all times.
+
+# Further reading
+
+* [Another introduction](https://github.com/jamesray1/Ethereum-introduction/wiki/Ethereum-introduction)
+* [MyEtherWallet knowledge base (good for issues with wallets)](https://myetherwallet.github.io/knowledge-base/)
+* [An introduction (Frontier first release, outdated)](https://ethereum.gitbooks.io/frontier-guide/content/ethereum.html)
+* [Here's another introduction, made in November 2017](https://medium.com/@Ethereum_AI/ethereum-introduction-what-exactly-is-it-why-care-how-to-invest-9a627ab04408)
+* [Ethereum community on Gitter](https://gitter.im/ethereum)
+* [Ethereum research forum](https://ethresear.ch/)
+* [Correct by construction Casper prototype](https://ethresear.ch/t/the-correct-by-construction-casper-paper-prototype-published-at-devcon-tear-it-apart/196)
+* [Casper the Friendly Finality Gadget](https://ethresear.ch/t/latest-casper-basics-tear-it-apart/151/57)
+* [The stateless client concept](https://ethresear.ch/t/the-stateless-client-concept/172)
+* [Ethereum 2 and alternative PoS implementations](https://ethresear.ch/t/ethereum-2-and-alternative-pos-implementations/190/7)
+* [Ethereum wiki](https://en.wikipedia.org/wiki/Ethereum)
+* [Ethereum and the hodlers that love them](https://www.reddit.com/r/ethtrader/comments/6jyn9y/ethereum_the_hodlors_that_love_them/)
+
+
+This article was originally created here in May 2017, and has been regularly updated since then: https://sustergy.wordpress.com/2017/05/18/why-buy-ether-and-how/. Feel free to send a donation to the initial author at jamesray.eth, or make edits to it yourself, or fork it!
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..40d9af62e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,5 @@
+The license for this repository is CC BY-SA 4.0.
+
+A human-readable summary (and not a substitute) of the license is [here](https://creativecommons.org/licenses/by-sa/4.0/).
+
+The license is [here](https://creativecommons.org/licenses/by-sa/4.0/legalcode).
From 9907eb990c9ca7d2c79a9607545d1c3bad422fc5 Mon Sep 17 00:00:00 2001
From: jamesray1 <16969914+jamesray1@users.noreply.github.com>
Date: Sat, 7 Apr 2018 14:05:23 +1000
Subject: [PATCH 02/22] Reorganizing all files into folders.
---
LICENSE | 5 --
Licensing.md => pages/Licensing.md | 0
.../Middleware-and-Dapp-Project-Ideas.md | 0
.../Open-job-positions-&-Schemes.md | 0
pages/Readme.md | 14 ++++
_Sidebar.md => pages/_Sidebar.md | 0
.../Fortnight-In-Ethereum-Template.md | 0
.../Template:-This-Week-in-Ethereum-w-YY.md | 0
.../This Week In Ethereum 47.2014.md | 0
.../blog-and-notes/Todo-before-alpha.md | 0
.../blog-and-notes/stubs/Which-Client?.md | 0
.../Contract-Metadata-Docs-(NatSpec,-ABI).md | 0
.../Dapp-Developer-Resources.md | 4 +-
.../dapp-development/Dapp-using-Meteor.md | 0
.../dapp-development/Ethereum-Contract-ABI.md | 0
.../Ethereum-Development-Tutorial.md | 0
.../First-steps-with-ethereum-JSON-RPC.md | 0
.../dapp-development/JSON-RPC.md | 8 +-
.../dapp-development/JavaScript-API.md | 33 +++++++-
.../Javascript-Development-Deficiencies.md | 0
.../dapp-development/Mix-Features.md | 0
.../dapp-development/Mix:-The-DApp-IDE.md | 0
.../dapp-development/RPC-Testing.md | 0
.../Standardized_Contract_APIs.md | 17 ++--
.../Useful-\303\220app-Patterns.md" | 0
.../serpent/Serpent-1.0-(old).md | 0
.../dapp-development/serpent/Serpent.md | 0
.../dapp-development/serpent/Serpent_3.0.md | 0
.../solidity/Solidity,-Docs-and-ABI.md | 0
.../solidity/Solidity-Changelog.md | 0
.../solidity/Solidity-Features.md | 0
.../solidity/Solidity-Tutorial.md | 0
.../solidity/Solidity-standard-library.md | 0
.../dapp-development/solidity/Solidity.md | 0
...Tags-for-Solidity-in-code-documentation.md | 0
.../The-Solidity-Programming-Language.md | 0
.../[english]-design-rationale.md | 4 +-
.../Node-discovery-protocol.md | 0
.../Web3-Secret-Storage-Definition.md | 0
.../dev-technologies/enode-url-format.md | 0
.../dev-technologies/libp2p-Whitepaper.md | 0
.../dev-technologies/web.js-0.9.md | 2 +-
.../\303\220\316\236Vp2p-Wire-Protocol.md" | 0
.../eip/Geth-Dapp-loading-proposal.md | 0
...ON-RPC-Error-Codes-Improvement-Proposal.md | 0
.../eip/Mix-improvement-proposal.md | 0
.../eip/Proposal:-BlockHashesFromNumbers.md | 0
...-Extend-GetBlockHashes-with-target-hash.md | 0
.../eip/Proposal:-NewBlockHashes.md | 0
.../eip/Proposal:-Reversion-Notification.md | 0
.../eip/Proposal:-Transaction-Proxy-Hooks.md | 0
.../newBlockFilter-Improvement-Proposal.md | 0
.../sendTransaction-return-value-proposal.md | 0
.../Dagger-Hashimoto.md | 8 +-
.../ethash-dagger-hashimoto/Dagger.md | 0
.../ethash-dagger-hashimoto/Ethash-C-API.md | 0
.../Ethash-DAG-Disk-Storage-Format.md | 0
.../Ethash-Design-Rationale.md | 0
.../ethash-dagger-hashimoto/Ethash.md | 0
.../Ethash_revision_11.md | 0
.../Bad-Block-Reporting.md | 0
.../Bad-Chain-Canary.md | 0
.../Block-Protocol-2.0.md | 4 +-
...ockchain-import-and-export-instructions.md | 0
.../Distributed-Preimage-Archive.md | 0
.../EVM-Subtleties.md | 0
.../Ethereum-Natural-Specification-Format.md | 2 +-
.../Ethereum-Wire-Protocol.md | 2 +-
.../Light-client-protocol.md | 0
.../Morden.md | 0
.../[english]-patricia-tree.md | 0
.../[english]-rlp.md | 0
.../research/CLL.md | 0
.../research/Chain-Fibers-Redux.md | 0
.../research/Generalized_Merkle_DHT.md | 0
.../research/HPOC_2015.md | 0
.../research/Parallel-Block-Downloads.md | 0
.../research/Problems.md | 0
.../research/Security-Categorization.md | 0
.../research/Security-Issue-Process.md | 0
.../research/Serenity_Wishlist.md | 0
pages/ethereum-toc/[spanish]-ethereum-toc.md | 24 ------
.../Adaptive-Message-IDs.md | 0
.../Adaptive-Peer-Time.md | 2 +-
.../infrastructure-networking/Brain-Wallet.md | 0
.../Clearinghouse.md | 0
.../Default-Extra-Data-Standard.md | 0
.../Deterministic_Wallet_Spec.md | 0
.../EVM-JIT-Binary-Interface.md | 0
...ereum-Raspberry-Pi-e\317\200-Programme.md" | 0
.../Exchange-Integration.md | 0
...-Inter-exchange-Client-Address-Protocol.md | 0
.../infrastructure-networking/IPv6.md | 0
.../Kademlia-Peer-Selection.md | 0
.../infrastructure-networking/Layers.md | 0
.../infrastructure-networking/Mining.md | 2 +-
.../NatSpec-Determination.md | 0
.../Natspec-Example.md | 0
.../Network-Status.md | 0
.../NewBlock-Message.md | 0
.../Raspberry-Pi-instructions.md | 0
.../Registrar-ABI.md | 0
.../URL-Hint-Protocol.md | 0
.../Decentralized-apps-(dapps).md | 0
.../introduction/Ethereum-introduction.md | 0
FAQ.md => pages/introduction/FAQ.md | 0
.../introduction/Gitter-Channels.md | 0
Glossary.md => pages/introduction/Glossary.md | 4 +-
Home.md => pages/introduction/Home.md | 0
.../introduction/What-is-Ethereum.md | 14 ++--
.../other-languages/[German]-Clearinghaus.md | 0
...l-proprio-ambiente-di-sviluppo-Ethereum.md | 0
...-Introduzione-allo-sviluppo-su-Ethereum.md | 0
.../other-languages/[Italian]-Libro-Bianco.md | 0
...panese]-Cryptocurrency-Current-Problems.md | 0
...Japanese]-Ethereum-Development-Tutorial.md | 79 ++++++++-----------
.../[Japanese]-Ethereum-TOC.md | 0
.../other-languages/[Japanese]-HPOC_2015.md | 0
.../[Japanese]-Javascript-API.md | 0
.../other-languages/[Japanese]-License.md | 0
.../[Japanese]-Solidity-Tutorial.md | 0
...71\343\203\221\343\203\274\357\274\211.md" | 0
.../[Japenese]-Ethereum-TOC.md | 0
.../other-languages/[Persian]-Ethereum-TOC.md | 0
.../[Romanian]-Block-Protocol-2.0.md | 0
.../other-languages/[Romanian]-CLL.md | 0
.../other-languages/[Romanian]-Cuprins.md | 0
.../other-languages/[Romanian]-Dagger.md | 0
.../other-languages/[Romanian]-Layers.md | 0
...omanian]-Limbajul-de-programare-Serpent.md | 0
.../[Romanian]-Wire-Protocol.md | 0
.../[chinese]-ethereum-toc.md | 0
.../{rlp => other-languages}/[chinese]-rlp.md | 0
.../[chinese]-white-paper.md | 0
.../[french]-ethereum-toc.md | 0
.../[german]-ethereum-toc.md | 0
.../{rlp => other-languages}/[german]-rlp.md | 0
.../[german]-white-paper.md | 0
.../[italian]-ethereum-toc.md | 0
.../[japanese]-design-rationale.md | 0
.../[japanese]-patricia-tree.md | 0
.../[japanese]-rlp.md | 0
.../[japanese]-white-paper.md | 0
.../[korean]-white-paper.md | 0
.../[persian]-white-paper.md | 0
.../[romanian]-patricia-tree.md | 0
.../[romanian]-rlp.md | 0
.../[romanian]-white-paper.md | 0
.../other-languages/[spanish]-ethereum-toc.md | 24 ++++++
...6\207]-Serpent\346\214\207\345\215\227.md" | 0
...45\235\212Wiki\347\233\256\345\275\225.md" | 0
...00\345\217\221\350\256\241\345\210\222.md" | 4 +-
...12\346\234\257\350\257\255\350\241\250.md" | 0
...12\347\231\275\347\232\256\344\271\246.md" | 4 +-
...346\230\216\346\251\237\345\210\266FAQ.md" | 0
...21\347\273\234\347\212\266\346\200\201.md" | 0
...\262\320\276-\320\277\320\276-Solidity.md" | 0
Swarm-Hash.md => pages/swarm/Swarm-Hash.md | 0
.../whisper/Whisper-Overview.md | 0
.../whisper/Whisper-PoC-2-Protocol-Spec.md | 0
.../whisper/Whisper-PoC-2-Wire-Protocol.md | 0
.../whisper/Whisper-Wire-Protocol.md | 0
Whisper.md => pages/whisper/Whisper.md | 0
pages/white-paper/[english]-white-paper.md | 24 +++---
164 files changed, 154 insertions(+), 130 deletions(-)
delete mode 100644 LICENSE
rename Licensing.md => pages/Licensing.md (100%)
rename Middleware-and-Dapp-Project-Ideas.md => pages/Middleware-and-Dapp-Project-Ideas.md (100%)
rename Open-positions-&-Schemes.md => pages/Open-job-positions-&-Schemes.md (100%)
create mode 100644 pages/Readme.md
rename _Sidebar.md => pages/_Sidebar.md (100%)
rename Fortnight-In-Ethereum-Template.md => pages/blog-and-notes/Fortnight-In-Ethereum-Template.md (100%)
rename Template:-This-Week-in-Ethereum-w-YY.md => pages/blog-and-notes/Template:-This-Week-in-Ethereum-w-YY.md (100%)
rename This Week In Ethereum 47.2014.md => pages/blog-and-notes/This Week In Ethereum 47.2014.md (100%)
rename Todo-before-alpha.md => pages/blog-and-notes/Todo-before-alpha.md (100%)
rename Which-Client?.md => pages/blog-and-notes/stubs/Which-Client?.md (100%)
rename Contract-Metadata-Docs-(NatSpec,-ABI).md => pages/dapp-development/Contract-Metadata-Docs-(NatSpec,-ABI).md (100%)
rename Dapp-Developer-Resources.md => pages/dapp-development/Dapp-Developer-Resources.md (84%)
rename Dapp-using-Meteor.md => pages/dapp-development/Dapp-using-Meteor.md (100%)
rename Ethereum-Contract-ABI.md => pages/dapp-development/Ethereum-Contract-ABI.md (100%)
rename Ethereum-Development-Tutorial.md => pages/dapp-development/Ethereum-Development-Tutorial.md (100%)
rename First-steps-with-ethereum-JSON-RPC.md => pages/dapp-development/First-steps-with-ethereum-JSON-RPC.md (100%)
rename JSON-RPC.md => pages/dapp-development/JSON-RPC.md (99%)
rename JavaScript-API.md => pages/dapp-development/JavaScript-API.md (98%)
rename Javascript-Development-Deficiencies.md => pages/dapp-development/Javascript-Development-Deficiencies.md (100%)
rename Mix-Features.md => pages/dapp-development/Mix-Features.md (100%)
rename Mix:-The-DApp-IDE.md => pages/dapp-development/Mix:-The-DApp-IDE.md (100%)
rename RPC-Testing.md => pages/dapp-development/RPC-Testing.md (100%)
rename Standardized_Contract_APIs.md => pages/dapp-development/Standardized_Contract_APIs.md (80%)
rename "Useful-\303\220app-Patterns.md" => "pages/dapp-development/Useful-\303\220app-Patterns.md" (100%)
rename Serpent-1.0-(old).md => pages/dapp-development/serpent/Serpent-1.0-(old).md (100%)
rename Serpent.md => pages/dapp-development/serpent/Serpent.md (100%)
rename Serpent_3.0.md => pages/dapp-development/serpent/Serpent_3.0.md (100%)
rename Solidity,-Docs-and-ABI.md => pages/dapp-development/solidity/Solidity,-Docs-and-ABI.md (100%)
rename Solidity-Changelog.md => pages/dapp-development/solidity/Solidity-Changelog.md (100%)
rename Solidity-Features.md => pages/dapp-development/solidity/Solidity-Features.md (100%)
rename Solidity-Tutorial.md => pages/dapp-development/solidity/Solidity-Tutorial.md (100%)
rename Solidity-standard-library.md => pages/dapp-development/solidity/Solidity-standard-library.md (100%)
rename Solidity.md => pages/dapp-development/solidity/Solidity.md (100%)
rename Tags-for-Solidity-in-code-documentation.md => pages/dapp-development/solidity/Tags-for-Solidity-in-code-documentation.md (100%)
rename The-Solidity-Programming-Language.md => pages/dapp-development/solidity/The-Solidity-Programming-Language.md (100%)
rename Node-discovery-protocol.md => pages/dev-technologies/Node-discovery-protocol.md (100%)
rename Web3-Secret-Storage-Definition.md => pages/dev-technologies/Web3-Secret-Storage-Definition.md (100%)
rename enode-url-format.md => pages/dev-technologies/enode-url-format.md (100%)
rename libp2p-Whitepaper.md => pages/dev-technologies/libp2p-Whitepaper.md (100%)
rename web.js-0.9.md => pages/dev-technologies/web.js-0.9.md (81%)
rename "\303\220\316\236Vp2p-Wire-Protocol.md" => "pages/dev-technologies/\303\220\316\236Vp2p-Wire-Protocol.md" (100%)
rename Geth-Dapp-loading-proposal.md => pages/eip/Geth-Dapp-loading-proposal.md (100%)
rename JSON-RPC-Error-Codes-Improvement-Proposal.md => pages/eip/JSON-RPC-Error-Codes-Improvement-Proposal.md (100%)
rename Mix-improvement-proposal.md => pages/eip/Mix-improvement-proposal.md (100%)
rename Proposal:-BlockHashesFromNumbers.md => pages/eip/Proposal:-BlockHashesFromNumbers.md (100%)
rename Proposal:-Extend-GetBlockHashes-with-target-hash.md => pages/eip/Proposal:-Extend-GetBlockHashes-with-target-hash.md (100%)
rename Proposal:-NewBlockHashes.md => pages/eip/Proposal:-NewBlockHashes.md (100%)
rename Proposal:-Reversion-Notification.md => pages/eip/Proposal:-Reversion-Notification.md (100%)
rename Proposal:-Transaction-Proxy-Hooks.md => pages/eip/Proposal:-Transaction-Proxy-Hooks.md (100%)
rename newBlockFilter-Improvement-Proposal.md => pages/eip/newBlockFilter-Improvement-Proposal.md (100%)
rename sendTransaction-return-value-proposal.md => pages/eip/sendTransaction-return-value-proposal.md (100%)
rename Dagger-Hashimoto.md => pages/ethash-dagger-hashimoto/Dagger-Hashimoto.md (98%)
rename Dagger.md => pages/ethash-dagger-hashimoto/Dagger.md (100%)
rename Ethash-C-API.md => pages/ethash-dagger-hashimoto/Ethash-C-API.md (100%)
rename Ethash-DAG-Disk-Storage-Format.md => pages/ethash-dagger-hashimoto/Ethash-DAG-Disk-Storage-Format.md (100%)
rename Ethash-Design-Rationale.md => pages/ethash-dagger-hashimoto/Ethash-Design-Rationale.md (100%)
rename Ethash.md => pages/ethash-dagger-hashimoto/Ethash.md (100%)
rename Ethash_revision_11.md => pages/ethash-dagger-hashimoto/Ethash_revision_11.md (100%)
rename Bad-Block-Reporting.md => pages/ethereum-and-blockchain-technologies-and-research/Bad-Block-Reporting.md (100%)
rename Bad-Chain-Canary.md => pages/ethereum-and-blockchain-technologies-and-research/Bad-Chain-Canary.md (100%)
rename Block-Protocol-2.0.md => pages/ethereum-and-blockchain-technologies-and-research/Block-Protocol-2.0.md (99%)
rename Blockchain-import-and-export-instructions.md => pages/ethereum-and-blockchain-technologies-and-research/Blockchain-import-and-export-instructions.md (100%)
rename Distributed-Preimage-Archive.md => pages/ethereum-and-blockchain-technologies-and-research/Distributed-Preimage-Archive.md (100%)
rename Subtleties.md => pages/ethereum-and-blockchain-technologies-and-research/EVM-Subtleties.md (100%)
rename Ethereum-Natural-Specification-Format.md => pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Natural-Specification-Format.md (99%)
rename Ethereum-Wire-Protocol.md => pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Wire-Protocol.md (97%)
rename Light-client-protocol.md => pages/ethereum-and-blockchain-technologies-and-research/Light-client-protocol.md (100%)
rename Morden.md => pages/ethereum-and-blockchain-technologies-and-research/Morden.md (100%)
rename pages/{patricia-tree => ethereum-and-blockchain-technologies-and-research}/[english]-patricia-tree.md (100%)
rename pages/{rlp => ethereum-and-blockchain-technologies-and-research}/[english]-rlp.md (100%)
rename CLL.md => pages/ethereum-and-blockchain-technologies-and-research/research/CLL.md (100%)
rename Chain-Fibers-Redux.md => pages/ethereum-and-blockchain-technologies-and-research/research/Chain-Fibers-Redux.md (100%)
rename Generalized_Merkle_DHT.md => pages/ethereum-and-blockchain-technologies-and-research/research/Generalized_Merkle_DHT.md (100%)
rename HPOC_2015.md => pages/ethereum-and-blockchain-technologies-and-research/research/HPOC_2015.md (100%)
rename Parallel-Block-Downloads.md => pages/ethereum-and-blockchain-technologies-and-research/research/Parallel-Block-Downloads.md (100%)
rename Problems.md => pages/ethereum-and-blockchain-technologies-and-research/research/Problems.md (100%)
rename Security-Categorization.md => pages/ethereum-and-blockchain-technologies-and-research/research/Security-Categorization.md (100%)
rename Security-Issue-Process.md => pages/ethereum-and-blockchain-technologies-and-research/research/Security-Issue-Process.md (100%)
rename Serenity_Wishlist.md => pages/ethereum-and-blockchain-technologies-and-research/research/Serenity_Wishlist.md (100%)
delete mode 100644 pages/ethereum-toc/[spanish]-ethereum-toc.md
rename Adaptive-Message-IDs.md => pages/infrastructure-networking/Adaptive-Message-IDs.md (100%)
rename Adaptive-Peer-Time.md => pages/infrastructure-networking/Adaptive-Peer-Time.md (83%)
rename Brain-Wallet.md => pages/infrastructure-networking/Brain-Wallet.md (100%)
rename Clearinghouse.md => pages/infrastructure-networking/Clearinghouse.md (100%)
rename Default-Extra-Data-Standard.md => pages/infrastructure-networking/Default-Extra-Data-Standard.md (100%)
rename Deterministic_Wallet_Spec.md => pages/infrastructure-networking/Deterministic_Wallet_Spec.md (100%)
rename EVM-JIT-Binary-Interface.md => pages/infrastructure-networking/EVM-JIT-Binary-Interface.md (100%)
rename "e\317\200-Programme.md" => "pages/infrastructure-networking/Ethereum-Raspberry-Pi-e\317\200-Programme.md" (100%)
rename Exchange-Integration.md => pages/infrastructure-networking/Exchange-Integration.md (100%)
rename ICAP:-Inter-exchange-Client-Address-Protocol.md => pages/infrastructure-networking/ICAP:-Inter-exchange-Client-Address-Protocol.md (100%)
rename IPv6.md => pages/infrastructure-networking/IPv6.md (100%)
rename Kademlia-Peer-Selection.md => pages/infrastructure-networking/Kademlia-Peer-Selection.md (100%)
rename Layers.md => pages/infrastructure-networking/Layers.md (100%)
rename Mining.md => pages/infrastructure-networking/Mining.md (88%)
rename NatSpec-Determination.md => pages/infrastructure-networking/NatSpec-Determination.md (100%)
rename Natspec-Example.md => pages/infrastructure-networking/Natspec-Example.md (100%)
rename Network-Status.md => pages/infrastructure-networking/Network-Status.md (100%)
rename NewBlock-Message.md => pages/infrastructure-networking/NewBlock-Message.md (100%)
rename Raspberry-Pi-instructions.md => pages/infrastructure-networking/Raspberry-Pi-instructions.md (100%)
rename Registrar-ABI.md => pages/infrastructure-networking/Registrar-ABI.md (100%)
rename URL-Hint-Protocol.md => pages/infrastructure-networking/URL-Hint-Protocol.md (100%)
rename Decentralized-apps-(dapps).md => pages/introduction/Decentralized-apps-(dapps).md (100%)
rename Ethereum-introduction.md => pages/introduction/Ethereum-introduction.md (100%)
rename FAQ.md => pages/introduction/FAQ.md (100%)
rename Gitter-Channels.md => pages/introduction/Gitter-Channels.md (100%)
rename Glossary.md => pages/introduction/Glossary.md (99%)
rename Home.md => pages/introduction/Home.md (100%)
rename What-is-Ethereum.md => pages/introduction/What-is-Ethereum.md (98%)
rename [German]-Clearinghaus.md => pages/other-languages/[German]-Clearinghaus.md (100%)
rename [Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md => pages/other-languages/[Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md (100%)
rename [Italian]-Introduzione-allo-sviluppo-su-Ethereum.md => pages/other-languages/[Italian]-Introduzione-allo-sviluppo-su-Ethereum.md (100%)
rename [Italian]-Libro-Bianco.md => pages/other-languages/[Italian]-Libro-Bianco.md (100%)
rename [Japanese]-Cryptocurrency-Current-Problems.md => pages/other-languages/[Japanese]-Cryptocurrency-Current-Problems.md (100%)
rename [Japanese]--Ethereum-Development-Tutorial.md => pages/other-languages/[Japanese]-Ethereum-Development-Tutorial.md (64%)
rename [Japanese]-Ethereum-TOC.md => pages/other-languages/[Japanese]-Ethereum-TOC.md (100%)
rename [Japanese]-HPOC_2015.md => pages/other-languages/[Japanese]-HPOC_2015.md (100%)
rename [Japanese]-Javascript-API.md => pages/other-languages/[Japanese]-Javascript-API.md (100%)
rename [Japanese]--License.md => pages/other-languages/[Japanese]-License.md (100%)
rename [Japanese]-Solidity-Tutorial.md => pages/other-languages/[Japanese]-Solidity-Tutorial.md (100%)
rename "[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md" => "pages/other-languages/[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md" (100%)
rename [Japenese]-Ethereum-TOC.md => pages/other-languages/[Japenese]-Ethereum-TOC.md (100%)
rename [Persian]-Ethereum-TOC.md => pages/other-languages/[Persian]-Ethereum-TOC.md (100%)
rename [Romanian]-Block-Protocol-2.0.md => pages/other-languages/[Romanian]-Block-Protocol-2.0.md (100%)
rename [Romanian]-CLL.md => pages/other-languages/[Romanian]-CLL.md (100%)
rename [Romanian]-Cuprins.md => pages/other-languages/[Romanian]-Cuprins.md (100%)
rename [Romanian]-Dagger.md => pages/other-languages/[Romanian]-Dagger.md (100%)
rename [Romanian]-Layers.md => pages/other-languages/[Romanian]-Layers.md (100%)
rename [Romanian]-Limbajul-de-programare-Serpent.md => pages/other-languages/[Romanian]-Limbajul-de-programare-Serpent.md (100%)
rename [Romanian]-Wire-Protocol.md => pages/other-languages/[Romanian]-Wire-Protocol.md (100%)
rename pages/{ethereum-toc => other-languages}/[chinese]-ethereum-toc.md (100%)
rename pages/{rlp => other-languages}/[chinese]-rlp.md (100%)
rename pages/{white-paper => other-languages}/[chinese]-white-paper.md (100%)
rename pages/{ethereum-toc => other-languages}/[french]-ethereum-toc.md (100%)
rename pages/{ethereum-toc => other-languages}/[german]-ethereum-toc.md (100%)
rename pages/{rlp => other-languages}/[german]-rlp.md (100%)
rename pages/{white-paper => other-languages}/[german]-white-paper.md (100%)
rename pages/{ethereum-toc => other-languages}/[italian]-ethereum-toc.md (100%)
rename pages/{design-rationale => other-languages}/[japanese]-design-rationale.md (100%)
rename pages/{patricia-tree => other-languages}/[japanese]-patricia-tree.md (100%)
rename pages/{rlp => other-languages}/[japanese]-rlp.md (100%)
rename pages/{white-paper => other-languages}/[japanese]-white-paper.md (100%)
rename pages/{white-paper => other-languages}/[korean]-white-paper.md (100%)
rename pages/{white-paper => other-languages}/[persian]-white-paper.md (100%)
rename pages/{patricia-tree => other-languages}/[romanian]-patricia-tree.md (100%)
rename pages/{rlp => other-languages}/[romanian]-rlp.md (100%)
rename pages/{white-paper => other-languages}/[romanian]-white-paper.md (100%)
create mode 100644 pages/other-languages/[spanish]-ethereum-toc.md
rename "[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md" => "pages/other-languages/[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md" (100%)
rename "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md" => "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md" (100%)
rename "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md" => "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md" (99%)
rename "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md" => "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md" (100%)
rename "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md" => "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md" (99%)
rename "[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md" => "pages/other-languages/[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md" (100%)
rename "[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md" => "pages/other-languages/[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md" (100%)
rename "\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md" => "pages/other-languages/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md" (100%)
rename Swarm-Hash.md => pages/swarm/Swarm-Hash.md (100%)
rename Whisper-Overview.md => pages/whisper/Whisper-Overview.md (100%)
rename Whisper-PoC-2-Protocol-Spec.md => pages/whisper/Whisper-PoC-2-Protocol-Spec.md (100%)
rename Whisper-PoC-2-Wire-Protocol.md => pages/whisper/Whisper-PoC-2-Wire-Protocol.md (100%)
rename Whisper-Wire-Protocol.md => pages/whisper/Whisper-Wire-Protocol.md (100%)
rename Whisper.md => pages/whisper/Whisper.md (100%)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 40d9af62e..000000000
--- a/LICENSE
+++ /dev/null
@@ -1,5 +0,0 @@
-The license for this repository is CC BY-SA 4.0.
-
-A human-readable summary (and not a substitute) of the license is [here](https://creativecommons.org/licenses/by-sa/4.0/).
-
-The license is [here](https://creativecommons.org/licenses/by-sa/4.0/legalcode).
diff --git a/Licensing.md b/pages/Licensing.md
similarity index 100%
rename from Licensing.md
rename to pages/Licensing.md
diff --git a/Middleware-and-Dapp-Project-Ideas.md b/pages/Middleware-and-Dapp-Project-Ideas.md
similarity index 100%
rename from Middleware-and-Dapp-Project-Ideas.md
rename to pages/Middleware-and-Dapp-Project-Ideas.md
diff --git a/Open-positions-&-Schemes.md b/pages/Open-job-positions-&-Schemes.md
similarity index 100%
rename from Open-positions-&-Schemes.md
rename to pages/Open-job-positions-&-Schemes.md
diff --git a/pages/Readme.md b/pages/Readme.md
new file mode 100644
index 000000000..6e4b622fe
--- /dev/null
+++ b/pages/Readme.md
@@ -0,0 +1,14 @@
+Newcomers and those seeking an introduction to Ethereum may go to https://ethereum.org or https://github.com/ethereum/wiki/wiki.
+
+Note that you can proofread while you read and learn about anything.
+
+# Contribution guidelines
+Please just **edit the pages in the wiki directly** as shown in the sidebar here: https://github.com/ethereum/wiki/wiki, rather than making **pull requests**.
+
+Please only create an **issue** if you can't fix it by editing yourself, and only if it is related to the wiki. If it is a technical issue e.g. with [web3 or JSON.RPC](https://github.com/ethereum/web3.js/issues), [geth](https://github.com/ethereum/go-ethereum/issues), [Mist](https://github.com/ethereum/mist) (although note that Mist isn't really user-ready yet, so using alternatives like [MyEtherWallet](https://www.myetherwallet.com/) is recommended instead), etc., please post an issue in the repo for that project as well, and reference the issue that you create in this repo (by copying and pasting the link to the issue in this repo in a comment in the issue in the relevant project repo).
+
+If you are **translating** an article, please **create a new page** and create the translation in that. Do not edit an existing article by translating it. Someone did this with the home wiki, changing the title, and this actually caused the home page to just direct to a list of pages in the wiki, and made it hard to find the edited home page as the title was changed to Arabic. So **do not edit the title of an article**.
+
+If you have experience with editing on Wikipedia, then that will help with knowing how to edit this wiki, although the contribution rules are less strict. Referencing facts is a key writing and proofreading task, as well as checking that information is up-to-date (and updating it if otherwise), correcting grammar, typos, and spelling; and making the wiki comprehensive and easy to understand.
+
+Other rules, such as a neutral point of view and no original research are desirable, but may be hard to maintain. Notability is less relevant.
diff --git a/_Sidebar.md b/pages/_Sidebar.md
similarity index 100%
rename from _Sidebar.md
rename to pages/_Sidebar.md
diff --git a/Fortnight-In-Ethereum-Template.md b/pages/blog-and-notes/Fortnight-In-Ethereum-Template.md
similarity index 100%
rename from Fortnight-In-Ethereum-Template.md
rename to pages/blog-and-notes/Fortnight-In-Ethereum-Template.md
diff --git a/Template:-This-Week-in-Ethereum-w-YY.md b/pages/blog-and-notes/Template:-This-Week-in-Ethereum-w-YY.md
similarity index 100%
rename from Template:-This-Week-in-Ethereum-w-YY.md
rename to pages/blog-and-notes/Template:-This-Week-in-Ethereum-w-YY.md
diff --git a/This Week In Ethereum 47.2014.md b/pages/blog-and-notes/This Week In Ethereum 47.2014.md
similarity index 100%
rename from This Week In Ethereum 47.2014.md
rename to pages/blog-and-notes/This Week In Ethereum 47.2014.md
diff --git a/Todo-before-alpha.md b/pages/blog-and-notes/Todo-before-alpha.md
similarity index 100%
rename from Todo-before-alpha.md
rename to pages/blog-and-notes/Todo-before-alpha.md
diff --git a/Which-Client?.md b/pages/blog-and-notes/stubs/Which-Client?.md
similarity index 100%
rename from Which-Client?.md
rename to pages/blog-and-notes/stubs/Which-Client?.md
diff --git a/Contract-Metadata-Docs-(NatSpec,-ABI).md b/pages/dapp-development/Contract-Metadata-Docs-(NatSpec,-ABI).md
similarity index 100%
rename from Contract-Metadata-Docs-(NatSpec,-ABI).md
rename to pages/dapp-development/Contract-Metadata-Docs-(NatSpec,-ABI).md
diff --git a/Dapp-Developer-Resources.md b/pages/dapp-development/Dapp-Developer-Resources.md
similarity index 84%
rename from Dapp-Developer-Resources.md
rename to pages/dapp-development/Dapp-Developer-Resources.md
index 96831e95d..531ce5405 100644
--- a/Dapp-Developer-Resources.md
+++ b/pages/dapp-development/Dapp-Developer-Resources.md
@@ -4,7 +4,7 @@ As a Ðapp developer you have three main resources which allow Ðapp development
- [Web3 JavaScript API](https://github.com/ethereum/wiki/wiki/JavaScript-API) - This is the main JavaScript SDK to use when you want to interact with a nodes API
- [JSON RPC API](https://github.com/ethereum/wiki/wiki/JSON-RPC) - This is the low level JSON RPC 2.0 interface to interface with a node. This API is used by the [Web3 JavaScript API](https://github.com/ethereum/wiki/wiki/JavaScript-API).
-- [Solidity Documentation](https://ethereum.github.io/solidity/docs/home/) - Solidity is the Ethereum developed Smart Contract language, which compiles to EVM (Ethereum Virtual Machine) opcodes.
+- [Solidity Documentation](https://solidity.readthedocs.io/en/latest/) - Solidity is the Ethereum developed Smart Contract language, which compiles to EVM (Ethereum Virtual Machine) opcodes.
### Other Resources:
@@ -14,4 +14,4 @@ As a Ðapp developer you have three main resources which allow Ðapp development
### Useful read
- [FAQ](https://github.com/ethereum/wiki/wiki/FAQ) - Collection of links, useful for understanding the Ethereum eco system.
-- [Glossary](https://github.com/ethereum/wiki/wiki/Glossary) - Great explanation of Blockchain related terms.
\ No newline at end of file
+- [Glossary](https://github.com/ethereum/wiki/wiki/Glossary) - Great explanation of Blockchain related terms.
diff --git a/Dapp-using-Meteor.md b/pages/dapp-development/Dapp-using-Meteor.md
similarity index 100%
rename from Dapp-using-Meteor.md
rename to pages/dapp-development/Dapp-using-Meteor.md
diff --git a/Ethereum-Contract-ABI.md b/pages/dapp-development/Ethereum-Contract-ABI.md
similarity index 100%
rename from Ethereum-Contract-ABI.md
rename to pages/dapp-development/Ethereum-Contract-ABI.md
diff --git a/Ethereum-Development-Tutorial.md b/pages/dapp-development/Ethereum-Development-Tutorial.md
similarity index 100%
rename from Ethereum-Development-Tutorial.md
rename to pages/dapp-development/Ethereum-Development-Tutorial.md
diff --git a/First-steps-with-ethereum-JSON-RPC.md b/pages/dapp-development/First-steps-with-ethereum-JSON-RPC.md
similarity index 100%
rename from First-steps-with-ethereum-JSON-RPC.md
rename to pages/dapp-development/First-steps-with-ethereum-JSON-RPC.md
diff --git a/JSON-RPC.md b/pages/dapp-development/JSON-RPC.md
similarity index 99%
rename from JSON-RPC.md
rename to pages/dapp-development/JSON-RPC.md
index dab857df8..33f9d64d1 100644
--- a/JSON-RPC.md
+++ b/pages/dapp-development/JSON-RPC.md
@@ -2089,7 +2089,7 @@ params: [{
##### Example
```js
// Request
-curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":0x64,"priority":0x64}],"id":73}'
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":"0x64","priority":"0x64"}],"id":73}'
// Result
{
@@ -2176,7 +2176,7 @@ none
##### Example
```js
// Request
-curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id":73}'
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":73}'
// Result
{
@@ -2209,7 +2209,7 @@ params: [
##### Example
```js
// Request
-curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'
// Result
{
@@ -2378,4 +2378,4 @@ See [shh_getFilterChanges](#shh_getfilterchanges)
curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getMessages","params":["0x7"],"id":73}'
```
-Result see [shh_getFilterChanges](#shh_getfilterchanges)
\ No newline at end of file
+Result see [shh_getFilterChanges](#shh_getfilterchanges)
diff --git a/JavaScript-API.md b/pages/dapp-development/JavaScript-API.md
similarity index 98%
rename from JavaScript-API.md
rename to pages/dapp-development/JavaScript-API.md
index 4767cb94c..213269b39 100644
--- a/JavaScript-API.md
+++ b/pages/dapp-development/JavaScript-API.md
@@ -15,7 +15,7 @@ If you want to look at some more sophisticated examples using web3.js check out
As this API is designed to work with a local RPC node and all its functions are by default use synchronous HTTP requests.con
-If you want to make asynchronous request, you can pass an optional callback as the last parameter to most functions.
+If you want to make an asynchronous request, you can pass an optional callback as the last parameter to most functions.
All callbacks are using an [error first callback](http://fredkschott.com/post/2014/03/understanding-error-first-callbacks-in-node-js/) style:
```js
@@ -60,7 +60,7 @@ balance.plus(21).toString(10); // toString(10) converts it to a number string
// "131242344353464564564574574567477"
```
-The next example wouldn't work as we have more than 20 floating points, therefore it is recommended to keep you balance always in *wei* and only transform it to other units when presenting to the user:
+The next example wouldn't work as we have more than 20 floating points, therefore it is recommended that you always keep your balance in *wei* and only transform it to other units when presenting to the user:
```js
var balance = new BigNumber('13124.234435346456466666457455567456');
@@ -86,6 +86,7 @@ balance.plus(21).toString(10); // toString(10) converts it to a number string, b
* [toAscii(hexString)](#web3toascii)
* [fromAscii(textString, [padding])](#web3fromascii)
* [toDecimal(hexString)](#web3todecimal)
+ * [toChecksumAddress(string)](#web3tochecksumaddress)
* [fromDecimal(number)](#web3fromdecimal)
* [fromWei(numberStringOrBigNumber, unit)](#web3fromwei)
* [toWei(numberStringOrBigNumber, unit)](#web3towei)
@@ -173,7 +174,7 @@ The `web3` object provides all methods.
```js
var Web3 = require('web3');
// create an instance of web3 using the HTTP provider.
-// NOTE in mist web3 is already available, so check first if its available before instantiating
+// NOTE in mist web3 is already available, so check first if it's available before instantiating
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
```
@@ -472,6 +473,30 @@ console.log(str2); // "0x657468657265756d000000000000000000000000000000000000000
***
+#### web3.toChecksumAddress
+
+ web3.toChecksumAddress(hexString);
+
+Converts a string to the checksummed address equivalent.
+
+##### Parameters
+
+1. `String` - A string to be converted to a checksummed address.
+
+
+##### Returns
+
+`String` - A string containing the checksummed address.
+
+##### Example
+
+```js
+var myAddress = web3.toChecksumAddress('0xa0c876ec9f2d817c4304a727536f36363840c02c');
+console.log(myAddress); // '0xA0C876eC9F2d817c4304A727536f36363840c02c'
+```
+
+***
+
#### web3.toDecimal
web3.toDecimal(hexString);
@@ -2388,4 +2413,4 @@ console.log(address); // '00c5496aee77c1ba1f0854206a26dda82a81d6d8'
```js
var i = new web3.eth.iban('XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS');
console.log(i.toString()); // 'XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS'
-```
\ No newline at end of file
+```
diff --git a/Javascript-Development-Deficiencies.md b/pages/dapp-development/Javascript-Development-Deficiencies.md
similarity index 100%
rename from Javascript-Development-Deficiencies.md
rename to pages/dapp-development/Javascript-Development-Deficiencies.md
diff --git a/Mix-Features.md b/pages/dapp-development/Mix-Features.md
similarity index 100%
rename from Mix-Features.md
rename to pages/dapp-development/Mix-Features.md
diff --git a/Mix:-The-DApp-IDE.md b/pages/dapp-development/Mix:-The-DApp-IDE.md
similarity index 100%
rename from Mix:-The-DApp-IDE.md
rename to pages/dapp-development/Mix:-The-DApp-IDE.md
diff --git a/RPC-Testing.md b/pages/dapp-development/RPC-Testing.md
similarity index 100%
rename from RPC-Testing.md
rename to pages/dapp-development/RPC-Testing.md
diff --git a/Standardized_Contract_APIs.md b/pages/dapp-development/Standardized_Contract_APIs.md
similarity index 80%
rename from Standardized_Contract_APIs.md
rename to pages/dapp-development/Standardized_Contract_APIs.md
index f1682d44c..68ccb0a68 100644
--- a/Standardized_Contract_APIs.md
+++ b/pages/dapp-development/Standardized_Contract_APIs.md
@@ -3,11 +3,16 @@ name: Standardized Contract APIs
category:
---
-Although Ethereum allows developers to create absolutely any kind of application without restriction to specific feature types, and prides itself on its "lack of features", there is nevertheless a need to standardize certain very common use cases in order to allow users and applications to more easily interact with each other. This includes sending currency units, registering names, making offers on exchanges, and other similar functions. A standard typically consists of a set of function signatures for a few methods, eg. `send`, `register`, `delete`, providing the set of arguments and their formats in the [Ethereum contract ABI](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) language.
+Ethereum allows you to standardize common use cases that allow users and applications to more easily interact with each other. This includes currency units, registering names, making offers on exchanges, and other similar functions. A standard typically consists of function signatures for methods, eg. `send`, `register`, `delete`, providing the set of arguments and their formats in the [Ethereum contract ABI](https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI) language.
The standards described below have sample implementations available [here](https://github.com/ethereum/dapp-bin/tree/master/standardized_contract_apis).
-All function names are in lower camelCase (eg. `sendCoin`) and all event names are in upper CamelCase (eg. `CoinTransfer`). Input variables are in underscore-prefixed lower camelCase (eg. `_offerId`), and output variables are `_r` for pure getter (ie. constant) functions, `_success` (always boolean) when denoting success or failure, and other values (eg. `_maxValue`) for methods that perform an action but need to return a value as an identifier. Addresses are referred to using `_address` when generic, and otherwise if a more specific description exists (eg. `_from`, `_to`).
+All function names are in lower camelCase (eg. `sendCoin`), and all event names are in upper CamelCase (eg. `CoinTransfer`).
+
+Input variables are in underscore-prefixed lower camelCase (eg. `_offerId`).
+
+Output variables are `_r` for pure getter (ie. constant) functions - `_success` (always boolean) when denoting success or failur, and other values (eg. `_maxValue`) for methods that perform an action but need to return a value as an identifier.
+Addresses are referred to using `_address` when generic, and otherwise if a more specific description exists (eg. `_from`, `_to`).
# Transferable Fungibles
@@ -39,7 +44,7 @@ balanceOf(address _address) constant returns (uint256 balance)
Get the account balance of another account with address `_address`
---
-The `transferFrom` method is used for a "direct debit" workflow, allowing contracts to send coins on your behalf, for example to "deposit" to a contract address and/or to charge fees in sub-currencies; the command should fail unless the `_from` account has deliberately authorized the sender of the message via some mechanism; we propose these standardized APIs for approval:
+The `transferFrom` method is used for a "direct debit" workflow, allowing contracts to send coins on your behalf, for example to "deposit" to a contract address and/or to charge fees in sub-currencies. The command should fail unless the `_from` account has deliberately authorized the sender of the message via some mechanism. We propose these standardized APIs for approval:
#### approve
@@ -133,7 +138,7 @@ baseUnit(address _token) constant returns (uint256)
Sets or returns the base unit of a token. Although most tokens are displayed to the final user as containing decimal points, token values are unsigned integers counting in the smallest possible unit. The client should always display the total units divided by `baseUnit`. Base units can be any integer but we suggest only using powers of 10. At the moment there is no support for multiple sub-units.
-Example: Bob has a balance of 100000 BobTokens, whose base unit is 100. His balance will be displayed on the client as **BOB$100.00**
+Example: Bob has a balance of 100000 BobTokens whose base unit is 100. His balance will be displayed on the client as **BOB$100.00**
## Registries
@@ -263,7 +268,7 @@ setFeeCurrency(address _feeCurrency)
Sets the currency that the fee is paid in
-The latter two methods are optional; also, note that the fee may be charged either in ether or subcurrency; if the contract charges in ether then the `setFeeCurrency` method is unnecessary.
+The latter two methods are optional. Also, note that the fee may be charged either in ether or subcurrency. If the contract charges in ether then the `setFeeCurrency` method is unnecessary.
## Forwarding contracts (eg. multisig)
@@ -287,4 +292,4 @@ confirm(bytes32 _id) returns (bool _success)
Confirm a pending message with a particular ID using your account; returns success or failure. If enough confirmations are made, sends the message along.
-Access policies can be of any form, eg. multisig, an arbitrary CNF boolean formula, a scheme that depends on the _value_ or _contents_ of a transaction, etc.
\ No newline at end of file
+Access policies can be of any form, eg. multisig, an arbitrary CNF boolean formula, a scheme that depends on the _value_ or _contents_ of a transaction, etc.
diff --git "a/Useful-\303\220app-Patterns.md" "b/pages/dapp-development/Useful-\303\220app-Patterns.md"
similarity index 100%
rename from "Useful-\303\220app-Patterns.md"
rename to "pages/dapp-development/Useful-\303\220app-Patterns.md"
diff --git a/Serpent-1.0-(old).md b/pages/dapp-development/serpent/Serpent-1.0-(old).md
similarity index 100%
rename from Serpent-1.0-(old).md
rename to pages/dapp-development/serpent/Serpent-1.0-(old).md
diff --git a/Serpent.md b/pages/dapp-development/serpent/Serpent.md
similarity index 100%
rename from Serpent.md
rename to pages/dapp-development/serpent/Serpent.md
diff --git a/Serpent_3.0.md b/pages/dapp-development/serpent/Serpent_3.0.md
similarity index 100%
rename from Serpent_3.0.md
rename to pages/dapp-development/serpent/Serpent_3.0.md
diff --git a/Solidity,-Docs-and-ABI.md b/pages/dapp-development/solidity/Solidity,-Docs-and-ABI.md
similarity index 100%
rename from Solidity,-Docs-and-ABI.md
rename to pages/dapp-development/solidity/Solidity,-Docs-and-ABI.md
diff --git a/Solidity-Changelog.md b/pages/dapp-development/solidity/Solidity-Changelog.md
similarity index 100%
rename from Solidity-Changelog.md
rename to pages/dapp-development/solidity/Solidity-Changelog.md
diff --git a/Solidity-Features.md b/pages/dapp-development/solidity/Solidity-Features.md
similarity index 100%
rename from Solidity-Features.md
rename to pages/dapp-development/solidity/Solidity-Features.md
diff --git a/Solidity-Tutorial.md b/pages/dapp-development/solidity/Solidity-Tutorial.md
similarity index 100%
rename from Solidity-Tutorial.md
rename to pages/dapp-development/solidity/Solidity-Tutorial.md
diff --git a/Solidity-standard-library.md b/pages/dapp-development/solidity/Solidity-standard-library.md
similarity index 100%
rename from Solidity-standard-library.md
rename to pages/dapp-development/solidity/Solidity-standard-library.md
diff --git a/Solidity.md b/pages/dapp-development/solidity/Solidity.md
similarity index 100%
rename from Solidity.md
rename to pages/dapp-development/solidity/Solidity.md
diff --git a/Tags-for-Solidity-in-code-documentation.md b/pages/dapp-development/solidity/Tags-for-Solidity-in-code-documentation.md
similarity index 100%
rename from Tags-for-Solidity-in-code-documentation.md
rename to pages/dapp-development/solidity/Tags-for-Solidity-in-code-documentation.md
diff --git a/The-Solidity-Programming-Language.md b/pages/dapp-development/solidity/The-Solidity-Programming-Language.md
similarity index 100%
rename from The-Solidity-Programming-Language.md
rename to pages/dapp-development/solidity/The-Solidity-Programming-Language.md
diff --git a/pages/design-rationale/[english]-design-rationale.md b/pages/design-rationale/[english]-design-rationale.md
index dec648c00..c50bcedbb 100644
--- a/pages/design-rationale/[english]-design-rationale.md
+++ b/pages/design-rationale/[english]-design-rationale.md
@@ -209,7 +209,7 @@ Some particular design decisions that were made:
The function and purpose of some opcodes in the VM is obvious, however other opcodes are less so. Some particular justifications are given below:
-* **ADDMOD**, **MULMOD**: in most cases, `addmod(a, b, c) = a * b % c`. However, in the specific case of many classes of elliptic curve cryptography, 32-byte modular arithmetic is used, and doing `a * b % c` directly is therefore actually doing `((a * b) % 2^256) % c`, which gives a completely different result. A formula that calculates `a * b % c` with 32-byte values in 32 bytes of space is rather nontrivial and bulky.
+* **ADDMOD**, **MULMOD**: in most cases, `mulmod(a, b, c) = a * b % c`. However, in the specific case of many classes of elliptic curve cryptography, 32-byte modular arithmetic is used, and doing `a * b % c` directly is therefore actually doing `((a * b) % 2^256) % c`, which gives a completely different result. A formula that calculates `a * b % c` with 32-byte values in 32 bytes of space is rather nontrivial and bulky.
* **SIGNEXTEND**: the purpose of SIGNEXTEND is to facilitate typecasting from a larger signed integer to a smaller signed integer. Small signed integers are useful because JIT-compiled virtual machines may in the future be able to detect long-running chunks of code that deals primarily with 32-byte integers and speed it up considerably.
* **SHA3**: SHA3 is very highly applicable in Ethereum code as secure infinite-sized hash maps that use storage will likely need to use a secure hash function so as to prevent malicious collisions, as well as for verifying Merkle trees and even verifying Ethereum-like data structures. A key point is that its companions `SHA256`, `ECRECOVER` and `RIPEMD160` are included not as opcodes but as pseudo-contracts. The purpose of this is to place them into a separate category so that, if/when we come up with a proper "native extensions" system later, more such contracts can be added without filling up the opcode space.
* **ORIGIN**: the primary use of the ORIGIN opcode, which provides the sender of a transaction, is to allow contracts to make refund payments for gas.
@@ -220,4 +220,4 @@ The function and purpose of some opcodes in the VM is obvious, however other opc
* **LOG**: LOG is meant to log events, see trie usage section above.
* **CALLCODE**: the purpose of this is to allow contracts to call "functions" in the form of code stored in other contracts, with a separate stack and memory, but using the contract's own storage. This makes it much easier to scalably implement "standard libraries" of code on the blockchain.
* **SUICIDE**: an opcode which allows a contract to quickly delete itself if it is no longer needed. The fact that SUICIDES are processed at the end of transaction execution, and not immediately, is motivated by the fact that having the ability to revert suicides that were already executed would substantially increase the complexity of the cache that would be required in an efficient VM implementation.
-* **PC**: although theoretically not necessary, as all instances of the PC opcode can be replaced by simply putting in the actual program counter at that index as a push, using PC in code allows for the creation of position-independent code (ie. compiled functions which can be copy/pasted into other contracts, and do not break if they end up at different indices).
\ No newline at end of file
+* **PC**: although theoretically not necessary, as all instances of the PC opcode can be replaced by simply putting in the actual program counter at that index as a push, using PC in code allows for the creation of position-independent code (ie. compiled functions which can be copy/pasted into other contracts, and do not break if they end up at different indices).
diff --git a/Node-discovery-protocol.md b/pages/dev-technologies/Node-discovery-protocol.md
similarity index 100%
rename from Node-discovery-protocol.md
rename to pages/dev-technologies/Node-discovery-protocol.md
diff --git a/Web3-Secret-Storage-Definition.md b/pages/dev-technologies/Web3-Secret-Storage-Definition.md
similarity index 100%
rename from Web3-Secret-Storage-Definition.md
rename to pages/dev-technologies/Web3-Secret-Storage-Definition.md
diff --git a/enode-url-format.md b/pages/dev-technologies/enode-url-format.md
similarity index 100%
rename from enode-url-format.md
rename to pages/dev-technologies/enode-url-format.md
diff --git a/libp2p-Whitepaper.md b/pages/dev-technologies/libp2p-Whitepaper.md
similarity index 100%
rename from libp2p-Whitepaper.md
rename to pages/dev-technologies/libp2p-Whitepaper.md
diff --git a/web.js-0.9.md b/pages/dev-technologies/web.js-0.9.md
similarity index 81%
rename from web.js-0.9.md
rename to pages/dev-technologies/web.js-0.9.md
index 9e13ed414..ad77e2330 100644
--- a/web.js-0.9.md
+++ b/pages/dev-technologies/web.js-0.9.md
@@ -7,7 +7,7 @@ Web3.js 0.9 changes
I would like to apply KISS principle to web3.js. I used the library recently much more and I realised that we are doing to many things implicitly. eg:
-1, newFilter it should either get all logs or poll for new logs. It's shouldn't do both in the same time. In my story, I don't want to poll for filter changes, but I want to get all logs between block X and Y. Same as caktux here: https://github.com/ethereum/web3.js/issues/250
+1, newFilter it should either get all logs or poll for new logs. It shouldn't do both in the same time. In my story, I don't want to poll for filter changes, but I want to get all logs between block X and Y. Same as caktux here: https://github.com/ethereum/web3.js/issues/250
examples of new solution
diff --git "a/\303\220\316\236Vp2p-Wire-Protocol.md" "b/pages/dev-technologies/\303\220\316\236Vp2p-Wire-Protocol.md"
similarity index 100%
rename from "\303\220\316\236Vp2p-Wire-Protocol.md"
rename to "pages/dev-technologies/\303\220\316\236Vp2p-Wire-Protocol.md"
diff --git a/Geth-Dapp-loading-proposal.md b/pages/eip/Geth-Dapp-loading-proposal.md
similarity index 100%
rename from Geth-Dapp-loading-proposal.md
rename to pages/eip/Geth-Dapp-loading-proposal.md
diff --git a/JSON-RPC-Error-Codes-Improvement-Proposal.md b/pages/eip/JSON-RPC-Error-Codes-Improvement-Proposal.md
similarity index 100%
rename from JSON-RPC-Error-Codes-Improvement-Proposal.md
rename to pages/eip/JSON-RPC-Error-Codes-Improvement-Proposal.md
diff --git a/Mix-improvement-proposal.md b/pages/eip/Mix-improvement-proposal.md
similarity index 100%
rename from Mix-improvement-proposal.md
rename to pages/eip/Mix-improvement-proposal.md
diff --git a/Proposal:-BlockHashesFromNumbers.md b/pages/eip/Proposal:-BlockHashesFromNumbers.md
similarity index 100%
rename from Proposal:-BlockHashesFromNumbers.md
rename to pages/eip/Proposal:-BlockHashesFromNumbers.md
diff --git a/Proposal:-Extend-GetBlockHashes-with-target-hash.md b/pages/eip/Proposal:-Extend-GetBlockHashes-with-target-hash.md
similarity index 100%
rename from Proposal:-Extend-GetBlockHashes-with-target-hash.md
rename to pages/eip/Proposal:-Extend-GetBlockHashes-with-target-hash.md
diff --git a/Proposal:-NewBlockHashes.md b/pages/eip/Proposal:-NewBlockHashes.md
similarity index 100%
rename from Proposal:-NewBlockHashes.md
rename to pages/eip/Proposal:-NewBlockHashes.md
diff --git a/Proposal:-Reversion-Notification.md b/pages/eip/Proposal:-Reversion-Notification.md
similarity index 100%
rename from Proposal:-Reversion-Notification.md
rename to pages/eip/Proposal:-Reversion-Notification.md
diff --git a/Proposal:-Transaction-Proxy-Hooks.md b/pages/eip/Proposal:-Transaction-Proxy-Hooks.md
similarity index 100%
rename from Proposal:-Transaction-Proxy-Hooks.md
rename to pages/eip/Proposal:-Transaction-Proxy-Hooks.md
diff --git a/newBlockFilter-Improvement-Proposal.md b/pages/eip/newBlockFilter-Improvement-Proposal.md
similarity index 100%
rename from newBlockFilter-Improvement-Proposal.md
rename to pages/eip/newBlockFilter-Improvement-Proposal.md
diff --git a/sendTransaction-return-value-proposal.md b/pages/eip/sendTransaction-return-value-proposal.md
similarity index 100%
rename from sendTransaction-return-value-proposal.md
rename to pages/eip/sendTransaction-return-value-proposal.md
diff --git a/Dagger-Hashimoto.md b/pages/ethash-dagger-hashimoto/Dagger-Hashimoto.md
similarity index 98%
rename from Dagger-Hashimoto.md
rename to pages/ethash-dagger-hashimoto/Dagger-Hashimoto.md
index 12a26bac0..680e23845 100644
--- a/Dagger-Hashimoto.md
+++ b/pages/ethash-dagger-hashimoto/Dagger-Hashimoto.md
@@ -12,7 +12,7 @@ Dagger Hashimoto is a proposed spec for the mining algorithm for Ethereum 1.0. D
With an additional modification, we also specify how to fulfill a third goal if desired, but at the cost of additional complexity:
-**Full chain storage**: mining should require storage of the complete blockchain state (due to the irregular structure of the Ethereum state trie, we anticipate that some pruning will be possible, particularly of some often-used contracts, but we want to minimize this).
+3. **Full chain storage**: mining should require storage of the complete blockchain state (due to the irregular structure of the Ethereum state trie, we anticipate that some pruning will be possible, particularly of some often-used contracts, but we want to minimize this).
Dagger Hashimoto builds on two key pieces of previous work:
@@ -81,7 +81,7 @@ params = {
"diff": 2**14, # Difficulty (adjusted during block evaluation)
"epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated)
"k": 1, # Number of parents of a node
- "w": w, # Used for modular exponentiation hashing
+ "w": w, # Used for modular exponentiation hashing
"accesses": 200, # Number of dataset accesses during hashimoto
"P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation
}
@@ -148,7 +148,7 @@ The algorithm used to generate the actual set of DAGs used to compute the work f
def get_prevhash(n):
from pyethereum.blocks import GENESIS_PREVHASH
from pyethreum import chain_manager
- if num <= 0:
+ if n <= 0:
return hash_to_int(GENESIS_PREVHASH)
else:
prevhash = chain_manager.index.get_block_by_number(n - 1)
@@ -335,4 +335,4 @@ Special thanks to feedback from:
* Tim Hughes
* Matthew Wampler-Doty
-* Thaddeus Dryja
\ No newline at end of file
+* Thaddeus Dryja
diff --git a/Dagger.md b/pages/ethash-dagger-hashimoto/Dagger.md
similarity index 100%
rename from Dagger.md
rename to pages/ethash-dagger-hashimoto/Dagger.md
diff --git a/Ethash-C-API.md b/pages/ethash-dagger-hashimoto/Ethash-C-API.md
similarity index 100%
rename from Ethash-C-API.md
rename to pages/ethash-dagger-hashimoto/Ethash-C-API.md
diff --git a/Ethash-DAG-Disk-Storage-Format.md b/pages/ethash-dagger-hashimoto/Ethash-DAG-Disk-Storage-Format.md
similarity index 100%
rename from Ethash-DAG-Disk-Storage-Format.md
rename to pages/ethash-dagger-hashimoto/Ethash-DAG-Disk-Storage-Format.md
diff --git a/Ethash-Design-Rationale.md b/pages/ethash-dagger-hashimoto/Ethash-Design-Rationale.md
similarity index 100%
rename from Ethash-Design-Rationale.md
rename to pages/ethash-dagger-hashimoto/Ethash-Design-Rationale.md
diff --git a/Ethash.md b/pages/ethash-dagger-hashimoto/Ethash.md
similarity index 100%
rename from Ethash.md
rename to pages/ethash-dagger-hashimoto/Ethash.md
diff --git a/Ethash_revision_11.md b/pages/ethash-dagger-hashimoto/Ethash_revision_11.md
similarity index 100%
rename from Ethash_revision_11.md
rename to pages/ethash-dagger-hashimoto/Ethash_revision_11.md
diff --git a/Bad-Block-Reporting.md b/pages/ethereum-and-blockchain-technologies-and-research/Bad-Block-Reporting.md
similarity index 100%
rename from Bad-Block-Reporting.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Bad-Block-Reporting.md
diff --git a/Bad-Chain-Canary.md b/pages/ethereum-and-blockchain-technologies-and-research/Bad-Chain-Canary.md
similarity index 100%
rename from Bad-Chain-Canary.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Bad-Chain-Canary.md
diff --git a/Block-Protocol-2.0.md b/pages/ethereum-and-blockchain-technologies-and-research/Block-Protocol-2.0.md
similarity index 99%
rename from Block-Protocol-2.0.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Block-Protocol-2.0.md
index 481b29757..f60f0fb7d 100644
--- a/Block-Protocol-2.0.md
+++ b/pages/ethereum-and-blockchain-technologies-and-research/Block-Protocol-2.0.md
@@ -248,8 +248,8 @@ The protocol altogether can be shown to be incentive-compatible as follows:
2. The miner of a block, and all uncles inside the block, at the very least have the incentive to respond to challenges.
3. Light nodes have the incentive to respect the block validity rules because everyone else does, an argument advanced in http://themonetaryfuture.blogspot.ca/2011/07/bitcoin-decentralization-and-nash.html. Without the challenge-response protocol, this argument does not apply because the cost of determining whether or not a block is valid is prohibitively high; with the protocol, this reasoning no longer applies.
4. Substantial stakeholders have the incentive to promote the perceived integrity of the system to maximize the value of their currency units, and thus may want to help actively submit both challenges and responses where possible.
-5. Statistically speaking, far more than 0.01% of agents inside of real-world economic agents, whether or not weighted by economic power, tend to motivated by altruistic/ideological considerations. The market share of charities around the world is sufficient evidence of this.
+5. Statistically speaking, far more than 0.01% of agents inside of real-world economic agents, whether or not weighted by economic power, tend to be motivated by altruistic/ideological considerations. The market share of charities around the world is sufficient evidence of this.
### Comparison with Bitcoin
-In Bitcoin, one can create a challenge-response protocol to achieve similar functionality along very similar principles, but there is one key way in which such a protocol in Bitcoin would be inadequate: miner fees. Because Bitcoin does not include a Merkle-tree mechanism for adding up transaction fees, the only way to prove that a block has a certain quantity of transaction fees is to process every transaction. Furthermore, in Bitcoin transaction fees all go to the miner. Thus, in Bitcoin a light node has no way of knowing if a given block is valid or if it gives its creator excessive fees, and can only rely on the computational majority as a source of information for this. In Ethereum, all changes to the state are incorporated into the stacktrace, so this weakness does not exist and, given the weak security assumption that at least one full node with at least 0.01% mining power or stake is honest, have 100% of the security properties that full nodes have.
\ No newline at end of file
+In Bitcoin, one can create a challenge-response protocol to achieve similar functionality along very similar principles, but there is one key way in which such a protocol in Bitcoin would be inadequate: miner fees. Because Bitcoin does not include a Merkle-tree mechanism for adding up transaction fees, the only way to prove that a block has a certain quantity of transaction fees is to process every transaction. Furthermore, in Bitcoin transaction fees all go to the miner. Thus, in Bitcoin a light node has no way of knowing if a given block is valid or if it gives its creator excessive fees, and can only rely on the computational majority as a source of information for this. In Ethereum, all changes to the state are incorporated into the stacktrace, so this weakness does not exist and, given the weak security assumption that at least one full node with at least 0.01% mining power or stake is honest, have 100% of the security properties that full nodes have.
diff --git a/Blockchain-import-and-export-instructions.md b/pages/ethereum-and-blockchain-technologies-and-research/Blockchain-import-and-export-instructions.md
similarity index 100%
rename from Blockchain-import-and-export-instructions.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Blockchain-import-and-export-instructions.md
diff --git a/Distributed-Preimage-Archive.md b/pages/ethereum-and-blockchain-technologies-and-research/Distributed-Preimage-Archive.md
similarity index 100%
rename from Distributed-Preimage-Archive.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Distributed-Preimage-Archive.md
diff --git a/Subtleties.md b/pages/ethereum-and-blockchain-technologies-and-research/EVM-Subtleties.md
similarity index 100%
rename from Subtleties.md
rename to pages/ethereum-and-blockchain-technologies-and-research/EVM-Subtleties.md
diff --git a/Ethereum-Natural-Specification-Format.md b/pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Natural-Specification-Format.md
similarity index 99%
rename from Ethereum-Natural-Specification-Format.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Natural-Specification-Format.md
index 22584ee5c..6409728eb 100644
--- a/Ethereum-Natural-Specification-Format.md
+++ b/pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Natural-Specification-Format.md
@@ -35,7 +35,7 @@ There are a few things to note about the above example.
+ @param: Documents a parameter just like in doxygen. Has to be followed by the parameter name.
+ @return: Documents the return type of a contract's function.
-- If any of the above are missing they are simply considered as blank and it's not illegal to omit any of them
+- If any of the above are missing they are simply considered as blank, and it's not illegal to omit any of them.
- `(valueInmGAV / 1000).fixed(0,3)` A dynamic expression. This should be a valid Javascript/Paperscript expression, which when evaluated in an EVM Javascript environment initialised with various system values (such as parameters).
diff --git a/Ethereum-Wire-Protocol.md b/pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Wire-Protocol.md
similarity index 97%
rename from Ethereum-Wire-Protocol.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Wire-Protocol.md
index 1d30dea88..51f8df916 100644
--- a/Ethereum-Wire-Protocol.md
+++ b/pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Wire-Protocol.md
@@ -15,7 +15,7 @@ Peer-to-peer communications between nodes running Ethereum clients run using the
### Ethereum Sub-protocol
**Status**
-[`+0x00`: `P`, `protocolVersion`: `P`, `networkId`: `P`, `td`: `P`, `bestHash`: `B_32`, `genesisHash`: `B_32`] Inform a peer of it's current **ethereum** state. This message should be sent _after_ the initial handshake and _prior_ to any **ethereum** related messages.
+[`+0x00`: `P`, `protocolVersion`: `P`, `networkId`: `P`, `td`: `P`, `bestHash`: `B_32`, `genesisHash`: `B_32`] Inform a peer of its current **ethereum** state. This message should be sent _after_ the initial handshake and _prior_ to any **ethereum** related messages.
* `protocolVersion` is one of:
* `0x00` for PoC-1;
* `0x01` for PoC-2;
diff --git a/Light-client-protocol.md b/pages/ethereum-and-blockchain-technologies-and-research/Light-client-protocol.md
similarity index 100%
rename from Light-client-protocol.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Light-client-protocol.md
diff --git a/Morden.md b/pages/ethereum-and-blockchain-technologies-and-research/Morden.md
similarity index 100%
rename from Morden.md
rename to pages/ethereum-and-blockchain-technologies-and-research/Morden.md
diff --git a/pages/patricia-tree/[english]-patricia-tree.md b/pages/ethereum-and-blockchain-technologies-and-research/[english]-patricia-tree.md
similarity index 100%
rename from pages/patricia-tree/[english]-patricia-tree.md
rename to pages/ethereum-and-blockchain-technologies-and-research/[english]-patricia-tree.md
diff --git a/pages/rlp/[english]-rlp.md b/pages/ethereum-and-blockchain-technologies-and-research/[english]-rlp.md
similarity index 100%
rename from pages/rlp/[english]-rlp.md
rename to pages/ethereum-and-blockchain-technologies-and-research/[english]-rlp.md
diff --git a/CLL.md b/pages/ethereum-and-blockchain-technologies-and-research/research/CLL.md
similarity index 100%
rename from CLL.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/CLL.md
diff --git a/Chain-Fibers-Redux.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Chain-Fibers-Redux.md
similarity index 100%
rename from Chain-Fibers-Redux.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Chain-Fibers-Redux.md
diff --git a/Generalized_Merkle_DHT.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Generalized_Merkle_DHT.md
similarity index 100%
rename from Generalized_Merkle_DHT.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Generalized_Merkle_DHT.md
diff --git a/HPOC_2015.md b/pages/ethereum-and-blockchain-technologies-and-research/research/HPOC_2015.md
similarity index 100%
rename from HPOC_2015.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/HPOC_2015.md
diff --git a/Parallel-Block-Downloads.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Parallel-Block-Downloads.md
similarity index 100%
rename from Parallel-Block-Downloads.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Parallel-Block-Downloads.md
diff --git a/Problems.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Problems.md
similarity index 100%
rename from Problems.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Problems.md
diff --git a/Security-Categorization.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Security-Categorization.md
similarity index 100%
rename from Security-Categorization.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Security-Categorization.md
diff --git a/Security-Issue-Process.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Security-Issue-Process.md
similarity index 100%
rename from Security-Issue-Process.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Security-Issue-Process.md
diff --git a/Serenity_Wishlist.md b/pages/ethereum-and-blockchain-technologies-and-research/research/Serenity_Wishlist.md
similarity index 100%
rename from Serenity_Wishlist.md
rename to pages/ethereum-and-blockchain-technologies-and-research/research/Serenity_Wishlist.md
diff --git a/pages/ethereum-toc/[spanish]-ethereum-toc.md b/pages/ethereum-toc/[spanish]-ethereum-toc.md
deleted file mode 100644
index 4019b677b..000000000
--- a/pages/ethereum-toc/[spanish]-ethereum-toc.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-name: Ethereum TOC
-category:
----
-
-### Bienvenidos a Ethereum, la plataforma para la siguiente generación de contratos inteligentes y aplicaciones descentralizadas.
-
-[Whitepaper de Ethereum](https://google.com)
-
-[RLP](https://google.com), Prefijo Linear Recursivo (Recursive Linear Prefix), usado para codificación de datos a través de Ethereum.
-
-[Patricia Tree](https://google.com) especificaciones del árbol Merkle Patricia (“Merkle Patria Tree”, también conocido como Trie), la estructura usada para almacenar y procesar a través de funciones Hash el estado de la cadena de bloques en Ethereum.
-
-[Protocolo de conexión](https://google.com), especificaciones.
-
-[CLL](https://google.com), Lenguage de alto nivel similar a C usado para crear contratos, especificaciones.
-
-[Dagger](https://google.com), Prueba de trabajo (Proof-of-work) de Ethereum.
-
-[Protocolo de Bloques 2.0](https://google.com)
-
-[Capas](https://google.com)
-
-[Cámara de compensación](https://google.com)
diff --git a/Adaptive-Message-IDs.md b/pages/infrastructure-networking/Adaptive-Message-IDs.md
similarity index 100%
rename from Adaptive-Message-IDs.md
rename to pages/infrastructure-networking/Adaptive-Message-IDs.md
diff --git a/Adaptive-Peer-Time.md b/pages/infrastructure-networking/Adaptive-Peer-Time.md
similarity index 83%
rename from Adaptive-Peer-Time.md
rename to pages/infrastructure-networking/Adaptive-Peer-Time.md
index b4fffa08b..0405c26da 100644
--- a/Adaptive-Peer-Time.md
+++ b/pages/infrastructure-networking/Adaptive-Peer-Time.md
@@ -13,7 +13,7 @@ A system with multiple peers should be robust to a few peers having substantiall
Each peer does a ping-sequence, each message timestamped with the hardware clock (H) directly after handshake to determine both the network traversal distance ("ping time") and an estimate of the peer's hardware clock (Hp).
-The clock-offset (D) of the peer then becomes it's hardware clock (H) corrected to become the median of the peer hardware clocks (median({H1, H2, ...}) = M).
+The clock-offset (D) of the peer then becomes its hardware clock (H) corrected to become the median of the peer hardware clocks (median({H1, H2, ...}) = M).
The clock offset (D) is dynamically evaluated as the peer set changes.
diff --git a/Brain-Wallet.md b/pages/infrastructure-networking/Brain-Wallet.md
similarity index 100%
rename from Brain-Wallet.md
rename to pages/infrastructure-networking/Brain-Wallet.md
diff --git a/Clearinghouse.md b/pages/infrastructure-networking/Clearinghouse.md
similarity index 100%
rename from Clearinghouse.md
rename to pages/infrastructure-networking/Clearinghouse.md
diff --git a/Default-Extra-Data-Standard.md b/pages/infrastructure-networking/Default-Extra-Data-Standard.md
similarity index 100%
rename from Default-Extra-Data-Standard.md
rename to pages/infrastructure-networking/Default-Extra-Data-Standard.md
diff --git a/Deterministic_Wallet_Spec.md b/pages/infrastructure-networking/Deterministic_Wallet_Spec.md
similarity index 100%
rename from Deterministic_Wallet_Spec.md
rename to pages/infrastructure-networking/Deterministic_Wallet_Spec.md
diff --git a/EVM-JIT-Binary-Interface.md b/pages/infrastructure-networking/EVM-JIT-Binary-Interface.md
similarity index 100%
rename from EVM-JIT-Binary-Interface.md
rename to pages/infrastructure-networking/EVM-JIT-Binary-Interface.md
diff --git "a/e\317\200-Programme.md" "b/pages/infrastructure-networking/Ethereum-Raspberry-Pi-e\317\200-Programme.md"
similarity index 100%
rename from "e\317\200-Programme.md"
rename to "pages/infrastructure-networking/Ethereum-Raspberry-Pi-e\317\200-Programme.md"
diff --git a/Exchange-Integration.md b/pages/infrastructure-networking/Exchange-Integration.md
similarity index 100%
rename from Exchange-Integration.md
rename to pages/infrastructure-networking/Exchange-Integration.md
diff --git a/ICAP:-Inter-exchange-Client-Address-Protocol.md b/pages/infrastructure-networking/ICAP:-Inter-exchange-Client-Address-Protocol.md
similarity index 100%
rename from ICAP:-Inter-exchange-Client-Address-Protocol.md
rename to pages/infrastructure-networking/ICAP:-Inter-exchange-Client-Address-Protocol.md
diff --git a/IPv6.md b/pages/infrastructure-networking/IPv6.md
similarity index 100%
rename from IPv6.md
rename to pages/infrastructure-networking/IPv6.md
diff --git a/Kademlia-Peer-Selection.md b/pages/infrastructure-networking/Kademlia-Peer-Selection.md
similarity index 100%
rename from Kademlia-Peer-Selection.md
rename to pages/infrastructure-networking/Kademlia-Peer-Selection.md
diff --git a/Layers.md b/pages/infrastructure-networking/Layers.md
similarity index 100%
rename from Layers.md
rename to pages/infrastructure-networking/Layers.md
diff --git a/Mining.md b/pages/infrastructure-networking/Mining.md
similarity index 88%
rename from Mining.md
rename to pages/infrastructure-networking/Mining.md
index f55ae1c0e..2fce6bcb0 100644
--- a/Mining.md
+++ b/pages/infrastructure-networking/Mining.md
@@ -21,7 +21,7 @@ The difficulty dynamically adjusts so that on average one block is produced by t
Any node participating in the network can be a miner and their expected revenue from mining will be directly proportional to their (relative) mining power or **hashrate**, ie., number of nonces tried per second normalised by the total hashrate of the network.
-Ethash PoW is memory hard, making it basically ASIC resistant. This basically means that calculating the PoW requires choosing subsets of a fixed resource dependent on the nonce and block header. This resource (a few gigabyte size data) is called a **DAG**. The [DAG](https://github.com/ethereum/wiki/wiki/Ethash-DAG) is totally different every 30000 blocks (a 100 hour window, called an **epoch**) and takes a while to generate. Since the DAG only depends on block height, it can be pregenerated but if its not, the client need to wait the end of this process to produce a block. Until clients actually precache dags ahead of time the network may experience a massive block delay on each epoch transition. Note that the DAG does not need to be generated for verifying the PoW essentially allowing for verification with both low CPU and small memory.
+Ethash PoW is memory hard, making it ASIC resistant. This means that calculating the PoW requires choosing subsets of a fixed resource dependent on the nonce and block header. This resource (a few gigabyte size data) is called a **DAG**. The [DAG](https://github.com/ethereum/wiki/wiki/Ethash-DAG) is totally different every 30000 blocks (a 100 hour window, called an **epoch**) and takes a while to generate. Since the DAG only depends on block height, it can be pregenerated but if its not, the client needs to wait till the end of this process to produce a block. Until clients actually precache dags ahead of time the network may experience a massive block delay on each epoch transition. Note that the DAG does not need to be generated for verifying the PoW essentially allowing for verification with both low CPU and small memory.
As a special case, when you start up your node from scratch, mining will only start once the DAG is built for the current epoch.
diff --git a/NatSpec-Determination.md b/pages/infrastructure-networking/NatSpec-Determination.md
similarity index 100%
rename from NatSpec-Determination.md
rename to pages/infrastructure-networking/NatSpec-Determination.md
diff --git a/Natspec-Example.md b/pages/infrastructure-networking/Natspec-Example.md
similarity index 100%
rename from Natspec-Example.md
rename to pages/infrastructure-networking/Natspec-Example.md
diff --git a/Network-Status.md b/pages/infrastructure-networking/Network-Status.md
similarity index 100%
rename from Network-Status.md
rename to pages/infrastructure-networking/Network-Status.md
diff --git a/NewBlock-Message.md b/pages/infrastructure-networking/NewBlock-Message.md
similarity index 100%
rename from NewBlock-Message.md
rename to pages/infrastructure-networking/NewBlock-Message.md
diff --git a/Raspberry-Pi-instructions.md b/pages/infrastructure-networking/Raspberry-Pi-instructions.md
similarity index 100%
rename from Raspberry-Pi-instructions.md
rename to pages/infrastructure-networking/Raspberry-Pi-instructions.md
diff --git a/Registrar-ABI.md b/pages/infrastructure-networking/Registrar-ABI.md
similarity index 100%
rename from Registrar-ABI.md
rename to pages/infrastructure-networking/Registrar-ABI.md
diff --git a/URL-Hint-Protocol.md b/pages/infrastructure-networking/URL-Hint-Protocol.md
similarity index 100%
rename from URL-Hint-Protocol.md
rename to pages/infrastructure-networking/URL-Hint-Protocol.md
diff --git a/Decentralized-apps-(dapps).md b/pages/introduction/Decentralized-apps-(dapps).md
similarity index 100%
rename from Decentralized-apps-(dapps).md
rename to pages/introduction/Decentralized-apps-(dapps).md
diff --git a/Ethereum-introduction.md b/pages/introduction/Ethereum-introduction.md
similarity index 100%
rename from Ethereum-introduction.md
rename to pages/introduction/Ethereum-introduction.md
diff --git a/FAQ.md b/pages/introduction/FAQ.md
similarity index 100%
rename from FAQ.md
rename to pages/introduction/FAQ.md
diff --git a/Gitter-Channels.md b/pages/introduction/Gitter-Channels.md
similarity index 100%
rename from Gitter-Channels.md
rename to pages/introduction/Gitter-Channels.md
diff --git a/Glossary.md b/pages/introduction/Glossary.md
similarity index 99%
rename from Glossary.md
rename to pages/introduction/Glossary.md
index dbc6194c1..06dd59b44 100644
--- a/Glossary.md
+++ b/pages/introduction/Glossary.md
@@ -46,7 +46,7 @@ See also: http://ethereum.org/ethereum.html
* **Externally owned account**: an account controlled by a private key. Externally owned accounts cannot contain EVM code.
* **Contract**: an account which contains, and is controlled by, EVM code. Contracts cannot be controlled by private keys directly; unless built into the EVM code, a contract has no owner once released.
* **Ether**: the primary internal cryptographic token of the Ethereum network. Ether is used to pay transaction and computation fees for Ethereum transactions.
-* **Gas**: a measurement roughly equivalent to computational steps. Every transaction is required to include a gas limit and a fee that it is willing to pay per gas; miners have the choice of including the transaction and collecting the fee or not. If the total number of gas used by the computation spawned by the transaction, including the original message and any sub-messages that may be triggered, is less than or equal to the gas limit, then the transaction processes. If the total gas exceeds the gas limit, then all changes are reverted, except that the transaction is still valid and the fee can still be collected by the miner. Every operation has a gas expenditure; for most operations it is 1, although some expensive operations fave expenditures up to 100 and a transaction itself has an expenditure of 500.
+* **Gas**: a measurement roughly equivalent to computational steps. Every transaction is required to include a gas limit and a fee that it is willing to pay per gas; miners have the choice of including the transaction and collecting the fee or not. If the total number of gas used by the computation spawned by the transaction, including the original message and any sub-messages that may be triggered, is less than or equal to the gas limit, then the transaction processes. If the total gas exceeds the gas limit, then all changes are reverted, except that the transaction is still valid and the fee can still be collected by the miner. Every operation has a gas expenditure; for most operations it is 1, although some expensive operations have expenditures up to 100 and a transaction itself has an expenditure of 500.
### Non-blockchain
@@ -79,4 +79,4 @@ See also: http://ethereum.org/ethereum.html
* **Web of trust**: the idea that if A highly rates B, and B highly rates C, then A is likely to trust C. Complicated and powerful mechanisms for determining the reliability of specific individuals in specific concepts can theoretically be gathered from this principle.
* **Escrow**: if two low-reputation entities are engaged in commerce, the payer may wish to leave the funds with a high-reputation third party and instruct that party to send the funds to the payee only when the product is delivered. This reduces the risk of the payer or payee committing fraud.
* **Deposit**: digital property placed into a contract involving another party such that if certain conditions are not satisfied that property is automatically forfeited to the counterparty
-* **Hostage**: digital property placed into a contract such that if certain conditions are not satisfied that property is automatically either destroyed or donated to charity or basic income funds, perhaps with widely distributed benefit but necessarily with no significant benefit to any specific individual.
\ No newline at end of file
+* **Hostage**: digital property placed into a contract such that if certain conditions are not satisfied that property is automatically either destroyed or donated to charity or basic income funds, perhaps with widely distributed benefit but necessarily with no significant benefit to any specific individual.
diff --git a/Home.md b/pages/introduction/Home.md
similarity index 100%
rename from Home.md
rename to pages/introduction/Home.md
diff --git a/What-is-Ethereum.md b/pages/introduction/What-is-Ethereum.md
similarity index 98%
rename from What-is-Ethereum.md
rename to pages/introduction/What-is-Ethereum.md
index c427d5e04..0bb7ecfdd 100644
--- a/What-is-Ethereum.md
+++ b/pages/introduction/What-is-Ethereum.md
@@ -3,12 +3,12 @@ name: What is Ethereum?
category:
---
-#What is Ethereum?
+# What is Ethereum?
Ethereum, like any advanced system, will mean different things to different people. As you read this section, some bits may not resonate with you or even make sense. That is fine, just skip to the next paragraph and hopefully that one will be more enlightening. If you reach the end of this section and still feel confused, then jump on a forum and start asking questions.
-##A World Computer
+## A World Computer
>"It is very possible that ... one machine would suffice to solve all the problems ... of the whole [world]" - Sir Charles Darwin, 1946*
@@ -17,7 +17,7 @@ In a technical sense, Ethereum is a "world computer". Harking back to the days o
You may ask, "why would anyone use such a system?" and again there are many reasons. The main reason is because it makes what you want to do cheaper and easier. This statement needs to be broken down somewhat, which is what the following paragraphs explore.
-##An Internet Service Platform
+## An Internet Service Platform
>"Technology gives us the facilities that lessen the barriers of time and distance - the telegraph and cable, the telephone, radio, and the rest." - Emily Greene Balch
@@ -35,7 +35,7 @@ Over the last twenty years in particular, we have seen an acceleration in the de
With the coming of the Mix IDE and the Mist browser, the functionality of Ethereum as a deployment platform for internet services will become more clear. The take-home message from this section, however, is that Ethereum is poised to disrupt industries as diverse as finance and supply chains.
-##Opt-in Social Contracts
+## Opt-in Social Contracts
> "This is an era of organization" - Theodore Roosevelt, 1912**
@@ -44,7 +44,7 @@ At a more abstract level, it is a facility for enabling smart organization, in t
Crowdfunding is a key example in the advancement organizational tools. It provides a couple of really important functions: a way for individuals to work together for a particular cause (in this case giving a wedge of cash to a person or group) and a mechanism for individuals to interact meaningfully with potentially large companies (such as a games studio). The first follows from the previous paragraph, but the second point is impressive also, because in general individuals can only communicate with large organizations on the organization's terms, which often default to "ignore"; in the same way you ignore the bacteria on your skin. As it stands, you might be disgruntled by the crowdfunding recipient taking your money and spending it in a wholey inappropriate and therefore inefficient manner. However, it's hard to get the operating company to act on your behalf against the recipient. After all, the crowdfunding service provider is likely to be a large company and there isn't a universal mechanism with which you can meaningfully communicate with it if it does not want you to. Ethereum can help by allowing you to define post-funding milestones or conditions to stage the payment of the total amount raised, and then enforce those conditions for you. As times goes on, we will get more creative in the ways in which Ethereum can interact with the real world and the ability of Ethereum to check that milestones have been completed will extend beyond the obvious such as "30% of the crowd that funded the project (by value) have voted that the milestone has been passed".
-##Part of the Decentralization Revolution
+## Part of the Decentralization Revolution
>"No matter who you vote for, the government always gets in" - The Bonzo Dog Doo-Dah Band, 1992
@@ -53,12 +53,12 @@ Philosophically, it is the next step in re-decentralizing the internet. A decent
Ethereum allows people to safely interact trustlessly by entering into neutrally enforceable agreements in a completely peer-to-peer fashion. Now, it must be remembered that Ethereum can only enforce within its own digital limits; Ethereum does not remove the need for an external authority for adjudication over disputes outside its realm---"the other party punched me in the face after putting in the Ethereum contract that he wouldn't" is non-sense, but rules exist elsewhere to cover this---but what Ethereum does do is allow us to push the boundary on what the digital realm can cover.
-##Conclusion
+## Conclusion
Gavin Wood has distilled the description of Ethereum to being a collection of non-localized singleton programmable data structures. What this means will depend on where you are coming from, but wherever you are, it's probably going to be better with Ethereum.
-###Notes
+### Notes
*Copeland, Jack (2006). Colossus: The Secrets of Bletchley Park's Codebreaking Computers. Oxford University Press. p.109
Note that T.J.Watson, the former head of IBM, almost certainly never said, "I think there is a world market for maybe five computers", although for a time (late 1940s, early 1950s) it was indeed the case that there was, in the United States, a market for about five computers.
diff --git a/[German]-Clearinghaus.md b/pages/other-languages/[German]-Clearinghaus.md
similarity index 100%
rename from [German]-Clearinghaus.md
rename to pages/other-languages/[German]-Clearinghaus.md
diff --git a/[Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md b/pages/other-languages/[Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md
similarity index 100%
rename from [Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md
rename to pages/other-languages/[Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md
diff --git a/[Italian]-Introduzione-allo-sviluppo-su-Ethereum.md b/pages/other-languages/[Italian]-Introduzione-allo-sviluppo-su-Ethereum.md
similarity index 100%
rename from [Italian]-Introduzione-allo-sviluppo-su-Ethereum.md
rename to pages/other-languages/[Italian]-Introduzione-allo-sviluppo-su-Ethereum.md
diff --git a/[Italian]-Libro-Bianco.md b/pages/other-languages/[Italian]-Libro-Bianco.md
similarity index 100%
rename from [Italian]-Libro-Bianco.md
rename to pages/other-languages/[Italian]-Libro-Bianco.md
diff --git a/[Japanese]-Cryptocurrency-Current-Problems.md b/pages/other-languages/[Japanese]-Cryptocurrency-Current-Problems.md
similarity index 100%
rename from [Japanese]-Cryptocurrency-Current-Problems.md
rename to pages/other-languages/[Japanese]-Cryptocurrency-Current-Problems.md
diff --git a/[Japanese]--Ethereum-Development-Tutorial.md b/pages/other-languages/[Japanese]-Ethereum-Development-Tutorial.md
similarity index 64%
rename from [Japanese]--Ethereum-Development-Tutorial.md
rename to pages/other-languages/[Japanese]-Ethereum-Development-Tutorial.md
index 4058307fa..3d0c3f5c7 100644
--- a/[Japanese]--Ethereum-Development-Tutorial.md
+++ b/pages/other-languages/[Japanese]-Ethereum-Development-Tutorial.md
@@ -1,15 +1,17 @@
---
name: Ethereum Development Tutorial
-category:
+category:
---
- この項の目的は、契約の生成とDアプリ開発の視点からイーサリアムを理解するのに必要な基礎知識の紹介である。イーサリアムの導入としては、ふつう、はじめに白書に目を通し、さらに技術スペックを網羅するためにYellow Paperを読むが、この項を読む前に必ずしも読んで置く必要はない。つまりこのページが、アプリ開発者にとって、それらにとってかわる導入となりうることを意味する。
+ このページの目的はコントラクトや分散アプリケーションを作成するために、開発の観点から理解する必要があるEthereumの基礎を紹介することです。Ethereumの全般的なイントロダクションについてはホワイトペーパー、完全な技術仕様についてはイエローペーパーが参考になりますが、このページを読むのに必須ではありません。アプリケーション開発者にとって、このページがそれらに代わるEthereumへの導入となり得ます。
### Introduction
- イーサリアム(Ethereum)は blockchain を利用した分散型アプリケーション(D-App)を簡単にプログラム可能にすることを目的とした platform (仮想マシン)である。D-Appとは、ある特定の目的のために事えるアプリであるが、アプリ自身は、その重要な性質として、今あるどのパーティにも依存しない、全く新しいものである。このD-Appというものは、特定のプラットフォームを提供し売り込むための開発環境というよりかはむしろ、(売り手と買い手などといった)違った立場にいる人間や機関が、中央集約型の媒介を無しにして取引、契約等(相互利用)をするための道具である。フィルタリングや第三者認証、紛争解決、個人認証業務のような典型的な「中央集約型の媒介」の業務でさえ、分散型ネットワークで扱うことが可能であり、参加者全員にオープンとなっており、内部トークンシステムとして評判の高いシステムをツールとして採用し、利用者に高品質なサービスを提供する。初期のD-Appの例としては、ファイルシェアアプリとしてBitTorrentが、通貨アプリとしてビットコインが含まれる。イーサリアムは BittorentやBitcoinで使われたものや、P2Pネットワークやブロックチェイン技術を含む最初の進化版開発物(web3.0)といえよう。そして、開発者がこれらの技術を使いやすいように一般化したものだ。
+ Ethereumは、ブロックチェーンを利用した分散型アプリケーション(DApps)を簡単にプログラムすることを目的としたプラットフォームです。DAppsとは、ユーザーに対し特定の目的のためを果たすアプリケーションですが、アプリケーション自体は既存の特定の管理者に依存しないという重要な特性を持っています。DAppsは、特定の管理者のサービスを提供するためのフロントエンドとして機能するのではなく、仲介業者なしで人や組織がやり取りするのためのツールです。
- イーサリアムのブロックチェインは(ビットコインに見られる単なる金銭記録データではなく)プログラミング言語が組み込まれたブロックチェインというふうに説明できる。あるいは、大衆の思惑による決定(コンセンサス)を基板とした地球規模の仮想マシンとも言える。Ethereum仮想マシン(EVM)を参照してえられる部分的なプロトコルは、内部状態と計算を実際に処理する。実用的な観点からして、EVMは膨大な量のアカウント(というオブジェクト)を内部に保持する分散型コンピュータと考えることができ、このコンピュータでは各々のオブジェクトがそれぞれ内部コードとストレージという名前の32バイトのkey/valueデータベースを保持し、オブジェクトは他のオブジェクトを意のままに呼び出すことができる。
+ このDAppsというものは、特定のプラットフォームを提供し売り込むための開発環境というよりかはむしろ、(売り手と買い手などといった)違った立場にいる人間や機関が、中央集約型の媒介を無しにして取引、契約等(相互利用)をするための道具である。フィルタリングや第三者認証、紛争解決、個人認証業務のような典型的な「中央集約型の媒介」の業務でさえ、分散型ネットワークで扱うことが可能であり、参加者全員にオープンとなっており、内部トークンシステムとして評判の高いシステムをツールとして採用し、利用者に高品質なサービスを提供する。初期のDAppsの例としては、ファイルシェアアプリとしてBitTorrentが、通貨アプリとしてビットコインが含まれる。Ethereumは BittorentやBitcoinで使われたものや、P2Pネットワークやブロックチェーン技術を含む最初の進化版開発物(web3.0)といえよう。そして、開発者がこれらの技術を使いやすいように一般化したものだ。
+
+ Ethereumのブロックチェーンは(ビットコインに見られる単なる金銭記録データではなく)プログラミング言語が組み込まれたブロックチェーンというふうに説明できる。あるいは、大衆の思惑による決定(コンセンサス)を基板とした地球規模の仮想マシンとも言える。Ethereum仮想マシン(EVM)を参照してえられる部分的なプロトコルは、内部状態と計算を実際に処理する。実用的な観点からして、EVMは膨大な量のアカウント(というオブジェクト)を内部に保持する分散型コンピュータと考えることができ、このコンピュータでは各々のオブジェクトがそれぞれ内部コードとストレージという名前の32バイトのkey/valueデータベースを保持し、オブジェクトは他のオブジェクトを意のままに呼び出すことができる。
〜アカウントには2つのタイプがある〜
オブジェクトの外側の世界からEVMを使用してアクセスすることができるアカウント(オブジェクト)として「外部所有アカウント(EOA,EOアカウント)」という名の特別なタイプがある。あるEOアカウントから他のどんなアカウントに対する「メッセージ」も、そのEOアカウントの秘密鍵で署名されたトランザクションを送ることが引き金となり、送ることが可能だ。EOアカウントでないものは「 契約、contract 」と呼ばれ、「メッセージ」の受け取り、自動的に内部コードを実行し、(自身のもつ内部ストレージに読み書きする能力を持つ。)受け取った「メッセージ」のストレージを読み取り、そして他の契約アカウントにメッセージを送る。(自分自身にも送ることができる。) ひとつの捉え方として、contract とは、契約を遂行するためのプログラミングコードだ。
@@ -27,7 +29,7 @@ category:
4. ライブラリとして機能する。
他の契約によって呼び出される関数を格納しておく。
- contract は、互いに「 呼出 calling 」や「 送信 sending message 」などと呼ばれる動作を通じて作用しあう。一通の「メッセージ」は、1.ある量のether 2.どんなサイズのデータを格納したバイト型配列 3.送受信者双方のアドレス を保持する。契約アカウントが、返り値としてあるデータを返す「メッセージ」を受信し、その返り値をメッセージの送り手がすぐに使用できるようなときは、「送信」とは、まさに、プログラミングにおける関数の履行である。
+ contract は、互いに「 呼出(calling)」や「 送信(sending message)」などと呼ばれる動作を通じて作用しあう。一通の「メッセージ」は、1.ある量のether 2.どんなサイズのデータを格納したバイト型配列 3.送受信者双方のアドレス を保持する。契約アカウントが、返り値としてあるデータを返す「メッセージ」を受信し、その返り値をメッセージの送り手がすぐに使用できるようなときは、「送信」とは、まさに、プログラミングにおける関数の履行である。
以上に示したように、契約アカウントは異なる働きをし、それら同士が互いに作用しあうことが期待できる。例をあげよう。次のような状況を考えてみよう。
アリスとボブが、「来年サンフランシスコの気温が35度を超えることはない」ということに100Gavcoin(開発者の名前が付けられた仮想通貨)の賭けをしたとしよう。しかし、アリスは危険回避思考の持ち主で、アリスの第一アカウントは、マルチシグをかけた「前進型契約」を保持している。ボブは量子暗号に猜疑的で(疑い深く)、伝統的な楕円曲線アルゴリズムに沿ったランポート署名を施したメッセージを転送する「前進型契約」を保持している(訳略)。この賭博を管理する契約アカウントはそれ自身サンフランシスコの気象データをあるコントラクトから呼び出してこないといけない。(以後、契約アカウントの呼び名として、プログラマであるわれわれがmethodのことをメソッドと呼ぶように、コントラクトと呼ぶことにする。コンストラクタ等と混同しないように別名がほしいところだが。)またGavCoinコントラクトともやりとりしなくてはならない。・・・
@@ -36,7 +38,7 @@ category:
![img](https://github.com/ethereumbuilders/GitBook/blob/master/en/vitalik-diagrams/contract_relationship.png)
スタック上に積み上がっていくメソッドの呼び出し(コールスタック)を頭に思い描くことができれば、
-ここでの説明は容易であろう。
+ここでの説明は容易であろう。
ボブが賭けを終了させたいと思った時、次のことが起こる:
@@ -55,7 +57,7 @@ GavCoin はすべて Gavcion contract データベースの項目として "貯
### State Machine
- Ethereum仮想マシンの計算処理は、ビットコインスクリプトと伝統的アセンブラやリスプといったものの架け橋である、スタックベースのバイトコード言語を使用する。(Lispは再帰的コントラクト呼出の機能の役割を担う。)仮想マシン上のプログラムは以下のようなopcodesのシーケンスである。
+ Ethereum仮想マシンの計算処理は、ビットコインスクリプトと伝統的アセンブラやLispといったものの架け橋である、スタックベースのバイトコード言語を使用する。(Lispは再帰的コントラクト呼出の機能の役割を担う。)仮想マシン上のプログラムは以下のようなopcodesのシーケンスである。
PUSH1 0 CALLDATALOAD SLOAD NOT PUSH1 9 JUMPI STOP PUSH1 32 CALLDATALOAD PUSH1 0 CALLDATALOAD SSTORE
@@ -68,60 +70,45 @@ GavCoin はすべて Gavcion contract データベースの項目として "貯
PC: 0 STACK: [] MEM: [], STORAGE: {}
-最初の命令は、PUSH1 で
-スタックに値0をpushする。 PUSH1は1バイトの値を扱う。
-よって:
+最初の命令は`PUSH1`で次の値である0をスタックにpushする。`PUSH1`は1バイトの値を扱う。よって以下のような状態に変わる:
PC: 2 STACK: [0] MEM: [], STORAGE: {}
-二つ目の命令は CALLDATALOAD で、
-スタックから取り出される値(ここでは0)をアドレスとしてメッセージデータを参照し、
-そこに格納されている値(ここでは54)をスタックに取り込む。
-よって:
+2番目の命令である`CALLDATALOAD`では、スタックから値を一つ取り出し、そのアドレス先のデータの先頭32バイトのメッセージを取得し、その値をスタックに保存する(ここでは先頭の32ビットが54である)。よって以下のような状態に変わる:
PC: 3 STACK: [54] MEM: [], STORAGE: {}
-SLOAD;
-スタックから一つ取り出し、その値を参照値としたストレージの値を、スタックへ入れる。
+次の命令の`SLOAD`はスタックから値を一つ取り出し、contractのstorageの参照先の値をスタックに保存する。今回初めてcontractは使用するため値が入っておらず、値は0が埋められる:
PC: 4 STACK: [0] MEM: [], STORAGE: {}
-NOT;
-スタックから値を取り出し
-0であれば、 1をスタックに入れる。
-0以外であれば、0をスタックに入れる。
+`NOT`スタックから値を取り出し、0であれば1を、それ以外は0をスタックに入れる:
PC: 5 STACK: [1] MEM: [], STORAGE: {}
-Next, we PUSH1 9.
+次は`PUSH1`であるため、9をスタックに保存する:
PC: 7 STACK: [1, 9] MEM: [], STORAGE: {}
-JUMPI;
-この命令はスタックから2つの値を取り出し、二つ目の値が0でななければ、一つ目の値によって指定された命令へジャンプする。ここでは0でないのでジャンプする。もしストレージ内の54番目の値が0でなかったならば、スタックの二つ目の値が0になっているだろう。よって、この場合ジャンプできずに動作がここで終了する。
-
- PC: 9 STACK: [] MEM: [], STORAGE: {}
+次の`JUMPI`命令では、スタックから2つの値を取り出し、二つ目の値が0でなければ、一つ目の値によって指定された命令へジャンプする。ここでは0でないのでジャンプする。もしストレージ内の54番目の値が0でなかったならば、スタックの二つ目の値が0になっているだろう。よって、この場合ジャンプできずに動作がここで終了する:
-Here, we PUSH1 32.
+次は`PUSH1`であるため、32をスタックに保存する.
PC: 11 STACK: [32] MEM: [], STORAGE: {}
-Now, we CALLDATALOAD again, popping 32 and pushing the bytes in message data starting from byte 32 until byte 63.
+次は再び`CALLDATALOAD`である。 スタックの32バイト目から63バイトまで値を取得しスタックに保存する:
PC: 13 STACK: [2020202020] MEM: [], STORAGE: {}
-Next, we PUSH1 0.
+次は`PUSH1`で0をスタックに保存する:
PC: 14 STACK: [2020202020, 0] MEM: [], STORAGE: {}
-Now, we load message data bytes 0-31 again (loading message data is just as cheap as loading memory, so we don't bother to save it in memory)
+そして再び0-31バイト目のデータを取得してスタックに保存する (なぜメモリに保存させて再利用しないかって?それはメモリからロードをする方が安上がりだからさ):
PC: 16 STACK: [2020202020, 54] MEM: [], STORAGE: {}
-最後は SSTORE で、
-スタックから取り出した1番目の値を、ストレージ内の参照値とした場所へ、
-二つ目の値を格納する。
-よって:
+最後は`SSTORE`で、スタックから取り出した1番目の値を、ストレージ内の参照値とした場所へ、二つ目の値を格納する。よって以下の通りになる:
PC: 17 STACK: [] MEM: [], STORAGE: {54: 2020202020}
@@ -131,8 +118,8 @@ Now, we load message data bytes 0-31 again (loading message data is just as chea
LLLやSerpent、Mutanなどと言った数々の高級言語が存在し、コントラクトをもっと簡単に記述してくれる。これらの言語で書かれたどんな言語もEthereum仮想マシンにコンパイルされ、あなたがEVMバイトコードを含むトランザクション上で呼び出すコントラクトを作成する。
トランザクションには二つのタイプがある。
-「イーサー送信トランザクション」と「コントラクト生成トランザクション」だ。
-イーサー送信トランザクションとは標準的なトランザクションのことで、受信用アドレス、etherの額、バイト型配列のデータと他のパラメータを含み、秘密鍵による署名は送信者のアカウントに関連づけられている。「コントラクト生成トランザクション」は、受信用アドレスが空である点を除いて標準的なトランザクションと似ている。コントラクト生成トランザクションがブロックチェインに自身を組み込むとき、トランザクションのバイト型配列のデータはEVMコードとして解釈され、EVMの実行による返り値が新しいコントラクトのコードとなる。このように、初期化の間中、ひとつのトランザクションにあることをやってもらうことができる。新しいコントラクトのアドレスは送信アドレスとそのアカウントが以前トランザクションを作成した回数に基づいて決定論的に計算される。(nonceと呼ばれるこの値もまた別のセキュリティの観点から保存される。)このように、上記のnameレジストリを生成するためにブロックチェイン上に載せる必要があるフルコードは以下のとおり:
+「Ether送信トランザクション」と「コントラクト生成トランザクション」だ。
+Ether送信トランザクションとは標準的なトランザクションのことで、受信用アドレス、etherの額、バイト型配列のデータと他のパラメータを含み、秘密鍵による署名は送信者のアカウントに関連づけられている。「コントラクト生成トランザクション」は、受信用アドレスが空である点を除いて標準的なトランザクションと似ている。コントラクト生成トランザクションがブロックチェーンに自身を組み込むとき、トランザクションのバイト型配列のデータはEVMコードとして解釈され、EVMの実行による返り値が新しいコントラクトのコードとなる。このように、初期化の間中、ひとつのトランザクションにあることをやってもらうことができる。新しいコントラクトのアドレスは送信アドレスとそのアカウントが以前トランザクションを作成した回数に基づいて決定論的に計算される。(nonceと呼ばれるこの値もまた別のセキュリティの観点から保存される。)このように、上記のnameレジストリを生成するためにブロックチェーン上に載せる必要があるフルコードは以下のとおり:
PUSH1 16 DUP PUSH1 12 PUSH1 0 CODECOPY PUSH1 0 RETURN STOP PUSH1 0 CALLDATALOAD SLOAD NOT PUSH1 9 JUMPI STOP PUSH1 32 CALLDATALOAD PUSH1 0 CALLDATALOAD SSTORE
@@ -141,12 +128,12 @@ LLLやSerpent、Mutanなどと言った数々の高級言語が存在し、コ
### Gas
- 仮想マシンを動かす上で重要な側面がある。それは「仮想マシン内部で処理されるあらゆる単一操作は、実際はすべてのノード上で同時に実行される」ということだ。イーサリウム1.0の必要なコンポーネントであり、「仮想マシン上のどんなコントラクトもほぼコスト0で他のあらゆるコントラクトを呼び出すことができる」といった恩恵をもたしてくれる。しかしながら、Ethereum仮想マシン上での計算処理のステップはとても高価なもとなる。Ethereum仮想マシンの使用方法の概要は、「1999年代以降のスマホでできないことは、ここでもできない。」とでもとらえておけばだいたい正しい。
-ビジネスロジックを走らせたり、署名やその他の暗号オブジェクトの有効化をしているEVMの正しい使用法として;EVMの使用法の上限としてあるのが、他のブロックチェインの部分集合を有効化するアプリケーションだ。(例:分散型ether - bitcoin 両替所) 受け入れがたい使い道としては、ファイルストレージやEmailテキスト、メールシステム、画像処理インターフェースを用いて行うプログラムや遺伝的アルゴリズムや機械学習、グラフ探索などのcloud computingにベストマッチするアプリケーションなどだ。
+ 仮想マシンを動かす上で重要な側面がある。それは「仮想マシン内部で処理されるあらゆる単一操作は、実際はすべてのノード上で同時に実行される」ということだ。Ethereum1.0の必要なコンポーネントであり、「仮想マシン上のどんなコントラクトもほぼコスト0で他のあらゆるコントラクトを呼び出すことができる」といった恩恵をもたしてくれる。しかしながら、Ethereum仮想マシン上での計算処理のステップはとても高価なもとなる。Ethereum仮想マシンの使用方法の概要は、「1999年代以降のスマホでできないことは、ここでもできない。」とでもとらえておけばだいたい正しい。
+ビジネスロジックを走らせたり、署名やその他の暗号オブジェクトの有効化をしているEVMの正しい使用法として;EVMの使用法の上限としてあるのが、他のブロックチェーンの部分集合を有効化するアプリケーションだ。(例:分散型ether - bitcoin 両替所) 受け入れがたい使い道としては、ファイルストレージやEmailテキスト、メールシステム、画像処理インターフェースを用いて行うプログラムや遺伝的アルゴリズムや機械学習、グラフ探索などのcloud computingにベストマッチするアプリケーションなどだ。
- 故意による攻撃や破壊を予防するため、イーサリウムプロトコルは、一計算ステップあたりの使用料を徴収する。料金は市場に基づくものの、いざ動かしてみると強制力をともわすような設計がなされている。;ブロックひとつあたりに蓄えられるオペレーション数の流動的上限があることによって、ほぼコストなしでトランザクションをインクルードすることのできる(ブロックを生成することのできる)マイナー(採掘者)でさえネットワーク全体へのトランザクションのコストと同額の使用料が課せられる。手数料とブロックのオペレーション上限のシステムの経済基礎知識についての詳細は、イーサリウム白書の「fee」の項目を参照。
+ 故意による攻撃や破壊を予防するため、Ethereumプロトコルは、一計算ステップあたりの使用料を徴収する。料金は市場に基づくものの、いざ動かしてみると強制力をともわすような設計がなされている。;ブロックひとつあたりに蓄えられるオペレーション数の流動的上限があることによって、ほぼコストなしでトランザクションをインクルードすることのできる(ブロックを生成することのできる)マイナー(採掘者)でさえネットワーク全体へのトランザクションのコストと同額の使用料が課せられる。手数料とブロックのオペレーション上限のシステムの経済基礎知識についての詳細は、Ethereum白書の「fee」の項目を参照。
- 手数料が実際にどう動くかをいかに述べる。あらゆるドランザクションは、他のデータとともに、ガス価格とガス開始値を含む。ガス開始値とはガスの量であり、トランザクション自身がそれを確約する。ガス価格とはトランザクションが支払うことになる単位ガス料金だ。;このようにして、トランサクションが送られると、ガスがあるとき最初に行われるのが、送信者のアカウントのバランスから、トランザクションの値と、(ガス価格☓ガス開始値)[wei]を足したものを差し引く。ガス価格は送信者によりセットされるが、低すぎるガス価格のトランザクションの処理は、採掘者が拒否をする可能性が高いだろう。
+ 手数料が実際にどう動くかをいかに述べる。あらゆるトランザクションは、他のデータとともに、ガス価格とガス開始値を含む。ガス開始値とはガスの量であり、トランザクション自身がそれを確約する。ガス価格とはトランザクションが支払うことになる単位ガス料金だ。;このようにして、トランサクションが送られると、ガスがあるとき最初に行われるのが、送信者のアカウントのバランスから、トランザクションの値と、(ガス価格☓ガス開始値)[wei]を足したものを差し引く。ガス価格は送信者によりセットされるが、低すぎるガス価格のトランザクションの処理は、採掘者が拒否をする可能性が高いだろう。
ガスはざっくりといえば、計算ステップのカウンターとして考えることができ、トランザクションの実行中存在するもので、実行が終われば消えてなくなる。トランザクションの実行が始まった時、今あるガスは(ガス開始値 - 500 - 5 ☓ トランザクションデータ長※)としてセットされる。全計算ステップにおいて、あるガス量(ふつう1で、時々オペレーションに依存して値が大きくなる)が全体から差し引かれていく。もしガスが0に達すれば、すべての実行は元に戻るがトランザクションは有効で送信者はガスの料金を支払わなければならない。もし、トランザクションの実行が無事終了し、Nだけガスがのこっていたら、N×ガス価格が払い戻されるというわけだ。
@@ -224,9 +211,9 @@ The opcodes in the EVM are as follows:
Note that high-level languages will often have their own wrappers for these opcodes, sometimes with very different interfaces.
-### Basics of the Ethereum Blockchain
+### Ethereum ブロックチェーンの基本
- イーサリアム・ブロックチェイン(あるいは「帳簿」)は分散型で(中央集約型ではなく)、全アカウントのカレントステイト(現在の状態)を保持し、大規模に複製されたデータベースである。このブロックチェーンは全アカウントの状態を貯蔵するのに、[「パトリシア木」](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree) というデータ構造を採用している。この「パトリシア木」は本質的に、一般的なKey/value貯蔵時にふるまう「マークル木」の特殊型である。標準のマークル木のように、パトリシア木はルートハッシュを保持している。ルートハッシュは、木構造全体を参照するために使用可能で、木のコンテンツはルートハッシュの変更なしに修正不可能である。それぞれのアカウントのために、木は、[ account_nonce, ether_balance, code_hash, storage_root ] をふくんだ、4つの構成要素からなるタップル(4-tuple)を貯蔵している。ここで、このタップルの要素の定義は以下の通りである。
+ Ethereum・ブロックチェーン(あるいは「帳簿」)は分散型で(中央集約型ではなく)、全アカウントのカレントステイト(現在の状態)を保持し、大規模に複製されたデータベースである。このブロックチェーンは全アカウントの状態を貯蔵するのに、[「パトリシア木」](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree) というデータ構造を採用している。この「パトリシア木」は本質的に、一般的なKey/value貯蔵時にふるまう「マークル木」の特殊型である。標準のマークル木のように、パトリシア木はルートハッシュを保持している。ルートハッシュは、木構造全体を参照するために使用可能で、木のコンテンツはルートハッシュの変更なしに修正不可能である。それぞれのアカウントのために、木は、[ account_nonce, ether_balance, code_hash, storage_root ] をふくんだ、4つの構成要素からなるタップル(4-tuple)を貯蔵している。ここで、このタップルの要素の定義は以下の通りである。
* account_nonce:アカウントから送られたトランザクション数
* ether_balance :アカウントの残金
@@ -237,13 +224,13 @@ Note that high-level languages will often have their own wrappers for these opco
![img](https://raw.githubusercontent.com/ethereumbuilders/GitBook/master/en/vitalik-diagrams/chaindiag.png)
- 毎分、マイナーは新しいブロックを生成し、(イーサリアムのマイニングの概念はビットコインにおける概念と全く同じである。より情報が必要ならばそこらのビットコインのチュートリアルを見るとよい。)新しいブロックは、「一番最近生成されたブロック以降に生成され、かつパトリシア木が、これらのトランザクションを一つのブロックとして適用しマイナーに報酬を与えたのち、そのルートのハッシュ値を新しい状態(状態木)にしてから、新たに生成されたトランザクションのリスト」を含んでいる。
+ 毎分、マイナーは新しいブロックを生成し、(Ethereumのマイニングの概念はビットコインにおける概念と全く同じである。より情報が必要ならばそこらのビットコインのチュートリアルを見るとよい。)新しいブロックは、「一番最近生成されたブロック以降に生成され、かつパトリシア木が、これらのトランザクションを一つのブロックとして適用しマイナーに報酬を与えたのち、そのルートのハッシュ値を新しい状態(状態木)にしてから、新たに生成されたトランザクションのリスト」を含んでいる。
パトリシア木の仕組みのおかげで、もし少ししかない変更がなされれば、木の大部分は変更前の最後の状態と全く同じになるだろう。このように、新しいパトリシア木のノードが単に、古いパトリシア木と新しいパトリシア木が全く同じである空間における古い方のノードを貯蔵する同じメモリアドレスを指し戻すことができるだろうような場合には、同じデータを二度蓄える必要はない。N番目のブロックとN+1番目のブロックの間に(N+1番目のブロックに取り込まれるべき)、千箇所の変更があったとして、たとえ全パトリシア木のデータサイズが何ギガバイトに及ぼうとも、N+1番目のブロックに貯蔵されるのに必要な新しいデータ量はたかだか数百キロバイトであり、基本的にもっと少ない(同じコントラクト内で変化が生じたときは特に)。全てのブロックは、ブロック数、タイムスタンプ、マイナーのアドレス、ガスの上限のような他のデータと同様にして、一つ前のブロックのハッシュ値を含んでいる。
### Graphical Interfaces
- コントラクトはそれ自身とてもパワフルなものだが、Dアプリを完全にするものとは言えない。Dアプリはむしろ、コントラクトとそのコントラクトを使用するグラフィカルインターフェースの融合によるものである。(これは、現バージョンのイーサリアムのことを述べており、イーサリアムの未来バージョンでは、whisperといった、Dアプリ内のノードに対して、ブロックチェインなしで互いにp2pメッセージを送らせることのできるプロトコルを含むだろう。)いまちょうど、そのインターフェイスは、HTML/CSS/JSのウェブページとして実装され、特別な javascript API がイーサリアムブロックチェインと一緒に動作する eth オブジェクト形式の中にある。javascript APIのキーとなる部分は以下の通りである。
+ コントラクトはそれ自身とてもパワフルなものだが、Dアプリを完全にするものとは言えない。Dアプリはむしろ、コントラクトとそのコントラクトを使用するグラフィカルインターフェースの融合によるものである。(これは、現バージョンのEthereumのことを述べており、Ethereumの未来バージョンでは、whisperといった、Dアプリ内のノードに対して、ブロックチェーンなしで互いにp2pメッセージを送らせることのできるプロトコルを含むだろう。)いまちょうど、そのインターフェイスは、HTML/CSS/JSのウェブページとして実装され、特別な javascript API がEthereumブロックチェーンと一緒に動作する eth オブジェクト形式の中にある。javascript APIのキーとなる部分は以下の通りである。
* `eth.transact(from, ethervalue, to, data, gaslimit, gasprice)` - sends a transaction to the desired address from the desired address (note: `from` must be a private key and `to` must be an address in hex form) with the desired parameters
* `(string).pad(n)` - converts a number, encoded as a string, to binary form `n` bytes long
@@ -253,10 +240,10 @@ Note that high-level languages will often have their own wrappers for these opco
* `eth.key` - the user's private key
* `eth.watch(acct, index, f)` - calls `f` when the given storage entry of the given account changes
- eth オブジェクトを利用するのに、特別なソースファイルやライブラリは全く要らない。
-しかしながら、そうして作られたDアプリはイーサリアムクライアントの中で開いたときのみ動作するようになり、一般的なwebブラウザ上では動かない。Javascript APIの実践的使用例として[the source code of this webpage](http://gavwood.com/gavcoin.html)を訪れるとよい。
+ ethオブジェクトを利用するのに、特別なソースファイルやライブラリは全く要らない。
+しかしながら、そうして作られたDアプリはEthereumクライアントの中で開いたときのみ動作するようになり、一般的なwebブラウザ上では動かない。Javascript APIの実践的使用例として[the source code of this webpage](http://gavwood.com/gavcoin.html)を訪れるとよい。
.
### Fine Points To Keep Track Of
-See [https://github.com/ethereum/wiki/wiki/Subtleties](https://github.com/ethereum/wiki/wiki/Subtleties)
\ No newline at end of file
+See [https://github.com/ethereum/wiki/wiki/Subtleties](https://github.com/ethereum/wiki/wiki/Subtleties)
diff --git a/[Japanese]-Ethereum-TOC.md b/pages/other-languages/[Japanese]-Ethereum-TOC.md
similarity index 100%
rename from [Japanese]-Ethereum-TOC.md
rename to pages/other-languages/[Japanese]-Ethereum-TOC.md
diff --git a/[Japanese]-HPOC_2015.md b/pages/other-languages/[Japanese]-HPOC_2015.md
similarity index 100%
rename from [Japanese]-HPOC_2015.md
rename to pages/other-languages/[Japanese]-HPOC_2015.md
diff --git a/[Japanese]-Javascript-API.md b/pages/other-languages/[Japanese]-Javascript-API.md
similarity index 100%
rename from [Japanese]-Javascript-API.md
rename to pages/other-languages/[Japanese]-Javascript-API.md
diff --git a/[Japanese]--License.md b/pages/other-languages/[Japanese]-License.md
similarity index 100%
rename from [Japanese]--License.md
rename to pages/other-languages/[Japanese]-License.md
diff --git a/[Japanese]-Solidity-Tutorial.md b/pages/other-languages/[Japanese]-Solidity-Tutorial.md
similarity index 100%
rename from [Japanese]-Solidity-Tutorial.md
rename to pages/other-languages/[Japanese]-Solidity-Tutorial.md
diff --git "a/[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md" "b/pages/other-languages/[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md"
similarity index 100%
rename from "[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md"
rename to "pages/other-languages/[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md"
diff --git a/[Japenese]-Ethereum-TOC.md b/pages/other-languages/[Japenese]-Ethereum-TOC.md
similarity index 100%
rename from [Japenese]-Ethereum-TOC.md
rename to pages/other-languages/[Japenese]-Ethereum-TOC.md
diff --git a/[Persian]-Ethereum-TOC.md b/pages/other-languages/[Persian]-Ethereum-TOC.md
similarity index 100%
rename from [Persian]-Ethereum-TOC.md
rename to pages/other-languages/[Persian]-Ethereum-TOC.md
diff --git a/[Romanian]-Block-Protocol-2.0.md b/pages/other-languages/[Romanian]-Block-Protocol-2.0.md
similarity index 100%
rename from [Romanian]-Block-Protocol-2.0.md
rename to pages/other-languages/[Romanian]-Block-Protocol-2.0.md
diff --git a/[Romanian]-CLL.md b/pages/other-languages/[Romanian]-CLL.md
similarity index 100%
rename from [Romanian]-CLL.md
rename to pages/other-languages/[Romanian]-CLL.md
diff --git a/[Romanian]-Cuprins.md b/pages/other-languages/[Romanian]-Cuprins.md
similarity index 100%
rename from [Romanian]-Cuprins.md
rename to pages/other-languages/[Romanian]-Cuprins.md
diff --git a/[Romanian]-Dagger.md b/pages/other-languages/[Romanian]-Dagger.md
similarity index 100%
rename from [Romanian]-Dagger.md
rename to pages/other-languages/[Romanian]-Dagger.md
diff --git a/[Romanian]-Layers.md b/pages/other-languages/[Romanian]-Layers.md
similarity index 100%
rename from [Romanian]-Layers.md
rename to pages/other-languages/[Romanian]-Layers.md
diff --git a/[Romanian]-Limbajul-de-programare-Serpent.md b/pages/other-languages/[Romanian]-Limbajul-de-programare-Serpent.md
similarity index 100%
rename from [Romanian]-Limbajul-de-programare-Serpent.md
rename to pages/other-languages/[Romanian]-Limbajul-de-programare-Serpent.md
diff --git a/[Romanian]-Wire-Protocol.md b/pages/other-languages/[Romanian]-Wire-Protocol.md
similarity index 100%
rename from [Romanian]-Wire-Protocol.md
rename to pages/other-languages/[Romanian]-Wire-Protocol.md
diff --git a/pages/ethereum-toc/[chinese]-ethereum-toc.md b/pages/other-languages/[chinese]-ethereum-toc.md
similarity index 100%
rename from pages/ethereum-toc/[chinese]-ethereum-toc.md
rename to pages/other-languages/[chinese]-ethereum-toc.md
diff --git a/pages/rlp/[chinese]-rlp.md b/pages/other-languages/[chinese]-rlp.md
similarity index 100%
rename from pages/rlp/[chinese]-rlp.md
rename to pages/other-languages/[chinese]-rlp.md
diff --git a/pages/white-paper/[chinese]-white-paper.md b/pages/other-languages/[chinese]-white-paper.md
similarity index 100%
rename from pages/white-paper/[chinese]-white-paper.md
rename to pages/other-languages/[chinese]-white-paper.md
diff --git a/pages/ethereum-toc/[french]-ethereum-toc.md b/pages/other-languages/[french]-ethereum-toc.md
similarity index 100%
rename from pages/ethereum-toc/[french]-ethereum-toc.md
rename to pages/other-languages/[french]-ethereum-toc.md
diff --git a/pages/ethereum-toc/[german]-ethereum-toc.md b/pages/other-languages/[german]-ethereum-toc.md
similarity index 100%
rename from pages/ethereum-toc/[german]-ethereum-toc.md
rename to pages/other-languages/[german]-ethereum-toc.md
diff --git a/pages/rlp/[german]-rlp.md b/pages/other-languages/[german]-rlp.md
similarity index 100%
rename from pages/rlp/[german]-rlp.md
rename to pages/other-languages/[german]-rlp.md
diff --git a/pages/white-paper/[german]-white-paper.md b/pages/other-languages/[german]-white-paper.md
similarity index 100%
rename from pages/white-paper/[german]-white-paper.md
rename to pages/other-languages/[german]-white-paper.md
diff --git a/pages/ethereum-toc/[italian]-ethereum-toc.md b/pages/other-languages/[italian]-ethereum-toc.md
similarity index 100%
rename from pages/ethereum-toc/[italian]-ethereum-toc.md
rename to pages/other-languages/[italian]-ethereum-toc.md
diff --git a/pages/design-rationale/[japanese]-design-rationale.md b/pages/other-languages/[japanese]-design-rationale.md
similarity index 100%
rename from pages/design-rationale/[japanese]-design-rationale.md
rename to pages/other-languages/[japanese]-design-rationale.md
diff --git a/pages/patricia-tree/[japanese]-patricia-tree.md b/pages/other-languages/[japanese]-patricia-tree.md
similarity index 100%
rename from pages/patricia-tree/[japanese]-patricia-tree.md
rename to pages/other-languages/[japanese]-patricia-tree.md
diff --git a/pages/rlp/[japanese]-rlp.md b/pages/other-languages/[japanese]-rlp.md
similarity index 100%
rename from pages/rlp/[japanese]-rlp.md
rename to pages/other-languages/[japanese]-rlp.md
diff --git a/pages/white-paper/[japanese]-white-paper.md b/pages/other-languages/[japanese]-white-paper.md
similarity index 100%
rename from pages/white-paper/[japanese]-white-paper.md
rename to pages/other-languages/[japanese]-white-paper.md
diff --git a/pages/white-paper/[korean]-white-paper.md b/pages/other-languages/[korean]-white-paper.md
similarity index 100%
rename from pages/white-paper/[korean]-white-paper.md
rename to pages/other-languages/[korean]-white-paper.md
diff --git a/pages/white-paper/[persian]-white-paper.md b/pages/other-languages/[persian]-white-paper.md
similarity index 100%
rename from pages/white-paper/[persian]-white-paper.md
rename to pages/other-languages/[persian]-white-paper.md
diff --git a/pages/patricia-tree/[romanian]-patricia-tree.md b/pages/other-languages/[romanian]-patricia-tree.md
similarity index 100%
rename from pages/patricia-tree/[romanian]-patricia-tree.md
rename to pages/other-languages/[romanian]-patricia-tree.md
diff --git a/pages/rlp/[romanian]-rlp.md b/pages/other-languages/[romanian]-rlp.md
similarity index 100%
rename from pages/rlp/[romanian]-rlp.md
rename to pages/other-languages/[romanian]-rlp.md
diff --git a/pages/white-paper/[romanian]-white-paper.md b/pages/other-languages/[romanian]-white-paper.md
similarity index 100%
rename from pages/white-paper/[romanian]-white-paper.md
rename to pages/other-languages/[romanian]-white-paper.md
diff --git a/pages/other-languages/[spanish]-ethereum-toc.md b/pages/other-languages/[spanish]-ethereum-toc.md
new file mode 100644
index 000000000..1f4770a5b
--- /dev/null
+++ b/pages/other-languages/[spanish]-ethereum-toc.md
@@ -0,0 +1,24 @@
+---
+name: Ethereum TOC
+category:
+---
+
+### Bienvenidos a Ethereum, la plataforma para la siguiente generación de contratos inteligentes y aplicaciones descentralizadas.
+
+[Whitepaper de Ethereum](https://github.com/ethereum/wiki/wiki/White-Paper)
+
+[RLP](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP), Prefijo Linear Recursivo (Recursive Linear Prefix), usado para codificación de datos a través de Ethereum.
+
+[Patricia Tree](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree) especificaciones del árbol Merkle Patricia (“Merkle Patria Tree”, también conocido como Trie), la estructura usada para almacenar y procesar a través de funciones Hash el estado de la cadena de bloques en Ethereum.
+
+[Protocolo de conexión](https://github.com/ethereum/wiki/wiki/Ethereum-Wire-Protocol), especificaciones.
+
+[CLL](https://github.com/ethereum/wiki/blob/master/CLL.md), Lenguage de alto nivel similar a C usado para crear contratos, especificaciones.
+
+[Dagger](https://github.com/ethereum/wiki/blob/master/Dagger.md), Prueba de trabajo (Proof-of-work) de Ethereum.
+
+[Protocolo de Bloques 2.0](https://github.com/ethereum/wiki/blob/master/Block-Protocol-2.0.md)
+
+[Capas](https://github.com/ethereum/wiki/blob/master/Layers.md)
+
+[Cámara de compensación](https://github.com/ethereum/wiki/blob/master/Clearinghouse.md)
diff --git "a/[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md" "b/pages/other-languages/[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md"
similarity index 100%
rename from "[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md"
diff --git "a/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md" "b/pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md"
similarity index 100%
rename from "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md"
diff --git "a/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md" "b/pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md"
similarity index 99%
rename from "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md"
index b0f12fde4..555f733d3 100644
--- "a/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md"
+++ "b/pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md"
@@ -17,7 +17,7 @@ category:
黄皮书(内有关于以太坊技术的实现规范),
-官方网站(https://www.ethereum.org/)里面有关于包括介绍的视频等以太坊的简要概述,
+官方网站[https://www.ethereum.org/](https://www.ethereum.org/) 里面有关于包括介绍的视频等以太坊的简要概述,
本文档介绍了ĐΞV计划如何制定以太坊的软件平台,在以太坊项目的大背景下ĐΞV计划的定位。
@@ -275,4 +275,4 @@ DAO化 – 虽然DAO化肯定会是加密货币的一个主要的研究重点,
-
\ No newline at end of file
+
diff --git "a/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md" "b/pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md"
similarity index 100%
rename from "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md"
diff --git "a/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md" "b/pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md"
similarity index 99%
rename from "[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md"
index 243b8d309..a2e59f48e 100644
--- "a/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md"
+++ "b/pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md"
@@ -78,7 +78,7 @@
### 挖矿
-![](https://camo.githubusercontent.com/e8e2a0c15c17b066e7f17056f7697819b9a1aa33/687474703a2f2f766974616c696b2e63612f66696c65732f626c6f636b5f706963747572652e706e67)
+![](https://raw.githubusercontent.com/ethereumbuilders/GitBook/master/en/vitalik-diagrams/block.png)
如果我们拥有可信任的中心化服务机构,状态转换系统可以很容易地实现,可以简单地将上述功能准确编码。然而,我们想把比特币系统建成为去中心化的货币系统,为了确保每个人都同意交易的顺序,我们需要将状态转换系统与一个共识系统结合起来。比特币的去中心化共识进程要求网络中的节点不断尝试将交易打包成“区块”。网络被设计为大约每十分钟产生一个区块,每个区块包含一个时间戳、一个随机数、一个对上一个区块的引用(即哈希)和上一区块生成以来发生的所有交易列表。这样随着时间流逝就创建出了一个持续增长的区块链,它不断地更新,从而能够代表比特币账本的最新状态。
@@ -191,7 +191,7 @@ if !self.storage[calldataload(0)]:
3. 初始设定gas=2000,假设交易长为170字节,每字节的费用是5,减去850,所以还剩1150。
4. 从发送者账户减去10个以太币,为合约账户增加10个以太币。
5. 运行代码。在这个合约中,运行代码很简单:它检查合约存储器索引为2处是否已使用,注意到它未被使用,然后将其值置为CHARLIE。假设这消耗了187单位的瓦斯,于是剩余的瓦斯为1150 - 187 = 963。
-6. 向发送者的账户增加963*0.001=0.963个以太币,返回最终状态。
+6. 向发送者的账户增加963*0.001=0.963个以太币,返回最终状态。
如果没有合约接收交易,那么所有的交易费用就等于GASPRICE乘以交易的字节长度,交易的数据就与交易费用无关了。另外,需要注意的是,合约发起的消息可以对它们产生的计算分配瓦斯限额,如果子计算的瓦斯用完了,它只恢复到消息发出时的状态。因此,就像交易一样,合约也可以通过对它产生的子计算设置严格的限制,保护它们的计算资源。
### 代码执行
diff --git "a/[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md" "b/pages/other-languages/[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md"
similarity index 100%
rename from "[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md"
diff --git "a/[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md" "b/pages/other-languages/[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md"
similarity index 100%
rename from "[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md"
rename to "pages/other-languages/[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md"
diff --git "a/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md" "b/pages/other-languages/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md"
similarity index 100%
rename from "\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md"
rename to "pages/other-languages/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md"
diff --git a/Swarm-Hash.md b/pages/swarm/Swarm-Hash.md
similarity index 100%
rename from Swarm-Hash.md
rename to pages/swarm/Swarm-Hash.md
diff --git a/Whisper-Overview.md b/pages/whisper/Whisper-Overview.md
similarity index 100%
rename from Whisper-Overview.md
rename to pages/whisper/Whisper-Overview.md
diff --git a/Whisper-PoC-2-Protocol-Spec.md b/pages/whisper/Whisper-PoC-2-Protocol-Spec.md
similarity index 100%
rename from Whisper-PoC-2-Protocol-Spec.md
rename to pages/whisper/Whisper-PoC-2-Protocol-Spec.md
diff --git a/Whisper-PoC-2-Wire-Protocol.md b/pages/whisper/Whisper-PoC-2-Wire-Protocol.md
similarity index 100%
rename from Whisper-PoC-2-Wire-Protocol.md
rename to pages/whisper/Whisper-PoC-2-Wire-Protocol.md
diff --git a/Whisper-Wire-Protocol.md b/pages/whisper/Whisper-Wire-Protocol.md
similarity index 100%
rename from Whisper-Wire-Protocol.md
rename to pages/whisper/Whisper-Wire-Protocol.md
diff --git a/Whisper.md b/pages/whisper/Whisper.md
similarity index 100%
rename from Whisper.md
rename to pages/whisper/Whisper.md
diff --git a/pages/white-paper/[english]-white-paper.md b/pages/white-paper/[english]-white-paper.md
index 7b31acf22..28b0258fa 100644
--- a/pages/white-paper/[english]-white-paper.md
+++ b/pages/white-paper/[english]-white-paper.md
@@ -1,4 +1,4 @@
----
+---gg
name: White Paper
category: Basics
---
@@ -48,7 +48,7 @@ The mechanism behind proof of work was a breakthrough in the space because it si
### Bitcoin As A State Transition System
-![statetransition.png](http://vitalik.ca/files/statetransition.png?2)
+![statetransition.png](https://raw.githubusercontent.com/vbuterin/diagrams/master/statetransition.png)
From a technical standpoint, the ledger of a cryptocurrency such as Bitcoin can be thought of as a state transition system, where there is a "state" consisting of the ownership status of all existing bitcoins and a "state transition function" that takes a state and a transaction and outputs a new state which is the result. In a standard banking system, for example, the state is a balance sheet, a transaction is a request to move $X from A to B, and the state transition function reduces the value in A's account by $X and increases the value in B's account by $X. If A's account has less than $X in the first place, the state transition function returns an error. Hence, one can formally define:
@@ -76,7 +76,7 @@ The first half of the first step prevents transaction senders from spending coin
### Mining
-![block_picture.jpg](http://vitalik.ca/files/block_picture.png)
+![block_picture.jpg](https://raw.githubusercontent.com/vbuterin/diagrams/master/block.png)
If we had access to a trustworthy centralized service, this system would be trivial to implement; it could simply be coded exactly as described, using a centralized server's hard drive to keep track of the state. However, with Bitcoin we are trying to build a decentralized currency system, so we will need to combine the state transaction system with a consensus system in order to ensure that everyone agrees on the order of transactions. Bitcoin's decentralized consensus process requires nodes in the network to continuously attempt to produce packages of transactions called "blocks". The network is intended to produce roughly one block every ten minutes, with each block containing a timestamp, a nonce, a reference to (ie. hash of) the previous block and a list of all of the transactions that have taken place since the previous block. Over time, this creates a persistent, ever-growing, "blockchain" that constantly updates to represent the latest state of the Bitcoin ledger.
@@ -135,7 +135,7 @@ Even without any extensions, the Bitcoin protocol actually does facilitate a wea
However, the scripting language as implemented in Bitcoin has several important limitations:
* **Lack of Turing-completeness** - that is to say, while there is a large subset of computation that the Bitcoin scripting language supports, it does not nearly support everything. The main category that is missing is loops. This is done to avoid infinite loops during transaction verification; theoretically it is a surmountable obstacle for script programmers, since any loop can be simulated by simply repeating the underlying code many times with an if statement, but it does lead to scripts that are very space-inefficient. For example, implementing an alternative elliptic curve signature algorithm would likely require 256 repeated multiplication rounds all individually included in the code.
-* **Value-blindness** - there is no way for a UTXO script to provide fine-grained control over the amount that can be withdrawn. For example, one powerful use case of an oracle contract would be a hedging contract, where A and B put in $1000 worth of BTC and after 30 days the script sends $1000 worth of BTC to A and the rest to B. This would require an oracle to determine the value of 1 BTC in USD, but even then it is a massive improvement in terms of trust and infrastructure requirement over the fully centralized solutions that are available now. However, because UTXO are all-or-nothing, the only way to achieve this is through the very inefficient hack of having many UTXO of varying denominations (eg. one UTXO of 2k for every k up to 30) and having O pick which UTXO to send to A and which to B.
+* **Value-blindness** - there is no way for a UTXO script to provide fine-grained control over the amount that can be withdrawn. For example, one powerful use case of an oracle contract would be a hedging contract, where A and B put in $1000 worth of BTC and after 30 days the script sends $1000 worth of BTC to A and the rest to B. This would require an oracle to determine the value of 1 BTC in USD, but even then it is a massive improvement in terms of trust and infrastructure requirement over the fully centralized solutions that are available now. However, because UTXO are all-or-nothing, the only way to achieve this is through the very inefficient hack of having many UTXO of varying denominations (eg. one UTXO of 2k for every k up to 30) and having the oracle pick which UTXO to send to A and which to B.
* **Lack of state** - UTXO can either be spent or unspent; there is no opportunity for multi-stage contracts or scripts which keep any other internal state beyond that. This makes it hard to make multi-stage options contracts, decentralized exchange offers or two-stage cryptographic commitment protocols (necessary for secure computational bounties). It also means that UTXO can only be used to build simple, one-off contracts and not more complex "stateful" contracts such as decentralized organizations, and makes meta-protocols difficult to implement. Binary state combined with value-blindness also mean that another important application, withdrawal limits, is impossible.
* **Blockchain-blindness** - UTXO are blind to blockchain data such as the nonce, the timestamp and previous block hash. This severely limits applications in gambling, and several other categories, by depriving the scripting language of a potentially valuable source of randomness.
@@ -189,7 +189,7 @@ Note that the gas allowance assigned by a transaction or contract applies to the
### Ethereum State Transition Function
-![ethertransition.png](http://vitalik.ca/files/ethertransition.png?1)
+![ethertransition.png](https://raw.githubusercontent.com/vbuterin/diagrams/master/ethertransition.png)
The Ethereum state transition function, `APPLY(S,TX) -> S'` can be defined as follows:
@@ -232,7 +232,7 @@ The formal execution model of EVM code is surprisingly simple. While the Ethereu
### Blockchain and Mining
-![apply_block_diagram.png](http://vitalik.ca/files/apply_block_diagram.png)
+![apply_block_diagram.png](https://raw.githubusercontent.com/vbuterin/diagrams/master/apply_block_diagram.png)
The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows:
@@ -348,12 +348,12 @@ As described by Sompolinsky and Zohar, GHOST solves the first issue of network s
Ethereum implements a simplified version of GHOST which only goes down seven levels. Specifically, it is defined as follows:
* A block must specify a parent, and it must specify 0 or more uncles
-* An uncle included in block B must have the following properties:
- * It must be a direct child of the kth generation ancestor of B, where 2 <= k <= 7.
- * It cannot be an ancestor of B
+* An uncle included in block `B` must have the following properties:
+ * It must be a direct child of the `k`-th generation ancestor of `B`, where `2 <= k <= 7`.
+ * It cannot be an ancestor of `B`
* An uncle must be a valid block header, but does not need to be a previously verified or even valid block
* An uncle must be different from all uncles included in previous blocks and all other uncles included in the same block (non-double-inclusion)
-* For every uncle U in block B, the miner of B gets an additional 3.125% added to its coinbase reward and the miner of U gets 93.75% of a standard coinbase reward.
+* For every uncle `U` in block `B`, the miner of `B` gets an additional 3.125% added to its coinbase reward and the miner of `U` gets 93.75% of a standard coinbase reward.
This limited version of GHOST, with uncles includable only up to 7 generations, was used for two reasons. First, unlimited GHOST would include too many complications into the calculation of which uncles for a given block are valid. Second, unlimited GHOST with compensation as used in Ethereum removes the incentive for a miner to mine on the main chain and not the chain of a public attacker.
@@ -379,7 +379,7 @@ However, there are several important deviations from those assumptions in realit
(1) provides a tendency for the miner to include fewer transactions, and (2) increases `NC`; hence, these two effects at least partially cancel each other out. (3) and (4) are the major issue; to solve them we simply institute a floating cap: no block can have more operations than `BLK_LIMIT_FACTOR` times the long-term exponential moving average. Specifically:
- blk.oplimit = floor((blk.parent.oplimit * (EMAFACTOR - 1) + floor(parent.opcount * BLK_LIMIT_FACTOR)) / EMA_FACTOR)
+ blk.oplimit = floor((blk.parent.oplimit * (EMA_FACTOR - 1) + floor(parent.opcount * BLK_LIMIT_FACTOR)) / EMA_FACTOR)
`BLK_LIMIT_FACTOR` and `EMA_FACTOR` are constants that will be set to 65536 and 1.5 for the time being, but will likely be changed after further analysis.
@@ -435,8 +435,6 @@ The issuance model will be as follows:
**Long-Term Supply Growth Rate (percent)**
-![SPV in bitcoin](https://www.ethereum.org/gh_wiki/inflation.svg)
-
_Despite the linear currency issuance, just like with Bitcoin over time the supply growth rate nevertheless tends to zero_
The two main choices in the above model are (1) the existence and size of an endowment pool, and (2) the existence of a permanently growing linear supply, as opposed to a capped supply as in Bitcoin. The justification of the endowment pool is as follows. If the endowment pool did not exist, and the linear issuance reduced to 0.217x to provide the same inflation rate, then the total quantity of ether would be 16.5% less and so each unit would be 19.8% more valuable. Hence, in the equilibrium 19.8% more ether would be purchased in the sale, so each unit would once again be exactly as valuable as before. The organization would also then have 1.198x as much BTC, which can be considered to be split into two slices: the original BTC, and the additional 0.198x. Hence, this situation is _exactly equivalent_ to the endowment, but with one important difference: the organization holds purely BTC, and so is not incentivized to support the value of the ether unit.
From ab5b41742625df9d93c6a34802a51ce0f5afd79b Mon Sep 17 00:00:00 2001
From: jamesray1 <16969914+jamesray1@users.noreply.github.com>
Date: Sat, 7 Apr 2018 14:07:11 +1000
Subject: [PATCH 03/22] Move readme into the top directory
---
pages/Readme.md | 14 --------------
1 file changed, 14 deletions(-)
delete mode 100644 pages/Readme.md
diff --git a/pages/Readme.md b/pages/Readme.md
deleted file mode 100644
index 6e4b622fe..000000000
--- a/pages/Readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Newcomers and those seeking an introduction to Ethereum may go to https://ethereum.org or https://github.com/ethereum/wiki/wiki.
-
-Note that you can proofread while you read and learn about anything.
-
-# Contribution guidelines
-Please just **edit the pages in the wiki directly** as shown in the sidebar here: https://github.com/ethereum/wiki/wiki, rather than making **pull requests**.
-
-Please only create an **issue** if you can't fix it by editing yourself, and only if it is related to the wiki. If it is a technical issue e.g. with [web3 or JSON.RPC](https://github.com/ethereum/web3.js/issues), [geth](https://github.com/ethereum/go-ethereum/issues), [Mist](https://github.com/ethereum/mist) (although note that Mist isn't really user-ready yet, so using alternatives like [MyEtherWallet](https://www.myetherwallet.com/) is recommended instead), etc., please post an issue in the repo for that project as well, and reference the issue that you create in this repo (by copying and pasting the link to the issue in this repo in a comment in the issue in the relevant project repo).
-
-If you are **translating** an article, please **create a new page** and create the translation in that. Do not edit an existing article by translating it. Someone did this with the home wiki, changing the title, and this actually caused the home page to just direct to a list of pages in the wiki, and made it hard to find the edited home page as the title was changed to Arabic. So **do not edit the title of an article**.
-
-If you have experience with editing on Wikipedia, then that will help with knowing how to edit this wiki, although the contribution rules are less strict. Referencing facts is a key writing and proofreading task, as well as checking that information is up-to-date (and updating it if otherwise), correcting grammar, typos, and spelling; and making the wiki comprehensive and easy to understand.
-
-Other rules, such as a neutral point of view and no original research are desirable, but may be hard to maintain. Notability is less relevant.
From 39a3d89343e78421e69c1248f947fef6650e8750 Mon Sep 17 00:00:00 2001
From: jamesray1 <16969914+jamesray1@users.noreply.github.com>
Date: Sat, 7 Apr 2018 14:09:37 +1000
Subject: [PATCH 04/22] Rename Readme.md to README
---
README | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 README
diff --git a/README b/README
new file mode 100644
index 000000000..6e4b622fe
--- /dev/null
+++ b/README
@@ -0,0 +1,14 @@
+Newcomers and those seeking an introduction to Ethereum may go to https://ethereum.org or https://github.com/ethereum/wiki/wiki.
+
+Note that you can proofread while you read and learn about anything.
+
+# Contribution guidelines
+Please just **edit the pages in the wiki directly** as shown in the sidebar here: https://github.com/ethereum/wiki/wiki, rather than making **pull requests**.
+
+Please only create an **issue** if you can't fix it by editing yourself, and only if it is related to the wiki. If it is a technical issue e.g. with [web3 or JSON.RPC](https://github.com/ethereum/web3.js/issues), [geth](https://github.com/ethereum/go-ethereum/issues), [Mist](https://github.com/ethereum/mist) (although note that Mist isn't really user-ready yet, so using alternatives like [MyEtherWallet](https://www.myetherwallet.com/) is recommended instead), etc., please post an issue in the repo for that project as well, and reference the issue that you create in this repo (by copying and pasting the link to the issue in this repo in a comment in the issue in the relevant project repo).
+
+If you are **translating** an article, please **create a new page** and create the translation in that. Do not edit an existing article by translating it. Someone did this with the home wiki, changing the title, and this actually caused the home page to just direct to a list of pages in the wiki, and made it hard to find the edited home page as the title was changed to Arabic. So **do not edit the title of an article**.
+
+If you have experience with editing on Wikipedia, then that will help with knowing how to edit this wiki, although the contribution rules are less strict. Referencing facts is a key writing and proofreading task, as well as checking that information is up-to-date (and updating it if otherwise), correcting grammar, typos, and spelling; and making the wiki comprehensive and easy to understand.
+
+Other rules, such as a neutral point of view and no original research are desirable, but may be hard to maintain. Notability is less relevant.
From c087d5b310e30671ad7eb2fdb516f38a6142ad84 Mon Sep 17 00:00:00 2001
From: James Ray <16969914+jamesray1@users.noreply.github.com>
Date: Sat, 7 Apr 2018 14:10:18 +1000
Subject: [PATCH 05/22] Rename README to README.md
---
README => README.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename README => README.md (100%)
diff --git a/README b/README.md
similarity index 100%
rename from README
rename to README.md
From 6cf14d1cfd8bbafca4b3a9fd5902631ed1a46c02 Mon Sep 17 00:00:00 2001
From: jamesray1 <16969914+jamesray1@users.noreply.github.com>
Date: Tue, 10 Apr 2018 20:52:47 +1000
Subject: [PATCH 06/22] Delete everything except the readme as it's all in the
wiki/wiki and backed up.
---
drafts/[english]-old-ethereum-whitepaper.md | 639 -----
drafts/[english]-patricia-tree-draft.md | 7 -
images/natspec1.png | Bin 82697 -> 0 bytes
images/natspec2.png | Bin 83621 -> 0 bytes
images/natspec3.png | Bin 93201 -> 0 bytes
images/natspec4.png | Bin 90201 -> 0 bytes
images/natspec5.png | Bin 103151 -> 0 bytes
pages/Licensing.md | 34 -
pages/Middleware-and-Dapp-Project-Ideas.md | 112 -
pages/Open-job-positions-&-Schemes.md | 45 -
pages/_Sidebar.md | 75 -
.../Fortnight-In-Ethereum-Template.md | 412 ---
.../Template:-This-Week-in-Ethereum-w-YY.md | 26 -
.../This Week In Ethereum 47.2014.md | 60 -
pages/blog-and-notes/Todo-before-alpha.md | 10 -
pages/blog-and-notes/stubs/Which-Client?.md | 6 -
.../Contract-Metadata-Docs-(NatSpec,-ABI).md | 92 -
.../Dapp-Developer-Resources.md | 17 -
pages/dapp-development/Dapp-using-Meteor.md | 209 --
.../dapp-development/Ethereum-Contract-ABI.md | 383 ---
.../Ethereum-Development-Tutorial.md | 166 --
.../First-steps-with-ethereum-JSON-RPC.md | 82 -
pages/dapp-development/JSON-RPC.md | 2381 ----------------
pages/dapp-development/JavaScript-API.md | 2416 -----------------
.../Javascript-Development-Deficiencies.md | 20 -
pages/dapp-development/Mix-Features.md | 183 --
pages/dapp-development/Mix:-The-DApp-IDE.md | 181 --
pages/dapp-development/RPC-Testing.md | 17 -
.../Standardized_Contract_APIs.md | 295 --
.../Useful-\303\220app-Patterns.md" | 17 -
.../serpent/Serpent-1.0-(old).md | 281 --
pages/dapp-development/serpent/Serpent.md | 494 ----
pages/dapp-development/serpent/Serpent_3.0.md | 33 -
.../solidity/Solidity,-Docs-and-ABI.md | 231 --
.../solidity/Solidity-Changelog.md | 73 -
.../solidity/Solidity-Features.md | 1084 --------
.../solidity/Solidity-Tutorial.md | 18 -
.../solidity/Solidity-standard-library.md | 156 --
pages/dapp-development/solidity/Solidity.md | 128 -
...Tags-for-Solidity-in-code-documentation.md | 1 -
.../The-Solidity-Programming-Language.md | 239 --
.../[english]-design-rationale.md | 223 --
.../Node-discovery-protocol.md | 13 -
.../Web3-Secret-Storage-Definition.md | 172 --
pages/dev-technologies/enode-url-format.md | 21 -
pages/dev-technologies/libp2p-Whitepaper.md | 42 -
pages/dev-technologies/web.js-0.9.md | 50 -
.../\303\220\316\236Vp2p-Wire-Protocol.md" | 90 -
pages/eip/Geth-Dapp-loading-proposal.md | 27 -
...ON-RPC-Error-Codes-Improvement-Proposal.md | 63 -
pages/eip/Mix-improvement-proposal.md | 24 -
pages/eip/Proposal:-BlockHashesFromNumbers.md | 20 -
...-Extend-GetBlockHashes-with-target-hash.md | 47 -
pages/eip/Proposal:-NewBlockHashes.md | 21 -
pages/eip/Proposal:-Reversion-Notification.md | 109 -
.../eip/Proposal:-Transaction-Proxy-Hooks.md | 55 -
.../newBlockFilter-Improvement-Proposal.md | 57 -
.../sendTransaction-return-value-proposal.md | 22 -
.../Dagger-Hashimoto.md | 338 ---
pages/ethash-dagger-hashimoto/Dagger.md | 96 -
pages/ethash-dagger-hashimoto/Ethash-C-API.md | 59 -
.../Ethash-DAG-Disk-Storage-Format.md | 26 -
.../Ethash-Design-Rationale.md | 26 -
pages/ethash-dagger-hashimoto/Ethash.md | 998 -------
.../Ethash_revision_11.md | 249 --
.../Bad-Block-Reporting.md | 126 -
.../Bad-Chain-Canary.md | 19 -
.../Block-Protocol-2.0.md | 255 --
...ockchain-import-and-export-instructions.md | 39 -
.../Distributed-Preimage-Archive.md | 86 -
.../EVM-Subtleties.md | 74 -
.../Ethereum-Natural-Specification-Format.md | 138 -
.../Ethereum-Wire-Protocol.md | 116 -
.../Light-client-protocol.md | 39 -
.../Morden.md | 61 -
.../[english]-patricia-tree.md | 141 -
.../[english]-rlp.md | 68 -
.../research/CLL.md | 166 --
.../research/Chain-Fibers-Redux.md | 121 -
.../research/Generalized_Merkle_DHT.md | 33 -
.../research/HPOC_2015.md | 92 -
.../research/Parallel-Block-Downloads.md | 37 -
.../research/Problems.md | 388 ---
.../research/Security-Categorization.md | 105 -
.../research/Security-Issue-Process.md | 48 -
.../research/Serenity_Wishlist.md | 70 -
.../Adaptive-Message-IDs.md | 70 -
.../Adaptive-Peer-Time.md | 25 -
.../infrastructure-networking/Brain-Wallet.md | 38 -
.../Clearinghouse.md | 63 -
.../Default-Extra-Data-Standard.md | 16 -
.../Deterministic_Wallet_Spec.md | 22 -
.../EVM-JIT-Binary-Interface.md | 79 -
...ereum-Raspberry-Pi-e\317\200-Programme.md" | 21 -
.../Exchange-Integration.md | 14 -
...-Inter-exchange-Client-Address-Protocol.md | 116 -
pages/infrastructure-networking/IPv6.md | 20 -
.../Kademlia-Peer-Selection.md | 46 -
pages/infrastructure-networking/Layers.md | 80 -
pages/infrastructure-networking/Mining.md | 81 -
.../NatSpec-Determination.md | 17 -
.../Natspec-Example.md | 48 -
.../Network-Status.md | 101 -
.../NewBlock-Message.md | 23 -
.../Raspberry-Pi-instructions.md | 120 -
.../Registrar-ABI.md | 48 -
.../URL-Hint-Protocol.md | 49 -
.../Decentralized-apps-(dapps).md | 83 -
pages/introduction/Ethereum-introduction.md | 277 --
pages/introduction/FAQ.md | 263 --
pages/introduction/Gitter-Channels.md | 44 -
pages/introduction/Glossary.md | 82 -
pages/introduction/Home.md | 30 -
pages/introduction/What-is-Ethereum.md | 66 -
.../other-languages/[German]-Clearinghaus.md | 47 -
...l-proprio-ambiente-di-sviluppo-Ethereum.md | 36 -
...-Introduzione-allo-sviluppo-su-Ethereum.md | 64 -
.../other-languages/[Italian]-Libro-Bianco.md | 503 ----
...panese]-Cryptocurrency-Current-Problems.md | 512 ----
...Japanese]-Ethereum-Development-Tutorial.md | 249 --
.../[Japanese]-Ethereum-TOC.md | 25 -
pages/other-languages/[Japanese]-HPOC_2015.md | 201 --
.../[Japanese]-Javascript-API.md | 2040 --------------
pages/other-languages/[Japanese]-License.md | 51 -
.../[Japanese]-Solidity-Tutorial.md | 954 -------
...71\343\203\221\343\203\274\357\274\211.md" | 127 -
.../[Japenese]-Ethereum-TOC.md | 34 -
.../other-languages/[Persian]-Ethereum-TOC.md | 8 -
.../[Romanian]-Block-Protocol-2.0.md | 205 --
pages/other-languages/[Romanian]-CLL.md | 151 --
pages/other-languages/[Romanian]-Cuprins.md | 26 -
pages/other-languages/[Romanian]-Dagger.md | 58 -
pages/other-languages/[Romanian]-Layers.md | 66 -
...omanian]-Limbajul-de-programare-Serpent.md | 79 -
.../[Romanian]-Wire-Protocol.md | 82 -
.../other-languages/[chinese]-ethereum-toc.md | 16 -
pages/other-languages/[chinese]-rlp.md | 68 -
.../other-languages/[chinese]-white-paper.md | 477 ----
.../other-languages/[french]-ethereum-toc.md | 93 -
.../other-languages/[german]-ethereum-toc.md | 24 -
pages/other-languages/[german]-rlp.md | 66 -
pages/other-languages/[german]-white-paper.md | 630 -----
.../other-languages/[italian]-ethereum-toc.md | 30 -
.../[japanese]-design-rationale.md | 610 -----
.../[japanese]-patricia-tree.md | 139 -
pages/other-languages/[japanese]-rlp.md | 70 -
.../other-languages/[japanese]-white-paper.md | 1315 ---------
pages/other-languages/[korean]-white-paper.md | 553 ----
.../other-languages/[persian]-white-paper.md | 14 -
.../[romanian]-patricia-tree.md | 137 -
pages/other-languages/[romanian]-rlp.md | 62 -
.../other-languages/[romanian]-white-paper.md | 559 ----
.../other-languages/[spanish]-ethereum-toc.md | 24 -
...6\207]-Serpent\346\214\207\345\215\227.md" | 487 ----
...45\235\212Wiki\347\233\256\345\275\225.md" | 11 -
...00\345\217\221\350\256\241\345\210\222.md" | 278 --
...12\346\234\257\350\257\255\350\241\250.md" | 128 -
...12\347\231\275\347\232\256\344\271\246.md" | 475 ----
...346\230\216\346\251\237\345\210\266FAQ.md" | 239 --
...21\347\273\234\347\212\266\346\200\201.md" | 93 -
...\262\320\276-\320\277\320\276-Solidity.md" | 1256 ---------
pages/swarm/Swarm-Hash.md | 42 -
pages/whisper/Whisper-Overview.md | 112 -
pages/whisper/Whisper-PoC-2-Protocol-Spec.md | 141 -
pages/whisper/Whisper-PoC-2-Wire-Protocol.md | 57 -
pages/whisper/Whisper-Wire-Protocol.md | 23 -
pages/whisper/Whisper.md | 63 -
pages/white-paper/[english]-white-paper.md | 500 ----
168 files changed, 31945 deletions(-)
delete mode 100644 drafts/[english]-old-ethereum-whitepaper.md
delete mode 100644 drafts/[english]-patricia-tree-draft.md
delete mode 100644 images/natspec1.png
delete mode 100644 images/natspec2.png
delete mode 100644 images/natspec3.png
delete mode 100644 images/natspec4.png
delete mode 100644 images/natspec5.png
delete mode 100644 pages/Licensing.md
delete mode 100644 pages/Middleware-and-Dapp-Project-Ideas.md
delete mode 100644 pages/Open-job-positions-&-Schemes.md
delete mode 100644 pages/_Sidebar.md
delete mode 100644 pages/blog-and-notes/Fortnight-In-Ethereum-Template.md
delete mode 100644 pages/blog-and-notes/Template:-This-Week-in-Ethereum-w-YY.md
delete mode 100644 pages/blog-and-notes/This Week In Ethereum 47.2014.md
delete mode 100644 pages/blog-and-notes/Todo-before-alpha.md
delete mode 100644 pages/blog-and-notes/stubs/Which-Client?.md
delete mode 100644 pages/dapp-development/Contract-Metadata-Docs-(NatSpec,-ABI).md
delete mode 100644 pages/dapp-development/Dapp-Developer-Resources.md
delete mode 100644 pages/dapp-development/Dapp-using-Meteor.md
delete mode 100644 pages/dapp-development/Ethereum-Contract-ABI.md
delete mode 100644 pages/dapp-development/Ethereum-Development-Tutorial.md
delete mode 100644 pages/dapp-development/First-steps-with-ethereum-JSON-RPC.md
delete mode 100644 pages/dapp-development/JSON-RPC.md
delete mode 100644 pages/dapp-development/JavaScript-API.md
delete mode 100644 pages/dapp-development/Javascript-Development-Deficiencies.md
delete mode 100644 pages/dapp-development/Mix-Features.md
delete mode 100644 pages/dapp-development/Mix:-The-DApp-IDE.md
delete mode 100644 pages/dapp-development/RPC-Testing.md
delete mode 100644 pages/dapp-development/Standardized_Contract_APIs.md
delete mode 100644 "pages/dapp-development/Useful-\303\220app-Patterns.md"
delete mode 100644 pages/dapp-development/serpent/Serpent-1.0-(old).md
delete mode 100644 pages/dapp-development/serpent/Serpent.md
delete mode 100644 pages/dapp-development/serpent/Serpent_3.0.md
delete mode 100644 pages/dapp-development/solidity/Solidity,-Docs-and-ABI.md
delete mode 100644 pages/dapp-development/solidity/Solidity-Changelog.md
delete mode 100644 pages/dapp-development/solidity/Solidity-Features.md
delete mode 100644 pages/dapp-development/solidity/Solidity-Tutorial.md
delete mode 100644 pages/dapp-development/solidity/Solidity-standard-library.md
delete mode 100644 pages/dapp-development/solidity/Solidity.md
delete mode 100644 pages/dapp-development/solidity/Tags-for-Solidity-in-code-documentation.md
delete mode 100644 pages/dapp-development/solidity/The-Solidity-Programming-Language.md
delete mode 100644 pages/design-rationale/[english]-design-rationale.md
delete mode 100644 pages/dev-technologies/Node-discovery-protocol.md
delete mode 100644 pages/dev-technologies/Web3-Secret-Storage-Definition.md
delete mode 100644 pages/dev-technologies/enode-url-format.md
delete mode 100644 pages/dev-technologies/libp2p-Whitepaper.md
delete mode 100644 pages/dev-technologies/web.js-0.9.md
delete mode 100644 "pages/dev-technologies/\303\220\316\236Vp2p-Wire-Protocol.md"
delete mode 100644 pages/eip/Geth-Dapp-loading-proposal.md
delete mode 100644 pages/eip/JSON-RPC-Error-Codes-Improvement-Proposal.md
delete mode 100644 pages/eip/Mix-improvement-proposal.md
delete mode 100644 pages/eip/Proposal:-BlockHashesFromNumbers.md
delete mode 100644 pages/eip/Proposal:-Extend-GetBlockHashes-with-target-hash.md
delete mode 100644 pages/eip/Proposal:-NewBlockHashes.md
delete mode 100644 pages/eip/Proposal:-Reversion-Notification.md
delete mode 100644 pages/eip/Proposal:-Transaction-Proxy-Hooks.md
delete mode 100644 pages/eip/newBlockFilter-Improvement-Proposal.md
delete mode 100644 pages/eip/sendTransaction-return-value-proposal.md
delete mode 100644 pages/ethash-dagger-hashimoto/Dagger-Hashimoto.md
delete mode 100644 pages/ethash-dagger-hashimoto/Dagger.md
delete mode 100644 pages/ethash-dagger-hashimoto/Ethash-C-API.md
delete mode 100644 pages/ethash-dagger-hashimoto/Ethash-DAG-Disk-Storage-Format.md
delete mode 100644 pages/ethash-dagger-hashimoto/Ethash-Design-Rationale.md
delete mode 100644 pages/ethash-dagger-hashimoto/Ethash.md
delete mode 100644 pages/ethash-dagger-hashimoto/Ethash_revision_11.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Bad-Block-Reporting.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Bad-Chain-Canary.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Block-Protocol-2.0.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Blockchain-import-and-export-instructions.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Distributed-Preimage-Archive.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/EVM-Subtleties.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Natural-Specification-Format.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Ethereum-Wire-Protocol.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Light-client-protocol.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/Morden.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/[english]-patricia-tree.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/[english]-rlp.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/CLL.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Chain-Fibers-Redux.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Generalized_Merkle_DHT.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/HPOC_2015.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Parallel-Block-Downloads.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Problems.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Security-Categorization.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Security-Issue-Process.md
delete mode 100644 pages/ethereum-and-blockchain-technologies-and-research/research/Serenity_Wishlist.md
delete mode 100644 pages/infrastructure-networking/Adaptive-Message-IDs.md
delete mode 100644 pages/infrastructure-networking/Adaptive-Peer-Time.md
delete mode 100644 pages/infrastructure-networking/Brain-Wallet.md
delete mode 100644 pages/infrastructure-networking/Clearinghouse.md
delete mode 100644 pages/infrastructure-networking/Default-Extra-Data-Standard.md
delete mode 100644 pages/infrastructure-networking/Deterministic_Wallet_Spec.md
delete mode 100644 pages/infrastructure-networking/EVM-JIT-Binary-Interface.md
delete mode 100644 "pages/infrastructure-networking/Ethereum-Raspberry-Pi-e\317\200-Programme.md"
delete mode 100644 pages/infrastructure-networking/Exchange-Integration.md
delete mode 100644 pages/infrastructure-networking/ICAP:-Inter-exchange-Client-Address-Protocol.md
delete mode 100644 pages/infrastructure-networking/IPv6.md
delete mode 100644 pages/infrastructure-networking/Kademlia-Peer-Selection.md
delete mode 100644 pages/infrastructure-networking/Layers.md
delete mode 100644 pages/infrastructure-networking/Mining.md
delete mode 100644 pages/infrastructure-networking/NatSpec-Determination.md
delete mode 100644 pages/infrastructure-networking/Natspec-Example.md
delete mode 100644 pages/infrastructure-networking/Network-Status.md
delete mode 100644 pages/infrastructure-networking/NewBlock-Message.md
delete mode 100644 pages/infrastructure-networking/Raspberry-Pi-instructions.md
delete mode 100644 pages/infrastructure-networking/Registrar-ABI.md
delete mode 100644 pages/infrastructure-networking/URL-Hint-Protocol.md
delete mode 100644 pages/introduction/Decentralized-apps-(dapps).md
delete mode 100644 pages/introduction/Ethereum-introduction.md
delete mode 100644 pages/introduction/FAQ.md
delete mode 100644 pages/introduction/Gitter-Channels.md
delete mode 100644 pages/introduction/Glossary.md
delete mode 100644 pages/introduction/Home.md
delete mode 100644 pages/introduction/What-is-Ethereum.md
delete mode 100644 pages/other-languages/[German]-Clearinghaus.md
delete mode 100644 pages/other-languages/[Italian]-Impostare-il-proprio-ambiente-di-sviluppo-Ethereum.md
delete mode 100644 pages/other-languages/[Italian]-Introduzione-allo-sviluppo-su-Ethereum.md
delete mode 100644 pages/other-languages/[Italian]-Libro-Bianco.md
delete mode 100644 pages/other-languages/[Japanese]-Cryptocurrency-Current-Problems.md
delete mode 100644 pages/other-languages/[Japanese]-Ethereum-Development-Tutorial.md
delete mode 100644 pages/other-languages/[Japanese]-Ethereum-TOC.md
delete mode 100644 pages/other-languages/[Japanese]-HPOC_2015.md
delete mode 100644 pages/other-languages/[Japanese]-Javascript-API.md
delete mode 100644 pages/other-languages/[Japanese]-License.md
delete mode 100644 pages/other-languages/[Japanese]-Solidity-Tutorial.md
delete mode 100644 "pages/other-languages/[Japanese]-Whisper-\357\274\210\343\202\246\343\202\243\343\202\271\343\203\221\343\203\274\357\274\211.md"
delete mode 100644 pages/other-languages/[Japenese]-Ethereum-TOC.md
delete mode 100644 pages/other-languages/[Persian]-Ethereum-TOC.md
delete mode 100644 pages/other-languages/[Romanian]-Block-Protocol-2.0.md
delete mode 100644 pages/other-languages/[Romanian]-CLL.md
delete mode 100644 pages/other-languages/[Romanian]-Cuprins.md
delete mode 100644 pages/other-languages/[Romanian]-Dagger.md
delete mode 100644 pages/other-languages/[Romanian]-Layers.md
delete mode 100644 pages/other-languages/[Romanian]-Limbajul-de-programare-Serpent.md
delete mode 100644 pages/other-languages/[Romanian]-Wire-Protocol.md
delete mode 100644 pages/other-languages/[chinese]-ethereum-toc.md
delete mode 100644 pages/other-languages/[chinese]-rlp.md
delete mode 100644 pages/other-languages/[chinese]-white-paper.md
delete mode 100644 pages/other-languages/[french]-ethereum-toc.md
delete mode 100644 pages/other-languages/[german]-ethereum-toc.md
delete mode 100644 pages/other-languages/[german]-rlp.md
delete mode 100644 pages/other-languages/[german]-white-paper.md
delete mode 100644 pages/other-languages/[italian]-ethereum-toc.md
delete mode 100644 pages/other-languages/[japanese]-design-rationale.md
delete mode 100644 pages/other-languages/[japanese]-patricia-tree.md
delete mode 100644 pages/other-languages/[japanese]-rlp.md
delete mode 100644 pages/other-languages/[japanese]-white-paper.md
delete mode 100644 pages/other-languages/[korean]-white-paper.md
delete mode 100644 pages/other-languages/[persian]-white-paper.md
delete mode 100644 pages/other-languages/[romanian]-patricia-tree.md
delete mode 100644 pages/other-languages/[romanian]-rlp.md
delete mode 100644 pages/other-languages/[romanian]-white-paper.md
delete mode 100644 pages/other-languages/[spanish]-ethereum-toc.md
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-Serpent\346\214\207\345\215\227.md"
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212Wiki\347\233\256\345\275\225.md"
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\345\274\200\345\217\221\350\256\241\345\210\222.md"
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\346\234\257\350\257\255\350\241\250.md"
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-\344\273\245\345\244\252\345\235\212\347\231\275\347\232\256\344\271\246.md"
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-\346\254\212\347\233\212\350\255\211\346\230\216\346\251\237\345\210\266FAQ.md"
delete mode 100644 "pages/other-languages/[\344\270\255\346\226\207]-\347\275\221\347\273\234\347\212\266\346\200\201.md"
delete mode 100644 "pages/other-languages/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276-\320\277\320\276-Solidity.md"
delete mode 100644 pages/swarm/Swarm-Hash.md
delete mode 100644 pages/whisper/Whisper-Overview.md
delete mode 100644 pages/whisper/Whisper-PoC-2-Protocol-Spec.md
delete mode 100644 pages/whisper/Whisper-PoC-2-Wire-Protocol.md
delete mode 100644 pages/whisper/Whisper-Wire-Protocol.md
delete mode 100644 pages/whisper/Whisper.md
delete mode 100644 pages/white-paper/[english]-white-paper.md
diff --git a/drafts/[english]-old-ethereum-whitepaper.md b/drafts/[english]-old-ethereum-whitepaper.md
deleted file mode 100644
index 939ca7ff1..000000000
--- a/drafts/[english]-old-ethereum-whitepaper.md
+++ /dev/null
@@ -1,639 +0,0 @@
----
-name: Old Ethereum Whitepaper
-category:
----
-
-### A Next-Generation Smart Contract and Decentralized Application Platform
-
-In the last few months, there has been a great amount of interest into the area of using Bitcoin-like blockchains - the mechanism that allows for the entire world to agree on the state of a public ownership database - for more than just money. Commonly cited applications include using on-blockchain digital assets to represent custom currencies and financial instruments (["colored coins"](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)), ["smart property"](https://en.bitcoin.it/wiki/Smart_Property) devices such as cars which track a colored coin on a blockchain to determine their present legitimate owner, as well as more advanced applications such as decentralized exchange, financial derivatives, peer-to-peer gambling and on-blockchain identity and reputation systems. Perhaps the most ambitious of all cited applications is the concept of autonomous agents or [decentralized autonomous organizations](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) (DAOs) - autonomous entities that operate on the blockchain without any central control whatsoever, eschewing all dependence on legal contracts and organizational bylaws in favor of having resources and funds autonomously managed by a self-enforcing smart contract on a cryptographic blockchain.
-
-However, most of these applications are difficult to implement today, simply because the scripting systems of Bitcoin, and even next-generation cryptocurrency protocols such as the Bitcoin-based colored coins protocol and so-called "metacoins", are far too limited to allow the kind of arbitrarily complex computation that DAOs require. What this project intends to do is take the innovations that such protocols bring, and generalize them - create a fully-fledged, Turing-complete (but heavily fee-regulated) cryptographic ledger that allows participants to encode arbitrarily complex contracts, autonomous agents and relationships that will be mediated entirely by the blockchain. Rather than being limited to a specific set of transaction types, users will be able to use Ethereum as a sort of "Lego of crypto-finance" - that is to say, one will be able to implement any feature that one desires simply by coding it in the protocol's internal scripting language. Custom currencies, financial derivatives, identity systems and decentralized organizations will all be easy to do, but more importantly, unlike previous systems, it will also be possible to construct transaction types that even the Ethereum developers did not imagine. Altogether, we believe that this design is a solid step toward the realization of "cryptocurrency 2.0"; we hope that Ethereum will be as significant an addition to the cryptocurrency ecosystem as the advent of Web 2.0 was to the static-content-only internet of 1999.
-
-
-### Table of Contents
-
-* [Why A New Platform](#why-a-new-platform)
- * [Colored Coins](#colored-coins)
- * [Metacoins](#metacoins)
-* [Philosophy](#philosophy)
-* [Basic Building Blocks](#basic-building-blocks)
- * [Modified GHOST Implementation](#modified-ghost-implementation)
- * [Ethereum Client P2P Protocol](#ethereum-client-p2p-protocol)
- * [Currency and Issuance](#currency-and-issuance)
- * [Data Format](#data-format)
- * [Mining Algorithm](#mining-algorithm)
- * [Transactions](#transactions)
- * [Difficulty Adjustment](#difficulty-adjustment)
- * [Block Rewards and Limits](#block-rewards-and-limits)
-* [Contracts](#contracts)
- * [Applications](#applications)
- * [Sub-currencies](#sub-currencies)
- * [Financial derivatives](#financial-derivatives)
- * [Identity and Reputation Systems](#identity-and-reputation-systems)
- * [Decentralized File Storage](#decentralized-file-storage)
- * [Decentralized Autonomous Organizations](#decentralized-autonomous-organizations)
- * [Further Applications](#further-applications)
- * [How Do Contracts Work?](#how-do-contracts-work)
- * [Language Specification](#language-specification)
-* [Fees](#fees)
-* [Conclusion](#conclusion)
-* [References and Further Reading](#references-and-further-reading)
-
-
-## Why A New Platform?
-
-When one wants to create a new application, especially in an area as delicate as cryptography or cryptocurrency, the immediate, and correct, first instinct is to use existing protocols as much as possible. There is no need to create a new currency, or even a new protocol, when the problem can be solved entirely by using existing technologies. Indeed, the puzzle of attempting to solve the problems of [smart property](https://en.bitcoin.it/wiki/Smart_Property), [smart contracts](https://en.bitcoin.it/wiki/Contracts) and [decentralized autonomous corporations](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) on top of Bitcoin is how our interest in next-generation cryptocurrency protocols originally started. Over the course of our research, however, it became evident that while the Bitcoin protocol is more than adequate for currency, basic multisignature escrow and certain simple versions of smart contracts, there are fundamental limitations that make it non-viable for anything beyond a certain very limited scope of features.
-
-
-### Colored Coins
-
-The first attempt to implement a system for managing smart property and custom currencies and assets on top of a blockchain was built as a sort of overlay protocol on top of Bitcoin, with many advocates making a comparison to the way that, in the [internet protocol stack](http://en.wikipedia.org/wiki/Internet_protocol_suite), [HTTP](http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol) serves as a layer on top of [TCP](http://en.wikipedia.org/wiki/Transmission_Control_Protocol). The [colored coins](https://docs.google.com/a/ursium.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) protocol is roughly defined as follows:
-
-1. A colored coin issuer determines that a given transaction output H:i (H being the transaction hash and `i` the output index) represents a certain asset, and publishes a "color definition" specifying this transaction output alongside what it represents (eg. 1 satoshi from `H:i` = 1 ounce of gold redeemable at Stephen's Gold Company)
-2. Others "install" the color definition file in their colored coin clients.
-3. When the color is first released, output H:i is the only transaction output to have that color.
-4. If a transaction spends inputs with color X, then its outputs will also have color X. For example, if the owner of H:i immediately makes a transaction to split that output among five addresses, then those transaction outputs will all also have color X. If a transaction has inputs of different colors, then a "color transfer rule" or "color kernel" determines which colors which outputs are (eg. a very naive implementation may say that output 0 has the same color as input 0, output 1 the same color as input 1, etc).
-5. When a colored coin client notices that it received a new transaction output, it uses a back-tracing algorithm based on the color kernel to determine the color of the output. Because the rule is deterministic, all clients will agree on what color (or colors) each output has.
-
-However, the protocol has several fundamental flaws:
-
-
-**Simplified Payment Verification in Bitcoin **
-
-![SPV in bitcoin](https://www.ethereum.org/gh_wiki/spv_bitcoin.png)
-
-_Left: it suffices to present only a small number of nodes in a Merkle tree to give a proof of the validity of a branch._
-
-_Right: any attempt to change any part of the Merkle tree will eventually lead to an inconsistency somewhere up the chain._
-
-
-1. **Difficulty of simplified payment verification** - Bitcoin's [Merkle Tree](http://en.wikipedia.org/wiki/Merkle_tree) construction allows for a protocol known as "[simplified payment verification](https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification)", where a client that does not download the full blockchain can quickly determine the validity of a transaction output by asking other nodes to provide a cryptographic proof of the validity of a single branch of the tree. The client will still need to download the block headers to be secure, but the amount of data bandwidth and verification time required drops by a factor of nearly a thousand. With colored coins, this is much harder. The reason is that one cannot determine the color of a transaction output simply by looking up the Merkle tree; rather, one needs to employ the backward scanning algorithm, fetching potentially thousands of transactions and requesting a Merkle tree validity proof of each one, before a client can be fully satisfied that a transaction has a certain color. After over a year of investigation, including help from ourselves, no solution has been found to this problem.
-2. **Incompatibility with scripting** - as mentioned above, Bitcoin does have a moderately flexible scripting system, for example allowing users to sign transactions of the form "I release this transaction output to anyone willing to pay to me 1 BTC". Other examples include [assurance contracts](http://en.wikipedia.org/wiki/Assurance_contract), [efficient micropayments](https://en.bitcoin.it/wiki/Contracts#Example_7:_Rapidly-adjusted_.28micro.29payments_to_a_pre-determined_party) and on-blockchain auctions. However, this system is inherently not color-aware; that is to say, one cannot make a transaction of the form "I release this transaction output to anyone willing to pay me one gold coin defined by the genesis H:i", because the scripting language has no idea that a concept of "colors" even exists. One major consequence of this is that, while trust-free swapping of two different colored coins is possible, a full decentralized exchange is not since there is no way to place an enforceable order to buy or sell.
-3. **Same limitations as Bitcoin** - ideally, on-blockchain protocols would be able to support advanced derivatives, bets and many forms of conditional transfers. Unfortunately, colored coins inherits the limitations of Bitcoin in terms of the impossibility of many such arrangements.
-
-### Metacoins
-
-Another concept, once again in the spirit of sitting on top of Bitcoin much like HTTP over TCP, is that of "metacoins". The concept of a metacoin is simple: the metacoin protocol provides for a way of encoding metacoin transaction data into the outputs of a Bitcoin transaction, and a metacoin node works by processing all Bitcoin transactions and evaluating Bitcoin transactions that are valid metacoin transactions in order to determine the current account balances at any given time. For example, a simple metacoin protocol might require a transaction to have four outputs: MARKER, FROM, TO and VALUE. MARKER would be a specific marker address to identify a transaction as a metacoin transaction. FROM would be the address that coins are sent from. `TO` would be the address that coins are sent to, and VALUE would be an address encoding the amount sent. Because the Bitcoin protocol is not metacoin-aware, and thus will not reject invalid metacoin transactions, the metacoin protocol must treat all transactions with the first output going to MARKER as valid and react accordingly. For example, an implementation of the transaction processing part of the above described metacoin protocol might look like this:
-
- if tx.output[0] != MARKER:
- break
- else if balance[tx.output[1]] < decode_value(tx.output[3]):
- break
- else if not tx.hasSignature(tx.output[1]):
- break
- else:
- balance[tx.output[1]] -= decode_value(tx.output[3]);
- balance[tx.output[2]] += decode_value(tx.output[3]);
-
-
-The advantage of a metacoin protocol is that the protocol can allow for more advanced transaction types, including custom currencies, decentralized exchange, derivatives, etc, that are impossible to implement using the underlying Bitcoin protocol by itself. However, metacoins on top of Bitcoin have one major flaw: simplified payment verification, already difficult with colored coins, is outright impossible on a metacoin. The reason is that while one can use SPV to determine that there is a transaction sending 30 metacoins to address X, that by itself does not mean that address X has 30 metacoins. What if the sender of the transaction did not have 30 metacoins to start with and so the transaction is invalid? Ultimately, finding out any part of the current state requires scanning through all transactions since the metacoin's original launch to figure out which transactions are valid and which ones are not. This makes it impossible to have a truly secure client without downloading the entire, arguably prohibitively large, Bitcoin blockchain.
-
-In both cases, the conclusion is as follows. The effort to build more advanced protocols on top of Bitcoin, like HTTP over TCP, is admirable, and is indeed the correct way to go in terms of implementing advanced decentralized applications. However, the attempt to build colored coins and metacoins on top of Bitcoin is more like building HTTP over SMTP. The intention of SMTP was to transfer email messages, not serve as a backbone for generic internet communications, and one would have had to implement many inefficient and architecturally ugly practices in order to make it effective. Similarly, while Bitcoin is a great protocol for making simple transactions and storing value, the evidence above shows that Bitcoin is absolutely not intended to function, and cannot function, as a base layer for financial peer-to-peer protocols in general.
-
-Ethereum solves the scalability issues by being hosted on its own blockchain, and by storing a distinct "state tree" in each block along with a transaction list. Each "state tree" represents the current state of the entire system, including address balances and contract states. Ethereum contracts are allowed to store data in a persistent memory storage. This storage, combined with the Turing-complete scripting language, allows us to encode an entire currency inside of a single contract, alongside countless other types of cryptographic assets. Thus, the intention of Ethereum is not to replace the colored coins and metacoin protocols described above. Rather, Ethereum intends to serve as a superior foundational layer offering a uniquely powerful scripting system on top of which arbitrarily advanced contracts, currencies and other decentralized applications can be built. If existing colored coins and metacoin projects were to move onto Ethereum, they would gain the benefits of Ethereum's simplified payment verification, the option to be compatible with Ethereum's financial derivatives and decentralized exchange, and the ability to work together on a single network. With Ethereum, someone with an idea for a new contract or transaction type that might drastically improve the state of what can be done with cryptocurrency would not need to start their own coin; they could simply implement their idea in Ethereum script code. In short, Ethereum is a foundation for innovation.
-
-
-## Philosophy
-
-The design behind Ethereum is intended to follow the following principles:
-
-1. **Simplicity** - the Ethereum protocol should be as simple as possible, even at the cost of some data storage or time inefficiency. An average programmer should ideally be able to follow and implement the entire specification, so as to fully realize the unprecedented democratizing potential that cryptocurrency brings and further the vision of Ethereum as a protocol that is open to all. Any optimization which adds complexity should not be included unless that optimization provides very substantial benefit.
-2. **Universality** - a fundamental part of Ethereum's design philosophy is that Ethereum does not have "features". Instead, Ethereum provides an internal Turing-complete scripting language, which a programmer can use to construct any smart contract or transaction type that can be mathematically defined. Want to invent your own financial derivative? With Ethereum, you can. Want to make your own currency? Set it up as an Ethereum contract. Want to set up a full-scale Daemon or Skynet? You may need to have a few thousand interlocking contracts, and be sure to feed them generously, to do that, but nothing is stopping you with Ethereum at your fingertips.
-3. **Modularity** - the parts of the Ethereum protocol should be designed to be as modular and separable as possible. Over the course of development, our goal is to create a program where if one was to make a small protocol modification in one place, the application stack would continue to function without any further modification. Innovations such as [Dagger](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Dagger), [Patricia trees](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree) and [RLP](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP) should be implemented as separate libraries and made to be feature-complete even if Ethereum does not require certain features so as to make them usable in other protocols as well. Ethereum development should be maximally done so as to benefit the entire cryptocurrency ecosystem, not just itself.
-4. **Agility** - details of the Ethereum protocol are not set in stone. Although we will be extremely judicious about making modifications to high-level constructs such as the [C-like language](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-CLL) and the address system, computational tests later on in the development process may lead us to discover that certain modifications to the algorithm or scripting language will substantially improve scalability or security. If any such opportunities are found, we will exploit them.
-5. **Non-discrimination** - the protocol should not attempt to actively restrict or prevent specific categories of usage. All regulatory mechanisms in the protocol should be designed to directly regulate the harm and not attempt to oppose specific undesirable applications. A programmer can even run an infinite loop script on top of Ethereum for as long as they are willing to keep paying the per-computational-step transaction fee.
-
-
-## Basic Building Blocks
-
-At its core, Ethereum starts off as a fairly regular memory-hard proof-of-work mined cryptocurrency without many extra complications. In fact, Ethereum is in some ways simpler than the Bitcoin-based cryptocurrencies that we use today. The concept of a transaction having multiple inputs and outputs, for example, is gone, replaced by a more intuitive balance-based model (to prevent transaction replay attacks, as part of each account balance we also store an incrementing nonce). Sequence numbers and lock times are also removed, and all transaction and block data is encoded in a single format. Instead of addresses being the RIPEMD160 hash of the SHA256 hash of the public key prefixed with 04, addresses are simply the last 20 bytes of the SHA3 hash of the public key. Unlike other cryptocurrencies, which aim to offer a large number of "features", Ethereum intends to take features away, and instead provide its users with near-infinite power through an all-encompassing mechanism known as "contracts".
-
-### Modified GHOST Implementation
-
-The "Greedy Heavist Observed Subtree" (GHOST) protocol is an innovation first introduced by Yonatan Sompolinsky and Aviv Zohar in [December 2013](http://www.cs.huji.ac.il/~avivz/pubs/13/btc_scalability_full.pdf). The motivation behind GHOST is that blockchains with fast confirmation times currently suffer from reduced security due to a high stale rate - because blocks take a certain time to propagate through the network, if miner A mines a block and then miner B happens to mine another block before miner A's block propagates to B, miner B's block will end up wasted and will not contribute to network security. Furthermore, there is a centralization issue: if miner A is a mining pool with 30% hashpower and B has 10% hashpower, A will have a risk of producing stale blocks 70% of the time whereas B will have a risk of producing stale blocks 90% of the time. Thus, if the stale rate is high, A will be substantially more efficient simply by virtue of its size. With these two effects combined, blockchains which produce blocks quickly are very likely to lead to one mining pool having a large enough percentage of the network hashpower to have de facto control over the mining process.
-
-As described by Sompolinsky and Zohar, GHOST solves the first issue of network security loss by including stale blocks in the calculation of which chain is the "longest"; that is to say, not just the parent and further ancestors of a block, but also the stale descendants of the block's ancestor (in Ethereum jargon, "uncles") are added to the calculation of which block has the largest total proof of work backing it. To solve the second issue of centralization bias, we go beyond the protocol described by Sompolinsky and Zohar, and also provide block rewards to stales: a stale block receives 87.5% of its base reward, and the nephew that includes the stale block receives the remaining 12.5%. Transaction fees, however, are not awarded to uncles.
-
-Ethereum implements a simplified version of GHOST which only goes down one level. Specifically, a stale block can only be included as an uncle by the direct child of one of its direct siblings, and not any block with a more distant relation. This was done for several reasons. First, unlimited GHOST would include too many complications into the calculation of which uncles for a given block are valid. Second, unlimited GHOST with compensation as used in Ethereum removes the incentive for a miner to mine on the main chain and not the chain of a public attacker. Finally, calculations show that single-level GHOST has over 80% of the benefit of unlimited GHOST, and provides a stale rate comparable to the 2.5 minute Litecoin even with a 40-second block time. However, we will be conservative and still retain a Primecoin-like 60-second block time because individual blocks may take a longer time to verify.
-
-
-### Ethereum Client P2P Protocol
-
-**P2P Protocol**
-![SPV in bitcoin](https://www.ethereum.org/gh_wiki/minerchart.png)
-
-The Ethereum client P2P protocol is a fairly standard cryptocurrency protocol, and can just as easily be used for any other cryptocurrency; the only modification is the introduction of the GHOST protocol described above. The Ethereum client will be mostly reactive; if not provoked, the only thing the client will do by itself is have the networking daemon maintain connections and periodically send a message asking for blocks whose parent is the current block. However, the client will also be more powerful. Unlike bitcoind, which only stores a limited amount of data about the blockchain, the Ethereum client will also act as a fully functional backend for a block explorer.
-
-When the client reads a message, it will perform the following steps:
-
-1. Hash the data, and check if the data with that hash has already been received. If so, exit.
-2. Determine the data type. If the data is a transaction, if the transaction is valid add it to the local transaction list, process it onto the current block and publish it to the network. If the data item is a message, respond to it. If the data item is a block, go to step 3.
-3. Check if the parent of the block is already stored in the database. If it is not, exit.
-4. Check if the proof of work on the block header and all block headers in the "uncle list" is valid. If any are not, exit.
-5. Check if every block header in the "uncle list" in the block has the block's parent's parent as its own parent. If any is not, exit. Note that uncle block headers do not need to be in the database; they just need to have the correct parent and a valid proof of work. Also, make sure that uncles are unique and distinct from the parent.
-6. Check if the timestamp of the block is at most 15 minutes into the future and that it is ahead of the timestamp of the parent. Check if the difficulty of the block and the block number are correct. If either of these checks fails, exit.
-7. Start with the state of the parent of the block, and sequentially apply every transaction in the block to it. At the end, add the miner rewards. If the root hash of the resulting state tree does not match the state root in the block header, exit. If it does, add the block to the database and advance to the next step.
-8. Determine TD(block) ("total difficulty") for the new block. TD is defined recursively by TD(genesis_block) = 0 and TD(B) = TD(B.parent) + sum([u.difficulty for u in B.uncles]) + B.difficulty. If the new block has higher TD than the current block, set the current block to the new block and continue to the next step. Otherwise, exit.
-9. If the new block was changed, apply all transactions in the transaction list to it, discarding from the transaction list any that turn out to be invalid, and rebroadcast the block and those transactions to the network.
-
-The "current block" is a pointer maintained by each node that refers to the block that the node deems as representing the current official state of the network. All messages asking for balances, contract states, etc, have their responses computed by looking at the current block. If a node is mining, the process is only slightly changed: while doing all of the above, the node also continuously mines on the current block, using its transaction list as the transaction list of the block.
-
-
-### Currency and Issuance
-
-The Ethereum network includes its own built-in currency, ether. The main reason for including a currency in the network is twofold. First, like Bitcoin, ether is rewarded to miners so as to incentivize network security. Second, it serves as a mechanism for paying transaction fees for anti-spam purposes. Of the two main alternatives to fees, per-transaction proof of work similar to [Hashcash](http://en.wikipedia.org/wiki/Hashcash) and zero-fee laissez-faire, the former is wasteful of resources and unfairly punitive against weak computers and smartphones and the latter would lead to the network being almost immediately overwhelmed by an infinitely looping "logic bomb" contract. For convenience and to avoid future argument (see the current mBTC/uBTC/satoshi debate), the denominations will be pre-labelled:
-
-* 1: wei
-* 10^3: lovelace
-* 10^6: babbage
-* 10^9: turing
-* 10^12: szabo
-* 10^15: finney
-* 10^18: ether
-
-This should be taken as an expanded version of the concept of "dollars" and "cents" or "BTC" and "satoshi" that is intended to be future proof. In the near future, we expect "ether" to be the primary unit in the system, much like the dollar or bitcoin; "finney" will likely be used for microtransactions, "szabo" for per-step fees and "wei" to refer specifically to the lowest-level "base" unit much like the satoshi in Bitcoin. The remaining denominations will likely only come into play if Ethereum grows much larger or computers get much more efficient and it makes sense to use lower units than szabo to measure fees.
-
-The issuance model will be as follows:
-
-* Ether will be released in a fundraiser at the price of 1000-2000 ether per BTC, with earlier funders getting a better price to compensate for the increased uncertainty of participating at an earlier stage. The minimum funding amount will be 0.01 BTC. Suppose that X ether gets released in this way
-* 0.225X ether will be allocated to the fiduciary members and early contributors who substantially participated in the project before the start of the fundraiser. This share will be stored in a time-lock contract; about 40% of it will be spendable after one year, 70% after two years and 100% after 3 years.
-* 0.05X ether will be allocated to a fund to use to pay expenses and rewards in ether between the start of the fundraiser and the launch of the currency
-* 0.225X ether will be allocated as a long-term reserve pool to pay expenses, salaries and rewards in ether after the launch of the currency
-* 0.4X ether will be mined per year forever after that point
-
-
-| Group | After 1 year | After 5 years
-| ------------- | ------------- |-------------|
-| Currency units | 1.9X | 3.5X |
-| Fundraiser participants | 52.6% | 28.6% |
-| Fiduciary members and early contributors | 11.8% | 6.42% |
-| Additional pre-launch allocations | 2.63% | 1.42% |
-| Reserve | 11.8% | 6.42% |
-| Miners | 21.1% | 57.1% |
-
-
-**Long-Term Inflation Rate (percent)**
-
-![SPV in bitcoin](https://www.ethereum.org/gh_wiki/inflation.svg)
-
-_Despite the linear currency issuance, just like with Bitcoin over time the inflation rate nevertheless tends to zero_
-
-
-For example, after five years and assuming no transactions, 28.6% of the ether will be in the hands of the fundraiser participants, 6.42% in the fiduciary member and early contributor pool, 6.42% paid to the reserve pool, and 57.1% will belong to miners. The permanent linear inflation model reduces the risk of what some see as excessive wealth concentration in Bitcoin, and gives individuals living in present and future eras a fair chance to acquire currency units, while at the same time retaining a strong incentive to obtain and hold ether because the inflation "rate" still tends to zero over time (eg. during year 1000001 the money supply would increase from 500001.5 * X to 500002 * X, an inflation rate of 0.0001%). Furthermore, much of the interest in Ethereum will be medium-term; we predict that if Ethereum succeeds it will see the bulk of its growth on a 1-10 year timescale, and supply during that period will be very much limited.
-
-We also theorize that because coins are always lost over time due to carelessness, death, etc, and coin loss can be modeled as a percentage of the total supply per year, that the total currency supply in circulation will in fact eventually stabilize at a value equal to the annual issuance divided by the loss rate (eg. at a loss rate of 1%, once the supply reaches 40X then 0.4X will be mined and 0.4X lost every year, creating an equilibrium).
-
-
-### Data Format
-
-All data in Ethereum will be stored in [recursive length prefix encoding](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP), which serializes arrays of strings of arbitrary length and dimension into strings. For example, ['dog', 'cat'] is serialized (in byte array format) as [ 130, 67, 100, 111, 103, 67, 99, 97, 116]; the general idea is to encode the data type and length in a single byte followed by the actual data (eg. converted into a byte array, 'dog' becomes [ 100, 111, 103 ], so its serialization is [ 67, 100, 111, 103 ]. Note that RLP encoding is, as suggested by the name, recursive; when RLP encoding an array, one is really encoding a string which is the concatenation of the RLP encodings of each of the elements. Additionally, note that block number, timestamp, difficulty, memory deposits, account balances and all values in contract storage are integers, and Patricia tree hashes, root hashes, addresses, transaction list hashes and all keys in contract storage are strings. The main difference between the two is that strings are stored as fixed-length data (20 bytes for addresses, 32 bytes for everything else), and integers take up only as much space as they need. Integers are stored in big-endian base 256 format (eg. 32767 in byte array format as [ 127, 255 ]).
-
-A full block is stored as:
-
- [
- block_header,
- transaction_list,
- uncle_list
- ]
-
-Where:
-
- transaction_list = [
- transaction 1,
- transaction 2,
- ...
- ]
-
- uncle list = [
- uncle_block_header_1,
- uncle_block_header_2,
- ...
- ]
-
- block_header = [
- parent hash,
- sha3(rlp_encode(uncle_list)),
- coinbase address,
- state_root,
- sha3(rlp_encode(transaction_list)),
- difficulty,
- timestamp,
- extra_data,
- nonce
- ]
-
-Each transaction and uncle block header is itself a list. The data for the proof of work is the RLP encoding of the block WITHOUT the nonce. `uncle_list` and `transaction_list` are the lists of the uncle block headers and transactions in the block, respectively. `nonce` and `extra_data` are both limited to a maximum of 32 bytes, except the genesis block where the `extra_data` parameter will be much larger.
-
-The `state_root` is the root of a [Merkle Patricia tree](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree) containing (key, value) pairs for all accounts where each address is represented as a 20-byte binary string. At the address of each account, the value stored in the Merkle Patricia tree is a string which is the RLP-serialized form of an object of the form:
-
- [ balance, nonce, contract_root ]
-
-The nonce is the number of transactions made from the account, and is incremented every time a transaction is made. The purpose of this is to (1) make each transaction valid only once to prevent replay attacks, and (2) to make it impossible (more precisely, cryptographically infeasible) to construct a contract with the same hash as a pre-existing contract. `balance` refers to the account's balance, denominated in wei. `contract_root` is the root of yet another Patricia tree, containing the contract's memory, if that account is controlled by a contract. If an account is not controlled by a contract, the contract root will simply be the empty string.
-
-### Mining algorithm
-
-One highly desirable property in mining algorithms is resistance to optimization through specialized hardware. Originally, Bitcoin was conceived as a highly democratic currency, allowing anyone to participate in the mining process with a CPU. In 2010, however, much faster miners exploiting the rapid parallelization offered by graphics processing units (GPUs) rapidly took over, increasing network hashpower by a factor of 100 and leaving CPUs essentially in the dust. In 2013, a further category of specialized hardware, application-specific integrated circuits (ASICs) outcompeted the GPUs in turn, achieving another 100x speedup by using chips fabricated for the sole purpose of computing SHA256 hashes. Today, it is virtually impossible to mine without first purchasing a mining device from one of these companies, and some people are concerned that in 5-10 years' time mining will be entirely dominated by large centralized corporations such as AMD and Intel.
-
-To date, the main way of achieving this goal has been "memory-hardness", constructing proof of work algorithms that require not only a large number of computations, but also a large amount of memory, to validate, thereby making highly parallelized specialized hardware implementations less effective. There have been several implementations of memory-hard proof of work, all of which have their flaws:
-
-* **Scrypt** - Scrypt is a function which is designed to take 128 KB of memory [to compute](https://litecoin.info/User:Iddo/Comparison_between_Litecoin_and_Bitcoin#SHA256_mining_vs_scrypt_mining). The algorithm essentially works by filling a memory array with hashes, and then computing intermediate values and finally a result based on the values in the memory array. However, the 128 KB parameter is a very weak threshold, and ASICs for Litecoin are [already under development](https://axablends.com/merchants-accepting-bitcoin/litecoin-discussion/litecoin-scrypt-asic-miners/). Furthermore, there is a natural limit to how much memory hardness with Scrypt can be tweaked up to achieve, as the verification process takes just as much memory, and just as much computation, as one round of the mining process.
-* **Birthday attacks** - the idea behind birthday-based proofs of work is simple: find values xn, i, j such that i < k, j < k and abs(H(data+xn+i) - H(data+xn+j)) < 2^256 / d^2. The d parameter sets the computational difficulty of finding a block, and the k parameter sets the memory hardness. Any birthday algorithm must somehow store all computations of H(data+xn+i) in memory so that future computations can be compared against them. Here, computation is memory-hard, but verification is memory-easy, allowing for extreme memory hardness without compromising the ease of verification. However, the algorithm is problematic for two reasons. First, there is a time-memory tradeoff attack where users 2x less memory can compensate with 2x more computational power, so its memory hardness is not absolute. Second, it may be easy to build specialized hardware devices for the problem, especially once one moves beyond traditional chip and processor architecture and into various classes of hardware-based hash tables or probabilistic analog computing.
-* **Dagger** - the idea behind [Dagger](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Dagger), an in-house algorithm developed by the Ethereum team, is to have an algorithm that is similar to Scrypt, but which is specially designed so that each individual nonce only depends on a small portion of the data tree that gets built up for each group of ~10 million nonces. Computing nonces with any reasonable level of efficiency requires building up the entire tree, taking up over 100 MB of memory, whereas verifying a nonce only takes about 100 KB. However, Dagger-style algorithms are vulnerable to devices that have multiple computational circuits sharing the same memory, and although this threat can be mitigated it is arguably impossible to fully remove.
-
-One of the key ingredients in a standard cryptocurrency is the idea of proof of work. A proof of work, in general, is a function which is hard to compute, but easy to verify, allowing it to serve as a probabilistic cryptographic proof of the quantity of computational resources controlled by a given node. In Bitcoin, and Ethereum, this mechanism is intimately tied in with the blockchain: every block requires a proof of work of some prespecified difficulty level in order to be valid, and in the event of multiple competing blockchains the chain with the largest total quantity of proof of work is considered to be valid. Thus, in order to reverse a transaction, an attacker needs to start a new fork of the blockchain from before the block the transaction was confirmed in, and then apply more computational power than the rest of the network combined in order to overtake the legitimate fork.
-
-However, one of the key requirements for a proof of work algorithm to, well, work is decentralization. If the proof of work algorithm is designed in such a way that the proof of work computation can only be efficiently done by entities with the millions of dollars of capital required to develop specialized hardware, then the number of participants in the process will be small enough that it will be possible for the majority of miners to conspire and reverse transactions. Alternatively, if the proof of work algorithm encourages miners to outsource their block verification work to centralized entities, then that is another way that centralization can creep in, and it would be the mining pools that have the potential to form conspiracies. Ideally, proof of work algorithms should solve both of those problems.
-
-#### Blockchain Based PoW Specification
-
-This mining algorithm is based on Adam Back's Hashcash, also used by Bitcoin. In Hashcash, we take a hash function `H` (assume 256-bit length) which takes as input data and a nonce and a difficulty parameter, and say that a valid nonce is one where `H(data,nonce) < 2^256 / difficulty`. Completing the proof of work essentially entails trying different nonces until one works, and verifying means applying the hash function to the data and nonce provided and making sure that the result is indeed below the target. In Bitcoin, `H` is a simple computation of `sha256(block_header + nonce)`. Here, however, `H` is much more complex, taking in as data not just the block header but also the state data and transactions from the last 16 blocks.
-
-In this early sketch of the mining algorithm, `H` is defined as follows:
-
-1. Let `h[i] = sha3(sha3(block_header) ++ nonce ++ i)` for `1 <= i <= 16`
-2. Let `S` be the blockchain state 16 blocks ago.
-3. Let `C[i]` be the transaction count of the block `i` blocks ago. Let `T[i]` be the `(h[i] mod C[i])`th transaction from the block `i` blocks ago.
-4. Apply `T[0]`, `T[1]` … `T[15]` sequentially to `S`. However, every time the transaction leads to processing a contract, (pseudo-)randomly make minor modifications to the code of all contracts affected.
-5. Let `S'` be the resulting state. Let `r` be the sha3 of the root of `S'`.
-
-#### Properties
-
-1. The algorithm is memory-hard; mining requires the miner to store the full state of the last 16 blocks in order to be able to query the blockchain. However, the algorithm is not sequentially memory-hard and is vulnerable to shared memory optimizations.
-2. The algorithm requires every node to store the entire blockchain state and be able to process transactions. Furthermore, as new blocks are created, it will likely be more efficient to generate the new blockchain state by computing it rather than by asking for and downloading the missing Patricia tree nodes. Hence, there is no reason why a miner would not want to be a full node.
-3. The EVM (Ethereum Virtual Machine) code is Turing-complete. Hence, an ASIC that performs transaction processing vastly more efficiently than existing CPUs would necessarily be a general-purpose computing device vastly more efficient than existing CPUs. Thus, if you can make an Ethereum ASIC, you can push the entire computing industry forward by about 5 years.
-4. Because every miner must have the full blockchain, there is no equivalent to the Bitcoin mining strategy of only downloading headers from a centralized source. Hence, centralized mining pools offer no benefits over p2pools, and so miners are more likely to use p2pools.
-5. The algorithm is relatively computationally quick to verify, although there is no "nice" verification formula that can be run inside EVM code.
-
-(3) and (4) combined basically mean that this proof of work algorithm provides both forms of decentralization, and (2) helps prevent centralization due to blockchain bloat since it helps ensure that at least miners will store the chain.
-
-In the above given form, the algorithm has several faults. First, due to the Pareto effect, it is likely that over 90% of transactions will use up less than 10% of the blockchain, so a truly full node will not be required to mine. Second, some targeted optimizations involving executing contracts and caching results may be possible. Finally, arguably most importantly, a deep 51% attack becomes possible, where attackers start hundreds of blocks back, produce 16 blocks with transactions optimized for themselves to process quickly (eg. obfuscated loops, weakened trapdoor functions), and then mine much faster than the legitimate chain. For the last two reasons, we expect that very heavy use (perhaps even dominance) of contract corruption/randomization will be necessary in the final version of the algorithm.
-
-### Transactions
-
-A transaction is stored as:
-
- [ nonce, receiving_address, value, [ data item 0, data item 1 ... data item n ], v, r, s ]
-
-nonce is the number of transactions already sent by that account, encoded in binary form (eg. 0 -> '', 7 -> '\x07', 1000 -> '\x03\xd8'). (v,r,s) is the raw Electrum-style signature of the transaction without the signature made with the private key corresponding to the sending account, with 0 <= v <= 3. From an Electrum-style signature (65 bytes) it is possible to extract the public key, and thereby the address, directly. A valid transaction is one where (i) the signature is well-formed (ie. 0 <= v <= 3, 0 <= r < P, 0 <= s < N, 0 <= r < P - N if v >= 2), and (ii) the sending account has enough funds to pay the fee and the value. A valid block cannot contain an invalid transaction; however, if a contract generates an invalid transaction that transaction will simply have no effect. Transaction fees will be included automatically. If one wishes to voluntarily pay a higher fee, one is always free to do so by constructing a contract which forwards transactions but automatically sends a certain amount or percentage to the miner of the current block.
-
-Transactions sent to the empty string as an address are a special type of transaction, creating a "contract".
-
-
-### Difficulty adjustment
-
-Difficulty is adjusted by the formula:
-
- D(genesis_block) = 2^36
- D(block) =
- if anc(block,1).timestamp >= anc(block,501).timestamp + 60 * 500: D(block.parent) - floor(D(block.parent) / 1000)
- else: D(block.parent) + floor(D(block.parent) / 1000)
-
-`anc(block,n)` is the nth generation ancestor of the block; all blocks before the genesis block are assumed to have the same timestamp as the genesis block. This stabilizes around a block time of 60 seconds automatically. The choice of 500 was made in order to balance the concern that for smaller values miners with sufficient hashpower to often produce two blocks in a row would have the incentive to provide an incorrect timestamp to maximize their own reward and the fact that with higher values the difficulty oscillates too much; with the constant of 500, simulations show that a constant hashpower produces a variance of about +/-20%.
-
-### Block Rewards and Limits
-
-A miner receives three kinds of rewards: a static block reward for producing a block, fees from transactions, and nephew/uncle rewards as described in the GHOST section above. The miner will receive 100% of the block reward and transaction fees for themselves. As described in the GHOST section, uncles only receive 87.5% of their block reward, with the remaining 12.5% going to the including nephew; the transaction fees from the stale block do not go to anyone.
-
-The default approach is to have no mandatory fees, allowing miners to include any transactions that they deem profitable to include. This approach has been received very favorably in the Bitcoin community particularly because it is "market-based" - that is, there is a market with miners on one side and transaction senders on the other where supply and demand determine the price. However, the problem with this line of reasoning is that transaction processing is not a market; although it is intuitively attractive to construe transaction processing as a service that the miner is making the effort to offer to transaction senders that needs to be paid for at an agreed-upon rate, in reality every transaction that a single miner includes needs to be processed by every node in the network, so the external costs of transaction processing borne by the network, which has no say in whether or not a transaction takes place, are thousands of times higher than the internal costs borne by the miner.
-
-However, as it turns out this flaw in the market-based mechanism, when given a particular inaccurate simplifying assumption, magically cancels itself out. The argument is as follows. Suppose that:
-
-1. The mining block reward is `B`.
-2. A transaction leads to `k` operations, offering the reward `kR` to any miner that includes it where `R` is set by the sender and `k` and `R` are visible to the miner beforehand.
-3. An operation has a processing cost of `C` to any node (ie. all nodes have equal efficiency)
-4. There are `N` mining nodes, each with exactly equal processing power (ie. `1/N` of total)
-5. No non-mining full nodes exist.
-
-A miner would be willing to process a transaction if the expected reward is greater than the cost. The expected reward is `kR/N` since the miner has a `1/N` chance of processing the next block. The cost is simply `kC`. Thus, the miner is willing to process transactions where:
-
- kR/N > kC
- kR > kNC
- R > NC
-
-Note that `R` is the per-operation fee, and `NC` is the cost to the entire network together of processing an operation. Hence, miners have the incentive to include only those transactions for which the total utilitarian benefit exceeds the cost. However, there are three important deviations from those assumptions in reality:
-
-1. The miner does pay a higher cost to process the transaction than the other verifying nodes, since the extra verification time delays block propagation and thus increases the chance the block will become a stale.
-2. There do exist nonmining full nodes.
-3. The mining power distribution may end up radically inegalitarian in practice.
-4. Speculators, political enemies and crazies whose utility function includes causing harm to the network do exist, and they can cleverly set up contracts where their cost is much lower than the cost paid by other verifying nodes.
-
-(1) provides a tendency for the miner to include fewer transactions, and (2) increases `NC`; hence, these two effects at least partially cancel each other out. (3) and (4) are the major issue; to solve them we simply institute a floating cap: no block can have more operations than 150% of the long-term exponential moving average (exact figure subject to change pending further economic analysis).
-
-## Contracts
-
-In Ethereum, there are two types of entities that can generate and receive transactions: actual people (or bots, as cryptographic protocols cannot distinguish between the two) and contracts. A contract is essentially an automated agent that lives on the Ethereum network, has an Ethereum address and balance, and can send and receive transactions. A contract is "activated" every time someone sends a transaction to it, at which point it runs its code, perhaps modifying its internal state or even sending some transactions, and then shuts down. The "code" for a contract is written in a special-purpose low-level language consisting of a stack, which is not persistent, 2^256 memory entries, which are also not persistent, and 2^256 storage entries which constitute the contract's permanent state. Note that Ethereum users will not need to code in this low-level stack language; we are providing a simple [C-Like language](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-CLL) with variables, expressions, conditionals, arrays and while loops, and provide a compiler down to Ethereum script code.
-
-### Applications
-
-Here are some examples of what can be done with Ethereum contracts, with all code examples written in our C-like language. The variables `call.sender`, `call.value`, `call.data` and `call.datasize` are properties of the incoming transaction, `contract.storage`, and `contract.address` of the contract itself, and `block.account_balance`, `block.number`, `block.difficulty`, `block.parenthash`, `block.basefee` and `block.timestamp` properties of the block. `block.basefee` is the "base fee" which all transaction fees in Ethereum are calculated as a multiple of; for more info see the "fees" section below. All variables expressed as capital letters (eg. `A`) are constants, to be replaced by actual values by the contract creator when actually releasing the contract.
-
-
-### Sub-currencies
-
-Sub-currencies have many applications ranging from currencies representing assets such as USD or gold to company stocks and even currencies with only one unit issued to represent collectibles or smart property. Advanced special-purpose financial protocols sitting on top of Ethereum may also wish to organize themselves with an internal currency. Sub-currencies are surprisingly easy to implement in Ethereum; this section describes a fairly simple contract for doing so.
-
-The idea is that if someone wants to send X currency units to account A in currency contract C, they will need to make a transaction of the form `(C, 100 * block.basefee, [A, X])`, and the contract parses the transaction and adjusts balances accordingly. For a transaction to be valid, it must send 100 times the base fee worth of ether to the contract in order to "feed" the contract (as each computational step after the first 16 for any contract costs the contract a small fee and the contract will stop working if its balance drains to zero).
-
- if tx.value < 100 * block.basefee:
- stop
- elif contract.storage[1000]:
- from = tx.sender
- to = tx.data[0]
- value = tx.data[1]
- if to <= 1000:
- stop
- if contract.storage[from] < value:
- stop
- contract.storage[from] = contract.storage[from] - value
- contract.storage[to] = contract.storage[to] + value
- else:
- contract.storage[MYCREATOR] = 10^18
- contract.storage[1000] = 1
-
-
-Ethereum sub-currency developers may also wish to add some other more advanced features:
-
-* Include a mechanism by which people can buy currency units in exchange for ether, perhaps auctioning off a set number of units every day.
-* Allow transaction fees to be paid in the internal currency, and then refund the ether transaction fee to the sender. This solves one major problem that all other "sub-currency" protocols have had to date: the fact that sub-currency users need to maintain a balance of sub-currency units to use and units in the main currency to pay transaction fees in. Here, a new account would need to be "activated" once with ether, but from that point on it would not need to be recharged.
-* Allow for a trust-free decentralized exchange between the currency and ether. Note that trust-free decentralized exchange between any two contracts is theoretically possible in Ethereum even without special support, but special support will allow the process to be done about ten times more cheaply.
-
-
-### Financial derivatives
-
-The underlying key ingredient of a financial derivative is a data feed to provide the price of a particular asset as expressed in another asset (in Ethereum's case, the second asset will usually be ether). There are many ways to implement a data feed; one method, pioneered by the developers of [Mastercoin](http://mastercoin.org/), is to include the data feed in the blockchain. Here is the code:
-
- if tx.sender != FEEDOWNER:
- stop
- contract.storage[data[0]] = data[1]
-
-Any other contract will then be able to query index I of data store D by using `block.contract_storage(D)[I]`. A more advanced way to implement a data feed may be to do it off-chain - have the data feed provider sign all values and require anyone attempting to trigger the contract to include the latest signed data, and then use Ethereum's internal scripting functionality to verify the signature. Pretty much any derivative can be made from this, including leveraged trading, options, and even more advanced constructions like collateralized debt obligations (no bailouts here though, so be mindful of black swan risks).
-
-To show an example, let's make a hedging contract. The basic idea is that the contract is created by party A, who puts up 4000 ether as a deposit. The contract then lies open for any party to accept it by putting in 1000 ether. Say that 1000 ether is worth $25 at the time the contract is made, according to index I of data store D. If party B accepts it, then after 30 days anyone can send a transaction to make the contract process, sending the same dollar value worth of ether (in our example, $25) back to B and the rest to A. B gains the benefit of being completely insulated against currency volatility risk without having to rely on any issuers. The only risk to B is if the value of ether falls by over 80% in 30 days - and even then, if B is online B can simply quickly hop onto another hedging contract. The benefit to A is the implicit 0.2% fee in the contract, and A can hedge against losses by separately holding USD in another location (or, alternatively, A can be an individual who is optimistic about the future of Ethereum and wants to hold ether at 1.25x leverage, in which case the fee may even be in B's favor).
-
- if tx.value < 200 * block.basefee:
- stop
- if contract.storage[1000] == 0:
- if tx.value < 1000 * 10^18:
- stop
- contract.storage[1000] = 1
- contract.storage[1001] = 998 * block.contract_storage(D)[I]
- contract.storage[1002] = block.timestamp + 30 * 86400
- contract.storage[1003] = tx.sender
- else:
- ethervalue = contract.storage[1001] / block.contract_storage(D)[I]
- if ethervalue >= 5000:
- mktx(contract.storage[1003],5000 * 10^18,0,0)
- else if block.timestamp > contract.storage[1002]:
- mktx(contract.storage[1003],ethervalue * 10^18,0,0)
- mktx(A,(5000 - ethervalue) * 10^18,0,0)
-
-More advanced financial contracts are also possible; complex multi-clause options (eg. "Anyone, hereinafter referred to as X, can claim this contract by putting in 2 USD before Dec 1. X will have a choice on Dec 4 between receiving 1.95 USD on Dec 29 and the right to choose on Dec 11 between 2.20 EUR on Dec 28 and the right to choose on Dec 18 between 1.20 GBP on Dec 30 and paying 1 EUR and getting 3.20 EUR on Dec 29") can be defined simply by storing a state variable just like the contract above but having more clauses in the code, one clause for each possible state. Note that financial contracts of any form do need to be fully collateralized; the Ethereum network controls no enforcement agency and cannot collect debt.
-
-
-### Identity and Reputation Systems
-
-The earliest alternative cryptocurrency of all, [Namecoin](http://namecoin.org/), attempted to use a Bitcoin-like blockchain to provide a name registration system, where users can register their names in a public database alongside other data. The major cited use case is for a [DNS](http://en.wikipedia.org/wiki/Domain_Name_System) system, mapping domain names like "bitcoin.org" (or, in Namecoin's case, "bitcoin.bit") to an IP address. Other use cases include email authentication and potentially more advanced reputation systems. Here is a simple contract to provide a Namecoin-like name registration system on Ethereum:
-
- if tx.value < block.basefee * 200:
- stop
- if contract.storage[tx.data[0]] or tx.data[0] < 100:
- stop
- contract.storage[tx.data[0]] = tx.data[1]
-
-One can easily add more complexity to allow users to change mappings, automatically send transactions to the contract and have them forwarded, and even add reputation and web-of-trust mechanics.
-
-
-### Decentralized Autonomous Organizations
-
-The general concept of a "decentralized autonomous organization" is that of a virtual entity that has a certain set of members or shareholders which, perhaps with a 67% majority, have the right to spend the entity's funds and modify its code. The members would collectively decide on how the organization should allocate its funds. Methods for allocating a DAO's funds could range from bounties, salaries to even more exotic mechanisms such as an internal currency to reward work. This essentially replicates the legal trappings of a traditional company or nonprofit but using only cryptographic blockchain technology for enforcement. So far much of the talk around DAOs has been around the "capitalist" model of a "decentralized autonomous corporation" (DAC) with dividend-receiving shareholders and tradable shares; an alternative, perhaps described as a "decentralized autonomous community", would have all members have an equal share in the decision making and require 67% of existing members to agree to add or remove a member. The requirement that one person can only have one membership would then need to be enforced collectively by the group.
-
-Some "skeleton code" for a DAO might look as follows.
-
-There are three transaction types:
-
-* [0,k] to register a vote in favor of a code change
-* [1,k,L,v0,v1...vn] to register a code change at code k in favor of setting memory starting from location L to v0, v1 ... vn
-* [2,k] to finalize a given code change
-
-Note that the design relies on the randomness of addresses and hashes for data integrity; the contract will likely get corrupted in some fashion after about 2^128 uses, but that is acceptable since nothing close to that volume of usage will exist in the foreseeable future. 2^255 is used as a magic number to store the total number of members, and a membership is stored with a 1 at the member's address. The last three lines of the contract are there to add C as the first member; from there, it will be C's responsibility to use the democratic code change protocol to add a few other members and code to bootstrap the organization.
-
- if tx.value < tx.basefee * 200:
- stop
- if contract.storage[tx.sender] == 0:
- stop
- k = sha3(32,tx.data[1])
- if tx.data[0] == 0:
- if contract.storage[k + tx.sender] == 0:
- contract.storage[k + tx.sender] = 1
- contract.storage[k] += 1
- else if tx.data[0] == 1:
- if tx.value <= tx.datan * block.basefee * 200 or contract.storage[k]:
- stop
- i = 2
- while i < tx.datan:
- contract.storage[k + i] = tx.data[i]
- i = i + 1
- contract.storage[k] = 1
- contract.storage[k+1] = tx.datan
- else if tx.data[0] == 2:
- if contract.storage[k] >= contract.storage[2 ^ 255] * 2 / 3:
- if tx.value <= tx.datan * block.basefee * 200:
- stop
- i = 3
- L = contract.storage[k+1]
- loc = contract.storage[k+2]
- while i < L:
- contract.storage[loc+i-3] = tx.data[i]
- i = i + 1
- if contract.storage[2 ^ 255 + 1] == 0:
- contract.storage[2 ^ 255 + 1] = 1
- contract.storage[C] = 1
-
-This implements the "egalitarian" DAO model where members have equal shares. One can easily extend it to a shareholder model by also storing how many shares each owner holds and providing a simple way to transfer shares.
-
-DAOs and DACs have already been the topic of a large amount of interest among cryptocurrency users as a future form of economic organization, and we are very excited about the potential that DAOs can offer. In the long term, the Ethereum fund itself intends to transition into being a fully self-sustaining DAO.
-
-
-### Further Applications
-
-1. **Savings wallets**. Suppose that Alice wants to keep her funds safe, but is worried that she will lose or someone will hack her private key. She puts ether into a contract with Bob, a bank, as follows: Alice alone can withdraw a maximum of 1% of the funds per day, Alice and Bob together can withdraw everything, and Bob alone can withdraw a maximum of 0.05% of the funds. Normally, 1% per day is enough for Alice, and if Alice wants to withdraw more she can contact Bob for help. If Alice's key gets hacked, she runs to Bob to move the funds to a new contract. If she loses her key, Bob will get the funds out eventually. If Bob turns out to be malicious, she can still withdraw 20 times faster than he can.
-
-2. **Crop insurance**. One can easily make a financial derivatives contract but using a data feed of the weather instead of any price index. If a farmer in Iowa purchases a derivative that pays out inversely based on the precipitation in Iowa, then if there is a drought, the farmer will automatically receive money and if there is enough rain the farmer will be happy because their crops would do well.
-
-3. **A decentralized (non-centrally managed) data feed**, using proof-of-stake voting to give an average (or more likely, median) of everyone's opinion on the price of a commodity, the weather or any other relevant data.
-
-4. **Smart multisignature escrow**. Bitcoin allows multisignature transaction contracts where, for example, three out of a given five keys can spend the funds. Ethereum allows for more granularity; for example, four out of five can spend everything, three out of five can spend up to 10% per day, and two out of five can spend up to 0.5% per day. Additionally, Ethereum multisig is asynchronous - two parties can register their signatures on the blockchain at different times and the last signature will automatically send the transaction.
-
-5. **Peer-to-peer gambling**. Any number of peer-to-peer gambling protocols, such as Frank Stajano and Richard Clayton's [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf), can be implemented on the Ethereum blockchain. The simplest gambling protocol is actually simply a contract for difference on the next block hash. From there, entire gambling services such as SatoshiDice can be replicated on the blockchain either by creating a unique contract per bet or by using a quasi-centralized contract.
-
-6. A full-scale **on-chain stock market**. Prediction markets are also easy to implement as a trivial consequence.
-
-7. An **on-chain decentralized marketplace**, using the identity and reputation system as a base.
-
-8. **Decentralized Dropbox**. One setup is to encrypt a file, build a Merkle tree out of it, put the Merkle root into a contract alongside a certain quantity of ether, and distribute the file across some secondary network. Every day, the contract would randomly select a branch of the Merkle tree depending on the block hash, and give X ether to the first node to provide that branch to the contract, thereby encouraging nodes to store the data for the long term in an attempt to earn the prize. If one wants to download any portion of the file, one can use a [micropayment-channel](https://bitcointalk.org/index.php?topic=244656.0)-style contract to download the file from a few nodes a block at a time.
-
-
-### How do contracts work?
-
-A contract making transaction is encoded as follows:
-
- [
- nonce,
- '',
- value,
- [
- data item 0,
- data item 1,
- ...
- ],
- v,
- r,
- s
- ]
-
-
-The data items will, in most cases, be script codes (more on this below). Contract creation transaction validation happens as follows:
-
-Deserialize the transaction, and extract its sending address from its signature.
-Calculate the transaction's fee as NEWCONTRACTFEE plus storage fees for the code. Check that the balance of the creator is at least the transaction value plus the fee. If not, exit.
-Take the last 20 bytes of the sha3 hash of the RLP encoding of the transaction making the contract. If an account with that address already exists, exit. Otherwise, create the contract at that address
-Copy data item i to storage slot i in the contract for all i in [0 ... n-1] where n is the number of data items in the transaction, and initialize the contract with the transaction's value as its value. Subtract the value and fee from the creator's balance.
-
-
-### Language Specification
-
-The contract scripting language is a hybrid of assembly language and Bitcoin's stack-based language, maintaining an index pointer that usually increments by one after every operation and continuously processing the operation found at the current index pointer. All opcodes are numbers in the range [0 ... 63]; labels further in this description such as STOP, EXTRO and BALANCE refer to specific values and are defined further below. The scripting language has access to three kinds of memory:
-
-* **Stack** - a form of temporary storage that is reset to an empty list every time a contract is executed. Operations typically add and remove values to and from the top of the stack, so the total length of the stack will shrink and grow over the course of the program's execution.
-* **Memory** - a temporary key/value store that is reset to containing all zeroes every time a contract is executed. Keys and values in memory are integers in the range [0 ... 2^256-1]
-* **Storage** - a persistent key/value store that is initially set to contain all zeroes, except for some script code inserted at the beginning when the contract is created as described above. Keys and values in storage are integers in the range [0 ... 2^256-1]
-
-Whenever a transaction is sent to a contract, the contract executes its scripting code. The precise steps that happen when a contract receives a transaction are as follows:
-
-**Contract Script Interpretation **
-
-![SPV in bitcoin](https://www.ethereum.org/gh_wiki/flowchart.png)
-
-1. The contract's ether balance increases by the amount sent
-2. The index pointer is set to zero, and STEPCOUNT = 0
-3. Repeat forever:
-
-* if the command at the index pointer is STOP, invalid or greater than 63, exit from the loop
-* set MINERFEE = 0, VOIDFEE = 0
-* set STEPCOUNT <- STEPCOUNT + 1
-* if STEPCOUNT > 16, set MINERFEE <- MINERFEE + STEPFEE
-* see if the command is LOAD or STORE. If so, set MINERFEE <- MINERFEE + DATAFEE
-* see if the command will modify a storage field, say modifying KEY from OLDVALUE to NEWVALUE. Let F(K,V) be 0 if V == 0 else (len(K) + len(V)) * STORAGEFEE in bytes. Set VOIDFEE <- VOIDFEE - F(KEY,OLDVALUE) + F(KEY,NEWVALUE). Computing len(K) ignores leading zero bytes.
-* see if the command is EXTRO or BALANCE. If so, set MINERFEE <- MINERFEE + EXTROFEE
-* see if the command is a crypto operation. If so, set MINERFEE <- MINERFEE + CRYPTOFEE
-* if MINERFEE + VOIDFEE > CONTRACT.BALANCE, HALT and exit from the loop
-* subtract MINERFEE from the contract's balance and add MINERFEE to a running counter that will be added to the miner's balance once all transactions are parsed.
-* set DELTA = max(-CONTRACT.STORAGE_DEPOSIT,VOIDFEE) and CONTRACT.BALANCE <- CONTRACT.BALANCE - DELTA and CONTRACT.STORAGE_DEPOSIT <- CONTRACT.STORAGE_DEPOSIT + DELTA. Note that DELTA can be positive or negative; the only restriction is that the contract's deposit cannot go below zero.
-* run the command
-* if the command did not exit with an error, update the index pointer and return to the start of the loop. If the contract did exit with an error, break out of the loop. Note that a contract exiting with an error does not make the transaction or the block invalid; it simply means that the contract execution halts midway through.
-
-In the following descriptions, S[-1], S[-2], etc represent the topmost, second topmost, etc items on the stack. The individual opcodes are defined as follows:
-
-* (0) STOP - halts execution
-* (1) ADD - pops two items and pushes S[-2] + S[-1] mod 2^256
-* (2) MUL - pops two items and pushes S[-2] * S[-1] mod 2^256
-* (3) SUB - pops two items and pushes S[-2] - S[-1] mod 2^256
-* (4) DIV - pops two items and pushes floor(S[-2] / S[-1]). If S[-1] = 0, halts execution.
-* (5) SDIV - pops two items and pushes floor(S[-2] / S[-1]), but treating values above 2^255 - 1 as negative (ie. x -> 2^256 - x). If S[-1] = 0, halts execution.
-* (6) MOD - pops two items and pushes S[-2] mod S[-1]. If S[-1] = 0, halts execution.
-* (7) SMOD - pops two items and pushes S[-2] mod S[-1], but treating values above 2^255 - 1 as negative (ie. x -> 2^256 - x). If S[-1] = 0, halts execution.
-* (8) EXP - pops two items and pushes S[-2] ^ S[-1] mod 2^256
-* (9) NEG - pops one item and pushes 2^256 - S[-1]
-* (10) LT - pops two items and pushes 1 if S[-2] < S[-1] else 0
-* (11) LE - pops two items and pushes 1 if S[-2] <= S[-1] else 0
-* (12) GT - pops two items and pushes 1 if S[-2] > S[-1] else 0
-* (13) GE - pops two items and pushes 1 if S[-2] >= S[-1] else 0
-* (14) EQ - pops two items and pushes 1 if S[-2] == S[-1] else 0
-* (15) NOT - pops one item and pushes 1 if S[-1] == 0 else 0
-* (16) MYADDRESS - pushes the contract's address as a number
-* (17) TXSENDER - pushes the transaction sender's address as a number
-* (18) TXVALUE - pushes the transaction value
-* (19) TXDATAN - pushes the number of data items
-* (20) TXDATA - pops one item and pushes data item S[-1], or zero if index out of range
-* (21) BLK_PREVHASH - pushes the hash of the previous block (NOT the current one since that's impossible!)
-* (22) BLK_COINBASE - pushes the coinbase of the current block
-* (23) BLK_TIMESTAMP - pushes the timestamp of the current block
-* (24) BLK_NUMBER - pushes the current block number
-* (25) BLK_DIFFICULTY - pushes the difficulty of the current block
-* (26) BLK_NONCE - pushes the nonce of the current block
-* (27) BASEFEE - pushes the base fee (x as defined in the fee section below)
-* (32) SHA256 - pops two items, and then constructs a string by taking the ceil(S[-1] / 32) items in memory from index S[-2] to (S[-2] + ceil(S[-1] / 32) - 1) mod 2^256, prepending zero bytes to each one if necessary to get them to 32 bytes, and takes the last S[-1] bytes. Pushes the SHA256 hash of the string
-* (33) RIPEMD160 - works just like SHA256 but with the RIPEMD-160 hash
-* (34) ECMUL - pops three items. If (S[-2],S[-1]) are a valid point in secp256k1, including both coordinates being less than P, pushes (S[-2],S[-1]) * S[-3], using (0,0) as the point at infinity. Otherwise, pushes (2^256 - 1, 2^256 - 1). Note that there are no restrictions on S[-3]
-* (35) ECADD - pops four items and pushes (S[-4],S[-3]) + (S[-2],S[-1]) if both points are valid, otherwise (2^256 - 1,2^256 - 1)
-* (36) ECSIGN - pops two items and pushes (v,r,s) as the Electrum-style RFC6979 deterministic signature of message hash S[-1] with private key S[-2] mod N with 0 <= v <= 3
-* (37) ECRECOVER - pops four items and pushes (x,y) as the public key from the signature (S[-3],S[-2],S[-1]) of message hash S[-4]. If the signature has invalid v,r,s values (ie. v not in [27,28], r not in [0,P], s not in [0,N]), return (2^256 - 1,2^256 - 1)
-* (38) ECVALID - pops two items and pushes 1 if (S[-2],S[-1]) is a valid secp256k1 point (including (0,0)) else 0
-* (39) SHA3 - works just like SHA256 but with the SHA3 hash, 256 bit version
-* (48) PUSH - pushes the item in memory at the index pointer + 1, and advances the index pointer by 2.
-* (49) POP - pops one item.
-* (50) DUP - pushes S[-1] to the stack.
-* (51) SWAP - pops two items and pushes S[-1] then S[-2]
-* (52) MLOAD - pops two items and sets the item in memory at index S[-1] to S[-2]
-* (53) MSTORE - pops two items and sets the item in memory at index S[-1] to S[-2]
-* (54) SLOAD - pops two items and sets the item in storage at index S[-1] to S[-2]
-* (55) SSTORE - pops two items and sets the item in storage at index S[-1] to S[-2]
-* (56) JMP - pops one item and sets the index pointer to S[-1]
-* (57) JMPI - pops two items and sets the index pointer to S[-2] only if S[-1] is nonzero
-* (58) IND - pushes the index pointer
-* (59) EXTRO - pops two items and pushes memory index S[-2] of contract S[-1]
-* (60) BALANCE - pops one item and pushes balance of the account with that address, or zero if the address is invalid
-* (61) MKTX - pops four items and initializes a transaction to send S[-2] ether to S[-1] with S[-3] data items. Takes items in memory from index S[-4] to index (S[-4] + S[-3] - 1) mod 2^256 as the transaction's data items.
-* (63) SUICIDE - pops one item, destroys the contract and clears all storage, sending the entire balance plus the contract deposit to the account at S[-1]
-
-
-As mentioned above, the intent is not for people to write scripts directly in Ethereum script code; rather, we will release compilers to generate ES from higher-level languages. The first supported language will likely be the simple [C-like language](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-CLL) used in the descriptions above, and the second will be a more complete first-class-function language with support for arrays and arbitrary-length strings. Compiling the C-like language is fairly simple as far as compilers go: variables can be assigned a memory index, and compiling an arithmetic expression essentially involves converting it to reverse Polish notation (eg. `(3 + 5) * (x + y)` -> `PUSH 3 PUSH 5 ADD PUSH 0 MLOAD PUSH 1 MLOAD ADD MUL`). First-class function languages are more involved due to variable scoping, but the problem is nevertheless tractable. The likely solution will be to maintain a linked list of stack frames in memory, giving each stack frame N memory slots where N is the total number of distinct variable names in the program. Variable access will consist of searching down the stack frame list until one frame contains a pointer to the variable, copying the pointer to the top stack frame for memoization purposes, and returning the value at the pointer. However, these are longer term concerns; compilation is separate from the actual protocol, and so it will be possible to continue to research compilation strategies long after the network is set running.
-
-
-## Fees
-
-In Bitcoin, there are no mandatory transaction fees. Transactions can optionally include fees which are paid to miners, and it is up to the miners to decide what fees they are willing to accept. In Bitcoin, such a mechanism is already imperfect; the need for a 1 MB block size limit alongside the fee mechanism shows this all too well. In Ethereum, because of its Turing-completeness, a purely voluntary fee system would be catastrophic. Instead, Ethereum will have a system of mandatory fees, including a transaction fee and six fees for contract computations. The fees are currently set to:
-
-* TXFEE (100x) - fee for sending a transaction
-* NEWCONTRACTFEE (100x) - fee for creating a new contract, not including the storage fee for each item in script code
-* STEPFEE (1x) - fee for every computational step after the first sixteen in contract execution
-* STORAGEFEE (5x) - per-byte fee for adding to contract storage. The storage fee is the only fee that is not paid to a miner, and is refunded when storage used by a contract is reduced or removed.
-* DATAFEE (20x) - fee for accessing or setting a contract's memory from inside that contract
-* EXTROFEE (40x) - fee for accessing memory from another contract inside a contract
-* CRYPTOFEE (20x) - fee for using any of the cryptographic operations
-
-
-The coefficients will be revised as more hard data on the relative computational cost of each operation becomes available. The hardest part will be setting the value of x. There are currently two main solutions that we are considering:
-
-* Make x inversely proportional to the square root of the difficulty, so x = floor(10^21 / floor(difficulty ^ 0.5)). This automatically adjusts fees down as the value of ether goes up, and adjusts fees down as computers get more powerful due to Moore's Law.
-* Use proof of stake voting to determine the fees. In theory, stakeholders do not benefit directly from fees going up or down, so their incentives would be to make the decision that would maximize the value of the network.
-
-A hybrid solution is also possible, using proof of stake voting, but with the inverse square root mechanism as an initial policy.
-
-
-## Conclusion
-
-The Ethereum protocol's design philosophy is in many ways the opposite from that taken by many other cryptocurrencies today. Other cryptocurrencies aim to add complexity and increase the number of "features"; Ethereum, on the other hand, takes features away. The protocol does not "support" multisignature transactions, multiple inputs and outputs, hash codes, lock times or many other features that even Bitcoin provides. Instead, all complexity comes from a universal, Turing-complete scripting language, which can be used to build up literally any feature that is mathematically describable through the contract mechanism. As a result, we have a protocol with unique potential; rather than being a closed-ended, single-purpose protocol intended for a specific array of applications in data storage, gambling or finance, Ethereum is open-ended by design, and we believe that it is extremely well-suited to serving as a foundational layer for a very large number of both financial and non-financial protocols in the years to come.
-
-
-## References and Further Reading
-
-1. Colored coins whitepaper: https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit
-2. Mastercoin whitepaper: https://github.com/mastercoin-MSC/spec
-3. Decentralized autonomous corporations, Bitcoin Magazine: http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/
-4. Smart property: https://en.bitcoin.it/wiki/Smart_Property
-5. Smart contracts: https://en.bitcoin.it/wiki/Contracts
-6. Simplified payment verification: https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification
-7. Merkle trees: http://en.wikipedia.org/wiki/Merkle_tree
-8. Patricia trees: http://en.wikipedia.org/wiki/Patricia_tree
-9. Bitcoin whitepaper: http://bitcoin.org/bitcoin.pdf
-10. GHOST: http://www.cs.huji.ac.il/~avivz/pubs/13/btc_scalability_full.pdf
-11. StorJ and Autonomous Agents, Jeff Garzik: http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html
-12. Mike Hearn on Smart Property at Turing Festival: http://www.youtube.com/watch?v=Pu4PAMFPo5Y
-13. Ethereum RLP: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP
-14. Ethereum Merkle Patricia trees: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree
-15. Ethereum Dagger: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Dagger
-16. Ethereum C-like language: https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-CLL
-17. Ethereum Slasher: http://blog.ethereum.org/?p=39/slasher-a-punitive-proof-of-stake-algorithm
-18. Scrypt parameters: https://litecoin.info/User:Iddo/ComparisonbetweenLitecoinandBitcoin#SHA256miningvsscryptmining
-19. Litecoin ASICs: https://axablends.com/merchants-accepting-bitcoin/litecoin-discussion/litecoin-scrypt-asic-miners/
\ No newline at end of file
diff --git a/drafts/[english]-patricia-tree-draft.md b/drafts/[english]-patricia-tree-draft.md
deleted file mode 100644
index 57f12ab23..000000000
--- a/drafts/[english]-patricia-tree-draft.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-name: Patricia Tree
-category:
----
-
-The best known tutorial/explanation of the ethereum patricia tree is here:
-https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/
\ No newline at end of file
diff --git a/images/natspec1.png b/images/natspec1.png
deleted file mode 100644
index cf31fcf24fce2801ffbedaac8ae151d7e5d806d0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 82697
zcmeFZcT|&0)HfO{Do63CSg3jgl_CfT2%%Y#F1>~-y-5kZSy2#BlwOriAoL)FW&xzv
z5FmsiB|spdLx8}YDCjx&UF&}T-gm7p3s#b+%*-=;&)&cN+k5irfwJt;BTPpi5Xe!v
z`*+kJ5V`;eWdDsr2f>lauFto@+kTf@avF!g%jeL;m*D&1NB4DI!1Y+#|DIb{;yl2?
zbFO!FT-6;dT-{Ba%^~jY?tIn`wk~ESkIeZToh{=?5=;=td5GMdn;IVRGkD8rbI=F6AY@9r7D^5hVm>Zy*4N4R0z
zEMezgcD^@cj5#7yZ0%_{r`XETC+8*@6Fx`vxcjbT)sSe&Ia2-!=B;0@e@SOF}S4fTYeaODw-(}uhnb656zq1ZcU0+pvB;JP?aGc$E
z7~ACK-0w6N=2kgw%S&26bDw2{+fW$Y-%}3kRNA(kBG&7;_0B`ctcKZU*k0HxEB`(Vbmlwx@;F>?UV7EF_rUS5&Cy
zcMCNbzP7{0?yqE38t&Db-Ah{RHzcKg1b3o|X2()sor5cR*Vc#6I^N`X9OCviPELb)
zx$^u;Am5#rOtQ1r!F+z7%2q`|{=Bw*E3#kOvEmYv(B3Gopho+$#V;`S`*VADFNahW
zDL}l-HS>5VZ;M?@aYARqpHbdw96R;7o$mKF$ybgvgvsMMLt8i^Dl0LLs{M@m?dVJx
zEXv3%oPGK9QuH5LeQsP53UIlMa~>r4iP$>aYike|w?I`6V7+YG7>)8=&IGGgQqBdV
ziLZY=I#YTs@rP^4r2*EaCW*E3$lo0XAfBfgR?qi*Ire9ukT>oWXL_sO*Fa=GU)=N8
zpRYHc?7#Ns+x}OkVvaW0Y~5(5KL;T`u5;}sa%CrKwwbyr+n@XyHDnDrn(Z9^>A>|r
zSMNW1qUO)H;~Wc|dsrCN#iXca!#w31bun4k`wb0T&l4wK24&^Y(J{ceg}m+03+U06VQ;Ix
zKWUUk%tpZK^-HYgtB*iaZ*_grrDwh2@qLAYf|5~{(jJrfOro|U1)(1$uw@6nRxpRa
zlV3~k4)cmmtxwq%u`Pae^Q}{ij9DZ++Ip%mY^gWpqTRScly53Hz{SliIAnHhG%BHb
znlKCPmO$y61cv81hru-z$Nv#nvEZoRPAe|HPOb0_O!Tv;;5{A8<~6tV