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