Pour acheter et vendre des ressources de jeu en toute sécurité, vous pouvez utiliser la fonctionnalité d'intégration blockchain pour ajouter des moyens de transaction sécurisés. Grâce à elle, brainCloud peut sauvegarder les éléments usager sur la blockchain.
Actuellement, brainCloud ne prend en charge que la blockchain EOS. Si vous n'avez pas configuré votre compte blockchain EOS pour votre application, vous pouvez continuer à lire la section suivante - Compte blockchain EOS, sinon, passez cette partie à la section - Intégration et test.
Compte Blockchain EOS
Avant de déployer votre application décentralisée sur EOS MainNet, vous pouvez choisir l'un des tests EOS pour tester votre application basée sur EOSIO (comme Jungle Testnet, EOSIO Testnet...).
Après avoir créé un compte sur Testnet, choisi et misé une certaine quantité appropriée de RAM, de CPU et de NET pour votre compte, brainCloud déploiera un contrat intelligent EOS pré-construit sur votre compte Testnet une fois que vous aurez publié un élément usager sur la blockchain.
Pour une meilleure compréhension de la manière dont le Testnet interagit avec un contrat intelligent déployé, vous devez développer un contrat intelligent et créer des comptes pour interagir avec les actions de ce contrat intelligent.
Étant donné que le logiciel EOSIO est développé dans des environnements basés sur Linux, si vous utilisez un système Windows, vous pouvez utiliser WSL pour développer votre application EOS avec l'extension WSL distante de VS code installée, afin de pouvoir accéder à votre code et le modifier comme des fichiers locaux.
Une fois que vous avez installé EOSIO et EOSIO.CDT sur votre machine, vous pouvez créer un portefeuille EOS et plusieurs comptes, exécuter nodeos localement, créer un contrat intelligent EOS, etc. Une fois le fichier de contact .cpp créé, compilez le contrat avec la commande CDT eosio-cpp, vous devriez obtenir le fichier .wasm et le fichier .abi.
eosio-cpp nom_fichier_contrat.cpp -o nom_fichier_contrat.wasm
Ensuite, vous pouvez déployer ces deux fichiers sur votre compte Testnet et tester les actions de contact depuis votre Testnet.
Intégration et test
Pour démarrer avec la partie brainCloud, recherchez la page Conception > Intégrations > Blockchain sur le portail brainCloud.
Cochez la case "Blockchain activé" et remplissez tous les champs avec les informations de votre compte blockchain comme ci-dessus. (Actuellement, brainCloud ne prend en charge que la blockchain EOS).
Accédez à la page Conception > Cloud Code > Explorateur d'API, après avoir authentifié un utilisateur, sélectionnez le Service Identity et l'Opération AttachBlockchainIdentity, saisissez
"blockchainConfig": "default"et les informations de la publicKey de votre compte EOS. Appuyez ensuite sur Exécuter.
Remarque : Dans le futur, brainCloud pourrait avoir différentes configurations de blockchain. Pour l'instant, vous ne pouvez utiliser que "default" comme valeur de configuration.
Exécutez ensuite l'opération GetIdentities dans le même service (Identity) . Votre identité blockchain devrait être ajoutée à la liste des identités usager actuelles.
Basculez le service sur UserItems et sélectionnez l'opération PublishUserItemToBlockchain, entrez l'informations sur un des items de l'usager actuel comme paramètres, appuyez ensuite sur Exécuter.
Exécutez maintenant GetUserItem avec le même paramètre
itemIdet vérifiez la réponse renvoyée. Vous devriez trouver les informations supplémentaires spécifiques à la blockchain,blockItemIdetblockPublishedAt, dans le résultat.
Maintenant, accédez à votre compte Testnet, à partir de l'historique de la vue des actions, vous devriez trouver une action "create" avec les informations de compte que vous avez configurées sur la page de blockchain d'intégration brainCloud.
Et à partir des détails de la transaction, vous devriez trouver les détails de l'élément usager.
Vérifiez les détails du contrat intelligent déployé à partir du compte -> contrat intelligent.
{
"account_name": "koumpjyjucmq",
"abi": {
"version": "eosio::abi/1.1",
"types": [],
"structs": [
{
"name": "create",
"base": "",
"fields": [
{
"name": "app_id",
"type": "string"
},
{
"name": "block_owner_id",
"type": "name"
},
{
"name": "user_item_id",
"type": "string"
},
{
"name": "item_def_id",
"type": "string"
}
]
},
{
"name": "destroy",
"base": "",
"fields": [
{
"name": "block_item_id",
"type": "name"
}
]
},
{
"name": "item_ownership",
"base": "",
"fields": [
{
"name": "block_item_id",
"type": "name"
},
{
"name": "block_owner_id",
"type": "name"
}
]
},
{
"name": "ownership_details",
"base": "",
"fields": [
{
"name": "block_item_id",
"type": "name"
},
{
"name": "app_id",
"type": "string"
},
{
"name": "user_item_id",
"type": "string"
},
{
"name": "item_def_id",
"type": "string"
}
]
},
{
"name": "trade",
"base": "",
"fields": [
{
"name": "block_item_id",
"type": "name"
},
{
"name": "to",
"type": "name"
}
]
}
],
"actions": [
{
"name": "create",
"type": "create",
"ricardian_contract": "---\nspec-version: 0.0.2\ntitle: Create\nsummary: This action will create an entry in the multi-index table that establishes ownership of the given item to the given owner. The ram costs are paid by the smart contract.\nicon:"
},
{
"name": "destroy",
"type": "destroy",
"ricardian_contract": "---\nspec-version: 0.0.2\ntitle: Destroy\nsummary: This action will remove ownership of the given item from the current owner and clear the details of said item. Only the contract owner can execute the action. The ram costs are paid by the smart contract.\nicon:"
},
{
"name": "trade",
"type": "trade",
"ricardian_contract": "---\nspec-version: 0.0.2\ntitle: Trade\nsummary: This action will transfer ownership of the given item to the \"to\" owner. Only the current owner of the item can execute the action. The ram costs are paid by the smart contract.\nicon:"
}
],
"tables": [
{
"name": "bc.details",
"index_type": "i64",
"key_names": [],
"key_types": [],
"type": "ownership_details"
},
{
"name": "bc.owners",
"index_type": "i64",
"key_names": [],
"key_types": [],
"type": "item_ownership"
}
],
"ricardian_clauses": [
{
"id": "Data Storage",
"body": "---\nspec-version: 0.0.1\ntitle: General Data Storage\nsummary: This smart contract will store data added by the brainCloud BaaS. The owner consents to the storage of this data by signing the transaction.\nicon:"
},
{
"id": "Data Usage",
"body": "---\nspec-version: 0.0.1\ntitle: General Data Use\nsummary: This smart contract will store item and user data. The smart contract will not use the stored data for any purpose outside store and delete.\nicon:"
},
{
"id": "Data Ownership",
"body": "---\nspec-version: 0.0.1\ntitle: Data Ownership\nsummary: The user of this smart contract verifies that the data is owned by the smart contract, and that the smart contract can use the data in accordance to the terms defined in the Ricardian Contract.\nicon:"
},
{
"id": "Data Distribution",
"body": "---\nspec-version: 0.0.1\ntitle: Data Distribution\nsummary: The smart contract promises to not actively share or distribute the address data. The user of the smart contract understands that data stored in a multi index table is not private data and can be accessed by any user of the blockchain.\nicon:"
},
{
"id": "Data Future",
"body": "---\nspec-version: 0.0.1\ntitle: Data Future\nsummary: The smart contract promises to only use the data in accordance of the terms defined in the Ricardian Contract, now and at all future dates.\nicon:"
}
],
"error_messages": [],
"abi_extensions": [],
"variants": []
}
}
Notez qu’il existe une action appelée
"destroy", qui sera invoquée depuis brainCloud lors de l’appel d’APIRemoveUserItemFromBlockchain.
L'élément est désormais sauvegardé sur la blockchain avec un identifiant de transaction et un numéro de bloc.











