SlideShare une entreprise Scribd logo
1  sur  66
Copyright Drecom Co., Ltd. All Rights Reserved. 1
のスマートコントラクトを
見てみよう
非中央集権的な
トークンのカタチ
&
Copyright Drecom Co., Ltd. All Rights Reserved. 2
前半
Copyright Drecom Co., Ltd. All Rights Reserved. 3
のスマートコントラクトを
見てみよう
blockchain.tokyo #12
2018/09/25
Copyright Drecom Co., Ltd. All Rights Reserved. 4
自己紹介
株式会社ドリコム
DRIP部
エンジニア
小川光典
@ogwmtnr
Copyright Drecom Co., Ltd. All Rights Reserved. 5
DRIP
Copyright Drecom Co., Ltd. All Rights Reserved. 6
DRIP
Copyright Drecom Co., Ltd. All Rights Reserved. 7
DRIP
Copyright Drecom Co., Ltd. All Rights Reserved. 8
LoveChain
2018年7月5日リリース
https://lovechain.ooo
Copyright Drecom Co., Ltd. All Rights Reserved. 9
LoveChainの仕組み
タロウ ハナコ
LoveChain
スマートコントラクトハナコ
に
プロポーズ
タロウ
に
プロポーズPartner
タロウ & ハナコ
Copyright Drecom Co., Ltd. All Rights Reserved. 10
LoveChainの仕組み
タロウ ハナコ
LoveChain
スマートコントラクトメッセージ
追加
メッセージ
追加
Partner
タロウ & ハナコ
タロウ & ハナコ
メッセージ
url
view
Copyright Drecom Co., Ltd. All Rights Reserved. 11
LoveChainの仕組み
タロウ ハナコ
LoveChain
スマートコントラクト お別れ
Partner
タロウ & ハナコ
タロウ & ハナコ
メッセージ
url
view
Copyright Drecom Co., Ltd. All Rights Reserved. 12
LoveChainコントラクト
mapping (address => address) private propose;
誰が誰に対してプロポーズ中なのか、を保持。
mapping (address => address) private partner;
誰と誰がパートナーなのか、を保持。
例えばタロウ(address: 0xA)とハナコ(address: 0xB)がパートナーだったら、
partner[0xA] = 0xB;
partner[0xB] = 0xA;
という状態になっている。
mapping (uint256 => string[]) private partnerMessages;
パートナーのメッセージが格納されている。
Copyright Drecom Co., Ltd. All Rights Reserved. 13
LoveChainコントラクト
function proposeTo(address to) public
msg.sender から to に対してプロポーズ。
▼既に to から msg.sender に対してプロポーズ済だった場合、
partner[msg.sender] = to;
partner[to] = msg.sender;
▼まだ to からプロポーズされてない場合、
propose[msg.sender] = to;
Copyright Drecom Co., Ltd. All Rights Reserved. 14
LoveChainコントラクト
function addMessage(string message) public
パートナーとの `partnerMessages` にメッセージを追加。
`partnerMessages` のキーは uint256 になっていて、ここには
「パートナー2人の `address` 」
を元にして作られたハッシュが入る。
Copyright Drecom Co., Ltd. All Rights Reserved. 15
LoveChainコントラクト
function craetePartnerBytes(address a, address b) private pure returns(bytes) {
bytes memory arr = new bytes(64);
bytes32 first;
bytes32 second;
if (uint160(a)< uint160(b)){ // 小さい方が先頭にくるように調整している
first = keccak256(a);
second = keccak256(b);
} else {
first = keccak256(b);
second = keccak256(a);
}
for (uint i = 0; i < 32; i++){
arr[i]= first[i];
arr[i+ 32] = second[i];
}
return arr;
}
Copyright Drecom Co., Ltd. All Rights Reserved. 16
LoveChainコントラクト
function addMessage(string message) public {
address target = partner[msg.sender];
require(isPartner(msg.sender, target) == true);
uint index = partnerMessages[uint256(keccak256(craetePartnerBytes(msg.sender, target)))].push(message) - 1;
Message(msg.sender, target, message, index);
}
Copyright Drecom Co., Ltd. All Rights Reserved. 17
LoveChainコントラクト
function getPartnerMessage(address a, address b, uint index) public view returns
(string)
パートナーのメッセージを取得する。
address さえ知っていれば誰でも叩ける。
パートナーでない address を指定した場合は revert となる。
Copyright Drecom Co., Ltd. All Rights Reserved. 18
LoveChainコントラクト
function getPartnerMessage(address a, address b, uint index) public view returns (string) {
require(isPartner(a,b) == true);
uint256 key = uint256(keccak256(craetePartnerBytes(a,b)));
if (isHiddenMessages[key] == true) {
require((msg.sender == a) || (msg.sender == b));
}
uint count = partnerMessages[key].length;
require(index < count);
return partnerMessages[key][index];
}
Copyright Drecom Co., Ltd. All Rights Reserved. 19
LoveChainコントラクト
function farewellTo(address to) public
パートナーとお別れする。
別れると先ほど紹介した `partnerMessageCount` や `getPartnerMessage` が revert となるため、
メッセージが見れなくなる。
Copyright Drecom Co., Ltd. All Rights Reserved. 20
LoveChain まとめ
• コントラクトは主に次の状態を持っている
– propose : 誰から誰にプロポーズ中か
– partner : 誰と誰がパートナーか
– partnerMessage : パートナーのメッセージ
• コントラクトは主に次のメソッドを使用している
– proposeTo
– addMessage
– partnerMessageCount / getPartnerMessage
– farawellTo
• パートナーのメッセージは2人の address を元に生成された
ハッシュをキーとする mapping object に保管される
Copyright Drecom Co., Ltd. All Rights Reserved. 21
LoveChainまとめ
公式ページフッターからコントラクトの ethscan ページへ行けます。
ソースコードも公開してます。
ココ!
Copyright Drecom Co., Ltd. All Rights Reserved. 22
LoveChainまとめ
公式ページフッターからコントラクトの ethscan ページへ行けます。
ソースコードも公開してます。
Copyright Drecom Co., Ltd. All Rights Reserved. 23
後半
Copyright Drecom Co., Ltd. All Rights Reserved. 24
blockchain.tokyo #12
2018/09/25
非中央集権的な
トークンのカタチ
Copyright Drecom Co., Ltd. All Rights Reserved. 25
自己紹介
株式会社ドリコム
DRIP部
エンジニア
小川光典
@ogwmtnr
Copyright Drecom Co., Ltd. All Rights Reserved. 26
ところで
みなさん
Copyright Drecom Co., Ltd. All Rights Reserved. 27
ERC721
トークン
持ってますか?
Copyright Drecom Co., Ltd. All Rights Reserved. 28
代替不可能
な
トークン
Copyright Drecom Co., Ltd. All Rights Reserved. 29
ERC721 と言えば
CryptoKitties
Copyright Drecom Co., Ltd. All Rights Reserved. 30
ERC721 と言えば
EtherTulips
Copyright Drecom Co., Ltd. All Rights Reserved. 31
ERC721 と言えば
CryptoCelebrities
Copyright Drecom Co., Ltd. All Rights Reserved. 32
ERC721 トークンのトレード
OpenSea
Copyright Drecom Co., Ltd. All Rights Reserved. 33
ERC721 トークンのトレード
RareBits
Copyright Drecom Co., Ltd. All Rights Reserved. 34
ERC721 トークンの価値
ERC721 トークンは、ユーザーの資産としてブロックチェー
ン上に半永久的に保持される。
ERC721 トークンの価値 ≒ サービス内での価値に紐づく
Copyright Drecom Co., Ltd. All Rights Reserved. 35
疑問
• (1) : サービスが終了したら全てのトークンは価値が無く
なってしまう?
• (2) : ユーザーが価値を手にする瞬間は売った瞬間、つま
りトークンを失う瞬間なので、ユーザーは「トークンが
資産価値を持つ」についてポジティブなイメージしずら
いのでは?
– 特に、高値のトークンはサービス内で価値があるので、サービ
ス利用を続行したいユーザーにとっては手放したくないので
は?
Copyright Drecom Co., Ltd. All Rights Reserved. 36
観測した取り組み1
HL-Report : Rekiconne Archive
Copyright Drecom Co., Ltd. All Rights Reserved. 37
観測した取り組み1
レキシトコネクト内のキャラクターやアイテムの一部を
トークン化してユーザーに配布。
Copyright Drecom Co., Ltd. All Rights Reserved. 38
観測した取り組み2
キティバース
Copyright Drecom Co., Ltd. All Rights Reserved. 39
観測した取り組み2
仮想猫のデータを使って別の DApps が作れる
Copyright Drecom Co., Ltd. All Rights Reserved. 40
どちらも、トークンの参照は解放されているが、発行権は
各サービスが握っている。
任意のデータを持ったトークンを勝手に発行されないよう
に、すなわちトークンの品質を担保するためである。
Copyright Drecom Co., Ltd. All Rights Reserved. 41
どちらも、トークンの参照は解放されているが、発行権は
各サービスが握っている。
任意のデータを持ったトークンを勝手に発行されないよう
に、すなわちトークンの品質を担保するためである。
↓
もしトークンの発行権も解放したら…
Copyright Drecom Co., Ltd. All Rights Reserved. 42
どちらも、トークンの参照は解放されているが、発行権は
各サービスが握っている。
任意のデータを持ったトークンを勝手に発行されないよう
に、すなわちトークンの品質を担保するためである。
↓
もしトークンの発行権も解放したら…
どんな DApps でも発行でき、DApps 間で使いまわせるような
トークンが生まれて、ユーザーにとってトークンを作った
り所持したりするモチベーションが高まるのでは…?
Copyright Drecom Co., Ltd. All Rights Reserved. 43
作ろう!
Copyright Drecom Co., Ltd. All Rights Reserved. 44
まず ERC721 について
// イベント
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(addressindexed _owner, address indexed _operator, bool _approved);
// トークン所有権の移動
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
// owner 以外でトークン transfer 可能なアドレスの設定
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address_operator, bool _approved) external;
// オーナー情報
function balanceOf(address _owner) external view returns (uint256);
function isApprovedForAll(address_owner, address _operator) external view returns (bool);
// トークン情報
function ownerOf(uint256 _tokenId) external view returns (address);
function getApproved(uint256 _tokenId) external view returns (address);
Copyright Drecom Co., Ltd. All Rights Reserved. 45
まず ERC721 について
// イベント
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(addressindexed _owner, address indexed _operator, bool _approved);
// トークン所有権の移動
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
// owner 以外でトークン transfer 可能なアドレスの設定
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address_operator, bool _approved) external;
// オーナー情報
function balanceOf(address _owner) external view returns (uint256);
function isApprovedForAll(address_owner, address _operator) external view returns (bool);
// トークン情報
function ownerOf(uint256 _tokenId) external view returns (address);
function getApproved(uint256 _tokenId) external view returns (address);
Copyright Drecom Co., Ltd. All Rights Reserved. 46
まず ERC721 について
トークンの持つ固有な情報として定義されているのは
• owner
• approved
のみ。
それだけだと CryptoKitties における遺伝子のようなデータを持
たせられないので、DApps が定義可能な固有情報をトークン
に定義する。
「遺伝子」だと生物に寄りすぎているので、異なる名称を
考える。
Copyright Drecom Co., Ltd. All Rights Reserved. 47
ERC721 拡張
uint256 inscription : 銘刻
これを発行時に渡すと、不変なデータとしてトークンに刻
まれる。
function mint(address _to, uint256 _inscription) external
Copyright Drecom Co., Ltd. All Rights Reserved. 48
ERC721 拡張
しかし発行権を解放すると、任意の DApps で有利な inscription
を持つトークンが生成できてしまうので、トークンの品質
を担保できなくなるのでは?
Copyright Drecom Co., Ltd. All Rights Reserved. 49
ERC721 拡張
しかし発行権を解放すると、任意の DApps で有利な inscription
を持つトークンが生成できてしまうので、トークンの品質
を担保できなくなるのでは?
↓
………
Copyright Drecom Co., Ltd. All Rights Reserved. 50
ERC721 拡張
Copyright Drecom Co., Ltd. All Rights Reserved. 51
ERC721 拡張
Copyright Drecom Co., Ltd. All Rights Reserved. 52
ERC721 拡張
Copyright Drecom Co., Ltd. All Rights Reserved. 53
ERC721 拡張
Copyright Drecom Co., Ltd. All Rights Reserved. 54
ERC721 拡張
Copyright Drecom Co., Ltd. All Rights Reserved. 55
ERC721 拡張
!
Copyright Drecom Co., Ltd. All Rights Reserved. 56
ERC721 拡張
しかし発行権を解放すると、任意の DApps で有利な inscription
を持つトークンが生成できてしまうので、トークンの品質
を担保できなくなるのでは?
↓
トークンに発行元を記載する事で、そのトークンの品質に
対する信頼性を担保できるのでは?
Copyright Drecom Co., Ltd. All Rights Reserved. 57
ERC721 拡張
address creator
トークン発行時に msg.sender をトークン自身の creator として保
持させる。
Copyright Drecom Co., Ltd. All Rights Reserved. 58
ERC721 拡張 使い方イメージ
DApps 独自
コントラクト
ERC721 拡張
コントラクト
発行を call
ERC721 拡張コントラクトの上に独自コ
ントラクトを乗せて使えば、独自コ
ントラクトのアドレスがトークンの
creator に刻まれる。
Inscription に入れるデータのロジックを
独自コントラクト等に記述すれば、
その発行元におけるトークンの品質
は担保されるはず。
Copyright Drecom Co., Ltd. All Rights Reserved. 59
ERC721 拡張
ERC721 トークンが
• DApps が定義可能な不変データ
• 自身の発行元
を持つ。
各 DApps は発行元と不変データを参照し、そのトークンの
振る舞いを決定できる。
例) ある Dapps では猫で、ある Dapps では有名人で、ある Dapps
では武器になって、ある Dapps では投票権になる。
トークンの発行/管理において、より非中央集権的な世界を
創り出せそうな可能性を感じる。
Copyright Drecom Co., Ltd. All Rights Reserved. 60
作りました
Copyright Drecom Co., Ltd. All Rights Reserved. 61
本日リリース!
https://6-pillars.ooo
Copyright Drecom Co., Ltd. All Rights Reserved. 62
DApps をまたいで利用可能なトークンを誰でも生成できる、
Ethereum 上で動作するスマートコントラクトです。
生成されたトークンには不変なデータが明記され、開発者
がそれを使いトークンの振る舞いを決定する事で、ある
DApps 上では価値がなかったものが、他の DApps 上では価値
が高いものとして扱われるなど、トークンの価値が絶対価
値から相対価値になります。
Copyright Drecom Co., Ltd. All Rights Reserved. 63
詳細はサイトにて。
https://6-pillars.ooo
github にてコードを公開してます。
npm ライブラリとして利用可能な状態になっています。
https://github.com/drip-oss/llllll
Copyright Drecom Co., Ltd. All Rights Reserved. 64
まとめ
• ERC721 トークンを使った既存サービスに思う疑問。
– 価値がサービスそのものに強く依存?
– トークンが価値になるタイミングがポジティブではない?
• 既にこの疑問に対する取り組みをしているサービスは存在するが、
トークンの品質を担保するため全てが解放されているわけではない。
• トークンに「銘文」と「発行元」を刻む事によりDApps で使いやす
い、かつ誰でも発行可能でどんな DApps も乗り越えて使える ERC721 拡
張トークンを定義し「||||||」としてリリースした。
Copyright Drecom Co., Ltd. All Rights Reserved. 65
drip drecom 🔍
フィードバックお待ちしてます
Copyright Drecom Co., Ltd. All Rights Reserved. 66
ご静聴
ありがとうございました!

