Crypto Life

Tech in X

ブロックチェーンを中心にテクノロジーや東南アジアのスタートアップ情報を提供

ビットガールズ公式ソング「恋のクラウドセール – Girls Go ICO」のテクニカルな解説

今月のビットコイナー反省会を見ていたら、Bit Girls公式ソングがリリースされたとの情報が!Bitcoin的には意外にしっかりした歌詞だったので(ポエム的には。。。笑)、テクニカルな解説(とポエムの訳)を加えていきます。


ビットコイナー反省会Ep13 ゲスト ブロガーしゅうまいさん

曲はこちらのサイトから聞くことができます。

ビットガールズ:番組公式テーマソング「恋のクラウドセール – Girls Go ICO」が完成

 

歌詞一番(赤字が元の歌詞)

You! テクニカルには読めなくても成り行きでもいいじゃない

訳「私のことはよく知らないかもしれないけど応援してよ」

Bitcoin投資に限らず、株式投資も同様ですが、チャート分析結果に基づいて購入する方法をテクニカル分析と言います。逆に、投資資産の価値を算定してその算定価値に基づいて投資するのはファンダメンタルズ分析ですね。

 

また、分析後実際に買う際には、2つの選択肢があります。ひとつは指値買いでこれは指定した価格で取引所に注文を出し、売り手とマッチングが成立した場合のみ購入可能な方法です。逆に成り行き買いは購入数量だけ指定して、購入金額は指定してない購入方法のことを指します。

 

Me! トレカブ主の秘密鍵で運命揺れるトランザクション

訳「応援してくれるみなさんの力で私たちの運命が決まってしまうのよ」

トレカブはBitgirls用語で、各Bitgirlsごとに配布されているトークンのことを指します。このトレカブ数に応じて、HYOUというトークンが配られて投票に活用できます。以下の写真はトレカブの例ですが、ものすごく風⚪︎店の写真っぽい

f:id:steinith310:20170206022017p:plain

秘密鍵Bitcoinの送金(トランザクション)の際に必要になるもので、送金者の真正性を証明するものです。トランザクションとブロックチェーンの関係についてはこちらにまとめています。

cryptocoin.hatenablog.com

 

織り込み済みのチャートでは今が底、今夜にもTo da moon!

訳「今手をつけておかないと、他の人に取られちゃうわよ」

チャートには基本的には非公開の情報も含めて、情報が価格に織り込まれていると考えられています。To da moonはよくわからないけど、価格が月まで届いちゃうぞってこと?

 

I I Aye Aye 愛を下さい Lie Lie Nai Nai 嘘じゃない

訳「投票してね。損はさせないから」

省略。

 

Hard Fork 絶対不可の 恋のクラウドセール

訳「私への投票はいつでも有効よ」

Hard Forkは、クライアントソフトウェアのバージョンアップに伴い、旧仕様が無効になり、新仕様のみが有効になることです。時には旧仕様派が抵抗し、ブロックチェーンが永続的に分岐することもあります(EthereumのEthereum Classicへの分岐などが有名です)。

 

クラウドセールスはクラウドファンディングの一種で、投資を募る人が自ら暗号通貨を作成し、その暗号通貨を配布した対価として現金を受け取るスキームのことをいいます。

 

I I Aye Aye 愛を下さい Bye Bye Nai Nai まだ終わらない

訳「投票してね。損はさせないから」

省略。

 

Market Cap 改ざん不可 We’re Bit Girls GO ICO

訳「応援してくれたことは証拠として残るわよ。We're Bit Girls Go 金よこせ」

Market CapはMarket Capitalizationの略で時価総額のことです。ICOクラウドセールと同じで、新規作成した暗号通貨の対価に、投資家から資金を調達することを指します。

 

歌詞二番

You! ショートよりもロングなのは気持ち次第でシグナルじゃない

訳「他の人に目移りせずに私に投票してくれるのは、周りに流されたからじゃなくて、あなたの気持ちからなのよね?」

ショートはBitcoinを売り建てで持つこと、ロングはBitcoinを買い建てで持つことですね。シグナルというのは、チャートなどの分析から「ここが買い時だ」というサインが出たことを指しています。

 

Me! 胸騒ぎのハッシュレートでヨコヨコからのボラの予感

訳「でも、私最近注目されてるみたいなの」

ハッシュレートはBitcoinのマイニング力を指す指標で、マイニングのためにどれくらいのマシンパワーがあるかを指しています。ヨコヨコからのボラはおそらく、しばらくチャートに動きがなかったのが、これから取引量が増えて価格の変動量(ボラ=ボラティリティ)も増加するということでしょう。

 

夢のサトシのお告げでは爆上げの、あの日まで HODL Tight!

訳「私の人気は伸びるわよ。応援し続けてね!」

サトシはみなさんご存知Bitcoin論文を発表したBitcoin産みの親ですね。HODLはBitcoin価格が下がってもHoldし続けることらしいです。もともとは、Bitcoin関連のコミュニティで流行った言葉とのこと(これは初めて知った)。

HODL - Genx Notes

 

I I Aye Aye 愛を下さい Lie Lie Nai Nai 嘘じゃない

訳「投票してね。損はさせないから」

省略。

 

Blockchain 取消不可の 恋のクラウドセール

訳「あなたの応援は永遠に有効よ。」

Blockchainは過去の取引を改ざんすることが非常に難しい仕組みになっています。

 

改ざんするにはマシンパワーが必要になりますが、そのマシンパワーを改ざんに回すより、マシンパワーをBitcoinの採掘に回したほうが利益が出るため、改ざんへのインセンティブが非常に低くなっています(現実問題、改ざんをするためのマシンパワーを保持しているグループは現在存在しません)。

 

クラウドセールは説明済みなので略。

 

I I Aye Aye 愛を下さい Bye Bye Nai Nai まだ終わらない

訳「投票してね。損はさせないから」

省略。

 

Market Cap 改ざん不可 We’re Bit Girls GO ICO

訳「応援してくれたことは証拠として残るわよ。We're Bit Girls Go 金よこせ」

説明済みのため省略。

 

歌詞三番

プールに溢れたトークンも受け止める、待てないのConfirmation!

訳「応援してくれた人は誰であっても私の味方」

