Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • pitchum/website_en
  • mmoya/website_en
  • griffedge/website_en
  • BorisPAING/website_en
  • thomasbromehead/website_en
  • LukeMarlin/website_en
  • calbasi/website_en
  • scanlegentil/website_en
  • jytou/website_en
  • guenoel/website_en
  • librelois/website_en
11 results
Show changes
Commits on Source (8)
...@@ -13,15 +13,15 @@ build-job: ...@@ -13,15 +13,15 @@ build-job:
- mkdir -p /usr/share/man/man1 # Because of https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863199 - mkdir -p /usr/share/man/man1 # Because of https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863199
- apt-get update && apt-get install -y plantuml graphviz - apt-get update && apt-get install -y plantuml graphviz
- pip install -r requirements.txt - pip install -r requirements.txt
- pelican content -s publishconf.py -e OUTPUT_PATH=public/ - pelican content -s publishconf.py -e OUTPUT_PATH='"public"'
artifacts: artifacts:
paths: paths:
- public/ - public/
name: build name: build
expire_in: 7 days expire_in: 7 days
package-job: package-job:
stage: package stage: package
tags: [redshift] # Used to prevent runner 1000i100 from picking up this stage
image: curlimages/curl:latest image: curlimages/curl:latest
script: script:
- PACKAGE_VERSION="$(date +%Y.%m).${CI_PIPELINE_IID}" - PACKAGE_VERSION="$(date +%Y.%m).${CI_PIPELINE_IID}"
...@@ -33,9 +33,9 @@ package-job: ...@@ -33,9 +33,9 @@ package-job:
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $HOME/website.tar ${PACKAGE_REGISTRY_URL}/website.tar' - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $HOME/website.tar ${PACKAGE_REGISTRY_URL}/website.tar'
rules: rules:
- if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_COMMIT_BRANCH == "master"'
release-job: release-job:
stage: release stage: release
tags: [redshift] # Used to prevent runner 1000i100 from picking up this stage
image: registry.gitlab.com/gitlab-org/release-cli:latest image: registry.gitlab.com/gitlab-org/release-cli:latest
rules: rules:
- if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_COMMIT_BRANCH == "master"'
...@@ -47,11 +47,10 @@ release-job: ...@@ -47,11 +47,10 @@ release-job:
pages: pages:
stage: deploy stage: deploy
tags: [redshift]
rules: rules:
- if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_COMMIT_BRANCH == "master"'
script: script:
- echo "Publishing to Gitlab pages" - echo "Publishing to Gitlab pages"
artifacts: artifacts:
paths: paths:
- public/ - public/
\ No newline at end of file
...@@ -25,10 +25,11 @@ apt install plantuml graphviz ...@@ -25,10 +25,11 @@ apt install plantuml graphviz
Generate the site Generate the site
pelican pelican
# or python3 -m pelican
Serve it Serve it
pelican --listen --autoreload --port 8557 pelican --listen --autoreload --port 8557 # port is hardcoded in develop conf file
The website should be available at http://localhost:8557. The website should be available at http://localhost:8557.
......
Title: Duniter v2 with Substrate 🏗
Date: 2022-04-21
Category: duniter
Slug: duniter-substrate
Authors: hugo
Thumbnail: /images/logos/duniter.png
[TOC]
## A necessary and beneficial evolution 👍
Duniter software has seen many evolutions since its launch [in April 2016](/ucoin-rename-duniter), and so have blockchain technologies. While at the time a "home-made" solution was relevant, we believe that it is now better to base our software on widely tested and proven bricks to ensure scalability. We found the [Substrate](https://substrate.io/) blockchain framework to be particularly well suited to our needs. Indeed, its modular architecture by "[pallet](https://docs.substrate.io/v3/getting-started/glossary/#pallet)" will let us assemble bricks developed by professionals and focus on what makes Duniter unique: its web of trust and the monetary creation by Universal Dividend (UD).
### Migrating the Ğ1 🏆
Duniter's first objective is to power the Ğ1 currency whose web of trust currently counts 4971 members with a 300 members / month growth rate. We want to work together with the community to make the transition towards Duniter v2 as smooth as possible without a "hard fork". Each member will keep his/her status, each wallet will keep its balance, the currency parameters will remain nearly unchanged, wallets (formerly "clients") software will be adapted, and we will try to make the transition as short as possible (ideally less than a day).
### International outreach 🌍
Unlike the "home-made" solution documented mainly in French, Substrate is opening us to an international community of developers. Duniter will bring what the cryptocurrency world is missing: a solid and sound monetary theory. Conversely, the cryptocurrency world will provide Duniter with the expertise needed to take the next step in experimenting with a free currency. To make understanding easier, we will be using a precise vocabulary [(fr)](https://forum.duniter.org/t/vocabulaire-de-base-pour-comprendre-duniter-v2s-lecture-fortement-recommandee-pour-tous/9053) already well established in the domain.
### Blockchain as a common resource 🌲
[🔗 forum (fr)](https://forum.duniter.org/t/comment-partager-equitablement-cette-ressource-commune-quest-la-blockchain-g1/9050/)
Duniter v1 was already part of a comprehensive approach to treat blockchain as a **[common](https://en.wikipedia.org/wiki/Commons)**, <q> a resource that community manage for individual and collective benefit </q>. The migration to Substrate is an ideal opportunity to push the thinking further, by introducing *on-chain* governance tools for collective decisions (voting, protocol evolution) and the allocation of finite blockchain resources (ex. spam resistance).
## Some technical points 👩💻
Let's now move on to the technical part, where we deal with the concrete issues raised by this migration.
### Dropping the PoW mechanism in favor for BABE/GRANDPA 👾
[🔗 forum (fr)](https://forum.duniter.org/t/abandon-de-la-pow-au-profit-de-babe-grandpa/8901) [🔗 forum (fr)](https://forum.duniter.org/t/g1v2-proposition-de-passer-au-consensus-hybride-babe-grandpa/8610)
Duniter's proof of work was often a criticised point. Although our custom [personalised difficulty](/wiki/duniter/2018-11-27-duniter-proof-of-work/#personalised-difficulty) which reduces the energy consumption and distributes the addition of blocks among blacksmiths, the [BABE](https://docs.substrate.io/v3/advanced/consensus/#babe) for block authoring and [GRANDPA](https://docs.substrate.io/v3/advanced/consensus/#grandpa) for finalization will allow us to greatly accelerate the data validation (~30 minutes → ~30 seconds) while limiting the "waste" of CPU resources.
### Blacksmiths subweb 🌋
[🔗 forum (fr)](https://forum.duniter.org/t/la-sous-toile-forgerons/9047)
In Duniter v1, any member of the web of trust is given the rights to create the UD, certify, and add blocks all at once. This is a major security flaw because by hacking into 30 poorly secured accounts it is possible to take control of the entire blockchain. With the increasing number of users, it is better to decouple different rights to grant block authoring only under security conditions that cannot be imposed on the general public.
...@@ -25,4 +25,4 @@ If the project takes off on long term, the creation of a Foundation is already c ...@@ -25,4 +25,4 @@ If the project takes off on long term, the creation of a Foundation is already c
## Contact ## Contact
More informations on the [Contact](/contact) page. Please get in touch on the [duniter forum](https://forum.duniter.org/).
\ No newline at end of file \ No newline at end of file
...@@ -24,7 +24,8 @@ You may participate in Duniter server's development, which is the core software ...@@ -24,7 +24,8 @@ You may participate in Duniter server's development, which is the core software
* understanding the basics of asymmetric cryptography * understanding the basics of asymmetric cryptography
* optionally know the [Ed25519](http://ed25519.cr.yp.to/) scheme * optionally know the [Ed25519](http://ed25519.cr.yp.to/) scheme
If you are not affraid of those technologies, you can both start reading the Wiki to [Dive into Duniter code](https://github.com/duniter/ucoin/wiki/Dive-into-the-code) and [contact us](/contact). If you are not affraid of those technologies, you can both start reading the Wiki to [Dive into Duniter code](https://github.com/duniter/ucoin/wiki/Dive-into-the-code) and contact us on [duniter forum](https://forum.duniter.org/).
#### As a designer/frontend developer #### As a designer/frontend developer
See this beautiful website? You want to improve it with new content, new design? Feel free to propose your skills, any help is welcome. What Duniter probably needs the most is: **a logo**. See this beautiful website? You want to improve it with new content, new design? Feel free to propose your skills, any help is welcome. What Duniter probably needs the most is: **a logo**.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<head> <head>
<meta name="date" content="2017-12-11"> <meta name="date" content="2017-12-11">
<meta name="order" content="9"> <meta name="order" content="9">
<meta charset="UTF-8"> <meta name="encoding" charset="UTF-8">
<title>Try Duniter</title> <title>Try Duniter</title>
</head> </head>
<body> <body>
......
...@@ -47,7 +47,7 @@ For a new or deleted node (for example, following the use of `reset data`), it i ...@@ -47,7 +47,7 @@ For a new or deleted node (for example, following the use of `reset data`), it i
Synchronize its node with the network Ğ1 (Duniter currency): Synchronize its node with the network Ğ1 (Duniter currency):
duniter sync g1.duniter.org 443 duniter sync g1.duniter.org:443
Progress: Progress:
download: [|||| ] 23% download: [|||| ] 23%
...@@ -59,7 +59,7 @@ This command takes time. Be patient. ...@@ -59,7 +59,7 @@ This command takes time. Be patient.
Disables the display with progress bars in favor of a conventional control output. Disables the display with progress bars in favor of a conventional control output.
duniter sync g1.duniter.org 443 duniter sync g1.duniter.org:443
2017-04-10T08: 31: 42 + 02: 00 - info: Try with g1.duniter.org:10901 4aCqwi 2017-04-10T08: 31: 42 + 02: 00 - info: Try with g1.duniter.org:10901 4aCqwi
2017-04-10T08: 31: 42 + 02: 00 - info: Sync started. 2017-04-10T08: 31: 42 + 02: 00 - info: Sync started.
2017-04-10T08: 31: 42 + 02: 00 - info: Getting remote blockchain info ... 2017-04-10T08: 31: 42 + 02: 00 - info: Getting remote blockchain info ...
...@@ -70,7 +70,7 @@ Disables the display with progress bars in favor of a conventional control outpu ...@@ -70,7 +70,7 @@ Disables the display with progress bars in favor of a conventional control outpu
Disables P2P downloading and downloading of network node listing. Disables P2P downloading and downloading of network node listing.
duniter sync g1.duniter.org 443 duniter sync g1.duniter.org:443
2017-04-10T08: 32: 26 + 02: 00 - info: Try with g1.duniter.org:10901 4aCqwi 2017-04-10T08: 32: 26 + 02: 00 - info: Try with g1.duniter.org:10901 4aCqwi
2017-04-10T08: 32: 26 + 02: 00 - info: Sync started. 2017-04-10T08: 32: 26 + 02: 00 - info: Sync started.
2017-04-10T08: 32: 26 + 02: 00 - info: Getting remote blockchain info ... 2017-04-10T08: 32: 26 + 02: 00 - info: Getting remote blockchain info ...
...@@ -88,13 +88,13 @@ Retrieves only peer information, does not retrieve block information. ...@@ -88,13 +88,13 @@ Retrieves only peer information, does not retrieve block information.
Force the careful verification of the validity of each block in relation to the rules of the protocol. Force the careful verification of the validity of each block in relation to the rules of the protocol.
duniter sync g1.duniter.org 443 --cautious duniter sync g1.duniter.org:443 --cautious
#### Option `--memory` #### Option `--memory`
Perform synchronization in memory only. Synchronization will not be stored on the hard disk. This option is useful for a quick blockchain integrity check when combined with the `--cautious` option. Perform synchronization in memory only. Synchronization will not be stored on the hard disk. This option is useful for a quick blockchain integrity check when combined with the `--cautious` option.
duniter sync g1.duniter.org 443 --cautious --memory duniter sync g1.duniter.org:443 --cautious --memory
## Start / Stop its node ## Start / Stop its node
...@@ -363,7 +363,7 @@ Because these options allow you to temporarily reset (the time of a command) a g ...@@ -363,7 +363,7 @@ Because these options allow you to temporarily reset (the time of a command) a g
Allows you to redefine the folder where the application data is stored. The default value for this option is `$HOME/.config/duniter/` Allows you to redefine the folder where the application data is stored. The default value for this option is `$HOME/.config/duniter/`
duniter sync g1.duniter.org 10901 --home / tmp / duniter duniter sync g1.duniter.org:10901 --home / tmp / duniter
This command will synchronize and store the result in the `/tmp/duniter/duniter_default` folder. This command will synchronize and store the result in the `/tmp/duniter/duniter_default` folder.
...@@ -371,13 +371,13 @@ This command will synchronize and store the result in the `/tmp/duniter/duniter_ ...@@ -371,13 +371,13 @@ This command will synchronize and store the result in the `/tmp/duniter/duniter_
Allows you to redefine the folder where the application data is stored. The default value for this option is `duniter_default`. Allows you to redefine the folder where the application data is stored. The default value for this option is `duniter_default`.
duniter sync g1.duniter.org 10901 --mdb g-one duniter sync g1.duniter.org:10901 --mdb g-one
This command will synchronize and store the result in the `$HOME/.config/duniter/g-one` folder. This command will synchronize and store the result in the `$HOME/.config/duniter/g-one` folder.
It is possible to combine the 2 options: It is possible to combine the 2 options:
duniter sync g1.duniter.org 10901 --home / tmp / duniter --mdb g-one duniter sync g1.duniter.org:10901 --home / tmp / duniter --mdb g-one
This command will synchronize and store the result in the `/tmp/duniter/g-one` folder. This command will synchronize and store the result in the `/tmp/duniter/g-one` folder.
......
...@@ -150,7 +150,7 @@ Without any other option, the container will automatically execute `duniter dire ...@@ -150,7 +150,7 @@ Without any other option, the container will automatically execute `duniter dire
Once the node is started, it is accessable either using web UI, going to http://localhost:9220, either using command line: Once the node is started, it is accessable either using web UI, going to http://localhost:9220, either using command line:
docker exec -it duniter duniter sync g1.duniter.fr 443 docker exec -it duniter duniter sync g1.duniter.fr:443
In the above command, the first `duniter` is the name given to the container at creation time, while the second one is the executed command. In the above command, the first `duniter` is the name given to the container at creation time, while the second one is the executed command.
......
...@@ -57,7 +57,7 @@ BOOTSTRAP_THEME = 'readable' ...@@ -57,7 +57,7 @@ BOOTSTRAP_THEME = 'readable'
DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'search') DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'search')
ARTICLE_EXCLUDES = ['files'] ARTICLE_EXCLUDES = ['files']
STATIC_PATHS = ['images', 'content', 'files', 'files/licence_g1.rst', 'css'] STATIC_PATHS = ['images', 'content', 'files', 'files/license_g1.txt', 'css']
CUSTOM_CSS = 'css/custom.css' CUSTOM_CSS = 'css/custom.css'
......
...@@ -5,4 +5,4 @@ sys.path.append('.') ...@@ -5,4 +5,4 @@ sys.path.append('.')
from pelicanconf import * from pelicanconf import *
SITEURL = u'https://duniter.org/en' SITEURL = u'https://duniter.org'
pelican==4.5.4 pelican==4.7.2
Markdown==3.3.4 Markdown==3.3.4
beautifulsoup4==4.9.3 beautifulsoup4==4.9.3