NFTスマートコントラクト開発の基礎:2

前回に続き、以下の講座の受講メモを記載する。

今回のメモは、上記講座のセクション3部分に対応する。

なお、講座のコンテンツを侵害しないように原典からの引用や筆者の保有するNFTを例示するなどの配慮を行っている。

目次

MetaMask

MetaMask(メタマスク)はイーサリアム系のアカウントを管理する上で一般的に利用されているソフトウェアウォレットである。

Ethereumのウォレットは厳密に言えば鍵しか管理しておらず、etherやtokenの管理は行なっていない(残高はEthereumのノードが行なっている)。

マスタリング・イーサリアムにおいても、ウォレットは「キーチェーン(keychain)」と表現されている。

インストールしてWebサイトから接続すると、window.ethereumでEthereumのノードと接続することができる。

これはEthereum互換のJSON-RPC APIを公開するブロックチェーンと互換性を持つ。

RPC(remote procedure call)とは、プログラムから別のアドレス空間にあるサブルーチンやプロシージャを実行可能にする技術である。

手元の端末からネットワーク上の別の端末のプログラムを呼び出してコマンドを入力して処理を実行することができる。

RPCを利用するためにはリクエストとレスポンスのためのAPIと通信プロトコルが定められている必要がある。

一方でJSONは異なるプログラミング言語同士でデータ交換するためのデータ記述形式言語で、JSON RPCはJSON形式でリクエストとレスポンスを行うプロトコルになっている。

アドレス生成の仕組み

MetaMaskは現在主流である決定性(シード)ウォレットであり、1つのシードから導出された1つまたは複数の秘密鍵が入っており、シードがあれば全ての鍵を復元することができる

1つのシードキーを使って複数の鍵を作ることができる(1つのシードキーでウォレット全体のアクセス権を得られる)ので、鍵の管理が煩雑でなく、セキュリティ対策を1箇所でできるというメリットがある。

階層間決定性(Hierarchical Deterministic: HD)ウォレットであり、ツリー構造から導出された鍵が含まれる。

管理可能性の向上のためにBIP39(Bitcoin Improvement Proposal)を利用しており、覚えやすい意味のある単語の2,048個の単語リストから選ばれた並びからニーモニックをシードを生成する仕組みになっている。

ニーモニックを利用することで、例えば誤って”inzect”と書き取りのミスがあった場合に、”insect”の間違いであることを推測することができるので安全性が高い。

ニーモニック(mnemonic code, シークレットリカバリーフレーズ)を作成し、それを使ってバイナリのシードキーを導出し、シードキーを使って秘密鍵・公開鍵・アカウントアドレスを生成する。

シードキーをもとにSHA256のハッシュ関数にかけて秘密鍵を作成し、秘密鍵にECDSAを使って公開鍵を作成し、公開鍵にkeccak256というハッシュ関数をかけて得られるハッシュ値から最後の20バイト、16進数の40文字分を取り出して0xをつけるとアカウントアドレスになる。

シードキーから作った秘密鍵にハッシュ関数をかけることで秘密鍵を作ることにより、複数の秘密鍵を作ることができる。

ニーモニックコードコンバータを利用して、ニーモニックからシードキー、秘密鍵、公開鍵、アドレスを生成する体験をすることができる。

  • mnemonicの単語数を12 wordsとし、GENERATEボタンを押す。
  • 次に、CoinはETH - Ethereumを選択する。

ブラウザからブロックチェーンへの接続

OpenSeaなどのフロントエンドの先の、EVMやブロックチェーンなどのバックエンドの処理を行うためにはブロックチェーンノードが必要になる。

自らノードを立てることもできるが、技術的な難易度の高さや厳格なセキュリティが必要とされるため、通常はノードプロバイダであるInfuraやAlchemyを利用してバックエンド側の処理を行うことになる。

なお、MetaMaskはエンドポイントプロバイダとしてInfuraを利用している(どちらもConsenSysの製品)。

もちろんこれをAlchemyのRPCエンドポイントに変更することもできる。

Infura
Alchemy

Etherscan

Etherscam(イーサスキャン)はEthereum向けの主要なBlockChain Explorerなどを提供している。

Etherscan

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次