Wird der Status von Smart Contract-Variablen erst nach einem Block geändert?

Angenommen, ich habe einen Smart Contract mit diesem Code:

contract TestContract {
  uint256 var1 = 0;

  function test()
  {
     if (var1 == 0)
     {
        var1 = 1;
        throw;
     }
  }
}

Unter der Annahme, dass 2 verschiedene Adressen die Funktion test() im selben Block aufrufen , werden beide Transaktionen den Wurf erhalten oder nur die erste?

Antworten (1)

Alle Aufrufe werden test()mit diesem Programm ausgelöst. Wenn eine Transaktion ausgelöst wird, werden alle Statusänderungen rückgängig gemacht, var1bleiben also immer 0.

Wenn du es so schreibst:

contract TestContract {
  uint256 var1 = 0;

  function test()
  {
     if (var1 == 0)
     {
        var1 = 1;
     }
     else
     {
        throw;
     }
  }
}

...der erste Aufruf von test()ändert sich var1von 0zu1

und alle nachfolgenden Aufrufe werden test()ausgelöst.

Auch wenn sie im selben Block sind.

Der Status des Smart Contracts wird nach jeder Transaktion geändert, nicht nur nach jedem Block.