Crypto Life

Tech in X

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

Ethereum基礎 どのようにプログラムが実行されるのか?

以前の記事に書いた通り、Smart Contractとは国や登記所、銀行などの中央機関の執行なしで、事前に取り決めたプログラム(Contract)を執行する仕組みです。今回は、Smart Contractの実行基盤として注目されているEthereumの基礎的な仕組みをまとめたいと思います。

 

Smart Contractに関してはこちらもどうぞ

cryptocoin.hatenablog.com

 

そもそも中央機関がないと何がいいの?

中央機関なく執行できることのメリットは以下の2点に集約されます。

  1. 中央機関維持のためのコスト削減
  2. 取引信頼性の向上(中央機関による恣意的な運用の排除、ダウンタイムの削減)

 

中央機関維持のためのコスト削減

中央機関を置いて取引の安全性を担保するためには、当然中央機関を担う人件費やシステム投資費用がかかってきます。それに対して、Ethereumを使用すると、取引のたびに取引手数料(gasと呼んでいます)がかかりますが、固定費としてかかる費用は発生しなくなります。

 

さらに、中央機関を置く場合は取引種類ごとにそれぞれを担当する中央機関を置く必要があります(例えば、お金の決済には銀行、不動産登記には登記所)が、Ethereumは様々な取引(プログラム)を管理するプラットフォームとしての役割を持っているため、取引種類が増えたとしても新たなプラットフォームを構築する必要はありません。

 

以上の理由から、Ethereumを採用することで、取引コストが削減されると期待されています。

 

取引信頼性の向上

信頼性の向上はビジネス的な観点と、システム的な観点の両面から説明できます。

 

まず、ビジネス的な観点では中央機関が恣意的に契約条件を変更するなどの運用ができなくなるため、取引の透明性が向上します。

 

システム的な観点では、分散的な仕組みを採用しているため、あるノードが壊れたとしても、他のノードが生きている限り取引を継続することができるため、耐障害性が中央的な機関に依存する方式よりもすぐれています。もちろん、中央的な機関内でシステムの耐障害性を高めることも可能ですが、中央的な手法をとっている以上耐障害性の向上には限界があり、またコストもより多くかかってしまうのが現状です。

 

Ethereumの仕組み -Bitcointとの違いをベースに-

それでは次に、Ethereumの特徴を確認していきたいと思います。

 

Ethereumは上で述べた通り、分散型アプリケーションのプラットフォームとして設計されています。コンピュータに例えると、EthereumはOSにあたるもので、その上に様々なアプリケーションを搭載できるように設計されています。これにより、アプリケーション間の連携を促進できたり、アプリケーション作成の高速化が期待されています。

 

EthereumをBitcoinとの比較で考えると、大きく異なるのは以下の点です。

  1. アカウントの構造
  2. トランザクションとメッセージの構造

はじめに概略を書くと、各アカウントはトランザクションを生成することで、メッセージをContractに送信し、メッセージに応じてContractで定義された条件が執行されます。

 

アカウントの構造

アカウントはEOAと呼ばれる通常のアカウントと、Contractと呼ばれる契約執行のためのアカウント(=プログラム)に分けられます。EOAはBitcoinにおけるアドレスとほぼ同義で、それぞれのEOAの残Ether (Ethereum上のCoin)がいくらであるかを管理します。

 

一方、Contractは契約条件を記載したプログラム(正確に言うと、データとファンクション、JavaでいうClassのイメージ)のことであり、各EOAはこのプログラム内のファンクションをメッセージを通して呼び出すことで、契約を執行することができます。ちなみに、Contract自体もEthereumを管理するアドレスを持っているので、Contract独自にEthereumを保持することが可能です。

 

なお、大きなBitcoinとの違いとして、Ethereumの場合はブロックチェーン上にアカウントの最新の状態が記録されます。Bitcoinの場合はUTXO(未使用の過去のトランザクション)の合計値がそのアカウントの保持するBitcoin額となるわけですが、Etherumの場合は単純にブロックチェーン上の当該アカウントの残etherを見れば残高が分かる仕組みになっています。

 

トランザクションとメッセージの構造

Bitcoinでいうところのトランザクションは、Ethereum上も同様にトランザクションという名前で扱われます。ただ、Ethereumを理解するためには、トランザクションに加えて”メッセージ”というコンポーネントを理解する必要があります。

 

Bitcoinトランザクションには、「送信者の署名」、「送信するBitcoin量」、「受信者のアドレス情報」が記載されています。そして、そのトランザクションを束ねたものを、ブロックとしてブロックチェーンに接続することで取引を永続化していました (=Bitcoinの二重譲渡が起こらない)。

 

