ブロックチェーンのクライアントをSwiftで実装する | try! Swift Tokyo 2018 Day1-12

Swiftにおける分散アプリケーションの作成について紹介します。

ブロックチェーンのクライアントをSwiftで実装する

f:id:niwatako:20180301163248j:plain

Swiftでブロックチェーンクライアントを書くことの話をします Ethereumとインタラクションを起こすフレームワークはありません。コントリビューションのチャンスがあるといえるかもしれません

f:id:niwatako:20180301163519j:plain

ニックネームを国ごとに決めています。卵です。これは非常に有名な卵ですね

ブロックチェーンは分散化されたものですが、みなさんに是非参加してほしいと思っています。

f:id:niwatako:20180301163544j:plain

Java, Javascript, Goなどのツーリングについて、そしてSwiftの側面に絞って話します

f:id:niwatako:20180301163621j:plain

渋谷のLuke's Lobsterに言ったのですが、中途半端なものは要らない、Lobstermenだけが必要ということです

中央機関がブロックチェーンが決めるのではなくて全ては分散化された合意で決まるべきです。

Ethereumとは何でしょう

f:id:niwatako:20180301163713j:plain

私はiOSデベロッパですが、2つのコミュニティを結びつけたいと思います

f:id:niwatako:20180301163742j:plain

EthereumもAppStoreのようなものだということです。

AppStoreやFacebook、Alexaなどは3rdパーティーのソフトウェアの発展によってExperienceを高めていきます

ハードウェアを売るためにストアがあるわけですがサードパーティーのアプリケーションによって価値を高める

Ethereumはブロックチェーンです。仮想通貨です。これは金融製品だけではなく、プラットフォームの昨日の仕方を推進しており、バックグラウンドで様々なアプリケーションを開発することができます。

f:id:niwatako:20180301163935j:plain

Objective-CJavascriptを使うということになります。Objective-Cじゃないものを使って最終的にObjective-Cになるということです。

f:id:niwatako:20180301164015j:plain

まだフレームワークが無いですがCocoapodのようなものが出れば変わるでしょう

f:id:niwatako:20180301164055j:plain

このような構成になります。

iOS Client がトランザクションをリクエストします

Ethereum nodeはブロックチェーンデータを含んでいる場所です。

Ethereumノードにデータを提供したりトランザクションを起こさせると言ったことを、Java, Javascriptからする。

f:id:niwatako:20180301164202j:plain

iOS開発者の家の図です。

ハードウェア上で動いていて、カラーはブロックチェーンデータを表しています データをリクエストするとアプリの中に入っている 操作すると他のところにデータが有るという状態

社内でこのような構築をしていくことができます。

右のアーキテクチャは分散化が進んでいません。

多くの場合左側を使っていくことになると思います。様々なノードを走らせることになると思います。どこにゴールがあるかで変わります。

ライトノードはブロックチェーンデータのサブセット、ブロックヘッダを持っています。完全なブロックチェーンより軽量です。ここがiOS上でブロックチェーンを使う場合に重要です。

f:id:niwatako:20180301164339j:plain

今見ているのはツリーですね。マークルツリーと呼ばれています。

どのハッシュが全体のツリーの中にあるかを知るためにはルートを見ればよいわけです。

非常にスマートなデータ構造です。

ライトノードを走らせるためのデータ量を減らすことができます。

どのハッシュがルートを合成しているかを見ることができます。ルートはすべての子供達のハッシュを含んでいるということになります。

f:id:niwatako:20180301164519j:plain

Vitalikはマークルツリーがブロックチェーンを可能にしていると言っています

f:id:niwatako:20180301164543j:plain

Ethereumについて話す時に重要なのはスマートコントラクトです

コンパイルされてブロックチェーンに追加される、あるアドレスに追加され、底でアクセスすることができる。そしてそれを再利用することができる。

SwiftをEthereumネットワークで使いたければどうしたら良いでしょう

f:id:niwatako:20180301164636j:plain

Objective-Cを使う必要があります。Geth、Objective-Cのランタイム。Web3はJS

フレームワークがありますがWeb3.jsがさまざまなモジュールがありますがこれで一通りできる

f:id:niwatako:20180301164719j:plain

f:id:niwatako:20180301164745j:plain

Web3.jsをReactNativeで使う事ができる Javascriptをフロントエンドに使ったアプリケーションももう一つの選択肢です。

それからWeb3.jsをWebkitで動かす

f:id:niwatako:20180301164832j:plain

いずれにしても、課題があります。

おそらく、言語です。

Go, Rustl, JS...

Ethereumサポートにあたってこれら言語を知る必要がある。

Javaコードを読めなければ、通常Objective-Cを実装に使うわけですが、別のコードベースを確認しなければならないわけです。バインドするときにObjCでありながら、その前の段階で何の言語だったかが関係するわけです。

そして、セキュリティ、仮想通貨でいちばん重要なわけですが、読み込む上で言語が問題になります。

そしてWebKitを使う場合、パフォーマンスが問題になります

Architecture パフォーマンス上で最適化しようとすると様々な変更が必要になる。

開発者が決めていかなければならない部分も出てくる。 Web3.swiftというフレームワークを考えてみます

f:id:niwatako:20180301165125j:plain

アカウントやコントラクトといったやり取りをしていく

更にイノベーティブなモジュールを考えます

f:id:niwatako:20180301165150j:plain

これは非常に統合が用意になります。 UIを提供するわけですがブロックチェーンと会話するUIを提供する。

それからUniversal Loginを利用するというものもあります。

Google Loginがモバイルアプリケーションに提供されていますが、ここでは独自のデータだけでログインできるようにしようというものです。今のアプリケーションと違った形にログインというものがなっていくということです。

App StoreにEthereumのアプリケーションを...

あ、ここで聞いてみようと思います。

ブロックチェーンの開発にどれだけインパクトを与えられるかということを考えてほしいと思います。多くのプロダクトに影響するでしょうし、会社のツールも観点としては必要になってくると思います。

おなじ、AlmofierやcocoaPodと同じ情熱で取り組んでほしい分野だと思っています

ブロックチェーンアプリ開発を極めて容易にしていきたいと思っています

f:id:niwatako:20180301165401j:plain

仮想通貨の世界をどのように考えるかというところで大きく規定されていくと思います。

具体的に持続可能なコンセンサスメカニズムを使っていく、InclusiveFinaiceと言われているものもみなさんの努力次第だと思います。

みなさんで社会的に持続可能なもの、最適なものにしていきましょう。

[広告]面白かったら、ためになったら

  • はてなブックマークSwift タグをつけてブックマーク!
  • 「インターネットで生活を楽しく豊かにしたい」仲間を募集しています
  • Bitcoin: 3KGqXtR1ZaGVdkvcw8CCNrkDxDhdbZBYHL