---?image=pitch/back-cyan.png
@snap[west text-left span-70] @css[text-18](Comment vendre un chat 140k sur @csscolor-cyan) @snapend()
@snap[text-05 south-west text-left] Présenté par @css[color-cyan](Mathieu Durand) Hexira @snapend()
---?image=pitch/back-cyan.png
@snap[west text-left span-70]
@csstext-18 color-cyan
@css[text-18](Comment vendre un chat @css[color-red](des armes) 140k @csscolor-red sur @csscolor-cyan)
@snapend()
@snap[text-05 south-west text-left] Présenté par @css[color-cyan](Mathieu Durand) Hexira @snapend()
@snap[midpoint span-80] @snapend() @snap[north span-80] ** @css[color-red](SALUT, JE SUIS UN CRYPTO-KITTY) ** @snapend() @snap[south span-80] ** @css[color-red](MOI JE VOUS LE DIS, ÇA MARCHERA JAMAIS CE JEU-LÀ) ** @snapend()
---?image=pitch/back-cyan.png @snap[north-west] @csstext-18 color-cyan Un jeu de duel entre des guerriers @snapend
@snap[west]
@ul
- Un contrat pour les armes
- Token ERC-721
- Un contrat pour les guerriers
- Créer un guerrier
- Lancer un duel
- Accepter un duel
- Des combats
- Un frontend React @ulend @snapend
---?code=pitch/src/weapon-contract.sol&lang=js
@snap[north-east span-50 text-06 text-gray] Vendre des armes avec Solidity @snapend
@snap[south span-100 text-08 color-green]
@[1-2](Utilisation de packages existants)
@[4](Comme une classe en JS, mais c'est un contrat)
@[6](Un event
est lancé par le contrat à tous ceux qui écoutent)
@8-11
@[13](La liste complète des armes)
@[15-16](Le titre et le nom de notre TOKEN)
@[18-28](Le coeur de notre contrat)
@[22-23](Création de la structure de l'arme)
@[24](_mint instancie le TOKEN (ERC-721))
@[25](Le URI du TOKEN, qui permet d'obtenir son metadata)
@[26-27](On avertit tout le monde... c'est le temps d'acheter)
@snapend
@snap[midpoint span-80]
@snapend()
@snap[south span-80]
** @css[color-red](Pas sur d'avoir suivi, est-ce qu'on peut recommencer à "Contrat"?) **
@snapend()
---?image=pitch/back-blue.png
@snap[west text-left span-70]
@css[text-18](** Ok, maintenant
@css[color-blue](COMMENT ON ACHÈTE?) **)
@snapend()
---?image=pitch/back-blue.png
@snap[west text-left span-70]
@css[text-14](FACILE,
on réutilise un)
[@csscolor-blue text-14](https://rinkeby.opensea.io/assets/cryptowars-marketplace) @csstext-14
@snapend()
---?image=pitch/back-purple.png
@snap[west text-left span-70] @css[text-18 color-purple](** Premier problème**)
- 150 transactions à chaque 10-15 secondes, pour l'ensemble du réseau @snapend()
@snap[midpoint span-80]
@snapend()
@snap[north span-80]
** @css[color-blue](Je l'ai testé son jeu) **
@snapend()
@snap[south span-80]
** @css[color-blue](ET C'EST VRAIMENT LENT!!!) **
@snapend()
---?image=pitch/back-purple.png
@snap[west text-left span-70]
@csstext-18 color-purple
@ul
- Ajouter des transitions
- Utilise un sidechain (ex. Loom Network) @ulend @snapend()
---?image=pitch/back-purple.png
@snap[west text-left span-70] @css[text-18](@css[color-purple](Deuxième problème))
- Ethereum est un système déterministe
- Donc pas de fonction @csscolor-purple @snapend()
@snap[midpoint span-80] @snapend() @snap[north span-80]
** @css[color-red](C'est n'importe quoi ce jeu-là) ** @snapend() @snap[south span-80] ** @css[color-red](Les combats sont pipés d'avance) ** @snapend()
---?image=pitch/back-purple.png
@snap[west text-left span-70]
@css[text-18](** @csscolor-purple**)
@ul
- Utiliser un "seed"
- le timestamp du block
- le hash de block précédent
- Utiliser un Oracle @ulend @snapend()
---?image=pitch/back-cyan.png
@snap[west text-left span-70] @csstext-18 [@csscolor-cyan](http://cryptowars.fun/?account=0x8dac237e839d09b7e82d9190314d52e90d2c9794078f039971da5b99764ebc21) @snapend()
---?code=pitch/src/web3.js&lang=js
@snap[north-east span-50 text-06 text-gray]
Application React:
Appel d'un contrat intelligent avec Web3
@snapend
@snap[south span-100 text-08 color-green] @[1-2](Code généré) @[4-7](Création du contrat client) @[9-14](Appel d'une fonction du contrat) @[11-13] @snapend
---?image=pitch/back-purple.png
@snap[west text-left span-80] @css[text-18](@css[color-purple](Troisième problème)) Comment on met ça à jour un contrat immuable? @snapend()
@snap[midpoint span-80]
@snapend()
@snap[south span-100]
** @css[color-purple](Ya clairement un bug, regardez moi...) **
@snapend()
---?image=pitch/back-purple.png
@snap[west text-left span-70]
@css[text-18](** @csscolor-purple**)
@ul
- Ne pas faire de bugs?
- Séparer logique et données en plusieurs contrats @ulend @snapend()
@snap[midpoint span-80] @snapend() @snap[north span-80]
**@css[color-blue](Ok, mais, POURQUOI ETHEREUM?) **
@snapend()
@snap[south span-80]
** @css[color-blue](Ça serait pas plus simple en Node?) **
@snapend()
---?image=pitch/back-blue.png
@snap[west text-left span-70] @css[text-18](** @csscolor-blue **) @ul
- **Infrastructure @csscolor-blue **
- @csscolor-blue et @csscolor-blue dans la même transaction
- Utilisateur @csscolor-blue
de ses données @ulend @snapend()
---?image=pitch/back-blue.png
@snap[west text-left span-70] @css[text-18](** @csscolor-blue ) @csstext-08 @css[text-08](Demo on the Rinkeby testnet: http://cryptowars.fun?account=YOUR_PRIVATE_KEY) @css[text-18]( @css[color-red](NOT PROD READY) **) @snapend()