作成されたトランザクションは約10分間に一度、マイナーによってマイニングされブロックチェーンに記録されます。ブロックチェーンにトランザクションが記録されると二重支払いの可能性が低くなりますが、100%ではありません。しかし、そのトランザクションが含まれるブロックの後ろにブロックが積み重なることで改ざんされる可能性はだんだんと減少していきます。

 

このブロックが積み重なっていくことをConfirmationといい、通常は6Confirmation (当該トランザクションを含めて6ブロック分が作成される状態)されると取引は100%安全とみなされています。

 

もちろん、Confirmationをせずともトランザクションを正当なものとして受け止めることはできますが、その場合はコインの受け取り手がリスクを負うことになります。

 

I I Aye Aye 愛を下さい Lie Lie Nai Nai 嘘じゃない

I I Aye Aye 愛を下さい Sigh Sigh Nai Nai 息も付けない

Blockchain 取消不可の 恋のクラウドセール

I I Aye Aye 愛が足りない Bye Bye Nai Nai まだ終わらない

Market Cap 改ざん不可 We’re Bit Girls GO ICO

We’re Bit Girls GO We’re Bit Girls GO

We’re Bit Girls GO ICO

以上、繰り返しなので省略。

 

まとめ

この歌詞、なかなか詳しい人が書いていますね笑。ちなみに、佐野真彩ちゃんと朝倉香ちゃんが好きです。でも、本当はビットガールズに出てくる吉木りさのほうが好き。

 

Bitgirls情報はこちらから。

bitgirls.io

インドネシアでBitcoinを入手する方法 Indodax口座開設編

f:id:steinith310:20170204235247p:plain

超マイナーな読者層向けですが(笑)、インドネシアでBitcoinを購入、取引する方法をご紹介します。インドネシアでは投資方法が「定期預金」か「投信購入」くらいに限られているので、是非投資のオプションにBitcoinも追加してみてください。

 

ちなみに、今回ご紹介する取引所であれば、Bitcoin以外にもEthereum、NEMなどの主要な暗号通貨は取引可能なようです (ルピアとは直接交換できず、Bitcoinとの取引に限定されているようですが)。

 

(2018年1月15日 追記)

現在インドネシアでは、Bank Indonesiaがビットコインを決済手段として使うことを禁じているほか、OJKがビットコイン取引の規制を検討しています。現時点で未確定のため記事は残していますが、現在の状況を考慮すると、インドネシアで取引を行うことはオススメしません。

(2018年6月2日 追記)

→最近韓国、シンガポール系の取引所なども設立されており、以前より見通しは若干楽観的ですが、取引所には多額の現金、仮想通貨を置かないようにすることをオススメします。例えば、Indodaxなどの取引所で仮想通貨にした後、Binanceなどの別の取引所か、自分のウォレットに引き出すことを推奨します。

www.cryptocoiner.info

 

Bitcoinってどうやって手に入れるの?

Bitcoinを手に入れる方法は、以下の3種類が考えられます。

  1. 採掘(マイニング)して入手する
  2. Bitcoinを既に持っている人から入手する
  3. 取引所で購入する

1番については、専用のマイニング装置を揃えなければ実質不可能なので却下。2番については、まわりにBitcoinを持っている人がいたり、ビジネスを営んでいる人なら可能ですが、あまり一般的ではありません。

ということで、「3. 取引所で購入する」に絞ってインドネシアでの購入方法をご紹介します。

 

取引所での購入

インドネシアでルピア建でBitcoinを購入するには、以下のインドネシア最大手の取引所を利用することをオススメします。インドネシア語だけでなく、英語で基本的にはやりとりができるので、日本人の方でも気軽に始められるかと思います。

 

Indodax (旧Bitocoin.co.id)

vip.bitcoin.co.id

 

手順

以下のステップでBitcoinを購入できます。

  1. ユーザ登録
  2. 認証
  3. 入金
  4. Bitcoin購入

 

1. ユーザ登録

まずはBitcoin.co.idにユーザ登録をします。

f:id:steinith310:20170204235247p:plain

メールアドレスとインドネシアでの携帯電話番号を入力し、Registerを押すと携帯電話番号とユーザ名、パスワードなどの入力を求められるので、必要事項を入力してください。入力を完了すると、指定したメールアドレス宛にメッセージが来るので、URLをクリックしてアカウントをActivateしてください。

f:id:steinith310:20170204235808p:plain

Activateしたあと、携帯電話番号の確認のためにSMSにパスコードが送られてきます。パスコードを画面上で入力すると、登録完了です。

 

2. 認証

認証のために、2種類の情報をBitcoin.co.idのサイトにアップロードする必要があります。

  • 所定の文言を記入した紙と一緒に撮った写真(顔を判別できるもの)
  • パスポートの写真のページ

私はすでに登録が完了しているため表示されていませんが、赤枠で囲ったInformationあたりにポップアップで登録を促すメッセージが出てくるかと思います。この2つの情報を携帯電話などで撮影してサイト上からアップロードすると、約1日で認証完了の連絡がメールに送られてきます。なお、この作業は「3. 入金」と並行して作業可能です。

 

顔写真を送ることに抵抗がある方も多いと思いますが、インドネシアでは本人認証を正しくしないと、OJKなどの金融当局に睨まれて、取引所を閉鎖されかねないので、取引所側としてはMustな手続きになっています。ここを終えればBitcoin入手まであと少し!

f:id:steinith310:20170205001113p:plain

3. 入金

入金はいくつか方法がありますが、私はBCAのATMから振り込みを行っていますので、その方法を紹介します。まず赤枠のDeposit / Withdraw Rupiahを選択し、送金画面を開きます。

f:id:steinith310:20170205001449p:plain

その後、入金方法の選択画面が出てくるので、入金額と口座番号を入力し、入金方法に「BCA (ATM)」を選択しますす。その次の画面で振込先の銀行を選択させられますが、ここでは手数料の一番安いCIMB Niagaにしておきましょう (BCAからの送金手数料は6500ルピア)。

 

すると、以下のような画面が表示されます。

f:id:steinith310:20170205002205p:plain

ここでは振込先のCIMB Niagaの口座番号が表示されますので、Amount of Dipositに表示された金額をATMから振り込んでください。

 

