web3ext.go 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  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. "txpool": TxPool_JS,
  20. "admin": Admin_JS,
  21. "eth": Eth_JS,
  22. "miner": Miner_JS,
  23. "debug": Debug_JS,
  24. "net": Net_JS,
  25. }
  26. const TxPool_JS = `
  27. web3._extend({
  28. property: 'txpool',
  29. methods:
  30. [
  31. ],
  32. properties:
  33. [
  34. new web3._extend.Property({
  35. name: 'content',
  36. getter: 'txpool_content'
  37. }),
  38. new web3._extend.Property({
  39. name: 'inspect',
  40. getter: 'txpool_inspect'
  41. }),
  42. new web3._extend.Property({
  43. name: 'status',
  44. getter: 'txpool_status',
  45. outputFormatter: function(status) {
  46. status.pending = web3._extend.utils.toDecimal(status.pending);
  47. status.queued = web3._extend.utils.toDecimal(status.queued);
  48. return status;
  49. }
  50. })
  51. ]
  52. });
  53. `
  54. const Admin_JS = `
  55. web3._extend({
  56. property: 'admin',
  57. methods:
  58. [
  59. new web3._extend.Method({
  60. name: 'addPeer',
  61. call: 'admin_addPeer',
  62. params: 1
  63. }),
  64. new web3._extend.Method({
  65. name: 'exportChain',
  66. call: 'admin_exportChain',
  67. params: 1,
  68. inputFormatter: [null]
  69. }),
  70. new web3._extend.Method({
  71. name: 'importChain',
  72. call: 'admin_importChain',
  73. params: 1
  74. }),
  75. new web3._extend.Method({
  76. name: 'sleepBlocks',
  77. call: 'admin_sleepBlocks',
  78. params: 2
  79. }),
  80. new web3._extend.Method({
  81. name: 'setSolc',
  82. call: 'admin_setSolc',
  83. params: 1
  84. }),
  85. new web3._extend.Method({
  86. name: 'startRPC',
  87. call: 'admin_startRPC',
  88. params: 4,
  89. inputFormatter: [null, null, null, null]
  90. }),
  91. new web3._extend.Method({
  92. name: 'stopRPC',
  93. call: 'admin_stopRPC'
  94. }),
  95. new web3._extend.Method({
  96. name: 'startWS',
  97. call: 'admin_startWS',
  98. params: 4,
  99. inputFormatter: [null, null, null, null]
  100. }),
  101. new web3._extend.Method({
  102. name: 'stopWS',
  103. call: 'admin_stopWS'
  104. }),
  105. new web3._extend.Method({
  106. name: 'setGlobalRegistrar',
  107. call: 'admin_setGlobalRegistrar',
  108. params: 2
  109. }),
  110. new web3._extend.Method({
  111. name: 'setHashReg',
  112. call: 'admin_setHashReg',
  113. params: 2
  114. }),
  115. new web3._extend.Method({
  116. name: 'setUrlHint',
  117. call: 'admin_setUrlHint',
  118. params: 2
  119. }),
  120. new web3._extend.Method({
  121. name: 'saveInfo',
  122. call: 'admin_saveInfo',
  123. params: 2
  124. }),
  125. new web3._extend.Method({
  126. name: 'register',
  127. call: 'admin_register',
  128. params: 3
  129. }),
  130. new web3._extend.Method({
  131. name: 'registerUrl',
  132. call: 'admin_registerUrl',
  133. params: 3
  134. }),
  135. new web3._extend.Method({
  136. name: 'startNatSpec',
  137. call: 'admin_startNatSpec',
  138. params: 0
  139. }),
  140. new web3._extend.Method({
  141. name: 'stopNatSpec',
  142. call: 'admin_stopNatSpec',
  143. params: 0
  144. }),
  145. new web3._extend.Method({
  146. name: 'getContractInfo',
  147. call: 'admin_getContractInfo',
  148. params: 1
  149. }),
  150. new web3._extend.Method({
  151. name: 'httpGet',
  152. call: 'admin_httpGet',
  153. params: 2
  154. })
  155. ],
  156. properties:
  157. [
  158. new web3._extend.Property({
  159. name: 'nodeInfo',
  160. getter: 'admin_nodeInfo'
  161. }),
  162. new web3._extend.Property({
  163. name: 'peers',
  164. getter: 'admin_peers'
  165. }),
  166. new web3._extend.Property({
  167. name: 'datadir',
  168. getter: 'admin_datadir'
  169. })
  170. ]
  171. });
  172. `
  173. const Eth_JS = `
  174. web3._extend({
  175. property: 'eth',
  176. methods:
  177. [
  178. new web3._extend.Method({
  179. name: 'sign',
  180. call: 'eth_sign',
  181. params: 2,
  182. inputFormatter: [web3._extend.formatters.inputAddressFormatter, null]
  183. }),
  184. new web3._extend.Method({
  185. name: 'resend',
  186. call: 'eth_resend',
  187. params: 3,
  188. inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal]
  189. }),
  190. new web3._extend.Method({
  191. name: 'getNatSpec',
  192. call: 'eth_getNatSpec',
  193. params: 1,
  194. inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
  195. }),
  196. new web3._extend.Method({
  197. name: 'signTransaction',
  198. call: 'eth_signTransaction',
  199. params: 1,
  200. inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
  201. }),
  202. new web3._extend.Method({
  203. name: 'submitTransaction',
  204. call: 'eth_submitTransaction',
  205. params: 1,
  206. inputFormatter: [web3._extend.formatters.inputTransactionFormatter]
  207. })
  208. ],
  209. properties:
  210. [
  211. new web3._extend.Property({
  212. name: 'pendingTransactions',
  213. getter: 'eth_pendingTransactions',
  214. outputFormatter: function(txs) {
  215. var formatted = [];
  216. for (var i = 0; i < txs.length; i++) {
  217. formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i]));
  218. formatted[i].blockHash = null;
  219. }
  220. return formatted;
  221. }
  222. })
  223. ]
  224. });
  225. `
  226. const Net_JS = `
  227. web3._extend({
  228. property: 'net',
  229. methods: [],
  230. properties:
  231. [
  232. new web3._extend.Property({
  233. name: 'version',
  234. getter: 'net_version'
  235. })
  236. ]
  237. });
  238. `
  239. const Debug_JS = `
  240. web3._extend({
  241. property: 'debug',
  242. methods:
  243. [
  244. new web3._extend.Method({
  245. name: 'printBlock',
  246. call: 'debug_printBlock',
  247. params: 1
  248. }),
  249. new web3._extend.Method({
  250. name: 'getBlockRlp',
  251. call: 'debug_getBlockRlp',
  252. params: 1
  253. }),
  254. new web3._extend.Method({
  255. name: 'setHead',
  256. call: 'debug_setHead',
  257. params: 1
  258. }),
  259. new web3._extend.Method({
  260. name: 'traceBlock',
  261. call: 'debug_traceBlock',
  262. params: 1
  263. }),
  264. new web3._extend.Method({
  265. name: 'traceBlockByFile',
  266. call: 'debug_traceBlockByFile',
  267. params: 1
  268. }),
  269. new web3._extend.Method({
  270. name: 'traceBlockByNumber',
  271. call: 'debug_traceBlockByNumber',
  272. params: 1
  273. }),
  274. new web3._extend.Method({
  275. name: 'traceBlockByHash',
  276. call: 'debug_traceBlockByHash',
  277. params: 1
  278. }),
  279. new web3._extend.Method({
  280. name: 'seedHash',
  281. call: 'debug_seedHash',
  282. params: 1
  283. }),
  284. new web3._extend.Method({
  285. name: 'dumpBlock',
  286. call: 'debug_dumpBlock',
  287. params: 1
  288. }),
  289. new web3._extend.Method({
  290. name: 'chaindbProperty',
  291. call: 'debug_chaindbProperty',
  292. params: 1,
  293. outputFormatter: console.log
  294. }),
  295. new web3._extend.Method({
  296. name: 'metrics',
  297. call: 'debug_metrics',
  298. params: 1
  299. }),
  300. new web3._extend.Method({
  301. name: 'verbosity',
  302. call: 'debug_verbosity',
  303. params: 1
  304. }),
  305. new web3._extend.Method({
  306. name: 'vmodule',
  307. call: 'debug_vmodule',
  308. params: 1
  309. }),
  310. new web3._extend.Method({
  311. name: 'backtraceAt',
  312. call: 'debug_backtraceAt',
  313. params: 1,
  314. }),
  315. new web3._extend.Method({
  316. name: 'stacks',
  317. call: 'debug_stacks',
  318. params: 0,
  319. outputFormatter: console.log
  320. }),
  321. new web3._extend.Method({
  322. name: 'memStats',
  323. call: 'debug_memStats',
  324. params: 0,
  325. }),
  326. new web3._extend.Method({
  327. name: 'gcStats',
  328. call: 'debug_gcStats',
  329. params: 0,
  330. }),
  331. new web3._extend.Method({
  332. name: 'cpuProfile',
  333. call: 'debug_cpuProfile',
  334. params: 2
  335. }),
  336. new web3._extend.Method({
  337. name: 'startCPUProfile',
  338. call: 'debug_startCPUProfile',
  339. params: 1
  340. }),
  341. new web3._extend.Method({
  342. name: 'stopCPUProfile',
  343. call: 'debug_stopCPUProfile',
  344. params: 0
  345. }),
  346. new web3._extend.Method({
  347. name: 'trace',
  348. call: 'debug_trace',
  349. params: 2
  350. }),
  351. new web3._extend.Method({
  352. name: 'startTrace',
  353. call: 'debug_startTrace',
  354. params: 1
  355. }),
  356. new web3._extend.Method({
  357. name: 'stopTrace',
  358. call: 'debug_stopTrace',
  359. params: 0
  360. }),
  361. new web3._extend.Method({
  362. name: 'blockProfile',
  363. call: 'debug_blockProfile',
  364. params: 2
  365. }),
  366. new web3._extend.Method({
  367. name: 'setBlockProfileRate',
  368. call: 'debug_setBlockProfileRate',
  369. params: 1
  370. }),
  371. new web3._extend.Method({
  372. name: 'writeBlockProfile',
  373. call: 'debug_writeBlockProfile',
  374. params: 1
  375. }),
  376. new web3._extend.Method({
  377. name: 'writeMemProfile',
  378. call: 'debug_writeMemProfile',
  379. params: 1
  380. }),
  381. new web3._extend.Method({
  382. name: 'traceTransaction',
  383. call: 'debug_traceTransaction',
  384. params: 1
  385. })
  386. ],
  387. properties: []
  388. });
  389. `
  390. const Miner_JS = `
  391. web3._extend({
  392. property: 'miner',
  393. methods:
  394. [
  395. new web3._extend.Method({
  396. name: 'start',
  397. call: 'miner_start',
  398. params: 1,
  399. inputFormatter: [null]
  400. }),
  401. new web3._extend.Method({
  402. name: 'stop',
  403. call: 'miner_stop'
  404. }),
  405. new web3._extend.Method({
  406. name: 'setEtherbase',
  407. call: 'miner_setEtherbase',
  408. params: 1,
  409. inputFormatter: [web3._extend.formatters.inputAddressFormatter]
  410. }),
  411. new web3._extend.Method({
  412. name: 'setExtra',
  413. call: 'miner_setExtra',
  414. params: 1
  415. }),
  416. new web3._extend.Method({
  417. name: 'setGasPrice',
  418. call: 'miner_setGasPrice',
  419. params: 1,
  420. inputFormatter: [web3._extend.utils.fromDecial]
  421. }),
  422. new web3._extend.Method({
  423. name: 'startAutoDAG',
  424. call: 'miner_startAutoDAG',
  425. params: 0
  426. }),
  427. new web3._extend.Method({
  428. name: 'stopAutoDAG',
  429. call: 'miner_stopAutoDAG',
  430. params: 0
  431. }),
  432. new web3._extend.Method({
  433. name: 'makeDAG',
  434. call: 'miner_makeDAG',
  435. params: 1,
  436. inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter]
  437. })
  438. ],
  439. properties: []
  440. });
  441. `
  442. const Shh_JS = `
  443. web3._extend({
  444. property: 'shh',
  445. methods: [],
  446. properties:
  447. [
  448. new web3._extend.Property({
  449. name: 'version',
  450. getter: 'shh_version'
  451. })
  452. ]
  453. });
  454. `