Merge branch 'master' into remixd_terminal

pull/1342/head
David Zagi 3 years ago committed by GitHub
commit de95647d1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      apps/remix-ide/src/app.js
  2. 32
      apps/remix-ide/src/blockchain/blockchain.js
  3. 2
      apps/remix-ide/src/remixAppManager.js
  4. 379
      libs/remix-lib/src/helpers/hhconsoleSigs.ts
  5. 27
      libs/remix-lib/src/web3Provider/web3VmProvider.ts
  6. 6
      libs/remix-simulator/src/methods/transactions.ts
  7. 9
      libs/remix-simulator/src/provider.ts

@ -310,6 +310,7 @@ Please make a backup of your contracts and start using http://remix.ethereum.org
const contextualListener = new ContextualListener({ editor })
engine.register([
blockchain,
contentImport,
themeModule,
editor,
@ -485,7 +486,7 @@ Please make a backup of your contracts and start using http://remix.ethereum.org
await appManager.activatePlugin(['sidePanel']) // activating host plugin separately
await appManager.activatePlugin(['home'])
await appManager.activatePlugin(['settings'])
await appManager.activatePlugin(['hiddenPanel', 'pluginManager', 'filePanel', 'contextualListener', 'terminal', 'fetchAndCompile', 'contentImport'])
await appManager.activatePlugin(['hiddenPanel', 'pluginManager', 'filePanel', 'contextualListener', 'terminal', 'blockchain', 'fetchAndCompile', 'contentImport'])
// Set workspace after initial activation
if (Array.isArray(workspace)) {

@ -1,7 +1,9 @@
import Web3 from 'web3'
import { Plugin } from '@remixproject/engine'
import { toBuffer, addHexPrefix } from 'ethereumjs-util'
import { waterfall } from 'async'
import { EventEmitter } from 'events'
import { format } from 'util'
import { ExecutionContext } from './execution-context'
import VMProvider from './providers/vm.js'
import InjectedProvider from './providers/injected.js'
@ -9,10 +11,20 @@ import NodeProvider from './providers/node.js'
import { execution, EventManager, helpers } from '@remix-project/remix-lib'
const { txFormat, txExecution, typeConversion, txListener: Txlistener, TxRunner, TxRunnerWeb3, txHelper } = execution
const { txResultHelper: resultToRemixTx } = helpers
const packageJson = require('../../../../package.json')
class Blockchain {
const profile = {
name: 'blockchain',
displayName: 'Blockchain',
description: 'Blockchain - Logic',
methods: [],
version: packageJson.version
}
class Blockchain extends Plugin {
// NOTE: the config object will need to be refactored out in remix-lib
constructor (config) {
super(profile)
this.event = new EventManager()
this.executionContext = new ExecutionContext()
@ -487,6 +499,24 @@ class Blockchain {
let execResult
let returnValue = null
if (isVM) {
const hhlogs = await this.web3().eth.getHHLogsForTx(txResult.transactionHash)
if (hhlogs && hhlogs.length) {
let finalLogs = 'console.log:\n'
for (const log of hhlogs) {
let formattedLog
// Hardhat implements the same formatting options that can be found in Node.js' console.log,
// which in turn uses util.format: https://nodejs.org/dist/latest-v12.x/docs/api/util.html#util_util_format_format_args
// For example: console.log("Name: %s, Age: %d", remix, 6) will log 'Name: remix, Age: 6'
// We check first arg to determine if 'util.format' is needed
if (typeof log[0] === 'string' && (log[0].includes('%s') || log[0].includes('%d'))) {
formattedLog = format(log[0], ...log.slice(1))
} else {
formattedLog = log.join(' ')
}
finalLogs = finalLogs + formattedLog + '\n'
}
this.call('terminal', 'log', { type: 'info', value: finalLogs })
}
execResult = await this.web3().eth.getExecutionResultFromSimulator(txResult.transactionHash)
if (execResult) {
// if it's not the VM, we don't have return value. We only have the transaction, and it does not contain the return value.

@ -8,7 +8,7 @@ const _paq = window._paq = window._paq || []
const requiredModules = [ // services + layout views + system views
'manager', 'compilerArtefacts', 'compilerMetadata', 'contextualListener', 'editor', 'offsetToLineColumnConverter', 'network', 'theme',
'fileManager', 'contentImport', 'web3Provider', 'scriptRunner', 'fetchAndCompile', 'mainPanel', 'hiddenPanel', 'sidePanel', 'menuicons',
'fileManager', 'contentImport', 'blockchain', 'web3Provider', 'scriptRunner', 'fetchAndCompile', 'mainPanel', 'hiddenPanel', 'sidePanel', 'menuicons',
'filePanel', 'terminal', 'settings', 'pluginManager', 'tabs', 'udapp', 'dGitProvider']
const dependentModules = ['git', 'hardhat'] // module which shouldn't be manually activated (e.g git is activated by remixd)

@ -0,0 +1,379 @@
// Fetched from https://github.com/nomiclabs/hardhat/blob/ee4969a0a8f746f4775d4018326056d161066869/packages/hardhat-core/src/internal/hardhat-network/stack-traces/logger.ts#L47
export const ConsoleLogs = {
1368866505: '()',
1309416733: '(int)',
4122065833: '(uint)',
1093685164: '(string)',
843419373: '(bool)',
741264322: '(address)',
199720790: '(bytes)',
1847107880: '(bytes1)',
3921027734: '(bytes2)',
763578662: '(bytes3)',
3764340945: '(bytes4)',
2793701517: '(bytes5)',
2927928721: '(bytes6)',
1322614312: '(bytes7)',
1334060334: '(bytes8)',
2428341456: '(bytes9)',
20780939: '(bytes10)',
67127854: '(bytes11)',
2258660029: '(bytes12)',
2488442420: '(bytes13)',
2456219775: '(bytes14)',
3667227872: '(bytes15)',
1717330180: '(bytes16)',
866084666: '(bytes17)',
3302112666: '(bytes18)',
1584093747: '(bytes19)',
1367925737: '(bytes20)',
3923391840: '(bytes21)',
3589990556: '(bytes22)',
2879508237: '(bytes23)',
4055063348: '(bytes24)',
193248344: '(bytes25)',
4172368369: '(bytes26)',
976705501: '(bytes27)',
3358255854: '(bytes28)',
1265222613: '(bytes29)',
3994207469: '(bytes30)',
3263516050: '(bytes31)',
666357637: '(bytes32)',
1812949376: '(uint,uint)',
262402885: '(uint,string)',
510514412: '(uint,bool)',
1491830284: '(uint,address)',
2534451664: '(string,uint)',
1264337527: '(string,string)',
3283441205: '(string,bool)',
832238387: '(string,address)',
910912146: '(bool,uint)',
2414527781: '(bool,string)',
705760899: '(bool,bool)',
2235320393: '(bool,address)',
574869411: '(address,uint)',
1973388987: '(address,string)',
1974863315: '(address,bool)',
3673216170: '(address,address)',
3884059252: '(uint,uint,uint)',
2104037094: '(uint,uint,string)',
1733758967: '(uint,uint,bool)',
3191032091: '(uint,uint,address)',
1533929535: '(uint,string,uint)',
1062716053: '(uint,string,string)',
1185403086: '(uint,string,bool)',
529592906: '(uint,string,address)',
1515034914: '(uint,bool,uint)',
2332955902: '(uint,bool,string)',
3587091680: '(uint,bool,bool)',
1112473535: '(uint,bool,address)',
2286109610: '(uint,address,uint)',
3464692859: '(uint,address,string)',
2060456590: '(uint,address,bool)',
2104993307: '(uint,address,address)',
2526862595: '(string,uint,uint)',
2750793529: '(string,uint,string)',
4043501061: '(string,uint,bool)',
3817119609: '(string,uint,address)',
4083337817: '(string,string,uint)',
753761519: '(string,string,string)',
2967534005: '(string,string,bool)',
2515337621: '(string,string,address)',
689682896: '(string,bool,uint)',
3801674877: '(string,bool,string)',
2232122070: '(string,bool,bool)',
2469116728: '(string,bool,address)',
130552343: '(string,address,uint)',
3773410639: '(string,address,string)',
3374145236: '(string,address,bool)',
4243355104: '(string,address,address)',
995886048: '(bool,uint,uint)',
3359211184: '(bool,uint,string)',
464374251: '(bool,uint,bool)',
3302110471: '(bool,uint,address)',
3224906412: '(bool,string,uint)',
2960557183: '(bool,string,string)',
3686056519: '(bool,string,bool)',
2509355347: '(bool,string,address)',
2954061243: '(bool,bool,uint)',
626391622: '(bool,bool,string)',
1349555864: '(bool,bool,bool)',
276362893: '(bool,bool,address)',
3950005167: '(bool,address,uint)',
3734671984: '(bool,address,string)',
415876934: '(bool,address,bool)',
3530962535: '(bool,address,address)',
2273710942: '(address,uint,uint)',
3136907337: '(address,uint,string)',
3846889796: '(address,uint,bool)',
2548867988: '(address,uint,address)',
484110986: '(address,string,uint)',
4218888805: '(address,string,string)',
3473018801: '(address,string,bool)',
4035396840: '(address,string,address)',
742821141: '(address,bool,uint)',
555898316: '(address,bool,string)',
3951234194: '(address,bool,bool)',
4044790253: '(address,bool,address)',
1815506290: '(address,address,uint)',
7426238: '(address,address,string)',
4070990470: '(address,address,bool)',
25986242: '(address,address,address)',
1554033982: '(uint,uint,uint,uint)',
2024634892: '(uint,uint,uint,string)',
1683143115: '(uint,uint,uint,bool)',
3766828905: '(uint,uint,uint,address)',
949229117: '(uint,uint,string,uint)',
2080582194: '(uint,uint,string,string)',
2989403910: '(uint,uint,string,bool)',
1127384482: '(uint,uint,string,address)',
1818524812: '(uint,uint,bool,uint)',
4024028142: '(uint,uint,bool,string)',
2495495089: '(uint,uint,bool,bool)',
3776410703: '(uint,uint,bool,address)',
1628154048: '(uint,uint,address,uint)',
3600994782: '(uint,uint,address,string)',
2833785006: '(uint,uint,address,bool)',
3398671136: '(uint,uint,address,address)',
3221501959: '(uint,string,uint,uint)',
2730232985: '(uint,string,uint,string)',
2270850606: '(uint,string,uint,bool)',
2877020669: '(uint,string,uint,address)',
1995203422: '(uint,string,string,uint)',
1474103825: '(uint,string,string,string)',
310782872: '(uint,string,string,bool)',
3432549024: '(uint,string,string,address)',
2763295359: '(uint,string,bool,uint)',
2370346144: '(uint,string,bool,string)',
1371286465: '(uint,string,bool,bool)',
2037328032: '(uint,string,bool,address)',
2565338099: '(uint,string,address,uint)',
4170733439: '(uint,string,address,string)',
4181720887: '(uint,string,address,bool)',
2141537675: '(uint,string,address,address)',
1451396516: '(uint,bool,uint,uint)',
3906845782: '(uint,bool,uint,string)',
3534472445: '(uint,bool,uint,bool)',
1329595790: '(uint,bool,uint,address)',
2438978344: '(uint,bool,string,uint)',
2754870525: '(uint,bool,string,string)',
879671495: '(uint,bool,string,bool)',
1231956916: '(uint,bool,string,address)',
3173363033: '(uint,bool,bool,uint)',
831186331: '(uint,bool,bool,string)',
1315722005: '(uint,bool,bool,bool)',
1392910941: '(uint,bool,bool,address)',
1102442299: '(uint,bool,address,uint)',
2721084958: '(uint,bool,address,string)',
2449150530: '(uint,bool,address,bool)',
2263728396: '(uint,bool,address,address)',
3399106228: '(uint,address,uint,uint)',
1054063912: '(uint,address,uint,string)',
435581801: '(uint,address,uint,bool)',
4256361684: '(uint,address,uint,address)',
2697204968: '(uint,address,string,uint)',
2373420580: '(uint,address,string,string)',
581204390: '(uint,address,string,bool)',
3420819197: '(uint,address,string,address)',
2064181483: '(uint,address,bool,uint)',
1676730946: '(uint,address,bool,string)',
2116501773: '(uint,address,bool,bool)',
3056677012: '(uint,address,bool,address)',
2587672470: '(uint,address,address,uint)',
2034490470: '(uint,address,address,string)',
22350596: '(uint,address,address,bool)',
1430734329: '(uint,address,address,address)',
149837414: '(string,uint,uint,uint)',
2773406909: '(string,uint,uint,string)',
4147936829: '(string,uint,uint,bool)',
3201771711: '(string,uint,uint,address)',
2697245221: '(string,uint,string,uint)',
1821956834: '(string,uint,string,string)',
3919545039: '(string,uint,string,bool)',
3144824297: '(string,uint,string,address)',
1427009269: '(string,uint,bool,uint)',
1993105508: '(string,uint,bool,string)',
3816813520: '(string,uint,bool,bool)',
3847527825: '(string,uint,bool,address)',
1481210622: '(string,uint,address,uint)',
844415720: '(string,uint,address,string)',
285649143: '(string,uint,address,bool)',
3939013249: '(string,uint,address,address)',
3587119056: '(string,string,uint,uint)',
2366909661: '(string,string,uint,string)',
3864418506: '(string,string,uint,bool)',
1565476480: '(string,string,uint,address)',
2681211381: '(string,string,string,uint)',
3731419658: '(string,string,string,string)',
739726573: '(string,string,string,bool)',
1834430276: '(string,string,string,address)',
2256636538: '(string,string,bool,uint)',
1585754346: '(string,string,bool,string)',
1081628777: '(string,string,bool,bool)',
3279013851: '(string,string,bool,address)',
1250010474: '(string,string,address,uint)',
3944480640: '(string,string,address,string)',
1556958775: '(string,string,address,bool)',
1134328815: '(string,string,address,address)',
1572859960: '(string,bool,uint,uint)',
1119461927: '(string,bool,uint,string)',
1019590099: '(string,bool,uint,bool)',
1909687565: '(string,bool,uint,address)',
885731469: '(string,bool,string,uint)',
2821114603: '(string,bool,string,string)',
1066037277: '(string,bool,string,bool)',
3764542249: '(string,bool,string,address)',
2155164136: '(string,bool,bool,uint)',
2636305885: '(string,bool,bool,string)',
2304440517: '(string,bool,bool,bool)',
1905304873: '(string,bool,bool,address)',
685723286: '(string,bool,address,uint)',
764294052: '(string,bool,address,string)',
2508990662: '(string,bool,address,bool)',
870964509: '(string,bool,address,address)',
3668153533: '(string,address,uint,uint)',
1280700980: '(string,address,uint,string)',
1522647356: '(string,address,uint,bool)',
2741431424: '(string,address,uint,address)',
2405583849: '(string,address,string,uint)',
609847026: '(string,address,string,string)',
1595265676: '(string,address,string,bool)',
2864486961: '(string,address,string,address)',
3318856587: '(string,address,bool,uint)',
72663161: '(string,address,bool,string)',
2038975531: '(string,address,bool,bool)',
573965245: '(string,address,bool,address)',
1857524797: '(string,address,address,uint)',
2148146279: '(string,address,address,string)',
3047013728: '(string,address,address,bool)',
3985582326: '(string,address,address,address)',
853517604: '(bool,uint,uint,uint)',
3657852616: '(bool,uint,uint,string)',
2753397214: '(bool,uint,uint,bool)',
4049711649: '(bool,uint,uint,address)',
1098907931: '(bool,uint,string,uint)',
3542771016: '(bool,uint,string,string)',
2446522387: '(bool,uint,string,bool)',
2781285673: '(bool,uint,string,address)',
3554563475: '(bool,uint,bool,uint)',
3067439572: '(bool,uint,bool,string)',
2650928961: '(bool,uint,bool,bool)',
1114097656: '(bool,uint,bool,address)',
3399820138: '(bool,uint,address,uint)',
403247937: '(bool,uint,address,string)',
1705899016: '(bool,uint,address,bool)',
2318373034: '(bool,uint,address,address)',
2387273838: '(bool,string,uint,uint)',
2007084013: '(bool,string,uint,string)',
549177775: '(bool,string,uint,bool)',
1529002296: '(bool,string,uint,address)',
1574643090: '(bool,string,string,uint)',
392356650: '(bool,string,string,string)',
508266469: '(bool,string,string,bool)',
2547225816: '(bool,string,string,address)',
2372902053: '(bool,string,bool,uint)',
1211958294: '(bool,string,bool,string)',
3697185627: '(bool,string,bool,bool)',
1401816747: '(bool,string,bool,address)',
453743963: '(bool,string,address,uint)',
316065672: '(bool,string,address,string)',
1842623690: '(bool,string,address,bool)',
724244700: '(bool,string,address,address)',
1181212302: '(bool,bool,uint,uint)',
1348569399: '(bool,bool,uint,string)',
2874982852: '(bool,bool,uint,bool)',
201299213: '(bool,bool,uint,address)',
395003525: '(bool,bool,string,uint)',
1830717265: '(bool,bool,string,string)',
3092715066: '(bool,bool,string,bool)',
4188875657: '(bool,bool,string,address)',
3259532109: '(bool,bool,bool,uint)',
719587540: '(bool,bool,bool,string)',
992632032: '(bool,bool,bool,bool)',
2352126746: '(bool,bool,bool,address)',
1620281063: '(bool,bool,address,uint)',
2695133539: '(bool,bool,address,string)',
3231908568: '(bool,bool,address,bool)',
4102557348: '(bool,bool,address,address)',
2617143996: '(bool,address,uint,uint)',
2691192883: '(bool,address,uint,string)',
4002252402: '(bool,address,uint,bool)',
1760647349: '(bool,address,uint,address)',
194640930: '(bool,address,string,uint)',
2805734838: '(bool,address,string,string)',
3804222987: '(bool,address,string,bool)',
1870422078: '(bool,address,string,address)',
1287000017: '(bool,address,bool,uint)',
1248250676: '(bool,address,bool,string)',
1788626827: '(bool,address,bool,bool)',
474063670: '(bool,address,bool,address)',
1384430956: '(bool,address,address,uint)',
3625099623: '(bool,address,address,string)',
1180699616: '(bool,address,address,bool)',
487903233: '(bool,address,address,address)',
1024368100: '(address,uint,uint,uint)',
2301889963: '(address,uint,uint,string)',
3964381346: '(address,uint,uint,bool)',
519451700: '(address,uint,uint,address)',
4111650715: '(address,uint,string,uint)',
2119616147: '(address,uint,string,string)',
2751614737: '(address,uint,string,bool)',
3698927108: '(address,uint,string,address)',
1770996626: '(address,uint,bool,uint)',
2391690869: '(address,uint,bool,string)',
4272018778: '(address,uint,bool,bool)',
602229106: '(address,uint,bool,address)',
2782496616: '(address,uint,address,uint)',
1567749022: '(address,uint,address,string)',
4051804649: '(address,uint,address,bool)',
3961816175: '(address,uint,address,address)',
2764647008: '(address,string,uint,uint)',
1561552329: '(address,string,uint,string)',
2116357467: '(address,string,uint,bool)',
3755464715: '(address,string,uint,address)',
2706362425: '(address,string,string,uint)',
1560462603: '(address,string,string,string)',
900007711: '(address,string,string,bool)',
2689478535: '(address,string,string,address)',
3877655068: '(address,string,bool,uint)',
3154862590: '(address,string,bool,string)',
1595759775: '(address,string,bool,bool)',
542667202: '(address,string,bool,address)',
2350461865: '(address,string,address,uint)',
4158874181: '(address,string,address,string)',
233909110: '(address,string,address,bool)',
221706784: '(address,string,address,address)',
3255869470: '(address,bool,uint,uint)',
2606272204: '(address,bool,uint,string)',
2244855215: '(address,bool,uint,bool)',
227337758: '(address,bool,uint,address)',
2652011374: '(address,bool,string,uint)',
1197235251: '(address,bool,string,string)',
1353532957: '(address,bool,string,bool)',
436029782: '(address,bool,string,address)',
3484780374: '(address,bool,bool,uint)',
3754205928: '(address,bool,bool,string)',
3401856121: '(address,bool,bool,bool)',
3476636805: '(address,bool,bool,address)',
3698398930: '(address,bool,address,uint)',
769095910: '(address,bool,address,string)',
2801077007: '(address,bool,address,bool)',
1711502813: '(address,bool,address,address)',
1425929188: '(address,address,uint,uint)',
2647731885: '(address,address,uint,string)',
3270936812: '(address,address,uint,bool)',
3603321462: '(address,address,uint,address)',
69767936: '(address,address,string,uint)',
566079269: '(address,address,string,string)',
1863997774: '(address,address,string,bool)',
2406706454: '(address,address,string,address)',
2513854225: '(address,address,bool,uint)',
2858762440: '(address,address,bool,string)',
752096074: '(address,address,bool,bool)',
2669396846: '(address,address,bool,address)',
3982404743: '(address,address,address,uint)',
4161329696: '(address,address,address,string)',
238520724: '(address,address,address,bool)',
1717301556: '(address,address,address,address)'
}

@ -1,7 +1,9 @@
import { hexListFromBNs, formatMemory } from '../util'
import { normalizeHexAddress } from '../helpers/uiHelper'
import { ConsoleLogs } from '../helpers/hhconsoleSigs'
import { toChecksumAddress, BN, bufferToHex, Address } from 'ethereumjs-util'
import Web3 from 'web3'
import { ethers } from 'ethers'
export class Web3VmProvider {
web3
@ -9,6 +11,7 @@ export class Web3VmProvider {
vmTraces
txs
txsReceipt
hhLogs
processingHash
processingAddress
processingIndex
@ -41,6 +44,7 @@ export class Web3VmProvider {
this.vmTraces = {}
this.txs = {}
this.txsReceipt = {}
this.hhLogs = {}
this.processingHash = null
this.processingAddress = null
this.processingIndex = null
@ -206,6 +210,29 @@ export class Web3VmProvider {
error: data.error === false ? undefined : data.error
}
this.vmTraces[this.processingHash].structLogs.push(step)
// Track hardhat console.log call
if (step.op === 'STATICCALL' && step.stack[step.stack.length - 2] === '0x000000000000000000000000000000000000000000636f6e736f6c652e6c6f67') {
const stackLength = step.stack.length
const payloadStart = parseInt(step.stack[stackLength - 3], 16)
const memory = step.memory.join('')
let payload = memory.substring(payloadStart * 2, memory.length)
const fnselectorStr = payload.substring(0, 8)
const fnselectorStrInHex = '0x' + fnselectorStr
const fnselector = parseInt(fnselectorStrInHex)
const fnArgs = ConsoleLogs[fnselector]
const iface = new ethers.utils.Interface([`function log${fnArgs} view`])
const functionDesc = iface.getFunction(`log${fnArgs}`)
const sigHash = iface.getSighash(`log${fnArgs}`)
if (fnArgs.includes('uint') && sigHash !== fnselectorStrInHex) {
payload = payload.replace(fnselectorStr, sigHash)
} else {
payload = '0x' + payload
}
const consoleArgs = iface.decodeFunctionData(functionDesc, payload)
this.hhLogs[this.processingHash] = this.hhLogs[this.processingHash] ? this.hhLogs[this.processingHash] : []
this.hhLogs[this.processingHash].push(consoleArgs)
}
if (step.op === 'CREATE' || step.op === 'CALL') {
if (step.op === 'CREATE') {
this.processingAddress = '(Contract Creation - Step ' + this.processingIndex + ')'

@ -57,6 +57,7 @@ export class Transactions {
eth_getTransactionByBlockHashAndIndex: this.eth_getTransactionByBlockHashAndIndex.bind(this),
eth_getTransactionByBlockNumberAndIndex: this.eth_getTransactionByBlockNumberAndIndex.bind(this),
eth_getExecutionResultFromSimulator: this.eth_getExecutionResultFromSimulator.bind(this),
eth_getHHLogsForTx: this.eth_getHHLogsForTx.bind(this),
eth_getHashFromTagBySimulator: this.eth_getHashFromTagBySimulator.bind(this)
}
}
@ -83,6 +84,11 @@ export class Transactions {
cb(null, this.vmContext.exeResults[txHash])
}
eth_getHHLogsForTx (payload, cb) {
const txHash = payload.params[0]
cb(null, this.vmContext.currentVm.web3vm.hhLogs[txHash] ? this.vmContext.currentVm.web3vm.hhLogs[txHash] : [])
}
eth_getTransactionReceipt (payload, cb) {
this.vmContext.web3().eth.getTransactionReceipt(payload.params[0], (error, receipt) => {
if (error) {

@ -103,6 +103,15 @@ export function extend (web3) {
}))
}
if (!(web3.eth && web3.eth.getHHLogsForTx)) {
methods.push(new web3.extend.Method({
name: 'getHHLogsForTx',
call: 'eth_getHHLogsForTx',
inputFormatter: [null],
params: 1
}))
}
if (!(web3.eth && web3.eth.getHashFromTagBySimulator)) {
methods.push(new web3.extend.Method({
name: 'getHashFromTagBySimulator',

Loading…
Cancel
Save