Contenu connexe

Similaire à LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ

DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!Drecom Co., Ltd.
 
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...blockchainexe
 
エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎Hyperleger Tokyo Meetup
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringYahoo!デベロッパーネットワーク
 
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015Toru Yamaguchi
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipelineMasatomo Ito
 
20211209 lt runtime_field
20211209 lt runtime_field20211209 lt runtime_field
20211209 lt runtime_fieldNomura Yuta
 
とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)Takafumi ONAKA
 
The practice of nft+defi ( nft+defiの小さな実践)
The practice of nft+defi ( nft+defiの小さな実践)The practice of nft+defi ( nft+defiの小さな実践)
The practice of nft+defi ( nft+defiの小さな実践)wei-li
 
KYC and identity on blockchain
KYC and identity on blockchainKYC and identity on blockchain
KYC and identity on blockchainmosa siru
 
アドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているか
アドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているかアドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているか
アドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているか彰 村地
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 
SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法
SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法
SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法SORACOM,INC
 
RETEアルゴリズムを使いこなせ
RETEアルゴリズムを使いこなせRETEアルゴリズムを使いこなせ
RETEアルゴリズムを使いこなせMasahiko Umeno
 
Idpfのepub lcpとは何か
Idpfのepub  lcpとは何かIdpfのepub  lcpとは何か
Idpfのepub lcpとは何かSampei Tohru
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Hyperleger Tokyo Meetup
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battleMitsuki Kenichi
 

