Commit 9e6f599f authored by yann300's avatar yann300

async instantiate remix simulator

parent b7c08cc2
......@@ -12,19 +12,28 @@ var Accounts = function () {
this.accountsKeys = {}
executionContext.init({get: () => { return true }})
}
for (let _account of this.accountsList) {
this.accountsKeys[_account.address.toLowerCase()] = _account.privateKey
this.accounts[_account.address.toLowerCase()] = { privateKey: Buffer.from(_account.privateKey.replace('0x', ''), 'hex'), nonce: 0 }
Accounts.prototype.init = async function () {
let setBalance = (account) => {
return new Promise((resolve, reject) => {
this.accountsKeys[ethJSUtil.toChecksumAddress(account.address)] = account.privateKey
this.accounts[ethJSUtil.toChecksumAddress(account.address)] = { privateKey: Buffer.from(account.privateKey.replace('0x', ''), 'hex'), nonce: 0 }
executionContext.vm().stateManager.getAccount(Buffer.from(_account.address.toLowerCase().replace('0x', ''), 'hex'), (err, account) => {
if (err) {
throw new Error(err)
}
var balance = '0x56BC75E2D63100000'
account.balance = balance || '0xf00000000000000001'
executionContext.vm().stateManager.getAccount(Buffer.from(account.address.toLowerCase().replace('0x', ''), 'hex'), (err, account) => {
if (err) {
throw new Error(err)
}
var balance = '0x56BC75E2D63100000'
account.balance = balance || '0xf00000000000000001'
resolve()
})
})
}
for (let _account of this.accountsList) {
await setBalance(_account)
}
}
Accounts.prototype.methods = function () {
......
......@@ -5,7 +5,9 @@ var ethJSUtil = require('ethereumjs-util')
var processTx = require('./txProcess.js')
var BN = ethJSUtil.BN
var Transactions = function (accounts) {
var Transactions = function () {}
Transactions.prototype.init = function (accounts) {
this.accounts = accounts
}
......
......@@ -12,18 +12,24 @@ const generateBlock = require('./genesis.js')
var Provider = function (options) {
this.Accounts = new Accounts()
this.Transactions = new Transactions()
this.methods = {}
this.methods = merge(this.methods, this.Accounts.methods())
this.methods = merge(this.methods, (new Blocks(options)).methods())
this.methods = merge(this.methods, (new Misc()).methods())
this.methods = merge(this.methods, (new Net()).methods())
this.methods = merge(this.methods, (new Transactions(this.Accounts.accounts)).methods())
this.methods = merge(this.methods, (this.Transactions.methods()))
this.methods = merge(this.methods, (new Whisper()).methods())
generateBlock()
}
Provider.prototype.init = async function () {
await this.Accounts.init()
this.Transactions.init(this.Accounts.accounts)
}
Provider.prototype.sendAsync = function (payload, callback) {
log.info('payload method is ', payload.method)
......
......@@ -8,6 +8,7 @@ const log = require('./utils/logs.js')
class Server {
constructor (options) {
this.provider = new Provider(options)
this.provider.init()
}
start (host, port) {
......
......@@ -10,15 +10,17 @@ import Web3 = require('web3')
import { Provider } from 'remix-simulator'
import { FinalResult } from './types'
const createWeb3Provider = function () {
const createWeb3Provider = async function () {
let web3 = new Web3()
web3.setProvider(new Provider())
let provider = new Provider()
await provider.init()
web3.setProvider(provider)
return web3
}
export function runTestSources(contractSources, testCallback, resultCallback, finalCallback, importFileCb, opts) {
export async function runTestSources(contractSources, testCallback, resultCallback, finalCallback, importFileCb, opts) {
opts = opts || {}
let web3 = opts.web3 || createWeb3Provider()
let web3 = opts.web3 || await createWeb3Provider()
let accounts = opts.accounts || null
async.waterfall([
function getAccountList (next) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment