SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Parity Ethereum
koganezawa@MoneyForward Financial
● Gethとの違い
● Parity Ethereumの構築
● Config
○ Automatic Updating
● Transactions-Queue
● Parity Signer
● MyCrypto Desktop App
Agenda
Gethとの違い
● Ethereum Classicのノードも建てられる
● Peerとの接続は圧倒的にParityが安定
○ 起動してすぐにPeerが見つかる
○ Parityの方がBoot nodeをしっかり建てている
○ Gethは少しずつ改善されていますが今だにPeerが見つからいといったissueが多数
● Traceを使ったTransactionの取得コスト
○ GethはCPUをかなり消費する
■ 最低でも32CPU
○ 32CPUあってもタイムアウトが発生
■ 安定的にノードを運用するなら倍の64CPU
■ お金がかかる
■ BitcoindとかLitecoind、Bitcoincashdは8CPU程度
○ Parityは、Traceを使ってもCPUの稼働に変化がない
※ 髙妻智一さんのブログより(https://tomokazu-kozuma.com/difference-between-geth-and-parity-of-ethereum-blockchain-node/)
Parity Ethereumの構築
● 言語: Rust
● Docker hub: parity/parity:vx.x.x
● DokcerFile
○ https://github.com/KoganezawaRyouta/parity-ethereum
FROM rust:1.33.0
# see https://github.com/paritytech/parity-ethereum/tree/PrivateStatusMethod#build-dependencies
RUN apt-get update && ¥
apt-get install -y libusb-1.0-0-dev libudev-dev cmake make gcc g++ pkg-config file
ADD . /root/parity-ethereum
WORKDIR /root/parity-ethereum
# see https://github.com/paritytech/parity-ethereum/tree/PrivateStatusMethod#build-from-source-code
RUN cargo build --release --features final
● 実行コマンドは下記へ吐き出される
○ target/release/parity
Parity Ethereumの構築
● docker-compose.yml
version: '3'
services:
app:
build:
context: .
dockerfile: ./containers/parity/Dockerfile
volumes:
- ./containers/parity/data:/root/.local/share/io.parity.ethereum
ports:
- "8545:8545"
- "30303/udp"
- "30303/tcp"
- "5001:5001"
- "8082:8082"
- "8546:8546"
stdin_open: true
tty: true
command: ./target/release/parity --config ./containers/parity/config.toml --pruning fast --warp-barrier 4950000
● docker-compose.yml
➢ 各種デフォルトポート
○ network: 30303
○ rpc: 8545
○ websockets: 8546
○ secretstore port: 8083
○ secretstore http_port: 8082
○ ipfs: 5001
Parity Ethereumの構築
➢ warp-barrier
○ state保存オプション、指定したブロック数からのstateを保持する。
○ この値は結構重要?リリースした時期のブロックは覚えておく必要がある。もしくは、フルで同期する
○ 指定ブロック以前の状態は保持しないので、残高など取得できない
Parity Ethereumの構築
Parity Ethereumの構築
● config.toml
# https://wiki.parity.io/Configuring-Parity-Ethereum
[parity]
# Parity continously syncs the chain
mode = "active"
# Ropsten Test Network
chain = "ropsten"
# Blockchain and settings will be stored in ~/.local/share/io.parity.ethereum/test.
base_path = "/home/parity/.local/share/io.parity.ethereum/"
➢ Operating mode
○ -mode=last
■ 前回のモードを利用
○ -mode=active
■ 通常同期
○ -mode=passive
■ 完全に同期すると、休止モードになり、メインネットワークが切断される
■ TimeOut, Alarm等の設定により、再同期することができる
● mode_timeout = 300
● mode_alarm = 3600
■ 省電力モード的なやつ?
○ -mode=dark
■ passiveと同様ですが、TimeOut、Alarm設定等が無効になる(再同期しない)
○ -mode=offline
■ 同期しない
Parity Ethereumの構築
Parity Ethereumの構築
● config.toml
[network]
port = 30303
min_peers = 20
max_peers = 50
[rpc]
disable = false
port = 18545
hosts = ['all']
apis = ["web3", "net", "eth", "eth_pubsub", "personal", "parity", "parity_accounts", "parity_set", "pubsub", "signer", "trace", "shh", "secretstore"]
# https://wiki.parity.io/JSONRPC
[footprint]
tracing = "off"
pruning = "fast"
db_compaction = "ssd"
cache_size = 1024
Parity Ethereumの構築
# [Auto-updates] to every release
auto_update = "critical"
# [Auto-updates] release-track
release_track = "current"
# [Auto-updates] Specify the maximum number of blocks used for randomly delaying updates.
auto_update_delay = 100
# [Auto-updates] Specify the number of blocks between each auto-update check.
auto_update_check_frequency = 20
# [Auto-updates] Disables auto downloading of new releases. Not recommended.
no_download = false
# [Auto-updates] Forces Parity to run even if there are known issues regarding consensus. Not recommended.
no_consensus = false
● config.toml
Automatic Updating
# 可能な値: "critical" , "all", "none", "critical" - ネットワーク全体のセキュリティまたはConsensusに関連する更新のみ
auto_update = "critical"
# "current" - ノードが現在実行されているのと同じ
# "beta" - 新機能 / バグ修正
# "stable" - バグ修正のみ
# "nightly" - github masterが利用される(危険)
release_track = "current"
# 更新に気付いた後、適用されるまでの最大ブロック数
auto_update_delay = 100
# 更新チェック間のブロック数
auto_update_check_frequency = 20
Parity Ethereumの構築
Parity Ethereumの構築
Automatic Updating
# 新しいリリースの自動ダウンロードを無効にする(非推奨)
no_download = false
# 合意に関して既知の問題がある場合でも、Parityを強制的に実行する(非推奨)
no_consensus = false
# ノードがクローズされると、まだ送信されていないトランザクションがメモリ内に存在する可能性があり
# falseに設定されていると、ノードの次回起動時にトランザクションが送信され続ける可能性がある
no_persistent_txqueue = false
Transaction Queue
➢ Transaction Queue(pending pool)
○ transaction queueに関する仕様は、yellow papperに記載がない。
○ つまり、クライアントの実装により違いがある?
➢ Queueへ格納される条件
○ 取引のガス価格が、最低価格より上回っていること(フラグで設定可能--min-gas-price)
○ 取引で使用されるガスの量が最大設定を下回っている(フラグで設定可能--tx-queue-gas)
○ 指定されたgas limitがblock gas limitを超えていないこと
○ 手数料(gas * gas price)が残高以下であること
○ トランザクションの署名は正しいこと
○ ノンスが過去でないこと
○ トランザクションのRLP形式のバイト長は300 * 1024を超えていないこと(RLPエンコードの形式)
Transaction Queue
➢ Queueからドロップ、またはアップデートされる条件
○ 事前に確認された条件が変更された(ナンスとバランスが変更された)
○ Queueの長さ制限に達している(フラグで設定可能--tx-queue-size)
○ 送信者ごとの最大トランザクション数に達している(フラグで設定可能--tx-queue-per-sender)
○ メモリ制限に達している(フラグで設定可能--tx-queue-mem-limit)
○ 同じナンスを持つ別の取引が同じ送信者によって署名されており、そのGasPriceが前のものよりも少なくとも12.5%高
い場合は、すでにプール内にあるトランザクションを置き換える
Transaction Queue
➢ Transaction Queue(pending pool)
○ eth_sendTransactionとeth_sendRawTransactionの2つのRPCメソッドを介して送信可能
○ eth_sendTransaction
■ ノードは秘密鍵(送信者アドレス)を管理する必要がある(HotWallet)
○ eth_sendRawTransaction
■ トランザクションは送信者に関係なくローカルとしてマークされる
Transaction Queue
Transaction Queue
➢ Transaction Queue(pending pool)
○ --tx-queue-no-unfamiliar-locals
■ eth_sendTransactionを使用して受信したすべてのトランザクションをローカルとして扱うことを無効にする
■ ローカルアカウント(プライベートキー)によって署名されたトランザクションのみがローカルとしてマークさ
れ、他のトランザクションはネットワーク経由で受信された場合と同様に扱われる
■ ユースケースとして
● RPCが外部クライアントに対して公開されている場合
○ --tx-queue-no-early-exit
■ Queueが上限に達した場合にトランザクション拒否を無効にする
■ poolが一杯になった場合、トランザクションに対する検証ロジック(重い)の大部分を省略される
■ Gas Price のみの検証
■ ノードAでローカルトランザクションに署名/送信した後、それらをノードBに伝播してそこで優先させたい場合)、
このフラグを使用して早期拒否を無効にすることができる
Parity Signer
● https://wiki.parity.io/Parity-Signer-Mobile-App
● テストネットワークが利用できるモバイルアプリ
MyCrypto
● https://download.mycrypto.com/
● ローカルノードへ接続できるデスクトップアプリ(Parity-UIの後継アプリ)
MyCrypto
● https://download.mycrypto.com/
● ローカルノードへ接続できるデスクトップアプリ(Parity-UIの後継アプリ)