詳しくはこち

cryptocoin.hatenablog.com

 

EthereumではBitcoinで管理している情報に加えて、Contractに受け渡す引数(Message)を保持する形で、トランザクションブロックチェーンに記録されて永続化されます。つまり、Bitcoinトランザクションを通してBitcoin送信先に送っているのに対して、EthereumではEtherとMessageの2つのコンポーネント送信先に送っているわけです。

 

例えば、ある引数を渡すと、それを2倍にして返すContractを想定してみます。

 

この場合、トランザクションの中で5というValueをMessageに指定してこのContractに送信すると、Contractが実行されて、10という戻り値を返してくれることになります。このとき、Contractに対して必ずしもEtherを送る必要はありません。ちなみに、Contractをはじめて作成する際も、トランザクションを通してContractが作成されます (ブロックチェーン上にContractを永続化する必要があるため)。

 

ちなみに、Ethereum上でContractを実行するには、トランザクションを経由する方法以外に、Callと呼ばれる方法もあります。Callの場合は、Contractが保持している情報を変更せずに読み取るだけなので、変更された情報を全ノードにブロードキャストするというステップがなくなり、Etherを消費しないという特徴があります(=マイニングが行われない)。

 

Transaction = プログラムの作成、変更、状態変化を伴う実行

Call = 状態変化を伴わない実行

 

上の例でいうと、本来であればトランザクションを作成する必要はなく、Callするだけで戻り値を取得できます。

ethereum.stackexchange.com

 

参考

Ethereumに関する基本情報(Whitepaper)。ただ、メッセージやトランザクションなどは、この記事だけだとイメージしにくい。

github.com

 Whitepaperの次にこの記事を読むと、メッセージやトランザクションなど内部的な話の理解につながるかと思います。

github.com

2016年 暗号通貨時価総額ランキング トップ5

2016年はBitcoinではSegwitの導入、EthereumではThe DAOの事件などいくつか事件がありました。2016年6月時点での取引量ランキングをまとめた以下の記事では、Ethereumが2位、The DAOが5位と高いポジションにありましたが、2016年末時点で仮想通貨の世界でどのような順位になったかを振り返ろうと思います。

 

2016年6月時点の情報

gigazine.net

生データはこちら

coinmarketcap.com

 

2016年末時点 暗号通貨時価総額ランキング (カッコ内は2016年6月時点)

1位 Bitcoin (1位) 155億ドル 1BTC=961.4ドル

2位以下と2桁以上の差をつけて、圧倒的な王者であることを見せつけたBitcoin。時価総額も2016年6月時点の約109億ドルから1.5倍に上昇しています。ちなみに時価総額155億ドルは日本円に換算すると約1.8兆円になり、三菱重工や住友商事、キリンHDなどとほぼ同じ時価総額になります。

www.nikkei.com

 

最近のBitCoinの価格上昇に関する分析はこちら。

cryptocoin.hatenablog.com

 

2位 Ethereum (2位) 7.1億ドル 1ETH=8.15ドル

2位も前回同様Ethereum。しかし、時価総額は前回15億ドル程度あったのが、約半分の7億ドルと半年で半減しています。これは、The DAO事件の影響で6月にEthereumの価値が暴落したこと、Ethereum自体がハードフォークによりEthereum (ETH)とEtherum Classic (ETC)の二つに分裂してしまったことが原因としてあげられます。ちなみにEthereum Classicはランキング6位 (1.2億ドル)と依然として暗号通貨の世界で大きな割合を占めています。

bebesan.net

 

時価総額が大幅に低下したものの、依然暗号通貨の世界では2位の時価総額をキープしているため、Smart Contractの実行基盤として引き続き注目を集めています。ちなみに、The DAOは前回5位でしたが、価値は暴落しこの半年で事実上暗号通貨の世界から消えてなくなってしまいました。

 

3位 Ripple (4位)  2.4億ドル 1XRP=0.006ドル

3位はRipple。前回は4位でしたが、時価総額自体は前回の調査からほとんど変わっていません(前回は約2億ドル)。どちらかというと前回3位だったLite Coinの時価総額が若干前回よりも少なくなったことが、順位上昇の原因と言えます。

 

4位 Litecoin (3位) 2.2億ドル 1LTC=4.38ドル

4位に前回3位のLitecoinがランクインしました。LitecoinはBitcoinの代替通貨とよばれており、Bitcoinが前回から大きく時価総額を伸ばした一方、代替通貨であるLitecoinへの資金流入が限定的であったのではないかと想定されます。

 

RippleやLitecoinに関する簡単な解説

