drand / website Goto Github PK
View Code? Open in Web Editor NEWDrand webpage, docs and blog đ
Home Page: https://drand.love
License: Other
Drand webpage, docs and blog đ
Home Page: https://drand.love
License: Other
The simple install link here is broken, i.e. https://drand.love/install results in ipfs resolve -r /ipfs/bafybeibh577ymwr4dyjnvokhrilaqocgt2mrvzr4zi3adapu4hdekywm5q/install: no link named "install" under bafybeibh577ymwr4dyjnvokhrilaqocgt2mrvzr4zi3adapu4hdekywm5q
...right now navigating away from the homepage and then back again breaks it and this would solve the issue.
There's a bunch of IPFS specific favicon icons and images in docs/.vuepress/public
. Once the Drand project has a logo, we should replace all these files. We can keep the filenames the same.
When the LoE has upgraded to the latest drand we need to add the chain hash to the docs.
Search for "TODO-LOE-CHAIN-HASH" in the code.
As we intend to send a link to the beta to LoE partners, it would be good to replace the corner logo with the draft logo. It can still change, of course, but it would be helpful to get people used to this one.
The banner text needs some serious work! This needs to be short, descriptive and exciting. One suggestion is:
Distributed Randomness Beacon. Verifiable, unpredictable, and unbiased random numbers as a service.
First of all, thank you for the great documentation! When implementing a drand verifier in Rust, this was extremly helpful. There is one thing I needed to lookup in Go code which was not specified:
In the blocks Randomness generation and Beacon signature the message format is documented via Go code:
func Message(currRound uint64, prevSig []byte) []byte {
h := sha256.New()
h.Write(prevSig)
h.Write(roundToBytes(currRound))
return h.Sum(nil)
}
However, it is unclear how currRound
is encoded to bytes. It turns out the encoding is fixed length, 8 bytes big endian. It would be good to either document that somehow or just rename roundToBytes
to uint64ToBytesBigEndian
or something like that. This makes clear at first glance for non-Go developers that there is nothing special hidden in roundToBytes
.
The Drand team need a place to store blog posts. Eventually we'll spin up a separate site specifically for blogs at some point, but right we can throw them into their own section in here.
Following the URIs from the documentation gives in many cases either a 404 or a Forbidden error.
For example https://api2.drand.sh/chains returns a 404, and the {chain-hash}/* tree of API endpoints also returns 404.
As reported by email, the website documentation on docker deployments is wrong/misleading/outdated:
It says âCopy/send this folder on your serverâ. Where is this folder?
The folder structure portrayed also does not correspond to the actual structure of drand/docker. There is also no mention the image on Docker Hub.
On that note, the instructions on docker hub also contain a broken link to docker/README.md (should instead link to the website docs).
There are some navigation items that would fit well in a footer, like a link to the status page, the github repo etc. and it could display license information and make the site a look a bit more professional.
The favicon needs to be swapped out for the drand logo.
I took a look at the beta drand site over the weekend and have some suggestions! Please let me know if you have any questions.
Mechanical: Drand is a service that provides random numbers. While this doesn't sounds particularly exciting or ground-breaking, what makes drand important is /how/ these random numbers are created.
s/doesn't/doesnât
Suggest using smart quotes over straight quotes
Typo: Drand is a service that provides random numbers. While this doesnât sounds particularly exciting or ground-breaking, what makes drand important is /how/ these random numbers are created.
s/doesnât sounds/doesnât sound
Typo: Drand is a service that provides random numbers. While this doesnât sounds particularly exciting or ground-breaking, what makes drand important is /how/ these random numbers are created.
s/ground-breaking/groundbreaking
Consistency: Drand is a service that provides random numbers. While this doesnât sounds particularly exciting or ground-breaking, what makes drand important is /how/ these random numbers are created.
Is it Drand or drand?
Under âGet startedâ
Consistency: Secure your project by using random numbers generated by drand.
Is it Drand or drand?
Typo: Help the internet by generating truely random numbers with drand.
s/truely/truly
Consistency: Help the internet by generating truely random numbers with drand.
Is it Drand or drand?
Under âLearn moreâ
Consistency: Find out more about how drand produces random numbers and how the team are making the project secure
Is it Drand or drand?
Under âGet involvedâ
Mechanical: If you'd like to contribute code, submit issues, improve documentationâŚ
s/you'd/youâd
Suggest using smart quotes over straight quotes
https://beta.drand.love/concepts/overview/
Suggestion: Learn about the basics of Drand, how it works, and why it exists in the first place.
Omit âaboutâ, it's obvious
Under âRandomness matterâ
Typo: When connecting to a Wifi network using the WPA2 security protocol
s/Wifi/WiFi
4 more references to Wifi in this section
Mechanical: When connecting to a Wifi network using the WPA2 security protocol
Incomplete sentence
Suggestion: The randomness exchange between laptop and wifi router seems like it would be a good illustration
Under âCurrent randomness generatorsâ
Mechanical: The United States' National Institute of Standards and Technology (NIST)â
s/States'/Statesâ
Suggest using smart quotes over straight quotes
Mechanical: The United Statesâ National Institute of Standards and Technology (NIST)â
Omit hanging apostrophe at the end of the NIST acronym
Under âFeatures of good randomnessâ
Awkward: To mitigate this exploitation, researchers have defined five points that a strong random-number-generator should be:
Suggest: To mitigate this exploitation, researchers agreed upon five points that define a strong random-number-generator:
Mechanical: Unpredictable: you can't predict the next number to come out of the generator.
s/can't/canât
Suggest using smart quotes over straight quotes
Typo: Publicly-verifiable
s/Publicly-verifiable/Publicly verifiable
Mechanical: Bias-resistant: you can't lead the generator one way or another.
s/can't/canât
Suggest using smart quotes over straight quotes
Under âHow drand worksâ
Consistency: Is it Drand or drand?
Typo: For a deep-dive into the intricacies of drand, check outâŚ
s/deep-dive/deep dive
Consistency: For a deep-dive into the intricacies of drand, check outâŚ
Consistency: Is it Drand or drand?
Under âDrand for everyoneâ
Consistency: Is it Drand or drand?
Consistency: Defining precisely who will use drand is pointless since the project will generate random numbers for billions of applications, messages, transactions, and services around the world! However, this website is for developers looking to integrate drand into their projects, and for infrastructure specialists wanting to host a drand node.
Is it Drand or drand?
https://beta.drand.love/concepts/cryptography/#setup-phase
Under âCryptographyâ
Typo: This document provides an overview of the cryptographic building blocks that Drand uses to generate publicly-verifiable, unbiased
s/publicly-verifiable/publicly verifiable
Consistency: The drand beacon has two phasesâŚ
Is it Drand or drand?
Under âSetup Phaseâ
Consistency: This section switches to Title Case for the subheads, whereas the initial page uses Sentence case
Suggest making a decision regarding the subheads and ensure consistency across documentation
Under âSecret Sharingâ
Consistency of subhead case
Mechanical: Shamir's Secret Sharing
s/Shamir's/Shamirâs
Suggest using smart quotes over straight quotes
Under âVerifiable Secret Sharingâ
Consistency of subhead case
Mechanical: Shamir's Secret Sharing
s/Shamir's/Shamirâs
Suggest using smart quotes over straight quotes
A Verifiable Secret Sharing (VSS) scheme protects against malicious dealers by enabling participants to verify that their shares are consistent with those dealt to other nodes ensuring that the shared secret can be correctly reconstructed later on.
Suggest omit âonâ since you want to avoid ending sentences with a preposition, and removing this one doesnât change the sentence meaning.
Mechanical: Feldman's VSS scheme
s/Feldman's/Feldmanâs
Suggest using smart quotes over straight quotes
Under âDistributed Key Generationâ
Consistency of subhead case
Mechanical: Pedersen's DKG
s/Pedersen's/Pedersenâs
Suggest using smart quotes over straight quotes
Mechanical: Feldman's VSS
s/Feldman's/Feldmanâs
Suggest using smart quotes over straight quotes
Mechanical: Feldman's VSS
s/Feldman's/Feldmanâs
Suggest using smart quotes over straight quotes
Mechanical: Pedersen's DKG
s/Pedersen's/Pedersenâs
Suggest using smart quotes over straight quotes
Under âBeacon Phaseâ
Typo: publicly-verifiable
s/publicly-verifiable/publicly verifiable
Consistency: Afterward, we show how drand uses PBC
Is it Drand or drand?
Under âRandomness Generationâ
Typo: publicly-verifiable
s/publicly-verifiable/publicly verifiable
Mechanical: the signer's key
s/the signer's key/the signerâs key
Suggest using smart quotes over straight quotes
Mechanical: such as ECDSA ,
s/EDCSA/Elliptic Curve Digital Signature Algorithm (EDCSA)
Suggest spelling out acronyms on first reference
Typo: Partial Signature Generation: To sign a message each participant uses his private key share to create a /partial BLS signature/ .
s/his/their
Avoid gendered pronouns
Typo: publicly-verifiable
s/publicly-verifiable/publicly verifiable
Under âChained Randomnessâ
Consistency: To extend this chain of randomness, each drand participant creates
Is it Drand or drand?
Under âConclusionâ
Typo: publicly-verifiable
s/publicly-verifiable/publicly verifiable
Mechanical: generate publicly-verifiable, unbiased, unpredictable, distributed randomness.
Remove comma between unpredictable and distributed since the list preceding the noun (distributed randomness) are adjectives describing noun
Suggest adding subhead âReferencesâ after the first sentence in the conclusion section to make it obvious youâre linking to outside research
https://beta.drand.love/concepts/security-model/
Mechanical: Drand's Security Model
S/Drand's/Drandâs
Suggest using smart quotes over straight quotes
Under âNotationsâ
Drand node: a node that is running the
Suggest removing âthat isâ
âDrand node*: a node running theâŚâ
Relay node: a node that is connected
Suggest removing âthat isâ
âRelay node: a node connectedâŚâ
Mechanical: it is assumed from the context - most often,
Suggest using semi-colon over en dash
âit is assumed from the context; most often,â
Corrupted node: a node that is in the control
Suggest removing âthat isâ
âa node in the controlâ
Mechanical: (drand or a relay depending on the context)
Suggest add comma after drand
â(drand, or a relay depending on the context)â
Under âDistributed Key Generation Ceremony (Setup Phase)â
Mechanical: Pedersen's protocol
s/Pedersen's/Pedersenâs
Suggest using smart quotes over straight quotes
Mechanical: Gennaro's paper
s/Gennaro's/Gennaroâs
Suggest using smart quotes over straight quotes
Clarification: (less than one 1s of offset)
Is this the most clear way to document this concept?
Mechanical: DKG's biasability in signatures: Pedersen's DKG
s/DKG's/DKGâs
s/Pedersen's/Pedersenâs
Suggest using smart quotes over straight quotes
Mechanical: However, the same authors (Gennaro et al.)
s/Gennaro et al./Gennaro, et al.
Add comma
Mechanical: proved this bias is not relevant in the setting of using the DKG to perform digital signatures, which offers other strong properties - paper .
Suggest using parentheses over en dash here
âWhich offers other strong properties (paper).â
Mechanical: from Galindo et al.
s/Galindo et al./Galindo, et al.
Add comma
Under âRandomness Generation Modelâ
Mechanical: the reality of the server's clock
S/server's/serverâs
Suggest using smart quotes over straight quotes
Redundancy: If the same set of nodes perform a new fresh DKG,
Suggest using one or the other, new or fresh
Under âAttack Vectorsâ
Consistency of subhead case
Under âRandomness Generationâ
Consistency of subhead case
Mechanical: (if TLS is not used - which is not a recommended setup
Suggest replacing en dahs with em dash
(if TLS is not usedâwhich is not a recommended setup)
Clarification: However, the advantage should serve as most half of the RTT
Suggest spelling out acronym on first reference
Round-trip time?
Mechanical: an adversary tries to "takedown" N/2 Drand
s/"takedown"/âtakedownâ
Suggest using smart quotes over straight quotes
Mechanical: effectively becoming the last "missing piece" to create the final beacon.
s/"missing piece"/âmissing pieceâ
Suggest using smart quotes over straight quotes
Under âDoS the Drand networkâ
Mechanical: can't get each other's partial beacons.
Suggest using smart quotes over straight quotes
Mechanical: they will perform a "catch up" protocol
Suggest using smart quotes over straight quotes
Mechanical: that leaves the Drand node's network.
Suggest using smart quotes over straight quotes
Mechanical: the partial beacons that "leak" out from Drand nodes under attack
Suggest using smart quotes over straight quotes
Under âCorruption of the Drand networkâ
Mechanical: (i.e., they can't derive future beacons)
Suggest using smart quotes over straight quotes
Typo: long term private key of each compromised node.
s/long term/long-term
Mechanical: Given a "periodical" resharing with more nodes,
Suggest using smart quotes over straight quotes
Mechanical: recovers from the attacker's intrusion
Suggest using smart quotes over straight quotes
Mechanical: the attacker's stolen share is invalid
Suggest using smart quotes over straight quotes
Under âDistributed Key Generation Ceremonyâ
Consistency of subhead case
Awkward: Given the necessity of time for achieving the synchronous network the assumption that means these nodes risk getting excluded from the final group that gets shares at the end.
Not clear on what is being said here
Mechanical: noted as "qualified".
s/"qualified". /âqualified.â
Suggest using smart quotes over straight quotes
Under âCorruption attacksâ
Mechanical: An attacker only "controls" less
Suggest using smart quotes over straight quotes
Typo: is similar to the scenario 2
s/scenario 2/Scenario 2
Mechanical: since even before the DKG: an attacker
Suggest omit colon
âsince even before the DKG an attackerâ
Typo: an attacker can know before the end of the DKG the whole randomness chain (since he can see the honest shares before sending them).
s/he/they
Avoid gendered pronouns
Under âBroadcast Channel Assumptionâ
Mechanical: different polynomials for example - see here for one example of such an attack.
Suggest âdifferent polynomials; for example, see here for one example of such an attack.â
Mechanical: different than the other half, a "split".
Suggest using smart quotes over straight quotes
Mechanical: Remediation to keep assumption true - (not implemented yet):
Suggest remove dash
âRemediation to keep assumption true (not implemented yet)â
Typo: non equivocation
s/non equivocation/non-equivocation
Suggestion: âA practical step towards ensuring non equivocation during the DKG phase is to move to a libp2p pubsub overlayâ
Should we link out to libp2p on this reference?
https://beta.drand.love/concepts/specification/
Under âDrand specificationâ
Mechanical: Drand (pronounced "dee-rand")
Suggest using smart quotes over straight quotes
Consistency: Servers running drand can be linked
Is it Drand or drand?
Consistency: This document is a specification of the drand protocols.
Is it Drand or drand?
Under âDrand nodeâ
Mechanical: in the randomness generation and that can reply to public request API.
Suggest add comma between generation, and that
Awkward: The following representation is what gets embedded in group configuration file, what drand nodes knows about other drand nodes:
Clarification: Is the representation what gets in embedded a the/a group config file?
Consistency: Public Key
Consistency of case use, immediately called public key in this definition
Under âGroup configurationâ
Clarification/mechanical: Group configuration: A structure that contains all the necessary information about nodes that form a drand network:
Suggest âA group configuration is a structure containing all the necessary information about nodes that form a drand network. This information includes:âŚâ
Mechanical: Period: The period at which the network creates new random value
Suggest adding period to the sentence
âPeriod: The period at which the network creates new random value.â
Mechanical: This field is nil if the network hasn't
Suggest using smart quotes over straight quotes
Awkward: This field is empty if the network has never reshared yet.
Suggest: âThis field is empty if the network has not yet reshared.â
Consistency: See Types of Distributed Key Generation below for more info.
Consistency of case use, the section linked to uses lower case
Suggest âSee typos of distributed key generation belowâŚâ
Under âGroup Configuration Hashâ
Consistency of subhead case use
Clarification: the blake2b hash function
Should we link out to this reference?
Under âWireformat & APIâ
Mechanical: âWireformat & APIâ
s/Wireformat & API/âWireformat and APIâ
Suggestion: protobuf
Spell out protocol buffers on first reference
Under âDrand Modulesâ
Consistency of subhead case use
Consistency: Generating public randomness is the primary functionality of drand.
Is it Drand or drand?
Under âSetup phaseâ
Consistency: To setup a new network, drand uses the notion
Is it Drand or drand?
Mechanical: pushes the group configuration back to participants and then starts the distributed key generation phase
Add comma between participants, and thenâŚ
Clarification: for starting the Distributed Key Generation.
Add (DKG) for reference
Suggest âfor starting the Distributed Key Generation (DKG).â
Clarification: order of the public keys as slice of bytes.
âas a slice of bytes.â ?? Iâm not clear
Typos: As soon as a participant receives this information from the coordinator, then he must be ready to accept DKG packets, but he does not start immediatly sending his packet. After the coordinator has successfully sent the group to all participants, he starts sending the first packet of the distributed key generation.
Suggest: âAs soon as a participant receives this information from the coordinator, then they must be ready to accept DKG packets, but they do not start immediately sending their packet. After the coordinator has successfully sent the group to all participants, they starts sending the first packet of the distributed key generation.â
Avoid using gendered pronouns, suggest using participantâs titles over pronouns for clarification
Under âDistributed Key Generationâ
Consistency of subhead case use
Mechanical: The distributed key generation protocol implements the Pedersen's protocol, best described from Gennaro's paper :
Suggest using smart quotes over straight quotes
Mechanical: Note that the nodes that finish the protocol successfully, called "qualified nodes"
Suggest using smart quotes over straight quotes
Mechanical: Note that the nodes that finish the protocol successfully, called "qualified nodes" may be a subset of the nodes that started it: there can be nodes offline
Suggest using semi-colon instead of colon
âNote that the nodes that finish the protocol successfully, called âqualified nodesâ may be a subset of the nodes that started it; there can be nodes offlineâŚâ
Under âTypes of distributed key generationâ
Mechanical: This group wants to "re-share their shares" to a second group of nodes B.
Suggest using smart quotes over straight quotes
Typo: group B. the Note that a node can be in group A and B as well.
Suggest âgroup B. Note that a node can be in group A and B as well.â
Typo: the cryptography section explains in details
s/details/detail
Under âPhase transitionsâ
Typo: Node 1 starts the DKG at time T, so he is in DealPhase and sends its deals to every other node.
s/he is/they are
Avoid using gendered pronouns
Mechanical: Node 1's ticker ticks at time T+30s
Suggest using smart quotes over straight quotes
Mechanical: Node 1's ticker ticks at time T+60s
Suggest using smart quotes over straight quotes
Typo: Drand uses a /fast sync/ mode that allows to make the setup phase proceeds faster at the cost of higher bandwidth usage.
s/proceeds/proceed
Typo: In more details:
s/details/detail
Consistency: nodes go into the ResponsePhase
Nodes were capitalized in the listed section above, so suggest capitalizing in this list as well
Mechanical: nodes go into the FinishPhase as soon as they received "success" responses from all other nodes (i.e. all deals were correct) OR
Suggest âNodes go into the FinishPhase as soon as they received âsuccessâ responses from all other nodes (i.e., all deals were correct) ORâŚâ
Suggest using smart quotes over straight quotes
Typo: The beacon chain starts at a pre-defined time
s/pre-defined/predefined
Typo: The phases and the respective messages are described in more details in the following sections.
s/details/detail
Under âDeal Phaseâ
Consistency of subhead case use
Mechanical: In this first phase, nodes sends their "deal"
Suggest using smart quotes over straight quotes
Clarification: The share is encrypted via ECIES
Suggest spelling out acronym on first reference
âThe share is encrypted via Elliptic Curve Integrated Encryption Scheme (ECIES) usingâŚâ
Mechanical: A node bundles all its deals into a DealBundle that is signed.Here is the protobuf wire
Suggest: A node bundles all its deals into a DealBundle that is signed. Here is the protobuf wireâŚâ
Under âResponse Phaseâ
Consistency of subhead case use
Mechanical: Each node then sends a Response for each
Missing code formatting: Response
Mechanical: Each node then sends a Response for each share they have received and /should/ have received: if there is a missing share for a node, this node will send a response for it as well.
Suggest replacing colon with em-dash
âEach node then sends a Response for each share they have received and /should/ have receivedâif there is a missing share for a node, this node will send a response for it as well.â
Mechanical: A Response contains both the "share holder" index and the "dealer index" as well as a status.
Suggest using smart quotes over straight quotes
Under âJustification Phaseâ
Consistency of subhead case use
Mechanical: For each "complaint" responses (i.e. status == false)
Suggest: âFor each âcomplaintâ responses (i.e., status == false)â
Suggest using smart quotes over straight quotes
Under âFinish Phaseâ
Consistency of subhead case use
Awkward: This configuration file is now representative of functional current drand network.
Suggest: This configuration file is now representative of the functional current drand network.
Under âRandomness generationâ
Mechanical: The randomness generation protocol works in its simple form by having each node periodically broadcasts a âpartialâ signature over a common input. Each node waits to receive these partial signatures, and as soon as one has a subset of at least a âthresholdâ (parameter
Suggest using smart quotes over straight quotes
Under âRandomness Generation Periodâ
Consistency of subhead case use
Consistency: The drand network outputs a new random beacon each period and associates a beacon âroundâ to a specific time.
Is it Drand or drand?
Mechanical: The drand network outputs a new random beacon each period and associates a beacon "round" to a specific time.
Suggest using smart quotes over straight quotes
Under âBeacon Chainâ
Consistency of subhead case use
Mechanical: At each new round, a node creates a PartialBeacon with the current round number, the previous signature and the partial signature over the message:
Suggest adding comma between signature, and the partial signature
Mechanical: To determine the "current round" and the "previous signature", the node loads its last generated beacon and sets the following:
Suggest using smart quotes over straight quotes
Clarification: More information in the following section.
Suggest: âMore information is available in the following section.â
Under âPartial Beacon Broadcastâ
Consistency of subhead case use
Mechanical: Once the new beacon is created, the node verifies its signature, loads the last saved beacon from the database and checks if the following routine returns true:
Suggest adding comma after database, and checks it
Under âCatchup modeâ
Mechanical: Under these circumstances, nodes can enter a "catchup" mode.
Suggest using smart quotes over straight quotes
Mechanical: If that is not the case, that means there wasn't a beacon generated in time in the previous round OR this node didn't receive enough partial beacons for some reason.
Suggest using smart quotes over straight quotes
Mechanical: If a node receives a valid beacon for the requested round, that means the network is still producing randomness but for some reason (perhaps a network issue), the node didn't receive correctly the partial beacons.
Suggest using smart quotes over straight quotes
Mechanical: If the sync didn't return any more recent valid beacons, that probably means the network is stalled.
Suggest using smart quotes over straight quotes
Mechanical: Network Catchup: At some point, there will be enough honest & alive nodes
s/honest & alive/honest and alive
Clarification: In this situation, each node must produce their partial beacons until the current round as fast as possible.
Not clear what is meant here
Mechanical: When the honest nodes are back online, it's time T = 40+70 = 110
Suggest using smart quotes over straight quotes
Mechanical:
Mechanical: Nodes send a partial beacon for round 3 at time T = 100 (+ some delta for syncing)
s/+ some delta/plus some delta
Under âSyncingâ
Consistency: When a drand node is offline, restarted or detects a halt in the chain's progress (previous section)
Is it Drand or drand?
Mechanical: When a drand node is offline, restarted or detects a halt in the chain's progress (previous section)
Add comma after restarted, or detectsâŚ
Suggest using smart quotes over straight quotes
Mechanical: The client stops the syncing process (closes the RPC call) when the last valid beacon's round returned is equal to the current round.
Suggest using smart quotes over straight quotes
Under âCryptographic specificationâ
Under âDrand Curveâ
Consistency of subhead case use
Formatting error: Hash to curve:The hash-to-curve algorithm is derived from the RFC v7.
Needs a carriage return
Mechanical: Hash to curve:The hash-to-curve algorithm is derived from the RFC v7.
Suggest: Hash to curve: The hash-to-curve
Consistency: The BLS12-381 specification specifies a base point, or generator, for both groups that drand uses.
Is it Drand or drand?
Mechanical: Scalar A scalar of the field is serialized in 32 bytes in big endian format.
Suggest: âScalar: A scalar of theâŚâ
Mechanical: The first point in the list is the free coefficient of the polynomial,I.e.:
Suggest: âThe first point in the list is the free coefficient of the polynomial, i.e.,â
Under âDistributed Public Keyâ
Consistency of subhead case use
Under âBeacon Signatureâ
Consistency of subhead case use
Typo: ciphersuite
s/ciphersuite/cipher suite
Typo: A beacon signature can be verified using the first coefficient of the distributed public key stored in the group configuration:
s/configuration:/configuration.
Under âPartial Beacon Signatureâ
Consistency of subhead case use
Mechanical: However, the node's index is prefixed on the first two bytes to the signature.
Suggest using smart quotes over straight quotes
Mechanical: We need to increment the signer's index since the evaluation point 0 corresponds to the public key but no nodes posseses the private key.
Suggest using smart quotes over straight quotes
Typo: but no nodes posseses the private key.
s/posseses/possesses
Under âDistributed Key Generationâ
Consistency of subhead case use
Mechanical: Notation: For the sake of readability, this section uses the term "dealer" to designate a node that produces a share and a "share holder" to designate a node that receives a share from a dealer.
Suggest using smart quotes over straight quotes
Under âInputâ
Typo: The longterm private key of the node
s/longterm/long-term
Under âSetupâ
Mechanical: Private Polynomial:In order to create the shares, Each node locally creates
Suggest âPrivate Polynomial: In order to create the shares, each node locally createsâŚâ
Mechanical: Share Status: Each node must maintain a matrix of "status" of each share distributed by each dealer. A status is either "valid" or "invalid".
Suggest using smart quotes over straight quotes
Suggest âA status is either âvalidâ or âinvalid.â
Under âDeal Phaseâ
Consistency of subhead case use
Mechanical: During this phase, each node must create a valid encrypted "share" to each other node.
Suggest using smart quotes over straight quotes
Clarification: and the share serialized as described in the curve section.
Should we link out to the curve section referenced?
Under âResponse Phaseâ
Consistency of subhead case use
Typo: Creation of the responses: Each node sends a response for each of the shares he has or should have received.
s/he has/they have
Avoid gendered pronouns
Mechanical: In other words, each node at index I looks at all shares' index I for all dealers and creates a response with the same status.
Suggest using smart quotes over straight quotes
Mechanical: Each node bundles these responses into a ResponseBundle, signs it and wraps it into a AuthResponseBundle and broadcasts that packet.
Suggest adding comma after AuthResponseBundle, and broadcastsâŚ
Under âJustification Phaseâ
Consistency of subhead case use
Mechanical: Deciding upon next phase: There is a simple rule to decide if a node can go into the FinishPhase already at this point: If all shares of all dealers are "valid", then the node can go into the FinishPhase.
Suggest using smart quotes over straight quotes
Under âFinish Phaseâ
Consistency of subhead case use
Under âResharingâ
Consistency: The bulleted list under this section should be capitalized to be consistent with other bulleted lists on the site
Typo: There are few differences in the logic w.r.t to a fresh DKG
s/w.r.t /with regards to
Mechanical: NOTE:The length
Suggest: âNOTE: The lengthâ
Under âDistinction of Rolesâ
Consistency of subhead case use
Mechanical: Note a node can now have two indexes if it belongs to both group A and group B.
Suggest: Note: a node canâŚ
Under âDeal Phaseâ
Consistency of subhead case use
Under âResponse Phaseâ
Consistency of subhead case use
Mechanical: A node that is only in group A, i.e. a node that is leaving the network, doesn't need to process the deals at all (since they are not going to be part of the new network, no shares are meant for it).
s/i.e. a/i.e., a
Suggest using smart quotes over straight quotes
Under âJustification Phaseâ
Consistency of subhead case use
Mechanical: At this point, nodes that are only in group A and not in group B, i.e. leaving the network can abort the protocol now: their contribution is not needed anymore.
s/i.e. leaving/i.e., leaving
Mechanical: Validating Justifications: The logic is mostly the same, except that each node needs also to validate that the dealer is indeed "re-sharing its share": the dealer used the commitment of its share as the free coefficient of the public polynomial he advertised during the deal phase.
Suggest using smart quotes over straight quotes
Typo: the dealer used the commitment of its share as the free coefficient of the public polynomial he advertised during the deal phase.
s/he/they
Avoid using gendered pronouns
Under âFinish Phaseâ
Consistency of subhead case use
Mechanical: in other words, the distributed key doesn't change.
Suggest using smart quotes over straight quotes
https://beta.drand.love/build/#fetching-randomness-over-http
Under âBuildâ
Mechanical: For help running a Drand network, see the Operator's Guide .
Suggest using smart quotes over straight quotes
Under âFetching randomness over HTTPâ
Mechanical: All that's required is the address of the HTTP interface and way to fetch from HTTP, e.g. curl:
s/e.g. curl:/e.g., curl:
Suggest using smart quotes over straight quotes
Under âUsing DrandJSâ
Suggestion: For more details on the procedure and instructions on how to use it, refer to the readme.
s/readme/DrandJS GitHub repo.
Under âUsing the drand command to fetch randomnessâ
To do so, you'll need the group configuration file,
Suggest using smart quotes over straight quotes
https://beta.drand.love/operate/
Under âOperatorsâ
Consistency: This section is called
Mechanical: For information about consuming the randomness from a drand network, see the Builder's Guide instead.
Suggest using smart quotes over straight quotes
https://beta.drand.love/operate/deploy/#setup
Under âDeploy a Drand Network Nodeâ
Consistency of subhead case use
Under âSetupâ
Mechanical: 3. Leader starts the command as a coordinator & every participant connect to the coordinator to setup the network
s/coordinator & every/coordinator and every
Typo: drand also offers a docker image to run the setup.
s/drand/Drand
s/docker/Docker
Typo: You can find the information for running with docker here .
s/docker/Docker
Mechanical: If you have not already installed drand, please see the installation guide
Suggest adding a period after installation guide.
Under âLong-Term Keyâ
Consistency of subhead case use
Mechanical: of the drand daemon, execute
Add colon after daemon, execute:
Awkward: In case you need non-secured channel,
Suggest âIn case you need a non-secured channel,â
Under âStarting drand daemonâ
Typo: within a screen / tmux session, or with the -d option enabled for the docker commands.
s/docker/Docker
Suggestion: These allow specifying the interface and/or port for drand to listen on. âprivate-listen is the primary listener used to expose a GRPC service for inter-group-member communication. âpublic-listen exposes a public, limited HTTP service designed to be CDN friendly and providing information for drand users.
Break these out for easier readability:
âThese allow specifying the interface and/or port for drand to listen on.
âprivate-listen is the primary listener used to expose a GRPC service for inter-group-member communication.
âpublic-listen exposes a public, limited HTTP service designed to be CDN friendly and providing information for drand users.â
Under âWith TLSâ
Mechanical: To get TLS certificates for free you can use, for example, Let's Encrypt with its official CLI tool EFFâs certbot .
Suggest using smart quotes over straight quotes
Mechanical: TLS setup: Nginx with Let's Encrypt
Suggest using smart quotes over straight quotes
Typo: Such a setup greatly simplifies TLS management issues (renewal of certificates, etc).
s/etc/etc.
Mechanical: We provide here the minimum setup using Nginx and certbot - make sure you have both binaries installed with the latest version; Nginx version must be at least >= 1.13.10 for gRPC compatibility.
Suggest splitting into two sentences:
âWe provide here the minimum setup using Nginx and certbot. Make sure you have both binaries installed with the latest version; Nginx version must be at least >= 1.13.10 for gRPC compatibility.â
Awkward: Note: you can change
Suggest âNote that you can change the following:â
Consistency: Capitalize the numbered list items
Mechanical: These ports, and interfaces should be specified with flags.
Remove comma after ports
Mechanical: Note that we're using the loopback address of 127.0.0.1, which is not publicly accessible.
Suggest using smart quotes over straight quotes
Under âTLS setup: Apache for HTTPâ
Typo: The equivalent Apache config block to the NGinX config
s/NGinX/Nginx
Under âWithout TLSâ
Mechanical: If you're running without TLS, your
Suggest using smart quotes over straight quotes
Under âTest the connection to a nodeâ
Awkward: where address is the gRPC listen address as listed in the public key.
Incomplete sentence/thought
Under âRun the setup phaseâ
Mechanical: âthreshold indicates the threshold the network should use, i.e. how many nodes amongst the total needs to be online for the network to be live at any point.
s/i.e. how/i.e., how
Mechanical: âperiod indicates the period of the randomness beacon to use. It must be valid duration as parsed by Golang's
Suggest using smart quotes over straight quotes
Typo: âsecret indicates the secret that the coordinator uses to authenticate the nodes that wants to participate in the network.
s/nodes that wants/nodes that want
Consistency: âconnect is the host:port address of the leader. By default, drand will connect to the leader by using tls. If you are not using tls, use the âtls-disable flag.
s/tls/TLS
Typo: This method offers some basic security, however drand will provide more manual checks later-on
s/later-on/later on
Typo: However, since the set of participants is public and consistent accross
s/accross/across
Mechanical: By default drand takes its entropy for the setup phase from the OS's entropy source
Suggest using smart quotes over straight quotes
Mechanical: where is the path to the executable which produces the user's random data on STDOUT.
Suggest using smart quotes over straight quotes
Clarification: STDOUT
Suggest spell out acronym on first reference
standard output (STDOUT)
Mechanical: As a precaution, the user's randomness is mixed by default with
Suggest using smart quotes over straight quotes
Under âDistributed Key Generationâ
Consistency of subhead case use
Under âRandomness Generationâ
Consistency of subhead case use
Mechanical: one only needs the distributed public key generated during the setup phase, the period and the genesis time of the chain.
Suggest adding comma after period, and the genesis
Mechanical: Use theâtls-cert flag to specify the server's certificate if needed.
Suggest using smart quotes over straight quotes
Mechanical: Daemon downtime & Chain Sync:
s/downtime & Chain/downtime and chain sync:
Mechanical: If for some reason drand goes down for some time and then comes back up, the drand nodes will enter a "catchup phase,"
Suggest using smart quotes over straight quotes
Under âControl Functionalitiesâ
Consistency of subhead case use
Mechanical: Drand's local administrator interface provides further functionality,
Suggest using smart quotes over straight quotes
Under âLong-Term Private Keyâ
Consistency of subhead case use
Under âLong-Term Public Keyâ
Consistency of subhead case use
Under âPrivate Key Shareâ
Consistency of subhead case use
Mechanical: The "gid" simply indicates which group of bls12-381 the data belongs to.
Suggest using smart quotes over straight quotes
Under âChain Informationâ
Consistency of subhead case use
Under âUpdating Drand Groupâ
Consistency of subhead case use
Mechanical: Drand allows for "semi-dynamic" group update
Suggest using smart quotes over straight quotes
Consistency: The bulleted list under this section should be capitalized to be consistent with other bulleted lists on the site
Mechanical: This is similar to the procedure for the initial DKG, with the additional âtransition flag that indicates that we're resharing to a new group.
Suggest using smart quotes over straight quotes
Under âMetricsâ
Typo: allow triggering golang garbage collection
S/golang/Golang
Typo: prometheus metrics at
s/prometheus/Prometheus
Typo: If desired, prometheus metrics can be
s/prometheus/Prometheus
https://beta.drand.love/operate/metrics/#local-metrics
Under âDrand Metricsâ
Consistency of header case use
Typo: Drand uses prometheus
s/prometheus/Prometheus
Under âLocal Metricsâ
Consistency of subhead case use
Mechanical: This page includes
Suggest adding colon after includes:
Typo: metrics collected by prometheus
s/prometheus/Prometheus
Under âShared Group Metricsâ
Consistency of subhead case use
Typo: This will only inlclude the drand beacon
s/inlclude/include
Mechanical: and helping operators understand where problems originate. .
Remove second period
Under âDrand Command Line Toolsâ
Consistency of header case use
Mechanical: Drand's main functionality is provided
Suggest using smart quotes over straight quotes
Under âBinary Releasesâ
Consistency of subhead case use
Under âSource Codeâ
Consistency of subhead case use
Mechanical: You'll also need the make command available.
Suggest using smart quotes over straight quotes
Mechanical: If you'd prefer not to install
Suggest using smart quotes over straight quotes
Under âUsageâ
Mechanical: If you're setting up a Drand network deployment,
Suggest using smart quotes over straight quotes
Mechanical: flag after the subcommand name, e.g.:
s/, e.g.:/,e.g.,:
Under âdrand generate-keypairâ
Mechanical: when starting the daemon, for example if you've set up
Suggest using smart quotes over straight quotes
Under âdrand startâ
Mechanical: session, or otherwise "daemonized" using
Suggest using smart quotes over straight quotes
Under âEndpoint configurationâ
Mechanical: will bind to the address used when generating the node's keypair .
Suggest using smart quotes over straight quotes
Typo: Note that the addresss associated
s/addresss/address
Under âTLS Configurationâ
Consistency of subhead case use
Under âdrand shareâ
Mechanical: It may also be used after the network is running to "re-share" the key material,
Suggest using smart quotes over straight quotes
Typo: For details about to running the initial DKG, see the Deployment Guide .
Suggest: âFor details about running the initial DKG, see the Deployment Guide .â
Consistency: When re-sharing, this may be distinct from the secrets used for any prior DKG rounds.
Thereâs a whole section on resharing, so should it be re-sharing or resharing?
Mechanical: This must be a string that's parse-able by Golang's
Suggest using smart quotes over straight quotes
Mechanical: for example "30s" or "1m".
Suggest using smart quotes over straight quotes
s/"1m"./â1m.â
Consistency: When re-sharing to nodes
Thereâs a whole section on resharing, so should it be re-sharing or resharing?
Under TIP
Mechanical: By default, external entropy sources are mixed with Golang's
Suggest using smart quotes over straight quotes
Mechanical: which is useful during testing and debugging to allow a reproducible "random" value,
Suggest using smart quotes over straight quotes
Under âdrand utilâ
Mechanical: attempts to contact the node at the given address to see if it's online and responding to requests.
Suggest using smart quotes over straight quotes
Mechanical: deletes all distributed information (group file, key share, random beacon state, etc)
s/etc)/etc.,)
Under âSupplemental Toolsâ
Consistency of subhead case use
Mechanical: , you'll run one of:
Suggest using smart quotes over straight quotes
Under âdrand-clientâ
Mechanical: command is a standalone Drand client that's optimized
Suggest using smart quotes over straight quotes
Under âdrand-relay-httpâ
Typo: flag is convenient, running a seperate relay process
s/seperate/separate
https://beta.drand.love/project/community/
Typos: The Drand project is still in it's early stages, and we're building ways to interact with the community as we continue to build everything.
s/it's/its
Suggest using smart quotes over straight quotes
Mechanical: In the next few weeks we'll open
Suggest using smart quotes over straight quotes
Under âContributingâ
Under âDocumentationâ
Mechanical: If you've got a feature request, or want something clarifiying,
Suggest using smart quotes over straight quotes
Typo: or want something clarifiying,
s/clarifiying,/ clarified,
Mechanical: If you'd like to test upcomming documentation,
Suggest using smart quotes over straight quotes
Typo: upcomming
s/upcomming/upcoming
Awkward: If youâd like to test upcomming documentation, take a look at beta.drand.love , thatâs the staging area before new content gets pushed into the main drand.love website.
Suggest: If youâd like to test upcoming documentation, take a look at beta.drand.love , the staging area before new content gets pushed into the main drand.love website.
Under âSubmitting issuesâ
Typo: All issues can be submitted through Github .
s/Github/GitHub
@daviddias suggested adding a media page like https://libp2p.io/media/
We need to source suggestions for content.
We now have an announcement mailing list for LoE users (posts only be LoE secretariat, meant to announce any changes impacting downstream users). Can be joined at https://groups.google.com/g/leagueofentropy-users. We should list this somewhere prominent on the website.
The only reason we're using Google Groups is because it was already in use for the LoE. If someone has another preference, there is still time to change.
Given this will be the main web presence for drand and not just a documentation subdomain, it would be great if the homepage were a little more engaging.
I don't have a clear idea of how to make this happen but options include:
drand/drand#554 creates a readme.md
in the /clients
folder to explain the different clients and composition options. This readme should be brought into the docs too.
Link colours need to be something sensible and ideally taken from the palette in the logo.
We need to get the new logo on there ASAP to give it some identity and make it feel a little more professional. The dice emoji (while great) has served itâs purpose! The âdrandâ lettering without the logo next to the dice is not looking great as itâs not spaced/aligned correctly and is low resolution. We can drop in the latest design round for now and replace when the have the finals.
The inline images in the specification are not loading on drand.love.
Curiously, they work fine on the github markdown viewer and also in my editor, but not on the website or when running the site locally.
The text https://beta.drand.love/project/#project is outdated and incomplete; I'll try to come up with a re-written version here so we can iterate.
As per #38 (comment)
Logos of (high profile?) organisations that are using drand in their applications. This should give people thinking about using drand more confidence to do so.
Currently, there is no contact information on the drand.love website. One has to find and navigate to Cloudflare's blogpost and read through in order to find the contact email. We should add [email protected] (or a contact form) somewhere, perhaps in the "About" tab, as well as at the bottom of the page.
@daviddias suggested the following renaming:
I just noticed that if you open a PR against this repo, github uses the master branch of ipfs/ipfs-docs
as the base branch. I guess this is because we forked this repo off of ipfs-docs.
This SO answer says we can contact github support to dissociate from the ipfs repo, or we could recreate this one as a new repo.
When a user clicks the Manage a Node link, they're taken to the "Operate" page but the sidebar does not expand, which makes the section look empty and hides the existence of the many subpages.
Implementing Algolia search into this site will vastly improve the UX. There's already space in config.js
to do so:
},
themeConfig: {
// TODO: create Algolia account for Drand an throw API key into here.
// algolia: {
// apiKey: 'e6dcd48beb5db629bf77c892d38fa091',
// indexName: 'ipfs'
// },
betaTestFormUrl:
We need to:
Suggestion from @nikkolasg:
(1) a box to go back and forward to see it's a chain and (2) clicking on it could show the raw JSON output of the response so ppl have an idea of what it looks like.
Suggestion from @daviddias:
how the list of partners is presented (ideas: have carousel of logos, hyperlink to their own websites)
Could we add a "Tweet it" button to our blog entries?
This should be as easy as:
<a class="twitter-share-button"
href="https://twitter.com/intent/tweet?text=Checkout%20this%20new%20drand%20blog%20post%20about%20$(name of blog post):%20$(url of blog post)">Tweet it</a>
But IDK exactly how to get the URL and the Name into there.
Feature request for python client library. @randomfeedooooor will be your first user!
Here's some feedback for the homepage that we can do easily and quickly to get it looking and working better for us:
<title>drand - distributed randomness beacon</title>
I'm by no means a designer but I knocked up a couple of possible homepage designs that incorporate most of this feedback and would also resolve #14. I've just dropped eveything on the page by eye so the paddings and alignments are all off but you get the idea:
Alternatively we could go a more simple route. Either way I think we could use the header for the internal pages:
I'm not sold on the buttons, but @akrych might be able to help me tidy them up a little đ?
Some other rough design things I'd really like to see on the homepage:
Right now, the deploying drand page links to Github for docker deployment instruction. From talking to partners, this seems to be the most common way to deploy drand. It's probably worth moving the content into the docs website.
In the Build where we talk about the drand command line tool, we might want to direct people to the drand-client
, rather than the main drand
binary.
When pressing "Next" at the bottom of the list of blogs at: https://drand.love/blog/ it gets to an empty page and doesn't show any more items. The list at: https://github.com/drand/website/tree/master/docs/blog shows that we should have 12 blogposts in total, but page 1 only shows 10. So the second page shouldn't have been empty.
Not sure what's wrong here (but haven't looked too hard either:). @johnnymatthews (or perhaps @jsoares ) any ideas? Can you help?
This repository was created a while ago and hasn't seen many updates since its initial launch. The Drand project intends to reach more users and developers than those originally targeted when this project first started.
With this in mind, let's review all the documentation within this site and create a plan to either update or deprecate pages. On top of that, let's create a general hierarchy/plan for the information structure of this repo.
This issue can serve as a dumping ground for ideas, plans, and discussion. This issue can be closed once we have a agreed upon a map for Drand docs.
The current (live updating) randomness value needs to be on the homepage.
The page title for the homepage needs to be something more like <title>drand - distributed randomness beacon</title>
The search functionality comes from Algolia's open-source Docssearch, but it looks like it's borked somehow.
Since it's being sunset and Google Analytics 4 is replacing it in 2023.
The getting started section should prioritize ways of consuming the service. Eventually the number of users consuming drand as a service will far outnumber operators so we should privilege access to this information. The call to action for operators should be moved to the "Get Involved" section.
We only have client libraries for golang and JS right now, so we need to give the docs for the HTTP API enough attention since this is the only solution for anyone wanting to use drand with any other programming language.
Prior to the website moving out of beta (#20), we should update the list of partners (on the homepage).
Current partners include:
This will very likely be the final list for launch.
I suggest we add a button at the top (and bottom?) of the website to say that drand has open positions and point to this ad: https://jobs.lever.co/protocol/9afbc1c9-8b3b-4c03-856d-6b0cb5518eaa.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
đ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. đđđ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google â¤ď¸ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.