Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

20180116-bitcoin

Avatar for kotohata kotohata
January 12, 2018

 20180116-bitcoin

Avatar for kotohata

kotohata

January 12, 2018
Tweet

More Decks by kotohata

Other Decks in Business

Transcript

  1. Copyright ©2017 Attracie, inc. All rights reserved. ✀語集 • トランザクション・・・「い぀、誰から誰にビットコむンが移動した」ずいうこずが蚘録された情報。1決枈・1✀払いごず

    に1トランザクション発✣する。 • ブロック・・・トランザクションが数千個たずたったフォルダのようなもの。 • ブロックチェヌン・・・ビットコむンがはじたっお以来、最初のトランザクションを含む先頭のブロックから続くブロック 党䜓のこず。いた500,000ブロックぐらい存圚。 • ブロック時間・・・平均的に䜕分おきに次のブロックが✣成されるかの時間。 • トランザクションinput・・・トランザクションの巊偎。資⟊の移転元(✀払っおいる⌈)の情報が含たれおいる。耇匏簿蚘でい う貞✅。 • トランザクションoutput・・・トランザクションの右偎。資⟊の移転先の情報が含たれおいる。借✅。 • ノヌド・・・分散ネットワヌクの1参加者ずいう意味ですが、具䜓的に⟔えばビットコむンのプログラム(bitcoind)が動いおい る1プロセスのこずで、⟔い換えれば1台のパ゜コンのこず。macbookでbitcoindを動かせばそのmacが1ノヌドずなりたす。 • マむニング・・・新しいブロックを䜜り、ブロックチェヌンの末尟に远加する䜜業のこず。ただし新しいブロックを䜜るに はすさたじい量の蚈算が必芁になっおいお、䞖界䞭のパ゜コンがその蚈算を競い合っおいたす。したがっお盞圓の電気代を 䜿いたすが、ブロック䜜成者には報酬ずしおビットコむンが䞎えられたす。 • マむナヌ・・・マむニングをする⌈のこず。 • りォレット・・・ビットコむンの所有の源泉ずなる秘密鍵が栌玍されおいる゜フトりェア。秘密鍵は✂字列なので玙にQR コヌドを曞き蟌んだものもある。 • ビットコむンアドレス・・・ビットコむンの⌝座番号のようなもの。
  2. Copyright ©2017 Attracie, inc. All rights reserved. ビットコむンずは プログラムずしおのビットコむン(bitcoind, bitcoin-cli)

    C++ずpythonで曞かれたオヌプン゜ヌスの分散ネットワヌクプログラム。 分散サヌバずしお機胜するbitcoind、それを照䌚したりリク゚ストを⟏うbitcoin-cliずいうプログラムがある。 決枈ネットワヌクずしおのビットコむン(Bitcoin) 䞊のプログラムをサトシナカモト✒(創案者)が2009幎に動かしお以降、䞖界䞭のノヌドで動いおいるbitcoindが組 み合わさっお動いおいるネットワヌクシステム。各ノヌドが⟃埋的に構築しおいる(が結果的に党䜓で同じものに なっおいく)ブロックチェヌンが台垳ずなっおいる。 通貚ずしおのビットコむン(bitcoin, satoshi, BTC) ブロックチェヌンに蚘録された残⟌。
  3. Copyright ©2017 Attracie, inc. All rights reserved. ビットコむンの特城 bitcoindは単⌀のマスタヌデヌタや特暩管理者を持たない bitcoindを✎ち䞊げれば⟃由にビットコむンのネットワヌクに参加でき、それぞれのノヌドが党取匕情報を蚘録し

    たマスタヌデヌタを持぀。 bitcoindはお互いに情報をやり取りしお最新の情報を取り蟌んでいく どこかのサヌバを信頌しおそこの情報で同期をずるのではなく、いろいろなノヌドから现かいデヌタを受け取り ながら⟃埋しおデヌタベヌス(ブロックチェヌン)を曎新しおいく。これがお互いに䜜✀するこずで、デヌタベヌ スがほずんど同じ状態になっおいく。 bitcoinのトランザクションは即時反映されず、ネットワヌク党䜓による承認・合意圢成に玄1時間かかる 䞭倮集暩でないので、bitcoindのネットワヌクの倚数が合意圢成するこずでトランザクションの反映ずみなす。
  4. Copyright ©2017 Attracie, inc. All rights reserved. ブロックチェヌンずは? ビットコむンの党取匕を含んだ台垳 それぞれのbitcoindにはビットコむン開始以来の党取匕情報を含んだブロックチェヌンが栌玍されおいる(数⌗GB

    くらいで、これからも増えおいく)。同じブロックチェヌンのデヌタベヌスが䞖界䞭に重耇しおいるので、保存効 率ずいう意味では無駄ずもいえる。 ブロックチェヌンは最初のブロックから最新のブロックたでで構成される 珟圚50䞇皋床のブロックができおいお、10分に1個新しいブロックができるようになっおいる。 ブロックにはトランザクションが数千含たれおいる 平均10分間隔でブロックは新しくなる。ブロックができおから次のブロックが誕✣するたでに発✣したトランザ クションが含たれおいる。「トランザクション数がいく぀になるず⟃動的に次のブロックができる」ずかではな いので泚意。
  5. Copyright ©2017 Attracie, inc. All rights reserved. ブロックチェヌンの䞭⟝ ブロック1 ブロック2

    ブロック 500,000 ・・・ 最新のブロック トランザクション トランザクション トランザクション トランザクション トランザクション トランザクション ・ ・ ・ トランザクション トランザクション トランザクション 未承認のトランザクション 新しいブロック 末尟に远加する マむニング
  6. Copyright ©2017 Attracie, inc. All rights reserved. なぜブロックを区切る必芁があるのか ブロックを新しく䜜るにはマむニ ングが必芁ずなる。

    マむニングにはめちゃくちゃな蚈 算量が必芁で、䞖界䞭のマむナヌ の蚈算量をもっおも10分に1床し かできない難易床になっおいる。 ブロックチェヌンはブロックの数 が最も倚いものを信頌する。 したがっお悪意をもっおブロック を改ざんしようずするず、正しい ブロックチェヌンでマむニングさ れおる分のマむニングが必芁。 ずおも個⌈や⌀組織でできる蚈算 量ではないので、信頌されるたで ブロックを぀なげられない。
  7. Copyright ©2017 Attracie, inc. All rights reserved. よくある誀解 誀解1. ブロックチェヌン䞊でビットコむンの売買ができる

    ビットコむンネットワヌク⟃䜓では売買はできない。 なぜならブロックチェヌンには「誰がいくらのビットコむンを持っおいるか」ずいう情報ず「誰が誰にビット コむンを送る」ずいう指✰しかできないため。 ✇本円(JPY)ずビットコむン(BTC)を亀換するには、ブロックチェヌンずは盎接関係のない倖郚の取匕所で⌆者間 が合意し、取匕所が代⟏しおトランザクションを凊理する。 誀解2. マむニングを頑匵っお嘘のブロックを積み䞊げれば、他⌈のビットコむンを⟃分のものにできる 「そのビットコむンの所有暩があるか」は公開鍵に察応するデゞタル眲名が⟏われおいるかで刀断できるので、 そもそもトランザクションの怜蚌で無効であるこずが刀断できる。 誀解3. 1BTC持っおる⌈が党額をAさんに送った。その盎埌にBさんにも1BTC送ろうずするず、ビットコむンネッ トワヌクには拒吊される。 サヌバ・クラむアント型のネットワヌクであれば2床✬は拒吊されるが、ビットコむンは分散ネットワヌクなの でそもそも床✬が即時に承認されず、䞡✅のトランザクションが保留状態ずなる。先にブロックに⌊ったも のが優勢ずなり、さらに6ブロックができるず事実䞊逆転䞍胜ず考えられ承認される。もう⌀✅のトランザク ションはい぀たでも承認されない。
  8. Copyright ©2017 Attracie, inc. All rights reserved. rubyでハッシュ関数を䜿った䟋 同じSHA256ずいうアルゎリズムを䜿えば、別の⟔語や別の⌈のパ゜コンでも党く同じ結果になりたす。 りェブサヌビスではパスワヌドそのものをデヌタベヌスに⌊れるのではなくハッシュ化したものを保存しお、

    ハッシュ倀が⌀臎するかを✐べるこずで✣のパスワヌドを保存せずに正しいパスワヌドかを刀断する、ずいった ✀途で䜿われおいたす。 ※ ハッシュ化されたパスワヌドを知っおも、䞍正なログむンはできないのでセキュリティ䞊優れおいたす ※ ハッシュ化された倀はもずに戻せない(埩号できない)ので、ハッシュ関数にかけるこずは「暗号化」ずはいわ ず「ハッシュ化」ずいいたす。
  9. Copyright ©2017 Attracie, inc. All rights reserved. 秘密鍵・公開鍵の特城 秘密鍵 公開鍵

    それぞれの✂字列はプログラミング⟔ 語やOSがかわっおも、アルゎリズムが ⌀臎しおいる限り䜿える
  10. Copyright ©2017 Attracie, inc. All rights reserved. 公開鍵のナヌスケヌス SSHにおける認蚌 ①クラむアントは前もっお公開鍵をサヌバに登録しおおく

    ②クラむアントから接続があったずき、サヌバはクラむアントが秘密鍵の所有者(=サヌバのアクセス暩を もっおいるずみなせる⌈)か知りたい。しかしクラむアントはセキュリティ䞊、秘密鍵そのものを送りた くない。 ③そこでサヌバは乱数Xを✣成し、公開鍵で暗号化したものをクラむアントに返す。公開鍵で暗号化され たものは察応する秘密鍵で埩号できるので、クラむアントはもずのXを知るこずができる。そのXをサヌ バに送り぀けるこずで、サヌバはクラむアントは秘密鍵の所有者であるこずを知れる。
  11. Copyright ©2017 Attracie, inc. All rights reserved. 公開鍵のナヌスケヌス 電⌊眲名 ここでの「他の誰か」は

    䞖界䞭で動いおいる bitcoindのこず。 では「Aさんの公開鍵」は どこから⌊⌿しおいるの でしょうか
  12. Copyright ©2017 Attracie, inc. All rights reserved. ビットコむンを持っおいるずは 䞖界䞭に存圚するbitcoindの䞭に⌊っおるブロックチェヌンのデヌタには、ビットコむン残⟌ずその所有者の公 開鍵(盞圓のもの)が蚘録されおいる。

    秘密鍵を持っおいれば、察応する公開鍵のビットコむン残⟌を別の⌝座に移すような芁求(トランザクションず いう)を発⟏できる。トランザクションを秘密鍵で眲名する。 トランザクションをどこかのbitcoindに送るずそれが党䜓のネットワヌクに浞透しお、未承認のトランザクショ ンずしお認識される。違う秘密鍵で眲名しおたらこの時点でバレる。 新しいブロックが⟒぀かったずき(誰かがマむニングに成功したずき)、それたでの未承認トランザクションはた ずたっお末尟のブロックの䞭に远加され、さらに6ブロック远加されるず承認枈みずしおみなされる。 「ビットコむンを持っおいる」ずは、残⟌が玐付いおいる公開鍵が承認枈みブロックチェヌン の䞭に存圚し、察応する秘密鍵を持っおいお、ビットコむンネットワヌクにトランザクション を承認させるこずができる、ず⟔い換えられる。
  13. Copyright ©2017 Attracie, inc. All rights reserved. 実際の䟋 ブロック https://blockchain.info/ja/block/00000000000000000019a06680ed9e5e11d3ce6988b7c7f3562d290b6a1f0c78

    トランザクション https://blockchain.info/ja/tx/f1a8fb0b0a435eb16893adc3b23eae9380686c25aa6cd3340b69e7986ce7fe39 トランザクションはinputずoutputの2぀で構成されおい る。 inputにある資⟊がoutputに移動したこずが蚘録されお いる。 耇匏簿蚘の貞✅・借✅のようになっおいる。 input output アドレスA 1,000 アドレスB 700 アドレスC 250 䞊の䟋ではアドレスAの䞭の1,000が、BずCにそれぞれ 700,250ず぀送信されおいる。 (䜙りの50はマむナヌ⌿数料ずなる)
  14. Copyright ©2017 Attracie, inc. All rights reserved. ブロックの䞭⟝ トランザクションが連なっおいる txid

    (〈さい順に叀いものずする) むンプット アりトプット 011 txid: 001 vout: 0 value: 2.5 scriptPubKey: 0b80b4be9ff... value: 1.5 scriptPubKey: d160fbc599e... 012 txid: 005 vout: 0 value: 0.5 scriptPubKey: e3f3360fcd3... value: 0.01 scriptPubKey: 4432b19fd9c... 013 txid: 011 vout: 1 value: 1.2 scriptPubKey: 2d167ecc95b... value: 0.3 scriptPubKey: 6bf87137934...
  15. Copyright ©2017 Attracie, inc. All rights reserved. 新しいトランザクションはどのように凊理されるか 100BTC持っおいるAさんがBさ んに10BTC送⟊しようずしおい

    る。 Aさんが100BTC持っおいるずは、 Aさんの⌿元の秘密鍵に察応し た公開鍵が、⌗分に承認され おいるブロックチェヌン䞊に 蚘録されおいるずいうこず。
  16. Copyright ©2017 Attracie, inc. All rights reserved. 新しいトランザクションはどのように凊理されるか ノヌドは新芏トランザクショ ンを受け取ったら、資⟊の出

    凊であるトランザクションの 公開鍵ず、トランザクション の眲名を✐范しお同⌀⌈物か 調べる。 問題ないトランザクションで あれば他のノヌドに䌝達しお、 未怜蚌トランザクションずし お加える。
  17. Copyright ©2017 Attracie, inc. All rights reserved. 新しいトランザクションはどのように凊理されるか 各ノヌドで未怜蚌トランザク ションを把握し぀぀、他の

    ノヌドずも情報をやりずりす る。 どこかのノヌドでマむニング に成功するず、そのノヌドが 把握しおいた未怜蚌トランザ クション⌀匏がブロックに なっお、ブロックチェヌンの 最埌尟に远加される。 ブロック発掘は他のノヌドに もすぐ䌝達され、そのブロッ クに⌊っおるトランザクショ ンは未怜蚌トランザクション から陀倖される。
  18. Copyright ©2017 Attracie, inc. All rights reserved. ここたでのたずめず補⟜ • ハッシュ関数や公開鍵・秘密鍵など、蚈算機科孊やむンタヌネットで䜿われる抂念を応✀した、分散ネット

    ワヌクずなっおいる。 • ブロックチェヌンずいう圢匏のデヌタベヌスが各ネットワヌクに点圚しおいお、⌀定のルヌルに埓っお党䜓で デヌタをやりずりしながら協調しお同じ内容にしおいく。 • ブロックチェヌン䞊にはビットコむン残⟌ず公開鍵盞圓のものが蚘録されおいる。この公開鍵に察応する秘密 鍵があれば、この残⟌を送⟊できる。ビットコむンを持っおいる、ずは所持しおいる秘密鍵に察応する公開鍵 がブロックチェヌン䞊にあり、残⟌が認められおいるずいうこず。 • ブロックチェヌンは匿名だが、䞊蚘の理由でどのアドレスにいくら⌊っおるかは誰でもわかる。
  19. Copyright ©2017 Attracie, inc. All rights reserved. ここたでのたずめず補⟜ 秘密鍵・公開鍵・ビットコむンアドレス 秘密鍵

    公開鍵 ビットコむン アドレス 耇数✣成可胜 ⌀✅向に倉換 公開鍵を耇雑にハッシュ化したものがビットコむンアドレスずなる(1察1の関係)。ビットコむンアドレスから公 開鍵に戻すこずはできない。 秘密鍵から任意の数の公開鍵を䜜れる。公開鍵から秘密鍵に戻すこずはできない。 したがっお぀の秘密鍵で耇数のビットコむンアドレスを持぀こずができる。 耇数のビットコむンアドレスが同じ秘密鍵で䜜られおいるかどうかはわからない。
  20. Copyright ©2017 Attracie, inc. All rights reserved. ビットコむンのよくある指摘 電気代、無駄では マむニングに時間ずコストがかかるこずが、取匕台垳の改ざんを難しくしおいる。したがっお通貚の信頌の

    源泉ずいえる。 => ただしマむニングを䜿わないコンセンサスアルゎリズム(PoSなど)も出珟しおいる 送⟊に時間がかかるのは短くすべきでは これも䞊ず同じこずがいえる。 利䟿性ず堅牢性のトレヌドオフ。
  21. Copyright ©2017 Attracie, inc. All rights reserved. ビットコむンの課題 送⟊詰たりず⌿数料⟌隰 トランザクション

    ブロック1 ブロック2 ブロック 500,000 ... ブロックチェヌン ノヌド ノヌド ノヌド ノヌド トランザクション トランザクション 未怜蚌トランザクションのプヌル ビットコむンの送⟊が完了する=送ったトランザクションがブロッ クに⌊っお、そのブロックのあずにブロックが远加される ずい うこず。 ただしブロックは1MBたでずいう制限があり、すべおのトランザ クションが⌊るわけではない。 すぐに送りたい=先にブロックに⌊れおほしいなら⌿数料を⟃分で 増やせば良い(マむナヌが⌿数料が⟌いものを優先する) 新芏ブロック
  22. Copyright ©2017 Attracie, inc. All rights reserved. 送⟊詰たりの解決策 ✅法 特城

    デメリット ビットコむンキャッシュ(BCH) ブロックサむズを8MBに増やした。単玔に8倍のトラ ンザクションを凊理できる。 1ブロック䜜成に8倍のトランザクションをさばかな いずいけないので、ブロック䜜成者぀たりマむナヌ に負担がかかる。個⌈マむナヌが脱萜し、負担にた えられる巚⌀マむナヌがネットワヌクを独占し、䞭 倮集暩化しおしたう恐れがある。 segwit 取匕デヌタのあたり重芁でない(ず考えられおいる) 領域のデヌタを削っお別の保存領域に眮く。 ビットコむンの参加者によっお導⌊状況が倉わる。 bitflyerでは採✀されおいない。 りォレット偎がsegwit察応する必芁があり、導⌊の ⟜䞊みがそろっおいない。 ビットコむンキャッシュをsegwit察応されたビット コむンアドレスに送るず消倱する。 Lightning Network ブロックチェヌンの倖偎で⌆者間の取匕を実珟し、 最終的な結果だけブロックチェヌンに曞き蟌む。 ⌿数料が激安(0円も可胜)で、早い。 segwitの実装が前提で、そのほかにも技術的な難易 床が⟌い。