Azure Blockchain Tokensの機能をセキュリティトークン、STO、トークンエコノミーの観点から解説（Ethereum関連PFとの比較も）

# 目次
* [ブロックチェーンにおけるトークンとは](https://qiita.com/OnePoke/items/be78bc0b7e71a065e444#%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%A8%E3%81%AF)
* [トークン活用の動向](https://qiita.com/OnePoke/items/be78bc0b7e71a065e444#%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E6%B4%BB%E7%94%A8%E3%81%AE%E5%8B%95%E5%90%91)
* [(参考) Ethereumで発行できるトークン](https://qiita.com/OnePoke/items/be78bc0b7e71a065e444#%E5%8F%82%E8%80%83-ethereum%E3%81%A7%E7%99%BA%E8%A1%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3)
* [Azure Blockchain Tokensとは](https://qiita.com/OnePoke/items/be78bc0b7e71a065e444#azure-blockchain-tokens%E3%81%A8%E3%81%AF)
* [Azure Blockchain Tokensでできること・特徴](https://qiita.com/OnePoke/items/be78bc0b7e71a065e444#azure-blockchain-tokens%E3%81%AE%E8%A9%B3%E7%B4%B0)
* [(参考) Azure Blockchain Serviceについて](https://qiita.com/OnePoke/items/be78bc0b7e71a065e444#azure-blockchain-tokens%E3%81%AE%E8%A9%B3%E7%B4%B0)

## 免責事項
* この記事は、投資を催促することを目的とした記事ではありません。
* 2019/11/25時点で、Azure Blockchain Tokensはプレビュー版のみの提供となります。
* 記事に間違った記載がある場合、コメントや編集リクエスト等で教えていただけると幸いです。


**はじめに、Azure Blockchain Tokensを理解するために、ブロックチェーン業界における「トークン」の基礎知識を説明します。**
## トークンとは
* 現実世界にある様々な価値を、台帳の改ざんが事実上難しいとされるブロックチェーン上で定義したもの
* 主に、Ethereumプラットフォーム上で実現される。トークンには、主に２つの概念が存在する

### 1. ユーティリティトークン
* あるエコシステムの中での利用券や、共通通貨のように設計されている
* エコシステムが成長していくと、需給のバランスで需要が高まってトークンの価値が高まっていく
* ICOで用いられていたのが、この概念である

### 2. セキュリティトークン
* 不動産などの資産に価値が裏付けされている
* 裏付けとなる資産の価値が上がると、トークンの価値も上がる
* ここでのセキュリティは、「証券」を意味する
* 一般にSTと略されるが、ブロックチェーンコンサルティングを専門に行うLayerXは2019/6/3以前から"プログラマブル証券(Programmable Security（PS）)"と呼称している（ https://layerxnews.substack.com/p/layerx-newsletter-for-biz-201905270602 ）

### トークン化における、共通の利点
* 今までは銀行や証券会社等が行っていたお金のやり取りの業務を、トークンごとにスマートコントラクトでプログラムできる
* スマートコントラクトによって、業務コストをさげることができれば手数料を安くすることができる
* 手数料が安くなることで、今までよりも少額の投資・送金等が可能になり金融サービスが身近なものとなり得る
* お金をトークン化することで、銀行を持っていないユーザー（世界人口の31％である17憶人）が金融サービスを利用できる


## トークン活用の動向
上記のそれぞれの概念についての動向詳細を述べる。

### 1. ユーティリティトークンを活用
1.1. トークンエコノミー

### 2. セキュリティトークンを活用
2.1. STO(Security Token Offering)
2.2. Stable Coin



### 1.1.トークンエコノミーとは
* トークンエコノミーとは、「トークンという代替貨幣を用いた経済圏」のこと。
* 現在の資本主義社会では、日本だと日本円の経済圏、アメリカだとドル建ての経済圏というように、国ごとの経済圏がある。
* 一方、トークンエコノミーでは、特定のサービス事業者が代替貨幣としてのトークンを発行する。
* ユーザーがトークンを購入して使うことでトークンに経済的価値が生まれ、トークンエコノミーが成立する。
* 見えない価値を可視化し、やりとりするような世界観も実現可能。
* 参考：　https://floc.jp/log/basic/1471/


#### 1.1.1.トークンエコノミーの事例
* [steemit](https://steemit.com/)
同サイトではユーザーが記事を投稿したり、｢いいね｣をつけることで、ブロックチェーンベースの独自トークンを獲得することができる。
広告に依存せずにコンテンツを収益化することができる新たなビジネスモデルとして、大きな注目を集めている。
解説記事：　https://zoom-blc.com/what-is-steemit

* [LINE Token Economy](https://link.network/ja/)
* [GMOオープンソースブロックチェーン](https://www.gmo.jp/news/article/5824/)
* [千葉県木更津市の電子地域通貨「アクアコイン」](https://www.city.kisarazu.lg.jp/shisei/keikaku/aqua/1000993.html)

* [PoliPoli](https://www.polipoli.work/)
いい発言をすると独自通貨（トークン）が集まる政治コミュニティサービス。
政治家に対して質問・意見・政策提言が行える機能が搭載されているため、政治家と一般ユーザーの距離が近くなる。

![エコシステム](https://pilotboat.jp/wp-content/uploads/2018/07/PoliPoli%E3%83%92%E3%82%99%E3%82%B7%E3%82%99%E3%83%8D%E3%82%B9%E3%83%A2%E3%83%86%E3%82%99%E3%83%AB-722x1024.png)


### 1.1.2.トークンエコノミーのメリット・デメリット

#### メリット
「コミュニティの活発化」

* 従来のポイントサービスと異なり、トークンは市場での価値が変動するため、トークンの流動性が高まれば高まるほどトークンの価値が上がる
* トークンを保有しているユーザーがコミュニティ内で活発になるインセンティブが働く
* トークンをもつユーザーがマーケティングを手伝ってくれる例もよく見られる

「プラットフォームを作りやすい」

* 自由に参加でき、コミュニティが活発化すればするほど価値が高まる「ネットワーク効果」が表れやすい


#### デメリット

* 評価に対する報酬額の決定期間が必要なので、一度投稿した記事の編集や削除は７日間行うことができないなどの大きなデメリットも存在
* 市場のユーザーの取り合いになり得る
* トークンの価値が上がらない場合、ポイントサービスとの差別化が難しくなる
* ユーティリティトークンに価値の裏付けがない


### 2.1.STO(Security Token Offering)とは
* 資金調達をしたいプロジェクトがセキュリティトークンと呼ばれる独自の通貨を発行し、適格投資家に販売することで資金を集めること。

#### 2.1.1.STOの事例
* 以下の企業の提供するサービスは特徴や強みは異なるが、提供機能から見るとAzure Blockchain Tokensの競合となり得る。

* [Securitize](https://www.securitize.io/jp/)
ブロックチェーンで様々な種類のデジタル証券を発行するプラットフォーム。
DSプロトコルを提供し、パブリック型のブロックチェーンや許可型のブロックチェーンでのセキュリティトークンの発行および管理における業界のリーダー。

* [Polimath](https://polymath.network/)
Ethereum上で様々な種類のデジタル証券を発行するSTOプラットフォーム。

* [SDX(スイス証券取引所SIX Degital Exchange)](https://www.sdx.com/en/home.html)
Cordaを用いたデジタル資産取引プラットフォーム。

* [ibet](https://ibet.jp)
金融商品を含むデジタル化された様々な権利の発行と取引ができるブロックチェーン技術を活用したプラットフォーム。
野村ホールディングスと野村総合研究所の合弁会社「株式会社BOOSTRY」が提供する。

* [Progmat](https://www.mufg.jp/vcms_lf/news/pressrelease-20191107-001.pdf)
MUFGを中心に開発が発表された、ブロックチェーンを活用した次世代金融取引サービス。


### 2.1.2.STOのメリット・デメリット
#### メリット
* ICOでトークンに実体がなかったが、STOではトークンに価値の裏付けがある
* STOでは、法律に遵守した手続きが踏まれるようになっている
* KYC(本人確認)に注力されているため、マネーロンダリング問題等の防止が考慮されている
* IPOよりも素早く資金調達を実施できる

#### デメリット
* コミュニティが盛り上がっても、トークンの価値が上がらない
* 法律に遵守している分、ICOよりも資金調達のスピードが劣る

### 2.2.Stable Coinとは
* 暗号通貨の価格の不安定さを解消するために開発された、価格が安定しているコイン。

#### 2.2.1.Stable Coinの事例
* [Libra](https://libra.org/en-US/)（Facebook）
以前書いたこちらの記事もご覧ください　⇒[Libraのホワイトペーパーの概要をまとめてみた](https://qiita.com/OnePoke/items/73147508b14bb0f1aa36)
* MUFGコイン（三菱UFJフィナンシャルグループ）
* Jコイン（みずほフィナンシャルグループ）

### 2.2.2.Stable Coinのメリット・デメリット
#### メリット
* 主に現実の法定通貨を裏付けとしているため、現行のビジネスに適用しやすい
* トークンの価格変動リスクがほぼない

#### デメリット
* 価格変動リスクがないため、価格変動で利益を生み出すことが出来ない
* 多くの場合、第三者機関による信頼の担保が不可欠である


## (参考) Ethereumで発行できるトークン
* Azure Blockchian Tokensて提供される機能をより理解するために、Ethereumで標準化されているトークンの代表例を４つ紹介する。

### ERC-20 (Fungible)
* 最も有名なトークン標準規格。
* 実装されている機能のインターフェースは、以下の通り。

```
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);
 
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
```

機能説明

1. `name()` : トークンの名称を返す。
2. `symbol()` : トークンのシンボルを返す。
3. `decimals()` : トークンが使用する小数点以下の桁数を返す。
4. `totalSupply()` : 発行済トークン数を返す。
5. `balanceOf(address tokenOwner)` : _ownerというアドレスの別のアカウントの残高を返す。
6. `allowance(address tokenOwner, address spender)` : _value分のトークンを_toに転送し、Transferイベントを発生させる。
7. `transfer(address to, uint tokens)` : _value分のトークンを_toに転送し、Transferイベントを発生させる。
8. `transferFrom(address from, address to, uint tokens)` : _value分のトークンをアドレス_fromからアドレス_toに転送し、Transferイベントを発生させる。
9. `approve(address spender, uint tokens)` : _spenderからtransferFromで送る際に指定された量のトークンを送れるように承認する。

参考

 * https://techblog.picappinc.jp/eip20-erc-20-token-standard-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-3809736b48bd
 * https://tomokazu-kozuma.com/explanation-of-methods-and-events-to-be-implemented-with-erc20-tokens/


### ERC-223 (Fungible)
* 正式採用はされていないが、ERC-20の「所定の手続きを踏まないとトークンを消失する可能性がある」という課題を防ぐために提案されている。

### ERC-721 (Non-Fungible)
* CryptoKitties（[CryptoKittiesの解説記事](https://bitdays.jp/blockchain/dapps/cryptokitties/)）に代表されるように、「量」では表せないトークン標準規格。
* `transferFrom`で扱う引数が、トークンの量ではなく、トークンIDとなっているのが特徴。

```
transferFrom(address _from, address _to, uint256 _tokenId)
```

### ST-20 (ERC-1400)
* Security Tokenの標準規格。
* セキュリティ(証券)トークン発行用プラットフォームを提供する「[Polymath](https://polymath.network/)」が開発した。
* KYC (Know-Your-Customer) と法律/コンプライアンス上の制限機能がトークンに組み込まれている。







#### いよいよ本題です。

# Azure Blockchain Tokensとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206241/f731d182-3402-dc27-6577-f4b71a9315f3.png)


## 概要
* Azure でのブロックチェーン台帳全体で標準化されたトークンの発行と管理を行うためのサービスとしてのプラットフォーム(PaaS)
* 事前に構築されたトークン テンプレートを使用して、ブロックチェーン ソリューション用の標準化されたトークンを作成できる
* サービスを使用して、独自のトークン テンプレートを作成することもできる
* トークンが発行されると、複数のブロックチェーン ネットワーク全体でトークンを管理できる
* REST APIで複数のブロックチェーンのトークンを管理できる
* [公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/blockchain/tokens/)(
⇒英語のドキュメントを日本語に翻訳したものと思われ、多少理解しにくい表現が含まれる可能性があります。)


# Azure Blockchain Tokensの詳細 
#### TTF, TTI
* Token Taxonomy Framework ([TTF](http://tokentaxonomy.org/wp-content/uploads/2019/11/TTF-Overview.pdf)) という標準ベースの基盤に基づいて構築されている
* TTF は、Token Taxonomy Initiative (TTI) トークンの作業グループから作成された成果物のセット
* TTI 作業グループは、トークンとその動作のビジネス分類を定義する
* Ethereum、Quorum、Corda、Hyperledger Fabric を含むすべての主要な台帳にわたって適用できる
* 詳細は⇒ https://block-chain.jp/business/tti-ttf-abt/

画像：Token Taxonomy Initiative (TTI)
![TTI](https://azurecomcdn.azureedge.net/cvt-cf2c9ea0c5419c8a1d6b4af0e36f39556bec2bd9453ebe6d5b197a533e3a53c5/images/page/services/blockchain-tokens/customer-parade.png)

## アカウント管理
概要

* 接続されたネットワーク上に直接新しいアカウントを作成することができ、Azure Blockchain Tokens でユーザーに代わってお客様のアカウントの秘密キーを管理
* グループを使用すると、複数のネットワークからさまざまなブロックチェーンアカウントをグループ化
* グループを使用してアクセスの制御を管理できる

ブロックチェーンネットワーク

* 1 つのブロックチェーン台帳または複数のブロックチェーン台帳をサービスに接続できる


## Azure Blockchain Tokensテンプレート
### ベーストークンタイプ
* τϜ{d,m,b,r} トークン テンプレートは、分割可能、鋳造可能、焼却可能で、かつロールをサポートした、代替可能なベース トークン

#### 代替可能トークン (𝜏F) 
* 例）ドル紙幣、全て同じ価値を持つ

#### 代替不可能トークン (𝜏N)
* 例）同じアパートの部屋でも、階数や位置や間取りによって価値が等しくない

#### ハイブリッド
* 代替可能トークンと代替不可能トークンの両方の要素を含んだトークン

1. 代替可能セグメントを持つハイブリッド代替不可能ベース
* 例）コンサートのチケット、同じ日の同じ区画のチケットなら代替可能だが、違う日のチケットは代替不可能

2. 代替不可能セグメントを持つハイブリッド代替可能ベース
* 例）不動産担保証券、多数の所有者間で複数の所有者が分割されて代替可能となる、証券は交換可能だが個々の担保は特定の1通の不動産

### トークン動作
* トークンの機能や制限を定義するもの

### 事前構築済みトークンテンプレート
* 変更なしで使用できる 4 つの事前構築済みトークン テンプレートが用意されている

#### コモディティ　トークン
* 一貫した価値を持ち、譲渡が可能
* 例）石油やエネルギー
* 𝜏F{~d,t,m,b,r} - 代替可能、一体、譲渡可能、鋳造可能、焼却可能、ロール サポートあり
* 多くのブロックチェーン シナリオでは、サプライ チェーン全体や複数の組織にわたって、透明性と可視性が要求される
* メタデータを使用してカスタマイズできる
* https://tokentaxonomy.org/wp-content/uploads/2019/10/License-Diploma-spec.pdf

#### クオリファイド　トークン
* 通常 1 つのエンティティに関連付けられていて、譲渡できない獲得物を表す
* 例）卒業証書や駐車違反記録
* 𝜏N{s,~t} - 代替不可能、シングルトン、譲渡不可能
* さまざまな監査や認証のシナリオでは、トークンの所有権を変更できないことが必要とされる
* https://tokentaxonomy.org/wp-content/uploads/2019/10/EEA-Reputation-spec.pdf

#### アセット　トークン
* その項目そのものに固有の価値を持ち、コモディティ化されることがない
* 例）美術館収蔵品や所有権など
* 𝜏N{s,t} - 代替不可能、シングルトン、譲渡可能
* コモディティ　トークンとの大きな違いは、本質的な独自性を持っていて、その価値がトークンの種類とは無関係であること
* 例）名高いアーティストが描いた油絵などの芸術作品
* 例外）モナリザのアート プリントはコモディティ トークン
* https://tokentaxonomy.org/wp-content/uploads/2019/10/OriginalArt-spec.pdf

#### チケット　トークン
* チケット　トークンには一貫した価値があるが、通常は有効期限がある
* 例）航空券、コンサートのチケット、スポーツのチケット
* 𝜏N{m,b,r} - 代替不可能、鋳造可能、焼却可能、ロール サポートあり。
* https://tokentaxonomy.org/wp-content/uploads/2019/10/ReservedTicket-spec.pdf



## 構成可能性
概要

* 複雑なシナリオで、4 つの構築済みのトークン テンプレートを使用しても実装できない場合がある
* 構成可能性を用いることで、独自のトークンテンプレートを構築することができる
* 新しいトークン テンプレートを作成すると、Azure Blockchain Tokens によってすべてのトークンの文法規則が検証される
* 作成されたテンプレートは、接続されているブロック チェーン ネットワークに発行するために Azure Blockchain Tokens サービスで保存される


### Burnable (消費可能) (b)
* トークンをサプライから削除する機能
* 例）ギフト カードのオンライン クレジット カード ポイントを利用すると、クレジット カード ポイントが消費される

### Delegable (委任可能) (g)
* 所有しているトークンに対して実行されるアクションを委任する機能
* 例）他の人に投票してもらう

### Logable (ログ記録可能) (l)
* ログに記録する機能
* 例）特定の映画を上映することができる映画配信用のログ記録可能なトークンを各シアターに発行 　　映画を再生する場合、ロイヤルティの支払いは映画のリリース期間中の上映ごとに行われる 　　上映では各上映のトランザクションを記録する必要がある 　　俳優ビルドでは、映画トークンを使用して、配信で映画館ごとに上映される映画ごとの支払いを検証できる


### Mint-able (作成可能) (m)
* 追加のトークンを作り出す機能
* minter ロールには、この作成可能ビヘイビアーが含まれる
* 例）ロイヤルティ プログラムを実装する小売企業の場合、ロイヤルティ プログラムに作成可能トークンを使用できる
* 顧客ベースの成長に合わせて、顧客のために追加のロイヤルティ ポイントを作り出すことができる

### 再分割不可または全体 (~d)
* トークンが細分化されないように防ぐための制限
* 例）1 つの絵画を複数の小さなパーツに分割することはできない


### 譲渡不可 (~t)
* 初期トークン所有者からの所有権の変更を防ぐための制限
* 例）大学の卒業証書

### ロール (r)
* 特定の動作のトークン テンプレート クラス内でロールを定義する機能
* トークンの作成時にトークンがサポートするロール名の一覧を提供できる
* ロールを指定すると、ユーザーはこれらの動作にロールを割り当てることができる
* 現時点では、minter ロールのみがサポート

### Singleton (シングルトン) (s)
* 1 つのトークンの提供を許可する制限
* 例）博物館の展示物、唯一のもの


### Subdividable (再分割可能) (d)
* 1 つのトークンをより小さなパーツに分割する機能
* 例）ドルはセントに分割することができる

### 譲渡可能 (t)
* トークンの所有権を譲渡する機能
* 例）不動産の権限は譲渡可能なトークンであり、不動産が売却されるときに、ある人から別の人に譲渡される可能性がある




### 公式ドキュメントからは分からなかったこと
* Ethereum、Quorum、Corda、Hyperledger Fabric をどのように連携するのか
* 本番サービスのリリース時期


## (参考) Azure Blockchain Serviceについて

### Azure Blockchain Service
Microsoft Azure が提供するフルマネージドのブロックチェーンサービスであり、以下の機能が提供されている。
(注意：2019/11/22時点ではPreview版)

* ネットワークの簡単なデプロイと運用
* 組み込みのコンソーシアム管理
* 使い慣れた開発ツールによるスマート コントラクトの開発

⇒　[公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/blockchain/service/)

### Microsoft Azure Blockchain Workbench
ブロックチェーンを用いたアプリケーション開発における、豊富なコードサンプルが用意されている
⇒　[Github Microsoft Azure Blockchain Workbench](https://github.com/Azure-Samples/blockchain/tree/master/blockchain-workbench/application-and-smart-contract-samples/readme.md)

### 開発者向けリソース
ホワイト ペーパーを読む
[~ Tokenization ~ Establishing Digital Representations of Value as the Medium of Exchange](https://azure.microsoft.com/mediahandler/files/resourcefiles/tokenization-establishing-digital-representations-of-val-ue-as-the-medium-of-exchange/Tokenization%20An%20Introduction.pdf)

### 次回
次回は、Azure Blockchain TokensのPreviewを触ってみた概況を書きたいと思います。