【海外ドラマ・映画】年末年始は海外ドラマ・映画を観よう
スター・ウォーズ コンプリート・サーガ ブルーレイコレクション(9枚組) (初回生産限定) [Blu-ray]
- 出版社/メーカー: 20世紀フォックス・ホーム・エンターテイメント・ジャパン
- 発売日: 2015/11/13
- メディア: Blu-ray
最近はまっている海外ドラマ・映画
スター・ウォーズ
スター・ウォーズ エピソード9 スカイウォーカーの夜明け
絶賛、上映中!
ディズニーシアターなどで復習してから、映画館に足を運びましょう。
ターミネーター
ターミネーター:ニューフェイトはまだ上映中?
U-NEXTなどで復習してから、映画館に足を運びましょう。
U-NEXTギフトコード 30日間見放題+1,200ポイント|オンラインコード版
- 発売日: 2019/12/05
- メディア: Software Download
参考
【数学】二次式の簡単な証明 by Po-Shen Loh
グラレコ
二次方程式の解
数学が好きな人も嫌いな人も2次方程式を習ったことでしょう。2次方程式を解くための方法は歴史を通しても共通であり、世界中の数十億人という人がわたしたちと同じ方法を学んできました。
しかし、最近になって天才数学者ポーシェン・ロー氏によって二次方程式の簡単で新しい解き方が考案されました。数学界の歴史に刻まれるような大発見によって、私たちはややこしい二次方程式の解き方から解放されたのです。
研究論文の詳細は「arXiv」で公開されました
これからの学生は、二次方程式の解の公式を使わなくなるかも知れません。
天才数学者Po-Shen Loh氏の様に学者だけではなく、教育者としても社会に貢献していきたいですね。
教育現場への影響
今は、学生がオンラインで世界中から情報をキャッチアップ出来る時代です。
教員もポーシェン・ロー氏の様な学者の方々から情報をキャッチアップしていかなければ、教育現場は混乱してしまうでしょう。
数学の教科書が刷新されるのも時間の問題。
参考
使える日常英会話フレーズ(乗り物編)
難しいことはわかりませんが、英語が話せる方法を教えてください!
- 作者:スティーブ・ソレイシィ,大橋弘祐
- 出版社/メーカー: 文響社
- 発売日: 2017/07/25
- メディア: Kindle版
シチュエーション
新幹線や飛行機に乗っている時に座席を倒したい時。
座席を倒しても良いですか?
Could I recline my seat please?
Excuse me, do you mind if I recline my seat?
canよりはcouldやwouldを使った方が丁寧ですよね。
参考
PoL(ポル)1周年記念イベント~The Future of Blockchain~
イベント概要
PoL1周年を記念してイベントを開催します。
この1年、本当に多くの出来事がありました。ブロックチェーン業界はまだまだ黎明期です。
共に協力しながら激流を乗り越えるため、ぜひこの機会にブロックチェーン業界における横の繋がりを作ってみてください。
第一部では、PoLを運営する株式会社techtecの田上より、これまでとこれからのPoLの取り組みについて発表します。
第二部では、PoLの誇る全グローバルパートナーに集結していただき、ブロックチェーンの未来について以下のトピックを中心に議論を展開します。
第三部は、PoLユーザー同士によるミートアップの時間となります。飲み物や軽食を用意してお待ちしています。(素敵なプレゼントがあるかも!?)
※本イベントは、全て日本語で行われます。
当日のスケジュール
時間 | セッション | 内容 |
---|---|---|
18:45-19:15 | 受付 | 受付票を表示してお待ちください |
19:20-19:40 | 第一部 | 「PoLのこれまでとこれから」 PoLの取り組みによって得た知見や、海外の潮流について発表します techtec 田上智裕 |
19:45-20:30 | 第二部 | 「The Future of Blockchain」 PoLのパートナー陣と共に日本と世界におけるブロックチェーンの現在と未来を語ります PoL × ALIS × MakerDAO × Kyber Network × 原本 |
20:30-21:30 | 第三部 | 「PoLコミュニティMeetup」 PoLコミュニティで横の繋がりを作りましょう! コンテンツとして、PoLの各種数値や学習傾向などをシェアします |
第一部
株式会社techtec / 田上 智裕 氏
これまでのPoLの取り組み
日本は大学でのブロックチェーン教育が世界の大学と比べても遅れている。
サービスPoL(Proof of Learning)のリリースへ。
PoLトークンを付与し始めてから学習継続率が4倍に!
これからのPoLの取り組み
- Makerカリキュラム公開!
12/10(火)10:00
- Braveカリキュラム制作決定!
いろいろ未定
- PoLエンタープライズ版 提供開始
〜事前募集受付中、2020年2月正式公開〜
- アウトプットを評価する新サービス
12月中のリリース予定
第二部
ゲストスピーカー
Kyber Network Japan community manager / 堀次 泰介 氏
MakarDAO Japan Community Lead / Kathleen Chu 氏
CEO at ALIS Co., Ltd. / 安 昌浩
Brave Software Asia CMO / Ryotaro Chikaki
原本 代表取締役 / Yangtian Wang 氏
・分散型金融(DeFi)の現状と課題
・日本人にとってのDeFiのメリット
・ユーティリティトークンの存在意義
・なぜEthereumなのか
・中国、シンガポール、デンマークの動向:規制や資金調達、実用化の観点から
https://japancryptocoin.org/2019/05/16/defi/
Why DeFi
銀行口座を持っていない人にもサービスを提供できる
1.2008~2009年の金融危機があった
2.すべての人が安定して利用できる
3.透明性が高い
4.Makerは金融業界で安定性を高めるサービスを提供
土日は使えない、インターネットバンキングはとは?
日本におけるDeFiの意義やメリット
日銀の緩和、銀行に貯金
日本だけの政策ではない
マイナス金利もおかしなくない
資産を効率的に増やす方法が必要、それがDeFi
日本の国力をあげる
ゲーム感覚でassetを回せる
https://www.ifinance.ne.jp/glossary/derivatives/der110.html
ユーティリティトークンの存在意義
なぜ?ALISなの?Bitcoinじゃダメなの?
イーサリアム依存したくない。
経済圏を大きくしていきたい。
ALIS大量ユーザーは優遇したい
資産、ガバナンス
BraveでBitcoinを配ってたことも。しかし、流動性が生まれない。
緩い使い方の方が流動性がある。
中国習近平国家主席の発言について解説とその後の動き
https://hi-blockchain.world/china/post-1326/
仮想通貨の取引はまだ厳しい
日本における今後のブロックチェーン業界に必要なことは何か?
法律的に変わって欲しい。
規制は大事がイノベーションが阻害されている。
シンガポールはそこのバランスが良い。
取引所がR&Dを進めるべき
取引所、クリプトファンドが資本を入れている
プライバシーを守りたい。ブロックチェーンを使っているとは言わない。
会場からのQ&A
1.Braveがなぜ?日本に注力、遅れている市場に参入するのか?
Twitter同様やらないてはない。
2.どこを勉強した方がいいのか?
ソフトエンジニア
クリプトゾンビ、solidity
コミュニティーなどで聞く
カイバーはコミットはまだできない?はい。
defijapanコインテレグラフ
3.Bitcoinの思想とは掛け離れて、結局はセキュリティトークンの経済圏争いになるのでは?
コンソーシアムやパブリック、ビットコインやイーサリアムなどの各プロジェクトの歩み寄りは見られる。
4.???
DeFiで保険が足りない。コードを監査する企業が何か
パーミッションレスが当たり前。
ブラックスワン、どうすれば良いか?
5.日銀黒田総裁、ステーブルコインの話があった。日本国内でステーブルコインはどのように使われるのか?
第三部
PoLコミュニティMeetup!
グラレコ
仮想通貨取引所
ウォレット
参考
- 作者:アンドレアス・M・アントノプロス
- 出版社/メーカー: NTT出版
- 発売日: 2017/06/01
- メディア: Kindle版
- ブロックチェーン・プログラミング
【Libra】Libraをさわってみた
Libra
Libraのミッション
Libraのミッションは「多くの人びとに力を与える、シンプルで国境のないグローバルな通貨と金融インフラになる」ことです。
FBは世界通貨をつくろうとしているようです。
Libraとは
Libra通貨
通貨の単位は「Libra」です。
Libraリザーブ
Libraは、「Libraリザーブ」と呼ばれる実在の資産のリザーブによる十分な裏付けと、Libraを売買する取引所の競争力のあるネットワークによるサポートを有する、安定性のあるデジタル暗号通貨としてデザインされています。
Tether(USDT)などは価格の安定を目的にUSDにペッグ(連動)させています。
LibraはUSD、EUR、JPY、GBPの4法定通貨を裏付けとしたLibraリザーブで価格安定を図ります。
Libraブロックチェーン
Libra通貨の基盤は「Libraブロックチェーン」です。
「Move」は、Libraブロックチェーンに独自の取引ロジックや「スマートコントラクト」を実装するための新しいプログラミング言語です。
EthereumのSolidityに相当する、MoveがLibraブロックチェーンで採用されています。
Libra(testnet)インストール
前提条件
All commands in this document assume that:
You are running on a Linux (Red Hat or Debian-based) or macOS system.
You have a stable connection to the internet.
git is installed on your system.
Homebrew is installed on a macOS system.
yumor apt-get is installed on a Linux system.
1.Clone Libra:
$ git clone https://github.com/libra/libra.git && cd libra
or Download Libra:
$ unzip libra-master.zip
2.Install Dependencies:
$ cd libra-master $ ./scripts/dev_setup.sh Welcome to Libra! This script will download and install the necessary dependencies needed to build Libra Core. This includes: * Rust (and the necessary components, e.g. rust-fmt, clippy) * CMake, protobuf, go (for building protobuf) If you'd prefer to install these dependencies yourself, please exit this script now with Ctrl-C. Proceed with installing necessary dependencies? (y/N) > y ...
前提条件をみたしてないから?やっぱり?
Ubuntuも対応して欲しいなー。
... Proceed with installing necessary dependencies? (y/N) > y Installing Rust...... Rust is already installed info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu' info: checking for self-updates stable-x86_64-unknown-linux-gnu unchanged - rustc 1.35.0 (3c235d560 2019-05-20) info: component 'rustfmt' for target 'x86_64-unknown-linux-gnu' is up to date info: component 'clippy' for target 'x86_64-unknown-linux-gnu' is up to date Installing CMake...... 有効なリポジトリーがありません。 「yum repolist all」を実行し、所持するリポジトリーを参照してください。 「yum-config-manager --enable <repo>」でリポジトリーを有効にできます。
3.Run the CLI:
$ ./scripts/cli/start_cli_testnet.sh ... Connected to validator at: ac.testnet.libra.org:8000 usage: <command> <args> Use the following commands: account | a Account operations query | q Query operations transfer | transferb | t | tb <sender_account_address>|<sender_account_ref_id> <receiver_account_address>|<receiver_account_ref_id> <number_of_coins> [gas_unit_price_in_micro_libras (default=0)] [max_gas_amount_in_micro_libras (default 10000)] Suffix 'b' is for blocking. Transfer coins (in libra) from account to another. help | h Prints this help quit | q! Exit this client Please, input commands: libra%
4.Run Your First Transaction:
Libra(testnet)送金
the CLI ClientのRunningチェック
libra% account usage: account <arg> Use the following args for this command: create | c Create an account. Returns reference ID to use in other operations list | la Print all accounts that were created or loaded recover | r <file_path> Recover Libra wallet from the file path write | w <file_path> Save Libra wallet mnemonic recovery seed to disk mint | mintb | m | mb <receiver_account_ref_id>|<receiver_account_address> <number_of_coins> Mint coins to the account. Suffix 'b' is for blocking
AliceとBobのアカウント作成
Aliceのアカウント作成
libra% account create >> Creating/retrieving next account from wallet Created/retrieved account #0 address 9c1f5e284fefd637769c87fd75f9facc5f0ab3f535fb3a7db899dcdd3f5a00dc
Bobのアカウント作成
libra% account create >> Creating/retrieving next account from wallet Created/retrieved account #1 address 69642b7691a5c8f675b9e126ad055f959994a9edc80324e29059885e9523a43f libra% account list
List Accounts
libra% account list User account index: 0, address: 9c1f5e284fefd637769c87fd75f9facc5f0ab3f535fb3a7db899dcdd3f5a00dc, sequence number: 0, status: Local User account index: 1, address: 69642b7691a5c8f675b9e126ad055f959994a9edc80324e29059885e9523a43f, sequence number: 0, status: Local
Libra CoinsをAliceとBobのアカウントに追加
Libra CoinsをAliceのアカウントに追加
libra% account mint 0 110 >> Minting coins Mint request submitted
Libra CoinsをBobのアカウントに追加
libra% account mint 1 52 >> Minting coins Mint request submitted
残高チェック
Aliceの残高チェック
libra% query balance 0 Balance is: 110.000000
Bobの残高チェック
libra% query balance 1 Balance is: 52.000000
Submit a Transaction
アカウントのシーケンスをクエリ
libra% query sequence 0 >> Getting current sequence number Sequence number is: 0 libra% query sequence 1 >> Getting current sequence number Sequence number is: 0
AliceからBobへ10Libra送金
libra% transfer 0 1 10 >> Transferring Transaction submitted to validator To query for transaction status, run: query txn_acc_seq 0 0 <fetch_events=true|false>
transaction statusをクエリ
libra% query txn_acc_seq 0 0 true >> Getting committed transaction by account and sequence number Committed transaction: SignedTransaction { raw_txn: RawTransaction { sender: 9c1f5e284fefd637769c87fd75f9facc5f0ab3f535fb3a7db899dcdd3f5a00dc, sequence_number: 0, payload: {, transaction: peer_to_peer_transaction, args: [ {ADDRESS: 69642b7691a5c8f675b9e126ad055f959994a9edc80324e29059885e9523a43f}, {U64: 10000000}, ] }, max_gas_amount: 10000, gas_unit_price: 0, expiration_time: 1561453406s, }, public_key: 5329bd75b441232fd25b8a1c69da9252ffa4c4eb123ece3fe9255aa40f1f3481, signature: Signature( R: CompressedEdwardsY: [234, 122, 132, 248, 8, 38, 17, 244, 250, 159, 53, 8, 138, 251, 180, 34, 162, 112, 211, 95, 63, 12, 10, 41, 166, 172, 252, 106, 12, 197, 202, 213], s: Scalar{ bytes: [229, 182, 23, 26, 48, 128, 241, 38, 230, 4, 122, 175, 60, 89, 118, 110, 98, 98, 39, 58, 141, 236, 32, 72, 60, 254, 114, 154, 43, 238, 134, 10], } ), } Events: ContractEvent { access_path: AccessPath { address: 9c1f5e284fefd637769c87fd75f9facc5f0ab3f535fb3a7db899dcdd3f5a00dc, type: Resource, hash: "217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97", suffix: "/sent_events_count/" } , index: 0, event_data: AccountEvent { account: 69642b7691a5c8f675b9e126ad055f959994a9edc80324e29059885e9523a43f, amount: 10000000 } } ContractEvent { access_path: AccessPath { address: 69642b7691a5c8f675b9e126ad055f959994a9edc80324e29059885e9523a43f, type: Resource, hash: "217da6c6b3e19f1825cfb2676daecce3bf3de03cf26647c78df00b371b25cc97", suffix: "/received_events_count/" } , index: 0, event_data: AccountEvent { account: 9c1f5e284fefd637769c87fd75f9facc5f0ab3f535fb3a7db899dcdd3f5a00dc, amount: 10000000 } }
AliceからBobへ10Libra送金
これはチュートリアルから少し脱線した作業でした。。。
libra% transferb 0 1 10 >> Transferring [waiting Transaction completed, found sequence number 2] Finished transaction! To query for transaction status, run: query txn_acc_seq 0 1 <fetch_events=true|false>
送金後のSequence Numberをクエリ
libra% query sequence 0 >> Getting current sequence number Sequence number is: 2 libra% query sequence 1 >> Getting current sequence number Sequence number is: 0
送金後のアカウントの残高チェック
libra% query balance 0 Balance is: 90.000000 libra% query balance 1 Balance is: 72.000000
AliceからBobへ20Libra送金完了!
仮想通貨取引所
ウォレット
▼記事の続きは以下へ。
執筆中です。
参考
- 作者:アンドレアス・M・アントノプロス
- 出版社/メーカー: NTT出版
- 発売日: 2017/06/01
- メディア: Kindle版
- ブロックチェーン・プログラミング
【Liquid Network】Liquid by Blockstream
はじめに
Liquidはトレーダーや取引所向けのサイドチェーンベースの決済ネットワークです。
Bitcoinトランザクションより、決済のスピードが速く機密性も高く、デジタルアセットの発行が可能です。
ここでのLiquidは暗号資産交換所のLiquid by Quoinではなく、Liquid by Blockstreamです。
サイドチェーンとは?
サイドチェーンとは、ビットコインに端を発したパブリックブロックチェーンの「側鎖」となる概念です。サイドチェーンの導入により、今まで複数の仮想通貨が持っていた独自のブロックチェーンが相互に結ばれ、仮想通貨全体を一つのブロックチェーンとして転送することが可能になるとされており、親チェーンからサイドチェーンへの資産移動が簡単・自由に行えるようになる革命的な技術として注目を浴びています。
サイドチェーンは、2014年にBlockstreamにより初めて実装に関するホワイトペーパーが発表されました。2016年11月には、米国特許商標庁よりサイドチェーン技術の特許出願書が公開されています。特許自体は2016年5月に申請されたもので、特許防衛ライセンス(DPL)取得に伴い、一般アクセスが可能になっています。
サイドチェーンの実装に関する論文『Enabling Blockchain Innovations with Pegged Sidechains』は有名ですよね。
Blockstream社とは?
Blockstream社はBitcoinおよびブロックチェーンテクノロジーズのパイオニア企業です。Bitcoin contributorsであり、有名な応用暗号学者であるDr. Adam Backにより、同社は2014年に設立されました。
本社はカナダ・モントリオールにあります。
Dr. Adam Backとは?
Proof of Workを発明した暗号学者。
2008年に発明されたBitcoinの基となるSatoshi Nakamotoの論文『Bitcoin: A Peer-to-Peer Electronic Cash System』のReferencesにも名前が記載されています。
[6] A. Back, "Hashcash - a denial of service counter-measure,"
仮想通貨取引所
ウォレット
▼記事の続きは以下へ。
執筆中です。
参考
- 作者:アンドレアス・M・アントノプロス
- 出版社/メーカー: NTT出版
- 発売日: 2017/06/01
- メディア: Kindle版
- ブロックチェーン・プログラミング
【サイドチェーン】Elements code tutorialを読む Part4
▼前回の記事はこちらです。
【サイドチェーン】Elements code tutorialを読む Part3 - kharukaのブログ~お金と技術とキャリア~
Block creation in a Strong Federation - Block Signing
今まで、ブロック生成するためにいずれかのノードから the “generate” command を呼び出していました。デフォルトでは block signing が OP_TRUE であるため、これまではうまくいきました。
$ ADDRGEN1="AzptV6SVTqas3s5pZ5ATc1yvrQ4ojCNXCsJAS95UbwmcZERoN9ob33BCKD3NQQfMdP475EwHm7Gd6Vte" $ echo $ADDRGEN1 AzptV6SVTqas3s5pZ5ATc1yvrQ4ojCNXCsJAS95UbwmcZERoN9ob33BCKD3NQQfMdP475EwHm7Gd6Vte $ e1-cli generatetoaddress 1 $ADDRGEN1 [ "3b8ace02f60f87addf7c3a9397ab4b762c691b2572d7b1d2e7313873e2baa330" ]
Elementsは、 valid block を生成するために必要な signatures の数を指定する a federated signing モデルをサポートしています。ノードに、有効な 2-of-2 multi-signature block 生成条件を要求するように命令してましょう。これは the signblockscript parameter を使用して行われます。このパラメーターは the config file に追加するかノード起動時にオプションとして渡すことが出来ます。 まず、 block sign script を作成出来るように両方のクライアント(ウォレット)のキーを取得する必要があります。
address 生成
$ ADDR1=$(e1-cli getnewaddress) $ echo $ADDR1 AzpjDKjkz7qpyq3CX8CXYTTnw8H5mhyWYZTG9zCBkhWrDtNTiajesceprrHFdiSxHJHCJGtYE8s8ysxQ $ ADDR2=$(e2-cli getnewaddress) $ echo $ADDR2 AzpmayLZiaqLzmtBu3TXpHkaAgcgZrrhrqjdYU3YRTE8cf632LeJVhCGW3uVkRxMyLNyQyoDL8uFQvCp
jq インストール(必要に応じて)
jq is a lightweight and flexible command-line JSON processor.
$ sudo apt -y update $ sudo apt -y install jq
public keys 取得
$ VALID1=$(e1-cli getaddressinfo $ADDR1) $ PUBKEY1=$(echo $VALID1 | jq '.pubkey' | tr -d '"') $ echo $PUBKEY1 031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f21 $ VALID2=$(e2-cli getaddressinfo $ADDR2) $ PUBKEY2=$(echo $VALID2 | jq '.pubkey' | tr -d '"') $ echo $PUBKEY2 02146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d55
private keys 取得
$ KEY1=$(e1-cli dumpprivkey $ADDR1) $ echo $KEY1 cP7SZAXASdw4TJKw74Mst3CbBWZBEeCbSPm5jUbDD3x8qvqS1JX6 $ KEY2=$(e2-cli dumpprivkey $ADDR2) $ echo $KEY2 cQ1L59g8MR112JZPBy5JpaqKrn6NiDSiKAnUQBbS8zXxySk1dvzF
マルチシグアドレス生成と redeemscript 取得
$ MULTISIG=$(e1-cli createmultisig 2 '''["'''$PUBKEY1'''", "'''$PUBKEY2'''"]''') $ echo $MULTISIG { "address": "XK3XdVPBzYz1hp3fdALNEMLymwU6jUZnFk", "redeemScript": "5221031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f212102146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d5552ae" } $ REDEEMSCRIPT=$(echo $MULTISIG | jq '.redeemScript' | tr -d '"') $ echo $REDEEMSCRIPT 5221031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f212102146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d5552ae
ノードを停止して、新しい block signing 方式を設定出来るようにする
$ e1-cli stop $ e2-cli stop
ブロック生成の要件定義
$ SIGNBLOCKARG="-signblockscript=$(echo $REDEEMSCRIPT) -con_max_block_sig_size=150"
ウォレットのクリーンアップ
$ mv ~/elementsdir1/elementsregtest/blocks ~/tmp/elementsdir1/elementsregtest/ $ mv ~/elementsdir1/elementsregtest/chainstate ~/tmp/elementsdir1/elementsregtest/ $ mv ~/elementsdir1/elementsregtest/wallets/wallet.dat ~/tmp/elementsdir1/elementsregtest/wallets/ $ mv ~/elementsdir2/elementsregtest/blocks ~/tmp/elementsdir2/elementsregtest/ $ mv ~/elementsdir2/elementsregtest/chainstate ~/tmp/elementsdir2/elementsregtest/ $ mv ~/elementsdir2/elementsregtest/wallets/wallet.dat ~/tmp/elementsdir2/elementsregtest/wallets/
the 2 of 2 block signing 指定した “signblockscript” オプション付きでデーモンを起動します。
$ e1-dae $SIGNBLOCKARG $ e2-dae $SIGNBLOCKARG
削除したウォレットの the signing keys をインポートします。
$ e1-cli importprivkey $KEY1 $ e2-cli importprivkey $KEY2
signing に必要な the keys がウォレットにインポートされたにもかかわらず、 The “generate” command は機能しなくなりました。the signblockscript argument 付きでデーモン起動したためです。エラーの原因が signblockscript の導入であり、生成した受信アドレスを含むウォレットを削除したためではないことを確認し、新しいものを作成します。 the signblockscript を導入したため、 the signblockscript commands はエラーになります。
$ ADDRGEN1=$(e1-cli getnewaddress) $ echo $ADDRGEN1 AzppTCbKDPMQo39VpajzGFXX9kfjpUVWMp97vuSJN4A79kooUYf7wbeYcAs3wAMUt52WbW1rscJZa24j $ ADDRGEN2=$(e2-cli getnewaddress) $ echo $ADDRGEN2 Azpxn7FbVYU9H1PdJVZ83eFXyAY2w7W8dAWdibN3L9jshSDQCxACpvvKHyS4Qwd8ncpqf3dw4bpEmdoo $ e1-cli generatetoaddress 1 $ADDRGEN1 error code: -32603 error message: ProcessNewBlock, block not accepted $ e2-cli generatetoaddress 1 $ADDRGEN2 error code: -32603 error message: ProcessNewBlock, block not accepted
the “signblockscript” argument 付きでデーモン起動したので、ブロックの生成、署名、リリースは新しいプロセスに従わなければなりません。
The process will be:
Someone (it doesn”t matter who) calls “getnewblockhex” command to propose a new block.
The required number of block signers sign the proposed block in turn.
The signed block is combined by someone using the “combineblocksigs” command.
The result from “combineblocksigs” is submitted using the “submitblock” command. Again, it doesn’t matter who does this as long as the block is signed and valid.
それではさっそく新しいプロセスでブロック生成をしてみましょう。
getnewblockhex
HEX=$(e1-cli getnewblockhex) $ echo $HEX 0000002071a6f9f1ad320a250ce1630e3d92f1e8cac49347c0150838a2ff5d81227619c9c109d405eb2d2d42a48f52e1072756b02d09935420878df51aa940bbf5c864bb82e5955d01000000475221031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f212102146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d5552ae00010200000001010000000000000000000000000000000000000000000000000000000000000000ffffffff03510101ffffffff02016d0bdd59a69dfd5ccbe4ddc07c6a5275baa235022d3bafad31d5d0479915adf101000000000000000000016a016d0bdd59a69dfd5ccbe4ddc07c6a5275baa235022d3bafad31d5d0479915adf101000000000000000000266a24aa21a9ed94f15ed3a62165e4a0b99699cc28b48e19cb5bc1b1f47155db62d63f1e047d45000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000
getblockcount
$e1-cli getblockcount 0
0が返ってきます。 submitblock コマンドでブロックを submit してみましょう。
$ e1-cli submitblock $HEX
block-proof-invalid
エラーが返ってきます。
block-proof-invalid
the block count はまだ0です。
$ e1-cli getblockcount
0
the 2 of 2 requirement を満たすように、各デーモンを使ってブロックに署名しましょう。
signblock
$ SIGN1=$(e1-cli signblock $HEX) $ echo $SIGN1 [ { "pubkey": "031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f21", "sig": "3044022011e2a231c49fa14208ec868b0605c58669baffc734ea14cd3aa406f21a435f0702205c2334bd4400855be5f8681c22c7070b37a51e904a4718856eb3eee0073c20ad" } ] $ SIGN2=$(e2-cli signblock $HEX) $ echo $SIGN2 [ { "pubkey": "02146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d55", "sig": "304402201f0617f9f38f4a7c562a7c589e3df3f52ba5c1104b94c4d01a662d457af2bca502201dc59cd2ad1bd56f88e2d3ed453e54eff6d00d736e0e208d306b1a83a734e920" } ]
combineblocksigs
$ SIGN1DATA=$(echo $SIGN1 | jq '.[0]') $ echo $SIGN1DATA { "pubkey": "031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f21", "sig": "3044022011e2a231c49fa14208ec868b0605c58669baffc734ea14cd3aa406f21a435f0702205c2334bd4400855be5f8681c22c7070b37a51e904a4718856eb3eee0073c20ad" } $ SIGN2DATA=$(echo $SIGN2 | jq '.[0]') $ echo $SIGN2DATA { "pubkey": "02146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d55", "sig": "304402201f0617f9f38f4a7c562a7c589e3df3f52ba5c1104b94c4d01a662d457af2bca502201dc59cd2ad1bd56f88e2d3ed453e54eff6d00d736e0e208d306b1a83a734e920" } $ COMBINED=$(e1-cli combineblocksigs $HEX "[$SIGN1DATA,$SIGN2DATA]") $ echo $COMBINED { "hex": "0000002071a6f9f1ad320a250ce1630e3d92f1e8cac49347c0150838a2ff5d81227619c9c109d405eb2d2d42a48f52e1072756b02d09935420878df51aa940bbf5c864bb82e5955d01000000475221031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f212102146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d5552ae8f00463044022011e2a231c49fa14208ec868b0605c58669baffc734ea14cd3aa406f21a435f0702205c2334bd4400855be5f8681c22c7070b37a51e904a4718856eb3eee0073c20ad46304402201f0617f9f38f4a7c562a7c589e3df3f52ba5c1104b94c4d01a662d457af2bca502201dc59cd2ad1bd56f88e2d3ed453e54eff6d00d736e0e208d306b1a83a734e920010200000001010000000000000000000000000000000000000000000000000000000000000000ffffffff03510101ffffffff02016d0bdd59a69dfd5ccbe4ddc07c6a5275baa235022d3bafad31d5d0479915adf101000000000000000000016a016d0bdd59a69dfd5ccbe4ddc07c6a5275baa235022d3bafad31d5d0479915adf101000000000000000000266a24aa21a9ed94f15ed3a62165e4a0b99699cc28b48e19cb5bc1b1f47155db62d63f1e047d45000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000", "complete": true }
the 2 of 2 の要件を満たすのに十分な keys の signatures をもつので the “complete” property の結果が “True” であることがわかる。従って、この文脈で “complete” は有効な ‘n of m’ multi-sig の signatures を十分に持っていることを意味します。 次に、 the combineblocksig command の結果から the signed block hex を抽出し、 submit します。 a signed and valid block hex を持つ限り、誰がこれを実行するかは問題ではありません。 submitblock
$ SIGNEDBLOCK=$(echo $COMBINED | jq '.hex' | tr -d '"') $ echo $SIGNEDBLOCK 0000002071a6f9f1ad320a250ce1630e3d92f1e8cac49347c0150838a2ff5d81227619c9c109d405eb2d2d42a48f52e1072756b02d09935420878df51aa940bbf5c864bb82e5955d01000000475221031fbb81ba5152df01f99c81f0f40e9a7dbe602b6c0789464a571671963b787f212102146b6e1bf588e8e4a67b161917bce137176976d21bfe3803be519820b0e89d5552ae8f00463044022011e2a231c49fa14208ec868b0605c58669baffc734ea14cd3aa406f21a435f0702205c2334bd4400855be5f8681c22c7070b37a51e904a4718856eb3eee0073c20ad46304402201f0617f9f38f4a7c562a7c589e3df3f52ba5c1104b94c4d01a662d457af2bca502201dc59cd2ad1bd56f88e2d3ed453e54eff6d00d736e0e208d306b1a83a734e920010200000001010000000000000000000000000000000000000000000000000000000000000000ffffffff03510101ffffffff02016d0bdd59a69dfd5ccbe4ddc07c6a5275baa235022d3bafad31d5d0479915adf101000000000000000000016a016d0bdd59a69dfd5ccbe4ddc07c6a5275baa235022d3bafad31d5d0479915adf101000000000000000000266a24aa21a9ed94f15ed3a62165e4a0b99699cc28b48e19cb5bc1b1f47155db62d63f1e047d45000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000 $ e2-cli submitblock $SIGNEDBLOCK
getblockcount
$ e1-cli getblockcount 1 $ e2-cli getblockcount 1
one block 生成に成功しました。 次に、次のセクション(ブロックチェーンをサイドチェーンとして実行している別のブロックチェーンに “peg” する方法を説明します)に備えて、 daemons をシャットダウンします。
e1-cli stop e2-cli stop
ブロックチェーンをサイドチェーンとして動作させる必要がない場合は、次のセクションをスキップできます。そして、 the bitcoin daemon も同様にシャットダウンするため the “b-cli stop” コマンドを実行すべきです。
仮想通貨取引所
ウォレット
▼記事の続きは以下へ。
執筆中です。
参考
- 作者:アンドレアス・M・アントノプロス
- 出版社/メーカー: NTT出版
- 発売日: 2017/06/01
- メディア: Kindle版
- ブロックチェーン・プログラミング