web3ext.go 9.7 KB

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