From a2cfce17687412d2734e941806e39147f5665847 Mon Sep 17 00:00:00 2001 From: Ali Sharif Date: Thu, 1 Mar 2018 11:24:36 -0500 Subject: [PATCH 1/2] web3 server-side changes from Shidokht --- .../src/org/aion/api/server/http/ApiWeb3Aion.java | 13 +++++++++---- .../src/org/aion/api/server/http/HttpServer.java | 8 +++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modApiServer/src/org/aion/api/server/http/ApiWeb3Aion.java b/modApiServer/src/org/aion/api/server/http/ApiWeb3Aion.java index 3082e6d38f..8a0e02563e 100644 --- a/modApiServer/src/org/aion/api/server/http/ApiWeb3Aion.java +++ b/modApiServer/src/org/aion/api/server/http/ApiWeb3Aion.java @@ -154,7 +154,7 @@ AionBlock getBlockRaw(int bn) { private JSONObject blockToJson(AionBlock block, BigInteger totalDifficulty, boolean fullTransaction) { JSONObject obj = new JSONObject(); - obj.put("blockNumber", block.getNumber()); + obj.put("number", block.getNumber()); obj.put("hash", TypeConverter.toJsonHex(block.getHash())); obj.put("parentHash", TypeConverter.toJsonHex(block.getParentHash())); obj.put("logsBloom", TypeConverter.toJsonHex(block.getLogBloom())); @@ -172,8 +172,9 @@ private JSONObject blockToJson(AionBlock block, BigInteger totalDifficulty, bool obj.put("solution", TypeConverter.toJsonHex(block.getHeader().getSolution())); obj.put("gasUsed", TypeConverter.toJsonHex(block.getHeader().getEnergyConsumed())); obj.put("gasLimit", TypeConverter.toJsonHex(block.getHeader().getEnergyLimit())); - obj.put("energyConsumed", TypeConverter.toJsonHex(block.getHeader().getEnergyConsumed())); - obj.put("energyLimit", TypeConverter.toJsonHex(block.getHeader().getEnergyLimit())); + obj.put("nrgUsed", TypeConverter.toJsonHex(block.getHeader().getEnergyConsumed())); + obj.put("nrgLimit", TypeConverter.toJsonHex(block.getHeader().getEnergyLimit())); + // obj.put("extraData", TypeConverter.toJsonHex(block.getExtraData())); obj.put("size", new NumericalValue(block.getEncoded().length).toHexString()); @@ -182,8 +183,12 @@ private JSONObject blockToJson(AionBlock block, BigInteger totalDifficulty, bool for (AionTransaction _tx : _txs) { if (fullTransaction) { JSONObject jsonTx = new JSONObject(); - jsonTx.put("address", TypeConverter.toJsonHex(_tx.getContractAddress().toString())); + jsonTx.put("address", (_tx.getContractAddress() != null)? TypeConverter.toJsonHex(_tx.getContractAddress().toString()):null); jsonTx.put("transactionHash", TypeConverter.toJsonHex(_tx.getHash())); + jsonTx.put("transactionIndex", getTransactionReceipt(_tx.getHash()).transactionIndex); + jsonTx.put("value", TypeConverter.toJsonHex(_tx.getValue())); + jsonTx.put("nrg", _tx.getNrg()); + jsonTx.put("nrgPrice", TypeConverter.toJsonHex(_tx.getNrgPrice())); jsonTx.put("nonce", ByteUtil.byteArrayToLong(_tx.getNonce())); jsonTx.put("from", TypeConverter.toJsonHex(_tx.getFrom().toString())); jsonTx.put("to", TypeConverter.toJsonHex(_tx.getTo().toString())); diff --git a/modApiServer/src/org/aion/api/server/http/HttpServer.java b/modApiServer/src/org/aion/api/server/http/HttpServer.java index e43e2d3007..734f426a83 100644 --- a/modApiServer/src/org/aion/api/server/http/HttpServer.java +++ b/modApiServer/src/org/aion/api/server/http/HttpServer.java @@ -155,7 +155,7 @@ private static JSONObject process(final IRpc.Method _method, final long _id, fin case eth_getBlockByHash: { String hashString = (String) params.get(0); - boolean fullTransactions = Boolean.parseBoolean((String) params.get(1)); + boolean fullTransactions = Boolean.parseBoolean(params.get(1) + ""); if (hashString == null) { log.debug("eth_getBlockByHash: invalid input"); return processResult(_id, null); @@ -169,8 +169,7 @@ private static JSONObject process(final IRpc.Method _method, final long _id, fin case eth_getWork: // Header without nonce and solution , pool needs add new nonce - return processResult(_id, api.getBestBlock().getHeader().getHeaderBytes(true)); - + return processResult(_id, toHexString(HashUtil.h256(api.getBestBlock().getHeader().getHeaderBytes(true)))); case eth_syncing: SyncInfo syncInfo = api.getSync(); if (!syncInfo.done) { @@ -279,6 +278,9 @@ private static JSONObject process(final IRpc.Method _method, final long _id, fin JSONObject obj = new JSONObject(); obj.put("address", txR.logs[i].address); obj.put("data", txR.txData); + obj.put("blockNumber", new NumericalValue(txR.blockNumber).toHexString()); + obj.put("transactionIndex", new NumericalValue(txR.transactionIndex).toHexString()); + obj.put("logIndex", new NumericalValue(i).toHexString()); String[] topics = txR.logs[i].topics; JSONArray topicArray = new JSONArray(); From 0dbd6836f6fde4891d7cdeef58ffd19c5ae0d988 Mon Sep 17 00:00:00 2001 From: Ali Sharif Date: Fri, 2 Mar 2018 11:42:56 -0500 Subject: [PATCH 2/2] removed implementation of eth_getWork on server-side --- modApiServer/src/org/aion/api/server/IRpc.java | 2 +- modApiServer/src/org/aion/api/server/http/HttpServer.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modApiServer/src/org/aion/api/server/IRpc.java b/modApiServer/src/org/aion/api/server/IRpc.java index 311997b289..5da5d53161 100644 --- a/modApiServer/src/org/aion/api/server/IRpc.java +++ b/modApiServer/src/org/aion/api/server/IRpc.java @@ -46,7 +46,7 @@ enum Method { eth_getTransactionByHash, eth_getTransactionReceipt, eth_getTransactionCount, - eth_getWork, + //eth_getWork, eth_estimateGas, eth_sendTransaction, eth_sendRawTransaction, diff --git a/modApiServer/src/org/aion/api/server/http/HttpServer.java b/modApiServer/src/org/aion/api/server/http/HttpServer.java index 734f426a83..85423c9a06 100644 --- a/modApiServer/src/org/aion/api/server/http/HttpServer.java +++ b/modApiServer/src/org/aion/api/server/http/HttpServer.java @@ -166,10 +166,13 @@ private static JSONObject process(final IRpc.Method _method, final long _id, fin case eth_getBalance: String address = params.get(0) + ""; return processResult(_id, TypeConverter.toJsonHex(api.getBalance(address))); - + /* + // rationale for not supporting this: does not make sense in the context of aion's getWork for minig. + // see functions under 'stratum pool' descriptor in IRpc.java for currenly-supported stratum interactions case eth_getWork: // Header without nonce and solution , pool needs add new nonce - return processResult(_id, toHexString(HashUtil.h256(api.getBestBlock().getHeader().getHeaderBytes(true)))); + return processResult(_id, toHexString(HashUtil.h256(api.getBestBlock().getHeader().getHeaderBytes(true)))); + */ case eth_syncing: SyncInfo syncInfo = api.getSync(); if (!syncInfo.done) {