RICM5 2018 2019 - UGAChain - Interface du smart contract

From air
Revision as of 11:43, 18 March 2019 by Jordan.Jean (talk | contribs)
Jump to: navigation, search

Le smart contract de la blockchain utilisée par UGAChain, dénommé ugachaincode, a été rédigé dans le langage Go. Les différentes fonctions implémentées dans celui-ci sont décrites ci-dessous.

  • func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response

Cette fonction est appelée lors de l'instanciation du réseau de la blockchain. Actuellement celle-ci se contente de laisser une trace de l'initialisation du réseau Hyperledger et retourne nil.

  • func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response

Cette fonction permet l'invocation des fonctions du smart contract. Celle-ci appelle la fonction dont le nom et les paramètres sont passés en paramètre. La valeur de retour de la fonction appelée est retournée. Si la fonction appelée n'existe pas, une erreur est retournée.

  • func (t *SimpleChaincode) delete(stub shim.ChaincodeStubInterface, args []string) pb.Response

Cette fonction supprime le hash passé en paramètre du world state (une transaction de la suppression est ajoutée au ledger). Nil est retourné en cas de succès, une erreur est retournée sinon.

  • func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response

Cette fonction consulte le world state et recherche le hash passé en paramètre. La valeur associée au hash est retournée en cas de succès, la chaîne de caractères NOT_FOUND est retournée si le hash est introuvable.

  • func (t *SimpleChaincode) add(stub shim.ChaincodeStubInterface, args []string) pb.Response

Cette fonction ajoute le hash passé en paramètre au world state du ledger avec pour valeur initiale la chaîne de caractères VALID. Si le hash est déjà présent dans le world state, la chaîne de caractère ALREADY_PRESENT est retournée.

  • func (t *SimpleChaincode) setValid(stub shim.ChaincodeStubInterface, args []string) pb.Response
  • func (t *SimpleChaincode) setInvalid(stub shim.ChaincodeStubInterface, args []string) pb.Response
  • func (t *SimpleChaincode) setFraudulent(stub shim.ChaincodeStubInterface, args []string) pb.Response

Les trois fonctions ci-dessus positionnent respectivement l'état du hash passé en paramètre sur VALID, INVALID et FRAUDULENT. En cas de succès nil est retourné. Si le hash est déjà positionné sur la valeur ciblée, la chaîne de caractères ALREADY_SET est retournée. Si le hash est introuvable au sein du world state, la chaîne de caractères NOT_FOUND est retournée.