Browse Source

LocalisedTransaction && LocalisedTransactionReceipt

cl-refactor
Marek Kotewicz 9 years ago
parent
commit
4ec30f961e
  1. 2
      libethereum/Client.cpp
  2. 2
      libethereum/ClientBase.cpp
  3. 24
      libethereum/Transaction.h
  4. 48
      libethereum/TransactionReceipt.h
  5. 19
      libevm/ExtVMFace.h

2
libethereum/Client.cpp

@ -429,7 +429,7 @@ void Client::appendFromNewBlock(h256 const& _block, h256Hash& io_changed)
auto transactionHash = transaction(d.hash(), j).sha3();
// filter catches them
for (LogEntry const& l: m)
i.second.changes.push_back(LocalisedLogEntry(l, d, transactionHash, j, logIndex));
i.second.changes.push_back(LocalisedLogEntry(l, d.hash(), (BlockNumber)d.number, transactionHash, j, logIndex));
io_changed.insert(i.first);
}
}

2
libethereum/ClientBase.cpp

@ -203,7 +203,7 @@ LocalisedLogEntries ClientBase::logs(LogFilter const& _f) const
{
total += le.size();
for (unsigned j = 0; j < le.size(); ++j)
ret.insert(ret.begin(), LocalisedLogEntry(le[j], info, th, i, logIndex));
ret.insert(ret.begin(), LocalisedLogEntry(le[j], info.hash(), (BlockNumber)info.number, th, i, logIndex));
}
}

24
libethereum/Transaction.h

@ -130,5 +130,29 @@ private:
/// Nice name for vector of Transaction.
using Transactions = std::vector<Transaction>;
class LocalisedTransaction: public Transaction
{
public:
LocalisedTransaction(
Transaction const& _t,
std::pair<h256, unsigned> const& _location,
BlockNumber _blockNumber
):
Transaction(_t),
m_blockHash(_location.first),
m_blockNumber(_blockNumber),
m_transactionIndex(_location.second)
{}
h256 const& blockHash() const { return m_blockHash; }
BlockNumber blockNumber() const { return m_blockNumber; }
unsigned transactionIndex() const { return m_transactionIndex; }
private:
h256 m_blockHash;
BlockNumber m_blockNumber;
unsigned m_transactionIndex;
};
}
}

48
libethereum/TransactionReceipt.h

@ -58,5 +58,53 @@ using TransactionReceipts = std::vector<TransactionReceipt>;
std::ostream& operator<<(std::ostream& _out, eth::TransactionReceipt const& _r);
class LocalisedTransactionReceipt: public TransactionReceipt
{
public:
LocalisedTransactionReceipt(
TransactionReceipt const& _t,
h256 const& _hash,
h256 const& _blockHash,
BlockNumber _blockNumber,
unsigned _transactionIndex,
Address const& _contractAddress = Address()
):
TransactionReceipt(_t),
m_hash(_hash),
m_blockHash(_blockHash),
m_blockNumber(_blockNumber),
m_transactionIndex(_transactionIndex),
m_contractAddress(_contractAddress)
{}
h256 const& hash() const { return m_hash; }
h256 const& blockHash() const { return m_blockHash; }
BlockNumber blockNumber() const { return m_blockNumber; }
unsigned transactionIndex() const { return m_transactionIndex; }
Address const& contractAddress() const { return m_contractAddress; }
LocalisedLogEntries localisedLogs() const
{
LocalisedLogEntries localisedEntries;
LogEntries entries = log();
for (unsigned i = 0; i < entries.size(); i++)
localisedEntries.push_back(LocalisedLogEntry(
entries[i],
m_blockHash,
m_blockNumber,
m_hash,
m_transactionIndex,
i));
return localisedEntries;
};
private:
h256 m_hash;
h256 m_blockHash;
BlockNumber m_blockNumber;
unsigned m_transactionIndex;
Address m_contractAddress;
};
}
}

19
libevm/ExtVMFace.h

@ -76,17 +76,18 @@ struct LocalisedLogEntry: public LogEntry
explicit LocalisedLogEntry(
LogEntry const& _le,
BlockInfo const& _bi,
h256 _th,
unsigned _ti,
unsigned _li
h256 const& _blockHash,
BlockNumber _blockNumber,
h256 const& _transactionHash,
unsigned _transactionIndex,
unsigned _logIndex
):
LogEntry(_le),
blockHash(_bi.hash()),
blockNumber((BlockNumber)_bi.number),
transactionHash(_th),
transactionIndex(_ti),
logIndex(_li),
blockHash(_blockHash),
blockNumber(_blockNumber),
transactionHash(_transactionHash),
transactionIndex(_transactionIndex),
logIndex(_logIndex),
mined(true)
{}

Loading…
Cancel
Save