Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,12 @@ products/gateway/ @abracchi-tw

# Warp Client
products/warpclient/ @abracchi-tw

# Randomness Beacon
products/randomness-beacon/ @ltv511 @armfazh

# Distributed Web
products/distributed-web/ @ltv511 @thibmeu @jhoyla @Lekensteyn

# Time Services
products/time-services/ @ltv511 @wbl @armfazh
19 changes: 10 additions & 9 deletions products/distributed-web/src/content/ethereum-gateway/about-eth.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
---
title: About Ethereum
weight: 2
order: 2
---

# About Ethereum

The Ethereum network is a distributed consensus platform that allows users to
write and compute smart contracts in a distributed manner. Smart contracts are
essentially Turing complete programs that are available at a unique address of
the network. When the smart contract is run as part of a transaction, the result
and the current state of the contract are stored in a verifiable consensus that
is agreed upon by the entire network of nodes.

### Smart contracts
## Smart contracts

When a user wants to run a smart contract on some desired inputs, they provide
currency known as ETH with their command. This currency is allocated to a
Expand All @@ -22,7 +23,7 @@ in the network then this is also recorded in the consensus. As such, this
consensus represents the current state of the network along with exactly how
much Ethereum currency is owned by each individual.

### Addressing
## Addressing

All transactions on the network are stored in 'blocks' that make up the entire
consensus. In brief, the consensus is a single sequence of blocks with
Expand All @@ -38,7 +39,7 @@ block, this update is sent around the entire network and anyone can read the
nature of the transaction that took place. This makes the entire state of the
network accountable.

### Reading & writing content
## Reading & writing content

To read content, a user needs to interact with a working Ethereum node. Such
nodes can be run locally on a user's machine as daemons (such as:
Expand All @@ -56,15 +57,15 @@ sent to the wider network and added to the consensus.

Reading and writing content to the Ethereum network can be done using
Cloudflare's Gateway. To learn more about how to do this see [Interacting with
the Ethereum network](../interacting-with-the-eth-gateway).
the Ethereum network](./interacting-with-the-eth-gateway).

### Connect your website to the gateway
## Connect your website to the gateway

If you want to be able to access the Ethereum network accessible from a custom
domain name, you can do that using Cloudflare’s Ethereum Gateway. To
learn how, check out [Connecting your Website](../connecting-your-website).
learn how, check out [Connecting your Website](./connecting-your-website).

### Going Further
## Going Further

