github.com/ethereumproject/go-ethereum@v5.5.2+incompatible/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 geth specific web3.js extensions.
    18  package web3ext
    19  
    20  var Modules = map[string]string{
    21  	"admin":    Admin_JS,
    22  	"debug":    Debug_JS,
    23  	"eth":      Eth_JS,
    24  	"miner":    Miner_JS,
    25  	"net":      Net_JS,
    26  	"personal": Personal_JS,
    27  	"rpc":      RPC_JS,
    28  	"shh":      Shh_JS,
    29  	"txpool":   TxPool_JS,
    30  	"geth":     Geth_JS,
    31  }
    32  
    33  const Admin_JS = `
    34  web3._extend({
    35  	property: 'admin',
    36  	methods:
    37  	[
    38  		new web3._extend.Method({
    39  			name: 'addPeer',
    40  			call: 'admin_addPeer',
    41  			params: 1
    42  		}),
    43  		new web3._extend.Method({
    44  			name: 'exportChain',
    45  			call: 'admin_exportChain',
    46  			params: 1,
    47  			inputFormatter: [null]
    48  		}),
    49  		new web3._extend.Method({
    50  			name: 'importChain',
    51  			call: 'admin_importChain',
    52  			params: 1
    53  		}),
    54  		new web3._extend.Method({
    55  			name: 'sleepBlocks',
    56  			call: 'admin_sleepBlocks',
    57  			params: 2
    58  		}),
    59  		new web3._extend.Method({
    60  			name: 'setSolc',
    61  			call: 'admin_setSolc',
    62  			params: 1
    63  		}),
    64  		new web3._extend.Method({
    65  			name: 'startRPC',
    66  			call: 'admin_startRPC',
    67  			params: 4,
    68  			inputFormatter: [null, null, null, null]
    69  		}),
    70  		new web3._extend.Method({
    71  			name: 'stopRPC',
    72  			call: 'admin_stopRPC'
    73  		}),
    74  		new web3._extend.Method({
    75  			name: 'startWS',
    76  			call: 'admin_startWS',
    77  			params: 4,
    78  			inputFormatter: [null, null, null, null]
    79  		}),
    80  		new web3._extend.Method({
    81  			name: 'stopWS',
    82  			call: 'admin_stopWS'
    83  		}),
    84  		new web3._extend.Method({
    85  			name: 'setGlobalRegistrar',
    86  			call: 'admin_setGlobalRegistrar',
    87  			params: 2
    88  		}),
    89  		new web3._extend.Method({
    90  			name: 'setHashReg',
    91  			call: 'admin_setHashReg',
    92  			params: 2
    93  		}),
    94  		new web3._extend.Method({
    95  			name: 'setUrlHint',
    96  			call: 'admin_setUrlHint',
    97  			params: 2
    98  		}),
    99  		new web3._extend.Method({
   100  			name: 'saveInfo',
   101  			call: 'admin_saveInfo',
   102  			params: 2
   103  		}),
   104  		new web3._extend.Method({
   105  			name: 'register',
   106  			call: 'admin_register',
   107  			params: 3
   108  		}),
   109  		new web3._extend.Method({
   110  			name: 'registerUrl',
   111  			call: 'admin_registerUrl',
   112  			params: 3
   113  		}),
   114  		new web3._extend.Method({
   115  			name: 'startNatSpec',
   116  			call: 'admin_startNatSpec',
   117  			params: 0
   118  		}),
   119  		new web3._extend.Method({
   120  			name: 'stopNatSpec',
   121  			call: 'admin_stopNatSpec',
   122  			params: 0
   123  		}),
   124  		new web3._extend.Method({
   125  			name: 'getContractInfo',
   126  			call: 'admin_getContractInfo',
   127  			params: 1
   128  		}),
   129  		new web3._extend.Method({
   130  			name: 'httpGet',
   131  			call: 'admin_httpGet',
   132  			params: 2
   133  		})
   134  	],
   135  	properties:
   136  	[
   137  		new web3._extend.Property({
   138  			name: 'nodeInfo',
   139  			getter: 'admin_nodeInfo'
   140  		}),
   141  		new web3._extend.Property({
   142  			name: 'peers',
   143  			getter: 'admin_peers'
   144  		}),
   145  		new web3._extend.Property({
   146  			name: 'datadir',
   147  			getter: 'admin_datadir'
   148  		})
   149  	]
   150  });
   151  `
   152  
   153  const Geth_JS = `
   154  web3._extend({
   155  	property: 'geth',
   156  	methods:
   157  	[
   158  		new web3._extend.Method({
   159  			name: 'getAddressTransactions',
   160  			call: 'geth_getAddressTransactions',
   161  			params: 8,
   162  			inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null, null, null, null]
   163  		}),
   164  		new web3._extend.Method({
   165  			name: 'getTransactionsByAddress',
   166  			call: 'geth_getTransactionsByAddress',
   167  			params: 8,
   168  			inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null, null, null, null]
   169  		}),
   170  		new web3._extend.Method({
   171  			name: 'buildATXI',
   172  			call: 'geth_buildATXI',
   173  			params: 3,
   174  			inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter, web3._extend.formatters.inputDefaultBlockNumberFormatter, null]
   175  		}),
   176  		new web3._extend.Method({
   177  			name: 'getATXIBuildStatus',
   178  			call: 'geth_getATXIBuildStatus',
   179  			params: 0,
   180  		})
   181  	],
   182  	properties: []
   183  });
   184  `
   185  
   186  const Debug_JS = `
   187  web3._extend({
   188  	property: 'debug',
   189  	methods:
   190  	[
   191  		new web3._extend.Method({
   192  			name: 'printBlock',
   193  			call: 'debug_printBlock',
   194  			params: 1
   195  		}),
   196  		new web3._extend.Method({
   197  			name: 'getBlockRlp',
   198  			call: 'debug_getBlockRlp',
   199  			params: 1
   200  		}),
   201  		new web3._extend.Method({
   202  			name: 'setHead',
   203  			call: 'debug_setHead',
   204  			params: 1
   205  		}),
   206  		new web3._extend.Method({
   207  			name: 'seedHash',
   208  			call: 'debug_seedHash',
   209  			params: 1
   210  		}),
   211  		new web3._extend.Method({
   212  			name: 'dumpBlock',
   213  			call: 'debug_dumpBlock',
   214  			params: 1
   215  		}),
   216  		new web3._extend.Method({
   217  			name: 'metrics',
   218  			call: 'debug_metrics',
   219  			params: 1,
   220  			inputFormatter: [web3._extend.formatters.inputOptionalBoolFormatter]
   221  		}),
   222  		new web3._extend.Method({
   223  			name: 'verbosity',
   224  			call: 'debug_verbosity',
   225  			params: 1,
   226  			inputFormatter: [web3._extend.formatters.inputOptionalNumberFormatter]
   227  		}),
   228  		new web3._extend.Method({
   229  			name: 'vmodule',
   230  			call: 'debug_vmodule',
   231  			params: 1,
   232  			inputFormatter: [web3._extend.formatters.inputOptionalStringFormatter]
   233  		}),
   234  		new web3._extend.Method({
   235  			name: 'traceTransaction',
   236  			call: 'debug_traceTransaction',
   237  			params: 1
   238  		}),
   239  		new web3._extend.Method({
   240  			name: 'accountExist',
   241  			call: 'debug_accountExist',
   242  			params: 2
   243  		})
   244  	],
   245  	properties: []
   246  });
   247  `
   248  
   249  const Eth_JS = `
   250  web3._extend({
   251  	property: 'eth',
   252  	methods:
   253  	[
   254  		new web3._extend.Method({
   255  			name: 'sign',
   256  			call: 'eth_sign',
   257  			params: 2,
   258  			inputFormatter: [web3._extend.formatters.inputAddressFormatter, null]
   259  		}),
   260  		new web3._extend.Method({
   261  			name: 'resend',
   262  			call: 'eth_resend',
   263  			params: 3,
   264  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal]
   265  		}),
   266  		new web3._extend.Method({
   267  			name: 'getNatSpec',
   268  			call: 'eth_getNatSpec',
   269  			params: 1,
   270  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
   271  		}),
   272  		new web3._extend.Method({
   273  			name: 'signTransaction',
   274  			call: 'eth_signTransaction',
   275  			params: 1,
   276  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
   277  		}),
   278  		new web3._extend.Method({
   279  			name: 'submitTransaction',
   280  			call: 'eth_submitTransaction',
   281  			params: 1,
   282  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
   283  		}),
   284  		new web3._extend.Method({
   285  			name: 'chainId',
   286  			call: 'eth_chainId',
   287  			params: 0
   288  		})
   289  	],
   290  	properties:
   291  	[
   292  		new web3._extend.Property({
   293  			name: 'pendingTransactions',
   294  			getter: 'eth_pendingTransactions',
   295  			outputFormatter: function(txs) {
   296  				var formatted = [];
   297  				for (var i = 0; i < txs.length; i++) {
   298  					formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i]));
   299  					formatted[i].blockHash = null;
   300  				}
   301  				return formatted;
   302  			}
   303  		})
   304  	]
   305  });
   306  `
   307  
   308  const Miner_JS = `
   309  web3._extend({
   310  	property: 'miner',
   311  	methods:
   312  	[
   313  		new web3._extend.Method({
   314  			name: 'start',
   315  			call: 'miner_start',
   316  			params: 1,
   317  			inputFormatter: [null]
   318  		}),
   319  		new web3._extend.Method({
   320  			name: 'stop',
   321  			call: 'miner_stop'
   322  		}),
   323  		new web3._extend.Method({
   324  			name: 'setEtherbase',
   325  			call: 'miner_setEtherbase',
   326  			params: 1,
   327  			inputFormatter: [web3._extend.formatters.inputAddressFormatter]
   328  		}),
   329  		new web3._extend.Method({
   330  			name: 'setExtra',
   331  			call: 'miner_setExtra',
   332  			params: 1
   333  		}),
   334  		new web3._extend.Method({
   335  			name: 'setGasPrice',
   336  			call: 'miner_setGasPrice',
   337  			params: 1,
   338  			inputFormatter: [web3._extend.utils.fromDecimal]
   339  		}),
   340  		new web3._extend.Method({
   341  			name: 'startAutoDAG',
   342  			call: 'miner_startAutoDAG',
   343  			params: 0
   344  		}),
   345  		new web3._extend.Method({
   346  			name: 'stopAutoDAG',
   347  			call: 'miner_stopAutoDAG',
   348  			params: 0
   349  		}),
   350  		new web3._extend.Method({
   351  			name: 'makeDAG',
   352  			call: 'miner_makeDAG',
   353  			params: 1,
   354  			inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter]
   355  		})
   356  	],
   357  	properties: []
   358  });
   359  `
   360  
   361  const Net_JS = `
   362  web3._extend({
   363  	property: 'net',
   364  	methods: [],
   365  	properties:
   366  	[
   367  		new web3._extend.Property({
   368  			name: 'version',
   369  			getter: 'net_version'
   370  		})
   371  	]
   372  });
   373  `
   374  
   375  const Personal_JS = `
   376  web3._extend({
   377  	property: 'personal',
   378  	methods:
   379  	[
   380  		new web3._extend.Method({
   381  			name: 'importRawKey',
   382  			call: 'personal_importRawKey',
   383  			params: 2
   384  		}),
   385  		new web3._extend.Method({
   386  			name: 'signAndSendTransaction',
   387  			call: 'personal_signAndSendTransaction',
   388  			params: 2,
   389  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null]
   390  		}),
   391  		new web3._extend.Method({
   392  			name: 'sendTransaction',
   393  			call: 'personal_sendTransaction',
   394  			params: 2,
   395  			inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null]
   396  		}),
   397  		new web3._extend.Method({
   398  			name: 'ecRecover',
   399  			call: 'personal_ecRecover',
   400  			params: 2,
   401  			inputFormatter: [null, null]
   402  		})
   403  	]
   404  });
   405  `
   406  
   407  const RPC_JS = `
   408  web3._extend({
   409  	property: 'rpc',
   410  	methods: [],
   411  	properties:
   412  	[
   413  		new web3._extend.Property({
   414  			name: 'modules',
   415  			getter: 'rpc_modules'
   416  		})
   417  	]
   418  });
   419  `
   420  
   421  const Shh_JS = `
   422  web3._extend({
   423  	property: 'shh',
   424  	methods: [],
   425  	properties:
   426  	[
   427  		new web3._extend.Property({
   428  			name: 'version',
   429  			getter: 'shh_version',
   430  			outputFormatter: web3._extend.utils.toDecimal
   431  		})
   432  	]
   433  });
   434  `
   435  
   436  const TxPool_JS = `
   437  web3._extend({
   438  	property: 'txpool',
   439  	methods: [],
   440  	properties:
   441  	[
   442  		new web3._extend.Property({
   443  			name: 'content',
   444  			getter: 'txpool_content'
   445  		}),
   446  		new web3._extend.Property({
   447  			name: 'inspect',
   448  			getter: 'txpool_inspect'
   449  		}),
   450  		new web3._extend.Property({
   451  			name: 'status',
   452  			getter: 'txpool_status',
   453  			outputFormatter: function(status) {
   454  				status.pending = web3._extend.utils.toDecimal(status.pending);
   455  				status.queued = web3._extend.utils.toDecimal(status.queued);
   456  				return status;
   457  			}
   458  		})
   459  	]
   460  });
   461  `