javascript.go 9.4 KB

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