MCPcopy Create free account
hub / github.com/WaykiChain/WaykiChain / lua_BurnStoreSet

Function lua_BurnStoreSet

src/vm/luavm/lua/lburner.c:206–238  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204}
205
206LUA_API int lua_BurnStoreSet(lua_State *L, size_t keySize, size_t oldDataSize, size_t newDataSize, int version) {
207 if (IsBurnerRuning(L) && version <= L->burnerState.version) {
208 unsigned long long fuel = 0;
209 unsigned long long refund = 0;
210 const char *action = "unchanged";
211 if (newDataSize == oldDataSize) {
212 action = "reset";
213 fuel = newDataSize * FUEL_STORE_RESET;
214 } else if (newDataSize > oldDataSize) {
215 if (oldDataSize == 0) {
216 action = "new";
217 fuel = (keySize + newDataSize) * FUEL_STORE_ADDED;
218 } else { // increase
219 action = "increase";
220 fuel = (newDataSize - oldDataSize) * FUEL_STORE_ADDED + oldDataSize * FUEL_STORE_RESET;
221 }
222 } else { // (newDataSize < oldDataSize) // decrease, refund
223 if (newDataSize == 0) {
224 refund = (oldDataSize) * FUEL_STORE_REFUND;
225 } else {
226 refund = (oldDataSize - newDataSize) * FUEL_STORE_REFUND;
227 fuel = newDataSize * FUEL_STORE_RESET;
228 }
229 }
230 L->burnerState.fuel += fuel;
231 L->burnerState.fuelStore += fuel;
232 L->burnerState.fuelRefund += refund;
233 TraceBurning(L, "lua_BurnStoreSet", "%s, version=%d, keySize=%u, oldDataSize=%u, newDataSize=%u, fuel=%llu, refund=%llu\n",
234 action, version, keySize, oldDataSize, newDataSize, refund);
235 return CheckBurnedOk(L, "Burned-out lua_BurnStoreSet");
236 }
237 return 1;
238}
239
240LUA_API int lua_BurnStoreUnchanged(lua_State *L, size_t keySize, size_t dataSize, int version) {
241 if (IsBurnerRuning(L) && version <= L->burnerState.version) {

Callers 3

ExWriteDataDBFuncFunction · 0.85
ExDeleteDataDBFuncFunction · 0.85
ExModifyDataDBFuncFunction · 0.85

Calls 1

CheckBurnedOkFunction · 0.85

Tested by

no test coverage detected