bitcoin-matome.info

 

5位 Monero (不明) 1.9億ドル 1XMR=13.62ドル

Moneroは前回調査から急上昇したコイン。Bitcoinが他人の取引履歴を誰でも見ることができるのに対して、Moneroは他人が取引履歴を見ることができないため、より匿名性が高い設計になっています。

ここまで匿名性を高めた設計になると、当然薬物売買やマネーロンダリングなどの需要があるため、規制当局が黙っていないはずです。短期的には急上昇していますが、リスクは他のコインに比べて高いため、安易に購入することはあまりオススメできません。

btcnews.jp

 

2017年1月1日追記

直近のチャートを見ると、12月26日時点では1.3億ドル程度であったのが、翌々日には約2億ドルに急騰していたようです (https://www.coingecko.com/ja/時価総額/monero/usd/90日)。急騰の原因は不明です。

f:id:steinith310:20170101130054p:plain

 

2016年年末時点ランキング(Crypto-Currency Market Capitalizations

f:id:steinith310:20170101120124p:plain

まとめ

いかがだったでしょうか。まとめてみると、上位陣は様々なことがありながらも順位は大きく変動せずという結果でした。ただ、Bitcoinの一人勝ちという感じが大きく、Bitcoinの代替とよばれるアルトコイン系はあまりぱっとしない半年だったようです。

 

Segwit導入により引き続きBitcoinの優位性は保たれていくことが想定されますので、私は来年もBitcoinが1位、その次をBitcoin以外の機能を持つコイン(Smart Contract実行基盤としてのEthereumなど)が追うという構図は変わらないと予想しています。

 

ちなみに、2016年6月時点では日本発のCoinであるMonacoinが44位にランクインしていたと書かれていましたが、年末時点では63位と大きく順位を下げています。時価総額自体も212万ドルから105万ドルと約半減しており、他のコインと比べると魅力度が下がってきているようです。

 

最新記事(2017年3月時点情報)

cryptocoin.hatenablog.com

 

Segwitの効果 Third Party Malleabilityへの対応

Segwitが2016年11月15日に公開され、95%以上のマイナー(採掘者)がSegwit導入版のBitCoinプログラムを承認した場合、SegwitがBitCoinの世界に導入されます。本日時点(2016年12月31日)では約30%のマイナーが承認した状態で、SegWitの導入にはもうしばらく時間がかかりそうです。

bitcoincore.org

 

Segwitの目的は大きく二つあります。ひとつはThird Party Malleability(別名、Transaction Malleability、トランザクション展性)と呼ばれる脆弱性への対応、もうひとつはScallability問題への対応です。

 

BitCoin界では後者のScallability問題への対応が大きく取りざたされていますが、一つ目のThird Party Malleability問題への対応も2015年に対応しようとして失敗した経緯があり、今回対応が成功するかどうかは非常に重要な節目となります。

 

今回の記事では、Third Party Malleabilityへの対応にフォーカスして話をすすめます。

 

Third Party Malleabilityとは

BitCoinトランザクションの基礎の基礎はこちらにまとめていますので、参照してください。

 

cryptocoin.hatenablog.com

 

さて、BitCoinトランザクションはそのままでは扱いづらいため、トランザクションにSHA256と呼ばれる手法で256桁の一意な識別子(ハッシュ値)を付与しています。この識別子のことを、transaction id、略して"txid"と呼びます。なお、ハッシュの特徴として、元となるデータが少しでも変更されると、ハッシュ値も大きく変わる性質があります。

 

Third Party Malleabilityはトランザクションの一部分に誰でも変更を加えられることができてしまう脆弱性のことをさしています。ただし、受取人や金額は変更できず、変更できる部分は取引とは直接関係しない部分になります。しかし、トランザクション自体は変更されてしまっているため、そのハッシュ値であるtxidは変更されてしまいます。

 

受取人や金額は変更できないことから、すべての人が信用できる状態であれば問題となりにくいですが、以下のような場合が問題になります。

bitcoincore.org

 

if Alice pays Bob in transaction 1, Bob uses that payment to pay Charlie in transaction 2, and then Alice’s payment gets malleated and confirmed with a different txid, then transaction 2 is now invalid and Charlie has not been paid. If Bob is trustworthy, he will reissue the payment to Charlie; but if he isn’t, he can simply keep those bitcoins for himself.

 

AliceがBobにTransaction1で支払いを行った後、BobがCharlieにTransaction1で支払われたBitCoinを使用してTransaction2の支払いを行ったとする。このとき、Aliceの支払い(Transaction1)が変更され、txidが変更された場合、Transaction2は無効となり、Charlieへの支払いがなかったことになってしまう。もし、Bobが悪意をもっていなければCharlieに再支払いをするだけであるが、Bobが悪意を持っていた場合、BobはCharlieへの支払いをなかったこととしてAliceから送られたBitCoinを保持し続けることができる。 

 

Third Party Malleabilityへの対応

現在のトランザクションは2つの部分からなっており、ひとつはトランザクションそのもの、つまり受取人や金額に関する情報部分、もうひとつはBitCoin送信者の署名部分に分けられます。

 

Third Party Malleabilityで変更されうる(Malleable)箇所は、後者の署名部分のみであるため、この署名部分をトランザクションから切り離し、Witnessと呼ばれる領域に移すことが対応のポイントとなります。

 

この対応が承認された場合は、Third Party Malleabilityの脆弱性はなくなるため、BitCoin取引の安全性が高まります。また、この対応には副次的な効果もあり、トランザクション量を削減できることから、1ブロックに詰め込むことができるトランザクション量を増やすことができ、BitCoinの取引量が増えた場合でも取引が停止しないようにすることができるようになります(Scallability問題)。

 

ちなみに以前にもこの問題に対応しようとしたことはありましたが(BIP62)、このときは考えられる攻撃をリストアップして、それに対して個別にSolutionを検討するというアプローチをとったため、他の攻撃手法が開発された場合防ぎきれないという問題点があり、採用にはいたりませんでした。今回のアプローチはより根本的な解決策であるため、今回のアップデートが承認されることを願います。

 

BIP62に関するGitHubの情報

github.com

 

参考

www.coin-portal.net 

bitcoinmagazine.com

Bitcoin超概要 トランザクションとブロックチェーンの役割と違い

「ブロックチェーンはBitcoinの裏側の仕組みで、ブロックチェーンはBitcoin以外の暗号通貨でも使用されている。」

 

このことは多くの方が理解されていることだと思いますが、そもそもBitcoinにブロックチェーンが必要な理由とはなんでしょうか。

 

そもそも金銭の授受ってどんな要素がある?

そもそも金銭の授受(=Bitcoinのやりとり)ってどのような要素が絡んでくるのでしょうか。金銭の授受の原因としては、売買契約の対価、贈与などいくつかの法律行為があげられますが、Bitcoinとしては特に金銭授受の原因にはタッチせず、純粋に金銭の授受にフォーカスした仕組みになります。

 

一般に、金銭の授受には、以下の要件を満たす必要があります。

  1. 金銭が受信者に受け渡されること
  2. 授受が送信者に承認されていること
  3. 金銭が送信者から存在しなくなること

 

トランザクションとブロックチェーン

ブロックチェーンを理解するにあたって、まず個々のBitcoinの取引はどのように管理されているかを知る必要があります。この個々の取引は、Bitcoinの世界ではトランザクションと呼ばれています。

 

トランザクション

トランザクションBitcoinの受け渡し履歴になっています。具体的には、以前のBitcoinの保持者が誰であったのか、新しいBitcoinの保持者が誰であるのかという情報に加えて、以前のBitcoin保持者がその取引に同意したという情報が含まれています。

 

お気づきになられた方も多いかと思いますが、この記事の最初に触れた「金銭の授受を成立させる要素」は、ブロックチェーンではなく、このトランザクションで実現されています。

 

それでは、ブロックチェーンの役割はどんなことなのでしょうか?

 

ブロックチェーン

ブロックチェーンは、ある取引が当事者だけでなく、第三者から見ても成立していると確信させるために存在しています。専門用語でいうと、対抗要件を具備することが目的です。

 

通常の金銭であれば、お金そのものを持っていることが対抗要件になります。例えば、私が100円玉を持っていたらそれは私のものですよね?(詐欺などで手に入れたことも考えられますが、そういった違法行為があったとしても今私がその100円玉を持っているという事実は変わりません。)

 

一方、Bitcoinの場合は現実のお金のような実態(モノ)はないので、ひとつのBitcoinを複数人に譲渡する行為、すなわち二重譲渡が発生する可能性があります。しかし、Bitcoinは現実には1つしかないということにしておかないと、無限にBitcoinが増殖してしまうので、どちらが正当な取引なのかを判別する必要があります。このとき、正当な取引であると取引外の第三者に主張できる条件を”対抗要件”といいます。

 

現実世界では、不動産取引に代表されるように、”登記”という仕組みを使用して対抗要件を規定していることが多いですが、Bitcoinで登記を利用してしまうと中央集権的な仕組みになってしまい、Bitcoinが持つ分散的な仕組みを活かすことができません。そこでBitcoin開発者が考えたのが、ブロックチェーンという仕組みです。

 

ひとつのブロックには複数のトランザクションが含まれています。そして、ブロック"チェーン"というくらいなので、"ブロック"がいくつも連結された状態で保持されています。ブロックをブロックチェーンの最後のブロックに接続していくことを”マイニング”といいます。マイニングは複数の人が同時に行うので、時としてチェーンが枝分かれして複数生まれてしまうときがあります。このときどのブロックチェーンが正当なものであるかを判別する方法は単純で、最も長いチェーンが正当なものとしてブロックチェーンの世界では扱われます。

 

つまり、自分のトランザクションが含まれるブロックが最も長いチェーンに含まれている場合は、そのトランザクションは第三者に対抗できる状態ということができます。ここで当然考えられるのが、その後長いチェーンが入れ替わってしまったら自分のトランザクションは無効になってしまうのではないかという疑問です。

 

ここがBitcoinの面白いところで、当然別のチェーンの方が長くなってしまうことはあるのですが、自分のトランザクションを含むブロックの後ろに複数のブロックが連結された場合(一般に6ブロック程度と言われています)、その後で別のチェーンが自分のチェーンよりも長くなる可能性は限りなく低くなっています (PoWという仕組みで実現していますが、それについてはまた別の機会で説明します)。

 

まとめ

Bitcoinの金銭授受情報はトランザクションに記載されていますが、二重支払いを防ぐためにブロックチェーンを使用して、第三者がトランザクションの正当性を検証できるようにしています。

 

 

海外駐在員の投資について

海外駐在員になってからの悩み。それは日本で投資が継続できないことでした。ここで投資といっているのは、ネット証券会社を通した株式投資のことを指しています。

 

法律上は申告などを正しく行えば問題がないようですが、証券会社内の自己規制として国外居住者(もちろん日本の非居住者となった海外駐在員を含む)については、新規株式取引はもちろんのこと、既存株式の保持も認めていないようです。

理由は税金の申告面がやっかいなようで、基本的には国内源泉所得となり課税対象になりますが、租税条約の有無などにより扱いが異なるため、業務上の手間やリスクをおそれて株式取引を全面禁止にしているのが現状のようです。

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

 

とはいえ、これまでは住所を実家などにして取引をしている人もいたようですが(念のためで申し置きしておくと、私はしていませんよ笑)、来年(2017年)からCRSの導入により証券会社は口座保有者の居住国の特定義務が生じるようになったため、ごまかしが効きづらくなることが想定されます。

マイナンバー制度も導入されていることから、少なくとも自己名義での取引は今後完全に不可能となることが想定されます。

http://www.nta.go.jp/sonota/kokusai/crs/pdf/02.pdf

https://海外送金税金.com/blogs/commentary/共通報告基準(crs)に基づく自動的情報交換の動/

 

個人的には海外在住でも取引できるように、証券会社には頑張ってスキームを考えてほしいものです。。。

 

代替手段として、海外の証券口座を開く、現地の定期預金口座を開設する(東南アジアの新興国インドネシア、マレーシアなど)であれば利率3%以上)などいくつか方法はあるかと思いますので、アップデートしていきます。

 

海外駐在時の投資に関して、税制面のまとめはこちら。

cryptocoin.hatenablog.com

 

インドネシアでのBitcoin投資については、こちらの記事もどうぞ。

cryptocoin.hatenablog.com

 

Bitcoinの相場高騰 3つの理由

2016年も残すところあとわずかですが、ここにきてBitCoinの価格変化がとまりません。現在時点で1BTCあたり、約960ドルまで高騰しています。

f:id:steinith310:20161228154237p:plain

BTC USD 証券株式相場 | ビットコイン ドル 相場

 

これはドルベースですが、最近は円安の影響もあり円Bitcoinレートで換算すると1BTCあたり約110,000円まで高騰しています。つい数ヶ月前まで、60,000円程度で推移していたことを考えるとものすごい高騰です。

 

アメリカのBitcoinニュースサイトでは、2017年に向けてBitcoinが1000ドルを突破すると予想しており、その予想が現実のものになろうとしているように思えます。

www.newsbtc.com

このサイトでは、Bitcoinの相場が高騰する要因を5要素にまとめていますが、もう少しシンプルに以下の3要素で説明できるかと思います。

 

Bitcoin価格高騰 3つの理由

1) 実需の増加

