ビットコイン公式クライアント「Bitcoin Core」の新バージョン (0.18.0) がリリースされました

こんにちは!フレセッツ株式会社の日向です。

平成から令和に変わり、10連休もの巨大ゴールデンウィークが終わり、みなさんいかがお過ごしでしょうか?
まだ休みボケが抜けきれない方も多いことと思いますが、そんな令和元年5月2日ごろに公式版ビットコインクライアントの「Bitcoin Core 0.18.0」がリリースされました。
そこで本記事ではこの最新版クライアントのリリースノートの日本語訳を掲載します。
細かいニュアンスの違いなどがある場合があり ますので、英語版の正式なリリースノートと併せてお読みください。

Bitcoin Core v0.18.0 の起動画面

アップグレード方法

古いバージョンを起動している場合には、まずシャットダウンしてください。
完全にシャットダウンするまで待った後(古いバージョンでは数分ほどかかるでしょう)、インストーラを起動する(Windows の場合)、または /Applications/Bitcoin-Qtをコピー (Mac の場合)、または bitcoind/bitcoin-qt をコピー(Linux の場合)してください。

初めて 0.15.0 以上のバージョンを起動する場合には、チェーンステートデータベースが新しいフォーマットに変換されます。マシンの性能にもよりますが、数分から0.5時間で完了するでしょう。

ブロックデータベースのフォーマットもバージョン 0.8.0 で変更されたことに注意してください。
0.8 以前のバージョンからバージョン 0.15.0 以降への自動的な更新コードはありません。0.7.x 以前からブロックチェーンを再ダウンロードせずに直接更新することはサポートされていません。
しかしながらいつものように、古いウォレットのバージョンは依然としてサポートされています。

互換性

Bitcoin Core は以下のようなオペレーティングシステムでサポートされ、広くテストされています: Linux カーネル、macOS 10.10+ および Windows 7 またはそれ以降のバージョン。
サポートされていないシステムで Bitcoin Core を使用することは推奨されません。

Bitcoin Core はその他の Unix ライクなシステムでも動作するはずですが、それほど高頻度にテストが行われている訳ではありません。

0.17.0 以降では macOS 10.10 未満はサポートされなくなりました。0.17.0 は Qt 5.9.x を利用してビルドされていますが、これは macOS 10.10 よりも古いバージョンをサポートしていません。
また、Bitcoin Core は macOS の「ダークモード」が有効された場合の外観の変更がまだ行われません。

以前からサポートされている CPU プラットフォームに加えて、このリリースでのコンパイル済み配布物は RISC-V プラットフォームに対するバイナリを提供しています。

contrib/init/bitcoind.service に置かれているsystemd ユニット設定ファイルをお使いの場合には、~bitcoin/.bitcoin の代わりに/var/lib/bitcoind をデータディレクトリとして使用するようになりました。新しい設定ファイルに切り替える際には、/var/lib/bitcoind が存在し十分な容量があることを確認し(df -h /var/lib/bitcoind を利用してください)、必要であれば既存のデータディレクトリをコピーしてください。詳細については systemd 初期ファイルセクションを参照してください。

既知の問題

ウォレットGUI

(1) コインコントロール機能を有効化しており、(2) 複数のウォレットを読み込み同時に利用している上級ユーザーに対して: コインコントロールの入力セクションダイアログは、ドロップダウンメニューを用いてウォレットを切り替える際に誤って間違ったウォレット状態を保持する可能性があります。
現在のところ、コインコントロール機能を複数のウォレットを読み込んだ状態で利用することは推奨されません。

特筆すべき変更

マイニング

  • getblocktemplate の呼び出しは segwit ルールが指定されていない場合失敗します。
    segwit を指定しない getblocktemplate の呼び出しは、マイナーにとってより低い報酬となってしまいますので、ほぼ確実に設定ミスでしょう。
    失敗した呼び出しは、segwit ルールを有効化するための方法を説明するエラーメッセージを表示します。

