Swiftにおける分散アプリケーションの作成について紹介します。
ブロックチェーンのクライアントをSwiftで実装する
Swiftでブロックチェーンクライアントを書くことの話をします Ethereumとインタラクションを起こすフレームワークはありません。コントリビューションのチャンスがあるといえるかもしれません
ニックネームを国ごとに決めています。卵です。これは非常に有名な卵ですね
ブロックチェーンは分散化されたものですが、みなさんに是非参加してほしいと思っています。
Java, Javascript, Goなどのツーリングについて、そしてSwiftの側面に絞って話します
渋谷のLuke's Lobsterに言ったのですが、中途半端なものは要らない、Lobstermenだけが必要ということです
中央機関がブロックチェーンが決めるのではなくて全ては分散化された合意で決まるべきです。
Ethereumとは何でしょう
私はiOSデベロッパですが、2つのコミュニティを結びつけたいと思います
EthereumもAppStoreのようなものだということです。
AppStoreやFacebook、Alexaなどは3rdパーティーのソフトウェアの発展によってExperienceを高めていきます
ハードウェアを売るためにストアがあるわけですがサードパーティーのアプリケーションによって価値を高める
Ethereumはブロックチェーンです。仮想通貨です。これは金融製品だけではなく、プラットフォームの昨日の仕方を推進しており、バックグラウンドで様々なアプリケーションを開発することができます。
Objective-CやJavascriptを使うということになります。Objective-Cじゃないものを使って最終的にObjective-Cになるということです。
まだフレームワークが無いですがCocoapodのようなものが出れば変わるでしょう
このような構成になります。
Ethereum nodeはブロックチェーンデータを含んでいる場所です。
Ethereumノードにデータを提供したりトランザクションを起こさせると言ったことを、Java, Javascriptからする。
iOS開発者の家の図です。
ハードウェア上で動いていて、カラーはブロックチェーンデータを表しています データをリクエストするとアプリの中に入っている 操作すると他のところにデータが有るという状態
社内でこのような構築をしていくことができます。
右のアーキテクチャは分散化が進んでいません。
多くの場合左側を使っていくことになると思います。様々なノードを走らせることになると思います。どこにゴールがあるかで変わります。
ライトノードはブロックチェーンデータのサブセット、ブロックヘッダを持っています。完全なブロックチェーンより軽量です。ここがiOS上でブロックチェーンを使う場合に重要です。
今見ているのはツリーですね。マークルツリーと呼ばれています。
どのハッシュが全体のツリーの中にあるかを知るためにはルートを見ればよいわけです。
非常にスマートなデータ構造です。
ライトノードを走らせるためのデータ量を減らすことができます。
どのハッシュがルートを合成しているかを見ることができます。ルートはすべての子供達のハッシュを含んでいるということになります。
Vitalikはマークルツリーがブロックチェーンを可能にしていると言っています
Ethereumについて話す時に重要なのはスマートコントラクトです
コンパイルされてブロックチェーンに追加される、あるアドレスに追加され、底でアクセスすることができる。そしてそれを再利用することができる。
SwiftをEthereumネットワークで使いたければどうしたら良いでしょう
Objective-Cを使う必要があります。Geth、Objective-Cのランタイム。Web3はJS
フレームワークがありますがWeb3.jsがさまざまなモジュールがありますがこれで一通りできる
Web3.jsをReactNativeで使う事ができる Javascriptをフロントエンドに使ったアプリケーションももう一つの選択肢です。
それからWeb3.jsをWebkitで動かす
いずれにしても、課題があります。
おそらく、言語です。
Go, Rustl, JS...
Ethereumサポートにあたってこれら言語を知る必要がある。
Javaコードを読めなければ、通常Objective-Cを実装に使うわけですが、別のコードベースを確認しなければならないわけです。バインドするときにObjCでありながら、その前の段階で何の言語だったかが関係するわけです。
そして、セキュリティ、仮想通貨でいちばん重要なわけですが、読み込む上で言語が問題になります。
そしてWebKitを使う場合、パフォーマンスが問題になります
Architecture パフォーマンス上で最適化しようとすると様々な変更が必要になる。
開発者が決めていかなければならない部分も出てくる。 Web3.swiftというフレームワークを考えてみます
アカウントやコントラクトといったやり取りをしていく
更にイノベーティブなモジュールを考えます
これは非常に統合が用意になります。 UIを提供するわけですがブロックチェーンと会話するUIを提供する。
それからUniversal Loginを利用するというものもあります。
Google Loginがモバイルアプリケーションに提供されていますが、ここでは独自のデータだけでログインできるようにしようというものです。今のアプリケーションと違った形にログインというものがなっていくということです。
App StoreにEthereumのアプリケーションを...
あ、ここで聞いてみようと思います。
ブロックチェーンの開発にどれだけインパクトを与えられるかということを考えてほしいと思います。多くのプロダクトに影響するでしょうし、会社のツールも観点としては必要になってくると思います。
おなじ、AlmofierやcocoaPodと同じ情熱で取り組んでほしい分野だと思っています
ブロックチェーンのアプリ開発を極めて容易にしていきたいと思っています
仮想通貨の世界をどのように考えるかというところで大きく規定されていくと思います。
具体的に持続可能なコンセンサスメカニズムを使っていく、InclusiveFinaiceと言われているものもみなさんの努力次第だと思います。
みなさんで社会的に持続可能なもの、最適なものにしていきましょう。