Weitere ähnliche Inhalte

Was ist angesagt?

ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話Masaki Kobayashi
 
パブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解するパブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解するHironobu Saitoh
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginxngi group.
 
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)株式会社サードウェア
 
node-handlersocket
node-handlersocketnode-handlersocket
node-handlersocketkoichik
 
Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Kosuke Tanabe
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースJunichi Noda
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrantYu Ito
 
仮想通貨テストベッドネットワークの構築
仮想通貨テストベッドネットワークの構築仮想通貨テストベッドネットワークの構築
仮想通貨テストベッドネットワークの構築Yuichiro Shibata
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitchkazuyas
 
Vagrant packana16-otahi
Vagrant packana16-otahiVagrant packana16-otahi
Vagrant packana16-otahiHiroshi Ota
 
パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価
パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価
パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価Naoto MATSUMOTO
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-studyNaoya Inada
 

Was ist angesagt? (20)

ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話
 
パブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解するパブリッククラウドConoHaを使ってOpenStack APIを理解する
パブリッククラウドConoHaを使ってOpenStack APIを理解する
 
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
 
Zabbix rails
Zabbix railsZabbix rails
Zabbix rails
 
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
KVM Cluster with DRBD, ioDrive2 and Infiniband (130802 OSC京都)
 