新興国での送金需要やインフレ懸念のある自国通貨からの逃避などを通して、実需が増加しています。特に、Bitcoinの長年の課題であったBitcoin利用がこれ以上に拡大した場合の問題(Scalability問題)がSegwit採用の投票開始によってリスク低下したことから、今後実需面での需要は増加していくものと考えられます。

 

Segwitに関する記事はこちら

cryptocoin.hatenablog.com

 

ただ、SegWigが採用されるかどうかはMinerの投票にかかっており、現時点では採用される確信はだれも持てていない状況です。今後この対立が加速し、Unlimited派とCore派(SegWit派)に分裂してしまったときには、Bitcoin価格の下落要因になりえます。

 

2) 投資資金の流入

中央銀行による金融政策の影響を受けない点、また供給量が漸減していく点が投資家に魅力的であるため投資資金が流入していると説明しています。2点目については同意見ですが、1点目についてはイコールリスクでもあるため、個人的には懐疑的です。

 

Bitcoinの値動きの特徴

以下の記事では、Bitcoinの値動きの特徴を、主にBitcoinの供給の観点からまとめています。Bitcoinの供給曲線は通常の財とは異なる特徴を持つので、値動きが荒くなりがちです。

cryptocoin.hatenablog.com

 

3) 投資基盤の確立