Similaire à LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ (20)

DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
 
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
Blockchain EXE Legal #1:リーガル x エンジニア:ブロックチェーンの技術特性を踏まえた法的論点整理(西村 祥一:コンプス情報技術研...
 
Aerospike deep dive LDTs
Aerospike deep dive LDTsAerospike deep dive LDTs
Aerospike deep dive LDTs
 
エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
オタク×Node.js勉強会
オタク×Node.js勉強会オタク×Node.js勉強会
オタク×Node.js勉強会
 
ソフトウェアが可能する新しいネッワークの 未来と提供する価値:ユースケース
ソフトウェアが可能する新しいネッワークの 未来と提供する価値:ユースケースソフトウェアが可能する新しいネッワークの 未来と提供する価値:ユースケース
ソフトウェアが可能する新しいネッワークの 未来と提供する価値:ユースケース
 
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 
20211209 lt runtime_field
20211209 lt runtime_field20211209 lt runtime_field
20211209 lt runtime_field
 
とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)とあるアプリの開発運用(トラブルシュート)
とあるアプリの開発運用(トラブルシュート)
 
The practice of nft+defi ( nft+defiの小さな実践)
The practice of nft+defi ( nft+defiの小さな実践)The practice of nft+defi ( nft+defiの小さな実践)
The practice of nft+defi ( nft+defiの小さな実践)
 
