モティオの開発備忘録

ITエンジニアとして働いています。

PHPで考える連結リスト(Linked List)

最近、アルゴリズムの勉強を始めたのですが、そこで出てきたLiked Listというものについて、私が普段扱っているPHPで解説しているサイトはないかなと探していたのですが、いいサイトがありました。

(Singly) Linked Lists explained in PHP | doeken.org

 

Solidity覚書 修飾子まとめ

private

コントラクト内の他の関数からのみ呼び出すことができる

 

internal

定義元のコントラクトを継承したコントラクト内からも呼び出すことができる。

 

external

定義元のコントラクトの外部からのみ呼び出すことができる。

 

public

コントラクト内外のどこからでも呼び出すことができる。

 

view

この修飾子がついた関数を実行した際に、ブロックチェーン上にデータが保存されたり、データが変更されることはないことを示す。この関数が実行される際には、ガスは消費されない。しかし、内部の他の関数から呼び出される場合にはガスを消費することになる。

 

pure
この修飾子がついた関数を実行した際に、ブロックチェーン上にデータを保存することはないことに加え、ブロックチェーン上のデータを読み込むことができることを示す。こちらも、viewと同様、関数実行時にガスを消費しないが、内部の他の関数から呼び出される場合にはガスを消費することになる。

 

Solidity覚書 Storageは高コスト

Storageデータは永遠にブロックチェーン上に保持しておかないといけないデータになるため、すべてのノードがハードウェア上で情報を保持しておかないといけません。
そうなると、コストがかかってくるわけです。

Solidity覚書 関数修飾子view

view関数は、外部から呼び出されたときにはガス代がかかりません。

 

その理由は、view関数はブロックチェーン上のデータを変更することはなく、ブロックチェーン上のデータを読み取るだけの関数であるからです。

 

しかし、view関数が定義されたコントラクトの他の関数から内部的に呼び出された場合は、ガス代がかかります。それは呼び出し先の関数がトランダクションを作成するため、すべてのノードから検証される必要があるからです。

 

view関数は外部から呼び出される分にはガス代がかかりません。

ガス代がかからない外部からのみ呼び出せる関数として定義するために関数修飾子にexternal viewをつけて定義します。

ブロックチェーンの仕組みを理解するのによいサイトを見つけた話

会社がブロックチェーン事業に力を入れていることもあり、自分も将来的にはブロックチェーンの案件で仕事ができるようになりたいと思っているこの頃です。

だが、ブロックチェーンについて漠然と知っている程度でその仕組みやすごさもよくわからなかった。そんなときに見つけたサイトが「EnterChain」です。

EnterChain

このサイトでは、javascriptでコーディングをしながらオリジナルの仮想通貨を作成し、ブロックチェーンの基本的な仕組みについて学ぶことができます。実際に手を動かしながら、簡易的にブロックチェーンの仕組みを理解できるのでとても役立ちました。

 

ブロックチェーンの仕組みについて知りたい人はぜひ登録して、カリキュラムを受講してみるのをお勧めします。