akiyoko blog

akiyoko の IT技術系ブログです

「ビットコインとか勉強会#9」に参加してきました

会場

Yahoo! LODGE
東京都千代田区紀尾井町1-3 17F

Twitter

twitter.com


YouTube

www.youtube.com



仮想通貨と言えば・・。
Coincheck様、いつもお世話になっております。


ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin
ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin


 

全体の感想など

「ビットコインとか勉強会」の参加は四回目。
当時は Segwit 問題で大揺れの時期で、そこらあたりの情報を聞きに来た方も多かったと思いますが、勉強会の内容はどちらかというと技術寄りのものと ICO(Initial Coin Offering)関連のもので少しベクトルが違う感じでした。


<過去記事>
akiyoko.hatenablog.jp

akiyoko.hatenablog.jp

akiyoko.hatenablog.jp






 

トランザクション構造と生トランザクション

河除 光瑠氏


  • そもそもトランザクションとは?
  • アウトプットでコインをロックし、その使用可能条件定義を行う
  • インプットで使用する
  • 要するに、トランザクションはコインのロックとアンロックを行うためのデータ
  • インプット構造
    • ロックタイム?
    • Unlocking Script?
    • シーケンス番号
  • アウトプット構造
    • 送付数量(Satoshi)
  • TxID(トランザクションID)と呼ばれるTx識別子は、上記データをhash256(SHA-256を二度掛け)したもの
  • インプットの検証(署名検証)
    • インプットの使用条件を満たしていることの確認は、単純にアンロッキングスクリプト、ロッキングスクリプトを順に実行し、最終的にスタックに1(True)が残っているかどうかを確認する
  • トランザクション展性とは?
  • Txのインプットやアウトプットの情報は変えられないが、TxIDは変えることが可能な性質(攻撃手法)
  • Mt.GoxのようにTxIDでのみ取引状態管理を行っている場合は、ハッキングの対象になり得る

以下、まとめ。

  • 生トランザクションは構造通りに各要素が連続して記載されたバイトデータ
  • P2PKHの電子署名は「署名を含まない」トランザクションのハッシュ値を暗号化データとして使用している
  • 上記から、署名(インプットのスクリプト)を変更しても、既存の署名は有効なままなので無意味なデータ変更や挿入をインプットスクリプトに行うことでTxIDは変化させられる
  • その他データの書き換えは現行仕様でもできない(送金先や手数料総量等)
  • segwit がトランザクション展性を解決するようになる
  • SigHash の生成方法については、BIP143 で定義



 

30秒で$35M 集めたスマートコントラクトから学ぶ Ethereum 開発入門

山中 悠氏


  • ICO/Crowdsaleに自信を持って参戦できるようになるかも
  • 暗号通貨のKickstarter?「Starbase」
  • トークンによる資金調達ができるように
  • 上場したばかりの暗号通貨もMarketCapの上位に
  • Aragon
  • Bancor
  • Kickstarterの10倍以上!
  • ICO=私設の暗号通貨取引所への上場
    • Basic Attention Token=30秒で$35M集めた
    • ブロックチェーンを活用した全く新しい広告技術
  • 仕組みを理解するための3ステップ
    • 1. Etherenum と Smart Contract を理解する
    • 2. ICOを支える技術
    • 3. BAT の Smart Contract から学ぶ
  • Ethereum:世界規模の分散アプリケーションプラットフォーム
    • Etherを払えば誰でも使える
    • Smart Contractsの実行基盤
      • コードで記述した契約条件を自動執行するプログラム
      • 一度定義した契約条件は変更できないというブロックチェーンの不可逆性を利用
  • Ether:Smart Contracts上の関数を実行するための手数料としても使えるし、Bitcoinのような通貨としても使える
  • ICOの時点ではプロダクトが完成していない場合が多い!!
  • Crowdsale:暗号通貨に依るクラウドファインディング
  • Token:暗号通貨の一種。プロジェクトによって独自の権利を持つ暗号通貨である場合も
  • ERC20(トークンの共通規格)
  • Solidity:Smart Contractsを書くためのプログラム言語
    • デプロイ後のバグ修正は不可能
    • 「OpenZeppelin」というライブラリを使うとセキュアなコーディングができるらしい。
  • `constant` 修飾子が付いている関数とそうでない関数
    • 付いていない関数を実行するには、処理量に応じた Ether(Gas)が必要
  • Smart ContractをEthereum上にデプロイ
    • Truffle
    • Gethを通してメインネットワークに乗せる
  • 『リスクはあなたが何をやっているか理解していない時に起こる』(Warren Buffett)

Token というモノが存在するわけではない。分かりやすく言えば、「Smart Contract によって Token という概念を実現している」とのこと。