If you’re interested in learning more, you can read the official [RPC
documentation](https://github.com/ethereum/wiki/wiki/JSON-RPC), along with the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
title: Connecting your Website
weight: 3
order: 3
---

# Connecting your Website

You can connect your own domain name to <https://cloudflare-eth.com> to allow
Ethereum network access from your own domain. This means that anyone can send
the HTTP (JSON RPC) queries as given in [Interacting with the Ethereum
Gateway](https://developers.cloudflare.com/distributed-web/ethereum-gateway/interacting-with-the-eth-gateway/)
Gateway](./interacting-with-the-eth-gateway/)
to your own domain. To do this, you should replace `https://cloudflare-eth.com`
with your domain, e.g. `myethereumgateway.xyz`, as the target of the HTTP
query.
Expand All @@ -19,7 +19,7 @@ you need to:
1. Go to your DNS settings for your domain. If your website is on Cloudflare,
the DNS settings are accessible from your dashboard. If your website is not
on Cloudflare, and you need help finding the DNS records, you can use
[DomaninTools](https://whois.domaintools.com/) to identify your registrar.
[DomainTools](https://whois.domaintools.com/) to identify your registrar.
2. Add a CNAME record from your domain (e.g. www.example.com) to
cloudflare-eth.com. Note: if your website is on Cloudflare, the little cloud
next to this record will automatically turn grey. Because you’ve CNAME’d to
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: Getting started
weight: 1
order: 1
---

# Getting started

Cloudflare's Ethereum Gateway is part of the wider Distributed Web Gateway
offering, specifically providing access to the Ethereum network. In particular,
users can read all information that has been agreed upon by the consensus of
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
---
title: Ethereum Gateway
weight: 3
order: 3
---

# Ethereum Gateway

Cloudflare's Ethereum Gateway lets you interact with the Ethereum network
without installing any software on your computer.

Our gateway makes it possible to add interactive elements to sites powered by
Ethereum smart contracts on a decentralized compute platform. Combined with the
[IPFS gateway](/distributed-web/ipfs-gateway/), you have decentralized web and
[IPFS gateway](/ipfs-gateway/), you have decentralized web and
resource hosting with the added speed, security, and reliability of the
Cloudflare edge network. And you have direct access our Ethereum Gateway at
[https://cloudflare-eth.com](https://cloudflare-eth.com).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
title: Interacting with Ethereum
weight: 4
order: 4
---

# Interacting with Ethereum

Interacting with the network via the Cloudflare Distributed Web Gateway is as
simple as specifying the correct JSON blob for your query!

### Reading from the network
## Reading from the network

The Cloudflare Ethereum Gateway allows HTTP requests where the body of the
request is set to be the JSON body of the request you would like to make. For
Expand Down Expand Up @@ -84,7 +84,7 @@ The response in both cases will be a JSON blob of the form:
For a full list of possible queries, along with examples see the official [RPC
documentation](https://github.com/ethereum/wiki/wiki/JSON-RPC#json-rpc-api-reference).

### Writing to the network
## Writing to the network

Currently the Ethereum Gateway allows you to write to the network using the
`eth_sendRawTransaction` RPC method. This creates a new message call transaction
Expand Down Expand Up @@ -131,7 +131,7 @@ await fetch(new Request("https://cloudflare-eth.com", {
_(The actual command above will not work, you need to provide your own signed
transaction!)_

### Cloudflare supported API
## Cloudflare supported API

The full list of API methods that are supported by the Distributed Web Gateway
is given below. The Gateway returns a `403` if a method is specified that is not
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
title: Kill Switches
weight: 5
order: 5
---

### DAO example: Kill Switches
# Kill Switches

## DAO example: Kill Switches

When writing contracts, be especially careful to write secure code and include a
kill switch to ensure that if any bugs do reside in the code, they can be
Expand All @@ -27,7 +28,7 @@ investors funds. However, not everyone agreed with the chain, with those who
disagreed rejecting the irregular block and forming the Ethereum Classic
network, each blockchain grew independently.

### Be-all end-all solution?
## Be-all end-all solution?

Hardly. Kill switches can cause their own problems. Like if a contract that's a
library has its kill switch flipped. All contracts relying on this contract
Expand Down
8 changes: 6 additions & 2 deletions products/distributed-web/src/content/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
---
title: Welcome
order: 0
type: overview
---

# Welcome
# Simple, secure access to the Distributed Web

TODO...
View files stored on the InterPlanetary File System in your browser. Interact with the Ethereum blockchain. Explore the Distributed Web.

<Link to="/ipfs-gateway/" className="Button Button-is-docs-primary">IPFS Gateway</Link> &nbsp; <Link to="/ethereum-gateway/" className="Button Button-is-docs-primary">Ethereum Gateway</Link>
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: Automated Deployment
weight: 4
order: 4
---

# Automated Deployment

Static sites are pretty easy to deploy automatically. The code of the site is
usually kept in a Git repository and deployed by pushing the latest commit to a
repository that's connected to a Continuous Integration service like [Travis
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
---
title: Browsing Content on IPFS
weight: 1
order: 1
---

# Browsing Content on IPFS

Browsing IPFS using Cloudflare's gateway requires two things: a browser
connected to the Internet, and the address of something on IPFS that you want to
view.

As mentioned on the [introduction](/distributed-web/ipfs-gateway/) page, every file added to the
As mentioned on the [introduction](/ipfs-gateway/) page, every file added to the
IPFS network is given a unique address based on its contents which is called a
Content Identifier, or CID. So if you have an image stored on IPFS, its CID
would be based on the hash of the bits that compose that image.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
title: Connecting Your Website
weight: 3
order: 3
hidden: true
---

# Connecting Your Website

Cloudflare's gateway allows you to host your website on IPFS and still have it
accessible from a custom domain name. This allows an end user to access your
website without needing to memorize any hash or download any software. Plus,
Expand Down
5 changes: 3 additions & 2 deletions products/distributed-web/src/content/ipfs-gateway/index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: IPFS Gateway
weight: 2
order: 2
---

# IPFS Gateway

Cloudflare's read-only Distributed Web Gateway lets you access content stored on
the InterPlanetary File System \(IPFS\) quickly and easily, without downloading
any special software or giving up any storage space on your computer.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: Setting Up a Server
weight: 2
order: 2
---

# Setting Up a Server

While all IPFS nodes are created equal, some are better suited for different
purposes depending on their setup. An IPFS node running on your laptop, for
instance, isn't very good for hosting a website because your website will go
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: Troubleshooting
weight: 10
order: 10
---

# Troubleshooting

IPFS is still a developing protocol and content is often unavailable or slow to
load for reasons outside of Cloudflare's control. Usually, this happens for one
of the following reasons:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: Updating your Website for IPFS
weight: 3
order: 3
---

# Updating your Website for IPFS

It's not required, but it is strongly recommended that websites hosted on IPFS
use only relative links, unless linking to a different domain. This is because
data can be accessed in many different (but ultimately equivalent) ways:
Expand Down
10 changes: 5 additions & 5 deletions products/randomness-beacon/src/content/about/Background.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
---
title: Background
weight: 10
order: 1
---

# Where did it all begin?
# Where did it all begin?

Over the years, a generation of public randomness (often referred to as _common coins_) has attracted continuous interest from the cryptography research community. Many distributed systems, including various consensus mechanisms, anonymity networks such as Tor, or blockchain systems, assume access to such public randomness. However, it remained a major unsolved issue to generate public randomness in a distributed, scalable, and robust way. Currently, there is no service deployed to produce this type of randomness. The only choice is a centralized, prototype-only randomness beacon run by [NIST](https://www.nist.gov/).



Realizing this, [Ewa Syta](http://ewa.syta.us/) started a project on [Scalable Bias-Resistant Distributed Randomness](https://eprint.iacr.org/2016/1067) during her PhD studies under the supervision of [Michael J. Fischer](http://www.cs.yale.edu/homes/fischer/) and [Bryan Ford](https://bford.info/) at Yale University. After Bryan moved to EPFL in 2015, the new members of the DEDIS team at EPFL ([Nicolas Gailly](https://github.com/nikkolasg/), [Linus Gasser](https://people.epfl.ch/linus.gasser), [Philipp Jovanovic](https://jovanovic.io/), [Ismail Khoffi](https://ismailkhoffi.com/), [Eleftherios Kokoris Kogias](https://lefteriskk.github.io/)) joined the project and together published a research paper at the [2017 IEEE Symposium on Security and Privacy](https://ieeexplore.ieee.org/abstract/document/7958592).

The paper explored the use of key pairings instead of classical elliptic curve cryptography to generate public randomness as a way to simplify the proposed protocol designs and improve performance in terms of randomness generation and verification.

In early 2017, the [DEDIS](https://dedis.epfl.ch/) team at [EPFL](https://www.epfl.ch/en/) started collaborating with [DFINITY](https://dfinity.org/) on various research topics, inlcuding public randomness. The DFINITY architecture is built around a pairing-based randomness beacon sharing similarities to the constructs described in the DEDIS paper. Additionally, DFINITY has already implemented an optimized pairing library in C++. After integrating this implementation into the DEDIS’ crypto library [Kyber](https://github.com/dedis/kyber), all major cryptographic components were ready to implement an efficient, distributed randomness generation protocol using pairings.
The paper explored the use of key pairings instead of classical elliptic curve cryptography to generate public randomness as a way to simplify the proposed protocol designs and improve performance in terms of randomness generation and verification.

In early 2017, the [DEDIS](https://dedis.epfl.ch/) team at [EPFL](https://www.epfl.ch/en/) started collaborating with [DFINITY](https://dfinity.org/) on various research topics, inlcuding public randomness. The DFINITY architecture is built around a pairing-based randomness beacon sharing similarities to the constructs described in the DEDIS paper. Additionally, DFINITY has already implemented an optimized pairing library in C++. After integrating this implementation into the DEDIS’ crypto library [Kyber](https://github.com/dedis/kyber), all major cryptographic components were ready to implement an efficient, distributed randomness generation protocol using pairings.

In September 2017, Nicolas, a PhD student at DEDIS, started coding drand with the help of Philipp to deploy, for the first time, a distributed service providing public randomness in an application-agnostic, secure, and efficient way. A short time later, Cloudflare released an optimized Golang implementation of the BN256 pairing curve, which is now integrated in both Kyber and drand to simplify development and deployment.

Expand Down
5 changes: 2 additions & 3 deletions products/randomness-beacon/src/content/about/Drand.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
---
title: Drand Project
weight: 10
order: 0
---

## What is drand?

# What is drand?

The drand project aims to address the current lack of services providing distributed public randomness. Distributed to increase the reasilience and trustworthiness. drand provides a standalone randomness-as-a-service network that is application agnostic. For example, similar to NTP networks serving timing information accross the globe. drand follows the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle), relying on well-researched cryptographic building blocks and open-source software design principles and libraries, such as protobuf and gRPC, to ensure high performance and interoperability. drand also attempts to use sane security defaults, such as having TLS enabled by default.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: Future of Drand
weight: 10
order: 2
---

## What do you see as the future of this project?
# What do you see as the future of this project?

As of spring 2020, the drand network is production-ready, and we believe that it can now be considered foundational Internet infrastructure, much like DNS or BGP.

Expand Down
11 changes: 8 additions & 3 deletions products/randomness-beacon/src/content/about/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
---
title: About
weight: 10
order: 1
---

Learn more about [drand](https://drand.love/): a distributed service providing public randomness in an application-agnostic, secure, and efficient way.
# About Drand

Drand (pronounced "dee-rand") is a distributed randomness beacon daemon written in Golang. Servers running drand can be linked with each other to produce collective, publicly verifiable, unbiased, unpredictable random values at fixed intervals using bilinear pairings and threshold cryptography.

Drand is meant to be an Internet infrastructure level service that provides randomness to applications, similar to how NTP provides timing information and Certificate Transparency servers provide certificate revocation information.

For the most up-to-date documentation on drand, please visit [drand.love](https://drand.love).
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
title: Cryptographic Background
weight: 30
order: 2
---

# Cryptographic Background

drand is an efficient randomness beacon daemon that utilizes pairing-based cryptography, `𝑡-of-𝑛` distributed key generation, and threshold BLS signatures to generate publicly-verifiable, unbiasable, unpredictable, distributed randomness.

This is an overview of the cryptographic building blocks drand uses to generate publicly-verifiable, unbiasable, and unpredictable randomness in a distributed manner.
Expand Down
Loading