Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ public void CallProgram_ProgramIsNotActivated_Fails()
ICodeInfo codeInfo = repository.GetCachedCodeInfo(contract, specProvider.GenesisSpec, out _);

byte[] callData = CounterContractCallData.GetNumberCalldata();
using VmState<ArbitrumGasPolicy> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
using VmState<ArbitrumGas> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
(BlockExecutionContext blockContext, TxExecutionContext transactionContext) = CreateExecutionContext(repository, caller, header);
TestStylusVmHost vmHost = new(blockContext, transactionContext, vmState, state, store, specProvider.GenesisSpec);

Expand Down Expand Up @@ -229,7 +229,7 @@ public void CallProgram_StylusVersionIsHigherThanPrograms_Fails()
stylusParams.Save();

byte[] callData = CounterContractCallData.GetNumberCalldata();
using VmState<ArbitrumGasPolicy> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
using VmState<ArbitrumGas> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
(BlockExecutionContext blockContext, TxExecutionContext transactionContext) = CreateExecutionContext(repository, caller, header);
TestStylusVmHost vmHost = new(blockContext, transactionContext, vmState, state, store, specProvider.GenesisSpec);

Expand Down Expand Up @@ -261,7 +261,7 @@ public void CallProgram_ProgramExpired_Fails()
stylusParams.Save();

byte[] callData = CounterContractCallData.GetNumberCalldata();
using VmState<ArbitrumGasPolicy> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
using VmState<ArbitrumGas> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
(BlockExecutionContext blockContext, TxExecutionContext transactionContext) = CreateExecutionContext(repository, caller, header);
TestStylusVmHost vmHost = new(blockContext, transactionContext, vmState, state, store, specProvider.GenesisSpec);

Expand Down Expand Up @@ -290,7 +290,7 @@ public void CallProgram_CorruptedCallData_Fails()
result.IsSuccess.Should().BeTrue();

byte[] callData = [0x1, 0x2, 0x3]; // Corrupted call data that does not match the expected format
using VmState<ArbitrumGasPolicy> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
using VmState<ArbitrumGas> vmState = CreateEvmState(state, caller, contract, codeInfo, callData);
(BlockExecutionContext blockContext, TxExecutionContext transactionContext) = CreateExecutionContext(repository, caller, header);
TestStylusVmHost vmHost = new(blockContext, transactionContext, vmState, state, store, specProvider.GenesisSpec);

Expand Down Expand Up @@ -321,7 +321,7 @@ public void CallProgram_SetGetNumber_SuccessfullySetsAndGets()

// Set number to 9
byte[] setNumberCallData1 = CounterContractCallData.GetSetNumberCalldata(9);
using VmState<ArbitrumGasPolicy> setNumberVmState1 = CreateEvmState(state, caller, contract, codeInfo, setNumberCallData1);
using VmState<ArbitrumGas> setNumberVmState1 = CreateEvmState(state, caller, contract, codeInfo, setNumberCallData1);
TestStylusVmHost vmHost = new(blockContext, transactionContext, setNumberVmState1, state, store, specProvider.GenesisSpec);

