<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>DeFi Buffett</title>
        <link>https://paragraph.com/@defi-buffett</link>
        <description>undefined</description>
        <lastBuildDate>Tue, 21 Apr 2026 14:21:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[仮想通貨のためのデジタル署名]]></title>
            <link>https://paragraph.com/@defi-buffett/kXQHLlEDDKhKJP1kTbxT</link>
            <guid>kXQHLlEDDKhKJP1kTbxT</guid>
            <pubDate>Tue, 15 Mar 2022 11:52:01 GMT</pubDate>
            <description><![CDATA[仮想通貨に利用される重要な技術として、デジタル署名がある。デジタル署名によって受取人はトランザクションが送金者によって作成されたことを検証できるようになり、他人がなりすまして送金することを防ぐことができる。ここではRSA暗号を使ったデジタル署名の例を説明する。 まず、送金者は秘密鍵と公開鍵を生成する。2つの素数p=7, q=5をランダムに選ぶ。(p-1) * (q-1) = 24 の約数ではない任意の自然数 e=5 を選ぶ。ed % ((p-1)*(q-1)) = 1 を満たす任意の自然数 d=5 を選ぶ。e=5 と n = 7 * 5 = 35 を公開鍵として公開する。d=5, p=7, q=5 は秘密鍵として秘密にする。次に、送金者はトランザクションのハッシュ値を秘密鍵を使って署名する。暗号化したいハッシュ値を17とする。秘密鍵 d=5 と 公開鍵 n=35 を使って、17^5 % 35 = 12を暗号化したハッシュ値とする。暗号化したハッシュ値を署名としてトランザクションに付け加える。最後に、受取人はトランザクションとその署名を受け取り、検証する。復号化したい署名を12とす...]]></description>
            <content:encoded><![CDATA[<p>仮想通貨に利用される重要な技術として、デジタル署名がある。デジタル署名によって受取人はトランザクションが送金者によって作成されたことを検証できるようになり、他人がなりすまして送金することを防ぐことができる。ここではRSA暗号を使ったデジタル署名の例を説明する。</p><p>まず、送金者は秘密鍵と公開鍵を生成する。</p><ol><li><p>2つの素数p=7, q=5をランダムに選ぶ。</p></li><li><p>(p-1) * (q-1) = 24 の約数ではない任意の自然数 e=5 を選ぶ。</p></li><li><p>ed % ((p-1)*(q-1)) = 1 を満たす任意の自然数 d=5 を選ぶ。</p></li><li><p>e=5 と n = 7 * 5 = 35 を公開鍵として公開する。</p></li><li><p>d=5, p=7, q=5 は秘密鍵として秘密にする。</p></li></ol><p>次に、送金者はトランザクションのハッシュ値を秘密鍵を使って署名する。</p><ol><li><p>暗号化したいハッシュ値を17とする。</p></li><li><p>秘密鍵 d=5 と 公開鍵 n=35 を使って、17^5 % 35 = 12を暗号化したハッシュ値とする。</p></li><li><p>暗号化したハッシュ値を署名としてトランザクションに付け加える。</p></li></ol><p>最後に、受取人はトランザクションとその署名を受け取り、検証する。</p><ol><li><p>復号化したい署名を12とする。</p></li><li><p>公開鍵 e=5 と n=35 を使って、12^5 % 35 = 17を復号化した署名とする。</p></li><li><p>トランザクションのハッシュ値を計算する。</p></li><li><p>トランザクションのハッシュ値と、2.で復号化した署名が一致すれば検証成功。</p></li></ol><p>公開鍵nから秘密鍵dを推測するにはnを素因数分解する必要があり、これはp, qが十分大きいとき非現実的な計算時間がかかる。トランザクションのハッシュ値を秘密鍵で暗号化できるのは秘密鍵を知っている送金者だけなので、検証が成功すれば、受取人はトランザクションに署名したのが確かに送金者であり、他者によるなりすましではないことを確信できる。</p><p>ビットコインのホワイトペーパーを読んで、デジタル署名の重要性に気がついたため、RSA暗号を例としてデジタル署名について復習した。</p>]]></content:encoded>
            <author>defi-buffett@newsletter.paragraph.com (DeFi Buffett)</author>
        </item>
        <item>
            <title><![CDATA[ビットコインのホワイトペーパー解説]]></title>
            <link>https://paragraph.com/@defi-buffett/UcHbuZw0YItTdrQFbfTI</link>
            <guid>UcHbuZw0YItTdrQFbfTI</guid>
            <pubDate>Tue, 15 Mar 2022 11:48:58 GMT</pubDate>
            <description><![CDATA[相互に接続された匿名のコンピュータ群（P2Pネットワーク）によって新しい通貨を発行することを考える。そのようなシステムは政府やハッカーによる攻撃を受けやすいため、攻撃対象となりうる中央サーバーや本人確認機関を必要としてはならない。 通貨としての機能を果たすためには、参加者は保有残高を確認できるだけでなく、自由に送金できる必要がある。この目的のために、参加者の残高を明示的に管理するのではなく、送金の履歴（ブロックチェーン）を全て保存することを考える。 こうすることで、送金履歴をさかのぼって送金量と受取量を合計することで、各時点における残高を再現することができる。 参加者はそれぞれ秘密鍵と公開鍵を持ち、送金者はまず受取人の公開鍵と送金量を決めて取引（トランザクション）を生成する。 次に送金者は秘密鍵でそのトランザクションに電子署名を加え、ブロックチェーンにそのトランザクションを追加する。受取人は電子署名を送り主の公開鍵で検証することで、そのトランザクションが送り主によって生成されたことを確認できる。 問題は、送金者の残高が送金後もゼロ以上であることを確認できないため、残高以上の送金を...]]></description>
            <content:encoded><![CDATA[<p>相互に接続された匿名のコンピュータ群（P2Pネットワーク）によって新しい通貨を発行することを考える。そのようなシステムは政府やハッカーによる攻撃を受けやすいため、攻撃対象となりうる中央サーバーや本人確認機関を必要としてはならない。</p><p>通貨としての機能を果たすためには、参加者は保有残高を確認できるだけでなく、自由に送金できる必要がある。この目的のために、参加者の残高を明示的に管理するのではなく、送金の履歴（ブロックチェーン）を全て保存することを考える。 こうすることで、送金履歴をさかのぼって送金量と受取量を合計することで、各時点における残高を再現することができる。</p><p>参加者はそれぞれ秘密鍵と公開鍵を持ち、送金者はまず受取人の公開鍵と送金量を決めて取引（トランザクション）を生成する。 次に送金者は秘密鍵でそのトランザクションに電子署名を加え、ブロックチェーンにそのトランザクションを追加する。受取人は電子署名を送り主の公開鍵で検証することで、そのトランザクションが送り主によって生成されたことを確認できる。</p><p>問題は、送金者の残高が送金後もゼロ以上であることを確認できないため、残高以上の送金を防げないことである。これを二重支払い問題という。二重支払いを防ぐためには、送金者が送金前に必要な残高を消費していないかを、受取人が確認する必要がある。言い換えると、送金者がトランザクションに署名したことだけでなく、他の余計なトランザクションに署名していないことを確認しなければならない。</p><p>この問題を解決するには、全てのトランザクションを監視して送金者が十分な残高を保有することを確認する必要がある。 ビットコイン以前の試みでは、信頼できる第三者が全てのトランザクションを監視していた。 二重支払いが試みられた際には、最初に届いたトランザクションを採用して後から届いたトランザクションを無効とすることで対処していた。 信頼できる第三者なしにこれを実現するには、全てのトランザクションを共有し、トランザクションが届いた順番と、どのトランザクションを採用するかについて合意する必要がある。</p><p>匿名ネットワークによる合意形成の失敗例として、投票による多数決を考えよう。 もし信頼できる第三者によって参加者の本人確認ができていれば、多数決でトランザクションの順番について合意することも可能だろう。しかし匿名ネットワークにおいて一人一票を保証することはできない。コンピューターは一人で複数台を利用できるし、IPアドレスも複数取得できるためだ。</p><p>一人一票の代わりに、投票に時間のかかる計算を要求して、計算パワーに応じた多数決で合意を形成するのがProof of Work (PoW)である。 PoWでは、ある計算タスクを最初に解いた参加者が新しいトランザクションのまとまり（ブロック）を決める権利を獲得する。 具体的には、そのブロックに加えることでブロックのハッシュ値がいくつかの0ビットで始まるような整数（Nonce値）を見つけるという計算タスクである。</p><p>PoWを見つけた参加者は新しいブロックを決める権利を行使するために、Nonce値とブロックの内容を他の参加者に知らせる（ブロードキャスト）。 他の参加者はNonce値が正しいこと、トランザクションが署名されていること、そして残高が足りていることを確認し、ブロックを承認する。 もし同時にPoWを見つけた参加者がいた場合、複数のチェーンが発生することになるが、長い方を採用することにする。</p><p>わざわざ計算パワーを割いてまで新しいブロックの生成に協力するインセンティブとして、PoWを見つけた参加者には新しいコインが割り当てられる。 新しいコインの発行は徐々に減らしていくが、送金者から取引手数料を徴収することで参加者への第2のインセンティブとする。</p>]]></content:encoded>
            <author>defi-buffett@newsletter.paragraph.com (DeFi Buffett)</author>
        </item>
    </channel>
</rss>