github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/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 new web3._extend.Method({ 196 name: 'getMaxPeers', 197 call: 'admin_getMaxPeers' 198 }), 199 new web3._extend.Method({ 200 name: 'setMaxPeers', 201 call: 'admin_setMaxPeers', 202 params: 1 203 }), 204 new web3._extend.Method({ 205 name: 'getExecutionPoolSize', 206 call: 'admin_getExecutionPoolSize' 207 }), 208 new web3._extend.Method({ 209 name: 'getExecutionPoolRequestTimeout', 210 call: 'admin_getExecutionPoolRequestTimeout' 211 }), 212 // new web3._extend.Method({ 213 // name: 'setWSExecutionPoolRequestTimeout', 214 // call: 'admin_setWSExecutionPoolRequestTimeout', 215 // params: 1 216 // }), 217 // new web3._extend.Method({ 218 // name: 'setHttpExecutionPoolRequestTimeout', 219 // call: 'admin_setHttpExecutionPoolRequestTimeout', 220 // params: 1 221 // }), 222 new web3._extend.Method({ 223 name: 'setWSExecutionPoolSize', 224 call: 'admin_setWSExecutionPoolSize', 225 params: 1 226 }), 227 new web3._extend.Method({ 228 name: 'setHttpExecutionPoolSize', 229 call: 'admin_setHttpExecutionPoolSize', 230 }), 231 ], 232 properties: [ 233 new web3._extend.Property({ 234 name: 'nodeInfo', 235 getter: 'admin_nodeInfo' 236 }), 237 new web3._extend.Property({ 238 name: 'peers', 239 getter: 'admin_peers' 240 }), 241 new web3._extend.Property({ 242 name: 'datadir', 243 getter: 'admin_datadir' 244 }), 245 ] 246 }); 247 ` 248 249 const DebugJs = ` 250 web3._extend({ 251 property: 'debug', 252 methods: [ 253 new web3._extend.Method({ 254 name: 'accountRange', 255 call: 'debug_accountRange', 256 params: 6, 257 inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null, null, null, null], 258 }), 259 new web3._extend.Method({ 260 name: 'printBlock', 261 call: 'debug_printBlock', 262 params: 1, 263 outputFormatter: console.log 264 }), 265 new web3._extend.Method({ 266 name: 'getHeaderRlp', 267 call: 'debug_getHeaderRlp', 268 params: 1 269 }), 270 new web3._extend.Method({ 271 name: 'getBlockRlp', 272 call: 'debug_getBlockRlp', 273 params: 1 274 }), 275 new web3._extend.Method({ 276 name: 'testSignCliqueBlock', 277 call: 'debug_testSignCliqueBlock', 278 params: 2, 279 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null], 280 }), 281 new web3._extend.Method({ 282 name: 'setHead', 283 call: 'debug_setHead', 284 params: 1 285 }), 286 new web3._extend.Method({ 287 name: 'seedHash', 288 call: 'debug_seedHash', 289 params: 1 290 }), 291 new web3._extend.Method({ 292 name: 'dumpBlock', 293 call: 'debug_dumpBlock', 294 params: 1, 295 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 296 }), 297 new web3._extend.Method({ 298 name: 'chaindbProperty', 299 call: 'debug_chaindbProperty', 300 params: 1, 301 outputFormatter: console.log 302 }), 303 new web3._extend.Method({ 304 name: 'chaindbCompact', 305 call: 'debug_chaindbCompact', 306 }), 307 new web3._extend.Method({ 308 name: 'verbosity', 309 call: 'debug_verbosity', 310 params: 1 311 }), 312 new web3._extend.Method({ 313 name: 'vmodule', 314 call: 'debug_vmodule', 315 params: 1 316 }), 317 new web3._extend.Method({ 318 name: 'backtraceAt', 319 call: 'debug_backtraceAt', 320 params: 1, 321 }), 322 new web3._extend.Method({ 323 name: 'stacks', 324 call: 'debug_stacks', 325 params: 1, 326 inputFormatter: [null], 327 outputFormatter: console.log 328 }), 329 new web3._extend.Method({ 330 name: 'freeOSMemory', 331 call: 'debug_freeOSMemory', 332 params: 0, 333 }), 334 new web3._extend.Method({ 335 name: 'setGCPercent', 336 call: 'debug_setGCPercent', 337 params: 1, 338 }), 339 new web3._extend.Method({ 340 name: 'memStats', 341 call: 'debug_memStats', 342 params: 0, 343 }), 344 new web3._extend.Method({ 345 name: 'gcStats', 346 call: 'debug_gcStats', 347 params: 0, 348 }), 349 new web3._extend.Method({ 350 name: 'cpuProfile', 351 call: 'debug_cpuProfile', 352 params: 2 353 }), 354 new web3._extend.Method({ 355 name: 'startCPUProfile', 356 call: 'debug_startCPUProfile', 357 params: 1 358 }), 359 new web3._extend.Method({ 360 name: 'stopCPUProfile', 361 call: 'debug_stopCPUProfile', 362 params: 0 363 }), 364 new web3._extend.Method({ 365 name: 'goTrace', 366 call: 'debug_goTrace', 367 params: 2 368 }), 369 new web3._extend.Method({ 370 name: 'startGoTrace', 371 call: 'debug_startGoTrace', 372 params: 1 373 }), 374 new web3._extend.Method({ 375 name: 'stopGoTrace', 376 call: 'debug_stopGoTrace', 377 params: 0 378 }), 379 new web3._extend.Method({ 380 name: 'blockProfile', 381 call: 'debug_blockProfile', 382 params: 2 383 }), 384 new web3._extend.Method({ 385 name: 'setBlockProfileRate', 386 call: 'debug_setBlockProfileRate', 387 params: 1 388 }), 389 new web3._extend.Method({ 390 name: 'writeBlockProfile', 391 call: 'debug_writeBlockProfile', 392 params: 1 393 }), 394 new web3._extend.Method({ 395 name: 'mutexProfile', 396 call: 'debug_mutexProfile', 397 params: 2 398 }), 399 new web3._extend.Method({ 400 name: 'setMutexProfileFraction', 401 call: 'debug_setMutexProfileFraction', 402 params: 1 403 }), 404 new web3._extend.Method({ 405 name: 'writeMutexProfile', 406 call: 'debug_writeMutexProfile', 407 params: 1 408 }), 409 new web3._extend.Method({ 410 name: 'writeMemProfile', 411 call: 'debug_writeMemProfile', 412 params: 1 413 }), 414 new web3._extend.Method({ 415 name: 'traceBlock', 416 call: 'debug_traceBlock', 417 params: 2, 418 inputFormatter: [null, null] 419 }), 420 new web3._extend.Method({ 421 name: 'traceBlockFromFile', 422 call: 'debug_traceBlockFromFile', 423 params: 2, 424 inputFormatter: [null, null] 425 }), 426 new web3._extend.Method({ 427 name: 'traceBadBlock', 428 call: 'debug_traceBadBlock', 429 params: 1, 430 inputFormatter: [null] 431 }), 432 new web3._extend.Method({ 433 name: 'standardTraceBadBlockToFile', 434 call: 'debug_standardTraceBadBlockToFile', 435 params: 2, 436 inputFormatter: [null, null] 437 }), 438 new web3._extend.Method({ 439 name: 'intermediateRoots', 440 call: 'debug_intermediateRoots', 441 params: 2, 442 inputFormatter: [null, null] 443 }), 444 new web3._extend.Method({ 445 name: 'standardTraceBlockToFile', 446 call: 'debug_standardTraceBlockToFile', 447 params: 2, 448 inputFormatter: [null, null] 449 }), 450 new web3._extend.Method({ 451 name: 'traceBlockByNumber', 452 call: 'debug_traceBlockByNumber', 453 params: 2, 454 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, null] 455 }), 456 new web3._extend.Method({ 457 name: 'traceBlockByHash', 458 call: 'debug_traceBlockByHash', 459 params: 2, 460 inputFormatter: [null, null] 461 }), 462 new web3._extend.Method({ 463 name: 'traceTransaction', 464 call: 'debug_traceTransaction', 465 params: 2, 466 inputFormatter: [null, null] 467 }), 468 new web3._extend.Method({ 469 name: 'traceCall', 470 call: 'debug_traceCall', 471 params: 3, 472 inputFormatter: [null, null, null] 473 }), 474 new web3._extend.Method({ 475 name: 'preimage', 476 call: 'debug_preimage', 477 params: 1, 478 inputFormatter: [null] 479 }), 480 new web3._extend.Method({ 481 name: 'getBadBlocks', 482 call: 'debug_getBadBlocks', 483 params: 0, 484 }), 485 new web3._extend.Method({ 486 name: 'storageRangeAt', 487 call: 'debug_storageRangeAt', 488 params: 5, 489 }), 490 new web3._extend.Method({ 491 name: 'getModifiedAccountsByNumber', 492 call: 'debug_getModifiedAccountsByNumber', 493 params: 2, 494 inputFormatter: [null, null], 495 }), 496 new web3._extend.Method({ 497 name: 'getModifiedAccountsByHash', 498 call: 'debug_getModifiedAccountsByHash', 499 params: 2, 500 inputFormatter:[null, null], 501 }), 502 new web3._extend.Method({ 503 name: 'freezeClient', 504 call: 'debug_freezeClient', 505 params: 1, 506 }), 507 new web3._extend.Method({ 508 name: 'getAccessibleState', 509 call: 'debug_getAccessibleState', 510 params: 2, 511 inputFormatter:[web3._extend.formatters.inputBlockNumberFormatter, web3._extend.formatters.inputBlockNumberFormatter], 512 }), 513 new web3._extend.Method({ 514 name: 'getCheckpointWhitelist', 515 call: 'debug_getCheckpointWhitelist', 516 params: 0, 517 }), 518 new web3._extend.Method({ 519 name: 'purgeCheckpointWhitelist', 520 call: 'debug_purgeCheckpointWhitelist', 521 params: 0, 522 }), 523 new web3._extend.Method({ 524 name: 'getTraceStack', 525 call: 'debug_getTraceStack', 526 params: 0, 527 }), 528 ], 529 properties: [] 530 }); 531 ` 532 533 const EthJs = ` 534 web3._extend({ 535 property: 'eth', 536 methods: [ 537 new web3._extend.Method({ 538 name: 'getTransactionReceiptsByBlock', 539 call: 'eth_getTransactionReceiptsByBlock', 540 params: 1 541 }), 542 new web3._extend.Method({ 543 name: 'chainId', 544 call: 'eth_chainId', 545 params: 0 546 }), 547 new web3._extend.Method({ 548 name: 'sign', 549 call: 'eth_sign', 550 params: 2, 551 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null] 552 }), 553 new web3._extend.Method({ 554 name: 'resend', 555 call: 'eth_resend', 556 params: 3, 557 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal] 558 }), 559 new web3._extend.Method({ 560 name: 'signTransaction', 561 call: 'eth_signTransaction', 562 params: 1, 563 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 564 }), 565 new web3._extend.Method({ 566 name: 'estimateGas', 567 call: 'eth_estimateGas', 568 params: 2, 569 inputFormatter: [web3._extend.formatters.inputCallFormatter, web3._extend.formatters.inputBlockNumberFormatter], 570 outputFormatter: web3._extend.utils.toDecimal 571 }), 572 new web3._extend.Method({ 573 name: 'submitTransaction', 574 call: 'eth_submitTransaction', 575 params: 1, 576 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 577 }), 578 new web3._extend.Method({ 579 name: 'fillTransaction', 580 call: 'eth_fillTransaction', 581 params: 1, 582 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 583 }), 584 new web3._extend.Method({ 585 name: 'getHeaderByNumber', 586 call: 'eth_getHeaderByNumber', 587 params: 1, 588 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 589 }), 590 new web3._extend.Method({ 591 name: 'getHeaderByHash', 592 call: 'eth_getHeaderByHash', 593 params: 1 594 }), 595 new web3._extend.Method({ 596 name: 'getBlockByNumber', 597 call: 'eth_getBlockByNumber', 598 params: 2, 599 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, function (val) { return !!val; }] 600 }), 601 new web3._extend.Method({ 602 name: 'getBlockByHash', 603 call: 'eth_getBlockByHash', 604 params: 2, 605 inputFormatter: [null, function (val) { return !!val; }] 606 }), 607 new web3._extend.Method({ 608 name: 'getRawTransaction', 609 call: 'eth_getRawTransactionByHash', 610 params: 1 611 }), 612 new web3._extend.Method({ 613 name: 'getRawTransactionFromBlock', 614 call: function(args) { 615 return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getRawTransactionByBlockHashAndIndex' : 'eth_getRawTransactionByBlockNumberAndIndex'; 616 }, 617 params: 2, 618 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex] 619 }), 620 new web3._extend.Method({ 621 name: 'getProof', 622 call: 'eth_getProof', 623 params: 3, 624 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputBlockNumberFormatter] 625 }), 626 new web3._extend.Method({ 627 name: 'createAccessList', 628 call: 'eth_createAccessList', 629 params: 2, 630 inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter], 631 }), 632 new web3._extend.Method({ 633 name: 'feeHistory', 634 call: 'eth_feeHistory', 635 params: 3, 636 inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter, null] 637 }), 638 new web3._extend.Method({ 639 name: 'getLogs', 640 call: 'eth_getLogs', 641 params: 1, 642 }), 643 ], 644 properties: [ 645 new web3._extend.Property({ 646 name: 'pendingTransactions', 647 getter: 'eth_pendingTransactions', 648 outputFormatter: function(txs) { 649 var formatted = []; 650 for (var i = 0; i < txs.length; i++) { 651 formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i])); 652 formatted[i].blockHash = null; 653 } 654 return formatted; 655 } 656 }), 657 new web3._extend.Property({ 658 name: 'maxPriorityFeePerGas', 659 getter: 'eth_maxPriorityFeePerGas', 660 outputFormatter: web3._extend.utils.toBigNumber 661 }), 662 ] 663 }); 664 ` 665 666 const MinerJs = ` 667 web3._extend({ 668 property: 'miner', 669 methods: [ 670 new web3._extend.Method({ 671 name: 'start', 672 call: 'miner_start', 673 params: 1, 674 inputFormatter: [null] 675 }), 676 new web3._extend.Method({ 677 name: 'stop', 678 call: 'miner_stop' 679 }), 680 new web3._extend.Method({ 681 name: 'setEtherbase', 682 call: 'miner_setEtherbase', 683 params: 1, 684 inputFormatter: [web3._extend.formatters.inputAddressFormatter] 685 }), 686 new web3._extend.Method({ 687 name: 'setExtra', 688 call: 'miner_setExtra', 689 params: 1 690 }), 691 new web3._extend.Method({ 692 name: 'setGasPrice', 693 call: 'miner_setGasPrice', 694 params: 1, 695 inputFormatter: [web3._extend.utils.fromDecimal] 696 }), 697 new web3._extend.Method({ 698 name: 'setGasLimit', 699 call: 'miner_setGasLimit', 700 params: 1, 701 inputFormatter: [web3._extend.utils.fromDecimal] 702 }), 703 new web3._extend.Method({ 704 name: 'setRecommitInterval', 705 call: 'miner_setRecommitInterval', 706 params: 1, 707 }), 708 new web3._extend.Method({ 709 name: 'getHashrate', 710 call: 'miner_getHashrate' 711 }), 712 ], 713 properties: [] 714 }); 715 ` 716 717 const NetJs = ` 718 web3._extend({ 719 property: 'net', 720 methods: [], 721 properties: [ 722 new web3._extend.Property({ 723 name: 'version', 724 getter: 'net_version' 725 }), 726 ] 727 }); 728 ` 729 730 const PersonalJs = ` 731 web3._extend({ 732 property: 'personal', 733 methods: [ 734 new web3._extend.Method({ 735 name: 'importRawKey', 736 call: 'personal_importRawKey', 737 params: 2 738 }), 739 new web3._extend.Method({ 740 name: 'sign', 741 call: 'personal_sign', 742 params: 3, 743 inputFormatter: [null, web3._extend.formatters.inputAddressFormatter, null] 744 }), 745 new web3._extend.Method({ 746 name: 'ecRecover', 747 call: 'personal_ecRecover', 748 params: 2 749 }), 750 new web3._extend.Method({ 751 name: 'openWallet', 752 call: 'personal_openWallet', 753 params: 2 754 }), 755 new web3._extend.Method({ 756 name: 'deriveAccount', 757 call: 'personal_deriveAccount', 758 params: 3 759 }), 760 new web3._extend.Method({ 761 name: 'signTransaction', 762 call: 'personal_signTransaction', 763 params: 2, 764 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null] 765 }), 766 new web3._extend.Method({ 767 name: 'unpair', 768 call: 'personal_unpair', 769 params: 2 770 }), 771 new web3._extend.Method({ 772 name: 'initializeWallet', 773 call: 'personal_initializeWallet', 774 params: 1 775 }) 776 ], 777 properties: [ 778 new web3._extend.Property({ 779 name: 'listWallets', 780 getter: 'personal_listWallets' 781 }), 782 ] 783 }) 784 ` 785 786 const RpcJs = ` 787 web3._extend({ 788 property: 'rpc', 789 methods: [], 790 properties: [ 791 new web3._extend.Property({ 792 name: 'modules', 793 getter: 'rpc_modules' 794 }), 795 ] 796 }); 797 ` 798 799 const TxpoolJs = ` 800 web3._extend({ 801 property: 'txpool', 802 methods: [], 803 properties: 804 [ 805 new web3._extend.Property({ 806 name: 'content', 807 getter: 'txpool_content' 808 }), 809 new web3._extend.Property({ 810 name: 'inspect', 811 getter: 'txpool_inspect' 812 }), 813 new web3._extend.Property({ 814 name: 'status', 815 getter: 'txpool_status', 816 outputFormatter: function(status) { 817 status.pending = web3._extend.utils.toDecimal(status.pending); 818 status.queued = web3._extend.utils.toDecimal(status.queued); 819 return status; 820 } 821 }), 822 new web3._extend.Method({ 823 name: 'contentFrom', 824 call: 'txpool_contentFrom', 825 params: 1, 826 }), 827 ] 828 }); 829 ` 830 831 const LESJs = ` 832 web3._extend({ 833 property: 'les', 834 methods: 835 [ 836 new web3._extend.Method({ 837 name: 'getCheckpoint', 838 call: 'les_getCheckpoint', 839 params: 1 840 }), 841 new web3._extend.Method({ 842 name: 'clientInfo', 843 call: 'les_clientInfo', 844 params: 1 845 }), 846 new web3._extend.Method({ 847 name: 'priorityClientInfo', 848 call: 'les_priorityClientInfo', 849 params: 3 850 }), 851 new web3._extend.Method({ 852 name: 'setClientParams', 853 call: 'les_setClientParams', 854 params: 2 855 }), 856 new web3._extend.Method({ 857 name: 'setDefaultParams', 858 call: 'les_setDefaultParams', 859 params: 1 860 }), 861 new web3._extend.Method({ 862 name: 'addBalance', 863 call: 'les_addBalance', 864 params: 2 865 }), 866 ], 867 properties: 868 [ 869 new web3._extend.Property({ 870 name: 'latestCheckpoint', 871 getter: 'les_latestCheckpoint' 872 }), 873 new web3._extend.Property({ 874 name: 'checkpointContractAddress', 875 getter: 'les_getCheckpointContractAddress' 876 }), 877 new web3._extend.Property({ 878 name: 'serverInfo', 879 getter: 'les_serverInfo' 880 }), 881 ] 882 }); 883 ` 884 885 const VfluxJs = ` 886 web3._extend({ 887 property: 'vflux', 888 methods: 889 [ 890 new web3._extend.Method({ 891 name: 'distribution', 892 call: 'vflux_distribution', 893 params: 2 894 }), 895 new web3._extend.Method({ 896 name: 'timeout', 897 call: 'vflux_timeout', 898 params: 2 899 }), 900 new web3._extend.Method({ 901 name: 'value', 902 call: 'vflux_value', 903 params: 2 904 }), 905 ], 906 properties: 907 [ 908 new web3._extend.Property({ 909 name: 'requestStats', 910 getter: 'vflux_requestStats' 911 }), 912 ] 913 }); 914 `