Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ERC-721をかぞえて / Enumerate ERC-721
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryo Manzoku
August 27, 2019
Programming
8.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ERC-721をかぞえて / Enumerate ERC-721
Road To Devcon 3.0
https://ethereumjapan.connpass.com/event/142897/
Ryo Manzoku
August 27, 2019
More Decks by Ryo Manzoku
See All by Ryo Manzoku
ブロックチェーンゲーム開発におけるチェーンの選び方 / How to select a blockchain for BCG
rmanzoku
0
790
NFTを取り巻く技術要素とAWS利活用 / Technology and AWS of NFT
rmanzoku
0
980
NFTを中心とした新しいゲームの形 / The new approach of gaming with NFT
rmanzoku
0
470
NFTへの招待 / Invitation to NFT
rmanzoku
0
1.6k
Stringをどうにかする / Managing Solidity String
rmanzoku
0
1.4k
ブロックチェーン時代の認証 / Authentication in the Blockchain Era
rmanzoku
8
3.4k
MCH+ Hackathon #1
rmanzoku
0
370
AWS上で動く世界No.1ブロックチェーンゲーム / No1 Blockchain Game on AWS
rmanzoku
1
3.1k
ブロックチェーンゲームMyCryptoHeroesの作り方 / Architecture of My Crypto Heroes
rmanzoku
2
5k
Other Decks in Programming
See All in Programming
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
790
Getting Started with Vibe Coding
miccheng
0
190
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
200
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.5k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
AmebaブログはKMPから卒業します
kmars0605
0
330
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
210
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
まずはコードより業務と向き合う:テーブル解体のためにPdMを呼んだ話
sakawe_ee
0
180
Next.js: The final boss of Web Performance
guaca
0
380
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
730
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
610
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
910
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
660
Discover your Explorer Soul
emna__ayadi
2
1.3k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
540
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
970
The Language of Interfaces
destraynor
162
27k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.3k
Transcript
ERC-721Λ͔ͧ͑ͯ 2019-08-27 Road to Devcon 3.0 double jump.tokyoגࣜձࣾ ϦʔυΤϯδχΞ ຬ
྄
• Re-building the future of gaming with blockchain technology !!
• 20184݄ ۀ • ϒϩοΫνΣʔϯήʔϜઐۀ։ൃձࣾ • ैۀһ17ਓʢۀҕୗΛؚΉʣ • ϒϩοΫνΣʔϯʹҙͷ͋ΔΤϯδχΞΛੵۃ࠾༻தͰ͢ʂ double jump.tokyoגࣜձࣾ
• ຬ ྄ ʢManzoku Ryoʣ • double jump.tokyo ϦʔυΤϯδχΞ •
20187݄ΑΓ Πϯϑϥઃܭӡ༻ɺαʔόαΠυ։ൃɺ SmartContract։ൃɺϒϩοΫνΣʔϯٕज़ௐࠪͳͲΛ୲ • աڈʹιʔγϟϧήʔϜձࣾɺEdTechΞϓϦձࣾͰΠϯϑϥ ΤϯδχΞͱͯ͠AWSΛத৺ͱͨ͠ΫϥυΠϯϑϥ͔ΒΞϓ Ϧ·ͰͷશମઃܭɺߏஙɺվળΛܦݧ ࣗݾհ
None
• ຬ ྄ ʢManzoku Ryoʣ • double jump.tokyo ϦʔυΤϯδχΞ •
20187݄ΑΓ Πϯϑϥઃܭӡ༻ɺαʔόαΠυ։ൃɺ SmartContract։ൃɺϒϩοΫνΣʔϯٕज़ௐࠪͳͲΛ୲ • աڈʹιʔγϟϧήʔϜձࣾɺEdTechΞϓϦձࣾͰΠϯϑϥ ΤϯδχΞͱͯ͠AWSΛத৺ͱͨ͠ΫϥυΠϯϑϥ͔ΒΞϓ Ϧ·ͰͷશମઃܭɺߏஙɺվળΛܦݧ ࣗݾհ σβΠϯͷܦݧͳ͍ͷͰ SolidityͱWebύϑΥʔϚϯεͷΛ͠·͢ʂ
• Ϣʔβʔମݧͱ͍͏ҙຯͰɺࠓʹ͓͍ͯ ΦϯνΣʔϯͰαʔϏεશͯΛ࣮͢ΔͷෆՄೳ • Ethereum X.X ʹظʂ • “Read world”ʹαʔϏεΛఏڙ͢ΔͨΊʹɺΦϑνΣʔϯͱ
ͷΈ߹Θ͕ͤඞਢ • ʮERC-721τʔΫϯΛ͑Δʯͱ͍͏ྫͰ՝Λհ • WebύϑΥʔϚϯεͷ؍͔ΒUX՝Λײͯ͡Β͑Ε MyCryptoHeroesͷܦݧ͔Β͓Ͱ͖Δ͜ͱ
ࠓԕྀ͠ͳ͍͍ͯ͘ͱฉ͍ͯ·͢
• ͍ͬͯͳ͍ • 1͔ͭΒ9͍ͭ࣋ͬͯΔ • 10Ҏ্͍࣋ͬͯΔ • 2Ҏ্ͷίϯτϥΫτͷτʔΫϯΛ͍࣋ͬͯΔ • 10Ҏ্ͷίϯτϥΫτͷτʔΫϯΛ͍࣋ͬͯΔ
• ͕ࣗσϓϩΠͨ͠ίϯτϥΫτͷτʔΫϯΛ100ΞυϨεҎ্ ͕ॴ༗͍ͯ͠Δ ERC-721ͷτʔΫϯ࣋ͬͯ·͔͢ʁ
• ΥϨοτͱʁ • Metamask on Chrome • tokenPocket / GO
Wallet ଞϞόΠϧܥ • Opera • HTC Exodus / FINNY • Dapper • ࣗ࡞ ΥϨοτͳʹΛ͍ͬͯ·͔͢ʁ
• Βͳ͍ • ΥϨοτಠࣗϊʔυ • Infura.io • CloudFlare • ࣗલϊʔυ
͓͍ͷΥϨοτ͕ଓ͍ͯ͠Δϊʔυʁ
• MyCryptoHeroesͷհ • ERC-721ͱERC-721 Enumerableʹ͍ͭͯ • ERC-721 Enumerableͷ࣮ࡍͱ՝Λ௨ͯ͠”Real world”ͷϒ ϩοΫνΣʔϯαʔϏεΛߟ͑Δ
• MCH+ͷհ ͓ॻ͖
ʹ͍ͭͯ
https://mch.gg/start
• ήʔϜʹ͔͚͓ͨ࣌ؒۚɺ͋ͳͨͷࢿ࢈ͱͳΔੈք • ྺ্࢙ͷώʔϩʔΛूΊɺΞΠςϜΛ֫ಘ͠ɺότϧ͢Δ ϒϩοΫνΣʔϯRPGήʔϜ • ϒϩοΫνΣʔϯEthereum͓ΑͼࢄετϨʔδIPFSΛར༻ • Ethereum্ͰͷDailyActiveUserɾNFTऔҾྔ/औҾͰੈք1Ґ MyCryptoHeroesʢϚΠΫϦʣͱ
ήʔϜը໘
MyCryptoHeroesͷߏཁૉ &UIFSFVN 6TFS ϢʔβʔECDSAॺ໊༻ͷൿີ伴ͱ ରʹͳΔΞυϨεΛॴ༗ ήʔϜࢿ࢈ɺEthereum্Λਖ਼ͱͯ͠ཧ ॴ༗ใɺϢʔβʔͷΞυϨεʹ͋Δ ॴ༗ใΛ֬ೝ ήʔϜࢿ࢈Λ༻͍ͯήʔϜͰ༡Ϳ ࢿ࢈ΛҭͯΔ
MyCryotoHeroesͰ ɾήʔϜࢿ࢈Λͬͨ༡ͼͷఏڙ ɾETHʹΑΓήʔϜ௨՟Λൢച ɾ৽͍͠ήʔϜࢿ࢈ͷ༩ɺൢച ɾήʔϜࢿ࢈ΞʔτΛ༩
• ϒϩοΫνΣʔϯͷ՝Ͱ͋ΔεέʔϥϏϦςΟͱUXͷղܾ ͷͨΊήʔϜͱͯ͠ͷػೳΦϑνΣʔϯͰߏங • σδλϧΞηοτʹNFTʢERC-721ʣΛ࠾༻ • ήʔϜ௨՟ߪೖ෦ͱNFTؔ࿈ͷΈΦϯνΣʔϯ • NFTͷΞΠίϯ࡞ͬͨͷͰͬͯͶʂγʔϧ͋ΔΑʂ MyCryptoHeroesͷΞʔΩςΫνϟ
• 2018/9/21-10/1 ώʔϩʔϓϨηʔϧͷ࣮ࢪ • 2018/9/25-11/2 ότϧβͷ࣮ࢪ • Loom NetworkΛར༻ͨ͠ΦϯνΣʔϯότϧγεςϜ •
2018/10/23 gRPC-WebͷGAΛड͚࣮ͯͷมߋ • 2018/11/30 ຊϦϦʔε MyCryptoHeroesϦϦʔε·Ͱͷมભ
• EVMΛࡌͨ͠αΠυνΣʔϯٕज़Ͱ͋ΔLoom NetworkΛ࠾༻ • ΦϯνΣʔϯٕज़Λ༻͍ͳ͕Β࣮ߦແྉ&ߴ࣮ߦΛ࣮ݱ • ϒϩοΫνΣʔϯͰՁΛ୲อ͠ͳ͕ΒήʔϜͱͯ͠ͷUXΛ֬ อͰ͖ͨɺɺͣ ότϧβ։࢝ͷߏ &UIFSFVN
6TFS
• ϩδοΫͱͯ͠ΦϯνΣʔϯʢSolidityʣʹΑΔ࣮ߦՄೳ • ͨͩ͠ɺॏ͗͢Δ • 1ότϧʹ͖ͭ10ඵఔ͔͔Γɺͦͷؒશͯͷॻ͖ࠐΈ͕ϒ ϩοΫ͞ΕΔࣄଶ • ͞Βʹৄ͍͠ઓ͍ҎԼͷεϥΠυʹͯ •
https://mch.gg/hicon2018 • https://speakerdeck.com/rmanzoku/blockchain-game-in-practice ότϧβͷ݁Ռ
MyCryptoHeroesͷߏཁૉ &UIFSFVN 6TFS ϢʔβʔECDSAॺ໊༻ͷൿີ伴ͱ ରʹͳΔΞυϨεΛॴ༗ ήʔϜࢿ࢈ɺEthereum্Λਖ਼ͱͯ͠ཧ ॴ༗ใɺϢʔβʔͷΞυϨεʹ͋Δ ॴ༗ใΛ֬ೝ ήʔϜࢿ࢈Λ༻͍ͯήʔϜͰ༡Ϳ ࢿ࢈ΛҭͯΔ
MyCryotoHeroesͰ ɾήʔϜࢿ࢈Λͬͨ༡ͼͷఏڙ ɾETHʹΑΓήʔϜ௨՟Λൢച ɾ৽͍͠ήʔϜࢿ࢈ͷ༩ɺൢച ɾήʔϜࢿ࢈ΞʔτΛ༩
ERC-721ʹ͍ͭͯ
• EthereumͰNFTΛ࣮ݱ͢Δݱ࣮తͳඪ४༷ • ʮॴ༗ใʯʮৡʯʮৡݖͷҠৡʯΛنఆͨ͠Πϯλʔ ϑΣʔεΛ࣮͢Δඞཁ͕͋Δ • ඪ४༷Ͱ͋ΔͨΊɺERC-721Λ࠾༻ͨ͠ήʔϜɺαʔϏεɺ औҾॴͰՃ։ൃແ͠Ͱར༻Ͱ͖ΔΑ͏ʹͳΔ • ERC-721Λ࣮ͨ͠
= NFT ͱͳΔΘ͚Ͱͳ͍͜ͱΛҙ ERC-721ͱ
ERC-721 Interfaces pragma solidity ^0.4.20; interface IERC721 /* is IERC165
*/ { event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); 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; function approve(address _approved, uint256 _tokenId) external payable; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); }
• ownerOfؔʹΑΓ͋ΔτʔΫϯIDͷॴ༗ऀ͕Θ͔Δ • balaceOfؔʹΑΓ͋ΔΞΧϯτͷ૯ॴ༗͕Θ͔Δ • τʔΫϯͷॴ༗ऀଞऀʹτʔΫϯΛৡͰ͖Δ • approveʹׂ͍ͭͯѪ • ͋ΔΞΧϯτͷॴ༗τʔΫϯIDҰཡऔಘͰ͖ͳ͍
ERC-721ͷͰ͖Δ͜ͱͰ͖ͳ͍͜ͱ
ࣗͷ࣋ͬͯΔΞηοτฒ͍ͨͰ͢ΑͶ
ERC-721 Enumerable
ERC-721 Enumerable Interface interface ERC721Enumerable is ERC721 { function totalSupply()
external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); }
• ྻڍΛՄೳʹ͢ΔΦϓγϣϯ֦ு Enumerable • ownerͱindex͔ΒτʔΫϯIDΛऔಘͰ͖ΔtokenOfOwnerByIndexؔ ͕͋Δ • balanceOfͰͱ͚ͬͨͩtokenOfOwnerByIndexΛͿΜճͤΑ͍ɻ • ಡΈऔΓࢹ
• ҰཡΛऔಘͰ͖ΔΑ͏ʹͱStorageใΛอଘ • ॻ͖ࠐΈࢹ ERC-721 Enumerable
• to infura.io ྻ100ݸ • 60ඵ͘Β͍͔͔Δ • infra.ioΞϝϦΧʹαʔόʔ͕͋ΔͷͰɺຊ͔Βͩͱݫ͍͠ ͿΜ·Θͯ͠Έ·͠ΐ͏
• infuraͷϊʔυɺւ֎ʹ͋ΔͨΊϨΠςϯγ͕େ͖͍ • ͍ΘΏΔʮޫ͍ʯ • await͍ͯ͠Δ͔ΒͰʁ • ͦ͏Ͱ͢Ͷɻ ͕ɺຊͦ͜Ͱͳ͘100ݸϦΫΤετΛൃߦ͢Δ͜ͱ •
UXతͳͩͱͪΖΜฒྻԽ͖͢ • ͔͠͠HTTP1.1ͷϒϥβ6ຊఔ͔͠ฒྻԽͰ͖ͳ͍ ͠100ݸͷτʔΫϯΛ͍࣋ͬͯΔਓͩͬͨΒ
• ࠃʹ͋ΔϊʔυαʔϏε • ͘ͳͬͨʂ • ͨͩ͠ɺϢʔβʔ͕࣋ͭΥϨοτͷϊʔυΛαʔϏεఏڙऀ ͕ࢦఆͰ͖·͔͢ʁ • ίϯτϩʔϧෆՄೳͳྖҬͰͷղܾࡦແҙຯ ࠃʹϊʔυ͕͋ΕΑ͘ͳ͍ʁ
ࣗͷ࣋ͬͯΔΞηοτฒΔ͚ͩͰࠔ
• WebͷύϑΥʔϚϯεվળʹ͓͍ͯɺࣗͨͪͷίϯτϩʔϧ ՄೳͳൣғͰྗΛ͖͢ɺࣗͨͪͷίϯτϩʔϧՄೳͳൣ ғΛ૿͖͢ • Walletɺ伴ཧͷ؍͔ΒݴͬͯෆՄ৵Ͱ͋Δํ͕ྑ͍ • ૉʹಡΉͷͰͳ͘ɺϓϩΩγΩϟογϡΛಋೖ͖͢ • ͦͦϒϩοΫνΣʔϯͷʮঢ়ଶʯΩϟογϡͱ૬ੑ͕ྑ
͍ ಡΈऔΓύϑΥʔϚϯεʹ͍ͭͯ
• transferͷλΠϛϯάͰɺॴ༗ҰཡΛཧ͍ͯ͠Δ • https://github.com/OpenZeppelin/openzeppelin-contracts/ commit/d1158ea68c597075a5aec4a77a9c16f061beffd3 • Storageͷߋ৽ͳͷͰͪΖΜGas͕͔͔Γ·͢ɻ ERC-721 Enumerableͷ࣮ //
Mapping from owner to list of owned token IDs mapping(address => uint256[]) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex;
Gasൺֱද ERC-721 ERC-721 Enumerable ྻڍ ☓ ˚ mint Gas 66,878
158,461 transferFrom Gas 44,742 72,236 https://ropsten.etherscan.io/address/0x78b315eff64c865ad1d903cd771eb85f9bb2558c https://ropsten.etherscan.io/address/0x78b315eff64c865ad1d903cd771eb85f9bb2558c https://ropsten.etherscan.io/address/0xe18e82118b1a277d90beefe7ffd7421b606d0f83
• ίϯτϥΫτ্ͰྻڍΛ͏߹ඞਢ • transferFromΛ·ͱΊ࣮ͯߦ͢Δ • 20ݸ͘Β͍·Ͱߦ͚Δ • ID͝ͱʹuint256ΛׂΓͯͯͳʹ͔Λཧ͢Δ • 150ݸ͘Β͍·Ͱ͍͚Δ
• ͦͦuint256ͬͯͲ͏ࢥ͍·͔͢ Enumerable͑ͳ͍ͷʁ
• ࣗΛؚΉSmartContract͔ΒݺΕ͏ΔཁૉͷΈΛStorageʹ อଘ͖͢ • Smart Contract֎͔ΒݺΕ͏ΔͷEventͱ࣮͖ͯ͢͠ • ΦϑνΣʔϯαΠυνΣʔϯ • ERC-721ʹݶΒͣͦ͏͍͏ઃܭํΛݟ͔͚Δ
• ༨ܭͳཁૉɺকདྷʹΓϢʔβʔ༨ܭͳGasͷෛ୲Λڧ͍Δ ͜ͱʹͳΔ → ϢʔβʔମݧͷѱӨڹ SmartContractͷઃܭํ
• ϒϩοΫνΣʔϯ্Ͱͯ͢ͷॲཧ͢Δͷ͍͠ • WebύϑΥʔϚϯεͷGasͷ؍͔ΒϢʔβʔମݧͱ ͯ͠ݫ͍͠ͱݴΘ͟Δ͓͑ͳ͍ • ༷Λࣄલʹߟ͑ͯɺඞཁͳΒΦϑνΣʔϯͱซ༻͢Δ • ຊʹίϯτϥΫτͰྻڍ͢Δඞཁ͋Δͷ͔ʁ •
ͦΕΛೖΕΔ͜ͱʹΑͬͯશͯͷϢʔβʔ͕GasΛෛ୲͢Δ ͜ͱΛ಄ʹೖΕ͓ͯ͘ ERC-721 EnumerableΛ௨ͯ͡
• ERC-721Ͱ͔ͤͬ͘ن͕ܾ֨·͍ͬͯΔͷ͔ͩΒ͍͍ײ͡ʹͰ ͖ͳ͍ͷɺɺʁ • ϒϩοΫνΣʔϯͰσδλϧΞηοτཧ͍͚ͨͩ͠ͳΜ͚ͩ Ͳɺɺɺ • ϒϩοΫνΣʔϯήʔϜͬͯͳΜ͔ͩϒϧʔΦʔγϟϯΒ͍͠ ͡Όͳ͍ʁ ͱ͜ΖͰɺɺ
ʹ͍ͭͯ
• ʮήʔϜʹ͔͚͓ͨ࣌ؒۚɺ͋ͳͨͷࢿ࢈ͱͳΔੈ քʯͷ֦େΛࢦͯ͠ • NFT͕ήʔϜͱήʔϜΛඈͼӽ͑Δੈք؍ͷ࣮ݱʹΉ͚ͯ • MyCryptoHeroesͷϊϋΛϑϨʔϜϫʔΫͱͯ͠ఏڙ͢Δϒ ϩοΫνΣʔϯήʔϜ։ൃࢧԉϓϩάϥϜ • ϒϩοΫνΣʔϯήʔϜࢢͷࢀೖোนΛԼ͛Δ
MCH+ͱ
• ͪΖΜྻڍػೳఏڙ • ERC-721 Metadataػೳ • Approvalؔ࿈ • ͦͷଞӶҙ։ൃதʂ ERC-721ʹ·ͭΘΔAPIΛఏڙ༧ఆ
ERC-721 Interfaces pragma solidity ^0.4.20; interface IERC721 /* is IERC165
*/ { event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256); function ownerOf(uint256 _tokenId) external view returns (address); 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; function approve(address _approved, uint256 _tokenId) external payable; function setApprovalForAll(address _operator, bool _approved) external; function getApproved(uint256 _tokenId) external view returns (address); function isApprovedForAll(address _owner, address _operator) external view returns (bool); }
• ERC-721ʹ͓͍ͯɺtransferΠϕϯτඞਢ • ੜ·Ε͔ͯΒશͯͷtransferΛ͑ɺݱࡏͷঢ়ଶ໌͢Δ ΦϑνΣʔϯͰؤுΔྻڍ $ curl -s https://beta-api.mch.plus/inventory/ethereum/mainnet/ 0xd868711BD9a2C6F1548F5f4737f71DA67d821090/0xdceaf1652a131F32a821468Dc03A
92df0edd86Ea { "token_ids": [ 10021522, 10220372, 20270673, 20270688 ] }
ൺֱද ERC-721 ERC-721 Enumerable MCH+ ERC-721 ྻڍ ☓ ˚ ̋
mint Gas 66,878 158,461 66,871 transfer Gas 44,742 72,236 44,742
RE-BUILDING THE FUTURE OF GAMING WITH BLOCKCHAIN TECHNOLOGY !!