Skip to content

Commit 19a003e

Browse files
committed
Fix storage load and store returning wrong isWarm value
1 parent b8f13a2 commit 19a003e

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

src/src/vm/runtime/ContractEvaluator.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,18 +366,18 @@ export class ContractEvaluator extends Logger {
366366
const reader: BinaryReader = new BinaryReader(data);
367367
const pointer: bigint = reader.readU256();
368368

369-
let wasCold: boolean = false;
369+
let wasWarm: boolean = true;
370370
let pointerResponse: MemorySlotData<bigint> | undefined = evaluation.getStorage(pointer);
371371
if (pointerResponse === undefined) {
372372
pointerResponse = (await this.getStorageState(evaluation, pointer, false)) || 0n;
373373

374374
evaluation.addToStorage(pointer, pointerResponse);
375-
wasCold = true;
375+
wasWarm = false;
376376
}
377377

378378
const response: BinaryWriter = new BinaryWriter();
379379
response.writeU256(pointerResponse);
380-
response.writeBoolean(wasCold);
380+
response.writeBoolean(wasWarm);
381381

382382
return response.getBuffer();
383383
}
@@ -388,9 +388,12 @@ export class ContractEvaluator extends Logger {
388388
const pointer: bigint = reader.readU256();
389389
const value: bigint = reader.readU256();
390390

391+
const pointerResponse: MemorySlotData<bigint> | undefined = evaluation.getStorage(pointer);
392+
const wasWarm = pointerResponse !== undefined;
393+
391394
evaluation.setStorage(pointer, value);
392395

393-
return new Uint8Array([1]);
396+
return new Uint8Array([wasWarm ? 1 : 0]);
394397
}
395398

396399
/** Call a contract */

0 commit comments

Comments
 (0)