Everscale Solidity. How to work with responsible functions? How to wait for callback?

265 views Asked by At

Free Everscale Solidity. How to work with responsible functions? How to wait for callback in correct way and check the contract execution result from sdk?

For example I have the contracts (which does nothing userful). How to wait in correct way in my application a writing to a_ and b_ variables?

contract A {
 uint256 a_;
 string b_;

 function foo(uint256 a, string b, address c) extenal {
  tvm.accept();
  B(c).bar{value: 1 ton, callback: A.callback}(a, b);
 }

 function callback(uint256 a, string b) external {
  tvm.accept();
  a_ = a;
  b_ = b;
 }
}

contract B {
 function bar(uint256 a, string b) exrnal responsible returns (uint256, string) {
  return { value: 0, bounce: false, flag: 64 } (a, b);
 }
}
1

There are 1 answers

0
Noam On

Well, you can know when the first transaction is completed using wait_for_transaction.

One of the parameters returned by wait_for_transaction is out_messages, a list of all messages created by this transaction. In this case is should be one, the call to callback.

I expect it would be possible to use wait_for_transaction on the these messages.

I haven't tried this though and it is possible wait_for_transaction is only for external messages. In that case maybe using transactions iterator would help instead.