0

There are 3 contracts; A, B, and C. C has a state variable that initialized null. A changes that state variable to Yerevan. After that, B sees that variable. Evaluating by A is successfull but B sees null value again. It appears that B cannot call a updated smart contract. How can i change a state variable by an other smart contract constantly? is there any related work? please guide a beginner man. Thank you.

C:

pragma solidity ^0.5.12;

contract C{
   bytes public name;
   function rep(bytes memory pseudonym)  public returns(string memory){
       name=pseudonym;
       return string(name);
   }
   }

A:

pragma solidity ^0.5.12;
import "./C.sol";
contract A{
   bytes public fname="Yerevan";
   function naming() public returns(string memory){

      return C(0x8fcECc5B8d42EcF099E1cF032B1F505fbDA230A3).rep(fname);
  }
  }

B:

pragma solidity ^0.5.12;
import "./C.sol";
contract B{
   function rep() public returns(string memory){

      return string(C(0x8fcECc5B8d42EcF099E1cF032B1F505fbDA230A3).name());
   }
   }
  • So what exactly is C c=new C() used for in here??? – goodvibration Feb 14 at 19:04
  • It has to be deleted. Sorry for that. – Alireza Feb 14 at 19:04
  • It was deleted. – Alireza Feb 14 at 19:05
0

Not enough is known about your tool stack and testing methodology to be sure. The comment about new C() suggests a situation that might have been enough to create unexpected results.

Intuitively, it may be about waiting for confirmation. It is almost a rite of passage to get confused about ti.

  • A is mutating the state, and that means nothing really happens until the transaction is mined. Mining/confirmation might take some time.

  • B is inspecting the state, and the Ethereum node will inspect its local copy of the blockchain without waiting. In particular, without waiting for A to update. It's entirely possible you might think A failed to do its job because you peeked too soon.

The asynchronous nature of this platform takes some getting used to.

Have a look at this explainer to see if any insights or oversights jump out. https://blog.b9lab.com/calls-vs-transactions-in-ethereum-smart-contracts-62d6b17d0bc2

Hope it helps.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.