github.com/theQRL/go-zond@v0.2.1/internal/web3ext/web3ext.go (about) 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 17 // Package web3ext contains gzond specific web3.js extensions. 18 package web3ext 19 20 var Modules = map[string]string{ 21 "admin": AdminJs, 22 "debug": DebugJs, 23 "zond": ZondJs, 24 "miner": MinerJs, 25 "net": NetJs, 26 "rpc": RpcJs, 27 "txpool": TxpoolJs, 28 "dev": DevJs, 29 } 30 31 const AdminJs = ` 32 web3._extend({ 33 property: 'admin', 34 methods: [ 35 new web3._extend.Method({ 36 name: 'addPeer', 37 call: 'admin_addPeer', 38 params: 1 39 }), 40 new web3._extend.Method({ 41 name: 'removePeer', 42 call: 'admin_removePeer', 43 params: 1 44 }), 45 new web3._extend.Method({ 46 name: 'addTrustedPeer', 47 call: 'admin_addTrustedPeer', 48 params: 1 49 }), 50 new web3._extend.Method({ 51 name: 'removeTrustedPeer', 52 call: 'admin_removeTrustedPeer', 53 params: 1 54 }), 55 new web3._extend.Method({ 56 name: 'exportChain', 57 call: 'admin_exportChain', 58 params: 3, 59 inputFormatter: [null, null, null] 60 }), 61 new web3._extend.Method({ 62 name: 'importChain', 63 call: 'admin_importChain', 64 params: 1 65 }), 66 new web3._extend.Method({ 67 name: 'sleepBlocks', 68 call: 'admin_sleepBlocks', 69 params: 2 70 }), 71 new web3._extend.Method({ 72 name: 'startHTTP', 73 call: 'admin_startHTTP', 74 params: 5, 75 inputFormatter: [null, null, null, null, null] 76 }), 77 new web3._extend.Method({ 78 name: 'stopHTTP', 79 call: 'admin_stopHTTP' 80 }), 81 new web3._extend.Method({ 82 name: 'startWS', 83 call: 'admin_startWS', 84 params: 4, 85 inputFormatter: [null, null, null, null] 86 }), 87 new web3._extend.Method({ 88 name: 'stopWS', 89 call: 'admin_stopWS' 90 }), 91 ], 92 properties: [ 93 new web3._extend.Property({ 94 name: 'nodeInfo', 95 getter: 'admin_nodeInfo' 96 }), 97 new web3._extend.Property({ 98 name: 'peers', 99 getter: 'admin_peers' 100 }), 101 new web3._extend.Property({ 102 name: 'datadir', 103 getter: 'admin_datadir' 104 }), 105 ] 106 }); 107 ` 108 109 const DebugJs = ` 110 web3._extend({ 111 property: 'debug', 112 methods: [ 113 new web3._extend.Method({ 114 name: 'accountRange', 115 call: 'debug_accountRange', 116 params: 6, 117 inputFormatter: [web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null, null, null, null], 118 }), 119 new web3._extend.Method({ 120 name: 'printBlock', 121 call: 'debug_printBlock', 122 params: 1, 123 outputFormatter: console.log 124 }), 125 new web3._extend.Method({ 126 name: 'getRawHeader', 127 call: 'debug_getRawHeader', 128 params: 1 129 }), 130 new web3._extend.Method({ 131 name: 'getRawBlock', 132 call: 'debug_getRawBlock', 133 params: 1 134 }), 135 new web3._extend.Method({ 136 name: 'getRawReceipts', 137 call: 'debug_getRawReceipts', 138 params: 1 139 }), 140 new web3._extend.Method({ 141 name: 'getRawTransaction', 142 call: 'debug_getRawTransaction', 143 params: 1 144 }), 145 new web3._extend.Method({ 146 name: 'setHead', 147 call: 'debug_setHead', 148 params: 1 149 }), 150 new web3._extend.Method({ 151 name: 'seedHash', 152 call: 'debug_seedHash', 153 params: 1 154 }), 155 new web3._extend.Method({ 156 name: 'dumpBlock', 157 call: 'debug_dumpBlock', 158 params: 1, 159 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 160 }), 161 new web3._extend.Method({ 162 name: 'chaindbProperty', 163 call: 'debug_chaindbProperty', 164 params: 1, 165 outputFormatter: console.log 166 }), 167 new web3._extend.Method({ 168 name: 'chaindbCompact', 169 call: 'debug_chaindbCompact', 170 }), 171 new web3._extend.Method({ 172 name: 'verbosity', 173 call: 'debug_verbosity', 174 params: 1 175 }), 176 new web3._extend.Method({ 177 name: 'vmodule', 178 call: 'debug_vmodule', 179 params: 1 180 }), 181 new web3._extend.Method({ 182 name: 'backtraceAt', 183 call: 'debug_backtraceAt', 184 params: 1, 185 }), 186 new web3._extend.Method({ 187 name: 'stacks', 188 call: 'debug_stacks', 189 params: 1, 190 inputFormatter: [null], 191 outputFormatter: console.log 192 }), 193 new web3._extend.Method({ 194 name: 'freeOSMemory', 195 call: 'debug_freeOSMemory', 196 params: 0, 197 }), 198 new web3._extend.Method({ 199 name: 'setGCPercent', 200 call: 'debug_setGCPercent', 201 params: 1, 202 }), 203 new web3._extend.Method({ 204 name: 'memStats', 205 call: 'debug_memStats', 206 params: 0, 207 }), 208 new web3._extend.Method({ 209 name: 'gcStats', 210 call: 'debug_gcStats', 211 params: 0, 212 }), 213 new web3._extend.Method({ 214 name: 'cpuProfile', 215 call: 'debug_cpuProfile', 216 params: 2 217 }), 218 new web3._extend.Method({ 219 name: 'startCPUProfile', 220 call: 'debug_startCPUProfile', 221 params: 1 222 }), 223 new web3._extend.Method({ 224 name: 'stopCPUProfile', 225 call: 'debug_stopCPUProfile', 226 params: 0 227 }), 228 new web3._extend.Method({ 229 name: 'goTrace', 230 call: 'debug_goTrace', 231 params: 2 232 }), 233 new web3._extend.Method({ 234 name: 'startGoTrace', 235 call: 'debug_startGoTrace', 236 params: 1 237 }), 238 new web3._extend.Method({ 239 name: 'stopGoTrace', 240 call: 'debug_stopGoTrace', 241 params: 0 242 }), 243 new web3._extend.Method({ 244 name: 'blockProfile', 245 call: 'debug_blockProfile', 246 params: 2 247 }), 248 new web3._extend.Method({ 249 name: 'setBlockProfileRate', 250 call: 'debug_setBlockProfileRate', 251 params: 1 252 }), 253 new web3._extend.Method({ 254 name: 'writeBlockProfile', 255 call: 'debug_writeBlockProfile', 256 params: 1 257 }), 258 new web3._extend.Method({ 259 name: 'mutexProfile', 260 call: 'debug_mutexProfile', 261 params: 2 262 }), 263 new web3._extend.Method({ 264 name: 'setMutexProfileFraction', 265 call: 'debug_setMutexProfileFraction', 266 params: 1 267 }), 268 new web3._extend.Method({ 269 name: 'writeMutexProfile', 270 call: 'debug_writeMutexProfile', 271 params: 1 272 }), 273 new web3._extend.Method({ 274 name: 'writeMemProfile', 275 call: 'debug_writeMemProfile', 276 params: 1 277 }), 278 new web3._extend.Method({ 279 name: 'traceBlock', 280 call: 'debug_traceBlock', 281 params: 2, 282 inputFormatter: [null, null] 283 }), 284 new web3._extend.Method({ 285 name: 'traceBlockFromFile', 286 call: 'debug_traceBlockFromFile', 287 params: 2, 288 inputFormatter: [null, null] 289 }), 290 new web3._extend.Method({ 291 name: 'traceBadBlock', 292 call: 'debug_traceBadBlock', 293 params: 1, 294 inputFormatter: [null] 295 }), 296 new web3._extend.Method({ 297 name: 'standardTraceBadBlockToFile', 298 call: 'debug_standardTraceBadBlockToFile', 299 params: 2, 300 inputFormatter: [null, null] 301 }), 302 new web3._extend.Method({ 303 name: 'intermediateRoots', 304 call: 'debug_intermediateRoots', 305 params: 2, 306 inputFormatter: [null, null] 307 }), 308 new web3._extend.Method({ 309 name: 'standardTraceBlockToFile', 310 call: 'debug_standardTraceBlockToFile', 311 params: 2, 312 inputFormatter: [null, null] 313 }), 314 new web3._extend.Method({ 315 name: 'traceBlockByNumber', 316 call: 'debug_traceBlockByNumber', 317 params: 2, 318 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, null] 319 }), 320 new web3._extend.Method({ 321 name: 'traceBlockByHash', 322 call: 'debug_traceBlockByHash', 323 params: 2, 324 inputFormatter: [null, null] 325 }), 326 new web3._extend.Method({ 327 name: 'traceTransaction', 328 call: 'debug_traceTransaction', 329 params: 2, 330 inputFormatter: [null, null] 331 }), 332 new web3._extend.Method({ 333 name: 'traceCall', 334 call: 'debug_traceCall', 335 params: 3, 336 inputFormatter: [null, null, null] 337 }), 338 new web3._extend.Method({ 339 name: 'preimage', 340 call: 'debug_preimage', 341 params: 1, 342 inputFormatter: [null] 343 }), 344 new web3._extend.Method({ 345 name: 'getBadBlocks', 346 call: 'debug_getBadBlocks', 347 params: 0, 348 }), 349 new web3._extend.Method({ 350 name: 'storageRangeAt', 351 call: 'debug_storageRangeAt', 352 params: 5, 353 }), 354 new web3._extend.Method({ 355 name: 'getModifiedAccountsByNumber', 356 call: 'debug_getModifiedAccountsByNumber', 357 params: 2, 358 inputFormatter: [null, null], 359 }), 360 new web3._extend.Method({ 361 name: 'getModifiedAccountsByHash', 362 call: 'debug_getModifiedAccountsByHash', 363 params: 2, 364 inputFormatter:[null, null], 365 }), 366 new web3._extend.Method({ 367 name: 'freezeClient', 368 call: 'debug_freezeClient', 369 params: 1, 370 }), 371 new web3._extend.Method({ 372 name: 'getAccessibleState', 373 call: 'debug_getAccessibleState', 374 params: 2, 375 inputFormatter:[web3._extend.formatters.inputBlockNumberFormatter, web3._extend.formatters.inputBlockNumberFormatter], 376 }), 377 new web3._extend.Method({ 378 name: 'dbGet', 379 call: 'debug_dbGet', 380 params: 1 381 }), 382 new web3._extend.Method({ 383 name: 'dbAncient', 384 call: 'debug_dbAncient', 385 params: 2 386 }), 387 new web3._extend.Method({ 388 name: 'dbAncients', 389 call: 'debug_dbAncients', 390 params: 0 391 }), 392 new web3._extend.Method({ 393 name: 'setTrieFlushInterval', 394 call: 'debug_setTrieFlushInterval', 395 params: 1 396 }), 397 new web3._extend.Method({ 398 name: 'getTrieFlushInterval', 399 call: 'debug_getTrieFlushInterval', 400 params: 0 401 }), 402 ], 403 properties: [] 404 }); 405 ` 406 407 const ZondJs = ` 408 web3._extend({ 409 property: 'zond', 410 methods: [ 411 new web3._extend.Method({ 412 name: 'chainId', 413 call: 'zond_chainId', 414 params: 0 415 }), 416 new web3._extend.Method({ 417 name: 'sign', 418 call: 'zond_sign', 419 params: 2, 420 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null] 421 }), 422 new web3._extend.Method({ 423 name: 'resend', 424 call: 'zond_resend', 425 params: 3, 426 inputFormatter: [web3._extend.formatters.inputTransactionFormatter, web3._extend.utils.fromDecimal, web3._extend.utils.fromDecimal] 427 }), 428 new web3._extend.Method({ 429 name: 'signTransaction', 430 call: 'zond_signTransaction', 431 params: 1, 432 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 433 }), 434 new web3._extend.Method({ 435 name: 'estimateGas', 436 call: 'zond_estimateGas', 437 params: 2, 438 inputFormatter: [web3._extend.formatters.inputCallFormatter, web3._extend.formatters.inputBlockNumberFormatter], 439 outputFormatter: web3._extend.utils.toDecimal 440 }), 441 new web3._extend.Method({ 442 name: 'submitTransaction', 443 call: 'zond_submitTransaction', 444 params: 1, 445 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 446 }), 447 new web3._extend.Method({ 448 name: 'fillTransaction', 449 call: 'zond_fillTransaction', 450 params: 1, 451 inputFormatter: [web3._extend.formatters.inputTransactionFormatter] 452 }), 453 new web3._extend.Method({ 454 name: 'getHeaderByNumber', 455 call: 'zond_getHeaderByNumber', 456 params: 1, 457 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter] 458 }), 459 new web3._extend.Method({ 460 name: 'getHeaderByHash', 461 call: 'zond_getHeaderByHash', 462 params: 1 463 }), 464 new web3._extend.Method({ 465 name: 'getBlockByNumber', 466 call: 'zond_getBlockByNumber', 467 params: 2, 468 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, function (val) { return !!val; }] 469 }), 470 new web3._extend.Method({ 471 name: 'getBlockByHash', 472 call: 'zond_getBlockByHash', 473 params: 2, 474 inputFormatter: [null, function (val) { return !!val; }] 475 }), 476 new web3._extend.Method({ 477 name: 'getRawTransaction', 478 call: 'zond_getRawTransactionByHash', 479 params: 1 480 }), 481 new web3._extend.Method({ 482 name: 'getRawTransactionFromBlock', 483 call: function(args) { 484 return (web3._extend.utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'zond_getRawTransactionByBlockHashAndIndex' : 'zond_getRawTransactionByBlockNumberAndIndex'; 485 }, 486 params: 2, 487 inputFormatter: [web3._extend.formatters.inputBlockNumberFormatter, web3._extend.utils.toHex] 488 }), 489 new web3._extend.Method({ 490 name: 'getProof', 491 call: 'zond_getProof', 492 params: 3, 493 inputFormatter: [web3._extend.formatters.inputAddressFormatter, null, web3._extend.formatters.inputBlockNumberFormatter] 494 }), 495 new web3._extend.Method({ 496 name: 'createAccessList', 497 call: 'zond_createAccessList', 498 params: 2, 499 inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter], 500 }), 501 new web3._extend.Method({ 502 name: 'feeHistory', 503 call: 'zond_feeHistory', 504 params: 3, 505 inputFormatter: [null, web3._extend.formatters.inputBlockNumberFormatter, null] 506 }), 507 new web3._extend.Method({ 508 name: 'getLogs', 509 call: 'zond_getLogs', 510 params: 1, 511 }), 512 new web3._extend.Method({ 513 name: 'call', 514 call: 'zond_call', 515 params: 4, 516 inputFormatter: [web3._extend.formatters.inputCallFormatter, web3._extend.formatters.inputDefaultBlockNumberFormatter, null, null], 517 }), 518 new web3._extend.Method({ 519 name: 'getBlockReceipts', 520 call: 'zond_getBlockReceipts', 521 params: 1, 522 }), 523 ], 524 properties: [ 525 new web3._extend.Property({ 526 name: 'pendingTransactions', 527 getter: 'zond_pendingTransactions', 528 outputFormatter: function(txs) { 529 var formatted = []; 530 for (var i = 0; i < txs.length; i++) { 531 formatted.push(web3._extend.formatters.outputTransactionFormatter(txs[i])); 532 formatted[i].blockHash = null; 533 } 534 return formatted; 535 } 536 }), 537 new web3._extend.Property({ 538 name: 'maxPriorityFeePerGas', 539 getter: 'zond_maxPriorityFeePerGas', 540 outputFormatter: web3._extend.utils.toBigNumber 541 }), 542 ] 543 }); 544 ` 545 546 const MinerJs = ` 547 web3._extend({ 548 property: 'miner', 549 methods: [ 550 new web3._extend.Method({ 551 name: 'setExtra', 552 call: 'miner_setExtra', 553 params: 1 554 }), 555 new web3._extend.Method({ 556 name: 'setGasPrice', 557 call: 'miner_setGasPrice', 558 params: 1, 559 inputFormatter: [web3._extend.utils.fromDecimal] 560 }), 561 new web3._extend.Method({ 562 name: 'setGasLimit', 563 call: 'miner_setGasLimit', 564 params: 1, 565 inputFormatter: [web3._extend.utils.fromDecimal] 566 }), 567 ], 568 properties: [] 569 }); 570 ` 571 572 const NetJs = ` 573 web3._extend({ 574 property: 'net', 575 methods: [], 576 properties: [ 577 new web3._extend.Property({ 578 name: 'version', 579 getter: 'net_version' 580 }), 581 ] 582 }); 583 ` 584 585 const RpcJs = ` 586 web3._extend({ 587 property: 'rpc', 588 methods: [], 589 properties: [ 590 new web3._extend.Property({ 591 name: 'modules', 592 getter: 'rpc_modules' 593 }), 594 ] 595 }); 596 ` 597 598 const TxpoolJs = ` 599 web3._extend({ 600 property: 'txpool', 601 methods: [], 602 properties: 603 [ 604 new web3._extend.Property({ 605 name: 'content', 606 getter: 'txpool_content' 607 }), 608 new web3._extend.Property({ 609 name: 'inspect', 610 getter: 'txpool_inspect' 611 }), 612 new web3._extend.Property({ 613 name: 'status', 614 getter: 'txpool_status', 615 outputFormatter: function(status) { 616 status.pending = web3._extend.utils.toDecimal(status.pending); 617 status.queued = web3._extend.utils.toDecimal(status.queued); 618 return status; 619 } 620 }), 621 new web3._extend.Method({ 622 name: 'contentFrom', 623 call: 'txpool_contentFrom', 624 params: 1, 625 }), 626 ] 627 }); 628 ` 629 630 const DevJs = ` 631 web3._extend({ 632 property: 'dev', 633 methods: 634 [ 635 new web3._extend.Method({ 636 name: 'addWithdrawal', 637 call: 'dev_addWithdrawal', 638 params: 1 639 }), 640 new web3._extend.Method({ 641 name: 'setFeeRecipient', 642 call: 'dev_setFeeRecipient', 643 params: 1 644 }), 645 ], 646 }); 647 `