KYC and identity on blockchain
KYC and identity on blockchainKYC and identity on blockchain
KYC and identity on blockchain
 
アドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているか
アドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているかアドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているか
アドレスバーにURL打ち込んでからページが表示されるまでに 何が起こっているか
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法
SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法
SORACOM Technology Camp 2018 | B1. SORACOM を API で 256 倍使いこなす方法
 
RETEアルゴリズムを使いこなせ
RETEアルゴリズムを使いこなせRETEアルゴリズムを使いこなせ
RETEアルゴリズムを使いこなせ
 
Idpfのepub lcpとは何か
Idpfのepub  lcpとは何かIdpfのepub  lcpとは何か
Idpfのepub lcpとは何か
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
 

Plus de Drecom Co., Ltd.

コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活Drecom Co., Ltd.
 
サービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfサービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfDrecom Co., Ltd.
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治Drecom Co., Ltd.
 
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介Drecom Co., Ltd.
 
HTML5 ゲームフレームワーク開発について
HTML5 ゲームフレームワーク開発についてHTML5 ゲームフレームワーク開発について
HTML5 ゲームフレームワーク開発についてDrecom Co., Ltd.
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)Drecom Co., Ltd.
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)Drecom Co., Ltd.
 
AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜Drecom Co., Ltd.
 
AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜Drecom Co., Ltd.
 
rails-developers-meetup-day4
rails-developers-meetup-day4rails-developers-meetup-day4
rails-developers-meetup-day4Drecom Co., Ltd.
 
html5conf2018-sponsor-session
html5conf2018-sponsor-sessionhtml5conf2018-sponsor-session
html5conf2018-sponsor-sessionDrecom Co., Ltd.
 
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法Drecom Co., Ltd.
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!Drecom Co., Ltd.
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよDrecom Co., Ltd.
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくしDrecom Co., Ltd.
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介Drecom Co., Ltd.
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜Drecom Co., Ltd.
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…Drecom Co., Ltd.
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料Drecom Co., Ltd.
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティストDrecom Co., Ltd.
 

Plus de Drecom Co., Ltd. (20)

コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活
 
サービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfサービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdf
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
 
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
 
HTML5 ゲームフレームワーク開発について
HTML5 ゲームフレームワーク開発についてHTML5 ゲームフレームワーク開発について
HTML5 ゲームフレームワーク開発について
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜
 
AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜
 
rails-developers-meetup-day4
rails-developers-meetup-day4rails-developers-meetup-day4
rails-developers-meetup-day4
 
html5conf2018-sponsor-session
html5conf2018-sponsor-sessionhtml5conf2018-sponsor-session
html5conf2018-sponsor-session
 
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくし
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
 
フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料フライングゲットガチャ セミナー資料
フライングゲットガチャ セミナー資料
 
5年後のデータサイエンティスト
5年後のデータサイエンティスト5年後のデータサイエンティスト
5年後のデータサイエンティスト
 