node-handlersocket
node-handlersocketnode-handlersocket
node-handlersocket
 
Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケース
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrant
 
仮想通貨テストベッドネットワークの構築
仮想通貨テストベッドネットワークの構築仮想通貨テストベッドネットワークの構築
仮想通貨テストベッドネットワークの構築
 
Bitcoin testnet
Bitcoin testnetBitcoin testnet
Bitcoin testnet
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
Vagrant packana16-otahi
Vagrant packana16-otahiVagrant packana16-otahi
Vagrant packana16-otahi
 
Infinio vForum 2017 資料
Infinio vForum 2017 資料Infinio vForum 2017 資料
Infinio vForum 2017 資料
 
パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価
パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価
パブリッククラウドにおけるL2TPv3を用いたサーバ高可用性の評価
 
OpenvswitchでVPS
OpenvswitchでVPSOpenvswitchでVPS
OpenvswitchでVPS
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
Conoha VPSについて
Conoha VPSについてConoha VPSについて
Conoha VPSについて
 
軽快なBHyVe
軽快なBHyVe軽快なBHyVe
軽快なBHyVe
 

Ähnlich wie Parity ethereum

Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) VirtualTech Japan Inc.
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも- Yusaku Watanabe
 
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) VirtualTech Japan Inc.
 
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDyaegashi
 
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) VirtualTech Japan Inc.
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?Masahito Zembutsu
 
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)Naoto MATSUMOTO
 
JOSUG 9th Study
JOSUG 9th StudyJOSUG 9th Study
JOSUG 9th Studyirix_jp
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
170622 02
170622 02170622 02
170622 02openrtm
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速するKohei KaiGai
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介Dai Utsui
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...Insight Technology, Inc.
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)なおき きしだ
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Platform - Japan
 

Ähnlich wie Parity ethereum (20)

Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf) Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも-
 
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
 
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
 
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
 
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
高速ネットワーク最新動向と具体例 (ENOG58 Meeting)
 
JOSUG 9th Study
JOSUG 9th StudyJOSUG 9th Study
JOSUG 9th Study
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
170622 02
170622 02170622 02
170622 02
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
[db tech showcase Tokyo 2016] D13: NVMeフラッシュストレージを用いた高性能高拡張高可用なデータベースシステムの実現方...
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 

