forked from duniter/website_fr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from duniter/master
upgrade
- Loading branch information
Showing
9 changed files
with
223 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
Title: Certifier de nouveaux membres | ||
Order: 9 | ||
Date: 2017-04-28 | ||
Slug: certifier-de-nouveaux-membres | ||
Authors: cgeek | ||
|
||
Lorsque vous êtes vous-même devenu membre, vous obtenez le droit de *certifier de nouveaux prétendants à la toile Ğ1*. C'est-à-dire que vous pouvez aider de nouvelles personnes à devenir membre de la toile de confiance Ğ1. | ||
|
||
## La certification | ||
|
||
Pour qu'une personne intègre la toile de confiance Ğ1, il lui faut obtenir au minimum 5 certifications. Elle va donc chercher à obtenir ces 5 certifications auprès des membres actuels de Ğ1, dont vous. | ||
|
||
Vous pouvez être d'accord pour donner une certification à cette personne, et même à plusieurs autres. Par le concours de 4 autres membres, celle-ci pourra à son tour devenir membre. | ||
|
||
## Précautions | ||
|
||
Toutefois, il ne s'agit pas de donner des certifications à tout va ou pour faire plaisir. En tant que nouveau membre, **[vous avez étudié et accepté la licence Ğ1](https://duniter.org/fr/wiki/devenir-membre)**. Vous comprenez donc qu'il est important de connaître la personne que vous certifiez, et que votre propre responsabilité de membre est engagée dans ce processus envers les autres membres de la toile Ğ1. | ||
|
||
Notamment si vous certifiez une personne qui aurait déjà un compte, ou certifiez une identité factice, cela crée un préjudice pour le reste de la toile de confiance. | ||
|
||
Il faut bien avoir conscience que la certification, tout autant que l'identité sont des données publiques et vérifiables. Ainsi, créer de fausses identités et de faux liens dans la toile pourrait très bien être repéré et révélé publiquement, ceci pouvant mener à des sanctions prises par la communauté Ğ1 notamment en termes d'exclusion des tricheurs **mais aussi de leurs complices**. | ||
|
||
## Outils | ||
|
||
Ces remarques étant faites, sachez qu'il existe 2 outils pour vous aider à « voir » qui attend des certifications, combien ont été reçues, quelle est la distance de ce membre vis-à-vis de la toile. | ||
|
||
### « willMembers » de ğ-monit | ||
|
||
Cet outil, [accessible à cette adresse](https://g1-monit.elois.org/willMembers?lg=fr&hideIdtyWithZeroCert=yes) permet de voir les membres en attente de certification et le nombre déjà reçues. | ||
|
||
En outre, l'outil permet de repérer d'éventuels doubles comptes. | ||
|
||
### Wotex | ||
|
||
L'outil [Wotex](https://wotex.cgeek.fr) permet de voir la distance des membres entre eux. | ||
|
||
Pour le moment, la règle dite « de distance » n'a pas un impact très fort, la toile étant encore petite (moins de 3000 membres). Donc aujourd'hui les nouveaux venus ne se soucient que d'obtenir 5 certifications, peu importe qui leur donne la leur. | ||
|
||
Mais dans un avenir proche, cette règle de distance commencera à s'appliquer : obtenir 5 certifications ne sera pas nécessairement suffisant si celles-ci ne remplissent pas le critère de distance. | ||
|
||
Quel est ce critère ? Il stipule que tout membre doit être joignable par n'importe quel autre membre référent à travers ses 5 certifications. C'est-à-dire qu'il doit exister *au moins 1 chemin* partant de chaque membre référent et menant au nouveau membre à travers les chemins de la toile, certifications vers le nouveau venu comprises. Et ce pour 80% des membres référents. | ||
|
||
Un membre référent est un membre de la toile qui a émis et reçu au moins X certifications, ce nombre X dépendant du nombre de membres. Actuellement, pour 100 membres, X vaut 3. Tout membre ayant émis et reçu 3 certifications est donc membre référent, la règle de distance s'applique à tout nouveau venu vis-à-vis de lui. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
Title: Fuites mémoire | ||
Order: 9 | ||
Date: 2017-05-11 | ||
Slug: fuites-memoire | ||
Authors: cgeek | ||
|
||
Il se peut que Duniter manifeste une utilisation trop élevée de la mémoire de sa machine : ceci peut être dû à une fuite mémoire. | ||
|
||
Aussi, la version *Duniter Server* dispose d'un mécanisme permettant d'analyser la mémoire consommée par Duniter. | ||
|
||
## Enregistrement de l'empreinte mémoire | ||
|
||
À tout moment, il est possible d'enregistrer la consommation détaillée de Duniter en termes de mémoire (Linux seulement). On parle de produire un *heapdump*, ou rapport de mémoire utilisée. | ||
|
||
Pour produire ce dump, déterminer l'identifiant de processus de Duniter : | ||
|
||
ps aux | grep duniter | ||
|
||
Puis notez cet identifiant. Imaginons qu'il s'agisse du PID `12345`. Alors pour produire le heapdump, lancer la commande : | ||
|
||
kill -USR2 12345 | ||
|
||
Un fichier nommé `heapdump-<id>.heapsnapshot` sera alors créé sur la machine, soit dans votre répertoire HOME, soit dans le répertoire depuis lequel Duniter a été lancé, soit encore à la racine `/` du système. | ||
|
||
Ce fichier peut ensuite être exploité dans divers outils comme les [Chrome Dev Tools](https://developer.chrome.com/devtools). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
Title: Livraisons | ||
Order: 9 | ||
Date: 2017-05-10 | ||
Slug: livraions | ||
Authors: cgeek | ||
|
||
> Cette page est un guide à destination des développeurs. | ||
Duniter est livré sous la forme de différents binaires pour les environnements Linux et Windows : | ||
|
||
##### Duniter Desktop | ||
|
||
* Pour Debian (.deb) | ||
* Pour Linux (archive tar.gz) | ||
* Pour Windows (.exe) | ||
|
||
##### Duniter Server | ||
|
||
* Pour Debian (.deb) | ||
* Pour Debian ARM (.deb) | ||
|
||
La réalisation de ces livrables ainsi que leur mise à disposition est totalement automatisée. Les sections suivantes décrivent cette procédure. | ||
|
||
## Pré-requis | ||
|
||
N'importe qui peut réaliser la livraison de Duniter, c'est-à-dire produire et mettre à disposition les livrables précédemment cités, sous réserve de réunir les conditions suivantes : | ||
|
||
* Être administrateur de l'organisation [Duniter sur GitHub](https://github.com/duniter) | ||
* Disposer d'une machine Linux avec : | ||
* 4Go de RAM minimum | ||
* Bash | ||
* Node.js v6+ | ||
* VirtualBox | ||
* Vagrant | ||
* Git | ||
|
||
### Création d'un token GitHub | ||
|
||
Pour créer la release GitHub et téléverser les livrables, les scripts de livraison s'attendent à trouver un jeton d'authentification dans le répertoire `~/.config/duniter/.github`. | ||
|
||
Pour obtenir un tel jeton, rendez-vous à l'adresse https://github.com/settings/tokens puis générez un nouveau jeton en cochant la case « public_repo ». | ||
|
||
Copiez alors le jeton généré, par exemple `b23ab3cbe624a8552545900d781a1779b928aa90`, puis enregistrez ce jeton : | ||
|
||
echo -n 'b23ab3cbe624a8552545900d781a1779b928aa90' > ~/.config/duniter/.github | ||
|
||
## Procédure | ||
|
||
### 1. Cloner Duniter et installer ses modules | ||
|
||
git clone [email protected]:duniter/duniter.git | ||
cd duniter | ||
npm install | ||
|
||
### 2. Créer une nouvelle version | ||
|
||
Cette opération se réalise sur n'importe quel branche, selon le besoin. Mais il est important de merger *ensuite* ces changements sur la branche `master`, notamment car l'installation via le script `install.sh` pointe sur cette branche. Il faut donc qu'elle soit à jour. | ||
|
||
Considérons le cas le plus simple où la nouvelle version se fait sur la branche `master`. Lancez le script de changement de version, par exemple pour passer en version `1.2.3` : | ||
|
||
./release/new_version.sh 1.2.3 | ||
|
||
Poussez les modifications sur le dépôt : | ||
|
||
git push origin master --tags | ||
|
||
A ce stade, le code source de Duniter est monté en version, et un nouveau tag a été ajouté au dépôt. GitHub est au courant, et reflète une entrée dans les releases à cette occasion. Toutefois la release n'existe pas encore. | ||
|
||
### 3. Créer la pré-release | ||
|
||
Cette fois, nous allons créer la release avec le status *pre-release*. Ce statut permet de produire la release sans que celle-ci soit visible officiellement jusqu'au moment où l'on décidera que « tout est bon ». | ||
|
||
Pour produire la pre-release et l'ensemble des livrables (hors ARM), toujours pour notre version d'exemple `1.2.3` : | ||
|
||
./release/new_prerelease.sh 1.2.3 | ||
|
||
Cette procédure **est longue** et se résume en 3 étapes : | ||
|
||
* Création de la pré-release sur GitHub | ||
* Production des livrables | ||
* Téléversement des livrables produits, sur GitHub | ||
|
||
La 1ère étape est quasi-instantannée, mais la production et le téléversement sont longs : le script va produire des machines virtuelles Ubuntu et Windows afin d'y réaliser les livrables finaux. Puis, le téléversement peut prendre du temps selon le débit disponible sur votre connexion Internet. | ||
|
||
### 4. Valider la release | ||
|
||
Vous pouvez alors consulter les livrables [sur la page releases du dépôt GitHub](https://github.com/duniter/duniter/releases). Après avoir contrôlé que l'ensemble des fichiers sont bien présents, il est possible de valider la release via : | ||
|
||
./release/set_release.sh 1.2.3 rel | ||
|
||
La *pre-release* passera alors en *release*, et les utilisateurs seront alertés du changement via Duniter UI (dont disposent Duniter Desktop ou Duniter Server démarré en `webstart`). La page d'accueil https://duniter.org/fr affichera également cette nouvelle version. | ||
|
||
### 5. Le build ARM | ||
|
||
A tout moment, il est possible de réaliser cette opération sur ARM : si la release ou pre-release GitHub existe déjà, elle ne sera pas davantage touchée. Sinon elle sera créée. | ||
|
||
Réaliser les opérations 1., 3. et 4. sur ARM (pas la 2., puisque le tag existe déjà) produira un résultat strictement identique, *excepté* le fait que seul le livrable ARM sera produit. | ||
|
||
Une bonne pratique est donc de démarrer les étapes 1., 2. et 3. sur un poste Linux 64bits, *puis* de lancer les étapes 1., 3. et 3. sur ARM en parallèle. Il existera alors 2 machines apportant leur concurrence à la construction de la release. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
Title: Preuve de travail | ||
Order: 9 | ||
Date: 2017-05-02 | ||
Slug: preuve-de-travail | ||
Authors: cgeek | ||
|
||
## L'empreinte | ||
|
||
Exemple d'empreinte valide : | ||
|
||
``` | ||
00000276902793AA44601A9D43099E7B63DBF9EBB55BCCFD6AE20C729B54C653 | ||
``` | ||
|
||
On peut voir que cette empreinte démarre par 5 zéros : réaliser une telle empreinte demande beaucoup de *travail* de la part d'un ordinateur, d'où le fait qu'on appelle l'opération consistant à réaliser une telle empreinte « *preuve de travail* ». | ||
|
||
## Le Nonce | ||
|
||
Il s'agit du champ du document `Block` permettant de faire varier l'empreinte finale du bloc, empreinte qui définit le niveau de la preuve de travail. | ||
|
||
Exemples de valeurs de Nonce : | ||
|
||
* 10100000112275 | ||
* 10300000288743 | ||
* 10400000008538 | ||
* 10700000079653 | ||
* 10300000070919 | ||
|
||
En réalité ces valeurs de `Nonce` suivent toutes un même schéma `XYY00000000000`. Le Nonce ne correspond pas aux nombres d'essais, mais plutôt à un espace de Nonce possible. La décomposition est la suivante : | ||
|
||
* X correspond au numéro de pair. Par exemple celui qui a plusieurs nœuds avec la même clé personnelle et donc sont tous capable de calculer, chacun de ces nœuds va réaliser sa preuve avec un X différent, afin de ne pas calculer la même preuve justement. Car potentiellement, ils réalisent exactement le même prochain bloc (puisque l'émetteur est le même, le contenu possiblement identique, seul le Nonce peut varier), donc il faut avoir un Nonce qui les différencie. | ||
* Y correspond au numéro de cœur du processeur. On peut voir par exemple que quelqu'un possède au moins 7 cores dans son CPU ici, car on lit le Nonce `107[...]`. Un serveur avec 99 cores pourrait réaliser une preuve `199[...]` par exemple. | ||
|
||
Le reste du Nonce, la partie derrière XYY, est l'espace de Nonce du nœud pour chaque core du CPU. Ce qui fait donc un espace de 11 chiffres (`00000000000`) pour trouver un Nonce correct pour chaque core du CPU de la machine (CPU au sens large, ce peut-être un bi-CPU, on considère le nombre de cores résultants pour la PoW). |