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