nim-json-rpc/eth-rpc/server/ethprocs.nim

263 lines
6.8 KiB
Nim
Raw Normal View History

2018-03-02 11:46:59 +00:00
import servertypes, json, asyncdispatch, macros
macro rpc*(prc: untyped): untyped =
result = prc
let params = prc.findChild(it.kind == nnkFormalParams)
assert params != nil
for param in params.children:
if param.kind == nnkIdentDefs:
if param[1] == ident("JsonNode"):
return
var identDefs = newNimNode(nnkIdentDefs)
identDefs.add ident("params"), ident("JsonNode"), newEmptyNode()
# proc result
# check there isn't already a result type
assert params.len == 1 and params[0].kind == nnkEmpty
params[0] = ident("JsonNode")
params.add identDefs
# finally, register with server's table.
# this requires a server variable to be passed somehow
#var body = prc.findChild(it.kind == nnkStmtList)
#body.add(quote do:
# server.register "web3_clientVersion", web3_clientVersion
#)
proc web3_clientVersion {.rpc.} =
return %("Nimbus-RPC-Test")
proc web3_sha3 {.rpc.} =
discard
proc net_version {.rpc.} =
discard
proc net_peerCount {.rpc.} =
discard
proc net_listening {.rpc.} =
discard
proc eth_protocolVersion {.rpc.} =
discard
proc eth_syncing {.rpc.} =
discard
proc eth_coinbase {.rpc.} =
discard
proc eth_mining {.rpc.} =
discard
proc eth_hashrate {.rpc.} =
discard
proc eth_gasPrice {.rpc.} =
discard
proc eth_accounts {.rpc.} =
discard
proc eth_blockNumber {.rpc.} =
discard
proc eth_getBalance {.rpc.} =
discard
proc eth_getStorageAt {.rpc.} =
discard
proc eth_getTransactionCount {.rpc.} =
discard
proc eth_getBlockTransactionCountByHash {.rpc.} =
discard
proc eth_getBlockTransactionCountByNumber {.rpc.} =
discard
proc eth_getUncleCountByBlockHash {.rpc.} =
discard
proc eth_getUncleCountByBlockNumber {.rpc.} =
discard
proc eth_getCode {.rpc.} =
discard
proc eth_sign {.rpc.} =
discard
proc eth_sendTransaction {.rpc.} =
discard
proc eth_sendRawTransaction {.rpc.} =
discard
proc eth_call {.rpc.} =
discard
proc eth_estimateGas {.rpc.} =
discard
proc eth_getBlockByHash {.rpc.} =
discard
proc eth_getBlockByNumber {.rpc.} =
discard
proc eth_getTransactionByHash {.rpc.} =
discard
proc eth_getTransactionByBlockHashAndIndex {.rpc.} =
discard
proc eth_getTransactionByBlockNumberAndIndex {.rpc.} =
discard
proc eth_getTransactionReceipt {.rpc.} =
discard
proc eth_getUncleByBlockHashAndIndex {.rpc.} =
discard
proc eth_getUncleByBlockNumberAndIndex {.rpc.} =
discard
proc eth_getCompilers {.rpc.} =
discard
proc eth_compileLLL {.rpc.} =
discard
proc eth_compileSolidity {.rpc.} =
discard
proc eth_compileSerpent {.rpc.} =
discard
proc eth_newFilter {.rpc.} =
discard
proc eth_newBlockFilter {.rpc.} =
discard
proc eth_newPendingTransactionFilter {.rpc.} =
discard
proc eth_uninstallFilter {.rpc.} =
discard
proc eth_getFilterChanges {.rpc.} =
discard
proc eth_getFilterLogs {.rpc.} =
discard
proc eth_getLogs {.rpc.} =
discard
proc eth_getWork {.rpc.} =
discard
proc eth_submitWork {.rpc.} =
discard
proc eth_submitHashrate {.rpc.} =
discard
proc shh_post {.rpc.} =
discard
proc shh_version {.rpc.} =
discard
proc shh_newIdentity {.rpc.} =
discard
proc shh_hasIdentity {.rpc.} =
discard
proc shh_newGroup {.rpc.} =
discard
proc shh_addToGroup {.rpc.} =
discard
proc shh_newFilter {.rpc.} =
discard
proc shh_uninstallFilter {.rpc.} =
discard
proc shh_getFilterChanges {.rpc.} =
discard
proc shh_getMessages {.rpc.} =
discard
proc registerEthereumRpcs*(server: RpcServer) =
## Register all ethereum rpc calls to the server
# TODO: Automate this
server.register "web3_clientVersion", web3_clientVersion
server.register "web3_sha3", web3_sha3
server.register "net_version", net_version
server.register "net_peerCount", net_peerCount
server.register "net_listening", net_listening
server.register "eth_protocolVersion", eth_protocolVersion
server.register "eth_syncing", eth_syncing
server.register "eth_coinbase", eth_coinbase
server.register "eth_mining", eth_mining
server.register "eth_hashrate", eth_hashrate
server.register "eth_gasPrice", eth_gasPrice
server.register "eth_accounts", eth_accounts
server.register "eth_blockNumber", eth_blockNumber
server.register "eth_getBalance", eth_getBalance
server.register "eth_getStorageAt", eth_getStorageAt
server.register "eth_getTransactionCount", eth_getTransactionCount
server.register "eth_getBlockTransactionCountByHash", eth_getBlockTransactionCountByHash
server.register "eth_getBlockTransactionCountByNumber", eth_getBlockTransactionCountByNumber
server.register "eth_getUncleCountByBlockHash", eth_getUncleCountByBlockHash
server.register "eth_getUncleCountByBlockNumber", eth_getUncleCountByBlockNumber
server.register "eth_getCode", eth_getCode
server.register "eth_sign", eth_sign
server.register "eth_sendTransaction", eth_sendTransaction
server.register "eth_sendRawTransaction", eth_sendRawTransaction
server.register "eth_call", eth_call
server.register "eth_estimateGas", eth_estimateGas
server.register "eth_getBlockByHash", eth_getBlockByHash
server.register "eth_getBlockByNumber", eth_getBlockByNumber
server.register "eth_getTransactionByHash", eth_getTransactionByHash
server.register "eth_getTransactionByBlockHashAndIndex", eth_getTransactionByBlockHashAndIndex
server.register "eth_getTransactionByBlockNumberAndIndex", eth_getTransactionByBlockNumberAndIndex
server.register "eth_getTransactionReceipt", eth_getTransactionReceipt
server.register "eth_getUncleByBlockHashAndIndex", eth_getUncleByBlockHashAndIndex
server.register "eth_getUncleByBlockNumberAndIndex", eth_getUncleByBlockNumberAndIndex
server.register "eth_getCompilers", eth_getCompilers
server.register "eth_compileLLL", eth_compileLLL
server.register "eth_compileSolidity", eth_compileSolidity
server.register "eth_compileSerpent", eth_compileSerpent
server.register "eth_newFilter", eth_newFilter
server.register "eth_newBlockFilter", eth_newBlockFilter
server.register "eth_newPendingTransactionFilter", eth_newPendingTransactionFilter
server.register "eth_uninstallFilter", eth_uninstallFilter
server.register "eth_getFilterChanges", eth_getFilterChanges
server.register "eth_getFilterLogs", eth_getFilterLogs
server.register "eth_getLogs", eth_getLogs
server.register "eth_getWork", eth_getWork
server.register "eth_submitWork", eth_submitWork
server.register "eth_submitHashrate", eth_submitHashrate
server.register "shh_post", shh_post
server.register "shh_version", shh_version
server.register "shh_newIdentity", shh_newIdentity
server.register "shh_hasIdentity", shh_hasIdentity
server.register "shh_newGroup", shh_newGroup
server.register "shh_addToGroup", shh_addToGroup
server.register "shh_newFilter", shh_newFilter
server.register "shh_uninstallFilter", shh_uninstallFilter
server.register "shh_getFilterChanges", shh_getFilterChanges
server.register "shh_getMessages", shh_getMessages