StylusOperationResult<byte[]> setNumberResult1 = programs.CallProgram(vmHost,
Expand All @@ -331,7 +331,7 @@ public void CallProgram_SetGetNumber_SuccessfullySetsAndGets()

// Read number back
byte[] getNumberCallData2 = CounterContractCallData.GetNumberCalldata();
using VmState<ArbitrumGasPolicy> getNumberVmState2 = CreateEvmState(state, caller, contract, codeInfo, getNumberCallData2);
using VmState<ArbitrumGas> getNumberVmState2 = CreateEvmState(state, caller, contract, codeInfo, getNumberCallData2);
vmHost = new(blockContext, transactionContext, getNumberVmState2, state, store, specProvider.GenesisSpec);

StylusOperationResult<byte[]> getNumberResult2 = programs.CallProgram(vmHost,
Expand Down Expand Up @@ -360,7 +360,7 @@ public void CallProgram_IncrementNumber_SuccessfullyIncrements()

// Increment number from 0 to 1
byte[] incrementCallData1 = CounterContractCallData.GetIncrementCalldata();
using VmState<ArbitrumGasPolicy> incrementVmState1 = CreateEvmState(state, caller, contract, codeInfo, incrementCallData1);
using VmState<ArbitrumGas> incrementVmState1 = CreateEvmState(state, caller, contract, codeInfo, incrementCallData1);
TestStylusVmHost vmHost = new(blockContext, transactionContext, incrementVmState1, state, store, specProvider.GenesisSpec);

StylusOperationResult<byte[]> incrementResult1 = programs.CallProgram(vmHost,
Expand All @@ -370,7 +370,7 @@ public void CallProgram_IncrementNumber_SuccessfullyIncrements()

// Read number back
byte[] getNumberCallData2 = CounterContractCallData.GetNumberCalldata();
using VmState<ArbitrumGasPolicy> getNumberVmState2 = CreateEvmState(state, caller, contract, codeInfo, getNumberCallData2);
using VmState<ArbitrumGas> getNumberVmState2 = CreateEvmState(state, caller, contract, codeInfo, getNumberCallData2);
vmHost = new(blockContext, transactionContext, getNumberVmState2, state, store, specProvider.GenesisSpec);

StylusOperationResult<byte[]> getNumberResult2 = programs.CallProgram(vmHost,
Expand All @@ -380,10 +380,10 @@ public void CallProgram_IncrementNumber_SuccessfullyIncrements()
getNumberResult2.Value.Should().BeEquivalentTo(new UInt256(1).ToBigEndian());
}

private VmState<ArbitrumGasPolicy> CreateEvmState(IWorldState state, Address caller, Address contract, ICodeInfo codeInfo, byte[] callData, long gasAvailable = 1_000_000_000)
private VmState<ArbitrumGas> CreateEvmState(IWorldState state, Address caller, Address contract, ICodeInfo codeInfo, byte[] callData, long gasAvailable = 1_000_000_000)
{
ExecutionEnvironment env = ExecutionEnvironment.Rent(codeInfo, caller, caller, contract, 0, 0, 0, callData);
return VmState<ArbitrumGasPolicy>.RentTopLevel(ArbitrumGasPolicy.FromLong(gasAvailable), ExecutionType.TRANSACTION, env, new StackAccessTracker(), state.TakeSnapshot());
return VmState<ArbitrumGas>.RentTopLevel(ArbitrumGas.FromLong(gasAvailable), ExecutionType.TRANSACTION, env, new StackAccessTracker(), state.TakeSnapshot());
}

private (BlockExecutionContext, TxExecutionContext) CreateExecutionContext(ICodeInfoRepository repository, Address caller, BlockHeader header)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace Nethermind.Arbitrum.Test.Arbos.Stylus.Infrastructure;
public class TestStylusVmHost(
BlockExecutionContext blockExecutionContext,
TxExecutionContext txExecutionContext,
VmState<ArbitrumGasPolicy> vmState,
VmState<ArbitrumGas> vmState,
IWorldState worldState,
IWasmStore wasmStore,
IReleaseSpec spec) : IStylusVmHost
Expand All @@ -27,7 +27,7 @@ public class TestStylusVmHost(
public ref readonly TxExecutionContext TxExecutionContext => ref _txExecutionContext;
public IWorldState WorldState { get; } = worldState;
public IWasmStore WasmStore { get; } = wasmStore;
public VmState<ArbitrumGasPolicy> VmState { get; } = vmState;
public VmState<ArbitrumGas> VmState { get; } = vmState;
public IReleaseSpec Spec { get; } = spec;

public StylusEvmResult StylusCall(ExecutionType kind, Address to, ReadOnlyMemory<byte> input, ulong gasLeftReportedByRust, ulong gasRequestedByRust, in UInt256 value)
Expand Down
Loading