web3ext.go 19 KB

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