DeBot Specifications
Créer un post
Créer un post
Tags populaires

DeBot Specifications

Un objectif

Fournissez un environnement sécurisé et pratique pour travailler avec des smart-contracts :

  •       émuler l’appel des fonctions de smart-contraсt localement sur le client
  •       déboguer les transactions blockchain
  •       interagir avec les smart-contraсts déployés dans la blockchain
0

Publication author

offline 5 jours

soundsond

117
Comments: 0Publics: 79Registration: 22-10-2020

Termes de base

  •       DeBot – un smart-contraсt facilitant la communication de flux de type conversation avec un smart-contraсt cible.
  •       Smart-contraсt cible – un smart-contraсt pour lequel DeBot est créé. DeBot est une interface avec ce smart-contraсt.
  •       Navigateur DeBot – un programme qui exécute DeBot et analyse sa réponse à l’aide du protocole DeBot.
  •       Protocole DeBot – un ensemble de règles décrivant la communication entre le navigateur et le DeBot: comment appeler les fonctions DeBot et comment interpréter ses réponses.

Architecture

La plateforme DeBot comprend les éléments suivants:

  •       Smart-contraсt DeBot;
  •       Navigateur DeBot;
  •       Smart(s) contrat(s) cible(s)

Un smart-contraсt cible peut avoir plusieurs DeBots. DeBot est déployé sur la blockchain. Pour exécuter un DeBot, il doit être téléchargé sur le client et exécuté dans l’instance de navigateur DeBot.

La principale unité de communication entre le navigateur et DeBot est Action. Lorsque le navigateur souhaite appeler DeBot, il doit exécuter une action. Lorsque DeBot renvoie un résultat, il s’agit également d’un ensemble d’actions.

L’action contient une description, un nom, un type, un identifiant, une étape en cours et un contexte.

La description

Types d’action

  •       run_action – indique au navigateur de recevoir des données de l’utilisateur et d’appeler la fonction DeBot associée à l’action.

Contient une description conviviale à afficher à l’utilisateur, le nom de la fonction DeBot à appeler, le balisage des éléments d’interface utilisateur qui doivent être rendus par le navigateur DeBot, l’étape d’action en cours (s’il s’agit d’une action complexe).

Par exemple: action { description: « enter your name », name: « enterName », type: « run_action », step: 0, markup: « { input: {« name »: « inputName », « type »: « text » } }  » }

  •       run_method – appelle la méthode get du smart-contraсt cible.

Contient un nom de la méthode get à appeler à partir du smart-contraсt cible ainsi que des instructions sur ce qu’il faut faire avec les résultats de l’appel: imprimer à l’utilisateur ou appeler la fonction DeBot.

  •       send_msg – envoie un message au smart-contraсt cible.

Contient un message préparé par DeBot qui doit être signé et envoyé au smart-contraсt cible.

  •       invoke_debot – appelle une action depuis un autre DeBot.

Contient une adresse d’un DeBot cible, le nom et les paramètres de l’action DeBot cible. Le navigateur doit télécharger le DeBot de destination et exécuter certaines actions.

L’ensemble actuel d’actions est défini par l’état de DeBot. L’ensemble d’actions actuel peut être récupéré à partir de DeBot en appelant sa fonction getActions, et peut être vérifié en appelant la fonction validateState du contrat DeBot sur la blockchain.

Protocole

Fonction de start

Le point d’entrée de DeBot est la fonction de démarrage. Il est utilisé comme étape de préparation pour générer correctement un ensemble d’actions initiales. Il renvoie une liste d’actions à effectuer avant de démarrer la communication avec l’utilisateur. Après cela, une boucle d’action est lancée.

Action loop

Si le navigateur DeBot n’a aucune action à exécuter, il doit appeler la fonction getActions de DeBot pour recevoir l’ensemble d’actions actuel. Chaque action DeBot produit un ensemble de zéro ou plusieurs actions suivantes. Si le navigateur DeBot n’a aucune action à exécuter, il doit appeler à nouveau getActions.

Boucle d’action debot.png

