EOSIO / eos

An open source smart contract platform
https://developers.eos.io/manuals/eos
MIT License
11.29k stars 3.6k forks source link

assertion failure with message: read , help #11031

Open 915-nistor-robert opened 2 years ago

915-nistor-robert commented 2 years ago

My contract gives assertion failure with message: read

My action code is: ACTION waxrng::getrandom(name nm/, uint64_t customer_id, uint64_t signing_value/){ auto itrCustomer = rngcustomers.find(nm.value);

if (itrCustomer == rngcustomers.end()){ rngcustomers.emplace(_self, [&](auto &rec){ //rec.customer_id = customer_id; rec.nm = nm; }); } else { rngcustomers.modify(itrCustomer, _self, [&](auto &rec){ rec.nm = nm; }); }

action( {get_self(), "active"_n}, "orng.wax"_n, "requestrand"_n, std::tuple{nm.value,/customer_id, signing_value,/ get_self()} ).send(); }

ACTION waxrng::receiverand(/*uint64_t customer_id,*/name nm  , checksum256& random_value){
  uint64_t max_value = 1000;
  auto byte_array = random_value.extract_as_byte_array();
  uint64_t random_int = 0;
  for (int i = 0; i<8; i++){
    random_int <<= 8;
    random_int |= (uint64_t)byte_array[i];
  }

  uint64_t num1 = random_int % max_value;

  auto itrCustomer = rngcustomers.find(nm.value);

  check(itrCustomer != rngcustomers.end(), "customer table not set");
  rngcustomers.modify(itrCustomer, _self, [&](auto& rec){
    rec.random_value = random_value;
    rec.finalnumber = num1;
  });
}
crazybits commented 2 years ago

you probably update your table struct without data cleanup before change.