Dernier

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. 1 のスマートコントラクトを 見てみよう 非中央集権的な トークンのカタチ &
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. 2 前半
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. 3 のスマートコントラクトを 見てみよう blockchain.tokyo #12 2018/09/25
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. 4 自己紹介 株式会社ドリコム DRIP部 エンジニア 小川光典 @ogwmtnr
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. 5 DRIP
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. 6 DRIP
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. 7 DRIP
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. 8 LoveChain 2018年7月5日リリース https://lovechain.ooo
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. 9 LoveChainの仕組み タロウ ハナコ LoveChain スマートコントラクトハナコ に プロポーズ タロウ に プロポーズPartner タロウ & ハナコ
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. 10 LoveChainの仕組み タロウ ハナコ LoveChain スマートコントラクトメッセージ 追加 メッセージ 追加 Partner タロウ & ハナコ タロウ & ハナコ メッセージ url view
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. 11 LoveChainの仕組み タロウ ハナコ LoveChain スマートコントラクト お別れ Partner タロウ & ハナコ タロウ & ハナコ メッセージ url view
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. 12 LoveChainコントラクト mapping (address => address) private propose; 誰が誰に対してプロポーズ中なのか、を保持。 mapping (address => address) private partner; 誰と誰がパートナーなのか、を保持。 例えばタロウ(address: 0xA)とハナコ(address: 0xB)がパートナーだったら、 partner[0xA] = 0xB; partner[0xB] = 0xA; という状態になっている。 mapping (uint256 => string[]) private partnerMessages; パートナーのメッセージが格納されている。
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. 13 LoveChainコントラクト function proposeTo(address to) public msg.sender から to に対してプロポーズ。 ▼既に to から msg.sender に対してプロポーズ済だった場合、 partner[msg.sender] = to; partner[to] = msg.sender; ▼まだ to からプロポーズされてない場合、 propose[msg.sender] = to;
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 14 LoveChainコントラクト function addMessage(string message) public パートナーとの `partnerMessages` にメッセージを追加。 `partnerMessages` のキーは uint256 になっていて、ここには 「パートナー2人の `address` 」 を元にして作られたハッシュが入る。
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. 15 LoveChainコントラクト function craetePartnerBytes(address a, address b) private pure returns(bytes) { bytes memory arr = new bytes(64); bytes32 first; bytes32 second; if (uint160(a)< uint160(b)){ // 小さい方が先頭にくるように調整している first = keccak256(a); second = keccak256(b); } else { first = keccak256(b); second = keccak256(a); } for (uint i = 0; i < 32; i++){ arr[i]= first[i]; arr[i+ 32] = second[i]; } return arr; }
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. 16 LoveChainコントラクト function addMessage(string message) public { address target = partner[msg.sender]; require(isPartner(msg.sender, target) == true); uint index = partnerMessages[uint256(keccak256(craetePartnerBytes(msg.sender, target)))].push(message) - 1; Message(msg.sender, target, message, index); }
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. 17 LoveChainコントラクト function getPartnerMessage(address a, address b, uint index) public view returns (string) パートナーのメッセージを取得する。 address さえ知っていれば誰でも叩ける。 パートナーでない address を指定した場合は revert となる。
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. 18 LoveChainコントラクト function getPartnerMessage(address a, address b, uint index) public view returns (string) { require(isPartner(a,b) == true); uint256 key = uint256(keccak256(craetePartnerBytes(a,b))); if (isHiddenMessages[key] == true) { require((msg.sender == a) || (msg.sender == b)); } uint count = partnerMessages[key].length; require(index < count); return partnerMessages[key][index]; }
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. 19 LoveChainコントラクト function farewellTo(address to) public パートナーとお別れする。 別れると先ほど紹介した `partnerMessageCount` や `getPartnerMessage` が revert となるため、 メッセージが見れなくなる。
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. 20 LoveChain まとめ • コントラクトは主に次の状態を持っている – propose : 誰から誰にプロポーズ中か – partner : 誰と誰がパートナーか – partnerMessage : パートナーのメッセージ • コントラクトは主に次のメソッドを使用している – proposeTo – addMessage – partnerMessageCount / getPartnerMessage – farawellTo • パートナーのメッセージは2人の address を元に生成された ハッシュをキーとする mapping object に保管される
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. 21 LoveChainまとめ 公式ページフッターからコントラクトの ethscan ページへ行けます。 ソースコードも公開してます。 ココ!
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. 22 LoveChainまとめ 公式ページフッターからコントラクトの ethscan ページへ行けます。 ソースコードも公開してます。
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. 23 後半
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. 24 blockchain.tokyo #12 2018/09/25 非中央集権的な トークンのカタチ
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. 25 自己紹介 株式会社ドリコム DRIP部 エンジニア 小川光典 @ogwmtnr
  • 26. Copyright Drecom Co., Ltd. All Rights Reserved. 26 ところで みなさん
  • 27. Copyright Drecom Co., Ltd. All Rights Reserved. 27 ERC721 トークン 持ってますか?
  • 28. Copyright Drecom Co., Ltd. All Rights Reserved. 28 代替不可能 な トークン
  • 29. Copyright Drecom Co., Ltd. All Rights Reserved. 29 ERC721 と言えば CryptoKitties
  • 30. Copyright Drecom Co., Ltd. All Rights Reserved. 30 ERC721 と言えば EtherTulips
  • 31. Copyright Drecom Co., Ltd. All Rights Reserved. 31 ERC721 と言えば CryptoCelebrities
  • 32. Copyright Drecom Co., Ltd. All Rights Reserved. 32 ERC721 トークンのトレード OpenSea
  • 33. Copyright Drecom Co., Ltd. All Rights Reserved. 33 ERC721 トークンのトレード RareBits
  • 34. Copyright Drecom Co., Ltd. All Rights Reserved. 34 ERC721 トークンの価値 ERC721 トークンは、ユーザーの資産としてブロックチェー ン上に半永久的に保持される。 ERC721 トークンの価値 ≒ サービス内での価値に紐づく
  • 35. Copyright Drecom Co., Ltd. All Rights Reserved. 35 疑問 • (1) : サービスが終了したら全てのトークンは価値が無く なってしまう? • (2) : ユーザーが価値を手にする瞬間は売った瞬間、つま りトークンを失う瞬間なので、ユーザーは「トークンが 資産価値を持つ」についてポジティブなイメージしずら いのでは? – 特に、高値のトークンはサービス内で価値があるので、サービ ス利用を続行したいユーザーにとっては手放したくないので は?
  • 36. Copyright Drecom Co., Ltd. All Rights Reserved. 36 観測した取り組み1 HL-Report : Rekiconne Archive
  • 37. Copyright Drecom Co., Ltd. All Rights Reserved. 37 観測した取り組み1 レキシトコネクト内のキャラクターやアイテムの一部を トークン化してユーザーに配布。
  • 38. Copyright Drecom Co., Ltd. All Rights Reserved. 38 観測した取り組み2 キティバース
  • 39. Copyright Drecom Co., Ltd. All Rights Reserved. 39 観測した取り組み2 仮想猫のデータを使って別の DApps が作れる
  • 40. Copyright Drecom Co., Ltd. All Rights Reserved. 40 どちらも、トークンの参照は解放されているが、発行権は 各サービスが握っている。 任意のデータを持ったトークンを勝手に発行されないよう に、すなわちトークンの品質を担保するためである。
  • 41. Copyright Drecom Co., Ltd. All Rights Reserved. 41 どちらも、トークンの参照は解放されているが、発行権は 各サービスが握っている。 任意のデータを持ったトークンを勝手に発行されないよう に、すなわちトークンの品質を担保するためである。 ↓ もしトークンの発行権も解放したら…
  • 42. Copyright Drecom Co., Ltd. All Rights Reserved. 42 どちらも、トークンの参照は解放されているが、発行権は 各サービスが握っている。 任意のデータを持ったトークンを勝手に発行されないよう に、すなわちトークンの品質を担保するためである。 ↓ もしトークンの発行権も解放したら… どんな DApps でも発行でき、DApps 間で使いまわせるような トークンが生まれて、ユーザーにとってトークンを作った り所持したりするモチベーションが高まるのでは…?
  • 43. Copyright Drecom Co., Ltd. All Rights Reserved. 43 作ろう!
  • 44. Copyright Drecom Co., Ltd. All Rights Reserved. 44 まず ERC721 について // イベント event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(addressindexed _owner, address indexed _operator, bool _approved); // トークン所有権の移動 function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; function transferFrom(address _from, address _to, uint256 _tokenId) external payable; // owner 以外でトークン transfer 可能なアドレスの設定 function approve(address _approved, uint256 _tokenId) external payable; function setApprovalForAll(address_operator, bool _approved) external; // オーナー情報 function balanceOf(address _owner) external view returns (uint256); function isApprovedForAll(address_owner, address _operator) external view returns (bool); // トークン情報 function ownerOf(uint256 _tokenId) external view returns (address); function getApproved(uint256 _tokenId) external view returns (address);
  • 45. Copyright Drecom Co., Ltd. All Rights Reserved. 45 まず ERC721 について // イベント event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(addressindexed _owner, address indexed _operator, bool _approved); // トークン所有権の移動 function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable; function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; function transferFrom(address _from, address _to, uint256 _tokenId) external payable; // owner 以外でトークン transfer 可能なアドレスの設定 function approve(address _approved, uint256 _tokenId) external payable; function setApprovalForAll(address_operator, bool _approved) external; // オーナー情報 function balanceOf(address _owner) external view returns (uint256); function isApprovedForAll(address_owner, address _operator) external view returns (bool); // トークン情報 function ownerOf(uint256 _tokenId) external view returns (address); function getApproved(uint256 _tokenId) external view returns (address);
  • 46. Copyright Drecom Co., Ltd. All Rights Reserved. 46 まず ERC721 について トークンの持つ固有な情報として定義されているのは • owner • approved のみ。 それだけだと CryptoKitties における遺伝子のようなデータを持 たせられないので、DApps が定義可能な固有情報をトークン に定義する。 「遺伝子」だと生物に寄りすぎているので、異なる名称を 考える。
  • 47. Copyright Drecom Co., Ltd. All Rights Reserved. 47 ERC721 拡張 uint256 inscription : 銘刻 これを発行時に渡すと、不変なデータとしてトークンに刻 まれる。 function mint(address _to, uint256 _inscription) external
  • 48. Copyright Drecom Co., Ltd. All Rights Reserved. 48 ERC721 拡張 しかし発行権を解放すると、任意の DApps で有利な inscription を持つトークンが生成できてしまうので、トークンの品質 を担保できなくなるのでは?
  • 49. Copyright Drecom Co., Ltd. All Rights Reserved. 49 ERC721 拡張 しかし発行権を解放すると、任意の DApps で有利な inscription を持つトークンが生成できてしまうので、トークンの品質 を担保できなくなるのでは? ↓ ………
  • 50. Copyright Drecom Co., Ltd. All Rights Reserved. 50 ERC721 拡張
  • 51. Copyright Drecom Co., Ltd. All Rights Reserved. 51 ERC721 拡張
  • 52. Copyright Drecom Co., Ltd. All Rights Reserved. 52 ERC721 拡張
  • 53. Copyright Drecom Co., Ltd. All Rights Reserved. 53 ERC721 拡張
  • 54. Copyright Drecom Co., Ltd. All Rights Reserved. 54 ERC721 拡張
  • 55. Copyright Drecom Co., Ltd. All Rights Reserved. 55 ERC721 拡張 !
  • 56. Copyright Drecom Co., Ltd. All Rights Reserved. 56 ERC721 拡張 しかし発行権を解放すると、任意の DApps で有利な inscription を持つトークンが生成できてしまうので、トークンの品質 を担保できなくなるのでは? ↓ トークンに発行元を記載する事で、そのトークンの品質に 対する信頼性を担保できるのでは?
  • 57. Copyright Drecom Co., Ltd. All Rights Reserved. 57 ERC721 拡張 address creator トークン発行時に msg.sender をトークン自身の creator として保 持させる。
  • 58. Copyright Drecom Co., Ltd. All Rights Reserved. 58 ERC721 拡張 使い方イメージ DApps 独自 コントラクト ERC721 拡張 コントラクト 発行を call ERC721 拡張コントラクトの上に独自コ ントラクトを乗せて使えば、独自コ ントラクトのアドレスがトークンの creator に刻まれる。 Inscription に入れるデータのロジックを 独自コントラクト等に記述すれば、 その発行元におけるトークンの品質 は担保されるはず。
  • 59. Copyright Drecom Co., Ltd. All Rights Reserved. 59 ERC721 拡張 ERC721 トークンが • DApps が定義可能な不変データ • 自身の発行元 を持つ。 各 DApps は発行元と不変データを参照し、そのトークンの 振る舞いを決定できる。 例) ある Dapps では猫で、ある Dapps では有名人で、ある Dapps では武器になって、ある Dapps では投票権になる。 トークンの発行/管理において、より非中央集権的な世界を 創り出せそうな可能性を感じる。
  • 60. Copyright Drecom Co., Ltd. All Rights Reserved. 60 作りました
  • 61. Copyright Drecom Co., Ltd. All Rights Reserved. 61 本日リリース! https://6-pillars.ooo
  • 62. Copyright Drecom Co., Ltd. All Rights Reserved. 62 DApps をまたいで利用可能なトークンを誰でも生成できる、 Ethereum 上で動作するスマートコントラクトです。 生成されたトークンには不変なデータが明記され、開発者 がそれを使いトークンの振る舞いを決定する事で、ある DApps 上では価値がなかったものが、他の DApps 上では価値 が高いものとして扱われるなど、トークンの価値が絶対価 値から相対価値になります。
  • 63. Copyright Drecom Co., Ltd. All Rights Reserved. 63 詳細はサイトにて。 https://6-pillars.ooo github にてコードを公開してます。 npm ライブラリとして利用可能な状態になっています。 https://github.com/drip-oss/llllll
  • 64. Copyright Drecom Co., Ltd. All Rights Reserved. 64 まとめ • ERC721 トークンを使った既存サービスに思う疑問。 – 価値がサービスそのものに強く依存? – トークンが価値になるタイミングがポジティブではない? • 既にこの疑問に対する取り組みをしているサービスは存在するが、 トークンの品質を担保するため全てが解放されているわけではない。 • トークンに「銘文」と「発行元」を刻む事によりDApps で使いやす い、かつ誰でも発行可能でどんな DApps も乗り越えて使える ERC721 拡 張トークンを定義し「||||||」としてリリースした。
  • 65. Copyright Drecom Co., Ltd. All Rights Reserved. 65 drip drecom 🔍 フィードバックお待ちしてます
  • 66. Copyright Drecom Co., Ltd. All Rights Reserved. 66 ご静聴 ありがとうございました!