投資基盤として取引所サービスが充実してきています。日本だけでも、昔はbitFlyer、Zaifなどと限られた取引所だけであったのが、今では10以上の取引所が設立されるなど基盤が確立されてきています。

取引所 - ビットコインの入手 | Bitcoin日本語情報サイト

 

ただ、2017年5月頃に資金決済法が改正される予定で、現在暗号通貨の取引所はマネーロンダリング対策、KYC (Know Your Customer)など規制対応を迫られています。株式やFXの取引所なみの規制が加えられる予定のため、今後の取引所ビジネスへの新規参入は鈍化することが予想されます。

まとめ

実需の増加、投資資金の流入、投資基盤の確立がBitcoinの価格上昇の要因ということでした。しかし、いずれの観点でも大きなリスクが潜んでおり、2017年に入ってから上昇傾向が続くと言い切ることは難しい状況です。

 

特にSegwitの導入が遅れたり、導入が見送られた場合は、Bitcoinコミュニティの対立が加速し、最終的にBitcoin自体が2つに分裂するおそれもあります(ハードフォーク)。その場合にはEthereumがEthereumとEthereum Clasicに分裂したときのように、価格が大幅に下落することも考えられます。

 

とはいえ、暗号通貨には既存の通貨にもない大きなメリットもあるので、引き続き状況をウォッチしていきたいですね。