Interface DeBot

  •       start () → Action []
  •       getActions () → Action [] – retourne l’ensemble d’actions de l’état actuel de DeBot.
  •       getToken () → (solde uint128, nom de chaîne, symbole de chaîne) – renvoie des informations sur le jeton si le smart-contraсt cible prend en charge une interface de portefeuille de jetons, sinon lève une exception.
  •       validateState (Action [] action_set) – une fonction qui doit être appelée comme une véritable transaction blockchain. Prend un ensemble d’actions qui doivent être exécutées pour atteindre l’état DeBot nécessaire. Ensuite, cet état doit être comparé à l’état DeBot local.
  •       fonctions associées à des actions.

Proof of State

Dans l’un des modes de réalisation de la présente invention, les actions de l’utilisateur et l’état du contrat pourraient être vérifiés. L’exemple ci-dessous fournit un système pour une interface DeBot de smart-contraсt multisignature et une méthode de vérification de l’interaction de l’utilisateur avec ledit contrat.

Le navigateur enregistre une séquence d’interaction d’actions DeBot locales et peut à tout moment vérifier cette séquence en appelant la fonction validateState du DeBot sur la blockchain. La validité des actions de l’utilisateur sera donc vérifiée en recevant une réponse du DeBot distant avec le résultat de la séquence d’actions. La vérification des données étant effectuée comme décrit ci-dessous, on peut supposer que les actions de l’utilisateur qui ont conduites à l’exécution correcte de DeBot ont été vérifiées.

Verification des données

