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 `