cryptocoin.hatenablog.com

一時帰国時のSIMカード

一時帰国した際に、羽田空港SIMカードを購入しています。ただ、ものによってはあまりにも受信できる電波が弱く、電車に乗ると繋がらなくなる始末。次回同じ目に遭わないように、羽田空港で購入できるSIMカードを調べたところ、購入できるSIMカードの一覧が、以下のサイトでまとまっていました。

news.livedoor.com

 

最近ではこのサイトを参考に、+橋本環奈につられて、U-MobileのSIMを使っていましたが、数日しか滞在していないに数千円払うのはもったいないと常々感じていました。さらに追加調査したところ、最近のSIMカードの中には月額使用料がほとんどかからないものもあることがわかったので、その中でもオススメSIMカードについてまとめてみようと思います。

 

海外駐在員の日本でのSIMカード事情

基本的に海外に駐在している人たちは、日本のSIMは解約し、一時帰国時に羽田や成田でSIMカードを購入して日本での数日間を乗り切っているかと思います。しかし、それには以下のような問題が。

 

 ・期間が5日からしか選べない

 空港で購入できるSIMカードは、「5日間は使用可能」というように利用期間が決まっている場合がほとんどです。そのため、出張などで2日間しか帰国しないような場合などには、残り3日分が無駄になってしまいます。

 

・購入→セットアップに時間がかかる

今ではSIMの自動販売機もありますが、セットアップの時間も含めると以外に時間がかかってしまうもの。限られた時間を有効活用したい一時帰国の際は、この時間も削減したいものです。

 

解決策

これらの問題への解決策は、使い切りのSIMではなく、格安または無料の維持費用でまかなえるSIMカードを日本で購入しておくことです。

 

現在のところ、以下の2種類のSIMカードがオススメです。

  • FREETEL
  • 0 SIM
FREETEL

FREETELのSIMカードの特徴は、月額わずか299円でSIMカードを維持できる点です。一時帰国も数日であれば、データ通信量は1GB以下だと思いますので、499円で利用することができます。

FREETEL SIM|料金・プラン|FREETEL(フリーテル)

f:id:steinith310:20170729182807p:plain

 

0 SIM