なお、送金者の特定のために、Bitcoin.co.id側で入金予定額に3桁の金額を足したものを、Amount of Dipositには表示されています。例えば、5,000,000ルピアを入金額に指定した場合、5,000,000ルピアを入金するのではなく、Bitcoin.co.idから指定された3桁の金額 (例えば、123)を追加した5,000,123ルピアを入金する必要があります。難しく考える必要はなく、Amount of Dipositに表示された金額を入金すると考えていただけば問題ありません。

 

ATMの操作ですが、キャッシュカードを入れた後、まず「Transfer」を選択してください。「Bank Lain(「その他の銀行」という意味)」を選択すると、Bank Codeの入力を求められるので、CIMB NiagaのBank Codeの「022」を入力してください。すると、口座番号を求められるので、上の画像のBank Account Numberに表示された口座番号を入力し、最後に入金額を入力したら完了です。

 

送金完了後、レシートがATMから出力されますので、忘れずに持ち帰ってください!最後に、レシートの写真を撮って、サイト上にアップロードしたら手続きが完了します。概ね1営業日中には入金がサイトに反映されると思います。

 

ちなみに、ATMからのTransferの他には、Easy Payなどのローカルな決済システムを使うことはできますが、クレジットカードによる入金はまだ認められていないようです。そのため、ATM(またはオンラインバンク)からの入金が日本人には現実的かと思います。

 

4. Bitcoinの購入

Bitcoinの購入方法は2種類あります。ひとつは「Buy / Sell Bitcoin Instantlly」でBitcoin.co.idから提示された金額で直接購入する方法。こちらは取引所で取引されているものを買うわけではなく、Bitcoin.co.idから直接購入する形になるので即座に購入できますが、レートは若干悪くなっています。

 

そのため、通常はBitcoin Spot Marketを通して購入することになります。Total Rupiahのところに購入したいだけのルピアの値段を入れて、Price欄にBitcoinの価格を入力すると自動でBitcoinの予定購入量が表示されます。問題なければ、Continueを入力し取引を申し込みしてください。

 

市場でうまくマッチングすれば、Bitcoin.co.id上のルピアの額が減少し、かわりにBitcoinが手に入っているはずです!

 

 

税金

Bitcoin.co.idではBitcoin購入時に取引価格の10%をVAT(付加価値税)として徴収されます。これは、インドネシアではBitcoinの取引をモノの売買とみなしているためです。

https://help.bitcoin.co.id/en_US/apakah-perdagangan-bitcoin-di-bitcoin-co-id-dikenakan-pajak/

 

また、譲渡所得税についてBitcoin.co.idにメールで確認しましたが、あまりよい回答を得られませんでした。彼等曰く、自動徴収されるVAT以外は税金を全く払う必要がないと言っていましたが、利益が出ている場合は売却時に譲渡所得として算定されるはずなのでご注意ください。

 

通常、税金関係は年に1回会計事務所から書類の提出を求められると思いますので、その際に担当の会計士に確認することをオススメします。会計士に聞く限りは、Bitcoinを現金に戻さない限りは譲渡所得は発生しないため、インドネシアにいる限りはBitcoinを現金化しないほうがよいかと思います。

 

どうしてもトレードをしたいという人は、Bitcoin以外のアルトコインに投資して、利益確定の際にBitcoinに戻すことをオススメします。Bitcoinとして持っている限りは、課税されることはないので。

cryptocoin.hatenablog.com

 

 

なお、出張者でインドネシアに来ている方も、インドネシア国内でBitcoinを売買して利益を上げた場合はBitcoinの売買利益に限ってインドネシアでの国内所得とみなされて課税対象となるおそれがあるので、ご注意ください (そこまで捕捉しきれないとは思いますが)。

 

Bitcoin.co.id

vip.bitcoin.co.id

Mastering Bitcoinを読み解く 第3回 物理ファイル

「Mastering Bitcoinを読み解く」、第3回は物理ファイル編です。マニアックですね笑

 

Mastering Bitcoinからの情報も参考にしていますが、以下のフォーラム上の回答が非常に分かりやすくまとまっています(もう少し調べるとWikiに書いてありました笑)。物理的には、主に4つのデータフォーマットからBitcoinは構成されています。

bitcoin.stackexchange.com

Data directory - Bitcoin Wiki

Bitcoinのデータ構造

ブロックチェーン

まずはブロックチェーンそのもの。データベースは使用せず、Rawデータの形式で保存されています。ファイルパスは、blocks/blk*.dat。

インデックス

通常のデータベース同様、データへのアクセススピードをあげるために、ブロックチェーンを要約したインデックス情報を保持しています。ここには全ブロックのメタ情報とブロックへの参照情報が含まれています。

 

