github.com/theQRL/go-zond@v0.2.1/internal/web3ext/web3ext.go (about)

     1  // Copyright 2015 The go-ethereum Authors
     2  // This file is part of the go-ethereum library.
     3  //
     4  // The go-ethereum library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-ethereum library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  // Package web3ext contains gzond specific web3.js extensions.
    18  package web3ext
    19  
    20  var Modules = map[string]string{
    21  	"admin":  AdminJs,
    22  	"debug":  DebugJs,
    23  	"zond":   ZondJs,
    24  	"miner":  MinerJs,
    25  	"net":    NetJs,
    26  	"rpc":    RpcJs,
    27  	"txpool": TxpoolJs,
    28  	"dev":    DevJs,
    29  }
    30  
    31  const AdminJs = `
    32  web3._extend({
    33  	property: 'admin',
    34  	methods: [
    35  		new web3._extend.Method({
    36  			name: 'addPeer',
    37  			call: 'admin_addPeer',
    38  			params: 1
    39  		}),
    40  		new web3._extend.Method({
    41  			name: 'removePeer',
    42  			call: 'admin_removePeer',
    43  			params: 1
    44  		}),
    45  		new web3._extend.Method({
    46  			name: 'addTrustedPeer',
    47  			call: 'admin_addTrustedPeer',
    48  			params: 1
    49  		}),
    50  		new web3._extend.Method({
    51  			name: 'removeTrustedPeer',
    52  			call: 'admin_removeTrustedPeer',
    53  			params: 1
    54  		}),
    55  		new web3._extend.Method({
    56  			name: 'exportChain',
    57  			call: 'admin_exportChain',
    58  			params: 3,
    59  			inputFormatter: [null, null, null]
    60  		}),
    61  		new web3._extend.Method({
    62  			name: 'importChain',
    63  			call: 'admin_importChain',
    64  			params: 1
    65  		}),
    66  		new web3._extend.Method({
    67  			name: 'sleepBlocks',
    68  			call: 'admin_sleepBlocks',
    69  			params: 2
    70  		}),
    71  		new web3._extend.Method({
    72  			name: 'startHTTP',
    73  			call: 'admin_startHTTP',
    74  			params: 5,
    75  			inputFormatter: [null, null, null, null, null]
    76  		}),
    77  		new web3._extend.Method({
    78  			name: 'stopHTTP',
    79  			call: 'admin_stopHTTP'
    80  		}),
    81  		new web3._extend.Method({
    82  			name: 'startWS',
    83  			call: 'admin_startWS',
    84  			params: 4,
    85  			inputFormatter: [null, null, null, null]
    86  		}),
    87  		new web3._extend.Method({
    88  			name: 'stopWS',
    89  			call: 'admin_stopWS'
    90  		}),
    91  	],
    92  	properties: [
    93  		new web3._extend.Property({
    94  			name: 'nodeInfo',
    95  			getter: 'admin_nodeInfo'
    96  		}),
    97  		new web3._extend.Property({
    98  			name: 'peers',
    99  			getter: 'admin_peers'
   100  		}),
   101  		new web3._extend.Property({
   102  			name: 'datadir',
   103  			getter: 'admin_datadir'
   104  		}),
   105  	]
   106  });
   107  `
   108  
   109  const DebugJs = `
   110  web3._extend({
   111  	property: 'debug',
   112  	methods: [
   113  		new web3._extend.Method({
   114  			name: 'accountRange',
   115  			call: 'debug_accountRange',
   116  			params: 6,
   117  			inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null, null, null, null],
   118  		}),
   119  		new web3._extend.Method({
   120  			name: 'printBlock',
   121  			call: 'debug_printBlock',
   122  			params: 1,
   123  			outputFormatter: console.log
   124  		}),
   125  		new web3._extend.Method({
   126  			name: 'getRawHeader',
   127  			call: 'debug_getRawHeader',
   128  			params: 1
   129  		}),
   130  		new web3._extend.Method({
   131  			name: 'getRawBlock',
   132  			call: 'debug_getRawBlock',
   133  			params: 1
   134  		}),
   135  		new web3._extend.Method({
   136  			name: 'getRawReceipts',
   137  			call: 'debug_getRawReceipts',
   138  			params: 1
   139  		}),
   140  		new web3._extend.Method({
   141  			name: 'getRawTransaction',
   142  			call: 'debug_getRawTransaction',
   143  			params: 1
   144  		}),
   145  		new web3._extend.Method({
   146  			name: 'setHead',
   147  			call: 'debug_setHead',
   148  			params: 1
   149  		}),
   150  		new web3._extend.Method({
   151  			name: 'seedHash',
   152  			call: 'debug_seedHash',
   153  			params: 1
   154  		}),
   155  		new web3._extend.Method({
   156  			name: 'dumpBlock',
   157  			call: 'debug_dumpBlock',
   158  			params: 1,
   159  			inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter]
   160  		}),
   161  		new web3._extend.Method({
   162  			name: 'chaindbProperty',
   163  			call: 'debug_chaindbProperty',
   164  			params: 1,
   165  			outputFormatter: console.log
   166  		}),
   167  		new web3._extend.Method({
   168  			name: 'chaindbCompact',
   169  			call: 'debug_chaindbCompact',
   170  		}),
   171  		new web3._extend.Method({
   172  			name: 'verbosity',
   173  			call: 'debug_verbosity',
   174  			params: 1
   175  		}),
   176  		new web3._extend.Method({
   177  			name: 'vmodule',
   178  			call: 'debug_vmodule',
   179  			params: 1
   180  		}),
   181  		new web3._extend.Method({
   182  			name: 'backtraceAt',
   183  			call: 'debug_backtraceAt',
   184  			params: 1,
   185  		}),
   186  		new web3._extend.Method({
   187  			name: 'stacks',
   188  			call: 'debug_stacks',
   189  			params: 1,
   190  			inputFormatter: [null],
   191  			outputFormatter: console.log
   192  		}),
   193  		new web3._extend.Method({
   194  			name: 'freeOSMemory',
   195  			call: 'debug_freeOSMemory',
   196  			params: 0,
   197  		}),
   198  		new web3._extend.Method({
   199  			name: 'setGCPercent',
   200  			call: 'debug_setGCPercent',
   201  			params: 1,
   202  		}),
   203  		new web3._extend.Method({
   204  			name: 'memStats',
   205  			call: 'debug_memStats',
   206  			params: 0,
   207  		}),
   208  		new web3._extend.Method({
   209  			name: 'gcStats',
   210  			call: 'debug_gcStats',
   211  			params: 0,
   212  		}),
   213  		new web3._extend.Method({
   214  			name: 'cpuProfile',
   215  			call: 'debug_cpuProfile',
   216  			params: 2
   217  		}),
   218  		new web3._extend.Method({
   219  			name: 'startCPUProfile',
   220  			call: 'debug_startCPUProfile',
   221  			params: 1
   222  		}),
   223  		new web3._extend.Method({
   224  			name: 'stopCPUProfile',
   225  			call: 'debug_stopCPUProfile',
   226  			params: 0
   227  		}),
   228  		new web3._extend.Method({
   229  			name: 'goTrace',
   230  			call: 'debug_goTrace',
   231  			params: 2
   232  		}),
   233  		new web3._extend.Method({
   234  			name: 'startGoTrace',
   235  			call: 'debug_startGoTrace',
   236  			params: 1
   237  		}),
   238  		new web3._extend.Method({
   239  			name: 'stopGoTrace',
   240  			call: 'debug_stopGoTrace',
   241  			params: 0
   242  		}),
   243  		new web3._extend.Method({
   244  			name: 'blockProfile',
   245  			call: 'debug_blockProfile',
   246  			params: 2
   247  		}),
   248  		new web3._extend.Method({
   249  			name: 'setBlockProfileRate',
   250  			call: 'debug_setBlockProfileRate',
   251  			params: 1
   252  		}),
   253  		new web3._extend.Method({
   254  			name: 'writeBlockProfile',
   255  			call: 'debug_writeBlockProfile',
   256  			params: 1
   257  		}),
   258  		new web3._extend.Method({
   259  			name: 'mutexProfile',
   260  			call: 'debug_mutexProfile',
   261  			params: 2
   262  		}),
   263  		new web3._extend.Method({
   264  			name: 'setMutexProfileFraction',
   265  			call: 'debug_setMutexProfileFraction',
   266  			params: 1
   267  		}),
   268  		new web3._extend.Method({
   269  			name: 'writeMutexProfile',
   270  			call: 'debug_writeMutexProfile',
   271  			params: 1
   272  		}),
   273  		new web3._extend.Method({
   274  			name: 'writeMemProfile',
   275  			call: 'debug_writeMemProfile',
   276  			params: 1
   277  		}),
   278  		new web3._extend.Method({
   279  			name: 'traceBlock',
   280  			call: 'debug_traceBlock',
   281  			params: 2,
   282  			inputFormatter: [null, null]
   283  		}),
   284  		new web3._extend.Method({
   285  			name: 'traceBlockFromFile',
   286  			call: 'debug_traceBlockFromFile',
   287  			params: 2,
   288  			inputFormatter: [null, null]
   289  		}),
   290  		new web3._extend.Method({
   291  			name: 'traceBadBlock',
   292  			call: 'debug_traceBadBlock',
   293  			params: 1,
   294  			inputFormatter: [null]
   295  		}),
   296  		new web3._extend.Method({
   297  			name: 'standardTraceBadBlockToFile',
   298  			call: 'debug_standardTraceBadBlockToFile',
   299  			params: 2,
   300  			inputFormatter: [null, null]
   301  		}),
   302  		new web3._extend.Method({
   303  			name: 'intermediateRoots',
   304  			call: 'debug_intermediateRoots',
   305  			params: 2,
   306  			inputFormatter: [null, null]
   307  		}),
   308  		new web3._extend.Method({
   309  			name: 'standardTraceBlockToFile',
   310  			call: 'debug_standardTraceBlockToFile',
   311  			params: 2,
   312  			inputFormatter: [null, null]
   313  		}),
   314  		new web3._extend.Method({
   315  			name: 'traceBlockByNumber',
   316  			call: 'debug_traceBlockByNumber',
   317  			params: 2,
   318  			inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, null]
   319  		}),
   320  		new web3._extend.Method({
   321  			name: 'traceBlockByHash',
   322  			call: 'debug_traceBlockByHash',
   323  			params: 2,
   324  			inputFormatter: [null, null]
   325  		}),
   326  		new web3._extend.Method({
   327  			name: 'traceTransaction',
   328  			call: 'debug_traceTransaction',
   329  			params: 2,
   330  			inputFormatter: [null, null]
   331  		}),
   332  		new web3._extend.Method({
   333  			name: 'traceCall',
   334  			call: 'debug_traceCall',
   335  			params: 3,
   336  			inputFormatter: [null, null, null]
   337  		}),
   338  		new web3._extend.Method({
   339  			name: 'preimage',
   340  			call: 'debug_preimage',
   341  			params: 1,
   342  			inputFormatter: [null]
   343  		}),
   344  		new web3._extend.Method({
   345  			name: 'getBadBlocks',
   346  			call: 'debug_getBadBlocks',
   347  			params: 0,
   348  		}),
   349  		new web3._extend.Method({
   350  			name: 'storageRangeAt',
   351  			call: 'debug_storageRangeAt',
   352  			params: 5,
   353  		}),
   354  		new web3._extend.Method({
   355  			name: 'getModifiedAccountsByNumber',
   356  			call: 'debug_getModifiedAccountsByNumber',
   357  			params: 2,
   358  			inputFormatter: [null, null],
   359  		}),
   360  		new web3._extend.Method({
   361  			name: 'getModifiedAccountsByHash',
   362  			call: 'debug_getModifiedAccountsByHash',
   363  			params: 2,
   364  			inputFormatter:[null, null],
   365  		}),
   366  		new web3._extend.Method({
   367  			name: 'freezeClient',
   368  			call: 'debug_freezeClient',
   369  			params: 1,
   370  		}),
   371  		new web3._extend.Method({
   372  			name: 'getAccessibleState',
   373  			call: 'debug_getAccessibleState',
   374  			params: 2,
   375  			inputFormatter:[web3._extend.formatters.inputBlockNumberFormatter, web3._extend.formatters.inputBlockNumberFormatter],
   376  		}),
   377  		new web3._extend.Method({
   378  			name: 'dbGet',
   379  			call: 'debug_dbGet',
   380  			params: 1
   381  		}),
   382  		new web3._extend.Method({
   383  			name: 'dbAncient',
   384  			call: 'debug_dbAncient',
   385  			params: 2
   386  		}),
   387  		new web3._extend.Method({
   388  			name: 'dbAncients',
   389  			call: 'debug_dbAncients',
   390  			params: 0
   391  		}),
   392  		new web3._extend.Method({
   393  			name: 'setTrieFlushInterval',
   394  			call: 'debug_setTrieFlushInterval',
   395  			params: 1
   396  		}),
   397  		new web3._extend.Method({
   398  			name: 'getTrieFlushInterval',
   399  			call: 'debug_getTrieFlushInterval',
   400  			params: 0
   401  		}),
   402  	],
   403  	properties: []
   404  });
   405  `
   406  
   407  const ZondJs = `
   408  web3._extend({
   409  	property: 'zond',
   410  	methods: [
   411  		new web3._extend.Method({
   412  			name: 'chainId',
   413  			call: 'zond_chainId',
   414  			params: 0
   415  		}),
   416  		new web3._extend.Method({
   417  			name: 'sign',
   418  			call: 'zond_sign',
   419  			params: 2,
   420  			inputFormatter: [web3._extend.formatters.inputAddressFormatter, null]
   421  		}),
   422  		new web3._extend.Method({
   423  			name: 'resend',
   424  			call: 'zond_resend',
   425  			params: 3,
   426  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal]
   427  		}),
   428  		new web3._extend.Method({
   429  			name: 'signTransaction',
   430  			call: 'zond_signTransaction',
   431  			params: 1,
   432  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
   433  		}),
   434  		new web3._extend.Method({
   435  			name: 'estimateGas',
   436  			call: 'zond_estimateGas',
   437  			params: 2,
   438  			inputFormatter: [web3._extend.formatters.inputCallFormatter, web3._extend.formatters.inputBlockNumberFormatter],
   439  			outputFormatter: web3._extend.utils.toDecimal
   440  		}),
   441  		new web3._extend.Method({
   442  			name: 'submitTransaction',
   443  			call: 'zond_submitTransaction',
   444  			params: 1,
   445  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
   446  		}),
   447  		new web3._extend.Method({
   448  			name: 'fillTransaction',
   449  			call: 'zond_fillTransaction',
   450  			params: 1,
   451  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
   452  		}),
   453  		new web3._extend.Method({
   454  			name: 'getHeaderByNumber',
   455  			call: 'zond_getHeaderByNumber',
   456  			params: 1,
   457  			inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter]
   458  		}),
   459  		new web3._extend.Method({
   460  			name: 'getHeaderByHash',
   461  			call: 'zond_getHeaderByHash',
   462  			params: 1
   463  		}),
   464  		new web3._extend.Method({
   465  			name: 'getBlockByNumber',
   466  			call: 'zond_getBlockByNumber',
   467  			params: 2,
   468  			inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, function (val) { return !!val; }]
   469  		}),
   470  		new web3._extend.Method({
   471  			name: 'getBlockByHash',
   472  			call: 'zond_getBlockByHash',
   473  			params: 2,
   474  			inputFormatter: [null, function (val) { return !!val; }]
   475  		}),
   476  		new web3._extend.Method({
   477  			name: 'getRawTransaction',
   478  			call: 'zond_getRawTransactionByHash',
   479  			params: 1
   480  		}),
   481  		new web3._extend.Method({
   482  			name: 'getRawTransactionFromBlock',
   483  			call: function(args) {
   484  				return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'zond_getRawTransactionByBlockHashAndIndex' : 'zond_getRawTransactionByBlockNumberAndIndex';
   485  			},
   486  			params: 2,
   487  			inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex]
   488  		}),
   489  		new web3._extend.Method({
   490  			name: 'getProof',
   491  			call: 'zond_getProof',
   492  			params: 3,
   493  			inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputBlockNumberFormatter]
   494  		}),
   495  		new web3._extend.Method({
   496  			name: 'createAccessList',
   497  			call: 'zond_createAccessList',
   498  			params: 2,
   499  			inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter],
   500  		}),
   501  		new web3._extend.Method({
   502  			name: 'feeHistory',
   503  			call: 'zond_feeHistory',
   504  			params: 3,
   505  			inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter, null]
   506  		}),
   507  		new web3._extend.Method({
   508  			name: 'getLogs',
   509  			call: 'zond_getLogs',
   510  			params: 1,
   511  		}),
   512  		new web3._extend.Method({
   513  			name: 'call',
   514  			call: 'zond_call',
   515  			params: 4,
   516  			inputFormatter: [web3._extend.formatters.inputCallFormatter, web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null],
   517  		}),
   518  		new web3._extend.Method({
   519  			name: 'getBlockReceipts',
   520  			call: 'zond_getBlockReceipts',
   521  			params: 1,
   522  		}),
   523  	],
   524  	properties: [
   525  		new web3._extend.Property({
   526  			name: 'pendingTransactions',
   527  			getter: 'zond_pendingTransactions',
   528  			outputFormatter: function(txs) {
   529  				var formatted = [];
   530  				for (var i = 0; i < txs.length; i++) {
   531  					formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i]));
   532  					formatted[i].blockHash = null;
   533  				}
   534  				return formatted;
   535  			}
   536  		}),
   537  		new web3._extend.Property({
   538  			name: 'maxPriorityFeePerGas',
   539  			getter: 'zond_maxPriorityFeePerGas',
   540  			outputFormatter: web3._extend.utils.toBigNumber
   541  		}),
   542  	]
   543  });
   544  `
   545  
   546  const MinerJs = `
   547  web3._extend({
   548  	property: 'miner',
   549  	methods: [
   550  		new web3._extend.Method({
   551  			name: 'setExtra',
   552  			call: 'miner_setExtra',
   553  			params: 1
   554  		}),
   555  		new web3._extend.Method({
   556  			name: 'setGasPrice',
   557  			call: 'miner_setGasPrice',
   558  			params: 1,
   559  			inputFormatter: [web3._extend.utils.fromDecimal]
   560  		}),
   561  		new web3._extend.Method({
   562  			name: 'setGasLimit',
   563  			call: 'miner_setGasLimit',
   564  			params: 1,
   565  			inputFormatter: [web3._extend.utils.fromDecimal]
   566  		}),
   567  	],
   568  	properties: []
   569  });
   570  `
   571  
   572  const NetJs = `
   573  web3._extend({
   574  	property: 'net',
   575  	methods: [],
   576  	properties: [
   577  		new web3._extend.Property({
   578  			name: 'version',
   579  			getter: 'net_version'
   580  		}),
   581  	]
   582  });
   583  `
   584  
   585  const RpcJs = `
   586  web3._extend({
   587  	property: 'rpc',
   588  	methods: [],
   589  	properties: [
   590  		new web3._extend.Property({
   591  			name: 'modules',
   592  			getter: 'rpc_modules'
   593  		}),
   594  	]
   595  });
   596  `
   597  
   598  const TxpoolJs = `
   599  web3._extend({
   600  	property: 'txpool',
   601  	methods: [],
   602  	properties:
   603  	[
   604  		new web3._extend.Property({
   605  			name: 'content',
   606  			getter: 'txpool_content'
   607  		}),
   608  		new web3._extend.Property({
   609  			name: 'inspect',
   610  			getter: 'txpool_inspect'
   611  		}),
   612  		new web3._extend.Property({
   613  			name: 'status',
   614  			getter: 'txpool_status',
   615  			outputFormatter: function(status) {
   616  				status.pending = web3._extend.utils.toDecimal(status.pending);
   617  				status.queued = web3._extend.utils.toDecimal(status.queued);
   618  				return status;
   619  			}
   620  		}),
   621  		new web3._extend.Method({
   622  			name: 'contentFrom',
   623  			call: 'txpool_contentFrom',
   624  			params: 1,
   625  		}),
   626  	]
   627  });
   628  `
   629  
   630  const DevJs = `
   631  web3._extend({
   632  	property: 'dev',
   633  	methods:
   634  	[
   635  		new web3._extend.Method({
   636  			name: 'addWithdrawal',
   637  			call: 'dev_addWithdrawal',
   638  			params: 1
   639  		}),
   640  		new web3._extend.Method({
   641  			name: 'setFeeRecipient',
   642  			call: 'dev_setFeeRecipient',
   643  			params: 1
   644  		}),
   645  	],
   646  });
   647  `