Browse Source

Merge branch 'debris-rpcfix' into develop

cl-refactor
Gav Wood 10 years ago
parent
commit
9e5edfe1b4
  1. 11
      libethereum/ClientBase.cpp
  2. 2
      libethereum/ClientBase.h
  3. 2
      libethereum/Interface.h
  4. 23
      libweb3jsonrpc/WebThreeStubServerBase.cpp

11
libethereum/ClientBase.cpp

@ -323,6 +323,11 @@ Transaction ClientBase::transaction(h256 _blockHash, unsigned _i) const
return Transaction(); return Transaction();
} }
pair<h256, unsigned> ClientBase::transactionLocation(h256 const& _transactionHash) const
{
return bc().transactionLocation(_transactionHash);
}
Transactions ClientBase::transactions(h256 _blockHash) const Transactions ClientBase::transactions(h256 _blockHash) const
{ {
auto bl = bc().block(_blockHash); auto bl = bc().block(_blockHash);
@ -421,3 +426,9 @@ h256 ClientBase::hashFromNumber(BlockNumber _number) const
return bc().currentHash(); return bc().currentHash();
return bc().numberHash(_number); return bc().numberHash(_number);
} }
BlockNumber ClientBase::numberFromHash(h256 _blockHash) const
{
return bc().number(_blockHash);
}

2
libethereum/ClientBase.h

@ -111,10 +111,12 @@ public:
virtual LocalisedLogEntries checkWatch(unsigned _watchId) override; virtual LocalisedLogEntries checkWatch(unsigned _watchId) override;
virtual h256 hashFromNumber(BlockNumber _number) const override; virtual h256 hashFromNumber(BlockNumber _number) const override;
virtual BlockNumber numberFromHash(h256 _blockHash) const override;
virtual BlockInfo blockInfo(h256 _hash) const override; virtual BlockInfo blockInfo(h256 _hash) const override;
virtual BlockDetails blockDetails(h256 _hash) const override; virtual BlockDetails blockDetails(h256 _hash) const override;
virtual Transaction transaction(h256 _transactionHash) const override; virtual Transaction transaction(h256 _transactionHash) const override;
virtual Transaction transaction(h256 _blockHash, unsigned _i) const override; virtual Transaction transaction(h256 _blockHash, unsigned _i) const override;
virtual std::pair<h256, unsigned> transactionLocation(h256 const& _transactionHash) const override;
virtual Transactions transactions(h256 _blockHash) const override; virtual Transactions transactions(h256 _blockHash) const override;
virtual TransactionHashes transactionHashes(h256 _blockHash) const override; virtual TransactionHashes transactionHashes(h256 _blockHash) const override;
virtual BlockInfo uncle(h256 _blockHash, unsigned _i) const override; virtual BlockInfo uncle(h256 _blockHash, unsigned _i) const override;

2
libethereum/Interface.h

@ -119,7 +119,9 @@ public:
// [BLOCK QUERY API] // [BLOCK QUERY API]
virtual Transaction transaction(h256 _transactionHash) const = 0; virtual Transaction transaction(h256 _transactionHash) const = 0;
virtual std::pair<h256, unsigned> transactionLocation(h256 const& _transactionHash) const = 0;
virtual h256 hashFromNumber(BlockNumber _number) const = 0; virtual h256 hashFromNumber(BlockNumber _number) const = 0;
virtual BlockNumber numberFromHash(h256 _blockHash) const = 0;
virtual BlockInfo blockInfo(h256 _hash) const = 0; virtual BlockInfo blockInfo(h256 _hash) const = 0;
virtual BlockDetails blockDetails(h256 _hash) const = 0; virtual BlockDetails blockDetails(h256 _hash) const = 0;

23
libweb3jsonrpc/WebThreeStubServerBase.cpp

@ -79,7 +79,7 @@ static Json::Value toJson(dev::eth::BlockInfo const& _bi)
return res; return res;
} }
static Json::Value toJson(dev::eth::Transaction const& _t) static Json::Value toJson(dev::eth::Transaction const& _t, std::pair<h256, unsigned> _location, BlockNumber _blockNumber)
{ {
Json::Value res; Json::Value res;
if (_t) if (_t)
@ -92,6 +92,9 @@ static Json::Value toJson(dev::eth::Transaction const& _t)
res["gasPrice"] = toJS(_t.gasPrice()); res["gasPrice"] = toJS(_t.gasPrice());
res["nonce"] = toJS(_t.nonce()); res["nonce"] = toJS(_t.nonce());
res["value"] = toJS(_t.value()); res["value"] = toJS(_t.value());
res["blockHash"] = toJS(_location.first);
res["transactionIndex"] = toJS(_location.second);
res["blockNumber"] = toJS(_blockNumber);
} }
return res; return res;
} }
@ -105,8 +108,8 @@ static Json::Value toJson(dev::eth::BlockInfo const& _bi, UncleHashes const& _us
for (h256 h: _us) for (h256 h: _us)
res["uncles"].append(toJS(h)); res["uncles"].append(toJS(h));
res["transactions"] = Json::Value(Json::arrayValue); res["transactions"] = Json::Value(Json::arrayValue);
for (Transaction const& t: _ts) for (unsigned i = 0; i < _ts.size(); i++)
res["transactions"].append(toJson(t)); res["transactions"].append(toJson(_ts[i], std::make_pair(_bi.hash(), i), (BlockNumber)_bi.number));
} }
return res; return res;
} }
@ -547,7 +550,9 @@ Json::Value WebThreeStubServerBase::eth_getTransactionByHash(string const& _tran
{ {
try try
{ {
return toJson(client()->transaction(jsToFixed<32>(_transactionHash))); h256 h = jsToFixed<32>(_transactionHash);
auto l = client()->transactionLocation(h);
return toJson(client()->transaction(h), l, client()->numberFromHash(l.first));
} }
catch (...) catch (...)
{ {
@ -559,7 +564,10 @@ Json::Value WebThreeStubServerBase::eth_getTransactionByBlockHashAndIndex(string
{ {
try try
{ {
return toJson(client()->transaction(jsToFixed<32>(_blockHash), jsToInt(_transactionIndex))); h256 bh = jsToFixed<32>(_blockHash);
unsigned ti = jsToInt(_transactionIndex);
Transaction t = client()->transaction(bh, ti);
return toJson(t, make_pair(bh, ti), client()->numberFromHash(bh));
} }
catch (...) catch (...)
{ {
@ -571,7 +579,10 @@ Json::Value WebThreeStubServerBase::eth_getTransactionByBlockNumberAndIndex(stri
{ {
try try
{ {
return toJson(client()->transaction(jsToBlockNumber(_blockNumber), jsToInt(_transactionIndex))); BlockNumber bn = jsToBlockNumber(_blockNumber);
unsigned ti = jsToInt(_transactionIndex);
Transaction t = client()->transaction(bn, ti);
return toJson(t, make_pair(client()->hashFromNumber(bn), ti), bn);
} }
catch (...) catch (...)
{ {

Loading…
Cancel
Save