From f3ef26ac484c718d3f6420740490eb7b0d3c71c6 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Thu, 19 Apr 2018 16:28:07 -0400 Subject: [PATCH] use remix-simulator package --- package.json | 3 +- run.js | 2 +- src/provider.js | 75 ------------------------------------ src/txProcess.js | 98 ------------------------------------------------ 4 files changed, 3 insertions(+), 175 deletions(-) delete mode 100644 src/provider.js delete mode 100644 src/txProcess.js diff --git a/package.json b/package.json index 7f902716ec..387e4f28ab 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "contributors": [ { "name": "Iuri Matias", - "email": "iuri.matias@gmail.com" + "email": "iuri@ethereum.org" }, { "name": "Yann Levreau", @@ -45,6 +45,7 @@ "ethereumjs-vm": "^2.3.2", "remix-lib": "latest", "remix-solidity": "latest", + "remix-simulator": "latest", "standard": "^10.0.3", "web3": "1.0.0-beta.27" }, diff --git a/run.js b/run.js index 6c55180e2c..11dfdf3e50 100644 --- a/run.js +++ b/run.js @@ -3,7 +3,7 @@ const Web3 = require('web3') const RemixTests = require('./index.js') const fs = require('fs') -const Provider = require('./src/provider.js') +const Provider = require('remix-simulator').Provider; commander.action(function (filename) { let web3 = new Web3() diff --git a/src/provider.js b/src/provider.js deleted file mode 100644 index 31f3f99fee..0000000000 --- a/src/provider.js +++ /dev/null @@ -1,75 +0,0 @@ -var Web3 = require('web3') -var RemixLib = require('remix-lib') -var executionContext = RemixLib.execution.executionContext - -var processTx = require('./txProcess.js') - -function jsonRPCResponse (id, result) { - return {'id': id, 'jsonrpc': '2.0', 'result': result} -} - -var Provider = function () { - this.web3 = new Web3() - // TODO: make it random - this.accounts = [this.web3.eth.accounts.create(['abcd'])] - - this.accounts[this.accounts[0].address.toLowerCase()] = this.accounts[0] - this.accounts[this.accounts[0].address.toLowerCase()].privateKey = Buffer.from(this.accounts[this.accounts[0].address.toLowerCase()].privateKey.slice(2), 'hex') - - // TODO: fix me; this is a temporary and very hackish thing just to get the getCode working for now - this.deployedContracts = {} -} - -Provider.prototype.sendAsync = function (payload, callback) { - const self = this - - if (payload.method === 'eth_accounts') { - return callback(null, jsonRPCResponse(payload.id, this.accounts.map((x) => x.address))) - } - if (payload.method === 'eth_estimateGas') { - callback(null, jsonRPCResponse(payload.id, 3000000)) - } - if (payload.method === 'eth_gasPrice') { - callback(null, jsonRPCResponse(payload.id, 1)) - } - if (payload.method === 'eth_sendTransaction') { - processTx(this.accounts, payload, false, callback) - } - if (payload.method === 'eth_getTransactionReceipt') { - executionContext.web3().eth.getTransactionReceipt(payload.params[0], (error, receipt) => { - if (error) { - return callback(error) - } - self.deployedContracts[receipt.contractAddress] = receipt.data - - var r = { - 'transactionHash': receipt.hash, - 'transactionIndex': '0x00', - 'blockHash': '0x766d18646a06cf74faeabf38597314f84a82c3851859d9da9d94fc8d037269e5', - 'blockNumber': '0x06', - 'gasUsed': '0x06345f', - 'cumulativeGasUsed': '0x06345f', - 'contractAddress': receipt.contractAddress, - 'logs': [], - 'status': 1 - } - - callback(null, jsonRPCResponse(payload.id, r)) - }) - } - if (payload.method === 'eth_getCode') { - let address = payload.params[0] - // let block = payload.params[1] - - callback(null, jsonRPCResponse(payload.id, self.deployedContracts[address])) - } - if (payload.method === 'eth_call') { - processTx(this.accounts, payload, true, callback) - } -} - -Provider.prototype.isConnected = function () { - return true -} - -module.exports = Provider diff --git a/src/txProcess.js b/src/txProcess.js deleted file mode 100644 index 702fb9d713..0000000000 --- a/src/txProcess.js +++ /dev/null @@ -1,98 +0,0 @@ -var RemixLib = require('remix-lib') -var TxExecution = RemixLib.execution.txExecution -var TxRunner = RemixLib.execution.txRunner -var executionContext = RemixLib.execution.executionContext - -function jsonRPCResponse (id, result) { - return {'id': id, 'jsonrpc': '2.0', 'result': result} -} - -function runTx (payload, from, to, data, value, gasLimit, txRunner, callbacks, isCall, callback) { - let finalCallback = function (err, result) { - if (err) { - return callback(err) - } - let toReturn - if (isCall) { - toReturn = '0x' + result.result.vm.return.toString('hex') - if (toReturn === '0x') { - toReturn = '0x0' - } - } else { - toReturn = result.transactionHash - } - - callback(null, jsonRPCResponse(payload.id, toReturn)) - } - - TxExecution.callFunction(from, to, data, value, gasLimit, null, txRunner, callbacks, finalCallback, isCall) -} - -function createContract (payload, from, data, value, gasLimit, txRunner, callbacks, callback) { - let finalCallback = function (err, result) { - if (err) { - return callback(err) - } - // let contractAddress = ('0x' + result.result.createdAddress.toString('hex')) - callback(null, jsonRPCResponse(payload.id, result.transactionHash)) - } - - TxExecution.createContract(from, data, value, gasLimit, txRunner, callbacks, finalCallback) -} - -function processTx (accounts, payload, isCall, callback) { - let api = { - logMessage: (msg) => { - }, - logHtmlMessage: (msg) => { - }, - // config: self._api.config, - config: { - getUnpersistedProperty: (key) => { - // if (key === 'settings/always-use-vm') { - // return true - // } - return true - }, - get: () => { - return true - } - }, - detectNetwork: (cb) => { - cb() - }, - personalMode: () => { - // return self._api.config.get('settings/personal-mode') - return false - } - } - - executionContext.init(api.config) - - let txRunner = new TxRunner(accounts, api) - let { from, to, data, value, gas } = payload.params[0] - gas = gas || 3000000 - - let callbacks = { - confirmationCb: (network, tx, gasEstimation, continueTxExecution, cancelCb) => { - continueTxExecution(null) - }, - gasEstimationForceSend: (error, continueTxExecution, cancelCb) => { - if (error) { - continueTxExecution(error) - } - continueTxExecution() - }, - promptCb: (okCb, cancelCb) => { - okCb() - } - } - - if (to) { - runTx(payload, from, to, data, value, gas, txRunner, callbacks, isCall, callback) - } else { - createContract(payload, from, data, value, gas, txRunner, callbacks, callback) - } -} - -module.exports = processTx