0 SIMの特徴は、その名の通り最低利用料金が月額0円である点です。FREETELで必要だった299円すら不要!

0 SIM | nuroモバイル

f:id:steinith310:20170729183437p:plain

 

じゃあ、0 SIMの方がいいじゃないかと思われるかもしれませんが、一点だけ問題が。FREETELの場合は仮にある月に全く利用しなかったとしても自動解約されることはありませんが、0 SIMの場合は3ヶ月利用していないと自動で解約されてしまいます。

 

そのため、出張などで定期的に帰国する予定がある人には0 SIMをオススメしますが、年に数回の帰国程度の場合はFREETELを利用することをオススメします。

暗号通貨相互利用のためのスキーム Cosmos

暗号通貨はBitcoinからスタートしましたが、今やRippleやEthereumなど500種類以上のコインが生み出され、流通しています。これまでも、取引所などを通して暗号通貨間の交換をすることは可能でしたが、暗号通貨どうしをシームレスに連携して使用できるようにするため、Cosmosという仕組みが存在しています。

bitcoinmagazine.com

 

Cosmos概要

GitHubのIntroductionによれば、Cosmosの概要は以下の通りです。

cosmos/WHITEPAPER.md at master · cosmos/cosmos · GitHub

 

まず前提として、Cosmos内部でのやりとりのため、Tokenが通貨がわりに使用されています。

 

Cosmosにはブロックチェーンが2種類あります。1つ目のブロックチェーンはCosmos Hubとよばれ、ZoneとよばれるCosmos内の複数のブロックチェーンとIBCというプロトコルを介して接続します。Cosmos Hubの役割は文字通り暗号通貨間のHubとして、暗号通貨全体でどれだけのTokenを保持しているかを管理するとともに、Zone間のTokenの受け渡しを仲介する役割を果たします。

 

2つ目のブロックチェーンはZoneと呼ばれ、BitcoinやEthereumなど別の暗号通貨を媒介する役割をもっています。Zoneはひとつだけではなく、暗号通貨ごと(必ずしも暗号通貨単位である必要はありませんが)に別のZoneを使用することができます。厳密には、1つ目のブロックチェーンであるHubは、Zoneのひとつです。

 

イメージ図は以下のようになります(上記GitHubのサイトより抜粋)。

f:id:steinith310:20170105012846p:plain

 

それぞれのZoneは定期的にブロックチェーンの状況をCosmos Hubに送信することで、Cosmos HubはZone全体の状況を把握することができます。逆にZoneもCosmos Hubを通して他の通貨のZoneからの情報を受け取ることができます。

 

具体例は以下の記事に書かれていますが、EthereumのContractを実行して、Bitcoinの決済をするというような、各暗号通貨の長所を活かせる仕組みが増えていくかもしれません。EthereumとBitcoinの例では、Ethereumの契約執行機能とBitcoinの流通性、換金性というそれぞれの長所を享受できることになります。

btcnews.jp

Ethereum基礎 Smart Contract超概要

最近注目が集まっているSmart Contract。暗号通貨では、アルトコインの一種であるEthereum上のThe DAOというネットワークで実現されていました

(*) The DAOはプログラムバグにより崩壊、EthereumはEthereumとEtheum Classicの2つにハードフォークするきっかけとなってしまいました。。。

 

Bitcoinの基礎理解についてはこちら!

cryptocoin.hatenablog.com

 

Smart Contractについては、最近記事が多数執筆されており、暗号通貨界だけではなく、日経新聞にSmart Contractについての記事が掲載されるなど、注目度が高まっているようです。さらなる理解のために、英文記事の翻訳をとおしてSmart Contractの実態にせまります。

 

Smart Contractの目的

Smart Contractの目的は、現実世界でいう「契約」というスキームを実現することにあります。Smart Contractがどのようなものなのか、Wikipediaの記事を引用すると以下のようなことが書かれています。

Smart contracts are computer protocols that facilitate, verify, or enforce the negotiation or performance of a contract, or that obviate the need for a contractual clause. Smart contracts usually also have a user interface and often emulate the logic of contractual clauses. Proponents of smart contracts claim that many kinds of contractual clauses may thus be made partially or fully self-executing, self-enforcing, or both. Smart contracts aim to provide security superior to traditional contract law and to reduce other transaction costs associated with contracting.

スマートコントラクトとは、契約交渉、契約履行を円滑に進め、契約履行条件の確認、契約履行の強制を行うためのコンピュータプロトコルである。スマートコントラクトを導入することで、書面での契約は不要になる。スマートコントラクトは通常書面での契約に似たユーザインターフェースを有している。そのため、多く書面での契約は部分的にまたは全面的にスマートコントラクトに置き換えることができるであろうと、スマートコントラクトの提唱者は主張している。スマートコントラクトは伝統的な契約よりも安全性の面での優位性、及び契約に伴うコストの削減を目的としている。

 

