Skip to content
This repository has been archived by the owner on May 16, 2022. It is now read-only.

Commit

Permalink
Merge pull request #63 from muddlebee/master
Browse files Browse the repository at this point in the history
FIX: broken links to various markdown pages
  • Loading branch information
samajammin authored Nov 16, 2021
2 parents 2c9c4ab + e67fc4f commit ca09068
Show file tree
Hide file tree
Showing 21 changed files with 63 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ NOTE: all clients are listed in alphabetical order.

## Other projects, tools, etc.

- [sharding](./sharding-introduction-r-d-compendium.md)
- [Casper Proof-of-Stake](./casper-proof-of-stake-compendium.md)
- [smart contract languages](./dapp-development.md):
- [sharding](../sharding/sharding-introduction-r-d-compendium.md)
- [Casper Proof-of-Stake](../concepts/casper-proof-of-stake-compendium.md)
- [smart contract languages](../fundamentals/dapp-development.md):
- Solidity: [repo](https://github.com/ethereum/solidity), join the chat at <https://gitter.im/ethereum/solidity>, [docs](https://solidity.readthedocs.org/en/latest/), see the above link for more resources.
- Vyper: [repo](https://github.com/ethereum/vyper)
- LLL and other deprecated languages
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ A curated list of resources on the Ethereum Virtual Machine (EVM), which is the

Not listed there yet, but in the spirit of [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

Here is [how to contribute](./contributing.md).
Here is [how to contribute](../../governance/contributing.md).

## Specification

Expand Down
6 changes: 3 additions & 3 deletions concepts/evm/evm.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ A curated list of resources on the Ethereum Virtual Machine (EVM), which is the

Not listed there yet, but in the spirit of [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

Here is [how to contribute](./contributing.md).
Here is [how to contribute](../../governance/contributing.md).


## Specification
Expand All @@ -38,7 +38,7 @@ Here is [how to contribute](./contributing.md).
- A hands on guide to understanding how the EVM works, with examples written in raw byte-code and solidity
* [Diving Into The Ethereum Virtual Machine](https://medium.com/@hayeah/diving-into-the-ethereum-vm-6e8d5d2f3c30)
- An article series examining different aspects of the EVM by walking you through Solidity's assembly output
* [Consensus Datastructures](./consensus-datastructures.md)
* [Consensus Datastructures](../../fundamentals/specs/consensus-datastructures.md)

## Tests

Expand All @@ -61,7 +61,7 @@ Here is [how to contribute](./contributing.md).
- A Python implementation designed to be highly configurable and modular and compliant with the Ethereum test suite, work is in progress on it to run a full node and develop sharding.
* [EthereumJ](https://github.com/ethereum/ethereumj) in Java
- A client with its own EVM implementation
* For more, see [here](./clients-tools-dapp-browsers-wallets-and-other-projects.md).
* For more, see [here](../../clients/clients-tools-dapp-browsers-wallets-and-other-projects.md).

### Other Implementations

Expand Down
2 changes: 1 addition & 1 deletion concepts/light-client-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The purpose of the light client protocol is to allow users in low-capacity envir

## Background: Patricia Merkle Trees

All substantial quantities of data in Ethereum are stored in a data structure known as the [Patricia Merkle tree](./fundamentals/patricia-tree.md), a tree structure where each node in the tree is the hash of its children. Each set of key/value pairs maps to a unique root hash, and only a small subset of nodes is needed to prove that a particular key/value combination is in the tree corresponding to a particular root hash.
All substantial quantities of data in Ethereum are stored in a data structure known as the [Patricia Merkle tree](../fundamentals/patricia-tree.md), a tree structure where each node in the tree is the hash of its children. Each set of key/value pairs maps to a unique root hash, and only a small subset of nodes is needed to prove that a particular key/value combination is in the tree corresponding to a particular root hash.

The size complexity of a Merkle proof scales linearly with the height of a tree; because each child in a tree has a particular number of children (in our case, up to 17), this means that the size complexity of a Merkle proof is logarithmic in the quantity of data stored. This means that, even if the entire state tree is a few gigabytes in size, if a node receives a state root from a trusted source that node has the ability to know with full certainty the validity of any information with the tree by only downloading a few kilobytes of data in a proof.

Expand Down
4 changes: 2 additions & 2 deletions concepts/security-categorization.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Security Categorization

[See also](./design-rationale.md), for descriptions of potentially counterintuitive design decisions in Ethereum.
[See also](../fundamentals/design-rationale.md), for descriptions of potentially counterintuitive design decisions in Ethereum.

The purpose of this document is to attempt to create a taxonomy of key security properties that we are targeting for the Ethereum protocol, implementation and materials to have at launch time, as well as provide supplementary information where needed for each one.

Expand All @@ -13,7 +13,7 @@ The purpose of this document is to attempt to create a taxonomy of key security

## Proof of Work

The working spec description of Dagger Hashimoto is available [here](./ethash.md).
The working spec description of Dagger Hashimoto is available [here](./ethash/ethash.md).

The algorithm is intended to have the following key properties:

Expand Down
6 changes: 3 additions & 3 deletions faqs/faqs.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ If you prefer to learn by watching videos, see:

## How do I buy Ether or ETH?

Read [this](./fundamentals/ethereum-introduction.md#how-do-you-buy-and-sell-ether-the-currency-of-ethereum).
Read [this](../fundamentals/ethereum-introduction.md#how-do-you-buy-and-sell-ether-the-currency-of-ethereum).

## Where can I learn more about Ethereum?

Expand Down Expand Up @@ -120,7 +120,7 @@ With the eth client
### Where can I learn about contract development?

- Articles
- [Ethereum Development Tutorial](./howto/ethereum-development-tutorial.md)
- [Ethereum Development Tutorial](../howto/ethereum-development-tutorial.md)
- Videos
- [Ethereum](https://www.youtube.com/user/ethereumproject/videos)
- [EtherCasts](https://www.youtube.com/user/EtherCasts/videos)
Expand Down Expand Up @@ -177,7 +177,7 @@ With the eth client
- [The PoC 6 API for C++](https://github.com/ethereum/cpp-ethereum/wiki/Client-Development-with-PoC-6)
- [The PoC 5 API for Go](https://github.com/ethereum/go-ethereum/wiki/PoC-5-Public-Go-API)
- [The PoC 6 API for QML](https://github.com/ethereum/go-ethereum/wiki/QML-PoC6-API)
- [The PoC 7 API for JavaScript](./javascript-api.md)
- [The PoC 7 API for JavaScript](https://github.com/ethereum/wiki/wiki/JavaScript-API)

### Where can I learn about ÐApp development?

Expand Down
4 changes: 2 additions & 2 deletions faqs/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ See also: <https://bitcoin.org/en/vocabulary>

See also: <http://ethereum.org/ethereum.html>

- **Serialization**: the process of converting a data structure into a sequence of bytes. Ethereum internally uses an encoding format called recursive-length prefix encoding (RLP), described [here](./fundamentals/rlp.md)
- **Serialization**: the process of converting a data structure into a sequence of bytes. Ethereum internally uses an encoding format called recursive-length prefix encoding (RLP), described [here](../fundamentals/rlp.md)
- **Patricia tree** (or **trie**): a data structure which stores the state of every account. The trie is built by starting from each individual node, then splitting the nodes into groups of up to 16 and hashing each group, then making hashes of hashes and so forth until there is one final "root hash" for the entire trie. The trie has the important properties that (1) there is exactly one possible trie and therefore one possible root hash for each set of data, (2) it is very easy to update, add or remove nodes in the trie and generate the new root hash, (3) there is no way to modify any part of the tree without changing the root hash, so if the root hash is included in a signed document or a valid block the signature or proof of work secures the entire tree, and (4) one can provide just the "branch" of a tree going down to a particular node as cryptographic proof that that node is indeed in the tree with that exact content. Patricia trees are also used to store the internal storage of accounts as well as transactions and ommers. See [here](http://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/) for a more detailed description.
- **Uncle**: See **Ommer**, the gender-neutral alternative to aunt/uncle.
- **Ommer**: a child of a parent of a parent of a block that is not the parent, or more generally a child of an ancestor that is not itself an ancestor. If A is an ommer of B, B is a **nibling** (niece/nephew) of A.
Expand All @@ -50,7 +50,7 @@ See also: <http://ethereum.org/ethereum.html>

## Casper and scaling research

See [proof of stake FAQs](./proof-of-stake-faqs.md) and [sharding FAQs](./sharding-faqs.md).
See [proof of stake FAQs](../concepts/proof-of-stake-faqs.md) and [sharding FAQs](../sharding/sharding-faqs.md).

- **Security deposit**: a quantity of ether that a user deposits into a mechanism (often a proof of stake consensus mechanism, though this can also be used for other applications) that a user normally expects to be able to eventually withdraw and recover, but which can be taken away in the event of malfeasance from the user's side.
- **Validator**: a participant in proof of stake consensus. Validators need to submit a security deposit in order to get included in the validator set.
Expand Down
2 changes: 1 addition & 1 deletion fundamentals/dapp-developer-resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ As a Ðapp developer you have three main resources which allow Ðapp development
## Main Resources

- [Web3 JavaScript API](JavaScript-API) - This is the main JavaScript SDK to use when you want to interact with a nodes API
- [JSON RPC API](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](./javascript-api.md).
- [JSON RPC API](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://web3js.readthedocs.io/en/v1.2.9/index.html).
- [Solidity Documentation](https://solidity.readthedocs.org/en/latest/) - Solidity is the Ethereum-developed Smart Contract language, which compiles to EVM (Ethereum Virtual Machine) opcodes.
- [Remix IDE](http://remix.ethereum.org/) - Solidity editor in the browser that helps efficient writing, debugging and deploying contracts
- [Dapp Insight](https://dappinsight.com) - This is a most popular Dapp analytics tool which listing all the running Dapps in the world with their true usage data.
Expand Down
16 changes: 9 additions & 7 deletions fundamentals/dapp-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@

## Miscellaneous resources and info

- [Safety](./howto/smart-contract-safety.md)
- [ÐApp Developer Resources](./dapp-developer-resources.md)
- [JavaScript API](./javascript-api.md)
- [JSON RPC API](./json-rpc.md)
- [Safety](../howto/smart-contract-safety.md)
- [ÐApp Developer Resources](../fundamentals/dapp-developer-resources.md)
- [JavaScript API](https://web3js.readthedocs.io/en/v1.2.9/index.html)
- [JSON RPC API](../json-rpc/api.md)
- [Useful Ðapp Patterns](https://github.com/ethereum/wiki/wiki/Useful-Ðapp-Patterns)
- [Standardized Contract APIs](./standardized_contract_apis.md)
- [Ethereum development tutorial](./howto/ethereum-development-tutorial.md)
- [ÐApp using Meteor](./howto/dapp-using-meteor.md)
- [Standardized Contract APIs](../concepts/standardized-contract-apis.md)
- [Ethereum development tutorial](../howto/ethereum-development-tutorial.md)
- [ÐApp using Meteor](../howto/dapp-using-meteor.md)
- [Dapp Insight: dapp statistics](https://dappinsight.com)


6 changes: 3 additions & 3 deletions fundamentals/design-rationale.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ The Merkle Patricia tree/trie, previously envisioned by Alan Reiner and implemen
1. Every unique set of key/value pairs maps uniquely to a root hash, and it is not possible to spoof membership of a key/value pair in a trie (unless an attacker has ~2^128 computing power)
2. It is possible to change, add or delete key/value pairs in logarithmic time

This gives us a way of providing an efficient, easily updateable, "fingerprint" of our entire state tree. The Ethereum MPT is formally described [here](./fundamentals/patricia-tree.md).
This gives us a way of providing an efficient, easily updateable, "fingerprint" of our entire state tree. The Ethereum MPT is formally described [here](./patricia-tree.md).

Specific design decisions in the MPT include:

Expand All @@ -70,7 +70,7 @@ Specific design decisions in the MPT include:

## RLP

RLP ("recursive length prefix") encoding is the main serialization format used in Ethereum, and is used everywhere - for blocks, transactions, account state data and wire protocol messages. RLP is formally described [here](./fundamentals/rlp.md).
RLP ("recursive length prefix") encoding is the main serialization format used in Ethereum, and is used everywhere - for blocks, transactions, account state data and wire protocol messages. RLP is formally described [here](./rlp.md).

RLP is intended to be a highly minimalistic serialization format; its sole purpose is to store nested arrays of bytes. Unlike [protobuf](https://developers.google.com/protocol-buffers/docs/pythontutorial), [BSON](http://bsonspec.org/) and other existing solutions, RLP does not attempt to define any specific data types such as booleans, floats, doubles or even integers; instead, it simply exists to store structure, in the form of nested arrays, and leaves it up to the protocol to determine the meaning of the arrays. Key/value maps are also not explicitly supported; the semi-official suggestion for supporting key/value maps is to represent such maps as `[[k1, v1], [k2, v2], ...]` where `k1, k2...` are sorted using the standard ordering for strings.

Expand Down Expand Up @@ -106,7 +106,7 @@ Where:
- `logs` is a list of items of the form `[address, [topic1, topic2...], data]` that are produced by the `LOG0` ... `LOG4` opcodes during the execution of the transaction (including by the main call and sub-calls). `address` is the address of the contract that produced the log, the topics are up to 4 32-byte values, and the data is an arbitrarily sized byte array.
- `logbloom` is a bloom filter made up of the addresses and topics of all logs in the transaction.

There is also a bloom in the block header, which is the OR of all of the blooms for the transactions in the block. The purpose of this construction is to make the Ethereum protocol light-client friendly in as many ways as possible. For more details on Ethereum light clients and their use cases, see the [light client page (principles section)](light-client-protocol.md#principles).
There is also a bloom in the block header, which is the OR of all of the blooms for the transactions in the block. The purpose of this construction is to make the Ethereum protocol light-client friendly in as many ways as possible. For more details on Ethereum light clients and their use cases, see the [light client page (principles section)](../concepts/light-client-protocol.md#principles).

## Uncle incentivization

Expand Down
Loading

0 comments on commit ca09068

Please sign in to comment.