La vérification des données qu’un utilisateur final obtient d’une blockchain se fait via les preuves Merkle et son exécution est effectuée par une machine virtuelle locale (par exemple, voici une implémentation TON Labs de TON Virtual Machine https://github.com/tonlabs/ton-labs-vm).

Pour cela, nous ajoutons un BOC sérialisé (Bag of Calls in TON) dans tous les enregistrements de données que nous obtenons sur le client.

Voici un exemple de processus de preuve de compte lorsqu’il se charge dans le SDK.

  1.   Désérialiser BOC
  2.   Vérifier l’exactitude de JSON par rapport à la structure de BOC
  3.   Charger le hachage de la racine de l’état de la partition
  4.   Vérifier la preuve de compte dans l’état de partition
  5.   Bloc de charge
  6.   Vérifier la preuve de l’état du fragment dans le bloc
  7.   Charger le fragment
  8.   Charger le bloc de chaîne maître
  9.   Vérifiez la shard proof (comparez les hachages dans la preuve et la mise à jour du merkle de l’état dans le bloc)

Portefeuille MultiSig DeBot

fonction de démarrage: génère une action de sortie:

Action { description: «  », name: « setPendingTransactions », type: run_method, context: « getTransactions », }

pour obtenir une liste des transactions en attente dans le contrat multisig et préparer une liste initiale d’actions pour l’utilisateur.

  •       Le navigateur appelle la fonction getTransactions du portefeuille multisig, puis appelle setPendingTransactions de debot avec une liste de transactions en attente.
  •       SetPendingTransactions: génère une liste d’actions, par exemple:

Action { description: « Transaction » + transId +  » dest: » + dest + « amount: » + amount, name: «  », type: run_action, context: « {input: [ {name: confirm, type: button, run: confirmTransaction}, {name: details, type: button, run: getTransactionDetails} ] », } les enregistre dans DeBot state, puis renvoie une liste d’actions vide.

  •       Le navigateur appelle la fonction getActions. Debot retourne les actions rendues comme ceci:

Hello, dear custodian! You have several pending transactions: 1. Transaction 0x14224214, dest: 0x4234234234235435634654645645646, amount: 10GR /confirm – to confirm /details – to see more details about transaction. 2. ……

/submit – to create new transaction. /manage_limits – to veiw/create/delete/confirm limits. /update – to submit or confirm multisig wallet code update.

L’utilisateur peut choisir de:

  •       confirmer une certaine transaction;
  •       soumettez-en un nouveau;
  •       passer à l’écran manage_limits où de nouvelles actions seront affichées pour fonctionner avec des limites multisig.

Service de notification DeBot

Dans l’un des modes de réalisation de la présente invention, un service de notification décentralisé peut être établi qui émet des messages tout en stockant leur hachage.

Le corps du message, ainsi que l’action de l’utilisateur et l’ID mobile de l’utilisateur, sont stockés dans un stockage persistant de smart-contraсt. Tout oracle qui écoute tous les messages émis par ces smart-contraсts, y compris les messages reçus de DeBots, enverra des notifications en utilisant l’identifiant mobile de l’utilisateur via un fournisseur de notifications mobiles centralisé (par exemple, Google ou Apple).

Dans le mode de réalisation actuel, l’oracle peut stocker un jeton de dispositif utilisateur afin de pouvoir envoyer de manière sécurisée des notifications utilisateur, mais seuls les messages générés par un smart-contraсt peuvent être vérifiés par un dispositif utilisateur final. L’utilisateur qui reçoit de telles notifications sur son téléphone mobile pourra comparer en toute sécurité son hachage avec celui trouvé sur une blockchain pour vérifier que le message contient bien des informations valides envoyées par le smart-contraсt. De cette façon, tous les messages envoyés par DeBot pourront être vérifiés en toute sécurité par les utilisateurs se protégeant contre les tentatives de phishing. On ne peut pas non plus faire confiance aux oracles.

Cela résout le problème de sécurité 2FA à l’aide de SMS et d’autres notifications push.

Spécifications de débotage

0

Publication author

offline 5 jours

soundsond

117
Comments: 0Publics: 79Registration: 22-10-2020

Popular

L’héritage décentralisé de Durov: l’histoire du projet de blockchain de Telegram

L’héritage décentralisé de Durov: l’histoire du projet de blockchain de Telegram Ayant démissionné du poste de PDG de Vkontakte au printemps de 2013, Pavel Durov a vendu à la fin…

1
Internet libre de Free TON

Nous devons être libres non pas parce que nous revendiquons la liberté, mais parce que nous la pratiquons. William Faulkner Internet libre de Free TON Tout d’abord, rappelons-nous les clichés.…

0
Dune x Free Ton collaboration. Les commentaires d’administrateur de DuneFrench

Les explications et avantages à propos de la proposition de fusion de Dune Network avec Ton.

0
Qu’est-ce que Free Ton ?

La multiblockchain Free TON (Telegram Open Network) est construite sur le protocole TON, qui a été développé par Nikolai Durov et l’équipe Telegram. L’écosystème Free TON est un type DAO (organisation autonome décentralisée)…

0
DeBot Specifications

Un objectif Fournissez un environnement sécurisé et pratique pour travailler avec des smart-contracts :       émuler l’appel des fonctions de smart-contraсt localement sur le client      …

0
Particularités principales de la blockchain TON

Blockchain TON comme une collection de 2-blockchains La blockchain TON constitue une collection de blockchains (voire une collection de blockchains de blockchains) car une blockchain est incapable d’atteindre la vitesse…

0
Clé privée et clé publique

Clé privée Une clé privée (clé secrète) est une variable de cryptage utilisée avec des algorithmes pour crypter et décrypter des codes. La clé secrète est partagée seulement avec le…

0
Les Exchanges pour échanger TON Crystal : KUNA

Cette série d’articles vous démontre les avantages et inconvénients essentiels de chaque bourse (Exchange) qui a listé Free TON. KUNA est l’un des premiers validateurs de Free TON. La société…

0
Les Exchanges pour échanger TON Crystal : CEX.IO

EX.IO est une Bourse de crypto-monnaie universelle et réglementée qu’on a établi en 2013. Elle sert actuellement plus de 3 millions de clients dans le monde entier. Dans cet article,…

0
Les Exchanges pour échanger TON Crystal : Coineal

La troisième bourse dans une série d’articles portant sur les endroits d’achat de Free TON Crystals Coineal est une plateforme coréenne mondiale qui permet de trader les crypto-actifs. C’est également…

0
Authorization
*
*




Registration
*
*
*
A password has not been entered
Password generation