最初に、Smart Contractの一番の目的は、”契約”というスキームを実現することと表現しましたが、暗号通貨で契約を実現する目的をまとめると以下のようになります。

<目的>

・契約の安全性の向上

・契約のコスト削減

 

Smart Contractの例

単なる契約書類の電子化と異なる点は、契約履行条件をソースコードに落とし、契約履行まで強制できる点にあります。これだけではわかりづらいため、以下のサイトに記載されていた例を引用してみます。

What Are Smart Contracts? Cryptocurrency's Killer App ⚙ Co.Labs ⚙ code + community

 

Let's take a simple example, like a Super Bowl bet. Say you want to bet $500—or roughly one bitcoin—that the Patriots will win, while your friend is betting the same amount that the Packers will take the title. Step one is for you and your friend to place your bitcoin in a neutral account controlled by the smart contract. When the game is over and the smart contract is able to verify via ESPN, Reuters, or elsewhere that the Patriots beat the Packers, the smart contract would automatically deposit your bet and your winnings from your friend back into your account.

Because smart contracts are computer programs, it would be trivial to add more complex betting elements like odds and score differentials into the mix. While there are services out there today that might handle this sort of transaction, they all charge a fee. The key difference with smart contracts is that it is a decentralized system accessible to anyone, that doesn't require any intermediary party.

A more everyday example would be online shopping. "If you order something online you might not want to pay a merchant immediately until they fulfill their end of the bargain," says Rapoport. "So you could easily have a contract that looks for FedEx tracking data saying that the package you ordered has been delivered to your address before releasing payment to the sender."

 

例その1 賭博の自動執行

アメフトでの賭けが例に上がっています。アメフトになじみが薄い人がほとんどだと思うので、野球の日本シリーズを例にしてみましょう。

 

設定:日本シリーズで中日対楽天が戦う

今年このカードが絶望的なことは無視してください。

 

自分 (A) が中日に賭け、友人 (B) が楽天に賭けたとします。これをSmart Contractで実現するには、まずAとBがSmart Contractを管理するアカウントにビットコイン(仮想通貨ならビットコインである必要はないが、ここでは例としてビットコインをあげている)を送金します。

 

仮に中日が首尾よく勝ったとすると、Smart Contractが試合の結果をYahoo Newsなり、ESPNなり何かしらのサイトから取得した結果に応じて、事前にプログラム内に設定していたオッズをベースに配当額をAに送金するということになります。言い換えると、履行条件をSmart Contractで決定した上で、履行の強制までSmart Contractが実現するということになります。

 

ポイントはSmart Contractを管理する業者がいるわけではなく、「分散化された仕組み(decentralized system)」を利用して、この賭博契約(違法かどうかはさておき)を自動で執行している点です。

 

そのため、賭博業者が中間マージンをさっぴくコストが削減される点が、(少なくとも利用者にとっては)メリットとなります。

 

例その2 代引きの代替

2つ目の例では、オンラインショッピングを例にしています。オンラインショッピングで商品の到着と同時に支払いを行いたい場合どうすればよいでしょうか (例えば、宅配業者やサプライヤーが信用できない場合)。

 

方法は単純で、Smart Contractで商品の到着と同時に支払いを行うことを明記するだけです。これまでは、「商品代引き」など配送業者がこの役目を担っていたが、例えばヤマト運輸の「

クロネコヤマトの荷物お問い合わせシステム」から配送状況を取得し、自宅に到着したことが確認できたら送金処理を行うことを、プログラムに組み込んでしまえば良いかと思います。

 

残る疑問 

ここまでSmart Contractの定義、及び具体例を見てきました。ただ、疑問点もいくつか。

 

ビジネス的な疑問

例からわかる通り、契約執行に関わる情報が「配送業者」や「ニュースサイト」が提供しているものであれば、契約の履行条件を設定することは簡単そうです。しかし、「相続」のように条件を満たす情報を速やかに取得することが難しそうなものもたくさんあります。そのような場合、どのように契約のトリガーをデザインするか。

 

技術的な疑問

Smart Contractは契約執行に関わる情報を各種サービスから取得して、契約を執行しています。これらの情報の取得をどのように行うのでしょうか?頻繁にYahoo Newsにポーリングするなどの仕組みにしてしまうと、今現在は大丈夫かもしれませんが、将来的にアクセス数が増えすぎてスケールしなくなってしまう恐れがあります。