public void ContractAssemblyLoaderIsForwardCompatibleWithSmartContractAndStandardsUpdates() { // Create the byte code of a contract that contains new data types that are not (normally) supported by the current node. ContractCompilationResult result = ContractCompiler.Compile(this.testContract); byte[] bytes = result.Compilation; // Test that the node is able to load the futuristic contract. ContractAssemblyLoader loader = new ContractAssemblyLoader(); CSharpFunctionalExtensions.Result <IContractAssembly> result2 = loader.Load(new ContractByteCode(bytes)); IContractAssembly assembly = result2.Value; Assert.Equal("FruitVendor", assembly.Assembly.GetTypes().First().Name); }
public ObserverTests() { var context = new ContractExecutorTestContext(); this.network = context.Network; this.TestAddress = "0x0000000000000000000000000000000000000001".HexToAddress(); this.repository = context.State; this.moduleReader = new ContractModuleDefinitionReader(); this.assemblyLoader = new ContractAssemblyLoader(); this.gasMeter = new GasMeter((Gas)5000000); var block = new TestBlock { Coinbase = this.TestAddress, Number = 1 }; var message = new TestMessage { ContractAddress = this.TestAddress, GasLimit = (Gas)GasLimit, Sender = this.TestAddress, Value = Value }; var getBalance = new Func <ulong>(() => Balance); var persistentState = new TestPersistentState(); var network = new SmartContractsRegTest(); var serializer = new ContractPrimitiveSerializer(network); this.state = new SmartContractState( new Stratis.SmartContracts.Block(1, this.TestAddress), new Message(this.TestAddress, this.TestAddress, 0), new PersistentState(new MeteredPersistenceStrategy(this.repository, this.gasMeter, new BasicKeyEncodingStrategy()), context.Serializer, this.TestAddress.ToUint160()), context.Serializer, this.gasMeter, new ContractLogHolder(), Mock.Of <IInternalTransactionExecutor>(), new InternalHashHelper(), () => 1000); this.rewriter = new ObserverRewriter(new Observer(this.gasMeter, ReflectionVirtualMachine.MemoryUnitLimit)); }
public GasInjectorTests() { // Only take from context what these tests require. var context = new ContractExecutorTestContext(); this.vm = context.Vm; this.repository = context.State; this.network = context.Network; this.moduleReader = new ContractModuleDefinitionReader(); this.assemblyLoader = new ContractAssemblyLoader(); this.gasMeter = new GasMeter((Gas)5000000); this.state = new SmartContractState( new Block(1, TestAddress), new Message(TestAddress, TestAddress, 0), new PersistentState(new MeteredPersistenceStrategy(this.repository, this.gasMeter, new BasicKeyEncodingStrategy()), context.ContractPrimitiveSerializer, TestAddress.ToUint160(this.network)), context.ContractPrimitiveSerializer, this.gasMeter, new ContractLogHolder(this.network), Mock.Of <IInternalTransactionExecutor>(), new InternalHashHelper(), () => 1000); }
public ContractAssemblyTests() { this.compilation = ContractCompiler.CompileFile(this.Contract); this.loader = new ContractAssemblyLoader(); }