アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

StreamによるState管理のすすめ

つい最近、社内ハッカソンでFlutterを用いたアプリ開発を行いました。その時に、FlutterやReactなどにおける、State ManagementやApplication Architecture(というか設計手法?)について色々と議論しました。

その中で、Flutterでよく使われているBlocパターンと、自分が昔経験したReactive MVVMが非常に似ており、Blocパターンが採用しているStreamを用いたState管理について良さを説明してくださいといわれたけど、うまく説明できませんでした。

ということで、今回の記事ではStreamを用いたstate管理の利点をまとめたいと思います。

  • はじめに
  • アプリケーション設計の基本
  • Streamを使う利点
  • オセロゲームはその入力を受け付けるべきか?
  • ネットワーク対戦型オセロゲームでも、シングルプレイでもBusiness Logicのinputは同じ
  • その入力は同期処理?非同期処理?
  • まとめと欠点
続きを読む

truffleでminer.stopなテストの書き方

Truffleでちょっと特殊(?)なテストを書こうとしたら思ったよりもハマってしまったので、備忘録的に残しておきます。

  • miner.stopしたら動かないテスト
  • miner.stopするとsendTransactionでフリーズする理由
  • miner.stopでフリーズしないテスト
  • まとめ
続きを読む

Solidity v0.6.5で追加されたImmutable keywordについて

今回は、Solidityのv0.6.5で追加されたImmutable keywordについて紹介します。
なお、v0.6.5は2020/04/06にリリースされております。執筆時点での最新バージョンはv0.6.8となっています。

Immutable keywordについての公式の説明はこちらのブログを参照ください。
solidity.ethereum.org

  • Immutable Keywordについて
  • constantとimmutableの比較
  • immutableの動作概要
    • 基本的な流れ
    • デバッガーを使って確認してみる
    • コントラクトの初期化フェーズ時の動作
    • immutable変数を参照するときの動作
  • まとめ
続きを読む

web3.jsのmock方法

今回の記事では、DappsのUnit Testでweb3.jsをmockする方法について紹介します。
sinon.jsを用いた方法と、jestを用いた方法の2パターンを紹介します。

本記事で紹介している内容のサンプルプロジェクトも作りましたので参考にしてください。
github.com

  • テスト対象となるDapps
  • Unit Testのサンプル
  • web3.js のmocking方法
    • sinon.jsを使った方法
      • 利点
      • 欠点
    • jestを使った方法
      • 利点
      • 欠点
  • まとめ
続きを読む

Meta-Transactionのセキュリティを向上させるEIP-1344

今回はIstanbulアップデートで導入されたEIP-1344についてまとめたいと思います。EIP-1344の説明をする前にMeta-Transactionの仕組みとMeta-Transactionが抱える問題を簡単に説明します。その後に、EIP-1344で何が解決されたのかを説明します。

EIPの原文はこちら
github.com

  • Meta-Transactionとは
    • Meta-Transactionの処理の流れ
  • Meta-Transactionの適用シナリオ
  • Meta-Transactionが抱える問題
  • それぞれの解決作
  • まとめ
続きを読む

RLPとMerkle Patricia Tree(Trie)

今回はEthereumで用いられている2つのデータエンコード方式、RLP(Recursive Length Prefix)とPatricia Tree(Trie)について説明します。

  • RLP(Recursive Length Prefix)
    • 概要
    • 接頭辞の種別
    • 具体的な使用例
  • Merkle Patricia Tree(Trie)
    • 概要
    • 前提:基本的なRadix Trie(基数木)の定義
    • Merkle Patricia Treeのノードとprefixの種別
      • ノード種別
    • leafとextensionを区別するための識別子
    • Patricia Merkle Treeの各ノードのハッシュ値の求め方
    • 具体的な使用例
    • Merkle Patricia Treeの構造の具体例
  • まとめ
続きを読む

Devcon5 - Day 3 Rough Report

  • 1. Optimization techniques for EVM implementations
  • 2. (e)WASM Code Golfing - Below Par with Nim
  • 3. Yul, eWasm, Solidity: Progress and Future Plans
  • 4. Wasm Precompiles for Eth 1.x
  • 5. EVM Roundtable: Everything You Wanted to Ask, But Were Afraid To
  • 6. Monitoring an Ethereum infrastructure
  • 7. Pentesting Ethereum Contracts: Exploring a Honeypot Contract Using Ganache

1. Optimization techniques for EVM implementations

3日目の今日は朝からEVM関連セッションが連続であり、全てB7 Roomだったので朝一からB7に篭ってた。
で、最初はevmone作者のevm実相寺におけるoptimizationの話。

続きを読む