github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/internal/web3ext/web3ext.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:38</date> 10 //</624450093029789696> 11 12 13 //包web3ext包含geth特定的web3.js扩展。 14 package web3ext 15 16 var Modules = map[string]string{ 17 "accounting": Accounting_JS, 18 "admin": Admin_JS, 19 "chequebook": Chequebook_JS, 20 "clique": Clique_JS, 21 "ethash": Ethash_JS, 22 "debug": Debug_JS, 23 "eth": Eth_JS, 24 "miner": Miner_JS, 25 "net": Net_JS, 26 "personal": Personal_JS, 27 "rpc": RPC_JS, 28 "shh": Shh_JS, 29 "swarmfs": SWARMFS_JS, 30 "txpool": TxPool_JS, 31 } 32 33 const Chequebook_JS = ` 34 web3._extend({ 35 property: 'chequebook', 36 methods: [ 37 new web3._extend.Method({ 38 name: 'deposit', 39 call: 'chequebook_deposit', 40 params: 1, 41 inputFormatter: [null] 42 }), 43 new web3._extend.Property({ 44 name: 'balance', 45 getter: 'chequebook_balance', 46 outputFormatter: web3._extend.utils.toDecimal 47 }), 48 new web3._extend.Method({ 49 name: 'cash', 50 call: 'chequebook_cash', 51 params: 1, 52 inputFormatter: [null] 53 }), 54 new web3._extend.Method({ 55 name: 'issue', 56 call: 'chequebook_issue', 57 params: 2, 58 inputFormatter: [null, null] 59 }), 60 ] 61 }); 62 ` 63 64 const Clique_JS = ` 65 web3._extend({ 66 property: 'clique', 67 methods: [ 68 new web3._extend.Method({ 69 name: 'getSnapshot', 70 call: 'clique_getSnapshot', 71 params: 1, 72 inputFormatter: [null] 73 }), 74 new web3._extend.Method({ 75 name: 'getSnapshotAtHash', 76 call: 'clique_getSnapshotAtHash', 77 params: 1 78 }), 79 new web3._extend.Method({ 80 name: 'getSigners', 81 call: 'clique_getSigners', 82 params: 1, 83 inputFormatter: [null] 84 }), 85 new web3._extend.Method({ 86 name: 'getSignersAtHash', 87 call: 'clique_getSignersAtHash', 88 params: 1 89 }), 90 new web3._extend.Method({ 91 name: 'propose', 92 call: 'clique_propose', 93 params: 2 94 }), 95 new web3._extend.Method({ 96 name: 'discard', 97 call: 'clique_discard', 98 params: 1 99 }), 100 ], 101 properties: [ 102 new web3._extend.Property({ 103 name: 'proposals', 104 getter: 'clique_proposals' 105 }), 106 ] 107 }); 108 ` 109 110 const Ethash_JS = ` 111 web3._extend({ 112 property: 'ethash', 113 methods: [ 114 new web3._extend.Method({ 115 name: 'getWork', 116 call: 'ethash_getWork', 117 params: 0 118 }), 119 new web3._extend.Method({ 120 name: 'getHashrate', 121 call: 'ethash_getHashrate', 122 params: 0 123 }), 124 new web3._extend.Method({ 125 name: 'submitWork', 126 call: 'ethash_submitWork', 127 params: 3, 128 }), 129 new web3._extend.Method({ 130 name: 'submitHashRate', 131 call: 'ethash_submitHashRate', 132 params: 2, 133 }), 134 ] 135 }); 136 ` 137 138 const Admin_JS = ` 139 web3._extend({ 140 property: 'admin', 141 methods: [ 142 new web3._extend.Method({ 143 name: 'addPeer', 144 call: 'admin_addPeer', 145 params: 1 146 }), 147 new web3._extend.Method({ 148 name: 'removePeer', 149 call: 'admin_removePeer', 150 params: 1 151 }), 152 new web3._extend.Method({ 153 name: 'addTrustedPeer', 154 call: 'admin_addTrustedPeer', 155 params: 1 156 }), 157 new web3._extend.Method({ 158 name: 'removeTrustedPeer', 159 call: 'admin_removeTrustedPeer', 160 params: 1 161 }), 162 new web3._extend.Method({ 163 name: 'exportChain', 164 call: 'admin_exportChain', 165 params: 1, 166 inputFormatter: [null] 167 }), 168 new web3._extend.Method({ 169 name: 'importChain', 170 call: 'admin_importChain', 171 params: 1 172 }), 173 new web3._extend.Method({ 174 name: 'sleepBlocks', 175 call: 'admin_sleepBlocks', 176 params: 2 177 }), 178 new web3._extend.Method({ 179 name: 'startRPC', 180 call: 'admin_startRPC', 181 params: 4, 182 inputFormatter: [null, null, null, null] 183 }), 184 new web3._extend.Method({ 185 name: 'stopRPC', 186 call: 'admin_stopRPC' 187 }), 188 new web3._extend.Method({ 189 name: 'startWS', 190 call: 'admin_startWS', 191 params: 4, 192 inputFormatter: [null, null, null, null] 193 }), 194 new web3._extend.Method({ 195 name: 'stopWS', 196 call: 'admin_stopWS' 197 }), 198 ], 199 properties: [ 200 new web3._extend.Property({ 201 name: 'nodeInfo', 202 getter: 'admin_nodeInfo' 203 }), 204 new web3._extend.Property({ 205 name: 'peers', 206 getter: 'admin_peers' 207 }), 208 new web3._extend.Property({ 209 name: 'datadir', 210 getter: 'admin_datadir' 211 }), 212 ] 213 }); 214 ` 215 216 const Debug_JS = ` 217 web3._extend({ 218 property: 'debug', 219 methods: [ 220 new web3._extend.Method({ 221 name: 'printBlock', 222 call: 'debug_printBlock', 223 params: 1 224 }), 225 new web3._extend.Method({ 226 name: 'getBlockRlp', 227 call: 'debug_getBlockRlp', 228 params: 1 229 }), 230 new web3._extend.Method({ 231 name: 'setHead', 232 call: 'debug_setHead', 233 params: 1 234 }), 235 new web3._extend.Method({ 236 name: 'seedHash', 237 call: 'debug_seedHash', 238 params: 1 239 }), 240 new web3._extend.Method({ 241 name: 'dumpBlock', 242 call: 'debug_dumpBlock', 243 params: 1 244 }), 245 new web3._extend.Method({ 246 name: 'chaindbProperty', 247 call: 'debug_chaindbProperty', 248 params: 1, 249 outputFormatter: console.log 250 }), 251 new web3._extend.Method({ 252 name: 'chaindbCompact', 253 call: 'debug_chaindbCompact', 254 }), 255 new web3._extend.Method({ 256 name: 'metrics', 257 call: 'debug_metrics', 258 params: 1 259 }), 260 new web3._extend.Method({ 261 name: 'verbosity', 262 call: 'debug_verbosity', 263 params: 1 264 }), 265 new web3._extend.Method({ 266 name: 'vmodule', 267 call: 'debug_vmodule', 268 params: 1 269 }), 270 new web3._extend.Method({ 271 name: 'backtraceAt', 272 call: 'debug_backtraceAt', 273 params: 1, 274 }), 275 new web3._extend.Method({ 276 name: 'stacks', 277 call: 'debug_stacks', 278 params: 0, 279 outputFormatter: console.log 280 }), 281 new web3._extend.Method({ 282 name: 'freeOSMemory', 283 call: 'debug_freeOSMemory', 284 params: 0, 285 }), 286 new web3._extend.Method({ 287 name: 'setGCPercent', 288 call: 'debug_setGCPercent', 289 params: 1, 290 }), 291 new web3._extend.Method({ 292 name: 'memStats', 293 call: 'debug_memStats', 294 params: 0, 295 }), 296 new web3._extend.Method({ 297 name: 'gcStats', 298 call: 'debug_gcStats', 299 params: 0, 300 }), 301 new web3._extend.Method({ 302 name: 'cpuProfile', 303 call: 'debug_cpuProfile', 304 params: 2 305 }), 306 new web3._extend.Method({ 307 name: 'startCPUProfile', 308 call: 'debug_startCPUProfile', 309 params: 1 310 }), 311 new web3._extend.Method({ 312 name: 'stopCPUProfile', 313 call: 'debug_stopCPUProfile', 314 params: 0 315 }), 316 new web3._extend.Method({ 317 name: 'goTrace', 318 call: 'debug_goTrace', 319 params: 2 320 }), 321 new web3._extend.Method({ 322 name: 'startGoTrace', 323 call: 'debug_startGoTrace', 324 params: 1 325 }), 326 new web3._extend.Method({ 327 name: 'stopGoTrace', 328 call: 'debug_stopGoTrace', 329 params: 0 330 }), 331 new web3._extend.Method({ 332 name: 'blockProfile', 333 call: 'debug_blockProfile', 334 params: 2 335 }), 336 new web3._extend.Method({ 337 name: 'setBlockProfileRate', 338 call: 'debug_setBlockProfileRate', 339 params: 1 340 }), 341 new web3._extend.Method({ 342 name: 'writeBlockProfile', 343 call: 'debug_writeBlockProfile', 344 params: 1 345 }), 346 new web3._extend.Method({ 347 name: 'mutexProfile', 348 call: 'debug_mutexProfile', 349 params: 2 350 }), 351 new web3._extend.Method({ 352 name: 'setMutexProfileFraction', 353 call: 'debug_setMutexProfileFraction', 354 params: 1 355 }), 356 new web3._extend.Method({ 357 name: 'writeMutexProfile', 358 call: 'debug_writeMutexProfile', 359 params: 1 360 }), 361 new web3._extend.Method({ 362 name: 'writeMemProfile', 363 call: 'debug_writeMemProfile', 364 params: 1 365 }), 366 new web3._extend.Method({ 367 name: 'traceBlock', 368 call: 'debug_traceBlock', 369 params: 2, 370 inputFormatter: [null, null] 371 }), 372 new web3._extend.Method({ 373 name: 'traceBlockFromFile', 374 call: 'debug_traceBlockFromFile', 375 params: 2, 376 inputFormatter: [null, null] 377 }), 378 new web3._extend.Method({ 379 name: 'traceBadBlock', 380 call: 'debug_traceBadBlock', 381 params: 1, 382 inputFormatter: [null] 383 }), 384 new web3._extend.Method({ 385 name: 'standardTraceBadBlockToFile', 386 call: 'debug_standardTraceBadBlockToFile', 387 params: 2, 388 inputFormatter: [null, null] 389 }), 390 new web3._extend.Method({ 391 name: 'standardTraceBlockToFile', 392 call: 'debug_standardTraceBlockToFile', 393 params: 2, 394 inputFormatter: [null, null] 395 }), 396 new web3._extend.Method({ 397 name: 'traceBlockByNumber', 398 call: 'debug_traceBlockByNumber', 399 params: 2, 400 inputFormatter: [null, null] 401 }), 402 new web3._extend.Method({ 403 name: 'traceBlockByHash', 404 call: 'debug_traceBlockByHash', 405 params: 2, 406 inputFormatter: [null, null] 407 }), 408 new web3._extend.Method({ 409 name: 'traceTransaction', 410 call: 'debug_traceTransaction', 411 params: 2, 412 inputFormatter: [null, null] 413 }), 414 new web3._extend.Method({ 415 name: 'preimage', 416 call: 'debug_preimage', 417 params: 1, 418 inputFormatter: [null] 419 }), 420 new web3._extend.Method({ 421 name: 'getBadBlocks', 422 call: 'debug_getBadBlocks', 423 params: 0, 424 }), 425 new web3._extend.Method({ 426 name: 'storageRangeAt', 427 call: 'debug_storageRangeAt', 428 params: 5, 429 }), 430 new web3._extend.Method({ 431 name: 'getModifiedAccountsByNumber', 432 call: 'debug_getModifiedAccountsByNumber', 433 params: 2, 434 inputFormatter: [null, null], 435 }), 436 new web3._extend.Method({ 437 name: 'getModifiedAccountsByHash', 438 call: 'debug_getModifiedAccountsByHash', 439 params: 2, 440 inputFormatter:[null, null], 441 }), 442 ], 443 properties: [] 444 }); 445 ` 446 447 const Eth_JS = ` 448 web3._extend({ 449 property: 'eth', 450 methods: [ 451 new web3._extend.Method({ 452 name: 'chainId', 453 call: 'eth_chainId', 454 params: 0 455 }), 456 new web3._extend.Method({ 457 name: 'sign', 458 call: 'eth_sign', 459 params: 2, 460 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null] 461 }), 462 new web3._extend.Method({ 463 name: 'resend', 464 call: 'eth_resend', 465 params: 3, 466 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal] 467 }), 468 new web3._extend.Method({ 469 name: 'signTransaction', 470 call: 'eth_signTransaction', 471 params: 1, 472 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 473 }), 474 new web3._extend.Method({ 475 name: 'submitTransaction', 476 call: 'eth_submitTransaction', 477 params: 1, 478 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 479 }), 480 new web3._extend.Method({ 481 name: 'getRawTransaction', 482 call: 'eth_getRawTransactionByHash', 483 params: 1 484 }), 485 new web3._extend.Method({ 486 name: 'getRawTransactionFromBlock', 487 call: function(args) { 488 return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getRawTransactionByBlockHashAndIndex' : 'eth_getRawTransactionByBlockNumberAndIndex'; 489 }, 490 params: 2, 491 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex] 492 }), 493 new web3._extend.Method({ 494 name: 'getProof', 495 call: 'eth_getProof', 496 params: 3, 497 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputBlockNumberFormatter] 498 }), 499 ], 500 properties: [ 501 new web3._extend.Property({ 502 name: 'pendingTransactions', 503 getter: 'eth_pendingTransactions', 504 outputFormatter: function(txs) { 505 var formatted = []; 506 for (var i = 0; i < txs.length; i++) { 507 formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i])); 508 formatted[i].blockHash = null; 509 } 510 return formatted; 511 } 512 }), 513 ] 514 }); 515 ` 516 517 const Miner_JS = ` 518 web3._extend({ 519 property: 'miner', 520 methods: [ 521 new web3._extend.Method({ 522 name: 'start', 523 call: 'miner_start', 524 params: 1, 525 inputFormatter: [null] 526 }), 527 new web3._extend.Method({ 528 name: 'stop', 529 call: 'miner_stop' 530 }), 531 new web3._extend.Method({ 532 name: 'setEtherbase', 533 call: 'miner_setEtherbase', 534 params: 1, 535 inputFormatter: [web3._extend.formatters.inputAddressFormatter] 536 }), 537 new web3._extend.Method({ 538 name: 'setExtra', 539 call: 'miner_setExtra', 540 params: 1 541 }), 542 new web3._extend.Method({ 543 name: 'setGasPrice', 544 call: 'miner_setGasPrice', 545 params: 1, 546 inputFormatter: [web3._extend.utils.fromDecimal] 547 }), 548 new web3._extend.Method({ 549 name: 'setRecommitInterval', 550 call: 'miner_setRecommitInterval', 551 params: 1, 552 }), 553 new web3._extend.Method({ 554 name: 'getHashrate', 555 call: 'miner_getHashrate' 556 }), 557 ], 558 properties: [] 559 }); 560 ` 561 562 const Net_JS = ` 563 web3._extend({ 564 property: 'net', 565 methods: [], 566 properties: [ 567 new web3._extend.Property({ 568 name: 'version', 569 getter: 'net_version' 570 }), 571 ] 572 }); 573 ` 574 575 const Personal_JS = ` 576 web3._extend({ 577 property: 'personal', 578 methods: [ 579 new web3._extend.Method({ 580 name: 'importRawKey', 581 call: 'personal_importRawKey', 582 params: 2 583 }), 584 new web3._extend.Method({ 585 name: 'sign', 586 call: 'personal_sign', 587 params: 3, 588 inputFormatter: [null, web3._extend.formatters.inputAddressFormatter, null] 589 }), 590 new web3._extend.Method({ 591 name: 'ecRecover', 592 call: 'personal_ecRecover', 593 params: 2 594 }), 595 new web3._extend.Method({ 596 name: 'openWallet', 597 call: 'personal_openWallet', 598 params: 2 599 }), 600 new web3._extend.Method({ 601 name: 'deriveAccount', 602 call: 'personal_deriveAccount', 603 params: 3 604 }), 605 new web3._extend.Method({ 606 name: 'signTransaction', 607 call: 'personal_signTransaction', 608 params: 2, 609 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, null] 610 }), 611 ], 612 properties: [ 613 new web3._extend.Property({ 614 name: 'listWallets', 615 getter: 'personal_listWallets' 616 }), 617 ] 618 }) 619 ` 620 621 const RPC_JS = ` 622 web3._extend({ 623 property: 'rpc', 624 methods: [], 625 properties: [ 626 new web3._extend.Property({ 627 name: 'modules', 628 getter: 'rpc_modules' 629 }), 630 ] 631 }); 632 ` 633 634 const Shh_JS = ` 635 web3._extend({ 636 property: 'shh', 637 methods: [ 638 ], 639 properties: 640 [ 641 new web3._extend.Property({ 642 name: 'version', 643 getter: 'shh_version', 644 outputFormatter: web3._extend.utils.toDecimal 645 }), 646 new web3._extend.Property({ 647 name: 'info', 648 getter: 'shh_info' 649 }), 650 ] 651 }); 652 ` 653 654 const SWARMFS_JS = ` 655 web3._extend({ 656 property: 'swarmfs', 657 methods: 658 [ 659 new web3._extend.Method({ 660 name: 'mount', 661 call: 'swarmfs_mount', 662 params: 2 663 }), 664 new web3._extend.Method({ 665 name: 'unmount', 666 call: 'swarmfs_unmount', 667 params: 1 668 }), 669 new web3._extend.Method({ 670 name: 'listmounts', 671 call: 'swarmfs_listmounts', 672 params: 0 673 }), 674 ] 675 }); 676 ` 677 678 const TxPool_JS = ` 679 web3._extend({ 680 property: 'txpool', 681 methods: [], 682 properties: 683 [ 684 new web3._extend.Property({ 685 name: 'content', 686 getter: 'txpool_content' 687 }), 688 new web3._extend.Property({ 689 name: 'inspect', 690 getter: 'txpool_inspect' 691 }), 692 new web3._extend.Property({ 693 name: 'status', 694 getter: 'txpool_status', 695 outputFormatter: function(status) { 696 status.pending = web3._extend.utils.toDecimal(status.pending); 697 status.queued = web3._extend.utils.toDecimal(status.queued); 698 return status; 699 } 700 }), 701 ] 702 }); 703 ` 704 705 const Accounting_JS = ` 706 web3._extend({ 707 property: 'accounting', 708 methods: [ 709 new web3._extend.Property({ 710 name: 'balance', 711 getter: 'account_balance' 712 }), 713 new web3._extend.Property({ 714 name: 'balanceCredit', 715 getter: 'account_balanceCredit' 716 }), 717 new web3._extend.Property({ 718 name: 'balanceDebit', 719 getter: 'account_balanceDebit' 720 }), 721 new web3._extend.Property({ 722 name: 'bytesCredit', 723 getter: 'account_bytesCredit' 724 }), 725 new web3._extend.Property({ 726 name: 'bytesDebit', 727 getter: 'account_bytesDebit' 728 }), 729 new web3._extend.Property({ 730 name: 'msgCredit', 731 getter: 'account_msgCredit' 732 }), 733 new web3._extend.Property({ 734 name: 'msgDebit', 735 getter: 'account_msgDebit' 736 }), 737 new web3._extend.Property({ 738 name: 'peerDrops', 739 getter: 'account_peerDrops' 740 }), 741 new web3._extend.Property({ 742 name: 'selfDrops', 743 getter: 'account_selfDrops' 744 }), 745 ] 746 }); 747 ` 748