Parity ethereum

  • 2. ● Gethとの違い ● Parity Ethereumの構築 ● Config ○ Automatic Updating ● Transactions-Queue ● Parity Signer ● MyCrypto Desktop App Agenda
  • 3. Gethとの違い ● Ethereum Classicのノードも建てられる ● Peerとの接続は圧倒的にParityが安定 ○ 起動してすぐにPeerが見つかる ○ Parityの方がBoot nodeをしっかり建てている ○ Gethは少しずつ改善されていますが今だにPeerが見つからいといったissueが多数 ● Traceを使ったTransactionの取得コスト ○ GethはCPUをかなり消費する ■ 最低でも32CPU ○ 32CPUあってもタイムアウトが発生 ■ 安定的にノードを運用するなら倍の64CPU ■ お金がかかる ■ BitcoindとかLitecoind、Bitcoincashdは8CPU程度 ○ Parityは、Traceを使ってもCPUの稼働に変化がない ※ 髙妻智一さんのブログより(https://tomokazu-kozuma.com/difference-between-geth-and-parity-of-ethereum-blockchain-node/)
  • 4. Parity Ethereumの構築 ● 言語: Rust ● Docker hub: parity/parity:vx.x.x ● DokcerFile ○ https://github.com/KoganezawaRyouta/parity-ethereum FROM rust:1.33.0 # see https://github.com/paritytech/parity-ethereum/tree/PrivateStatusMethod#build-dependencies RUN apt-get update && ¥ apt-get install -y libusb-1.0-0-dev libudev-dev cmake make gcc g++ pkg-config file ADD . /root/parity-ethereum WORKDIR /root/parity-ethereum # see https://github.com/paritytech/parity-ethereum/tree/PrivateStatusMethod#build-from-source-code RUN cargo build --release --features final ● 実行コマンドは下記へ吐き出される ○ target/release/parity
  • 5. Parity Ethereumの構築 ● docker-compose.yml version: '3' services: app: build: context: . dockerfile: ./containers/parity/Dockerfile volumes: - ./containers/parity/data:/root/.local/share/io.parity.ethereum ports: - "8545:8545" - "30303/udp" - "30303/tcp" - "5001:5001" - "8082:8082" - "8546:8546" stdin_open: true tty: true command: ./target/release/parity --config ./containers/parity/config.toml --pruning fast --warp-barrier 4950000
  • 6. ● docker-compose.yml ➢ 各種デフォルトポート ○ network: 30303 ○ rpc: 8545 ○ websockets: 8546 ○ secretstore port: 8083 ○ secretstore http_port: 8082 ○ ipfs: 5001 Parity Ethereumの構築
  • 7. ➢ warp-barrier ○ state保存オプション、指定したブロック数からのstateを保持する。 ○ この値は結構重要?リリースした時期のブロックは覚えておく必要がある。もしくは、フルで同期する ○ 指定ブロック以前の状態は保持しないので、残高など取得できない Parity Ethereumの構築
  • 8. Parity Ethereumの構築 ● config.toml # https://wiki.parity.io/Configuring-Parity-Ethereum [parity] # Parity continously syncs the chain mode = "active" # Ropsten Test Network chain = "ropsten" # Blockchain and settings will be stored in ~/.local/share/io.parity.ethereum/test. base_path = "/home/parity/.local/share/io.parity.ethereum/"
  • 9. ➢ Operating mode ○ -mode=last ■ 前回のモードを利用 ○ -mode=active ■ 通常同期 ○ -mode=passive ■ 完全に同期すると、休止モードになり、メインネットワークが切断される ■ TimeOut, Alarm等の設定により、再同期することができる ● mode_timeout = 300 ● mode_alarm = 3600 ■ 省電力モード的なやつ? ○ -mode=dark ■ passiveと同様ですが、TimeOut、Alarm設定等が無効になる(再同期しない) ○ -mode=offline ■ 同期しない Parity Ethereumの構築
  • 10. Parity Ethereumの構築 ● config.toml [network] port = 30303 min_peers = 20 max_peers = 50 [rpc] disable = false port = 18545 hosts = ['all'] apis = ["web3", "net", "eth", "eth_pubsub", "personal", "parity", "parity_accounts", "parity_set", "pubsub", "signer", "trace", "shh", "secretstore"] # https://wiki.parity.io/JSONRPC [footprint] tracing = "off" pruning = "fast" db_compaction = "ssd" cache_size = 1024
  • 11. Parity Ethereumの構築 # [Auto-updates] to every release auto_update = "critical" # [Auto-updates] release-track release_track = "current" # [Auto-updates] Specify the maximum number of blocks used for randomly delaying updates. auto_update_delay = 100 # [Auto-updates] Specify the number of blocks between each auto-update check. auto_update_check_frequency = 20 # [Auto-updates] Disables auto downloading of new releases. Not recommended. no_download = false # [Auto-updates] Forces Parity to run even if there are known issues regarding consensus. Not recommended. no_consensus = false ● config.toml
  • 12. Automatic Updating # 可能な値: "critical" , "all", "none", "critical" - ネットワーク全体のセキュリティまたはConsensusに関連する更新のみ auto_update = "critical" # "current" - ノードが現在実行されているのと同じ # "beta" - 新機能 / バグ修正 # "stable" - バグ修正のみ # "nightly" - github masterが利用される(危険) release_track = "current" # 更新に気付いた後、適用されるまでの最大ブロック数 auto_update_delay = 100 # 更新チェック間のブロック数 auto_update_check_frequency = 20 Parity Ethereumの構築
  • 13. Parity Ethereumの構築 Automatic Updating # 新しいリリースの自動ダウンロードを無効にする(非推奨) no_download = false # 合意に関して既知の問題がある場合でも、Parityを強制的に実行する(非推奨) no_consensus = false # ノードがクローズされると、まだ送信されていないトランザクションがメモリ内に存在する可能性があり # falseに設定されていると、ノードの次回起動時にトランザクションが送信され続ける可能性がある no_persistent_txqueue = false
  • 14. Transaction Queue ➢ Transaction Queue(pending pool) ○ transaction queueに関する仕様は、yellow papperに記載がない。 ○ つまり、クライアントの実装により違いがある? ➢ Queueへ格納される条件 ○ 取引のガス価格が、最低価格より上回っていること(フラグで設定可能--min-gas-price) ○ 取引で使用されるガスの量が最大設定を下回っている(フラグで設定可能--tx-queue-gas) ○ 指定されたgas limitがblock gas limitを超えていないこと ○ 手数料(gas * gas price)が残高以下であること ○ トランザクションの署名は正しいこと ○ ノンスが過去でないこと ○ トランザクションのRLP形式のバイト長は300 * 1024を超えていないこと(RLPエンコードの形式)
  • 15. Transaction Queue ➢ Queueからドロップ、またはアップデートされる条件 ○ 事前に確認された条件が変更された(ナンスとバランスが変更された) ○ Queueの長さ制限に達している(フラグで設定可能--tx-queue-size) ○ 送信者ごとの最大トランザクション数に達している(フラグで設定可能--tx-queue-per-sender) ○ メモリ制限に達している(フラグで設定可能--tx-queue-mem-limit) ○ 同じナンスを持つ別の取引が同じ送信者によって署名されており、そのGasPriceが前のものよりも少なくとも12.5%高 い場合は、すでにプール内にあるトランザクションを置き換える
  • 17. ➢ Transaction Queue(pending pool) ○ eth_sendTransactionとeth_sendRawTransactionの2つのRPCメソッドを介して送信可能 ○ eth_sendTransaction ■ ノードは秘密鍵(送信者アドレス)を管理する必要がある(HotWallet) ○ eth_sendRawTransaction ■ トランザクションは送信者に関係なくローカルとしてマークされる Transaction Queue
  • 18. Transaction Queue ➢ Transaction Queue(pending pool) ○ --tx-queue-no-unfamiliar-locals ■ eth_sendTransactionを使用して受信したすべてのトランザクションをローカルとして扱うことを無効にする ■ ローカルアカウント(プライベートキー)によって署名されたトランザクションのみがローカルとしてマークさ れ、他のトランザクションはネットワーク経由で受信された場合と同様に扱われる ■ ユースケースとして ● RPCが外部クライアントに対して公開されている場合 ○ --tx-queue-no-early-exit ■ Queueが上限に達した場合にトランザクション拒否を無効にする ■ poolが一杯になった場合、トランザクションに対する検証ロジック(重い)の大部分を省略される ■ Gas Price のみの検証 ■ ノードAでローカルトランザクションに署名/送信した後、それらをノードBに伝播してそこで優先させたい場合)、 このフラグを使用して早期拒否を無効にすることができる
  • 19. Parity Signer ● https://wiki.parity.io/Parity-Signer-Mobile-App ● テストネットワークが利用できるモバイルアプリ