Suche senden
Hochladen
Goで学ぶDApp(aizu.go#2)
•
Als PPTX, PDF herunterladen
•
2 gefällt mir
•
458 views
K
Koki Natsume
Folgen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 39
Jetzt herunterladen
Empfohlen
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
A Reseach of Openstack + Docker at recent code
A Reseach of Openstack + Docker at recent code
Takahiro Shida
Preludeのprecompile
Preludeのprecompile
Glass_saga
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他
Yuto Takei
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
Lt
Lt
LGA128
いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。
skipping classes
Rustを勉強してみた!
Rustを勉強してみた!
ssmylh
Empfohlen
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
A Reseach of Openstack + Docker at recent code
A Reseach of Openstack + Docker at recent code
Takahiro Shida
Preludeのprecompile
Preludeのprecompile
Glass_saga
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他
Yuto Takei
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
Lt
Lt
LGA128
いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。
skipping classes
Rustを勉強してみた!
Rustを勉強してみた!
ssmylh
たのしいNode.js
たのしいNode.js
ishiki-takai
Rumpを使ってみる
Rumpを使ってみる
Masaru Oki
Vagrant packana16-otahi
Vagrant packana16-otahi
Hiroshi Ota
Oscの沼にはまった
Oscの沼にはまった
mattenn
Pythonでクラウド上のスクリプトを実行する
Pythonでクラウド上のスクリプトを実行する
aoshiman
HTML5-pronama-study
HTML5-pronama-study
Naoya Inada
ザックリとDocker
ザックリとDocker
ionis111
Mixer vessel by cfmesh
Mixer vessel by cfmesh
Etsuji Nomura
Three20のTTURLRequest
Three20のTTURLRequest
Wataru Kimura
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
Takuto Matsuu
エンジニアのための痔の話
エンジニアのための痔の話
Kouhei Maeda
全人類Linuxを使え
全人類Linuxを使え
KotaIsozaki
Casual Web-browsing with gPXE and SYSLINUX
Casual Web-browsing with gPXE and SYSLINUX
Taisuke Yamada
Open vzでdr hbstudy
Open vzでdr hbstudy
Kazuaki Fujikura
S2s websrv201011-presen
S2s websrv201011-presen
Kouhei Maeda
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
Shinichi Kozake
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
shimadah
Mesh dexcs
Mesh dexcs
Etsuji Nomura
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
フロントエンドの技術で始めるデスクトップアプリ
フロントエンドの技術で始めるデスクトップアプリ
Tomotaka Kusaka
Node.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
Yoshihiro Iwanaga
コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
Weitere ähnliche Inhalte
Was ist angesagt?
たのしいNode.js
たのしいNode.js
ishiki-takai
Rumpを使ってみる
Rumpを使ってみる
Masaru Oki
Vagrant packana16-otahi
Vagrant packana16-otahi
Hiroshi Ota
Oscの沼にはまった
Oscの沼にはまった
mattenn
Pythonでクラウド上のスクリプトを実行する
Pythonでクラウド上のスクリプトを実行する
aoshiman
HTML5-pronama-study
HTML5-pronama-study
Naoya Inada
ザックリとDocker
ザックリとDocker
ionis111
Mixer vessel by cfmesh
Mixer vessel by cfmesh
Etsuji Nomura
Three20のTTURLRequest
Three20のTTURLRequest
Wataru Kimura
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
Takuto Matsuu
エンジニアのための痔の話
エンジニアのための痔の話
Kouhei Maeda
全人類Linuxを使え
全人類Linuxを使え
KotaIsozaki
Casual Web-browsing with gPXE and SYSLINUX
Casual Web-browsing with gPXE and SYSLINUX
Taisuke Yamada
Open vzでdr hbstudy
Open vzでdr hbstudy
Kazuaki Fujikura
S2s websrv201011-presen
S2s websrv201011-presen
Kouhei Maeda
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
Shinichi Kozake
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
shimadah
Mesh dexcs
Mesh dexcs
Etsuji Nomura
Was ist angesagt?
(18)
たのしいNode.js
たのしいNode.js
Rumpを使ってみる
Rumpを使ってみる
Vagrant packana16-otahi
Vagrant packana16-otahi
Oscの沼にはまった
Oscの沼にはまった
Pythonでクラウド上のスクリプトを実行する
Pythonでクラウド上のスクリプトを実行する
HTML5-pronama-study
HTML5-pronama-study
ザックリとDocker
ザックリとDocker
Mixer vessel by cfmesh
Mixer vessel by cfmesh
Three20のTTURLRequest
Three20のTTURLRequest
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
エンジニアのための痔の話
エンジニアのための痔の話
全人類Linuxを使え
全人類Linuxを使え
Casual Web-browsing with gPXE and SYSLINUX
Casual Web-browsing with gPXE and SYSLINUX
Open vzでdr hbstudy
Open vzでdr hbstudy
S2s websrv201011-presen
S2s websrv201011-presen
SIerアーキテクト視点でみたKotlinの紹介
SIerアーキテクト視点でみたKotlinの紹介
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
Mesh dexcs
Mesh dexcs
Ähnlich wie Goで学ぶDApp(aizu.go#2)
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
フロントエンドの技術で始めるデスクトップアプリ
フロントエンドの技術で始めるデスクトップアプリ
Tomotaka Kusaka
Node.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
Yoshihiro Iwanaga
コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
ML system design_pattern
ML system design_pattern
yusuke shibui
10回目nodejs
10回目nodejs
Takuya Shishido
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
hiroya
Electron early 2019
Electron early 2019
Masahiro Kondoh
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
Hiroshi Yamaguchi
Demo120724
Demo120724
Kazuo Shimokawa
MUGT01 - mesos.DCOS demo
MUGT01 - mesos.DCOS demo
Tetsuya Sodo
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
charsbar
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
K Kinzal
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
MUGT02 - vamp demo
MUGT02 - vamp demo
Tetsuya Sodo
Tizen web app について調べたよ
Tizen web app について調べたよ
Naruto TAKAHASHI
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
dynamis
Lombok ハンズオン
Lombok ハンズオン
Hiroto Yamakawa
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
Ähnlich wie Goで学ぶDApp(aizu.go#2)
(20)
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
フロントエンドの技術で始めるデスクトップアプリ
フロントエンドの技術で始めるデスクトップアプリ
Node.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
コミュニティのある風景
コミュニティのある風景
ML system design_pattern
ML system design_pattern
10回目nodejs
10回目nodejs
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
Electron early 2019
Electron early 2019
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
Demo120724
Demo120724
MUGT01 - mesos.DCOS demo
MUGT01 - mesos.DCOS demo
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
MUGT02 - vamp demo
MUGT02 - vamp demo
Tizen web app について調べたよ
Tizen web app について調べたよ
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
Lombok ハンズオン
Lombok ハンズオン
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Mehr von Koki Natsume
Studentgo1
Studentgo1
Koki Natsume
Spring aizu-lt-2018
Spring aizu-lt-2018
Koki Natsume
Pwaを作ってみる(ejリクールトlt 2017/10/18)
Pwaを作ってみる(ejリクールトlt 2017/10/18)
Koki Natsume
Vue template-parserを作っている話
Vue template-parserを作っている話
Koki Natsume
Alt#0x008 2017/5/20
Alt#0x008 2017/5/20
Koki Natsume
Gcflt会2017/4/2
Gcflt会2017/4/2
Koki Natsume
機械学習勉強会2017/5/14
機械学習勉強会2017/5/14
Koki Natsume
Alt2016
Alt2016
Koki Natsume
機械学習勉強会2017/2/19(nn基礎)
機械学習勉強会2017/2/19(nn基礎)
Koki Natsume
Mehr von Koki Natsume
(9)
Studentgo1
Studentgo1
Spring aizu-lt-2018
Spring aizu-lt-2018
Pwaを作ってみる(ejリクールトlt 2017/10/18)
Pwaを作ってみる(ejリクールトlt 2017/10/18)
Vue template-parserを作っている話
Vue template-parserを作っている話
Alt#0x008 2017/5/20
Alt#0x008 2017/5/20
Gcflt会2017/4/2
Gcflt会2017/4/2
機械学習勉強会2017/5/14
機械学習勉強会2017/5/14
Alt2016
Alt2016
機械学習勉強会2017/2/19(nn基礎)
機械学習勉強会2017/2/19(nn基礎)
Goで学ぶDApp(aizu.go#2)
1.
はじめに
2.
Ethereumって知ってる人🙋
3.
Ethereumとは 分散型アプリケーションやスマートコントラクトを構築する ためのプラットフォーム。 いわゆるブロックチェーンのプロトコルのひとつ。
4.
ブロックチェーンを利用した アプリが作れる!
5.
既存のアプリや実装例が幾つか存在する。 ● NameCoin: bitcoinのP2PシステムをDNS利用。 ●
Z.com cloud: 「本人のみが受け取れる宅配ボックス」の実証実験 ● OSSでの実装例: https://guide.blockchain.z.com/ja/docs/oss/
6.
でも、いまのところNode.jsが主流... truffle.jsというフレームワークやweb3.jsというライブラリが があり、JavaScriptが一番開発すすんでて便利!
7.
でも
8.
Goで書きたい
9.
わかる
10.
調べたらGo bindingが あるらしい
11.
なので
12.
Goで動かしてみたいとEthereumをうごかしてみます!
13.
Goで動かすDApp University of Aizu. Koki
Natsume.
14.
目次 1. 自己紹介 2. はじめに 3.
web3とスマートコントラクトでの構成 4. Goで動かしてみる 5. おわりに
15.
自己紹介
16.
1. 自己紹介 名前:棗 光幹 大学:会津大学学部2年 開発:webアプリケーション 言語:Golang,
JavaScript SNS:natsumen 最近:OS, pwnなどレイヤー低め, 留年しそうでつらい...
17.
web3とコントラクトでの構成
18.
DAppは大体こんな感じ サーバーサイド(ex. API) アプリケーション層 web3ライブラリ インターフェース層 インフラ層 RPC Ethereumノード (ブロックチェーン) P2Pネットワーク Ethereumノード(ブロックチェーン) スマート コントラクト P2PEthereum ノードネットワーク
19.
web3とは EthereumのAPIライブラリ群。 スマートコントラクトとの通信などをweb3のAPIを介してで きる。
20.
web3ライブラリ群 JavaScript:web3.js Python:web3.py Haskell:hs-web3 Java:web3j Scala:web3j-scala
21.
DAppは大体こんな感じ サーバーサイド(ex. API) アプリケーション層 web3ライブラリ インターフェース層 インフラ層 RPC Ethereumノード (ブロックチェーン) P2Pネットワーク Ethereumノード(ブロックチェーン) スマート コントラクト P2PEthereum ノードネットワーク
22.
スマートコントラクトとは ブロックチェーンを操作するプログラムのこと。 現在はスマートコントラクトの高級言語としてSolidityという言語などがある。
23.
DAppは大体こんな感じ サーバーサイド(ex. API) アプリケーション層 web3ライブラリ インターフェース層 インフラ層 RPC Ethereumノード (ブロックチェーン) P2Pネットワーク Ethereumノード(ブロックチェーン) スマート コントラクト P2PEthereum ノードネットワーク
24.
Go bindingで動かしてみる
25.
Goでやる ● Goだとgo-ethereumが公式で出しているbindingが利用できてweb3なしで実 装できる。 ● また、abigenという.abi(json)ファイルからgoのコードが生成できるツールが ある(JSON-RPC)。 ●
一応、コードはhttps://github.com/phustly/go-eth-testにあります。
26.
1. コントラクトと通信する やること ● solidityで書かれたtoken.solからJSONのABIを生成する。 ●
生成されたtoken.abiからabigen(go-ethereum/cmd/abigen)でtoken.goを生成 する。(JSON-RPC) ● token.goを利用しRPC通信して新しいトークンのインスタンスを作り、トー クンの名前を取得する 。(main.go) 以上
27.
ABIとは Application Binary Interfaceの略。 サーバーサイドのプログラムからethereumの
ecosystem内のcontract(solidityな ど)と通信する一般的な方法。
28.
token.sol -> token.abi .solファイルをコンパイルする。 $
solcjs token.sol --abi or $ solc --standard-json token.sol <- solcがinstallとbuildできなかった... => token.abiができる
29.
token.abi -> token.go abiからgoのコードを生成する。 go
get github.com/ethereum/go-ethereum/cmd/abigen $ abigen --abi token.abi --pkg main --type Token --out token.go
30.
コントラクトと通信 出力: Token name: unicorn
31.
2. トランザクションを呼び出す やること ● 先ほどと同様、token.solからtoken.goを生成する。 ●
入力するトランザクションを指定して署名し、認証データを取得する。 (bind.NewTransferメソッド)(main.go) ● 認証データを元に許可されたトランザクションを呼び出す。(main.go) ● トランザクションのハッシュ値を取得する。 以上
32.
2. トランザクションを呼び出す Go bindingではトランザクションをローカルに署名する必要があり、これを Ethereumノードにわたさない。 つまり、署名に利用するパスワードやキーの情報はノードに格納しないで、ロー カルのマシン内で処理する。
33.
token.sol -> token.go 実はダイレクトにsolidityからgoのコードができちゃう。 $
abigen --sol token.sol --pkg main --out token.go でもこれは --type, --bin, --abi指定などができないため、すべてのコントラクトが 生成され、バインドされるという副作用がある。
34.
トランザ クション を呼び出す 出力:0x4f4aaeb29ed48e….
35.
おわりに
36.
まとめ ● DAppも一応Goでかける。 ● solidity
-> abi -> goの流れで使える。 ● ethclientパッケージからPRC接続できる。 ● account/abi/bind パッケージからトラザクションの処理とかできる。 ● Go読みやすい、最高。
37.
おわりに ● まだ自分もgo-ethereumを読みきれなくてgo bindingどれだけ柔軟にアプリを 実装できるか把握しきれてないのですが、web3と同じレベルことは普通にで きると思う(コード量は増える)。 ●
これからとして、サーバーをGoのみでひとつアプリを作って、ブログか何か しらでより濃い内容のアウトプットできたらといいなと思う。 ● solidityやweb3、アプリの実装例については多分この後ktrが話すかも...?
38.
参考 ● go-ethereum wiki(white
paper): https://github.com/ethereum/go-ethereum/wiki ● solidity document: https://solidity.readthedocs.io/en/develop/index.html ● NTT fintech コラム: http://www.intellilink.co.jp/article/column/fintech/index.html ● ethereum document unicorn: https://ethereum.org/token ● ethereum入門(日本語翻訳): https://www.gitbook.com/book/a-mitani/mastering- ethereum ● Qiitaなど
39.
ご清聴ありがとうございました!
Jetzt herunterladen