Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CryptoKittiesを技術的に理解する/Technical understanding ...
Search
Ara
April 20, 2018
Technology
480
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CryptoKittiesを技術的に理解する/Technical understanding of CryptoKitties
Ara
April 20, 2018
More Decks by Ara
See All by Ara
NFT Baseball Game | 第2回ゆるNFTオンラインハッカソン!
avcdsld
0
330
Value of NFTs on Flow / NFTの価値を高める試み on Flow
avcdsld
0
190
Flow Dapps Dev / Flow ブロックチェーン Dapps 開発
avcdsld
0
190
実録 Medalla Testnet Validator / Real Story of Medalla Testnet Validator
avcdsld
0
160
LINE Blockchain について/LINE Blockchain Overview
avcdsld
0
130
VR 空間で NFT を扱う方法を考える/VR x NFT
avcdsld
0
270
NFT Standards vol.1 様々なブロックチェーンのNFTを調査・比較してみる/NFT Standards vol.1
avcdsld
0
240
ブラウザで利用できる最近のEthereumウォレットの概要とインテグレーション方法/Recent Ethereum wallets and how to integrate
avcdsld
0
140
Ethereumにおける最近のメタトランザクションの動向/Ethereum MetaTransaction Trends
avcdsld
0
820
Other Decks in Technology
See All in Technology
システム思考で問題に対処する
yussak
0
210
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
220
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.7k
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
330
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
200
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
140
個人OSSが、机の上から世界に広がるまでの話
shinyasaita
1
370
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
140
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
350
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
240
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
450
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A designer walks into a library…
pauljervisheath
211
24k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Site-Speed That Sticks
csswizardry
13
1.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
390
Raft: Consensus for Rubyists
vanstee
141
7.6k
For a Future-Friendly Web
brad_frost
183
10k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Transcript
CryptoKitties を 技術的に理解する 2018-04-20 avcdsld
とは?
ブリーディング・コレクションできる、かわいい暗号ネコを中心としたゲーム。 それぞれのネコはあなたが 100% 所有し、複製・奪取・破壊できない。
• ネコ1匹=固有のトークンとしてブロックチェーン上に記録 • それぞれ異なるパラメータ(遺伝情報) • ネコ2匹分のトークンを交配して、新しくネコ(トークン)を生成できる • 2017年11月28日 リリース、1週間で5万匹(660万ドル)取引された
実際にやってみた
None
正直、かわいくないのばかり…
None
属性がいろいろある プロフィールが1匹ずつ違う 所有者が決められる名前 親 子供
購入してみる
None
Chrome 拡張の MetaMask で ETH を支払う
Chrome 拡張の MetaMask で ETH を支払う こんな感じで ブラウザ上で動くよ
None
ブリーディングしてみる
None
None
30分後… 生まれた! https://www.cryptokitties.co/kitty/642875
レアな遺伝子を持つネコたち http://xn--o9j473hsypxwkza4937abff.com/virtual-currency/game/cryptokitties-tokucho/
参考:実際にやってみた手順 • 取引所 bitFlyer で ETH 購入(今回は 2000 円相当) •
MetaMask のアドレスに送金 • CryptoKitties のサイトでアカウント作成 (メールアドレスがあればOK) • ネコ購入(約170円×2) • ネコ交配(約500円)
の仕組み
ネコ = ブロックチェーン上に記録されるトークン struct Kitty { uint256 genes; uint64 birthTime;
uint64 cooldownEndBlock; uint32 matronId; uint32 sireId; uint32 siringWithId; uint16 cooldownIndex; uint16 generation; } 遺伝子 生成時刻 次に交配できるブロック 母親の ID 父親の ID 夫の ID(妊娠中に使用) 出産後のクールダウン時間 世代
ネコ = ブロックチェーン上に記録されるトークン Kitty[] kitties; mapping (uint256 => address) public
kittyIndexToOwner; KittyBase.sol ・・・ コード詳細:https://github.com/dapperlabs/cryptokitties-bounty/blob/master/contracts/KittyBase.sol #1 #2 : : #1 #2
ネコの遺伝子 • 各数値の意味や、交配のロジックは非公開 • どの値がどう影響するか、ユーザーによる解析が進んでいる (レアなネコは高値で売れるので、解析にも熱が入る) Kitty #1 の遺伝子 https://cryptokittydex.com/kitties/1
None
Fungible (代替できる) Non-Fungible (代替できない) どのトークン(硬化)でも同じ価値 トークンごとに価値が異なる ネコ = 固有のパラメータを持つトークン
トークンは、ERC721 という仕様に従って作られている contract ERC721 { // Required methods function totalSupply()
public view returns (uint256 total); function balanceOf(address _owner) public view returns (uint256 balance); function ownerOf(uint256 _tokenId) external view returns (address owner); function approve(address _to, uint256 _tokenId) external; function transfer(address _to, uint256 _tokenId) external; function transferFrom(address _from, address _to, uint256 _tokenId) external; // Events event Transfer(address from, address to, uint256 tokenId); event Approval(address owner, address approved, uint256 tokenId); // Optional // function name() public view returns (string name); // function symbol() public view returns (string symbol); // function tokensOfOwner(address _owner) external view returns (uint256[] tokenIds); // function tokenMetadata(uint256 _tokenId, string _preferredTransport) public view returns (string infoUrl); // ERC-165 Compatibility (https://github.com/ethereum/EIPs/issues/165) function supportsInterface(bytes4 _interfaceID) external view returns (bool); } https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
CryptoKitties のコントラクト一覧 仮想仔猫ゲーム CryptoKitties のコントラクトを読んでみる https://qiita.com/blueplanet/items/fa005a1c9457169a7391 全ソースコード :https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code このコントラクトが最終的に すべてを継承している
CryptoKitties のコントラクト一覧 仮想仔猫ゲーム CryptoKitties のコントラクトを読んでみる https://qiita.com/blueplanet/items/fa005a1c9457169a7391 全ソースコード: https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code このコントラクトが最終的に すべてを継承している
利用 利用 ネコの遺伝子 を交配する (コード非公開) 利用 購入オークション 交配オークション
ネコ交配のシーケンス https://zhuanlan.zhihu.com/p/32491728 ユーザー 母親が妊娠中か?クールダウン時間が経ったか? 子の世代数を計算 父遺伝子、母遺伝子、クールダウン時間 遺伝子生成(非オープンソース) 子ネコ情報 パラメータに基づきネコ作成、リストに追加、所有者を設定 母ネコの妊娠状態を解除
出産費用を払う
http://www.rolldice.club/cryptokitties/wkt_creator.php ネコのイラストは自動生成っぽい
イラストを自動生成する技術の例 https://robohash.org/ https://github.com/e1ven/Robohash
なぜバズったか? • 1匹として同じネコはいない、この世界観がたまらない(Non-Fungible) • ネコの属性がいちいちカッコいい • 集めるのが楽しい • 自分だけのネコ、という優越感 •
レアな猫を作れるかも!?という期待 • ネコを売れば実際に儲かる・・・こんなにお手軽に!?
CryptoKitties の課題 • ネコのイラスト、遺伝子の解釈ロジックは、ブロックチェーン上に無い → “ERC721Metadata” という使われていないコントラクトがある. もともとこれらもブロックチェーンで管理しようとしていたけど、
コストがかかり過ぎるから断念した? • ある意味、詐欺っぽい(確率が制御できるパチンコみたいな…)
CryptoKitties の課題 アプリサーバー コントラクト = = ブロックチェーン ユーザー 中央集権
CryptoKitties の課題 アプリサーバー コントラクト = = ブロックチェーン ユーザー 中央集権 これがここにあっていいの…?
従来サービスと一体何が違うのか 現状のブロックチェーンでは 画像まですべて保存しづらい
参考情報 • 全ソースコード(Etherscan より) https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code • CryptoKitties のソースコード解説 - Qiita
https://qiita.com/yamamoto_ban/items/389b520659d4856e31bb • 仮想仔猫ゲーム CryptoKitties のコントラクトを読んでみる - Qiita https://qiita.com/blueplanet/items/fa005a1c9457169a7391 • 以太坊猫(CryptoKitties)猫交配交易用例 时序图 - 知乎 ※中国語だけど、シーケンスが一番良くまとまっている https://zhuanlan.zhihu.com/p/32491728 • CryptoKittiesで使われているNFT(Non-Fungible Token)なERC721 Tokenとは? https://tomokazu-kozuma.com/what-is-non-fungible-token-erc-721-token-used-in-cryptokitties/ • ERC721とは? – ブロックチェーン総合研究所【BRI】 – Medium https://medium.com/blockchain-research-institute/erc721%E3%81%A8%E3%81%AF-38e80ea2b328 • Cryptokittiesの新規性とEthereumへの今後の影響を考える(ビットコイナー反省会) - YouTube https://www.youtube.com/watch?v=zkJeWHfHuso • Kitty Sales https://kittysales.herokuapp.com/ • CryptoKittiesの全体の5%以下しかいない特長を持ったレア猫を一覧にして紹介! http://xn--o9j473hsypxwkza4937abff.com/virtual-currency/game/cryptokitties-tokucho/
CryptoZombies の紹介 https://cryptozombies.io/jp/
None
None
DApps の開発プラットフォーム • Ethereum ― 「ワールドコンピュータ」を目指す ◦ 言語:Solidity, Viper ◦
独自トークンを作りやすい • NEO ― 中国版 Ethereum ◦ 言語:C#, Java, Python, JavaScript ◦ 様々な言語が使える • LISK ― アメリカ版 Ethereum ◦ 言語:JavaScript ◦ 処理をサイドチェーンで行うためスケーラビリティが高い 現状、Ethereum 一択か…?
Ethereum の開発言語 • Solidity ◦ 現在のデファクトスタンダード ◦ JavaScript ライク •
Viper ◦ セキュリティまわりの実装を簡便化した言語 ◦ Python ライク これから学ぶなら Viper?… それとも、まずは Solidity?