このインデックスの作成には、Key-Value型のデータベースであるLevelDBが使用されています。ファイルパスは、blocks/index/*。 

Chainstate (UTXO管理DB)

UTXO (Unspent Transaction、まだ次の支払いに使用されていないトランザクション)を管理するファイルです。トランザクションの検証には、トランザクションで使用されている、過去のトランザクション情報がまだ未使用であるかを検証する必要があります。

 

このUTXO専用の管理ファイルを使用することで、トランザクションの検証を高速に実施することができます。なお、UTXOの管理にもインデックス同様Level DBが使用されています。ファイルパスは、chainstate/*。

UNDOファイル

通常のデータベース同様、データをRoll Backする必要がある場合に、このファイルが使用されます。Roll Backとは通常データベースに記録した情報が間違っていたり、不完全だった場合に、決められた復旧ポイントに戻ることを指します。

 

Bitcoinの場合は、Chainstate用にUNDOファイルが作成されています。具体的にどのような場面で使用されるかというと、ブロックチェーンが分岐して、そのクライアントが最長とみなしていたチェーン (A) よりも長いチェーン (B) が見つかった場合に使用されます。この場合、Bに含まれるUTXOを使用済みとマークするとともに、Aに含まれているUTXOをRoll Backする必要があります。BitcoinではUNDOファイルを利用して、このRoll Backを実現しているというわけです。ファイルパスは、blocks/rev*.dat。 

まとめ

基本的にはブロックデータとそのインデックス、Roll BackのためのUNDOファイルに、高速に検証するためのキャッシュ構造(UTXOファイル群)から構成されており、一般的なデータベースと思想は似ていますね。

 

ちなみに、Bitcoinの本体とは少し離れますが、Bitcoin CoreのWalletアプリにはBerkeley DBが使用されているようです。WalletをLevelDBに統合してしまうと既存ユーザへのインパクトが大きすぎるので、Berkeley DBからLevelDBに統合されることはないでしょう。

why need both level db for index of blockchain and Berkeley db for wallet? · Issue #4123 · bitcoin/bitcoin · GitHub

Mastering Bitcoinを読み解く 第2回 ネットワーク

「Mastering Bitcoinを読み解く」第2回です。今回はネットワークに関してまとめます。

 

第1回(トランザクション編)はこちら

cryptocoin.hatenablog.com

参考文献

Mastering Bitcoin

Mastering Bitcoin

 

 

ノード立ち上げ時の動作

BitcoinネットワークはP2Pネットワークであり、中央集権的なサーバーが存在しません。そのため、何かしらのウォレットアプリをダウンロードしてPC上にBitcoinノードを立ち上げたタイミングで、ネットワーク上のいずれかのノードを選択して接続する必要があります。

 

このノードの選択にはDNSが使用されます。DNS seedとよばれるDNSサーバー群がBitcoinノードのIPアドレス情報を管理しており、いずれかのDNS seedに問い合わせることで、接続先のノード情報をランダムに手に入れることができます。Bitcoin Coreクライアントの場合は、6つのDNS seed情報をデフォルトで含んでいます (Mastering Bitcoinでは5つと記載されていましたが、ソースコードを見る限り現在は6種類のようです)。

 

chainparams.cpp

f:id:steinith310:20170130225933p:plain

 

DNSについては、念のためリンクをはっておきます。

DNSとは - JPNIC

 

ブロックチェーンのSync

さて、Bitcoinネットワーク上の他のノードへの接続が完了した後で、フルノードの場合はブロックチェーン情報をダウンロードする必要があります。他のノードからこの情報を受け取るわけですが、その際には以下のようなステップで情報が交換されます。

 

  1. まずお互いにgetblocksメッセージを送信し、自分が持っている最後のブロックのハッシュ値を交換する。
  2. 1で受け取ったハッシュ値から、自分と相手のどちらが最新のブロックチェーンを保持しているかを確認する。
  3. 最新のブロックチェーンを保持している側は、invメッセージを使用して、不足しているブロックのハッシュ情報を相手方に送信する。
  4. 不足しているブロック情報をgetdataメッセージを利用して最新のブロックチェーンを持つノードに要求し、ブロック情報を受け取る。

 

一方SPVノード(Lightweightノード、全ブロックチェーン情報を保持しない軽量クライアント)は、ブロックヘダー情報のみを接続しているノードから受け取ります。

 

SPVノードのトランザクション検証

ルノードは全ブロックチェーン情報を保持しているため、トランザクションがブロックチェーンに含まれたか」、また「二重支払いされていないか」を容易に検証できます。一方、SPVノードの場合は全ブロックチェーンの情報を保持していないため、検証には工夫が必要になります。

 

トランザクションがブロックチェーンに含まれたか

SPVノードは、マークルツリー、マークルパスとよばれる仕組みを利用し、トランザクションを含むブロックを特定します。マークルツリーは二分木構造になっており、各リーフはそれぞれのトランザクションハッシュ値を格納しています。

 

ここでは、AとBという2つのトランザクションを保持する二分木を例に考えてみます。まず、AとBにそれぞれハッシュ関数を適用し、リーフA'とリーフB'を作成します。さらに、A'+B'にハッシュ関数を再適用することで、ルートAB'を作成します。

 

このツリーを使用すると、あるトランザクションがこのブロックに含まれることを簡単に検証することができます。例えば、Aというトランザクションがこのブロックに含まれているかを、あるSPVが検証したい場面を想定してみましょう。

 

SPVが「Aを検証したい」ということを接続しているノードに告げると、ノードはルートノード (AB') とリーフノード (B')の情報を送ってきます。SPVはAトランザクションにハッシュをかけてA'を作成して、B'の情報と組み合わせてAB'を作成します。SPVが作成したAB'と送られてきたAB'が一致しない場合は、トランザクションAの情報がそのブロックに含まれていないということになります。

 

二重支払いされていないか

マークルツリーを使用することで、すべてのブロックチェーン情報を持たないSPVでも、あるトランザクションが、ブロックに含まれているかどうかを検証可能であることがわかりました。しかし、二重払いが行われたかどうかは、全ブロックチェーン情報を持たないSPVでは検証できません。

 

そこで一般的には、対象のトランザクションを含むブロックの上に、6ブロック以上が積み重なったことをもって、二重支払いなしとみなします。

 

Alert System

Bitcoinコア開発メンバーが保持する秘密鍵で署名したメッセージを、全ノードに送付する機能です。一応、過去に利用されたこともあったようですが、現在ではコミュニティが発達してアラート機能を利用して周知する必要性が薄れてきたため廃止されました (Mastering Bitcoinにはまだ存在している前提で記載されていましたが、すでに完全廃止が決まった模様)。

btcnews.jp

 

まとめ

Mastering Bitcoinは2014年12月の販売から約2年しか経過していないにもかかわらず記述が古くなっている点が散見され、Bitcoinを取り巻く環境の変化するスピードの早さを感じました。

 

本やブログから情報を収集するにしても、最後は最新のソースコードを見て確認する癖が大事そうですね。

 

第3回はこちら

cryptocoin.hatenablog.com

 

 

Mastering Bitcoinを読み解く 第1回 トランザクション

遅ればせながらMastering Bitcoinを読んでみました。分かっていた気になっていたけど実は分かっていなかった点があぶり出されて、非常にすっきりした気分です(笑)。

Mastering Bitcoin

Mastering Bitcoin

 

 

備忘を兼ねて、解消された不明点をまとめますが、あまりにもきちんと理解できていなかった箇所が多いので、何回かに分けてまとめます。第1回はトランザクションから。

 

トランザクションのValidateの順番

あるノードから受信したトランザクションは、以下の検証ステップを経て、各ノードに正統なトランザクションとして受け入れられます。念のためですが、これはブロックチェーンへのブロック書き込みとは別の概念です。

  1. 受信したトランザクションに含まれるInputからUTXO(未使用のOutput, Unspend Transaction Output)を特定する
  2. UTXOからscriptPubKeyとよばれるスクリプト(一般的には、送信者のBitcoinアドレスを含む)を取り出す
  3. InputからscriptSigとよばれるスクリプト(一般的には、送信者のデジタル署名とPublic Keyを含む)を取り出して、scriptPubKeyとscriptSigを実行する

 

トランザクションの基礎はこちら。

cryptocoin.hatenablog.com

 

トランザクションスクリプト P2PKHとP2PK

ScriptPubKeyとScriptSigとサラッと書きましたが、どちらもトランザクションスクリプトとよばれるBitcoin専用の簡易言語で作られたプログラムのことを指しています。

 

なぜ専用の言語が使われるかというと、複雑な処理を認めないことでBitcoinネットワークへの攻撃を防止するためです。例えば、このプログラムはチューリング不完全な言語として設計されており、プログラム内でループ処理が認められていません。そのため、無限ループ処理を組み込んだ、DDoS攻撃を防止することができます。

 

トランザクションスクリプトは5種類のスクリプトが認めれています。最も一般的なスクリプトはP2PKH (Pay-to-Public-Key-Hash)と呼ばれるスクリプトになります。

 

P2PKHはその名前の通り、Public KeyのHash、すなわちBitcoinアドレスを支払い先に指定したScriptのことを指します。これとは別にP2PK (Pay-to-Public-Key)というトランザクションスクリプトもあり、この場合はPublic Keyを受取人に指定して送信することになります。P2PKの方がシンプルな構成ですが、セキュリティの観点からP2PKHがメインで使われています(多分。ちょっとここのP2PKHがメジャーな理由は自信なし)。

 

P2PKHを使用した場合のトランザクション検証の動きを簡単にまとめると、以下のような流れになります。

前提 InputとOutputに含まれる情報

Input: 送信者のデジタル署名、送信者のPublic Key

Output: 送信者のBitcoinアドレス

フロー
  1. 送信者のPublic Keyが本物であることを確かめるために、InputのScriptに含まれるPulic KeyがBitcoinアドレス(=Pubilc Keyにハッシュをかけたもの、Outputに含まれる)と一致するかを検証
  2. 一致した場合は本人性の確認のために、デジタル署名(Inputに含まれる)を送信者のPublic Key (Inputに含まれる)で検証

 

ちなみに、P2PK(Pay-to-Public-Key)を使用した場合は、Output (UTXO) に送信者のPublic Keyを含んでいるため、2番のデジタル署名の検証のみで終了です。

 

トランザクションスクリプト Multi-SignatureとP2SH

複数人の承諾がないと、Bitcoinを使用できないようにしたい場面があります。例えば、経理担当者の決済の他に、経理部長の承認を必要とするというような事例が考えられます。この場合、Multi-SignatureまたはP2SHのいずれかのトランザクションスクリプトを利用することで、上記スキームを実現することができます。

 

Multi-Signature

Multi-Signatureはひとりの受取人に対して、複数のPublic Key (N個)を指定する種類のスクリプトです。これに対して、受取人側はこのトランザクションをInputとして送金に利用するタイミングで、このトランザクションで指定されたPublic Key(N個)に対応するデジタル署名(N個以下)を付与することでトランザクションを送金に利用することができるようになります。

 

例えば、P2PKを使用する場合は、経理担当者のPublic Keyだけを送信先に指定していたのに対して、Multi-Signatureを使用する場合は経理担当者と経理部長両方のPublic Keyを指定してもらうことになります。

 

この会社が受け取ったBitcoinを送金手段として使用したい場合は、経理担当者と経理部長両方のデジタル署名をInputに付与することで送金できるというわけです。

 

ただ、この方法の場合は、送信者に複数のPublic Keyを指定してもらう必要があるため、通常のWalletアプリを使用して送金することができません。また、仮に指定できたとしても送信者の手間が増えてしまうのであまり一般に使用されていません。そこで、この問題を解消すべく生まれたのが、P2SHです。

P2SH

P2SH (Pay-to-Script-Hash) は、「Multi-Signatureで送信者が指定していた複数のPublic Key」に対して、Hashをかけたものを受信者のアドレスとして利用するというものです。この方法を利用すると、送信者としては通常のBitcoinの送金同様、アドレスを指定して送るだけの作業になるため、送信者側の負担が軽減されます。

 

逆に受信者は、当該トランザクションを送金に利用する際は、デジタル署名だけでなく、アドレス作成に使用したPublic Keyなどの情報をInputに添付する必要があります。

 

トランザクションスクリプト OP_RETURN

ちなみにもうひとつ、OP_RETURNというトランザクションスクリプトもあります。これは、Payment以外の目的でのBitcoin利用を拡充するために導入されたスクリプトです。Bitcoinの各ノードは、未使用のアウトプット (UTXO) を素早く探すため、UTXOプールとよばれるメモリを保持しています。UTXOが新たに生まれるとUTXOプールに格納され、逆にUTXOがインプットに使用されるとUTXOプールから削除されるという動きをします。

 

しかし、Bitcoin送金以外の目的でトランザクションを使用する際には、送金額が0コインとなっている場合があります。その場合、UTXOは二度とインプットに使われることはないにもかかわらず、UTXOプールに格納されてしまいます。これが繰り返されるとUTXOプールが肥大化して、メモリを使い切ってしまうおそれがあります。

 

そこで、もしOutputにOP_RETURNというコードが含まれている場合は、UTXOをUTXOプールに格納しないという仕様に変更することで、UTXOプールの枯渇を防ぐことができるようになりました。ちなみに、もしOP_RETURNが記載されたUTXOがインプットに入ってきた場合は、検証無効となり送金が拒否されます。

 

まとめ

まとめてみると、なかなかなボリュームの記事になってしまいました。ほぼ、トランザクションスクリプトに関する記事になってしまったので、トランザクションスクリプトの種類を最後にまとめておきます。

 

代表的なトランザクションスクリプト

  • P2PKH
  • P2PK
  • Multi-Signature
  • P2SH
  • OP_RETURN

 

第2回はこちら

cryptocoin.hatenablog.com

 

インドネシアのお金と汚職にまつわるお話

しばらくインドネシアに暮らしていますが、財布がやけにパンパンになります。「財布 パンパン」で調べると、クレジットカードの大量保有や、ポイントカードの大量保有が一般的な原因としてあげられていますが、インドネシアやその他の新興国ではちょっと原因が異なるようです。

 

財布パンパンの原因その前に 汚職とお金

インドネシアの汚職撲滅委員会 (KPK) は、ジャカルタ市内のショッピングセンターで、違憲審査で便宜を図る目的で現金を受領したとして、憲法裁判所の判事を逮捕しました。

www.thejakartapost.com

 

このとき、日本円で約2,000万円近くの現金を受け渡していましたが、このときインドネシアの通貨であるルピアではなく、米ドルとシンガポールドルが使用されました。なぜルピアを使わなかったのでしょうか?

 

新興国の貨幣

新興国では一般的に高額紙幣が発行されていません。インドネシアの場合も、紙幣の最高額は100,000ルピア、日本円で約1,000円となっています。米ドルやシンガポールドルで支払われたのも、米ドルの1ドルはインドネシアルピアで約10,000ルピアになってしまい、現金の形で受け渡すには量が多すぎるからでした。

 

インフレが進む新興国では、一般的に紙幣の最高額がインドネシアのように実態に追いついていません。また最近では、2016年11月にインドがこれまで存在していた高額紙幣を廃止して話題になりました。

インド現地レポート 「高額紙幣の廃止」のナゼがわかる、モディ首相の戦略 | Forbes JAPAN(フォーブス ジャパン)

 

目的のひとつとして、現金が汚職、人身売買などで使用されることを防ぐことを掲げており、現金を通したやりとりを極力削減し、金融機関を通した取引にシフトしていくことで、お金のやりとりを見える化していく狙いがあります。

 

インドネシアはインフレが進み、長年高額紙幣の発行が取りざたされてきましたが、今回発生した汚職事件のような現金の受け渡しがルピアで行われるのを防ぐためにも、しばらくの間は高額紙幣が発行されないことが予想されます。

 

ということで、新興国で財布がパンパンになるのは、高額紙幣が発行されていないためです。しかもATMによっては、最高紙幣の100,000ルピアではなく、50,000ルピアが登場することもあるし。。。

f:id:steinith310:20170128134403j:plain

新興国の金融課題

とはいえ、インフレが進み貨幣価値が希薄化する中で、何枚もの紙幣を日常生活で持つのは大変です。

 

そこでインドネシアでは、ジャカルタを中心にデビットカードや携帯電話会社の決済システムを使用した決済が急速に浸透しつつあります。例えば、大手のコンビニエンスストアであるIndomaretやalfamartなどでは、デビットカード決済を多くの店舗で受け入れていますし、ジャカルタであれば街中の多くのレストランではデビットカードによる決済が可能です。

 

 

しかし、そのインドネシアでも銀行口座を持っている人は約6,000万人にすぎません(2015年3月時点)。つまり、インドネシアの総人口の約75%の人は銀行口座を持っていないということになります。高額紙幣を廃止したインドは少し状況が異なり、口座開設率は99.7%まで達しているものの、口座預金残高が0円の割合が約75%となっており、アクティブに使っている割合はインドネシアとあまり変わらない率になっています。

 

この層にいかにリーチするかは、銀行やノンバンク各社にとって収益向上の大きなカギとなります。また、Bitcoinにとっても、実体経済での使用率向上のために、重要なターゲット層になります。

インド、銀行口座普及率が急増 貧困層向け政策奏功、99.7%に (1/2ページ) - SankeiBiz(サンケイビズ)

en.tempo.co

 

Bitcoin使用率の拡充にはスピードが必要

これらの層は中間層以下の、いわゆる低所得者層であることが多く、金融機関がローンを提供するなどの収益源とみなすには、与信管理能力がまだまだ不足しており、口座開設に向けたインセンティブが不足している状態です。一方、海外に出稼ぎに出ている割合は高く、家族への送金のために廉価な送金システムへの需要は高まっています。

 

Bitcoinの拡大のためには、新興国経済が成長し、これらの低所得者層の所得が改善し、銀行側の口座開設意欲が高まる前に、Bitcoinの世界に取り込んでいくことが重要になります。

 

ひとつの手段として、新興国の取引所各社が全国展開している大手コンビニなどと提携することで、情報を広め、利用率を向上していくことが考えられます。実際、インドネシア最大手取引所のBitcoin.co.idは前述したIndomaretと提携して、Bitcoinの販売サービスを展開しています。

インドネシアのビットコイン取引所が大手コンビニと提携 | ビットコインニュースの BitBiteCoin

 

まとめ

少々強引なタイトルでしたが、新興国ではまだまだBitcoin拡充の余地があるものの、スピードを持って低所得者層を取り込んでいかないと、規模に勝る金融機関に勝てないよという警鐘です。

 

実際デビットカードは相当便利なので、コンビニなどの日常生活で使える程度のメリットではあまりBitcoinが伸びていく余地はないため、Bitcoin浸透のスピードを上げてシェアをあげ、決済手段のデファクトスタンダードにしていく動きが重要だと考えています。

 

ただ、中央の人間がいないBitcoin界では、音頭をとって進めていくのが難しく、歯がゆいところです。

海外居住者が投資を行う際の日本での課税

以前日本の証券会社を通して株式を売買することは、駐在員という身分では実質不可能ということをまとめました。

 

cryptocoin.hatenablog.com

 

しかし、海外の証券会社などを通した売買は、日本の法律は関係ありませんから当然認められます。しかし、海外の証券会社を通したとしても、場合によっては日本国内で課税が発生し、申告を忘れていると気づかぬうちに脱税扱いされてしまう可能性も。

 

今回は駐在員が海外の証券会社を利用する際の、日本での課税関係を整理します。

 

原則は非課税

海外駐在員の場合は原則としては、日本国内では非課税です。というのも、所得税法で国内に恒久的施設を有しない非居住者の場合は非課税と定められているためです。

No.1936 海外転勤中に株式を譲渡した場合|所得税|国税庁

 

ただ、恒久的施設を有しない非居住者の場合であっても、いくつかの条件にあてはまると国内での課税対象となりますが、通常の駐在員の場合はその条件に引っかかることはないでしょう(詳しくは上記リンクを参照)。

 

恒久的施設を有するとは

恒久的施設を有するとは、何かしらの事業を行う機能が国内にあるか、事業を代理して行う人がいることを言います。ただ、海外駐在員のような給与所得者の場合は、他に事業所得がない人の場合は、恒久的施設を有する人はいないでしょう。

No.2882 恒久的施設(PE)|源泉所得税|国税庁

 

まとめ 通常は非課税、ただ最後は税理士に確認を

以上のように、海外駐在員の場合は通常非課税となります。ただし、個別の租税条約で所得税法とは異なる記載があると、租税条約が優先されるので、最終的には税理士にご確認をお願いします。

 

また、日本での課税はともかく、国外での課税は当然気にする必要はありますのでご注意ください。

IS (Islamic State)とBitcoinとの関係

インドネシアマネーロンダリング対策ユニットがIS (Islamic State)がBitcoinを資金送金目的に使用していると発表しました。具体的には、最近ジャカルタで発生したテロの容疑者がBitcoinを使用して資金の送金、受領を行っていたと発表しています。

http://www.coindesk.com/indonesias-aml-agency-links-bitcoin-islamic-state-terrorism/

 

また、パリでのテロ事件の際にも、EUが仮想通貨を利用した送金に対する対策を行うと発表しており、ISが組織的にBitcoinを送金手段として利用している可能性が取りざたされています。

 

これまでの送金手段との比較

ISは中東地域、インドでの送金ではハワラというローカル送金ネットワークをこれまで使用してきました。ハワラというのは元々アラビア商人の間で生まれたもので、遠隔地間でもブローカー同士の信頼関係をもとにして迅速に送金するための手法です。

www.sinkan.jp

ちなみに英語記事ですが、下のWikipediaはかなり詳しい解説あり。

Hawala - Wikipedia

 

例えば、Aさんが離れた地域の家族Bに送金を行いたいとします。このときどうするかというと、まずAが住む地域のハワラブローカー(A')の元にAは赴きます。そして、家族Bに1万円を送金したい旨を告げます。A'はAから1万円を受取るとともにAから受取りのためのパスワードを聞き、B地域のブローカー(B')に電話やSMSでパスワードと受け渡し額(1万円)を告げます。

 

そのあとAさんはBさんに電話やSMSで、ブローカーB'の情報とパスワードを知らせます。BさんはブローカーB'のもとに赴きパスワードを告げることで、Aさんが送金した1万円を受領します。これで送金完了です。

 

この仕組みだとブローカーの台帳上は送金額とパスワード、そして送金者であるブローカーAの情報だけが残り、誰が送金して、誰が受け取ったかは記録上残りません。ちなみに、ブローカーA'とブローカーB'間ではどこかのタイミングで1万円を実際にやり取りしなくてはなりますが、これは一定期間ごとにお互いの残高を相殺する形で行われます。

 

このように見つかりたくない資金の送付にはもってこいのハワラネットワークですが、インドネシアやパリの場合は、ハワラネットワークが中東地域に比べると発展していないため、足のつきにくい送金手段としてBitcoinが使われるに至ったかと思われます。足がつきにくいとはいえ、テロで使用するような銃器などを購入するためにはどこかで現金化する必要があるうえ、Bitcoinの送金履歴は誰でも閲覧可能であることから、捜査自体はハワラネットワークを使用されるのに比べると簡単なのではないでしょうか。

 

ちなみにインドネシア当局は送金手段としてPaypalの名前もあげており、特にBitcoinへの規制を狙い撃ちしたものではなさそうです。

Bitcoinの経済学 需給関係の整理と2017年のBitcoin価格の予測

去年はBitcoinの価格が大きく上昇した年となりました。今年価格がどう変化するかを占う上で、Bitcoinの価格形成のメカニズムを整理しておくことは非常に重要です。

cryptocoin.hatenablog.com

 

今回は、Bitcoin価格に影響を与える需給関係を整理するとともに、それを踏まえて今年のBitcoin価格の上昇/下落を予想します。

 

Bitcoinの価格形成その前に 価格決定メカニズムのおさらい

中学校や高校の授業で習う内容かとは思いますが、経済学的に価格がどのようなプロセスで決定されるかを再確認しておきます。

 

経済学的にはモノの価格はそのモノに対する「需要」と「供給」のバランスで決定されます。例えば、Bitcoinに対する「需要」が上昇すればBitcoinの価格も上昇しますし、逆にBitcoinに対する「供給」が減少すれば、同様にそのモノの価格は上昇します。また、一般的に需要が上昇すればそれに合わせて供給量も増大します(逆もしかり)。

 

ただし、需要の増加に伴う供給量の動きはモノによって異なります。例えば、金を例に考えると、仮に工業製品で使用するための需要が急増したとしても、採掘量はほぼ一定量であるため供給量が増えることはありません。

 

それでは、Bitcoinに関する価格決定に関するメカニズムを確認するために、Bitcoinの需要と供給が何から成り立っているのかと、どのように調整されるかを確認していきます。

 

Bitcoinの価格形成メカニズム 供給

まずは供給から構造を確認していきます。なお、供給メカニズムについては一橋大学経済研究所の論文を参考にしています。

 

Bitcoinの供給量はシステム的に事前定義されています。具体的には、最大の供給量が2100万枚と定められており、マイナーによる採掘(トランザクションの承認行為)のたびに一定量のコインが採掘に成功したマイナーに支払われるという形態をとっています。通常のモノであれば、需要が増えれば工場で生産するなどして供給量を増やすのに対して、Bitcoinの供給量は需要に対して決まるのではなく、一定のアルゴリズムのもとで定期的(離散的)に増加していくことになります。

 

このことを、経済学的には需要量の変動に対して、供給曲線の価格弾力性が0であるといいます。供給曲線の価格弾力性が0の場合、価格のボラティリティ(変動量)が高くとなるという性質があります。下の図(上記論文 Figure3)で言うと、需要曲線(図D)がいかに変化したとしても、供給曲線(図S)は一定であるため、供給量(図L)が変化することはなく、価格(図P)で需要の増加分を吸収していることがわかります。

f:id:steinith310:20170121181239p:plain

 

通常のモノであれば需要の増加とともに供給量も増加するため、価格が大きく跳ね上がることが防がれますが、Bitcoinの場合は供給量が需要に応じて増加することはないため、需要増加のインパクトを価格のみで賄う必要があります。これは逆もしかりで、需要量が減少した場合は、Bitcoinの供給量を削減するということはできないため、価格が大きく下がることが予想されます。

 

このため、供給という側面から見ると、Bitcoinは需要が伸びている現在は大きく価格が上昇する可能性が高いが、他のCoinなどの代替物の登場や、法的規制によるBitcoinからの逃避が起こった途端に価格が急落するリスクをはらんでいると言えます。

 

よく供給量が決まっているため急激なインフレによる価値の希薄化が発生しないといわれるBitcoinですが、供給量が事前定義されているのは価格の暴落を防げない、諸刃の剣でもあるということです。

 

Bitcoinの価格形成メカニズム 需要

需要面では「誰が」Bitcoinを購入しているかを確認することが重要です。

 

誰が主に取引している?

「誰が」ということで重要になるのは、中国の存在です。Bitcoinの過去2年分の取引では中国の3取引所で全取引量の94%を占めており、中国でのBitcoinの需要がBitcoin価格に大きな影響を与えることがわかります。

f:id:steinith310:20170121173500p:plain

Bitcoinity.org

 

中国元の価格は市場ではなく、政府により統制されており、現在では世界で最も過大評価されている通貨であるとの声もあります。過大評価されているということは、価格下落の恐れがあるということであり、中国元の価格下落リスクを回避するために、中国からのマネーがBitcoinにさらに流れ込む可能性が高いと思われます。中国元の価格推移については、以下のニッセイ基礎研究所の分析でも同様の分析がなされています。

www.nli-research.co.jp

 

さらに、今年アメリカが利上げに踏み切った場合は、相対的に米ドルの魅力が上がることになるため、人民元の価格下落がさらに現実味を帯びるかと思われます。

 

中国政府の動きは?

2017年初頭に中国政府は、Bitcoin人民元の流出につながっている疑いがあるため今後調査を実施すると述べ、政府による介入を示唆しました。これに対して、中国の大手取引所である、BTC Chinaやokcoinなどは政府による規制強化を支持するとの声明を出しています。

www.coindesk.com

 

このため、一時的にはBitcoinの価格が下落することが想定され、事実一時14万円台をつけたBitcoinの価格は、1月21日現在10万円台まで下落しています。ただ、米ドル利上げ時には、規制を強化したとしても人民元からの逃避が進むことはさけられないことが予想されます。米ドル利上げ時にBitcoin価格がどこまで上昇するかは注目する必要があるでしょう。

 

1月22日追記

中国政府の規制強化に伴い、中国の3大取引所がレバレッジ取引を中止するとともに、取引手数料を徴収するようです。こうなってくると、取引量が急減する可能性もあるうえ、これ以上の規制強化を恐れて金ETFなどの別資産が逃避先として選ばれる可能性が高くなりました。 

cryptocoin.hatenablog.com

 

まとめ

本当は需要の箇所には中国以外の要因も書きたかったのですが、分析していくと予想以上に中国の影響が大きいことがわかったため、中国の動きに絞って分析しました。Bitcoin価格が爆進した2016年でしたが、2017年も需要の側面から主に米ドル利上げのタイミングで価格が伸びていくと思われます。

 

ちなみに供給の箇所で紹介した一橋大学経済研究所の論文は、供給曲線以外についても価格の変動が大きくなる要因をあげていて面白い内容であるため、そのうちこのブログでも紹介しようと思います。

Moneroのハードフォークが成功しました

Moneroのハードフォークが無事成功したようです。マーケットもこれを受けて、4.5%価格が上昇しています。

www.cryptocoinsnews.com

 

Moneroのハードフォークの内容

そもそもMoneroは、Bitcoinのプライバシーが著しく低いことへのアンチテーゼとして生まれたコインであり、主眼に置いているのは通貨利用の際の「プライバシー」です。Bitcoinを使用する場合は、ブロックチェーンを除けば誰でも取引内容を参照できますが、Moneroはいくつかの取引をミックスすることで、第三者がブロックチェーンを覗いた時に取引内容がわからないようにしています。なお、このミックス機能にはRing Confidential Transactions (RCT、 リング署名)と呼ばれるテクノロジーを使用しています。

 

今回のハードフォークでは、ミックス機能であるRCTが強制はされていなかったのを、デフォルトで有効にして強制するという対応です。これにより、すべての取引が匿名な状態で実行されることが担保されることになりました。

 

 

ただ、課題もあるようで、1トランザクションあたりの容量がこれまでの4KBから、6KBに変更となり、ブロックチェーンを保持する各ローカルマシンのハードディスク容量を食いつぶすおそれがでてきています。ちなみに、Bitcoinトランザクションサイズはたったの400バイトです。

 

まとめ

Moneroは2016年に急伸した暗号通貨であり、現在では時価総額が暗号通貨の世界で第5位に入るまでに成長しています。今回のハードフォーク成功により、ブラックマーケットでの使用は引き続き伸びていくことが想定されるため、コイン価格の上昇が見込まれます。

cryptocoin.hatenablog.com

 

以前、シルクロード(薬物取引などが行われた違法サイト)で、取引にBitcoinが使われたことがありましたが、最近では匿名性がより高いMoneroへのシフトが進んでいるようです。ただ、Moneroが意図するプライバシーの重要性自体は疑いようがないものであるため、犯罪に使われるコインというイメージをいかに払拭していくかは長期的には課題となると思います。

 

ちなみに、Moneroで使用されているリング署名は今回新しく発明されたものではなく、最近では企業内の内部通報に使われることも想定されています。どのような仕組みかというと、通報した人がその組織に所属しているが、どの人物であるか特定されるのを避けるために、その組織に所属する複数人の情報(公開鍵)を利用して署名をするという仕組みです。この方法を利用すれば、通報者を企業に特定されることで不利益な処遇を受けることを避けられるとともに、その企業が何かしらの不正行為を行ったことを伝えることができます。

https://www.toshiba.co.jp/tech/review/2008/01/63_01pdf/f01.pdf

 

室町時代一揆の首謀者が特定されるのを避けるために、傘連判状を利用したのを思い出しますね(笑)

f:id:steinith310:20170111235843j:plain