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