C言語でゼロからブロックチェーンを表現出来るのか考えてみる

C言語でオリジナルのブロックチェーンを表現できるのか

出来ますね。ブロックチェーンのデーターはクラウド空間(WAN)に散らばっているのですが、チェーンのように結ばれています。それゆえに、最初のブロックを自分とすれば、すべてそこから追うことができるように、自身のコンピューター内にブロックのリンクリストを創ることができれば、十分に表現できるでしょう。

つまり、ブロックチェーンは、リストのネットへの投射にあたるわけです。

リンクリストのアルゴリズムは基本であって、それだけでは不足です。

コンピューター内部のメモリ空間とストレージ空間を使って、数多くのブロックデーターをリンクリストの形でチェーン連結できるのは良いとして、それをネット空間に投射するためには、ネットワークプログラミングの知識やソケットのプログラミングスキルが必要になりますが、それは、学習すれば良いので、今回は言及しません。

暗号化技術も必要です。

暗号化せず、ブロックデーターをクラウド空間にばら撒けば、危険なのはわかりますね。それゆえ、データーをダウンロードできても、暗号が溶けなければ利用できないようにする必要があります。これも別に学習する必要がありますね。

ブロックデーターを考えていけば、最低でもダブルKey方式の暗号でなければ管理しきれません。これは、ブロックの構造体を考えていると自然に思いつく問題ですので、勉強になると思います。今回は実装しませんけれど。^^;

今回のC言語テーマは、ブロックのリンクリストをPC上に作り出すことです。

つまり、ブロックチェーンの発行の基本部分を自分で作り出してみようという学習です。これにより、暗号通貨などに応用されているブロックチェーンを考察できますね。^p^;

まずは最初のデーター表現を考えてみました。^^;

#define BCNULL (struct BClink *)NULL

typedef struct BClink{
struct BClink *prev ;
struct BClink *next ;
char hashcode[512]; // ハッシュ化した自身のアドレスを暗号第一keyとして格納予定。第二Keyは別管理
long myip;
long nextip;
long previp;
/* Block DATA */
// ブロックデーターを取り出すにはハッシュコードを要求される仕組みにする。
} BCLINK;

 

とこんな感じでしょうか? エラーはありません。

詳細な説明は、コースの動画で行いますので、この記事では省きますが、解る方が見れば、なるほどだとおもいます。^@^;

Udemyの動画教材として出す予定です

C言語によるチーム開発入門(仮称)は2019の1月中にUdemyから出す予定です。よろしくおねがいします^^;