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