github.com/waltonchain/waltonchain_gwtc_src@v1.1.4-0.20201225072101-8a298c95a819/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-wtc 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-wtc 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 gwtc specific web3.js extensions. 18 package web3ext 19 20 var Modules = map[string]string{ 21 "admin": Admin_JS, 22 "chequebook": Chequebook_JS, 23 "debug": Debug_JS, 24 "eth": Eth_JS, 25 "miner": Miner_JS, 26 "net": Net_JS, 27 "personal": Personal_JS, 28 "rpc": RPC_JS, 29 "shh": Shh_JS, 30 "swarmfs": SWARMFS_JS, 31 "txpool": TxPool_JS, 32 } 33 34 const Chequebook_JS = ` 35 web3._extend({ 36 property: 'chequebook', 37 methods: [ 38 new web3._extend.Method({ 39 name: 'deposit', 40 call: 'chequebook_deposit', 41 params: 1, 42 inputFormatter: [null] 43 }), 44 new web3._extend.Property({ 45 name: 'balance', 46 getter: 'chequebook_balance', 47 outputFormatter: web3._extend.utils.toDecimal 48 }), 49 new web3._extend.Method({ 50 name: 'cash', 51 call: 'chequebook_cash', 52 params: 1, 53 inputFormatter: [null] 54 }), 55 new web3._extend.Method({ 56 name: 'issue', 57 call: 'chequebook_issue', 58 params: 2, 59 inputFormatter: [null, null] 60 }), 61 ] 62 }); 63 ` 64 65 const Admin_JS = ` 66 web3._extend({ 67 property: 'admin', 68 methods: [ 69 new web3._extend.Method({ 70 name: 'addPeer', 71 call: 'admin_addPeer', 72 params: 1 73 }), 74 new web3._extend.Method({ 75 name: 'removePeer', 76 call: 'admin_removePeer', 77 params: 1 78 }), 79 new web3._extend.Method({ 80 name: 'exportChain', 81 call: 'admin_exportChain', 82 params: 1, 83 inputFormatter: [null] 84 }), 85 new web3._extend.Method({ 86 name: 'importChain', 87 call: 'admin_importChain', 88 params: 1 89 }), 90 new web3._extend.Method({ 91 name: 'sleepBlocks', 92 call: 'admin_sleepBlocks', 93 params: 2 94 }), 95 new web3._extend.Method({ 96 name: 'startRPC', 97 call: 'admin_startRPC', 98 params: 4, 99 inputFormatter: [null, null, null, null] 100 }), 101 new web3._extend.Method({ 102 name: 'stopRPC', 103 call: 'admin_stopRPC' 104 }), 105 new web3._extend.Method({ 106 name: 'startWS', 107 call: 'admin_startWS', 108 params: 4, 109 inputFormatter: [null, null, null, null] 110 }), 111 new web3._extend.Method({ 112 name: 'stopWS', 113 call: 'admin_stopWS' 114 }), 115 ], 116 properties: [ 117 new web3._extend.Property({ 118 name: 'nodeInfo', 119 getter: 'admin_nodeInfo' 120 }), 121 new web3._extend.Property({ 122 name: 'peers', 123 getter: 'admin_peers' 124 }), 125 new web3._extend.Property({ 126 name: 'datadir', 127 getter: 'admin_datadir' 128 }), 129 ] 130 }); 131 ` 132 133 const Debug_JS = ` 134 web3._extend({ 135 property: 'debug', 136 methods: [ 137 new web3._extend.Method({ 138 name: 'printBlock', 139 call: 'debug_printBlock', 140 params: 1 141 }), 142 new web3._extend.Method({ 143 name: 'getBlockRlp', 144 call: 'debug_getBlockRlp', 145 params: 1 146 }), 147 new web3._extend.Method({ 148 name: 'setHead', 149 call: 'debug_setHead', 150 params: 1 151 }), 152 new web3._extend.Method({ 153 name: 'traceBlock', 154 call: 'debug_traceBlock', 155 params: 1 156 }), 157 new web3._extend.Method({ 158 name: 'traceBlockFromFile', 159 call: 'debug_traceBlockFromFile', 160 params: 1 161 }), 162 new web3._extend.Method({ 163 name: 'traceBlockByNumber', 164 call: 'debug_traceBlockByNumber', 165 params: 1 166 }), 167 new web3._extend.Method({ 168 name: 'traceBlockByHash', 169 call: 'debug_traceBlockByHash', 170 params: 1 171 }), 172 new web3._extend.Method({ 173 name: 'seedHash', 174 call: 'debug_seedHash', 175 params: 1 176 }), 177 new web3._extend.Method({ 178 name: 'dumpBlock', 179 call: 'debug_dumpBlock', 180 params: 1 181 }), 182 new web3._extend.Method({ 183 name: 'chaindbProperty', 184 call: 'debug_chaindbProperty', 185 params: 1, 186 outputFormatter: console.log 187 }), 188 new web3._extend.Method({ 189 name: 'chaindbCompact', 190 call: 'debug_chaindbCompact', 191 }), 192 new web3._extend.Method({ 193 name: 'metrics', 194 call: 'debug_metrics', 195 params: 1 196 }), 197 new web3._extend.Method({ 198 name: 'verbosity', 199 call: 'debug_verbosity', 200 params: 1 201 }), 202 new web3._extend.Method({ 203 name: 'vmodule', 204 call: 'debug_vmodule', 205 params: 1 206 }), 207 new web3._extend.Method({ 208 name: 'backtraceAt', 209 call: 'debug_backtraceAt', 210 params: 1, 211 }), 212 new web3._extend.Method({ 213 name: 'stacks', 214 call: 'debug_stacks', 215 params: 0, 216 outputFormatter: console.log 217 }), 218 new web3._extend.Method({ 219 name: 'freeOSMemory', 220 call: 'debug_freeOSMemory', 221 params: 0, 222 }), 223 new web3._extend.Method({ 224 name: 'setGCPercent', 225 call: 'debug_setGCPercent', 226 params: 1, 227 }), 228 new web3._extend.Method({ 229 name: 'memStats', 230 call: 'debug_memStats', 231 params: 0, 232 }), 233 new web3._extend.Method({ 234 name: 'gcStats', 235 call: 'debug_gcStats', 236 params: 0, 237 }), 238 new web3._extend.Method({ 239 name: 'cpuProfile', 240 call: 'debug_cpuProfile', 241 params: 2 242 }), 243 new web3._extend.Method({ 244 name: 'startCPUProfile', 245 call: 'debug_startCPUProfile', 246 params: 1 247 }), 248 new web3._extend.Method({ 249 name: 'stopCPUProfile', 250 call: 'debug_stopCPUProfile', 251 params: 0 252 }), 253 new web3._extend.Method({ 254 name: 'goTrace', 255 call: 'debug_goTrace', 256 params: 2 257 }), 258 new web3._extend.Method({ 259 name: 'startGoTrace', 260 call: 'debug_startGoTrace', 261 params: 1 262 }), 263 new web3._extend.Method({ 264 name: 'stopGoTrace', 265 call: 'debug_stopGoTrace', 266 params: 0 267 }), 268 new web3._extend.Method({ 269 name: 'blockProfile', 270 call: 'debug_blockProfile', 271 params: 2 272 }), 273 new web3._extend.Method({ 274 name: 'setBlockProfileRate', 275 call: 'debug_setBlockProfileRate', 276 params: 1 277 }), 278 new web3._extend.Method({ 279 name: 'writeBlockProfile', 280 call: 'debug_writeBlockProfile', 281 params: 1 282 }), 283 new web3._extend.Method({ 284 name: 'writeMemProfile', 285 call: 'debug_writeMemProfile', 286 params: 1 287 }), 288 new web3._extend.Method({ 289 name: 'traceTransaction', 290 call: 'debug_traceTransaction', 291 params: 2, 292 inputFormatter: [null, null] 293 }), 294 new web3._extend.Method({ 295 name: 'preimage', 296 call: 'debug_preimage', 297 params: 1, 298 inputFormatter: [null] 299 }), 300 new web3._extend.Method({ 301 name: 'getBadBlocks', 302 call: 'debug_getBadBlocks', 303 params: 0, 304 }), 305 new web3._extend.Method({ 306 name: 'storageRangeAt', 307 call: 'debug_storageRangeAt', 308 params: 5, 309 }), 310 ], 311 properties: [] 312 }); 313 ` 314 315 const Eth_JS = ` 316 web3._extend({ 317 property: 'eth', 318 methods: [ 319 new web3._extend.Method({ 320 name: 'chainId', 321 call: 'eth_chainId', 322 params: 0 323 }), 324 new web3._extend.Method({ 325 name: 'sign', 326 call: 'eth_sign', 327 params: 2, 328 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null] 329 }), 330 new web3._extend.Method({ 331 name: 'resend', 332 call: 'eth_resend', 333 params: 3, 334 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal] 335 }), 336 new web3._extend.Method({ 337 name: 'signTransaction', 338 call: 'eth_signTransaction', 339 params: 1, 340 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 341 }), 342 new web3._extend.Method({ 343 name: 'submitTransaction', 344 call: 'eth_submitTransaction', 345 params: 1, 346 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 347 }), 348 new web3._extend.Method({ 349 name: 'getRawTransaction', 350 call: 'eth_getRawTransactionByHash', 351 params: 1 352 }), 353 new web3._extend.Method({ 354 name: 'getRawTransactionFromBlock', 355 call: function(args) { 356 return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getRawTransactionByBlockHashAndIndex' : 'eth_getRawTransactionByBlockNumberAndIndex'; 357 }, 358 params: 2, 359 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex] 360 }), 361 ], 362 properties: [ 363 new web3._extend.Property({ 364 name: 'pendingTransactions', 365 getter: 'eth_pendingTransactions', 366 outputFormatter: function(txs) { 367 var formatted = []; 368 for (var i = 0; i < txs.length; i++) { 369 formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i])); 370 formatted[i].blockHash = null; 371 } 372 return formatted; 373 } 374 }), 375 ] 376 }); 377 ` 378 379 const Miner_JS = ` 380 web3._extend({ 381 property: 'miner', 382 methods: [ 383 new web3._extend.Method({ 384 name: 'start', 385 call: 'miner_start', 386 params: 1, 387 inputFormatter: [null] 388 }), 389 new web3._extend.Method({ 390 name: 'stop', 391 call: 'miner_stop' 392 }), 393 new web3._extend.Method({ 394 name: 'setEtherbase', 395 call: 'miner_setEtherbase', 396 params: 1, 397 inputFormatter: [web3._extend.formatters.inputAddressFormatter] 398 }), 399 new web3._extend.Method({ 400 name: 'setExtra', 401 call: 'miner_setExtra', 402 params: 1 403 }), 404 new web3._extend.Method({ 405 name: 'setGasPrice', 406 call: 'miner_setGasPrice', 407 params: 1, 408 inputFormatter: [web3._extend.utils.fromDecimal] 409 }), 410 new web3._extend.Method({ 411 name: 'getHashrate', 412 call: 'miner_getHashrate' 413 }), 414 ], 415 properties: [] 416 }); 417 ` 418 419 const Net_JS = ` 420 web3._extend({ 421 property: 'net', 422 methods: [], 423 properties: [ 424 new web3._extend.Property({ 425 name: 'version', 426 getter: 'net_version' 427 }), 428 ] 429 }); 430 ` 431 432 const Personal_JS = ` 433 web3._extend({ 434 property: 'personal', 435 methods: [ 436 new web3._extend.Method({ 437 name: 'importRawKey', 438 call: 'personal_importRawKey', 439 params: 2 440 }), 441 new web3._extend.Method({ 442 name: 'sign', 443 call: 'personal_sign', 444 params: 3, 445 inputFormatter: [null, web3._extend.formatters.inputAddressFormatter, null] 446 }), 447 new web3._extend.Method({ 448 name: 'ecRecover', 449 call: 'personal_ecRecover', 450 params: 2 451 }), 452 new web3._extend.Method({ 453 name: 'openWallet', 454 call: 'personal_openWallet', 455 params: 2 456 }), 457 new web3._extend.Method({ 458 name: 'deriveAccount', 459 call: 'personal_deriveAccount', 460 params: 3 461 }), 462 ], 463 properties: [ 464 new web3._extend.Property({ 465 name: 'listWallets', 466 getter: 'personal_listWallets' 467 }), 468 ] 469 }) 470 ` 471 472 const RPC_JS = ` 473 web3._extend({ 474 property: 'rpc', 475 methods: [], 476 properties: [ 477 new web3._extend.Property({ 478 name: 'modules', 479 getter: 'rpc_modules' 480 }), 481 ] 482 }); 483 ` 484 485 const Shh_JS = ` 486 web3._extend({ 487 property: 'shh', 488 methods: [ 489 new web3._extend.Method({ 490 name: 'setMaxMessageLength', 491 call: 'shh_setMaxMessageLength', 492 params: 1 493 }), 494 new web3._extend.Method({ 495 name: 'setMinimumPoW', 496 call: 'shh_setMinimumPoW', 497 params: 1 498 }), 499 new web3._extend.Method({ 500 name: 'markTrustedPeer', 501 call: 'shh_markTrustedPeer', 502 params: 1 503 }), 504 new web3._extend.Method({ 505 name: 'hasKeyPair', 506 call: 'shh_hasKeyPair', 507 params: 1 508 }), 509 new web3._extend.Method({ 510 name: 'deleteKeyPair', 511 call: 'shh_deleteKeyPair', 512 params: 1 513 }), 514 new web3._extend.Method({ 515 name: 'newKeyPair', 516 call: 'shh_newKeyPair' 517 }), 518 new web3._extend.Method({ 519 name: 'getPublicKey', 520 call: 'shh_getPublicKey', 521 params: 1 522 }), 523 new web3._extend.Method({ 524 name: 'getPrivateKey', 525 call: 'shh_getPrivateKey', 526 params: 1 527 }), 528 new web3._extend.Method({ 529 name: 'newSymKey', 530 call: 'shh_newSymKey', 531 }), 532 new web3._extend.Method({ 533 name: 'addSymKey', 534 call: 'shh_addSymKey', 535 params: 1 536 }), 537 new web3._extend.Method({ 538 name: 'generateSymKeyFromPassword', 539 call: 'shh_generateSymKeyFromPassword', 540 params: 1 541 }), 542 new web3._extend.Method({ 543 name: 'hasSymKey', 544 call: 'shh_hasSymKey', 545 params: 1 546 }), 547 new web3._extend.Method({ 548 name: 'getSymKey', 549 call: 'shh_getSymKey', 550 params: 1 551 }), 552 new web3._extend.Method({ 553 name: 'deleteSymKey', 554 call: 'shh_deleteSymKey', 555 params: 1 556 }), 557 new web3._extend.Method({ 558 name: 'subscribe', 559 call: 'shh_subscribe', 560 params: 2 561 }), 562 new web3._extend.Method({ 563 name: 'unsubscribe', 564 call: 'shh_unsubscribe', 565 params: 1 566 }), 567 new web3._extend.Method({ 568 name: 'post', 569 call: 'shh_post', 570 params: 1 571 }), 572 new web3._extend.Method({ 573 name: 'publicKey', 574 call: 'shh_getPublicKey', 575 params: 1 576 }), 577 new web3._extend.Method({ 578 name: 'getFilterMessages', 579 call: 'shh_getFilterMessages', 580 params: 1 581 }), 582 new web3._extend.Method({ 583 name: 'deleteMessageFilter', 584 call: 'shh_deleteMessageFilter', 585 params: 1 586 }), 587 new web3._extend.Method({ 588 name: 'newMessageFilter', 589 call: 'shh_newMessageFilter', 590 params: 1 591 }), 592 ], 593 properties: 594 [ 595 new web3._extend.Property({ 596 name: 'version', 597 getter: 'shh_version', 598 outputFormatter: web3._extend.utils.toDecimal 599 }), 600 new web3._extend.Property({ 601 name: 'info', 602 getter: 'shh_info' 603 }), 604 ] 605 }); 606 ` 607 608 const SWARMFS_JS = ` 609 web3._extend({ 610 property: 'swarmfs', 611 methods: 612 [ 613 new web3._extend.Method({ 614 name: 'mount', 615 call: 'swarmfs_mount', 616 params: 2 617 }), 618 new web3._extend.Method({ 619 name: 'unmount', 620 call: 'swarmfs_unmount', 621 params: 1 622 }), 623 new web3._extend.Method({ 624 name: 'listmounts', 625 call: 'swarmfs_listmounts', 626 params: 0 627 }), 628 ] 629 }); 630 ` 631 632 const TxPool_JS = ` 633 web3._extend({ 634 property: 'txpool', 635 methods: [], 636 properties: 637 [ 638 new web3._extend.Property({ 639 name: 'content', 640 getter: 'txpool_content' 641 }), 642 new web3._extend.Property({ 643 name: 'inspect', 644 getter: 'txpool_inspect' 645 }), 646 new web3._extend.Property({ 647 name: 'status', 648 getter: 'txpool_status', 649 outputFormatter: function(status) { 650 status.pending = web3._extend.utils.toDecimal(status.pending); 651 status.queued = web3._extend.utils.toDecimal(status.queued); 652 return status; 653 } 654 }), 655 ] 656 }); 657 `