github.com/codysnider/go-ethereum@v1.10.18-0.20220420071915-14f4ae99222a/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": AdminJs, 22 "clique": CliqueJs, 23 "ethash": EthashJs, 24 "debug": DebugJs, 25 "eth": EthJs, 26 "miner": MinerJs, 27 "net": NetJs, 28 "personal": PersonalJs, 29 "rpc": RpcJs, 30 "txpool": TxpoolJs, 31 "les": LESJs, 32 "vflux": VfluxJs, 33 } 34 35 const CliqueJs = ` 36 web3._extend({ 37 property: 'clique', 38 methods: [ 39 new web3._extend.Method({ 40 name: 'getSnapshot', 41 call: 'clique_getSnapshot', 42 params: 1, 43 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 44 }), 45 new web3._extend.Method({ 46 name: 'getSnapshotAtHash', 47 call: 'clique_getSnapshotAtHash', 48 params: 1 49 }), 50 new web3._extend.Method({ 51 name: 'getSigners', 52 call: 'clique_getSigners', 53 params: 1, 54 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 55 }), 56 new web3._extend.Method({ 57 name: 'getSignersAtHash', 58 call: 'clique_getSignersAtHash', 59 params: 1 60 }), 61 new web3._extend.Method({ 62 name: 'propose', 63 call: 'clique_propose', 64 params: 2 65 }), 66 new web3._extend.Method({ 67 name: 'discard', 68 call: 'clique_discard', 69 params: 1 70 }), 71 new web3._extend.Method({ 72 name: 'status', 73 call: 'clique_status', 74 params: 0 75 }), 76 new web3._extend.Method({ 77 name: 'getSigner', 78 call: 'clique_getSigner', 79 params: 1, 80 inputFormatter: [null] 81 }), 82 ], 83 properties: [ 84 new web3._extend.Property({ 85 name: 'proposals', 86 getter: 'clique_proposals' 87 }), 88 ] 89 }); 90 ` 91 92 const EthashJs = ` 93 web3._extend({ 94 property: 'ethash', 95 methods: [ 96 new web3._extend.Method({ 97 name: 'getWork', 98 call: 'ethash_getWork', 99 params: 0 100 }), 101 new web3._extend.Method({ 102 name: 'getHashrate', 103 call: 'ethash_getHashrate', 104 params: 0 105 }), 106 new web3._extend.Method({ 107 name: 'submitWork', 108 call: 'ethash_submitWork', 109 params: 3, 110 }), 111 new web3._extend.Method({ 112 name: 'submitHashrate', 113 call: 'ethash_submitHashrate', 114 params: 2, 115 }), 116 ] 117 }); 118 ` 119 120 const AdminJs = ` 121 web3._extend({ 122 property: 'admin', 123 methods: [ 124 new web3._extend.Method({ 125 name: 'addPeer', 126 call: 'admin_addPeer', 127 params: 1 128 }), 129 new web3._extend.Method({ 130 name: 'removePeer', 131 call: 'admin_removePeer', 132 params: 1 133 }), 134 new web3._extend.Method({ 135 name: 'addTrustedPeer', 136 call: 'admin_addTrustedPeer', 137 params: 1 138 }), 139 new web3._extend.Method({ 140 name: 'removeTrustedPeer', 141 call: 'admin_removeTrustedPeer', 142 params: 1 143 }), 144 new web3._extend.Method({ 145 name: 'exportChain', 146 call: 'admin_exportChain', 147 params: 3, 148 inputFormatter: [null, null, null] 149 }), 150 new web3._extend.Method({ 151 name: 'importChain', 152 call: 'admin_importChain', 153 params: 1 154 }), 155 new web3._extend.Method({ 156 name: 'sleepBlocks', 157 call: 'admin_sleepBlocks', 158 params: 2 159 }), 160 new web3._extend.Method({ 161 name: 'startHTTP', 162 call: 'admin_startHTTP', 163 params: 5, 164 inputFormatter: [null, null, null, null, null] 165 }), 166 new web3._extend.Method({ 167 name: 'stopHTTP', 168 call: 'admin_stopHTTP' 169 }), 170 // This method is deprecated. 171 new web3._extend.Method({ 172 name: 'startRPC', 173 call: 'admin_startRPC', 174 params: 5, 175 inputFormatter: [null, null, null, null, null] 176 }), 177 // This method is deprecated. 178 new web3._extend.Method({ 179 name: 'stopRPC', 180 call: 'admin_stopRPC' 181 }), 182 new web3._extend.Method({ 183 name: 'startWS', 184 call: 'admin_startWS', 185 params: 4, 186 inputFormatter: [null, null, null, null] 187 }), 188 new web3._extend.Method({ 189 name: 'stopWS', 190 call: 'admin_stopWS' 191 }), 192 ], 193 properties: [ 194 new web3._extend.Property({ 195 name: 'nodeInfo', 196 getter: 'admin_nodeInfo' 197 }), 198 new web3._extend.Property({ 199 name: 'peers', 200 getter: 'admin_peers' 201 }), 202 new web3._extend.Property({ 203 name: 'datadir', 204 getter: 'admin_datadir' 205 }), 206 ] 207 }); 208 ` 209 210 const DebugJs = ` 211 web3._extend({ 212 property: 'debug', 213 methods: [ 214 new web3._extend.Method({ 215 name: 'accountRange', 216 call: 'debug_accountRange', 217 params: 6, 218 inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null, null, null, null], 219 }), 220 new web3._extend.Method({ 221 name: 'printBlock', 222 call: 'debug_printBlock', 223 params: 1, 224 outputFormatter: console.log 225 }), 226 new web3._extend.Method({ 227 name: 'getHeaderRlp', 228 call: 'debug_getHeaderRlp', 229 params: 1 230 }), 231 new web3._extend.Method({ 232 name: 'getBlockRlp', 233 call: 'debug_getBlockRlp', 234 params: 1 235 }), 236 new web3._extend.Method({ 237 name: 'testSignCliqueBlock', 238 call: 'debug_testSignCliqueBlock', 239 params: 2, 240 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null], 241 }), 242 new web3._extend.Method({ 243 name: 'setHead', 244 call: 'debug_setHead', 245 params: 1 246 }), 247 new web3._extend.Method({ 248 name: 'seedHash', 249 call: 'debug_seedHash', 250 params: 1 251 }), 252 new web3._extend.Method({ 253 name: 'dumpBlock', 254 call: 'debug_dumpBlock', 255 params: 1, 256 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 257 }), 258 new web3._extend.Method({ 259 name: 'chaindbProperty', 260 call: 'debug_chaindbProperty', 261 params: 1, 262 outputFormatter: console.log 263 }), 264 new web3._extend.Method({ 265 name: 'chaindbCompact', 266 call: 'debug_chaindbCompact', 267 }), 268 new web3._extend.Method({ 269 name: 'verbosity', 270 call: 'debug_verbosity', 271 params: 1 272 }), 273 new web3._extend.Method({ 274 name: 'vmodule', 275 call: 'debug_vmodule', 276 params: 1 277 }), 278 new web3._extend.Method({ 279 name: 'backtraceAt', 280 call: 'debug_backtraceAt', 281 params: 1, 282 }), 283 new web3._extend.Method({ 284 name: 'stacks', 285 call: 'debug_stacks', 286 params: 1, 287 inputFormatter: [null], 288 outputFormatter: console.log 289 }), 290 new web3._extend.Method({ 291 name: 'freeOSMemory', 292 call: 'debug_freeOSMemory', 293 params: 0, 294 }), 295 new web3._extend.Method({ 296 name: 'setGCPercent', 297 call: 'debug_setGCPercent', 298 params: 1, 299 }), 300 new web3._extend.Method({ 301 name: 'memStats', 302 call: 'debug_memStats', 303 params: 0, 304 }), 305 new web3._extend.Method({ 306 name: 'gcStats', 307 call: 'debug_gcStats', 308 params: 0, 309 }), 310 new web3._extend.Method({ 311 name: 'cpuProfile', 312 call: 'debug_cpuProfile', 313 params: 2 314 }), 315 new web3._extend.Method({ 316 name: 'startCPUProfile', 317 call: 'debug_startCPUProfile', 318 params: 1 319 }), 320 new web3._extend.Method({ 321 name: 'stopCPUProfile', 322 call: 'debug_stopCPUProfile', 323 params: 0 324 }), 325 new web3._extend.Method({ 326 name: 'goTrace', 327 call: 'debug_goTrace', 328 params: 2 329 }), 330 new web3._extend.Method({ 331 name: 'startGoTrace', 332 call: 'debug_startGoTrace', 333 params: 1 334 }), 335 new web3._extend.Method({ 336 name: 'stopGoTrace', 337 call: 'debug_stopGoTrace', 338 params: 0 339 }), 340 new web3._extend.Method({ 341 name: 'blockProfile', 342 call: 'debug_blockProfile', 343 params: 2 344 }), 345 new web3._extend.Method({ 346 name: 'setBlockProfileRate', 347 call: 'debug_setBlockProfileRate', 348 params: 1 349 }), 350 new web3._extend.Method({ 351 name: 'writeBlockProfile', 352 call: 'debug_writeBlockProfile', 353 params: 1 354 }), 355 new web3._extend.Method({ 356 name: 'mutexProfile', 357 call: 'debug_mutexProfile', 358 params: 2 359 }), 360 new web3._extend.Method({ 361 name: 'setMutexProfileFraction', 362 call: 'debug_setMutexProfileFraction', 363 params: 1 364 }), 365 new web3._extend.Method({ 366 name: 'writeMutexProfile', 367 call: 'debug_writeMutexProfile', 368 params: 1 369 }), 370 new web3._extend.Method({ 371 name: 'writeMemProfile', 372 call: 'debug_writeMemProfile', 373 params: 1 374 }), 375 new web3._extend.Method({ 376 name: 'traceBlock', 377 call: 'debug_traceBlock', 378 params: 2, 379 inputFormatter: [null, null] 380 }), 381 new web3._extend.Method({ 382 name: 'traceBlockFromFile', 383 call: 'debug_traceBlockFromFile', 384 params: 2, 385 inputFormatter: [null, null] 386 }), 387 new web3._extend.Method({ 388 name: 'traceBadBlock', 389 call: 'debug_traceBadBlock', 390 params: 1, 391 inputFormatter: [null] 392 }), 393 new web3._extend.Method({ 394 name: 'standardTraceBadBlockToFile', 395 call: 'debug_standardTraceBadBlockToFile', 396 params: 2, 397 inputFormatter: [null, null] 398 }), 399 new web3._extend.Method({ 400 name: 'intermediateRoots', 401 call: 'debug_intermediateRoots', 402 params: 2, 403 inputFormatter: [null, null] 404 }), 405 new web3._extend.Method({ 406 name: 'standardTraceBlockToFile', 407 call: 'debug_standardTraceBlockToFile', 408 params: 2, 409 inputFormatter: [null, null] 410 }), 411 new web3._extend.Method({ 412 name: 'traceBlockByNumber', 413 call: 'debug_traceBlockByNumber', 414 params: 2, 415 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, null] 416 }), 417 new web3._extend.Method({ 418 name: 'traceBlockByHash', 419 call: 'debug_traceBlockByHash', 420 params: 2, 421 inputFormatter: [null, null] 422 }), 423 new web3._extend.Method({ 424 name: 'traceTransaction', 425 call: 'debug_traceTransaction', 426 params: 2, 427 inputFormatter: [null, null] 428 }), 429 new web3._extend.Method({ 430 name: 'traceCall', 431 call: 'debug_traceCall', 432 params: 3, 433 inputFormatter: [null, null, null] 434 }), 435 new web3._extend.Method({ 436 name: 'preimage', 437 call: 'debug_preimage', 438 params: 1, 439 inputFormatter: [null] 440 }), 441 new web3._extend.Method({ 442 name: 'getBadBlocks', 443 call: 'debug_getBadBlocks', 444 params: 0, 445 }), 446 new web3._extend.Method({ 447 name: 'storageRangeAt', 448 call: 'debug_storageRangeAt', 449 params: 5, 450 }), 451 new web3._extend.Method({ 452 name: 'getModifiedAccountsByNumber', 453 call: 'debug_getModifiedAccountsByNumber', 454 params: 2, 455 inputFormatter: [null, null], 456 }), 457 new web3._extend.Method({ 458 name: 'getModifiedAccountsByHash', 459 call: 'debug_getModifiedAccountsByHash', 460 params: 2, 461 inputFormatter:[null, null], 462 }), 463 new web3._extend.Method({ 464 name: 'freezeClient', 465 call: 'debug_freezeClient', 466 params: 1, 467 }), 468 new web3._extend.Method({ 469 name: 'getAccessibleState', 470 call: 'debug_getAccessibleState', 471 params: 2, 472 inputFormatter:[web3._extend.formatters.inputBlockNumberFormatter, web3._extend.formatters.inputBlockNumberFormatter], 473 }), 474 ], 475 properties: [] 476 }); 477 ` 478 479 const EthJs = ` 480 web3._extend({ 481 property: 'eth', 482 methods: [ 483 new web3._extend.Method({ 484 name: 'chainId', 485 call: 'eth_chainId', 486 params: 0 487 }), 488 new web3._extend.Method({ 489 name: 'sign', 490 call: 'eth_sign', 491 params: 2, 492 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null] 493 }), 494 new web3._extend.Method({ 495 name: 'resend', 496 call: 'eth_resend', 497 params: 3, 498 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal] 499 }), 500 new web3._extend.Method({ 501 name: 'signTransaction', 502 call: 'eth_signTransaction', 503 params: 1, 504 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 505 }), 506 new web3._extend.Method({ 507 name: 'estimateGas', 508 call: 'eth_estimateGas', 509 params: 2, 510 inputFormatter: [web3._extend.formatters.inputCallFormatter, web3._extend.formatters.inputBlockNumberFormatter], 511 outputFormatter: web3._extend.utils.toDecimal 512 }), 513 new web3._extend.Method({ 514 name: 'submitTransaction', 515 call: 'eth_submitTransaction', 516 params: 1, 517 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 518 }), 519 new web3._extend.Method({ 520 name: 'fillTransaction', 521 call: 'eth_fillTransaction', 522 params: 1, 523 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 524 }), 525 new web3._extend.Method({ 526 name: 'getHeaderByNumber', 527 call: 'eth_getHeaderByNumber', 528 params: 1, 529 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 530 }), 531 new web3._extend.Method({ 532 name: 'getHeaderByHash', 533 call: 'eth_getHeaderByHash', 534 params: 1 535 }), 536 new web3._extend.Method({ 537 name: 'getBlockByNumber', 538 call: 'eth_getBlockByNumber', 539 params: 2, 540 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, function (val) { return !!val; }] 541 }), 542 new web3._extend.Method({ 543 name: 'getBlockByHash', 544 call: 'eth_getBlockByHash', 545 params: 2, 546 inputFormatter: [null, function (val) { return !!val; }] 547 }), 548 new web3._extend.Method({ 549 name: 'getRawTransaction', 550 call: 'eth_getRawTransactionByHash', 551 params: 1 552 }), 553 new web3._extend.Method({ 554 name: 'getRawTransactionFromBlock', 555 call: function(args) { 556 return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getRawTransactionByBlockHashAndIndex' : 'eth_getRawTransactionByBlockNumberAndIndex'; 557 }, 558 params: 2, 559 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex] 560 }), 561 new web3._extend.Method({ 562 name: 'getProof', 563 call: 'eth_getProof', 564 params: 3, 565 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputBlockNumberFormatter] 566 }), 567 new web3._extend.Method({ 568 name: 'createAccessList', 569 call: 'eth_createAccessList', 570 params: 2, 571 inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter], 572 }), 573 new web3._extend.Method({ 574 name: 'feeHistory', 575 call: 'eth_feeHistory', 576 params: 3, 577 inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter, null] 578 }), 579 new web3._extend.Method({ 580 name: 'getLogs', 581 call: 'eth_getLogs', 582 params: 1, 583 }), 584 ], 585 properties: [ 586 new web3._extend.Property({ 587 name: 'pendingTransactions', 588 getter: 'eth_pendingTransactions', 589 outputFormatter: function(txs) { 590 var formatted = []; 591 for (var i = 0; i < txs.length; i++) { 592 formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i])); 593 formatted[i].blockHash = null; 594 } 595 return formatted; 596 } 597 }), 598 new web3._extend.Property({ 599 name: 'maxPriorityFeePerGas', 600 getter: 'eth_maxPriorityFeePerGas', 601 outputFormatter: web3._extend.utils.toBigNumber 602 }), 603 ] 604 }); 605 ` 606 607 const MinerJs = ` 608 web3._extend({ 609 property: 'miner', 610 methods: [ 611 new web3._extend.Method({ 612 name: 'start', 613 call: 'miner_start', 614 params: 1, 615 inputFormatter: [null] 616 }), 617 new web3._extend.Method({ 618 name: 'stop', 619 call: 'miner_stop' 620 }), 621 new web3._extend.Method({ 622 name: 'setEtherbase', 623 call: 'miner_setEtherbase', 624 params: 1, 625 inputFormatter: [web3._extend.formatters.inputAddressFormatter] 626 }), 627 new web3._extend.Method({ 628 name: 'setExtra', 629 call: 'miner_setExtra', 630 params: 1 631 }), 632 new web3._extend.Method({ 633 name: 'setGasPrice', 634 call: 'miner_setGasPrice', 635 params: 1, 636 inputFormatter: [web3._extend.utils.fromDecimal] 637 }), 638 new web3._extend.Method({ 639 name: 'setGasLimit', 640 call: 'miner_setGasLimit', 641 params: 1, 642 inputFormatter: [web3._extend.utils.fromDecimal] 643 }), 644 new web3._extend.Method({ 645 name: 'setRecommitInterval', 646 call: 'miner_setRecommitInterval', 647 params: 1, 648 }), 649 new web3._extend.Method({ 650 name: 'getHashrate', 651 call: 'miner_getHashrate' 652 }), 653 ], 654 properties: [] 655 }); 656 ` 657 658 const NetJs = ` 659 web3._extend({ 660 property: 'net', 661 methods: [], 662 properties: [ 663 new web3._extend.Property({ 664 name: 'version', 665 getter: 'net_version' 666 }), 667 ] 668 }); 669 ` 670 671 const PersonalJs = ` 672 web3._extend({ 673 property: 'personal', 674 methods: [ 675 new web3._extend.Method({ 676 name: 'importRawKey', 677 call: 'personal_importRawKey', 678 params: 2 679 }), 680 new web3._extend.Method({ 681 name: 'sign', 682 call: 'personal_sign', 683 params: 3, 684 inputFormatter: [null, web3._extend.formatters.inputAddressFormatter, null] 685 }), 686 new web3._extend.Method({ 687 name: 'ecRecover', 688 call: 'personal_ecRecover', 689 params: 2 690 }), 691 new web3._extend.Method({ 692 name: 'openWallet', 693 call: 'personal_openWallet', 694 params: 2 695 }), 696 new web3._extend.Method({ 697 name: 'deriveAccount', 698 call: 'personal_deriveAccount', 699 params: 3 700 }), 701 new web3._extend.Method({ 702 name: 'signTransaction', 703 call: 'personal_signTransaction', 704 params: 2, 705 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null] 706 }), 707 new web3._extend.Method({ 708 name: 'unpair', 709 call: 'personal_unpair', 710 params: 2 711 }), 712 new web3._extend.Method({ 713 name: 'initializeWallet', 714 call: 'personal_initializeWallet', 715 params: 1 716 }) 717 ], 718 properties: [ 719 new web3._extend.Property({ 720 name: 'listWallets', 721 getter: 'personal_listWallets' 722 }), 723 ] 724 }) 725 ` 726 727 const RpcJs = ` 728 web3._extend({ 729 property: 'rpc', 730 methods: [], 731 properties: [ 732 new web3._extend.Property({ 733 name: 'modules', 734 getter: 'rpc_modules' 735 }), 736 ] 737 }); 738 ` 739 740 const TxpoolJs = ` 741 web3._extend({ 742 property: 'txpool', 743 methods: [], 744 properties: 745 [ 746 new web3._extend.Property({ 747 name: 'content', 748 getter: 'txpool_content' 749 }), 750 new web3._extend.Property({ 751 name: 'inspect', 752 getter: 'txpool_inspect' 753 }), 754 new web3._extend.Property({ 755 name: 'status', 756 getter: 'txpool_status', 757 outputFormatter: function(status) { 758 status.pending = web3._extend.utils.toDecimal(status.pending); 759 status.queued = web3._extend.utils.toDecimal(status.queued); 760 return status; 761 } 762 }), 763 new web3._extend.Method({ 764 name: 'contentFrom', 765 call: 'txpool_contentFrom', 766 params: 1, 767 }), 768 ] 769 }); 770 ` 771 772 const LESJs = ` 773 web3._extend({ 774 property: 'les', 775 methods: 776 [ 777 new web3._extend.Method({ 778 name: 'getCheckpoint', 779 call: 'les_getCheckpoint', 780 params: 1 781 }), 782 new web3._extend.Method({ 783 name: 'clientInfo', 784 call: 'les_clientInfo', 785 params: 1 786 }), 787 new web3._extend.Method({ 788 name: 'priorityClientInfo', 789 call: 'les_priorityClientInfo', 790 params: 3 791 }), 792 new web3._extend.Method({ 793 name: 'setClientParams', 794 call: 'les_setClientParams', 795 params: 2 796 }), 797 new web3._extend.Method({ 798 name: 'setDefaultParams', 799 call: 'les_setDefaultParams', 800 params: 1 801 }), 802 new web3._extend.Method({ 803 name: 'addBalance', 804 call: 'les_addBalance', 805 params: 2 806 }), 807 ], 808 properties: 809 [ 810 new web3._extend.Property({ 811 name: 'latestCheckpoint', 812 getter: 'les_latestCheckpoint' 813 }), 814 new web3._extend.Property({ 815 name: 'checkpointContractAddress', 816 getter: 'les_getCheckpointContractAddress' 817 }), 818 new web3._extend.Property({ 819 name: 'serverInfo', 820 getter: 'les_serverInfo' 821 }), 822 ] 823 }); 824 ` 825 826 const VfluxJs = ` 827 web3._extend({ 828 property: 'vflux', 829 methods: 830 [ 831 new web3._extend.Method({ 832 name: 'distribution', 833 call: 'vflux_distribution', 834 params: 2 835 }), 836 new web3._extend.Method({ 837 name: 'timeout', 838 call: 'vflux_timeout', 839 params: 2 840 }), 841 new web3._extend.Method({ 842 name: 'value', 843 call: 'vflux_value', 844 params: 2 845 }), 846 ], 847 properties: 848 [ 849 new web3._extend.Property({ 850 name: 'requestStats', 851 getter: 'vflux_requestStats' 852 }), 853 ] 854 }); 855 `