{"id":95,"date":"2019-10-09T21:29:54","date_gmt":"2019-10-09T21:29:54","guid":{"rendered":"http:\/\/blog.qantion.org\/?p=95"},"modified":"2020-04-05T14:17:28","modified_gmt":"2020-04-05T14:17:28","slug":"generation-de-jetons","status":"publish","type":"post","link":"http:\/\/blog.qantion.org\/?p=95","title":{"rendered":"G\u00e9n\u00e9ration de jetons"},"content":{"rendered":"<p style=\"text-align: justify;\">Avant de g\u00e9n\u00e9rer des monnaies et leurs sacs de jetons, nous devons impl\u00e9menter la base de la monnaie, c&rsquo;est \u00e0 dire le jeton vecteur de valeur.<\/p>\n<p style=\"text-align: justify;\">Il y a deux formes de jetons.<\/p>\n<h2 style=\"text-align: justify;\">Jeton simple<\/h2>\n<p style=\"text-align: justify;\">Le jeton plus simple est un objet virtuel dont l&rsquo;identifiant (<code>TID<\/code>) est g\u00e9n\u00e9r\u00e9 al\u00e9atoirement. Ce peut \u00eatre un simple compteur aussi mais chaque identifiant doit \u00eatre unique par monnaie, et donc par sac de jetons aussi.<\/p>\n<p style=\"text-align: justify;\">L&rsquo;utilisation d&rsquo;un compteur de faible valeur est fortement d\u00e9conseill\u00e9 pour le <code>TID<\/code>.<\/p>\n<p style=\"text-align: justify;\">Par exemple :<\/p>\n<p><code>4d831b11bbf828b9cfd4752223bb8918cbd634c4b858691736afd8b34f1f0c62<\/code><\/p>\n<h2 style=\"text-align: justify;\">Jeton \u00e9tendu<\/h2>\n<p style=\"text-align: justify;\">La deuxi\u00e8me forme de jeton est donc un objet dont le contenu va donner par son empreinte cryptographique un identifiant de jeton unique (<code>TID<\/code>). Il n&rsquo;est dans ce cas pas possible d&rsquo;avoir un compteur puisque les valeurs de identifiant sont assimil\u00e9es \u00e0 des valeurs al\u00e9atoires.<br \/>\nLe contenu de ces jetons va recevoir plusieurs lignes de type <code>cl\u00e9:valeur<\/code>. Chaque ligne d\u00e9bute par trois lettre en majuscules d\u00e9finissant le sens s\u00e9mantique (cl\u00e9) de la ligne, suivi d&rsquo;un deux-points ( : ) et de la valeur associ\u00e9e. Il ne doit pas y avoir d&rsquo;espace sur une ligne, ni en d\u00e9but et fin de ligne, ni autour du deux-points. Chaque ligne est termin\u00e9e par un retour chariot type UNIX.<\/p>\n<p style=\"text-align: justify;\">Les diff\u00e9rentes cl\u00e9s reconnues :<\/p>\n<ul>\n<li style=\"text-align: justify;\"><code>TYP<\/code> : le type de jeton. Toujours \u00e0 la valeur <code>cryptoken<\/code>. Pr\u00e9sence obligatoire en ligne 1.<\/li>\n<li style=\"text-align: justify;\"><code>SID<\/code> : le num\u00e9ro de s\u00e9rie du jeton (<em>serial<\/em>). De pr\u00e9f\u00e9rence al\u00e9atoire mais peut \u00eatre un compteur \u00e0 condition d&rsquo;\u00eatre unique. Pr\u00e9sence obligatoire en ligne 2.<\/li>\n<li style=\"text-align: justify;\"><code>FID<\/code> : l&rsquo;identifiant de l&rsquo;entit\u00e9 ayant forg\u00e9 le jeton (<em>forge<\/em>). Optionnel.<\/li>\n<li style=\"text-align: justify;\"><code>PID<\/code> : l&rsquo;identifiant de l&rsquo;objet du sac de jetons (<em>pool<\/em>). Optionnel.<\/li>\n<li style=\"text-align: justify;\"><code>CID<\/code> : l&rsquo;identifiant de l&rsquo;objet de la monnaie (<em>currency<\/em>). Optionnel.<\/li>\n<li style=\"text-align: justify;\"><code>NAM<\/code> : le nom de la monnaie. Optionnel.<\/li>\n<li style=\"text-align: justify;\"><code>UNI<\/code> : le nom de l&rsquo;unit\u00e9 de la monnaie en trois lettres maximum. Optionnel.<\/li>\n<li style=\"text-align: justify;\"><code>VAL<\/code> : la valeur num\u00e9rique relative du jeton dans l&rsquo;unit\u00e9 de la monnaie. Optionnel. Par d\u00e9faut \u00e9quivalent \u00e0 1.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Les cl\u00e9s <code>TYP<\/code> et <code>SID<\/code> sont obligatoires, toujours au d\u00e9but et dans cet ordre.<br \/>\nLe d\u00e9but de contenu avec <code>TYP:cryptoken<\/code> permet de marquer un type de contenu facile \u00e0 v\u00e9rifier.<br \/>\nLa seconde ligne avec le <code>SID<\/code> permet d&rsquo;avoir un contenu unique et donc une empreinte unique pour chaque jeton. La valeur est de pr\u00e9f\u00e9rence al\u00e9atoire mais cela peut \u00eatre un compteur \u00e0 condition d&rsquo;\u00eatre unique. L&rsquo;utilisation d&rsquo;un compteur de faible valeur est fortement d\u00e9conseill\u00e9 pour le <code>SID<\/code>.<\/p>\n<p style=\"text-align: justify;\">La g\u00e9n\u00e9ration pseudo al\u00e9atoire du <code>SID<\/code> est faite en partant d&rsquo;un d\u00e9riv\u00e9 de la date avec quelques valeurs locales. Il n&rsquo;y a pas de contrainte de s\u00e9curit\u00e9 sur cette valeur. Puis une boucle interne g\u00e9n\u00e8re un bon al\u00e9a au fur et \u00e0 mesure de la g\u00e9n\u00e9ration des jetons via une fonction de hash. Le tout ne consomme pas du tout de pr\u00e9cieux al\u00e9a de bonne qualit\u00e9.<\/p>\n<p style=\"text-align: justify;\">Les cl\u00e9s <code>FID<\/code>, <code>PID<\/code>, <code>CID<\/code>, <code>NAM<\/code> et <code>UNI<\/code> sont indicatives. Une monnaie peut tout \u00e0 fait r\u00e9utiliser un sac de jetons d&rsquo;une autre monnaie sans qu&rsquo;il y ai conflit dans la gestion des jetons et de leurs transactions. Les valeurs associ\u00e9es peuvent \u00eatre fausses sans que cela ne pose de probl\u00e8me.<\/p>\n<p style=\"text-align: justify;\">La cl\u00e9 <code>VAL<\/code> donne une indication de valeur par rapport \u00e0 la valeur d&rsquo;une unit\u00e9 de la monnaie qui utilise le jeton. C&rsquo;est une valeur num\u00e9rique. Par d\u00e9faut, si non pr\u00e9sent, la valeur est \u00e0 interpr\u00e9ter comme \u00e9quivalente \u00e0 1.<\/p>\n<p style=\"text-align: justify;\">Un jeton ne peut en aucun cas contenir son propre identifiant <code>TID<\/code>.<\/p>\n<p style=\"text-align: justify;\">Par exemple :<\/p>\n<pre>TYP:cryptoken\r\nSID:5f3ad5265bb3306b3266e1935d067d9ec15965d0a970554bc6161eb3328907a9\r\nFID:f0f7cf5c921320b97daedeb7c53f2417921c747c77b696f8a25ff29277661d2f\r\nPID:37aa32a2cec224ae908226eb1c600fbeacd5faf1f84b2e292c0be808c0296333\r\nCID:daf832e3042cc849efcd5b6531df835a9c5f6251b2101e20972f9a9db2a8ae24\r\nNAM:poux\r\nUNI:pou\r\nVAL:100<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Avant de g\u00e9n\u00e9rer des monnaies et leurs sacs de jetons, nous devons impl\u00e9menter la base de la monnaie, c&rsquo;est \u00e0 dire le jeton vecteur de valeur. Il y a deux formes de jetons. Jeton simple Le jeton plus simple est un objet virtuel dont l&rsquo;identifiant (TID) est g\u00e9n\u00e9r\u00e9 al\u00e9atoirement. Ce peut \u00eatre un simple compteur &hellip; <a href=\"http:\/\/blog.qantion.org\/?p=95\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">G\u00e9n\u00e9ration de jetons<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[49,12,77,10,26,92,48,50,46,13,14,83,72,4,47,76,73,75,84,93],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.qantion.org\/index.php?rest_route=\/wp\/v2\/posts\/95"}],"collection":[{"href":"http:\/\/blog.qantion.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.qantion.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.qantion.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.qantion.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=95"}],"version-history":[{"count":8,"href":"http:\/\/blog.qantion.org\/index.php?rest_route=\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":158,"href":"http:\/\/blog.qantion.org\/index.php?rest_route=\/wp\/v2\/posts\/95\/revisions\/158"}],"wp:attachment":[{"href":"http:\/\/blog.qantion.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.qantion.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.qantion.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}