字幕表 動画を再生する 字幕スクリプトをプリント 翻訳字幕をプリント 英語字幕をプリント What does it mean to *have* a Bitcoin? ビットコインを「持つ」とはどういうことか? Many people have heard of Bitcoin that 多くの人がビットコインのことを、 it's a fully digital currency with no government to issue it; 政府が発行しないデジタル通貨で、 and that no banks need to manage accounts and verify transactions; 銀行も一切関与しないものだと理解している。 and also that no one really knows who invented it. 加えて誰も考案者の正体を知らない。 And yet, many people don't know the answer to this question, at least not in full. この疑問に対する、完璧な答えを知っている人は多くない。 To get there, 完璧な答えとその根底にある技術的な要素を実感してもらうために、 and to make sure that the technical details underlying the answer actually feel motivated, 着実に順序立てて説明するので、 what we're going to do is walk through step by step ビットコインの変種を自分で作れるレベルにまで頑張って理解してほしい。 how you might have invented your own version of Bitcoin. 元帳を使って友達との支払いの様子を記録することから始まり、 We'll start with you keeping track of payments with your friends using a communal ledger. 次第に友達を含めた周囲すべてを信じなくなり、 And then, as you start to trust your friends and the world around you less and less, 暗号論に準じた解決策をシステムに付け加えることで、 and if you're clever enough to bring in a few ideas from cryptography 性善説に頼る必要性を減らし、 to help circumvent the need for trust, 最終的に暗号通貨と呼ばれるものになる。 what you end up with is what's called a "cryptocurrency". 承知の通り、ビットコインは最初に運用が始まった暗号通貨であり、 You see, Bitcoin is just the first implemented example of a cryptocurrency. 現在では政府発行の一般的通貨よりも多くの変種が生まれている。 And now, there are thousands more on exchanges with traditional currencies. 変種を自分で作成することは、仮想的取引の上で Walking the path of inventing your own can help to set the foundations 相手が試みようとする事の認識と、どの部分で for understanding some of the more recent players in the game なぜ変種が生まれるのかについて見解を見出すことに繋がる。 and recognizing when and why there's room for different design choices. なぜこのトピックを選んだのかの理由の一つは、 In fact, one of the reasons I chose this topic is that 去年(2016年)ものすごい多くの関心を集め、取引がなされており、 in the last year, there's been a huge amount of attention and investment 暗号通貨に個人的に興奮したからである。 and, well, honestly hype directed at these currencies. 現在や未来の為替レートについて、計算したり議論するつもりはない。 And I'm not going to comment or speculate on the current or future exchange rates, しかし暗号通貨を購入しようと but I think we'd all agree that 考えている人が、その実態を正しく理解するのは当然であろう。 anyone looking to buy a cryptocurrency should really know what it is. これは別に実際の貴金属採掘と関連があるアナログ的なことではなく、 And I don't just mean in terms of analogies with vague connections to gold mining, 暗号通貨の転送時に、コンピュータが一体何をしているかの I mean an actual direct description of what the computers are doing 明瞭で的を射た説明である。 when we send, receive and create cryptocurrencies. ここで強調しておきたいのは、 One thing worth stressing, by the way, is that この動画で暗号通貨の深い領域まで探る事は、 even though you and I are going to dig into the details here, 有意義な時間とはなるが、 and that takes meaningful time, ただ暗号通貨を運用したいだけなら、詳細を知る必要はない点である。 you don't actually need to know those details if you just want to use the cryptocurrency, クレジットカードを使う際にも、裏で一体何が行われているのか知る必要はないのと同じである。 just like you don't need to know the details of what happens under the hood when you swipe a credit card. デジタル的な支払いにおいて、ユーザーフレンドリーなものは多くあり、 Like any digital payment, there're lots of user-friendly applications that 取引の最中に何が行われるのかを、全く考えずに通貨を扱える。 let you just send and receive the currencies without thinking about what's going on. 両者の違いは、後ろで支えているのが、 The difference is that the backbone underlying this 銀行か、そうではないかの点である is not a bank that verifies transactions. 銀行の代わりに、暗号論上で生み出された数学をベースに、 Instead, it's a clever system of decentralized trust-less verification 非中央集権化された認証に信用不要の賢いシステムがある。 based on some of the math born in cryptography. 実際に暗号通貨の説明に入る前に、数分ほど別の事柄に時間を割く。 But to start, これから始めるのは、より現実味がある話、元帳とデジタル署名である。 I want you to actually set aside the thought of cryptocurrencies and all that just for a few minutes. もし夕食の勘定などにおいて、 We're going to begin the story with something more down-to-earth: ledgers and digital signatures. 友達と頻繁に金銭を交換する場合、 If you and your friends exchange money pretty frequently, 貨幣をその都度交換するのは不便である。 you know, paying your share of the dinner bill and such, すると元帳という方式が生まれる。 it can be inconvenient to exchange cash all the time. これによって、その後行われる支払いのすべてを記録する。 So you might keep a communal ledger 例えば、アリスはボブに20ドル支払う、 that records all of the payments that you intend to make some point in the future. ボブはチャーリーに40ドル支払う、のように。 You know, Alice pays Bob $20, この元帳は公開されており、ウェブページのように誰でも参照できる。 Bob pays Charlie $40, things like that. 更に誰でも新たな取引記録を追加できる。 This ledger is going to be something public and accessible to everyone, 月末になると皆が集まり、 like a website, where anyone can go and just add newlines. リストを見て実際に支払いを行う。 And let's say that at the end of every month, もし受け取った額よりも多くの額を支払ったのなら、ポットに金を置く。 you all go together, look at the list of transactions and settle up. もし支払いよりも多くの受取額があるなら、ポットからその分を取る。 If you spent more than you received, you put that money in the pot; この単純明快なプロトコルの叙述は次のようになる。 and if you received more than you spent, you take that money out. 誰でも取引記録を元帳に追加できる。 So the protocol for being part of this very simple system might look like this: 月末に最終的な差し引きを現金で交換する。 anyone can add lines to the ledger; このような元帳に関わる一つの問題として、誰もが取引記録を追加できることから、 and at the end of every month you all get together and settle up. アリスの了承を得ないまま、「アリスはボブに100ドル支払う」という記録を追加できることである。 Now, one problem with a public ledger like this is that anyone can add a line, 元帳にある全ての記録が、送金者の意図があって so what's to prevent Bob from going in writing "Alice pays Bob $100" without Alice approving? 行われたものだと信頼するのは難しい。 How are we supposed to trust that all of these transactions ここで最初の暗号論的要素が入る、デジタル署名である。 are what the sender meant them to be? 手で書く署名と同じく、 Well, this is where the first bit of cryptography comes in: digital signatures. アリスは取引記録の横に何か付随するものを加える。 Like handwritten signatures, これによりアリスの意図を持って行われたことを証明する。 the idea here is that Alice should be able to add something next to that transaction 当然、誰もその署名を真似出来ないようにしなければらない。 that proves that she has seen it and that she's approved of it. するとデジタル署名というのは実現不可能のように思える。 And it should be infeasible for anyone else to forge that signature. どんなに署名が複雑でも、コンピュータがコピーしてしまえばおしまいである。 At first, it might seem like a digital signature shouldn't even be possible. どうすればこれを防げるか。 I mean, whatever data makes up that signature can just be read and copied by a computer, そのためには「公開鍵秘密鍵ペア」を全員が作成することで解決する。 so how do you prevent forgeries? 各々の鍵はビットの塊のようなものである。 Well, the way this works is that everyone generates what's called a "public key - private key pair", 「秘密鍵」は「私有鍵」とも呼ばれる。 each of which looks like some string of bits. 秘密鍵(Secret Key)は「sk」と略し、公開鍵(Public Key)は「pk」と略す。 The "private key" is sometimes also called a "secret key", 名前が指し示す通り、秘密鍵は本人しか知り得ないものである。 so that we can abbreviate it as "sk", while abbreviating the public key is "pk". 現実世界において、手書きの署名は時と場所にかかわらず、ほぼ同じ形になるが、 Now as the name suggests, this secret key is something you want to keep to yourself. デジタル署名はより強力で、 In the real world, your handwritten signature looks the same no matter what document you're signing. 記録ごとに違うものになる。 But a digital signature is actually much stronger, 署名は0と1の連続であり、大体256ビットである。 because it changes for different messages. 署名する記録が少しでも異なれば、 It looks like some string of ones and zeros, commonly something like 256 bits; その署名は全く異なるものになる。 and altering the message even slightly より正確に言えば、 completely changes what the signature on that message should look like. 署名の生成には記録と秘密鍵を引数とする関数を用い、 Speaking a little more formally, この秘密鍵が署名の発行が本人のものであると保証する。 producing a signature involves a function that depends both on the message itself and on your private key. また、署名が記録に依存することは、 The private key ensures that only you can produce that signature, 他の記録にある署名を単純にコピーすることはできないことを意味する。 and the fact that it depends on the message 二つ目の関数は、これと対になるもので、署名の認証を行う。 means that no one can just copy one of your signatures and then forge it on another message. ここで公開鍵が威力を発揮する。 Hand-in-hand with this is a second function used to verify that a signature is valid. 戻り値は「真」か「偽」で、 And this is where the public key comes into play. 署名が認証に使用した公開鍵に対応する All it does is output "true" or "false" 秘密鍵で生成されたかどうかを示す。 to indicate if this was a signature produced by the private key この二つの関数がどのように動作するかの詳細は説明しないが、 associated with the public key that you're using for verification. 秘密鍵がなければ正当な署名を生成するのが事実上不可能というアイデアは、 I won't go into the details of how exactly both these functions work, 理解していただけると思う。 but the idea is that it should be completely infeasible to find a valid signature つまり署名を偽造するのに、適当に署名を作り出し、すでに知っている公開鍵を使って、 if you don't know the secret key. 正当性をチェックする以外の方法はない。 Specifically, there's no strategy better than just guessing and checking random signatures, さて256ビット長の署名が取りうる値の大きさはどれ位か。 which you can check using the public key that everyone knows. それは2の256乗である。 Now think about how many signatures there are with a length of 256 bits, これはとてつもなく大きな数で、 that's 2^256. 天文学的数字と呼んでもまだ真の大きさを表していない程である。 This is a stupidly large number. これに関して、その大きさを表現する補足動画を作成したので、そちらを参照してほしい。 To call it astronomically large would be giving way too much credit to astronomy. ここでは、受け取った記録と In fact, I made a supplemental video devoted just to illustrating what a huge number this is. その署名が正当であると保証されたとき、 Right here, let's just say that その生成に対応する秘密鍵が使われたことを、全く疑いなく when you verified that a signature against a given message is valid, 信用することが出来るとだけに留めておく。 you can feel extremely confident that the only way someone could have produced it 皆がこのルールに従って元帳に記録する時、 is if they knew the secret key associated with the public key you used for verification. 一つ問題点がある。 Now making sure that people sign transactions on the ledger is pretty good, アリスが「アリスはボブに100ドル支払う」という記録を付けたとき、 but there's one slight loophole: 新たな記録にボブは署名を加える事はできないが、 if Alice signs a transaction, like "Alice pays Bob $100", その記録自体を何回もコピーすることはできる。 even though Bob can't forge Alice's signature on a new message, 記録と署名はすでに認証されている。 he could just copy that same line as many times as he wants. これを防ぐため、記録を付ける度に、 I mean, that message-signature combination remains valid. 各々特別な符号を作り、その符号を記録に含めることにする。 To get around this, what we do is make it so that when you sign a transaction, これにより、もし実際にアリスがボブに複数回100ドル支払ったとき、 the message has to also include some sort of unique ID associated with that transaction. 各々の記録につく署名は完全に異なるものになる。 That way, if Alice pays Bob $100 multiple times, 素晴らしい。 each one of those lines on the ledger requires a completely new signature. デジタル署名は、元々のプロトコルにある性善説の考え方を取り除く。 All right, great! しかし、実際にこの方式を運用すると、 Digital signatures remove a huge aspect of trust in this initial protocol, まだ人々の信頼に頼っていることに気づく。 but even still, if you were to really do this, つまり皆が元帳に記録に従って、 you would be relying on an honor system of sorts. 月末に現金の交換をすることを信じている。 Namely, you're trusting that everyone will actually follow through 例えばチャーリーが多額の借金を溜め込んだとして、 and settle up in cash at the end of each month. そのまま逃げたらどうだろう。 What if, for example, Charlie racks up thousands of dollars in debt 月末の現金のやり取りが破綻する決定的な理由は、 and just refuses to show up. (チャーリーのような)ある人が負債を負った場合である。 The only real reason to revert back to cash to settle up 保有する金銭よりも多くの額を使わせないように、 is if some people (I'm looking at you, Charlie) owe a lot of money. そして現金のやり取りをする必要性をなくすために、 So maybe, you have the clever idea that you never actually have to settle up in cash, 皆が始めからポットに100ドルを入れるとする。 as long as you have some way to prevent people from spending too much more than they take in. 元帳にその事をまず記録する。 Maybe what you do is start by having everyone pay $100 into the pot, 「アリスは100ドルを得る」、「ボブは100ドルを得る」、「チャーリーは100ドルを得る」のように。 and then have the first few lines of the ledger read ここで各々が元帳において保持している額を超えるような "Alice gets $100", "Bob gets $100", "Charlie gets $100", etc. 金額を指定する取引は受け入れないこととする。 Now, just don't accept any transactions 例えば、最初の二つの取引が、 where someone is spending more than they already have on that ledger. 「チャーリーはアリスに50ドル支払う」、「チャーリーはボブに50ドル支払う」の時、 For example, if the first two transactions are 更に「チャーリーはあなたに20ドル支払う」と付け足すことはできない。 "Charlie pays Alice $50" and "Charlie pays Bob $50", 署名がないのと同様の扱いである。 if he were to try to add "Charlie pays you $20", that would be invalid, 結果的に取引の認証には、 as invalid as if he had never signed it. 関連する以前の取引すべての情報が必要となる。 Notice, this means that verifying a transaction この事は暗号通貨においても、若干適応される。 requires knowing the full history of transactions up to that point. 最適化の余地はまだあるが。 And this is more or less also going to be true in cryptocurrencies, 興味深いのは、 though there is a little room for optimization. これによって元帳と物理的な米ドルとの関係が消えたことである。 What's interesting here is that 理論的には、世界の全員がこの元帳に従えば、 this step removes the connection between the ledger and actual physical US Dollars. 実際の米ドルに両替することなく、 In theory, if everyone in the world was using this ledger, 元帳の上での取引だけで人生を過ごすことができる。 you could live your whole life just sending and receiving money on this ledger この事実をより明確に強調するため、 without ever having to convert to real US Dollars. 元帳での額の量を元帳ドル(LD)としよう。 In fact, to emphasize this point, もちろん元帳ドルと米ドルの両替は自由である。 let's start referring to the quantities on the ledger as "ledger dollars", or "LD" for short. 例えば、アリスがボブに10ドルを現実世界で渡し、 You are, of course, free to exchange ledger dollars for real US Dollars. その対価として、「ボブはアリスに10元帳ドル支払う」を、 For example, maybe Alice gives Bob a $10 bill in the real world ボブは元帳に署名付きで追加する。 in exchange for him adding and signing the transaction しかしこの様な両替はプロトコルによって保証されていない。 "Bob pays Alice 10 LD" to this communal ledger. 米ドルをユーロに替えたりするのと同じく、 But exchanges like that, they're not going to be guaranteed by the protocol. アナログ的である。 It's now more analogous to how you might exchange dollars for Euros, これは別の領域の問題である。 or any other currency on the open market, ビットコインや、その他暗号通貨に関して最初に理解する必要がある事は、 it's just its own independent thing. その実態は元帳であり、取引の歴史自体が通貨である事である。 This is the first important thing to understand about Bitcoin or any other cryptocurrency: ビットコインの仕組みの中では、 what it is is a ledger, the history of transactions is the currency. 当然の事ながら、現実の貨幣が元帳と一切関わっておらず、 Of course, with Bitcoin, 暗号通貨のみで完結している。 money doesn't enter the ledger with people buying in using cash. その説明に入る前に、元帳ドルと暗号通貨の間には I'll get to how new money enters the ledger in just a few minutes, 大きな違いがあることを示しておく。 but before that, there's actually an even more significant difference 先程、この元帳はウェブページのように公開されており、 between our current system of ledger dollars and how cryptocurrencies work. 誰でも記録を追加できると説明した。 So far, I've said that this ledger is in some public place, しかしこれでは信頼できる中心機関が必要となる。 like a website, where anyone can add newlines. 問題は「誰が保管するのか?」 But that would require trusting a central location, 「誰が記録のルールを管理するのか?」である。 namely "who hosts the website?", 信頼の必要性を消すため、皆が元帳のコピーを持つこととする。 "who controls the rules of adding new lines?". これでアリスがボブに100元帳ドル支払うなどの取引を追加したら、 To remove that bit of trust, we'll have everybody keep their own copy of the ledger. そのことを世界全体に伝えて、 Then when you want to make a transaction, like Alice pays Bob 100 LD, 人々が各々の持つ元帳を更新できるようにする。 what you do is broadcast that out into the world しかしこれでは、システム全体が簡単に崩壊する。 for people to hear and to record on their own private ledgers. 今現在正しい元帳がどれかを確かめるすべがない。 But, unless you do something more, this system is absurdly bad. ボブが、アリスがボブに10元帳ドル支払うなどの取引記録を受け取ったとき、 How could you get everyone to agree on what the right ledger is? ボブ以外の全員が同じ記録を受け取ったかどうか確かめられない。 When Bob receives a transaction, like Alice pays Bob 10 LD, これではその10元帳ドルを使ってチャーリーと取引することも難しい。 how can he be sure that everyone else received and believes that same transaction ただ取引記録を聞くだけの立場にいると想像してほしい。 that he'll be able to later on go to Charlie and use those same 10 LD to make a transaction? 自分以外の全員が全く同じ順序で全く同じ取引を記録しているか確信できない。 Really, imagine yourself just listening to transactions being broadcast, これは深刻な問題で、 how can you be sure that everyone else is recording the same transactions and in the same order? 解決しがいがある。 This is really the heart of the issue. 取引の認証と拒否をしながらも、同じプロトコルの使用者全員が、 This is an interesting puzzle. 常に同様の元帳のコピーを持っていることを、 Can you come up with a protocol for how to accept or reject transactions 保証してくれるようなプロトコルの設計を、 and in what order so that you can feel confident that どの様にすれば出来るだろうか。 anyone else in the world who's following that same protocol これは最初のビットコインの提案書で肝心となっていた点である。 has a personal ledger that looks the same as yours? ビットコインが提供する精錬された解決方法は、 This is the problem addressed in the original Bitcoin paper. 最も計算量の多いワークが含まれている元帳を信用するというものである。 At a high level, the solution that Bitcoin offers is これが何を意味するかの説明には少し時間がいる。 to trust whichever ledger has the most computational work put into it. まず「暗号論的ハッシュ関数」の知識が必要になる。 I'll take a moment to explain exactly what that means, このアイデアの目的は、 it involves this thing called a "cryptographic hash function". 信頼性の確認するため、計算量の多いワークを使うことで、 The general idea that we'll build to 不正な取引や元帳の競合を起こさせるのを、 is that if you use computational work as a basis for what to trust, 極めて困難にすることである。 you can make it so that fraudulent transactions and conflicting ledgers しつこいようだが、ただ暗号通貨を使う分には、 would require an infeasible amount of computation to bring about. 全く理解する必要のない仕組みである。 Again, I'll remind you that this is getting well into the weeds ただこのアイデアは面白い。 beyond what anyone would need to know just to use a currency like this, 理解できれば、ビットコインやその他すべての暗号通貨の根幹を理解できたことになる。 but it's a really cool idea! まず始めに、ハッシュ関数とは何か。 And if you understand it, you understand the heart of Bitcoin and all other cryptocurrencies. 関数の入力は如何なる値も取る事ができる。 So first things first, what's a hash function? そこに問題はない。 The inputs for one of these functions can be any kind of message or file, 出力は256ビットのような一定の長さを持つビット列である。 it really doesn't matter. この出力結果を「ハッシュ」または記録の「要約値」と呼ぶ。 And the output is a string of bits with some kind of fixed length, like 256 bits. 出力はランダムに見える。 This output is called the "hash" or the "digest" of the message. 実際にはランダムではなく、同じ入力に対して常に同じ出力を返す。 And the intent is that it looks random. 重要なのは、 It's not random - it always gives the same output for a given input. 入力をほんの少しだけでも変えたときには、 But the idea is that 出力が全く別物になることである。 if you slightly change the input, maybe editing just one of the characters, いま紹介しているのはSHA256というハッシュ関数である。 the resulting hash changes completely. 入力の違いによる出力の相違点は完全に予測不能である。 In fact, for the hash function that I'm showing here, called SHA256, これはハッシュ関数の特徴ではなく、 the way the output changes as you slightly change that input is entirely unpredictable. 暗号論的ハッシュ関数の特徴である。 You see, this is not just any hash function, つまり、逆の計算をコンピュータがするのが不可能という意味である。 it's a cryptographic hash function. もし適当なゼロとイチの列を見せられて、 That means it's infeasible to compute in the reverse direction. SHA256で計算すると、 If I show you some string of ones and zeros, 出力がその列と完全に一致するような、入力を特定しろと言われたとき、 and ask you to find an input ただ予想して確認するのを繰り返す以外の解き方はない。 so that the SHA256 hash of that input gives this exact string of bits, 先に述べた通り、2の256乗分の1の確率というのが一体どれくらい想像を絶する物なのかは、 you will have no better method than to just guess and check. 補足動画で確認してほしい。 And again, if you want to feel for how much computation would be needed to go through 2^256 guesses, とても楽しい動画に仕上がっている。 just take a look at the supplement video. 更に深い領域に進んで、この関数の中身を正確無比に完全理解すれば、 I actually had way too much fun writing that thing. 予想と確認を繰り返さずに、出力を得る方法が見つかるかもしれない。 You might think that if you just really dig into the details of how exactly this function works, しかし誰も達成できていない。 you could reverse engineer the appropriate input without having to guess and check. 面白いのは、逆の計算が非常に難しいという事を厳密には証明できていないという点である。 But no one has ever figured out a way to do that. しかし現代のセキュリティは、 Interestingly, there's no cold hard rigorous proof that it's hard to compute in the reverse direction. 暗号論的ハッシュ関数の特性に深く依存している。 And yet, a huge amount of modern security 銀行のサイトにアクセスしているときや、 depends on cryptographic hash functions and the idea that they have this property. 今YouTubeとブラウザの間で行われているセキュア通信の If you were to look at what algorithms underlie the secure connection 中身を探れば、 that your browser is making with YouTube right now, SHA256という名前が見受けられると思う。 or that it makes with your bank, これからフォーカスを当てていく部分は、 you will likely see the name SHA256 show up in there. このような関数がどのようにして、特定の取引の記録列が、 For right now, our focus will just be on 莫大な計算量の結果としれ生まれたものだと保証するかである。 how such a function can prove that a particular list of transactions 想像してほしい。誰かが記録列を見せて来て、次のように言う。 is associated with a large amount of computational effort. 「すごい数値を見つけたぞ。 Imagine someone shows you a list of transactions, and they say この数値を記録列の最後において、 "Hey! I found a special number SHA256を全体に適用すると、 so that when you put that number at the end of this list of transactions 出力の最初の30桁が全てゼロになる。」 and apply SHA256 to the entire thing, その数値を探り出すのにどれくらいの労力が必要だろうか。 the first 30 bits of that output are all zeros!" 記録はランダムだから、 How hard do you think it was for them to find that number? 30のゼロの列が始めに来る確率は、2の30乗分の1であり、 Well, for a random message, 10億分の1に近似できる。 the probability that a hash happens to start with 30 successive zeros is 1 in 2^30, SHA256は暗号論的ハッシュ関数なので、 which is about one in a billion. この様なすごい数値を求めるには、予想と確認を繰り返すしかない。 And because SHA256 is a cryptographic hash function, よってこの人はこの数値を発見するのに10億に近い数値を相手に、 the only way to find a special number like that is just guessing and checking. 努力したと言える。 So this person almost certainly had to go through about a billion different numbers だが一度その数値を知ってしまえば、 before finding this special one. 確認するのは非常に簡単である。ハッシュ関数を使って、30のゼロがあることを見れば良い。 And once you know that number, 言い換えれば、大変多くのワークを行ったことを確かめる時、 it's really quick to verify - you just run the hash and see that there are 30 zeros. 同じ努力をせずに検証できる。 So in other words, you can verify that they went through a large amount of work, これを「プルーフ・オブ・ワーク」と呼ぶ。。 but without having to go through that same effort yourself. 覚えておきたいのは、このワークは記録列に強烈に依存しており、 This is called a "proof of work". 記録列のごく一部でも変えてしまえば、 And importantly, all of this work is intrinsically tied to the list of transactions. ハッシュも完全に変わってしまう。 If you change one of those transactions, even slightly, こうなってしまえば、新たなプルーフ・オブ・ワークを見つけるために、 it would completely change the hash, 再び億単位の作業を行って、 so you'd have to go through another billion guesses to find a new proof of work, ハッシュの始めが30のゼロになるようにしなければならない。 a new number that makes it 分散型元帳の話に戻ろう。 so that the hash of the altered list together with this new number starts with 30 zeros. 皆が取引記録を配信する際、 So now think back to our distributed ledger situation: 今現在正しい元帳とは何かを定める手段がいる。 everyone is there broadcasting transactions, 先に述べたとおり、最初のビットコインの提案書に書かれた解決策は、 and we want a way for them to agree on what the correct ledger is. 最も計算量の多いワークを持つ元帳を信頼するということである。 As I said, the core idea behind the original Bitcoin paper この仕組を成り立たせるため、元帳をブロック列と見立て、 is to have everyone trust whichever ledger has the most work put into it. 各ブロックには一連の取引記録と、その末尾にプルーフ・オブ・ワークを入れる。 The way this works is to first organize a given ledger into blocks, プルーフ・オブ・ワークの定義から、全てのブロックのハッシュは長いゼロの列で始まる。 where each block consists of a list of transactions together with a proof of work, 暫くの間、必要な連続するゼロの数は60としよう。 that is a special number so that the hash of the whole block starts with a bunch of zeros. 後に適切なゼロの数を選ぶための、より系統的な方法について説明する。 For the moment, let's say that it has to start with... 60 zeros, 個別の取引記録は、送信者による署名によって妥当性が確認され、 but later we'll return back to a more systematic way you might want to choose that number. ブロックは、プルーフ・オブ・ワークによって妥当性が確認される。 In the same way that a transaction is only considered valid when it's signed by the sender, このブロック列の正当な順番を定めるために、 a block is only considered valid if it has a proof of work. 各ブロックの先頭に前のブロックのハッシュを入れる事とする。 And also, to make sure that there's a standard order to these blocks, これでもしブロックの何処か一部の内容を変えたり、 we'll make it so that a block has to contain the hash of the previous block at its header. 順番を変えようとすれば、 That way, if you were to go back and change any one of the blocks そのブロックのハッシュが変わり、 or to swap the order of two blocks, 後ろのハッシュと合わなくなり、 it would change the block that comes after it, そのブロックのハッシュも変わり、これが最後まで続く。 which changes that block's hash, つまり全てのワークをやり直すことになる。 which changes the one that comes after it, and so on. 各々のブロックにおいてハッシュが60のゼロの列で始まるような値を再び探す。 That would require redoing all of the work, このようなブロック列はチェーン(鎖)の様に見える事から、 finding a new special number for each of these blocks that makes their hashes start with 60 zeros. 元帳と呼ぶ代わりに「ブロックチェーン」と呼ぶことにする。 Because blocks are chained together like this, 強化されたプロトコルの実現のため、 instead of calling it a ledger, it's common to call it a "blockchain" ブロックの作成者という、誰にでも出来る立場を用意する。 As part of our updated protocol, 作成者は送られてくる取引記録を集めて、 we'll now allow anyone in the world to be a block creator. ブロックに収納する。 What that means is that they're going to listen for transactions being broadcast, そしてワークを行う。 collect them into some block, ハッシュの始めが60のゼロの列で始まるような値が見つかれば、 and then do a whole bunch of work そのブロックを配信する。 to find a special number that makes the hash of that block start with 60 zeros. 作成者にはワークの報酬として、 And once they find it, they broadcast out the block they found. ブロックの作成時、 To reward a block creator for all this work, 記録の先頭に自身を主語に特別な記録をつけることを許可する。 when she puts together a block, 例えば10元帳ドル得るなど。 we'll allow her to include a very special transaction at the top of it, これを「ブロック報酬」と呼ぶ。 in which she gets, say 10 LD, out of thin air. これについては、議論していた一般的な取引記録と異なる例外であり、 This is called the "block reward", 取引元がないので、署名の必要がない。 and it's an exception to our usual rules about whether or not to accept transactions. また、これは新たなブロックが作成される毎に、体系全体の元帳ドルの数が増加する事を意味する。 It doesn't come from anyone, so it doesn't have to be signed. ブロックの作成は、沢山のワークが必要で、 And it also means that the total number of ledger dollars in our economy increases with each new block. 新たな利益をもたらす事から、 Creating blocks is often called "mining", 「採掘」とも呼ばれる。 since it requires doing a lot of work 採掘者に関して承知しておきたいのは、 and it introduces new bits of currency into the economy. 採掘者が実際にしている事は、 But when you hear or read about miners, 取引記録を集め、ブロックを作り、 keep in mind that what they're really doing is そのブロックを配信して、その過程で報酬を得ているという事である。 listening for transactions, creating blocks, 採掘者の視点からすれば、ブロックは小型宝くじのような物であり、 broadcasting those blocks, and getting rewarded with new money for doing so. 皆が要件を満たすの数を探すのを競い、 From the miner's perspective, each block is kind of like a miniature lottery, 誰かが運良く一連のゼロの列を作り出すような、 where everyone is guessing numbers as fast as they can 特殊な数を見つければ、その採掘者には until one lucky individual finds a special number 報酬が得られる。 that makes the hash of the block start with many zeros, ただ支払いの手段として活用しようとしている人からすれば、 and they get the reward. 取引記録を集める代わりに、 For anyone else who just wants to use the system to make payments, 採掘者から送られたブロックを集めれば事足りる。 instead of listening for transactions, あとは個人でブロックチェーンを更新すれば良い they all start listening just for blocks being broadcast by miners, 更に重要なプロトコルの更新点として、 and updating their own personal copies of the blockchain. もし競合する取引履歴を持つ二つの異なるブロックチェーンがあった時、 Now the key addition to our protocol is that より長い、より計算量の多いワークを持つ方に従うという点である。 if you hear two distinct blockchains with conflicting transaction histories, 長さが同じならば、片方がより長くなる様な追加ブロックを待てば良い。 you defer to the longest one, the one with the most work put into it. このシステムには中心機関がなく、皆が個人でブロックチェーンのコピーを持っている。 If there's a tie, just wait until you hear an additional block that makes one of them longer. そして皆が、最も計算量の多いワークを持つブロックチェーンに従うことを認めれば、 So even though there's no central authority and everyone is maintaining their own copy of the blockchain, 総意に基づく非中央集権的な体系が完成する。 if everyone agrees to give preference to whichever blockchain has the most work put into it, このシステム体系が信頼に値するものである事と、 we have a way to arrive at decentralized consensus. 支払いが正当と見なせるのはどのタイミングなのかを理解するために、 To see why this makes for a trustworthy system, 逆にこのシステムを使って悪事を働くことが出来るか試してみよう。 and to understand at what point you should trust that a payment is legit, アリスがボブに嘘のブロックを送りつけるとする。 it's actually really helpful to walk through exactly what it would take to fool someone using this system. そのブロックには、アリスはボブに100元帳ドル支払うと付け加える。 Maybe Alice is trying to fool Bob with a fraudulent block, ここでネットワーク全体に配信しない限り、 namely she tries to send him one that includes her paying him 100 LD 他の人から見れば、アリスはまだ100元帳ドルを持っていると考える。 but without broadcasting that block to the rest of the network. この作業を遂行するためには、他の採掘者よりも早くプルーフ・オブ・ワークを That way, everyone else still thinks that she has those 100 LD. 見つけ出さなければならない。 To do this, she would have to find a valid proof of work before all of the other miners, 有り得ない事ではない。 each working on their own block. アリスは運良く小型宝くじに最速で当選したのである。 And that could definitely happen! しかしボブはその後も他の採掘者からの配信を注視し続ける。 Maybe Alice just happens to win this miniature lottery before everyone else. ボブにこの嘘のブロックを本物と思わせるために、 But Bob is still going to be hearing the broadcasts made by other miners, アリスはその後のワーク全てを一人で行い、 so to keep him believing this fraudulent block, ボブの持つブロックチェーンの内、偽の方のブロック列を続けさせる必要がある。 Alice would have to do all of the work herself このブロック列は、他の採掘者から送られるブロック列とは全く異なる。 to keep adding blocks on this special fork in Bob's blockchain. 思い出してほしい、プロトコルの仕組みから、ボブは最も長いチェーンを信用する。 It's different from what he's hearing from the rest of the miners. アリスは数ブロック位なら追いつけるかもしれない。 Remember, as per the protocol, Bob always trusts the longest chain that he knows about. ネットワーク上の全ての採掘者よりも、 Alice might be able to keep this up for a few blocks たまたま早くブロックを作れればの話だが。 if, just by chance, she happens to find blocks more quickly それでも、全採掘者の計算能力の半分以上をアリスが持っていない限り、 than the rest of the miners on the network all combined. その可能性は減少する。 But unless she has close to 50% of the computing resources among all of the miners, 他の採掘者が作業しているブロックチェーンは、 the probability becomes overwhelming アリスの嘘のブロックチェーンよりも早く伸びるからである。 that the blockchain that all of the other miners are working on 十分な時間が過ぎた後に、ボブはアリスから送られたブロック列を切り捨て、 grows faster than the single fraudulent blockchain that Alice is feeding to Bob. 他の採掘者が伸ばしていた方を信用する。 So, after enough time, Bob's just going to reject what he's hearing from Alice この事から、新たに追加されたブロックをその地点ですぐに信用する必要はない。 in favor of the longer chain that everyone else is working on. その代わりに、暫くその後ろに新たに続くブロックを見守って、 Notice, that means that you shouldn't necessarily trust a new block that you hear immediately; もしより長いブロックチェーンが見つからなければ、 instead, you should wait for several new blocks to be added on top of it. その時にはそのブロックを、他の人が持つ同じブロックチェーンの一部と信用して良い。 If you still haven't heard of any longer block chains, 主要なアイデアが出揃った。 you can trust that this block is part of the same chain that everyone else is using. プルーフ・オブ・ワークを基盤にした分散型元帳システムは、 And with that, we've hit all the main ideas. ビットコインやその他多くの暗号通貨の基本となる仕組みである。 This distributed ledger system based on a proof of work まだ少しばかり追記する部分がある。 is more or less how the Bitcoin protocol works and how many other cryptocurrencies work. 先程、プルーフ・オブ・ワークとは60のゼロの列が先頭に来る There's just a few details to clear up. ハッシュを作り出す値を探す事だと説明した。 Earlier, I said that the proof of work might be to find a special number 実際のビットコインのプロトコルでは、必要なゼロの数は変動する。 so that the hash of the block starts with 60 zeros. それで新たなブロックの生成にかかる時間を平均10分になるよう調整する。 Well, the way the actual Bitcoin protocol works is to periodically change that number of zeros もしより多くの採掘者がネットワーク上にいた場合、 so that it should take on average 10 minutes to find a new block. 要件はより厳しくなる。 So as there are more and more miners added to the network, これで大体10分の間に一人、小型宝くじに当選する人がいる様にする。 the challenge actually gets harder and harder, 後発の暗号通貨はもっと短い期間を採用している場合が多い。 in such a way that this miniature lottery only has about one winner every 10 minutes. ビットコイン上にある通貨は全てブロック報酬によって生まれている。 Many newer cryptocurrencies actually have much shorter block times than that. 最初のブロック報酬は1ブロックにつき50ビットコインであった。 And all of the money in Bitcoin ultimately comes from some block reward. これに関して「Block Explorer」という素晴らしいサイトがあり、 In the beginning, these rewards were 50 Bitcoin per block. ビットコインのブロックチェーンの成り行きを簡単に閲覧できる。 There's actually a great website you can go to called "Block Explorer" 一番最初のブロックを参照してみると、 that makes it easy to look through the Bitcoin blockchain. 取引記録が無く、50ビットコインの報酬だけが記録されている。 And if you look at the very first few blocks on the chain, 実は21万ブロックごとに、得られる報酬は半減する。 they contain no transactions other than that 50 Bitcoin reward to the miner. 大体4年ごとである。 But every 210000 blocks, which is about every 4 years, 2017年現在、報酬は12.5ビットコインである。 that reward gets cut in half. この報酬の減少は永久に続いていくわけだから、 So right now, the reward is 12.5 Bitcoin per block. 2100万ビットコインが存在できる上限である事が分かる。 And because this reward decreases geometrically over time, ただし、採掘者が通貨を獲得できなくなるという事は無い。 it means there will never be more than 21000000 Bitcoin in existence. ブロック報酬に加えて、採掘者は取引手数料を徴収することができる。 However, this doesn't mean that miners will stop earning money. よって実は取引をした時はいつも、 In addition to the block reward, miners can also pick up transaction fees. 手数料を追加で含める事ができる。 The way this works is that whenever you make a payment, この手数料によって、採掘者はブロックにどの取引記録を入れるかを決める。 you can purely optionally include a little transaction fee with it 手数料を入れれば、採掘者に自分の取引記録を that's going to go to the miner of whichever block includes that payment. 次のブロックに入れてもらうように催促できる。 The reason you might do that is to incentivize miners ビットコインにおいては、各ブロックが保持できる記録数の上限は2400であり、 to actually include the transaction that you broadcast into the next block. これには批判も多々ある。 You see, in Bitcoin, each block is limited to about 2400 transactions, 比較として、VISAは一秒につき約1700の取引を平均で完了させている。 which many critics argue is unnecessarily restrictive. さらに一秒に2万4千の取引を完了させる能力も持っている。 For comparison, VISA processes an average of about 1700 transactions per second, ビットコインの取引完了の遅さは、より早く採掘者に自分の取引記録を and they're capable of handling more than 24000 per second. ブロックに入れてもらう様に、より多くの手数料を含める傾向に繋がる。 This comparatively slow processing on Bitcoin makes for higher transaction fees, 今回紹介した内容は、暗号通貨の全貌の一部分であり。 since that's what determines which transactions miners choose to include in a new block. カバーしきれていない所や、全く言及していない領域もある。 All of this is far from a comprehensive coverage of cryptocurrencies; しかしこの動画が、より深く探究しようとしている人に対して、 there are still many nuances and alternate design choices that I haven't even touched. 基礎となる思考を提供できていたなら幸いである。 But my hope is that this can provide a stable "wait but why" style tree-trunk of understanding 初めに述べた通り、 for anyone looking to add a few more branches with further reading. この動画作成の動機の一つは、大量の金銭が暗号通貨に流れ始めたからである。 Like I said at the start, その事について良し悪しを主張するつもりはないが、 one of the motives behind this is that a lot of money has started flowing towards cryptocurrencies. もしこのゲームに足を踏み入れようとするならば、 And even though I don't want to make any claims about whether that's a good or bad investment, 技術的な基礎知識は持っておくべきである。 I really do think that it's healthy for people getting into the game 恒例だが、Patreonでこのチャンネルを支えてくれている人達に感謝する。 to at least know the fundamentals of the technology. 誰もがこの様な形で貢献できる訳ではないのは理解している。 As always, my sincerest thanks to those of you making this channel possible on Patreon. もしそれでも支援をしたいと思っているならば、 I understand that not everyone is in a position to contribute, 一番良い方法として、 but if you're still interested in helping out, 他に興味を持ってくれそうな人にこの動画をシェアしてほしい。 one of the best ways to do that 実際強力な支援になる。 is simply to share videos that you think might be interesting or helpful to others. また、Protocol Labsにもこの動画のサポーターとして感謝の意を表する。 I know you know that, but it really does help. Protocol Labsは多くの研究開発プロジェクトを遂行している機関で、 I also want to thank Protocol Labs for their support of this video. 動画の説明文に載せたリンク先を、 This is an organization that runs a number of different research and development projects. よく査読していただくと、このビデオの内容に And if you follow some of the links I've left in the description 強い結び付きがあるのが理解していただけると思う。 to read into the details of those projects, 非中央集権化の考え方と効果は、 you'll notice some strong parallels with the concepts covered in this video. 通貨や取引履歴に限った話ではない。 The challenges and benefits of decentralization また、ハッシュ関数やデジタル署名といった暗号論上の道具は、 are by no means limited to currency and to transaction histories. より広範囲で役に立つ。 And the usefulness of tools from cryptography, like hash functions and digital signatures, 例を挙げると、Protocol Labsのプロジェクトの中で、IPFSやFilecoinなどは、 are likewise much more general. 分散型ファイルストレージを研究対象としており、 For example, a couple of Protocol Labs projects, such as IPFS and Filecoin, 技術全体とその技術の持つ可能性を広げる。 center on the idea of distributed file storage, Protocol Labsはオープンソースの考えに重点を置いており、あなたが開発者で、 which opens up a whole field of interesting challenges and possibilities. 興味があれば、既に存在する大きなコミュニティに参加できる。 For any developers among you, Protocol Labs places a very high value on open source. またフルタイムの開発者も募集している。 So if you're interested, you can join what's already a very strong community of contributors. もし開発環境がマッチしていると思ったならば、問い合わせてみてほしい。 But they're also looking to hire full-time developers. So if you think you might be a good fit there, definitely apply.
B1 中級 日本語 米 ブロック 記録 取引 暗号 アリス ハッシュ Ever wonder how Bitcoin (and other cryptocurrencies) actually work? 142 19 TG に公開 2017 年 10 月 19 日 シェア シェア 保存 報告 動画の中の単語