feat: isolated-vm as a plugin
This commit is contained in:
@@ -4,6 +4,7 @@ import { WarpCache } from '../cache/WarpCache';
|
||||
import { ContractDefinition } from '../core/ContractDefinition';
|
||||
import { ExecutorFactory } from '../core/modules/ExecutorFactory';
|
||||
import { EvaluationOptions } from '../core/modules/StateEvaluator';
|
||||
import { Warp } from '../core/Warp';
|
||||
|
||||
/**
|
||||
* An implementation of ExecutorFactory that adds caching capabilities
|
||||
@@ -19,9 +20,10 @@ export class CacheableExecutorFactory<Api> implements ExecutorFactory<Api> {
|
||||
|
||||
async create<State>(
|
||||
contractDefinition: ContractDefinition<State>,
|
||||
evaluationOptions: EvaluationOptions
|
||||
evaluationOptions: EvaluationOptions,
|
||||
warp: Warp
|
||||
): Promise<Api> {
|
||||
return await this.baseImplementation.create(contractDefinition, evaluationOptions);
|
||||
return await this.baseImplementation.create(contractDefinition, evaluationOptions, warp);
|
||||
|
||||
// warn: do not cache on the contractDefinition.srcTxId. This might look like a good optimisation
|
||||
// (as many contracts share the same source code), but unfortunately this is causing issues
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ContractDefinition } from '../core/ContractDefinition';
|
||||
import { ExecutorFactory } from '../core/modules/ExecutorFactory';
|
||||
import { EvaluationOptions } from '../core/modules/StateEvaluator';
|
||||
import { Warp } from '../core/Warp';
|
||||
|
||||
/**
|
||||
* An ExecutorFactory that allows to substitute original contract's source code.
|
||||
@@ -18,7 +19,8 @@ export class DebuggableExecutorFactory<Api> implements ExecutorFactory<Api> {
|
||||
|
||||
async create<State>(
|
||||
contractDefinition: ContractDefinition<State>,
|
||||
evaluationOptions: EvaluationOptions
|
||||
evaluationOptions: EvaluationOptions,
|
||||
warp: Warp
|
||||
): Promise<Api> {
|
||||
if (Object.prototype.hasOwnProperty.call(this.sourceCode, contractDefinition.txId)) {
|
||||
contractDefinition = {
|
||||
@@ -27,6 +29,6 @@ export class DebuggableExecutorFactory<Api> implements ExecutorFactory<Api> {
|
||||
};
|
||||
}
|
||||
|
||||
return await this.baseImplementation.create(contractDefinition, evaluationOptions);
|
||||
return await this.baseImplementation.create(contractDefinition, evaluationOptions, warp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,8 @@ export class Evolve implements ExecutionContextModifier {
|
||||
const newContractDefinition = await definitionLoader.load<State>(contractTxId, evolvedSrcTxId);
|
||||
const newHandler = (await executorFactory.create<State>(
|
||||
newContractDefinition,
|
||||
executionContext.evaluationOptions
|
||||
executionContext.evaluationOptions,
|
||||
executionContext.warp
|
||||
)) as HandlerApi<State>;
|
||||
|
||||
//FIXME: side-effect...
|
||||
|
||||
Reference in New Issue
Block a user