Upgrade to Pro — share decks privately, control downloads, hide ads and more …

暗号通貨・ブロックチェーンをたしなむ JSフレンズ -初夏のJavaScript祭 in サーキュレーションビル ForPro- / crypto coin js

暗号通貨・ブロックチェーンをたしなむ JSフレンズ -初夏のJavaScript祭 in サーキュレーションビル ForPro- / crypto coin js

初夏のJavaScript祭 in サーキュレーションビル ForProでの登壇資料です。

* botをつくるのたのしい
* 暗号技術たのしい
* ブロックチェーンのデータ構造たのしい
* 分散合意たのしい
* ブロックチェーンプログラミングはJSでできる!

erukiti

May 19, 2018
Tweet

More Decks by erukiti

Other Decks in Programming

Transcript

  1. /FYU1VCMJTIJOH4BNQMF #BCFMͱ"45Λ ࢖͍ ͜ ͳ ͠ ͯ +BWB4DSJQU։ൃΛՃ଎ ʂ ΠϯϓϨεR&Dʦ

    NextPublishing ʧ E-Book / Print Book s e r i e s ٕ ज़ ॻ య ࠤʑ໦ ढ़հ ஶ ιʔεΛղੳ ɾ Ճ޻ͯ͠ੜ࢈ੑʹࠩΛ͚ͭΔ ʂ JavaScript ASTೖ໳ ٕ ज़ ॻ య 9784844398226 1922055018009 ISBN978-4-8443-9822-6 C2055 ¥1800E Ձ֨ 1800 ԁʴ੫ ຊॻ͸ॻళͳͲͰͷൢചՁ֨Λ߆ଋ͍ͯ͠·ͤΜɻ ٕज़ॻయ ٕज़ॻయ ٕज़ॻయ ٕज़ॻయ ঎ۀԽ ঎ۀԽ
  2. ๻ͷϓϩάϥϛϯάɾ+4ཤྺ w ೥୅͔Β$ݴޠΛϝΠϯͱͯ͠ɺ೥͔Β3VCZ΋ซ ༻ͱ͍͏ܗͰͣͬͱ΍͖ͬͯͨ 1)1 +BWB  4DBMB (PͳͲ΋ʜ 

    w ೥ࠒʹ΄Μͷগ͚ͩ͠+BWB4DSJQUΛ৮͔ͬͯΒ೥Ҏ্ +4Λ৮ͬͯͳ͔ͬͨ w &MFDUSPO $PGGFF4DSJQU͕͖͔͚ͬͰ+4΍Γ͸͡ΊΔ w $PGGFF4DSJQUˠ&4 ˠ5ZQF4DSJQUYˠ&4  ˠXJUI'MPXˠ5ZQF4DSJQUY
  3. CPU

  4. CPUMJCSBSZDMPVE w MJCSBSZ w IUUQTHJUIVCDPNDDYUDDYU w USBEJOHCPU w IUUQTHJUIVCDPNBTLNJLFHFLLP w

    IUUQTHJUIVCDPN%FWJB7JS[FOCPU w DMPVECPUTFSWJDF w IUUQTDSZQUPUSBEFSPSH w IUUQTDPJOUSBEFSDPKQ
  5. ͳͷͰ/PEFKT$SZQUP"1* w ϋογϡؔ਺ w ڞ௨ݤ҉߸ w Ұ෦ެ։ݤ҉߸ const crypto =

    require('crypto') // Crypto APIͰϋογϡؔ਺Λ࡞੒͢Δ const createHash = algorithm => buf => { assert(buf instanceof Buffer) const hash = crypto.createHash(algorithm) hash.write(buf) return hash.digest() } const sha256 = createHash('sha256')
  6. const {randomBytes} = require('crypto') const secp256k1 = require('secp256k1') /** *

    ପԁۂઢެ։伴҉߸ͷൿີ伴Λ࡞੒͢Δ * @returns {Buffer} ൿີ伴 */ const generatePrivateKey = () => { for (;;) { const privateKey = randomBytes(32) if (secp256k1.privateKeyVerify(privateKey)) { return privateKey } } } /** * ପԁۂઢެ։伴҉߸ͷެ։伴Λ࡞੒͢Δ * @param {Buffer} privateKey ൿີ伴 * @returns {Buffer} ެ։伴 */ const generatePublicKey = privateKey => { return secp256k1.publicKeyCreate(privateKey) }
  7. commit deadbeaf00... prev deadbeaf00... commit 01234567ab... prev 01234567ab... commit 2233445566...

    prev 01234567ab... commit 7766554433... SHA-1 hash tree src/ 13579bdf.... tree src/ 02468ace.... blob hoge.js 0000000.... blob hoge.js 1111111.... ΄͔ʹ΋
  8. ·ͱΊ w CPUΛͭ͘Δͷͨͷ͍͠ w ҉߸ٕज़ͨͷ͍͠ w ϒϩοΫνΣʔϯͷσʔλߏ଄ͨͷ͍͠ w ෼ࢄ߹ҙͨͷ͍͠ w

    ϒϩοΫνΣʔϯϓϩάϥϛϯά͸+4ͰͰ͖Δʂ IUUQTULSBCCJUIPVTFCPPUIQNJUFNT