github.com/codingfuture/orig-energi3@v0.8.4/internal/web3ext/web3ext.go (about) 1 // Copyright 2018 The Energi Core Authors 2 // Copyright 2015 The go-ethereum Authors 3 // This file is part of the Energi Core library. 4 // 5 // The Energi Core library is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Lesser General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // The Energi Core library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public License 16 // along with the Energi Core library. If not, see <http://www.gnu.org/licenses/>. 17 18 // package web3ext contains geth specific web3.js extensions. 19 package web3ext 20 21 var Modules = map[string]string{ 22 "accounting": Accounting_JS, 23 "admin": Admin_JS, 24 //"chequebook": Chequebook_JS, 25 //"clique": Clique_JS, 26 "energi": Energi_JS, 27 //"ethash": Ethash_JS, 28 "debug": Debug_JS, 29 "eth": Eth_JS, 30 "masternode": Masternode_JS, 31 "miner": Miner_JS, 32 "net": Net_JS, 33 "personal": Personal_JS, 34 "rpc": RPC_JS, 35 "shh": Shh_JS, 36 "swarmfs": SWARMFS_JS, 37 "txpool": TxPool_JS, 38 } 39 40 const Chequebook_JS = ` 41 web3._extend({ 42 property: 'chequebook', 43 methods: [ 44 new web3._extend.Method({ 45 name: 'deposit', 46 call: 'chequebook_deposit', 47 params: 1, 48 inputFormatter: [null] 49 }), 50 new web3._extend.Property({ 51 name: 'balance', 52 getter: 'chequebook_balance', 53 outputFormatter: web3._extend.utils.toDecimal 54 }), 55 new web3._extend.Method({ 56 name: 'cash', 57 call: 'chequebook_cash', 58 params: 1, 59 inputFormatter: [null] 60 }), 61 new web3._extend.Method({ 62 name: 'issue', 63 call: 'chequebook_issue', 64 params: 2, 65 inputFormatter: [null, null] 66 }), 67 ] 68 }); 69 ` 70 71 const Clique_JS = ` 72 web3._extend({ 73 property: 'clique', 74 methods: [ 75 new web3._extend.Method({ 76 name: 'getSnapshot', 77 call: 'clique_getSnapshot', 78 params: 1, 79 inputFormatter: [null] 80 }), 81 new web3._extend.Method({ 82 name: 'getSnapshotAtHash', 83 call: 'clique_getSnapshotAtHash', 84 params: 1 85 }), 86 new web3._extend.Method({ 87 name: 'getSigners', 88 call: 'clique_getSigners', 89 params: 1, 90 inputFormatter: [null] 91 }), 92 new web3._extend.Method({ 93 name: 'getSignersAtHash', 94 call: 'clique_getSignersAtHash', 95 params: 1 96 }), 97 new web3._extend.Method({ 98 name: 'propose', 99 call: 'clique_propose', 100 params: 2 101 }), 102 new web3._extend.Method({ 103 name: 'discard', 104 call: 'clique_discard', 105 params: 1 106 }), 107 ], 108 properties: [ 109 new web3._extend.Property({ 110 name: 'proposals', 111 getter: 'clique_proposals' 112 }), 113 ] 114 }); 115 ` 116 117 const Energi_JS = ` 118 web3._extend.formatters.outputProposalFormatter = function(item){ 119 var toDecimal = web3._extend.utils.toDecimal; 120 return { 121 proposal: item.Proposal, 122 proposer: item.Proposer, 123 createdBlock: item.CreatedBlock, 124 deadline: item.Deadline, 125 quorumWeight: toDecimal(item.QuorumWeight), 126 totalWeight: toDecimal(item.TotalWeight), 127 rejectWeight: toDecimal(item.RejectWeight), 128 acceptWeight: toDecimal(item.AcceptWeight), 129 finished: item.Finished, 130 accepted: item.Accepted, 131 balance: toDecimal(item.Balance), 132 }; 133 }; 134 135 web3._extend.formatters.coinSearchFormatter = function(list){ 136 var toDecimal = web3._extend.utils.toDecimal; 137 for (var i = 0; i < list.length; ++i) { 138 var item = list[i]; 139 item.Amount = toDecimal(item.Amount); 140 } 141 return list; 142 }; 143 144 web3._extend({ 145 property: 'energi', 146 methods: [ 147 // Migration 148 new web3._extend.Method({ 149 name: 'listGen2Coins', 150 call: 'energi_listGen2Coins', 151 params: 0, 152 outputFormatter: web3._extend.formatters.coinSearchFormatter, 153 }), 154 new web3._extend.Method({ 155 name: 'searchGen2Coins', 156 call: 'energi_searchGen2Coins', 157 params: 2, 158 outputFormatter: web3._extend.formatters.coinSearchFormatter, 159 }), 160 new web3._extend.Method({ 161 name: 'searchRawGen2Coins', 162 call: 'energi_searchRawGen2Coins', 163 params: 2, 164 outputFormatter: web3._extend.formatters.coinSearchFormatter, 165 }), 166 new web3._extend.Method({ 167 name: 'claimGen2CoinsDirect', 168 call: 'energi_claimGen2CoinsDirect', 169 params: 3, 170 outputFormatter: console.log 171 }), 172 new web3._extend.Method({ 173 name: 'claimGen2CoinsCombined', 174 call: 'energi_claimGen2CoinsCombined', 175 params: 3 176 }), 177 new web3._extend.Method({ 178 name: 'claimGen2CoinsImport', 179 call: 'energi_claimGen2CoinsImport', 180 params: 2 181 }), 182 183 // Blacklist 184 new web3._extend.Method({ 185 name: 'blacklistInfo', 186 call: 'energi_blacklistInfo', 187 params: 0 188 outputFormatter: function(list) { 189 var res = []; 190 var proposalf = web3._extend.formatters.outputProposalFormatter; 191 for (var i = 0; i < list.length; ++i) { 192 var item = list[i]; 193 res.push({ 194 target: item.Target, 195 enforce: proposalf(item.Enforce), 196 revoke: item.Revoke && proposalf(item.Revoke), 197 drain: item.Drain && proposalf(item.Drain), 198 blocked: item.Blocked, 199 }); 200 } 201 return res; 202 }, 203 }), 204 new web3._extend.Method({ 205 name: 'blacklistEnforce', 206 call: 'energi_blacklistEnforce', 207 params: 4 208 inputFormatter: [ 209 web3._extend.formatters.inputAddressFormatter, 210 web3._extend.utils.fromDecimal, 211 web3._extend.formatters.inputAddressFormatter, 212 null, 213 ], 214 outputFormatter: console.log, 215 }), 216 new web3._extend.Method({ 217 name: 'blacklistRevoke', 218 call: 'energi_blacklistRevoke', 219 params: 4 220 inputFormatter: [ 221 web3._extend.formatters.inputAddressFormatter, 222 web3._extend.utils.fromDecimal, 223 web3._extend.formatters.inputAddressFormatter, 224 null, 225 ], 226 outputFormatter: console.log, 227 }), 228 new web3._extend.Method({ 229 name: 'blacklistDrain', 230 call: 'energi_blacklistDrain', 231 params: 4 232 inputFormatter: [ 233 web3._extend.formatters.inputAddressFormatter, 234 web3._extend.utils.fromDecimal, 235 web3._extend.formatters.inputAddressFormatter, 236 null, 237 ], 238 outputFormatter: console.log, 239 }), 240 new web3._extend.Method({ 241 name: 'blacklistCollect', 242 call: 'energi_blacklistCollect', 243 params: 3 244 inputFormatter: [ 245 web3._extend.formatters.inputAddressFormatter, 246 web3._extend.formatters.inputAddressFormatter, 247 null, 248 ], 249 outputFormatter: console.log, 250 }), 251 252 // Governance 253 new web3._extend.Method({ 254 name: 'voteAccept', 255 call: 'energi_voteAccept', 256 params: 3 257 inputFormatter: [ 258 web3._extend.formatters.inputAddressFormatter, 259 web3._extend.formatters.inputAddressFormatter, 260 null, 261 ], 262 outputFormatter: console.log, 263 }), 264 new web3._extend.Method({ 265 name: 'voteReject', 266 call: 'energi_voteReject', 267 params: 3 268 inputFormatter: [ 269 web3._extend.formatters.inputAddressFormatter, 270 web3._extend.formatters.inputAddressFormatter, 271 null, 272 ], 273 outputFormatter: console.log, 274 }), 275 new web3._extend.Method({ 276 name: 'withdrawFee', 277 call: 'energi_withdrawFee', 278 params: 3 279 inputFormatter: [ 280 web3._extend.formatters.inputAddressFormatter, 281 web3._extend.formatters.inputAddressFormatter, 282 null, 283 ], 284 outputFormatter: console.log, 285 }), 286 287 // Governance upgrades 288 new web3._extend.Method({ 289 name: 'upgradeInfo', 290 call: 'energi_upgradeInfo', 291 params: 0 292 outputFormatter: function(status) { 293 var res = {}; 294 var proposalf = web3._extend.formatters.outputProposalFormatter; 295 var keys = Object.keys(status); 296 for (var i = 0; i < keys.length; ++i) { 297 var k = keys[i]; 298 var items = status[k]; 299 var res_items = res[k] = []; 300 301 for (var j = 0; j < items.length; ++j) { 302 var item = items[j]; 303 var res_item = proposalf(item); 304 res_item.impl = item.Impl; 305 res_item.proxy = item.Proxy; 306 res_items.push(res_item); 307 } 308 } 309 return res; 310 }, 311 }), 312 new web3._extend.Method({ 313 name: 'upgradePropose', 314 call: 'energi_upgradePropose', 315 params: 6 316 inputFormatter: [ 317 web3._extend.formatters.inputAddressFormatter, 318 web3._extend.formatters.inputAddressFormatter, 319 null, 320 web3._extend.utils.fromDecimal, 321 web3._extend.formatters.inputAddressFormatter, 322 null, 323 ], 324 outputFormatter: console.log, 325 }), 326 new web3._extend.Method({ 327 name: 'upgradePerform', 328 call: 'energi_upgradePerform', 329 params: 4 330 inputFormatter: [ 331 web3._extend.formatters.inputAddressFormatter, 332 web3._extend.formatters.inputAddressFormatter, 333 web3._extend.formatters.inputAddressFormatter, 334 null, 335 ], 336 outputFormatter: console.log, 337 }), 338 new web3._extend.Method({ 339 name: 'upgradeCollect', 340 call: 'energi_upgradeCollect', 341 params: 4 342 inputFormatter: [ 343 web3._extend.formatters.inputAddressFormatter, 344 web3._extend.formatters.inputAddressFormatter, 345 web3._extend.formatters.inputAddressFormatter, 346 null, 347 ], 348 outputFormatter: console.log, 349 }), 350 351 // Governance budget 352 new web3._extend.Method({ 353 name: 'budgetInfo', 354 call: 'energi_budgetInfo', 355 params: 0 356 outputFormatter: function(status) { 357 var proposals = []; 358 var toDecimal = web3._extend.utils.toDecimal; 359 var res = { 360 balance: toDecimal(status.Balance), 361 proposals: proposals, 362 }; 363 var proposalf = web3._extend.formatters.outputProposalFormatter; 364 var raw_proposals = status.Proposals; 365 for (var i = 0; i < raw_proposals.length; ++i) { 366 var raw_item = raw_proposals[i]; 367 var item = proposalf(raw_item); 368 item.proposedAmount = toDecimal(raw_item.ProposedAmount); 369 item.paidAmount = toDecimal(raw_item.PaidAmount); 370 item.refUUID = raw_item.RefUUID; 371 proposals.push(item); 372 } 373 return res; 374 }, 375 }), 376 new web3._extend.Method({ 377 name: 'budgetPropose', 378 call: 'energi_budgetPropose', 379 params: 6 380 inputFormatter: [ 381 web3._extend.utils.fromDecimal, 382 null, 383 null, 384 web3._extend.utils.fromDecimal, 385 web3._extend.formatters.inputAddressFormatter, 386 null, 387 ], 388 outputFormatter: console.log, 389 }), 390 391 // Checkpoints 392 new web3._extend.Method({ 393 name: 'checkpointInfo', 394 call: 'energi_checkpointInfo', 395 params: 0 396 outputFormatter: function(status) { 397 var res = { 398 registry: [], 399 active: [], 400 }; 401 var cpinfo = function(cp) { 402 return { 403 number: cp.Number, 404 hash: cp.Hash, 405 since: cp.Since, 406 sigCount: cp.SigCount, 407 }; 408 }; 409 var raw_registry = status.Registry; 410 for (var i = 0; i < raw_registry.length; ++i) { 411 var raw_item = raw_registry[i]; 412 res.registry.push(cpinfo(raw_registry[i])); 413 } 414 var raw_active = status.Active; 415 for (var i = 0; i < raw_active.length; ++i) { 416 var raw_item = raw_active[i]; 417 res.active.push(cpinfo(raw_active[i])); 418 } 419 return res; 420 }, 421 }), 422 new web3._extend.Method({ 423 name: 'checkpointPropose', 424 call: 'energi_checkpointPropose', 425 params: 3 426 inputFormatter: [ 427 null, 428 null, 429 null, 430 ], 431 outputFormatter: console.log, 432 }), 433 ], 434 properties: [ 435 ] 436 }); 437 ` 438 439 const Ethash_JS = ` 440 web3._extend({ 441 property: 'ethash', 442 methods: [ 443 new web3._extend.Method({ 444 name: 'getWork', 445 call: 'ethash_getWork', 446 params: 0 447 }), 448 new web3._extend.Method({ 449 name: 'getHashrate', 450 call: 'ethash_getHashrate', 451 params: 0 452 }), 453 new web3._extend.Method({ 454 name: 'submitWork', 455 call: 'ethash_submitWork', 456 params: 3, 457 }), 458 new web3._extend.Method({ 459 name: 'submitHashRate', 460 call: 'ethash_submitHashRate', 461 params: 2, 462 }), 463 ] 464 }); 465 ` 466 467 const Admin_JS = ` 468 web3._extend({ 469 property: 'admin', 470 methods: [ 471 new web3._extend.Method({ 472 name: 'addPeer', 473 call: 'admin_addPeer', 474 params: 1 475 }), 476 new web3._extend.Method({ 477 name: 'removePeer', 478 call: 'admin_removePeer', 479 params: 1 480 }), 481 new web3._extend.Method({ 482 name: 'addTrustedPeer', 483 call: 'admin_addTrustedPeer', 484 params: 1 485 }), 486 new web3._extend.Method({ 487 name: 'removeTrustedPeer', 488 call: 'admin_removeTrustedPeer', 489 params: 1 490 }), 491 new web3._extend.Method({ 492 name: 'exportChain', 493 call: 'admin_exportChain', 494 params: 1, 495 inputFormatter: [null] 496 }), 497 new web3._extend.Method({ 498 name: 'importChain', 499 call: 'admin_importChain', 500 params: 1 501 }), 502 new web3._extend.Method({ 503 name: 'sleepBlocks', 504 call: 'admin_sleepBlocks', 505 params: 2 506 }), 507 new web3._extend.Method({ 508 name: 'startRPC', 509 call: 'admin_startRPC', 510 params: 4, 511 inputFormatter: [null, null, null, null] 512 }), 513 new web3._extend.Method({ 514 name: 'stopRPC', 515 call: 'admin_stopRPC' 516 }), 517 new web3._extend.Method({ 518 name: 'startWS', 519 call: 'admin_startWS', 520 params: 4, 521 inputFormatter: [null, null, null, null] 522 }), 523 new web3._extend.Method({ 524 name: 'stopWS', 525 call: 'admin_stopWS' 526 }), 527 new web3._extend.Method({ 528 name: 'checkpointLocal', 529 call: 'admin_checkpointLocal', 530 params: 2 531 inputFormatter: [ 532 null, 533 null, 534 ], 535 outputFormatter: console.log, 536 }), 537 ], 538 properties: [ 539 new web3._extend.Property({ 540 name: 'nodeInfo', 541 getter: 'admin_nodeInfo' 542 }), 543 new web3._extend.Property({ 544 name: 'peers', 545 getter: 'admin_peers' 546 }), 547 new web3._extend.Property({ 548 name: 'datadir', 549 getter: 'admin_datadir' 550 }), 551 ] 552 }); 553 ` 554 555 const Debug_JS = ` 556 web3._extend({ 557 property: 'debug', 558 methods: [ 559 new web3._extend.Method({ 560 name: 'printBlock', 561 call: 'debug_printBlock', 562 params: 1 563 }), 564 new web3._extend.Method({ 565 name: 'getBlockRlp', 566 call: 'debug_getBlockRlp', 567 params: 1 568 }), 569 new web3._extend.Method({ 570 name: 'setHead', 571 call: 'debug_setHead', 572 params: 1 573 }), 574 new web3._extend.Method({ 575 name: 'seedHash', 576 call: 'debug_seedHash', 577 params: 1 578 }), 579 new web3._extend.Method({ 580 name: 'dumpBlock', 581 call: 'debug_dumpBlock', 582 params: 1 583 }), 584 new web3._extend.Method({ 585 name: 'chaindbProperty', 586 call: 'debug_chaindbProperty', 587 params: 1, 588 outputFormatter: console.log 589 }), 590 new web3._extend.Method({ 591 name: 'chaindbCompact', 592 call: 'debug_chaindbCompact', 593 }), 594 new web3._extend.Method({ 595 name: 'metrics', 596 call: 'debug_metrics', 597 params: 1 598 }), 599 new web3._extend.Method({ 600 name: 'verbosity', 601 call: 'debug_verbosity', 602 params: 1 603 }), 604 new web3._extend.Method({ 605 name: 'vmodule', 606 call: 'debug_vmodule', 607 params: 1 608 }), 609 new web3._extend.Method({ 610 name: 'backtraceAt', 611 call: 'debug_backtraceAt', 612 params: 1, 613 }), 614 new web3._extend.Method({ 615 name: 'stacks', 616 call: 'debug_stacks', 617 params: 0, 618 outputFormatter: console.log 619 }), 620 new web3._extend.Method({ 621 name: 'freeOSMemory', 622 call: 'debug_freeOSMemory', 623 params: 0, 624 }), 625 new web3._extend.Method({ 626 name: 'setGCPercent', 627 call: 'debug_setGCPercent', 628 params: 1, 629 }), 630 new web3._extend.Method({ 631 name: 'memStats', 632 call: 'debug_memStats', 633 params: 0, 634 }), 635 new web3._extend.Method({ 636 name: 'gcStats', 637 call: 'debug_gcStats', 638 params: 0, 639 }), 640 new web3._extend.Method({ 641 name: 'cpuProfile', 642 call: 'debug_cpuProfile', 643 params: 2 644 }), 645 new web3._extend.Method({ 646 name: 'startCPUProfile', 647 call: 'debug_startCPUProfile', 648 params: 1 649 }), 650 new web3._extend.Method({ 651 name: 'stopCPUProfile', 652 call: 'debug_stopCPUProfile', 653 params: 0 654 }), 655 new web3._extend.Method({ 656 name: 'goTrace', 657 call: 'debug_goTrace', 658 params: 2 659 }), 660 new web3._extend.Method({ 661 name: 'startGoTrace', 662 call: 'debug_startGoTrace', 663 params: 1 664 }), 665 new web3._extend.Method({ 666 name: 'stopGoTrace', 667 call: 'debug_stopGoTrace', 668 params: 0 669 }), 670 new web3._extend.Method({ 671 name: 'blockProfile', 672 call: 'debug_blockProfile', 673 params: 2 674 }), 675 new web3._extend.Method({ 676 name: 'setBlockProfileRate', 677 call: 'debug_setBlockProfileRate', 678 params: 1 679 }), 680 new web3._extend.Method({ 681 name: 'writeBlockProfile', 682 call: 'debug_writeBlockProfile', 683 params: 1 684 }), 685 new web3._extend.Method({ 686 name: 'mutexProfile', 687 call: 'debug_mutexProfile', 688 params: 2 689 }), 690 new web3._extend.Method({ 691 name: 'setMutexProfileFraction', 692 call: 'debug_setMutexProfileFraction', 693 params: 1 694 }), 695 new web3._extend.Method({ 696 name: 'writeMutexProfile', 697 call: 'debug_writeMutexProfile', 698 params: 1 699 }), 700 new web3._extend.Method({ 701 name: 'writeMemProfile', 702 call: 'debug_writeMemProfile', 703 params: 1 704 }), 705 new web3._extend.Method({ 706 name: 'traceBlock', 707 call: 'debug_traceBlock', 708 params: 2, 709 inputFormatter: [null, null] 710 }), 711 new web3._extend.Method({ 712 name: 'traceBlockFromFile', 713 call: 'debug_traceBlockFromFile', 714 params: 2, 715 inputFormatter: [null, null] 716 }), 717 new web3._extend.Method({ 718 name: 'traceBadBlock', 719 call: 'debug_traceBadBlock', 720 params: 1, 721 inputFormatter: [null] 722 }), 723 new web3._extend.Method({ 724 name: 'standardTraceBadBlockToFile', 725 call: 'debug_standardTraceBadBlockToFile', 726 params: 2, 727 inputFormatter: [null, null] 728 }), 729 new web3._extend.Method({ 730 name: 'standardTraceBlockToFile', 731 call: 'debug_standardTraceBlockToFile', 732 params: 2, 733 inputFormatter: [null, null] 734 }), 735 new web3._extend.Method({ 736 name: 'traceBlockByNumber', 737 call: 'debug_traceBlockByNumber', 738 params: 2, 739 inputFormatter: [null, null] 740 }), 741 new web3._extend.Method({ 742 name: 'traceBlockByHash', 743 call: 'debug_traceBlockByHash', 744 params: 2, 745 inputFormatter: [null, null] 746 }), 747 new web3._extend.Method({ 748 name: 'traceTransaction', 749 call: 'debug_traceTransaction', 750 params: 2, 751 inputFormatter: [null, null] 752 }), 753 new web3._extend.Method({ 754 name: 'preimage', 755 call: 'debug_preimage', 756 params: 1, 757 inputFormatter: [null] 758 }), 759 new web3._extend.Method({ 760 name: 'getBadBlocks', 761 call: 'debug_getBadBlocks', 762 params: 0, 763 }), 764 new web3._extend.Method({ 765 name: 'storageRangeAt', 766 call: 'debug_storageRangeAt', 767 params: 5, 768 }), 769 new web3._extend.Method({ 770 name: 'getModifiedAccountsByNumber', 771 call: 'debug_getModifiedAccountsByNumber', 772 params: 2, 773 inputFormatter: [null, null], 774 }), 775 new web3._extend.Method({ 776 name: 'getModifiedAccountsByHash', 777 call: 'debug_getModifiedAccountsByHash', 778 params: 2, 779 inputFormatter:[null, null], 780 }), 781 ], 782 properties: [] 783 }); 784 ` 785 786 const Eth_JS = ` 787 web3._extend({ 788 property: 'eth', 789 methods: [ 790 new web3._extend.Method({ 791 name: 'chainId', 792 call: 'eth_chainId', 793 params: 0 794 }), 795 new web3._extend.Method({ 796 name: 'sign', 797 call: 'eth_sign', 798 params: 2, 799 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null] 800 }), 801 new web3._extend.Method({ 802 name: 'resend', 803 call: 'eth_resend', 804 params: 3, 805 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal] 806 }), 807 new web3._extend.Method({ 808 name: 'signTransaction', 809 call: 'eth_signTransaction', 810 params: 1, 811 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 812 }), 813 new web3._extend.Method({ 814 name: 'submitTransaction', 815 call: 'eth_submitTransaction', 816 params: 1, 817 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 818 }), 819 new web3._extend.Method({ 820 name: 'getRawTransaction', 821 call: 'eth_getRawTransactionByHash', 822 params: 1 823 }), 824 new web3._extend.Method({ 825 name: 'getRawTransactionFromBlock', 826 call: function(args) { 827 return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getRawTransactionByBlockHashAndIndex' : 'eth_getRawTransactionByBlockNumberAndIndex'; 828 }, 829 params: 2, 830 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex] 831 }), 832 new web3._extend.Method({ 833 name: 'getProof', 834 call: 'eth_getProof', 835 params: 3, 836 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputBlockNumberFormatter] 837 }), 838 ], 839 properties: [ 840 new web3._extend.Property({ 841 name: 'pendingTransactions', 842 getter: 'eth_pendingTransactions', 843 outputFormatter: function(txs) { 844 var formatted = []; 845 for (var i = 0; i < txs.length; i++) { 846 formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i])); 847 formatted[i].blockHash = null; 848 } 849 return formatted; 850 } 851 }), 852 ] 853 }); 854 ` 855 856 const Masternode_JS = ` 857 web3._extend.formatters.outputMasternodeFormatter = function(item){ 858 return { 859 masternode: item.Masternode, 860 owner: item.Owner, 861 enode: item.Enode, 862 collateral: web3._extend.utils.toDecimal(item.Collateral), 863 announcedBlock: item.AnnouncedBlock, 864 isActive: item.IsActive, 865 isAlive: item.IsAlive, 866 swFeatures: item.SWFeatures, 867 swVersion: item.SWVersion, 868 }; 869 }; 870 871 web3._extend({ 872 property: 'masternode', 873 methods: [ 874 new web3._extend.Method({ 875 name: 'collateralBalance', 876 call: 'masternode_collateralBalance', 877 params: 1, 878 inputFormatter: [web3._extend.formatters.inputAddressFormatter], 879 outputFormatter: function(status) { 880 return { 881 balance: web3._extend.utils.toDecimal(status.Balance), 882 lastBlock: web3._extend.utils.toDecimal(status.LastBlock), 883 }; 884 } 885 }), 886 new web3._extend.Method({ 887 name: 'depositCollateral', 888 call: 'masternode_depositCollateral', 889 params: 3, 890 inputFormatter: [ 891 web3._extend.formatters.inputAddressFormatter, 892 web3._extend.utils.fromDecimal, 893 null, 894 ], 895 outputFormatter: console.log, 896 }), 897 new web3._extend.Method({ 898 name: 'withdrawCollateral', 899 call: 'masternode_withdrawCollateral', 900 params: 3, 901 inputFormatter: [ 902 web3._extend.formatters.inputAddressFormatter, 903 web3._extend.utils.fromDecimal, 904 null, 905 ], 906 outputFormatter: console.log, 907 }), 908 new web3._extend.Method({ 909 name: 'listMasternodes', 910 call: 'masternode_listMasternodes', 911 params: 0, 912 outputFormatter: function(list) { 913 var res = []; 914 for (var i = 0; i < list.length; ++i) { 915 res.push(web3._extend.formatters.outputMasternodeFormatter(list[i])); 916 } 917 return res; 918 }, 919 }), 920 new web3._extend.Method({ 921 name: 'masternodeInfo', 922 call: 'masternode_masternodeInfo', 923 params: 1, 924 inputFormatter: [web3._extend.formatters.inputAddressFormatter], 925 outputFormatter: function(status) { 926 return web3._extend.formatters.outputMasternodeFormatter(status); 927 } 928 }), 929 new web3._extend.Method({ 930 name: 'stats', 931 call: 'masternode_stats', 932 params: 0, 933 outputFormatter: function(status) { 934 return { 935 active: status.Active, 936 total: status.Total, 937 activeCollateral: web3._extend.utils.toDecimal(status.ActiveCollateral), 938 totalCollateral: web3._extend.utils.toDecimal(status.TotalCollateral), 939 maxOfAllTimes: web3._extend.utils.toDecimal(status.MaxOfAllTimes), 940 }; 941 } 942 }), 943 new web3._extend.Method({ 944 name: 'announce', 945 call: 'masternode_announce', 946 params: 3, 947 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, null], 948 }), 949 new web3._extend.Method({ 950 name: 'denounce', 951 call: 'masternode_denounce', 952 params: 2, 953 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null], 954 }), 955 ], 956 properties: [] 957 }); 958 ` 959 960 const Miner_JS = ` 961 web3._extend({ 962 property: 'miner', 963 methods: [ 964 new web3._extend.Method({ 965 name: 'start', 966 call: 'miner_start', 967 params: 1, 968 inputFormatter: [null] 969 }), 970 new web3._extend.Method({ 971 name: 'stop', 972 call: 'miner_stop' 973 }), 974 new web3._extend.Method({ 975 name: 'setEtherbase', 976 call: 'miner_setEtherbase', 977 params: 1, 978 inputFormatter: [web3._extend.formatters.inputAddressFormatter] 979 }), 980 new web3._extend.Method({ 981 name: 'setExtra', 982 call: 'miner_setExtra', 983 params: 1 984 }), 985 new web3._extend.Method({ 986 name: 'setGasPrice', 987 call: 'miner_setGasPrice', 988 params: 1, 989 inputFormatter: [web3._extend.utils.fromDecimal] 990 }), 991 new web3._extend.Method({ 992 name: 'setRecommitInterval', 993 call: 'miner_setRecommitInterval', 994 params: 1, 995 }), 996 new web3._extend.Method({ 997 name: 'getHashrate', 998 call: 'miner_getHashrate' 999 }), 1000 new web3._extend.Method({ 1001 name: 'addDPoS', 1002 call: 'miner_addDPoS', 1003 params: 2, 1004 inputFormatter: [ 1005 web3._extend.formatters.inputAddressFormatter, 1006 web3._extend.formatters.inputAddressFormatter, 1007 ] 1008 }), 1009 new web3._extend.Method({ 1010 name: 'removeDPoS', 1011 call: 'miner_removeDPoS', 1012 params: 1, 1013 inputFormatter: [web3._extend.formatters.inputAddressFormatter] 1014 }), 1015 new web3._extend.Method({ 1016 name: 'setMinerNonceCap', 1017 call: 'miner_setMinerNonceCap', 1018 params: 1, 1019 inputFormatter: [null], 1020 outputFormatter: console.log, 1021 }), 1022 ], 1023 properties: [] 1024 }); 1025 ` 1026 1027 const Net_JS = ` 1028 web3._extend({ 1029 property: 'net', 1030 methods: [], 1031 properties: [ 1032 new web3._extend.Property({ 1033 name: 'version', 1034 getter: 'net_version' 1035 }), 1036 ] 1037 }); 1038 ` 1039 1040 const Personal_JS = ` 1041 web3._extend({ 1042 property: 'personal', 1043 methods: [ 1044 new web3._extend.Method({ 1045 name: 'importRawKey', 1046 call: 'personal_importRawKey', 1047 params: 2 1048 }), 1049 new web3._extend.Method({ 1050 name: 'sign', 1051 call: 'personal_sign', 1052 params: 3, 1053 inputFormatter: [null, web3._extend.formatters.inputAddressFormatter, null] 1054 }), 1055 new web3._extend.Method({ 1056 name: 'ecRecover', 1057 call: 'personal_ecRecover', 1058 params: 2 1059 }), 1060 new web3._extend.Method({ 1061 name: 'openWallet', 1062 call: 'personal_openWallet', 1063 params: 2 1064 }), 1065 new web3._extend.Method({ 1066 name: 'deriveAccount', 1067 call: 'personal_deriveAccount', 1068 params: 3 1069 }), 1070 new web3._extend.Method({ 1071 name: 'signTransaction', 1072 call: 'personal_signTransaction', 1073 params: 2, 1074 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null] 1075 }), 1076 ], 1077 properties: [ 1078 new web3._extend.Property({ 1079 name: 'listWallets', 1080 getter: 'personal_listWallets' 1081 }), 1082 ] 1083 }) 1084 ` 1085 1086 const RPC_JS = ` 1087 web3._extend({ 1088 property: 'rpc', 1089 methods: [], 1090 properties: [ 1091 new web3._extend.Property({ 1092 name: 'modules', 1093 getter: 'rpc_modules' 1094 }), 1095 ] 1096 }); 1097 ` 1098 1099 const Shh_JS = ` 1100 web3._extend({ 1101 property: 'shh', 1102 methods: [ 1103 ], 1104 properties: 1105 [ 1106 new web3._extend.Property({ 1107 name: 'version', 1108 getter: 'shh_version', 1109 outputFormatter: web3._extend.utils.toDecimal 1110 }), 1111 new web3._extend.Property({ 1112 name: 'info', 1113 getter: 'shh_info' 1114 }), 1115 ] 1116 }); 1117 ` 1118 1119 const SWARMFS_JS = ` 1120 web3._extend({ 1121 property: 'swarmfs', 1122 methods: 1123 [ 1124 new web3._extend.Method({ 1125 name: 'mount', 1126 call: 'swarmfs_mount', 1127 params: 2 1128 }), 1129 new web3._extend.Method({ 1130 name: 'unmount', 1131 call: 'swarmfs_unmount', 1132 params: 1 1133 }), 1134 new web3._extend.Method({ 1135 name: 'listmounts', 1136 call: 'swarmfs_listmounts', 1137 params: 0 1138 }), 1139 ] 1140 }); 1141 ` 1142 1143 const TxPool_JS = ` 1144 web3._extend({ 1145 property: 'txpool', 1146 methods: [], 1147 properties: 1148 [ 1149 new web3._extend.Property({ 1150 name: 'content', 1151 getter: 'txpool_content' 1152 }), 1153 new web3._extend.Property({ 1154 name: 'inspect', 1155 getter: 'txpool_inspect' 1156 }), 1157 new web3._extend.Property({ 1158 name: 'status', 1159 getter: 'txpool_status', 1160 outputFormatter: function(status) { 1161 status.pending = web3._extend.utils.toDecimal(status.pending); 1162 status.queued = web3._extend.utils.toDecimal(status.queued); 1163 return status; 1164 } 1165 }), 1166 ] 1167 }); 1168 ` 1169 1170 const Accounting_JS = ` 1171 web3._extend({ 1172 property: 'accounting', 1173 methods: [ 1174 new web3._extend.Property({ 1175 name: 'balance', 1176 getter: 'account_balance' 1177 }), 1178 new web3._extend.Property({ 1179 name: 'balanceCredit', 1180 getter: 'account_balanceCredit' 1181 }), 1182 new web3._extend.Property({ 1183 name: 'balanceDebit', 1184 getter: 'account_balanceDebit' 1185 }), 1186 new web3._extend.Property({ 1187 name: 'bytesCredit', 1188 getter: 'account_bytesCredit' 1189 }), 1190 new web3._extend.Property({ 1191 name: 'bytesDebit', 1192 getter: 'account_bytesDebit' 1193 }), 1194 new web3._extend.Property({ 1195 name: 'msgCredit', 1196 getter: 'account_msgCredit' 1197 }), 1198 new web3._extend.Property({ 1199 name: 'msgDebit', 1200 getter: 'account_msgDebit' 1201 }), 1202 new web3._extend.Property({ 1203 name: 'peerDrops', 1204 getter: 'account_peerDrops' 1205 }), 1206 new web3._extend.Property({ 1207 name: 'selfDrops', 1208 getter: 'account_selfDrops' 1209 }), 1210 ] 1211 }); 1212 `