設定オプションの変更点

  • 設定ファイルにおいて認識できないセクション名が利用されていた場合には警告が表示されます。
    認識できるセクションは [test][main]、および [regtest] になります。
  • ZMQ が追加のメッセージを棄却する前にメモリ内にキューイングするメッセージ (「high water mark」) の最大数の設定に関する 4 つのオプションが利用可能になりました。
    デフォルト値は 1,000 であり、これは以前のリリースで利用されていた値です。詳細については ZMQ のドキュメンテーションを参照してください。
  • すべてのネットワークインタフェースで自動的にリッスンするためにrpcallowip オプションを利用することはできなくなりました。
    代わりに rpcbind パラメータを利用してリッスンを行う IP アドレスを指定しなければなりません。
    公開されたネットワーク接続を通して RPC コマンドをリッスンするのは安全ではないため無効化するべきです。
    そのためユーザがそのような設定を選択した場合には警告が表示されます。Docker などのツールを利用するために RPC を露出させる必要がある場合には、RPC をローカルホストにのみバインドしていること、すなわち docker run [...] -p 127.0.0.1:8332:8332 (通常の Docker のポート設定に対して追加の :8332)としていることを確認してください。
  • 設定ファイルでセットされたパスワードにハッシュ文字 (#) が含まれている場合、ハッシュ文字がパスワードとして使われたのかコメントなのかが曖昧なため、 rpcpassword オプションは起動時エラーを引き起こすようになりました。
  • メモリプール内に受け入れられなかったとしても、ホワイトリスト内のピアから送信されたトランザクションであれば中継するために、 whitelistforcerelay オプションが利用されています。
    このオプションはデフォルトではオフになっているため、ポリシーの変更や切断/禁止の動作によって、他のホワイトリストに登録されているノードがピアによってドロップされることはありません。
    ユーザはコマンドラインオプションによりこの動作をあらわに有効化することができます(将来的にこの機能は廃止予定ですので、Bitcoin Core プロジェクトに対してこのユースケースを連絡することを考えるべきでしょう。)。

systemd 初期ファイル

systemd 初期ファイル (contrib/init/bitcoind.service) は ~bitcoin/.bitcoin の代わりに/var/lib/bitcoind をデータディレクトリとして使うように変更されました。
この変更により Bitcoin Core は他のサービスに対してより一貫性を持ち、systemd 初期ファイルは既存の Upstart および OpenRC 設定に対してより一貫性を持つようになりました。

設定、PID、データディレクトリは、これらの生成や権限設定を管理する systemd によって完全に管理されることになりました。

contrib/init 以下にある提供されている初期ファイルを利用する際に、 datadir オプションを /etc/bitcoin/bitcoin.conf で書き換えるのは効果がなくなりました。これは /etc/bitcoin/bitcoin.conf で設定されているオプションに対し、初期ファイルで設定されているコマンドライン引数が優先されるからです。

ドキュメンテーション

  • JSON-RPC インタフェースに関する短いドキュメントには、ウォレット状態や mempool 状態など、RPCの結果に異なるサブシステムからのデータ間の不整合が含まれる可能性がある場合が記載されています。
    REST インタフェースのドキュメントには同じルールが適用される旨が追記されています。
  • JSON-RPC ドキュメンテーション には、このインタフェースをどのように安全性を保つかについての追加の情報が追加されています。
  • bitcoin.conf ファイルに関する新しいドキュメントにはこれを用いてどのように Bitcoin Core を設定するのかについて書かれています。
  • Bitcoin Core の BIP 174 Partially-Signed Bitcoin Transactions (PSBT) インタフェースに関する新しいドキュメントが追加されました。
    PSBT では複数のプログラムが協調して新しいトランザクションを作成し、署名してブロードキャストすることができます。
    これはオフライン (コールドストレージ) ウォレットやマルチシグウォレット、coinjoin 実装やその他の様々な二つ以上のプログラムがやり取りをすることで完全なトランザクションを生成する場合に有用です。
  • 出力スクリプト記述子 のドキュメンテーションが新しい機能に関する情報についてアップデートされました。
    この現在開発中の言語ではウォレットやその他のプログラムが通知を受け取りたい出力スクリプト、例えばどのアドレスに対して支払いの情報を知りたいかといったものを記述することができます。
    この言語は現在複数の新しい、更新された RPC で利用されており、リリースノートで開設されています。
    将来的には他の RPC や下層のウォレット構造などにも適用していくことが期待されます。

ビルドシステムの変更点

  • 新しい --disable-bip70 オプションを ./configure に渡すことで Bitcoin-Qt を BIP70 支払いプロトコルおよび libssl へのリンクがない状態でビルドできるようになりました。
    支払いプロトコルにより Bitcoin Core は libssl の過去の脆弱性に晒されていましたが、BIP70 のサポートが不要なビルダーについてはこのオプションを指定することで将来的な脆弱性へ晒されることを減らすことが推奨されます。
  • Qt の最小要求バージョン (GUI をビルドする際) が 5.2 から 5.5.1 へ上がりました (depends システム は 5.9.7 を提供します)。

新しい RPC

  • getnodeaddresses このノードの知るピアのアドレスを取得します。DNS シーダを利用せずに接続先ノードを発見することができます。
  • listwalletdir ウォレットディレクトリ (デフォルトのウォレットディレクトリまたは-walletdirパラメタで設定されたディレクトリ) 内のウォレットの一覧を返却します。
  • getrpcinfo RPC サーバのランタイム詳細を返却します。現在のところ、現在有効なコマンドおよびどのくらいの間起動しているのかの配列を返却します。
  • deriveaddresses 出力記述子に対応する一つ以上のアドレスを返却します。
  • getdescriptorinfo 記述子を受け取り、計算されたチェックサムとともにその情報を返却します。
  • joinpsbts 複数の相異なる PSBT をマージし一つの PSBT にします。
    複数の PSBT は異なる入力を持っている必要があります。得られる PSBT はすべてのPSBT からのすべての入力と出力を持ったものになります。
    どの PSBT で提供された署名も削除されます。
  • analyzepsbt PSBT を解析し、PSBT がどのような情報を持っているのか、トランザクションを完成させるために必要な次のステップが何かを提供します。PSBT の各入力に対して、analyzepsbt はその入力について何の情報が足りないのか、UTXO の提供が必要なのか、何の公開鍵が必要なのか、どのスクリプトが必要なのか、何の署名が必要なのか、といった情報を提供します。
    すべての入力には、その入力を完了するために必要な役割もリストされます。
    また、 analyzepsbtでは、PSBTを完了するために一般的に必要な次の役割もリストされます。 analyzepsbtは、完了したトランザクションの見積もり料金および見積もり仮想サイズも、それを実行するのに十分な情報があれば提供します。
  • utxoupdatepsbt は、一連の未使用トランザクション出力(UTXO)を検索して、部分トランザクションによって消費されている出力を見つけます。
     署名アルゴリズムは費やされているUTXOからの情報を必要とするので、PSBTは提供されるために費やされているUTXOを持つ必要があります。
     セグメント入力の場合は、UTXO自体のみが必要です。 非セグメント出力の場合、署名者が正しいものに署名していることを署名者が確信できるように、前のトランザクション全体が必要です。 
    残念ながら、UTXOセットにはUTXOしか含まれておらず、フルトランザクションは含まれていないため、 utxoupdatepsbtはsegwit入力に対してのみUTXOを追加します。

RPCの更新点

注意: いくつかの低レベルな RPC の変更は、主にテストに有用であり、これらは以下の低レベル変更点のセクションに記載されています。

  • getpeerinfo は、ピアの BIP133 料金フィルタに設定された追加の minfeefilter フィールドを返すようになりました。
    これを使用して、デフォルトの最小リレー料金を下回るトランザクションを受け入れても構わないと思っているピアがあることを検出できます。
  • verbose = truegetrawmempool などの mempool RPC は、トランザクション(またはその未確認の先祖)がノードやマイナーに、より高い料金のトランザクションでの交換を依頼するかどうかを示す追加の「bip125-replaceable」値を返すようになりました。
  • settxfeeは、以前は料金を許可された最低額より低く設定しようとする試みを静かに無視していましたが、警告を表示するようになります。
    特別な値「0」はまだ最小値を要求するために使うことができます。
  • getaddressinfo はウォレットがそのアドレスをおつり出力として使ったかどうかを表す ischange フィールドを提供するようになりました。
  • importmultiは、P2WSH、P2WPKH、P2SH-P2WPKH、およびP2SH-P2WSHをサポートするように更新されました。
     P2WSHおよびP2SH-P2WSHに対する要求は、追加の witnessscriptパラメータを受け入れます。
  • importmultiは、リクエストごとに追加の warningsフィールドを返すようになりました。
    フィールドが無視されたり矛盾がある場合はそれを説明する文字列の配列が表示されます。
  • getaddressinfoは Bitcoin Core がアドレスの scriptPubKey 、オプションのredeemScript、およびオプションの witnessScript について十分に知っている場合、追加の solvableブール値フィールドを返すようになりました。
  • getaddressinfolistunspent、および scantxoutset RPCは、すべてのキーパスとそのアドレスの署名情報(秘密キーを除く)を含む出力記述子を含む追加の descフィールドを返すようになりました。
     descフィールドは、アドレスが解決可能な場合にのみ getaddressinfoおよび listunspentに対して返されます。
  • importprivkey は、インポートされる秘密鍵に対応するアドレスまたは公開鍵のために事前に設定されたラベルを保存します。
     たとえば、以前のリリースの Bitcoin Core でラベル “cold wallet”の監視専用アドレスをインポートした場合、その後秘密鍵をインポートすると、デフォルトでアドレスのラベルがデフォルトの空の文字列ラベル (“”) にリセットされます。 
    このリリースでは、 “cold wallet”の以前のラベルは保持されます。 importprivkeyを呼び出すときにデフォルト以外のラベルをオプションで指定した場合、新しいラベルがアドレスに適用されます。
  • getblocktemplate に関する変更については、マイニングセクションをご覧ください。
  • getmininginfoはこのノードでブロックがRPC経由でアセンブルされなかった場合、 currentblockweightcurrentblocktxを省略します。
  • getrawtransaction RPC&REST エンドポイントは、トランザクションに設定されている未使用の UTXO をチェックしなくなりました。 
    残りの動作は次のとおりです。
    1. ブロックハッシュが表示された場合は、対応するブロックを確認します。
     2. ブロックハッシュが指定されていない場合は、mempoolを確認します。
     3. ブロックハッシュが指定されていないが txindex が有効になっている場合は、txindex も確認します。
  • unloadwallet は同期的になりました。すなわち、ウォレットが完全に読み込まれるまで返却を行いません。
  • importmulti は記述子からのアドレスのインポートをサポートするようになりました。 
    リクエスト内の「scriptPubKey」の代わりに「desc」パラメータを指定することができます。
    また、範囲指定された記述子のオプション範囲として、インポートする範囲の開始と終了を指定できます。 
    importmultiを介してインポートされたキーオリジン情報を持つ記述子は、PSBTの作成に使用するために、それらのキーオリジン情報をウォレットに格納します。 記述子に関する詳細情報は、こちらにあります。
  • listunspent は P2WSH または P2SH-P2WSH 出力の場合 witnessScript も返却するように修正されました。
  • createwalletには、空のウォレットを作成するために使用できるオプションの blank引数が追加されました。
    空のウォレットにはキーや HD シードはありません。 0.18 より古いソフトウェアで開くことはできません。
     空のウォレットに( sethdseedを使用した) HD シード設定、秘密鍵、スクリプト、アドレスやその他のウォッチオンリーのものがインポートされると、ウォレットは空にならなくなり、0.17.xで開くことができます。
     空のウォレットを暗号化すると、HDシードも設定されます。

廃止予定または削除された RPC

  • signrawtransaction はバージョン 0.17.0 で廃止予定および特別な設定オプションによって隠された後に削除されました。
  • 「アカウント」APIは v0.17 で廃止予定となった後削除されています。
    「ラベル」APIは、アカウントAPIの代わりとして v0.17 で導入されました。
     「アカウント」APIから「ラベル」APIへの変更の詳細については、v0.17 からのリリースノートを参照してください。
  • addwitnessaddress はバージョン 0.16.0 で廃止予定となった後に削除されました。
  • generate は廃止予定で、今後のメジャーバージョンでは完全に削除される予定です。
     この RPC はテストにのみ使用されますが、その実装は複数のサブシステム (Walletとマイニング) にまたがって行われるため、ウォレットとノード間のインタフェースを単純化するために廃止予定となっています。
     テスト目的で generateを使用しているプロジェクトは、 generatetoaddress RPCの使用に移行する必要があります。
    これは、ウォレットコンポーネントを必要としないか使用しません。 getnewaddress RPCから返されたアドレスで generatetoaddressを呼び出すと、古い generate RPCと同じ機能が得られます。 
    このバージョンで引き続き generateを使用するには、 -deprecatedrpc=generate構成オプションを指定して bitcoind を再起動してください。
  • validateaddressコマンドの一部は推奨されなくなり、 getaddressinfoに移動されました。
     次の非推奨フィールドは getaddressinfoに移動しました: ismine, iswatchonly, script, hex, pubkeys, sigsrequired, pubkey, embedded, iscompressed, label, timestamp, hdkeypath, hdmasterkeyid
  • addressフィールドは、 validateaddressおよび getaddressinfo RPC メソッドから削除されました。 
    このフィールドは、P2PKH アドレスを使用した際の公開鍵を参照していたため紛らわしいものでした。
    クライアントは、P2SHまたはP2WSHでラップされたアドレスには embedded.addressフィールドを使用し、マルチシグ参加者の検査には pubkeysを使用します。

RESTの変更

  • 新しい /rest/blockhashbyheight/ エンドポイントは、その高さ (ジェネシスブロックの後に何ブロックあるか) に基づいて、現在最良のブロックチェーン内のブロックのハッシュを取得するために追加されています。

グラフィカルユーザインタフェース (GUI)

  • 新しいウィンドウメニューが、既存のファイル、設定、およびヘルプメニューと一緒に追加されます。
     新しいウィンドウを開くような他のメニューのいくつかの項目は、この新しいウィンドウメニューに移動しました。
  • 送信タブで、「必要な料金のみを支払う」チェックボックスがオフになりました。 
    代わりに、ユーザーはカスタム手数料率フィールドの値を、ノードで設定されている最小中継手数料まで減らすことができるようになりました。
  • createwallet RPCを使用してウォレットが作成され、かつ disable_private_keysパラメータが true に設定されている場合には、概要タブで表示される唯一の残高はウォッチオンリー残高になります。
  • 起動時実行オプションは、 macosx 最小バージョン 10.11 以上でコンパイルされている場合、macOS では使用できなくなりました (デプロイ SDK バージョンの設定には CXXFLAGS=“-mmacosx-version-min=10.11” CFLAGS=“-mmacosx-version-min=10.11” を使用してください)

ツール

  • 新しい bitcoin-wallet ツールが Bitcoin Core の他の実行ファイルと一緒に配布されています。
    RPC を使用しなくても、このツールを使えばいまのところ、新しいウォレットファイルを作成したり、ウォレットが暗号化されているかどうか、HD シードを使用しているかどうか、トランザクションの数、アドレス帳のエントリがいくつなのかなど、既存のウォレットに関する基本情報を表示できます。

予定されている変更

このセクションでは他のビットコインソフトウェアやサービスに対して影響を与えるであろう Bitcoin Core の予定されている変更について説明しています。

  • バージョン 0.16.0 以降、 Bitcoin Core の内蔵ウォレットはデフォルトで、ユーザーが支払いを受けたいときに P2SH でラップされた segwit アドレスを生成します。
    これらのアドレスは、広く使用されているすべてのソフトウェアと下位互換性があります。 Bitcoin Core 0.20 (0.18から約1年後に予定) から、 Bitcoin Core はデフォルトでネイティブの segwit アドレス (bech32) を使用するようになり、追加の手数料節約やその他の利点がもたらされます。
    現在、多くのウォレットやサービスがすでに bech32 アドレスへの送金をサポートしています。
    Bitcoin Core プロジェクトで十分な追加での普及が確認された場合は、代わりに Bitcoin Core 0.19 で bech32 形式の受け取りアドレスがデフォルトになります (2019年11月頃)。ユーザーが GUI または RPC で要求した場合、 P2SH でラップされた segwit アドレスは引き続き提供され、更新を望まない人はだれでもデフォルトのアドレスタイプを設定できます。 (同様に、今すぐデフォルトを変更したいと思っている先駆的なユーザは、 0.16.0 以上の任意の Bitcoin Core リリースで addresstype=bech32設定オプションを設定することもできます。)

廃止された P2P メッセージ

  • BIP 61 リジェクトメッセージは現在非推奨です。 
    リジェクトメッセージは P2P ネットワークでは使用例がなく、ほとんどのネットワークノードによるデバッグのためにログに記録されるだけです。 さらに、それらは帯域幅を増加させ、プライバシーとセキュリティにとって有害になる可能性があります。
     v0.17 以降、 -enablebip61=0 オプションを使用して BIP 61 メッセージを無効にすることが可能です。
     完全に削除される前に、 BIP 61 メッセージは将来のバージョンでデフォルトで無効にされる予定です。

低レベルの変更

このセクションでは主にテストで有用で、本番環境にとってはほとんど関係のない RPC の変更点について解説しています。変更は完全性のために言及されています。

RPC

  • submitblock RPC は以前では、はじめにブロックが処理された際に拒否されたブロックが無効であった理由を返しており、その後同じブロックを処理したときには一般的な「重複」拒否メッセージを返していました。
    現在では無効なブロックを拒否する基本的な理由を常に返し、すでに受け入れられている有効なブロックに対してのみ「重複」を返します。
  • 新しい submitheader RPCでは、ブロックヘッダーをブロックから独立して送信できます。これはおそらくテストでのみ有用でしょう。
  • signrawtransactionwithkey および signrawtransactionwithwallet RPC は、オプションで witnessScript、P2WSH または P2SH-P2WSH 出力の場合は witnessScript を受け入れるように変更されました。
    これは listunspent への変更と互換性があります。
  • walletprocesspsbt および walletcreatefundedpsbt RPC については、bip32derivs パラメータが true に設定されていても公開鍵の鍵メタデータがまだ更新されていない場合、その鍵は独立した鍵であるかのように導出パスを持ちます (すなわち、導出パスはなく、そのマスターフィンガープリントはその鍵自身となります)。

設定

  • -usehd 設定オプションはバージョン 0.16 で削除されました。
     このバージョン以降、作成されたすべての新しいウォレットは、階層的決定性ウォレットです。 このリリースでは、-usehd を指定すると無効な設定オプションとなります。

ネットワーク

  • このリリースでは、未使用の incoming 接続スロットがある場合、不正な動作(無効なデータの送信など)でノードが自動的に切断されたピアは、ノードに再接続できます。 
    スロットがいっぱいになると、過去に問題がないノードのためのスペースを空けるために、不正な動作を行ったノードは切断されます(ただし、他の方法、例えばピアを豊富に持たないネットワーク部分に接続するなどして自分のノードを助けているのでなければ)。
     以前は、 Bitcoin Core は、不正なピアの IP アドレスを一定期間 (デフォルトは1日) 禁止していました。 
    これは複数の IP アドレスを持つ攻撃者によって簡単に回避することができました。
    setban RPCを使用するなどして手動でピアを禁止した場合、そのピアからの接続はすべて拒否されます。

ウォレット

  • HD シードが最初に利用可能になった際には、鍵メタデータをアップグレードする必要があります。
     暗号化されていないウォレットの場合、これはウォレットのロード時に発生します。 
    暗号化されたウォレットの場合、これはウォレットが初めてロック解除されたときに発生します。
  • ウォレットが新しく暗号化された場合でも、ソフトウェアを再起動する必要がなくなりました。 
    再起動と同じ効果を得るために、代わりにウォレットの完全なアンロードとリロードが行われます。
  • Bitcoin Core のサブプロジェクトは、コマンドラインユーザーが Bitcoin Core でいくつかの人気のあるハードウェア鍵管理デバイスを使用することを可能にする Hardware Wallet Interaction(HWI) スクリプトを提供します。 詳細はプロジェクトページをご覧ください。

セキュリティ

  • このリリースでは、OpenSSL のものを利用していた乱数生成器(RNG)が Bitcoin Core 自身の実装に変更されていますが、一方で Bitcoin Core によって収集されたエントロピーは OpenSSL に送り出され、プログラムが強い乱雑性を必要とするときに読み戻されます。
     これにより、 Bitcoin Core は OpenSSL に依存する必要がなくなり、過去にセキュリティ問題を引き起こしていた依存関係がなくなりました。 
    新しい実装では、 rdseed CPU 命令をサポートするハードウェアを含む複数のソースからエントロピーを収集します。

特定のプラットフォームに対する変更

  • macOS では、 Bitcoin Core は最初のブロックチェーンのダウンロード中、現在のチェーンチップの後ろの 100 ブロックを超えて追いついたとき、またはチェーンデータのインデックスを再作成するときに、アプリケーションの CPU スロットル ( “app nap”) を止めます。
     これにより、オペレーティングシステムが電力を節約しようとしているために、これらの操作に時間がかかりすぎるのを防ぐことができます。

・お知らせ

■ブロックチェーンエンジニア集中講座開講中!
HashHubではブロックチェーンエンジニアを育成するための短期集中講座を開講しています。お申込み、詳細は下記のページをご覧ください。
ブロックチェーンエンジニア集中講座:https://www.blockchain-edu.jp/

■HashHubでは入居者募集中です!
HashHubは、ブロックチェーン業界で働いている人のためのコワーキングスペースを運営しています。ご利用をご検討の方は、下記のWEBサイトからお問い合わせください。また、最新情報はTwitterで発信中です。

HashHub:https://hashhub.tokyo/
Twitter:https://twitter.com/HashHub_Tokyo

■HashHubでは下記のポジションを積極採用中です!
・コミュニティマネージャー
・ブロックチェーン技術者・開発者
・ビジネスディベロップメント

詳細は下記Wantedlyのページをご覧ください。

Wantedly:https://www.wantedly.com/companies/hashhub/projects