acokikoy's notes

{"勉強中":"Python","注目":"Shopify","LOVE♡":["ABARTH595","TA-GG9","Ukulele","Movable Type","ガーナ ミルクチョコレート"]} なWebディレクター

セミナー参加ログ》みんなのPython勉強会#78(Pythonistaでも気になるNFTをこっそり学ぼう!) 2022-02-17

startpython.connpass.com

聴講メモ1 -『NFTを覚えて視野を広げよう!』 田上 智裕さん(株式会社 techtec)

聴講メモ2 -『いまさら聞けないブロックチェーンの仕組み』 辻 真吾さん(Start Python Club)

20220217_TSUJI (tsjshg.info)

  • 渋谷駅前で働くデータサイエンティストのブログ (hatenablog.com) で紹介されたよ
  • PythonダウンロードサイトMD5 Sum(128bit) Hashlibモジュールを使って md5アルゴリズムハッシュ値を計算 ```python import hashlib with open('Python-3.10.2.tgz', 'br') as f: file = f.read()

    hashlib.md5(file).hexdigest() ``` → ハッシュ値が計算できるのでこれをDLサイトに書いてあるハッシュ値と照合する。同じなら改ざんされてないことがわかる。

  • Pythonの組み込み関数hash → 小さい正の整数だと入力と同じ値が返ってきちゃう 例 hash(23) → 23が返る
  • ハッシュ値を計算できないオブジェクトもある: リストとか  hash([1, 2, 3]) → エラーになる。tupleはOK。dictもOK。
  • ハッシュ関数: データのハッシュ値を計算する。同じデータに同じアルゴリズムを適用するなら同じハッシュ値が得られる。
    • データが似ていてもハッシュ値は全然違う。
    • 128bit固定長なので同じハッシュ値になる可能性はある(衝突とかコリゾンという) → Gitでもそんな話がでてきたな
    • 128ビットだと16進数で32桁
  • 暗号学的ハッシュ関数(一方向ハッシュ関数
    • hash() 関数はコレではない
    • 出力を見ても、入力が 'Cat' だとは簡単にはわからない
    • その出力になる入力'Cat'以外を簡単には探せない。'cat'とか'cats'のハッシュは似ても似つかない出力になる
  • 何に使われている?
    • サーバにパスワードを保存するとか
  • 暗号学的ハッシュ関数の種類
    • MD5は安全ではない
    • SHA(シャー): SHA0〜SHA3に大別。SHA-1は攻撃方法が知られている。2と3は今のところ安全
    • ビットコインはSHA-256を利用(SHA2の仲間)
  • ブロックチェーン
    • ブロックを数珠繋ぎにする。あるブロックには一つ前のブロックのハッシュ値が含まれる。
    • どれか1つのブロックを改ざんするとそのブロックのハッシュ値が変わる。次のブロックも変わる。。。という風にドミノ倒し的に変わるので改ざんはほぼ無理
  • ビットコインマイニングの意味
    • ハッシュ値は先頭の何桁かは連続した0である必要がある nonce(ナンス)という部分を変化させてハッシュ値の計算を繰り返す
    • block_dataとnonceからハッシュを計算して、得られたハッシュ値の頭に0が5つ並んだらOK。。。みたいな計算をする。これがマイニング。
  • 量子コンピューターの普及で、SHA2も安泰ではないが、そうなる頃にはその道の人たちがうまいこと収めるだろうからそんなに心配しなくていいよ。

聴講メモ3 -『実装の面から見るNFT』 原 裕己さん(コインチェック株式会社)

資料 https://haryu703.github.io/startpython-78/

キーワード

  • ERC721
  • Defi (Decentralized Finance)ディーファイ, 分散型金融
  • NFT と FT
    • NFTって?デジタルのなにか(画像とか)に唯一無二のIDみたいなのをくっつけたブロックチェーン上で管理されてるやつ。元画像はコピーできてもコレはできない。
  • イーサリアム(仮想通貨の方でなく。プロジェクト、プラットフォームとしての)
  • トークンエコノミー(STEPN面白そう)