Skip to content

Commit

Permalink
Merge pull request #75 from aionnetwork/dev-api
Browse files Browse the repository at this point in the history
web3 server-side changes (JSON RPC spec compliance + bug-fixes)
  • Loading branch information
ali-sharif authored Mar 2, 2018
2 parents a513cd9 + 0dbd683 commit 751a98b
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
2 changes: 1 addition & 1 deletion modApiServer/src/org/aion/api/server/IRpc.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ enum Method {
eth_getTransactionByHash,
eth_getTransactionReceipt,
eth_getTransactionCount,
eth_getWork,
//eth_getWork,
eth_estimateGas,
eth_sendTransaction,
eth_sendRawTransaction,
Expand Down
13 changes: 9 additions & 4 deletions modApiServer/src/org/aion/api/server/http/ApiWeb3Aion.java
Original file line number Diff line number Diff line change
Expand Up @@ -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()));
Expand All @@ -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());

Expand All @@ -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()));
Expand Down
13 changes: 9 additions & 4 deletions modApiServer/src/org/aion/api/server/http/HttpServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -166,11 +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, 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) {
Expand Down Expand Up @@ -279,6 +281,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();
Expand Down

0 comments on commit 751a98b

Please sign in to comment.