1章有限体

ビットコインのプログラミングを学んでいくにあたり難題の1つになるのは、どこから始めればよいのかという点です。相互に依存するコンポーネントが多数存在するため、1つを学ぼうにもまた別の知識を学ぶ必要があり、もともと知りたかったことを理解するより前に、別のことを次々に知る必要に迫られてしまうおそれがあるのです。

本章の狙いは、みなさんがプログラミングをなるべく扱いやすい形で始められるようにすることです。一風変わっているかもしれませんが、まずは楕円曲線暗号(ECC)を理解する上で必要となる、数学の基礎から始めましょう。楕円曲線暗号の知識を押さえておくと、署名アルゴリズムや検証アルゴリズムがわかるようになります。それぞれトランザクションの仕組みの中心をなすものです。トランザクションとは、ビットコインで価値を移転する際の基本単位です。つまり、最初に有限体と楕円曲線を学ぶことで、論理的に作業を進めるために必要な概念をしっかりと理解できるようになるのです。

本章から3章までの内容は、特に数学の勉強をずっとやっていない人にとっては、苦手な野菜を食べるような感じにちょっとなるかもしれないことを先にお伝えします。ですがぜひ、そこをぐっとこらえてやり通すことをおすすめします。これからの3章で述べる概念やコードは、本書全体を通じて用いられるからです。

1.1 高等数学を学ぶ

未知の数学理論体系を勉強するなんて、少し怖いように思えるかもしれませんが、高等数学は難しいという根拠のない俗説を、本章で解消できれば幸いです。特に有限体は、たとえば代数などと比較しても、それほど専門的な数学知識を問われるものではありません。

みなさんも学校時代に、三角法の代わりに有限体を習っていたとしてもおかしくないほどですが、たまたま学校の教育課程によって、三角法のほうが学ぶ意義があると定められただけの話です。その程度の難易度と捉えてください。私の考えでは、有限体はそれほど難しくないし、代数と比べても多くの背景知識を問われるものではありません。 ...

Get プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.