3 votes

Appels inter-contrats dans Aeternity

Je consulte la documentation sur Sophia ( https://aeternity-sophia.readthedocs.io/en/latest/contracts/#calling-other-contracts ) mais je ne comprends pas comment je peux effectuer des appels inter-contrats d'un contrat Sophia à un autre contrat Sophia (appeler les fonctions d'un autre contrat à partir d'un contrat Sophia). Est-ce que je dois créer une interface ou quelque chose de similaire ?

2voto

Omar Saadoun Points 225

Pour passer un appel contractuel à partir d'un autre contrat, vous devez.. :

  1. Créez une interface sur le contrat de l'appelant avec les points d'entrée qui vous intéressent dans le contrat à appeler (c'est-à-dire MyRemoteContract) :
contract MyRemoteContract =
  entrypoint my_remote_entrypoint : (int) => bool
  entrypoint another_remote_entrypoint : (address, int) => bool
  1. Gérer l'autre contrat à l'intérieur du contrat de l'appelant (c'est-à-dire le garder dans votre état)
contract MyCallerContract = 
  record state = {
    some_field : address,
    remote_contract_instance : MyRemoteContract }
  1. Enfin, lorsque vous effectuez votre init, vous pouvez envoyer en paramètre l'adresse du contrat distant à instancier sur le contrat de l'appelant.
stateful entrypoint init( remote_contract_instance_param : MyRemoteContract) : state = {
  remote_contract_instance = remote_contract_instance_param }
  1. Lorsque vous faites appel à ce contrat (appelant), vous devez lui indiquer l'adresse (ct_....) de l'instance du contrat déployé.

  2. Désormais, votre contrat pourra appeler n'importe quel point d'entrée distant que vous avez obtenu sur l'interface.

stateful entrypoint try_remote_call(value: int) =
  state.token.my_remote_entrypoint(value)

Attention, lorsque votre contrat à distance n'est pas respecté, vous devez vous assurer qu'il n'y a pas de problème. Call.caller utilise car il ne s'agira pas de l'adresse réelle mais de l'adresse contractuelle de l'appelant.

-1voto

Bai xin Points 1

Pour appeler un autre contrat, vous pouvez déployer le premier contrat et passer le même paramètre dans la méthode d'appel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X