Ethereum  PoC-8
The C++ Implementation of Ethereum
Interface.h
Go to the documentation of this file.
1 /*
2  This file is part of cpp-ethereum.
3 
4  cpp-ethereum is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  cpp-ethereum is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
16 */
22 #pragma once
23 
24 #include <libdevcore/Common.h>
25 #include <libdevcore/CommonIO.h>
26 #include <libdevcore/Guards.h>
27 #include <libdevcrypto/Common.h>
28 #include <libethcore/SealEngine.h>
29 #include "GasPricer.h"
30 #include "LogFilter.h"
31 #include "Transaction.h"
32 #include "BlockDetails.h"
33 
34 namespace dev
35 {
36 namespace eth
37 {
38 
39 struct SyncStatus;
40 
41 using TransactionHashes = h256s;
42 using UncleHashes = h256s;
43 
44 enum class Reaping
45 {
46  Automatic,
47  Manual
48 };
49 
50 enum class FudgeFactor
51 {
52  Strict,
53  Lenient
54 };
55 
57 {
60 };
61 
62 using GasEstimationCallback = std::function<void(GasEstimationProgress const&)>;
63 
67 class Interface
68 {
69 public:
71  Interface() {}
72 
74  virtual ~Interface() {}
75 
76  // [TRANSACTION API]
77 
80  virtual h256 submitTransaction(TransactionSkeleton const& _t, Secret const& _secret) = 0;
81 
83  void submitTransaction(Secret const& _secret, u256 const& _value, Address const& _dest, bytes const& _data = bytes(), u256 const& _gas = 1000000, u256 const& _gasPrice = DefaultGasPrice, u256 const& _nonce = Invalid256);
84 
86  virtual h256 importTransaction(Transaction const& _t) = 0;
87 
89  virtual void flushTransactions() = 0;
90 
92  virtual ExecutionResult call(Address const& _from, u256 _value, Address _dest, bytes const& _data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff = FudgeFactor::Strict) = 0;
93  ExecutionResult call(Address const& _from, u256 _value, Address _dest, bytes const& _data = bytes(), u256 _gas = 1000000, u256 _gasPrice = DefaultGasPrice, FudgeFactor _ff = FudgeFactor::Strict) { return call(_from, _value, _dest, _data, _gas, _gasPrice, m_default, _ff); }
94  ExecutionResult call(Secret const& _secret, u256 _value, Address _dest, bytes const& _data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff = FudgeFactor::Strict) { return call(toAddress(_secret), _value, _dest, _data, _gas, _gasPrice, _blockNumber, _ff); }
95  ExecutionResult call(Secret const& _secret, u256 _value, Address _dest, bytes const& _data, u256 _gas, u256 _gasPrice, FudgeFactor _ff = FudgeFactor::Strict) { return call(toAddress(_secret), _value, _dest, _data, _gas, _gasPrice, _ff); }
96 
98  virtual ImportResult injectBlock(bytes const& _block) = 0;
99 
103  virtual std::pair<u256, ExecutionResult> estimateGas(Address const& _from, u256 _value, Address _dest, bytes const& _data, int64_t _maxGas, u256 _gasPrice, BlockNumber _blockNumber, GasEstimationCallback const& _callback = GasEstimationCallback()) = 0;
104 
105  // [STATE-QUERY API]
106 
107  int getDefault() const { return m_default; }
108  void setDefault(BlockNumber _block) { m_default = _block; }
109 
110  u256 balanceAt(Address _a) const { return balanceAt(_a, m_default); }
111  u256 countAt(Address _a) const { return countAt(_a, m_default); }
112  u256 stateAt(Address _a, u256 _l) const { return stateAt(_a, _l, m_default); }
113  bytes codeAt(Address _a) const { return codeAt(_a, m_default); }
114  h256 codeHashAt(Address _a) const { return codeHashAt(_a, m_default); }
115  std::map<h256, std::pair<u256, u256>> storageAt(Address _a) const { return storageAt(_a, m_default); }
116 
117  virtual u256 balanceAt(Address _a, BlockNumber _block) const = 0;
118  virtual u256 countAt(Address _a, BlockNumber _block) const = 0;
119  virtual u256 stateAt(Address _a, u256 _l, BlockNumber _block) const = 0;
120  virtual h256 stateRootAt(Address _a, BlockNumber _block) const = 0;
121  virtual bytes codeAt(Address _a, BlockNumber _block) const = 0;
122  virtual h256 codeHashAt(Address _a, BlockNumber _block) const = 0;
123  virtual std::map<h256, std::pair<u256, u256>> storageAt(Address _a, BlockNumber _block) const = 0;
124 
125  // [LOGS API]
126 
127  virtual LocalisedLogEntries logs(unsigned _watchId) const = 0;
128  virtual LocalisedLogEntries logs(LogFilter const& _filter) const = 0;
129 
131  virtual unsigned installWatch(LogFilter const& _filter, Reaping _r = Reaping::Automatic) = 0;
132  virtual unsigned installWatch(h256 _filterId, Reaping _r = Reaping::Automatic) = 0;
133  virtual bool uninstallWatch(unsigned _watchId) = 0;
134  LocalisedLogEntries peekWatchSafe(unsigned _watchId) const { try { return peekWatch(_watchId); } catch (...) { return LocalisedLogEntries(); } }
135  LocalisedLogEntries checkWatchSafe(unsigned _watchId) { try { return checkWatch(_watchId); } catch (...) { return LocalisedLogEntries(); } }
136  virtual LocalisedLogEntries peekWatch(unsigned _watchId) const = 0;
137  virtual LocalisedLogEntries checkWatch(unsigned _watchId) = 0;
138 
139  // [BLOCK QUERY API]
140 
141  virtual bool isKnownTransaction(h256 const& _transactionHash) const = 0;
142  virtual bool isKnownTransaction(h256 const& _blockHash, unsigned _i) const = 0;
143  virtual Transaction transaction(h256 _transactionHash) const = 0;
144  virtual LocalisedTransaction localisedTransaction(h256 const& _transactionHash) const = 0;
145  virtual TransactionReceipt transactionReceipt(h256 const& _transactionHash) const = 0;
146  virtual LocalisedTransactionReceipt localisedTransactionReceipt(h256 const& _transactionHash) const = 0;
147  virtual std::pair<h256, unsigned> transactionLocation(h256 const& _transactionHash) const = 0;
148  virtual h256 hashFromNumber(BlockNumber _number) const = 0;
149  virtual BlockNumber numberFromHash(h256 _blockHash) const = 0;
150  virtual int compareBlockHashes(h256 _h1, h256 _h2) const = 0;
151 
152  virtual bool isKnown(BlockNumber _block) const = 0;
153  virtual bool isKnown(h256 const& _hash) const = 0;
154  virtual BlockHeader blockInfo(h256 _hash) const = 0;
155  virtual BlockDetails blockDetails(h256 _hash) const = 0;
156  virtual Transaction transaction(h256 _blockHash, unsigned _i) const = 0;
157  virtual LocalisedTransaction localisedTransaction(h256 const& _blockHash, unsigned _i) const = 0;
158  virtual BlockHeader uncle(h256 _blockHash, unsigned _i) const = 0;
159  virtual UncleHashes uncleHashes(h256 _blockHash) const = 0;
160  virtual unsigned transactionCount(h256 _blockHash) const = 0;
161  virtual unsigned transactionCount(BlockNumber _block) const = 0;
162  virtual unsigned uncleCount(h256 _blockHash) const = 0;
163  virtual Transactions transactions(h256 _blockHash) const = 0;
164  virtual Transactions transactions(BlockNumber _block) const = 0;
165  virtual TransactionHashes transactionHashes(h256 _blockHash) const = 0;
166 
167  virtual BlockHeader pendingInfo() const { return BlockHeader(); }
168  virtual BlockDetails pendingDetails() const { return BlockDetails(); }
170  virtual EVMSchedule evmSchedule() const { return EVMSchedule(); }
171 
172  BlockHeader blockInfo(BlockNumber _block) const;
173  BlockDetails blockDetails(BlockNumber _block) const;
174  Transaction transaction(BlockNumber _block, unsigned _i) const { auto p = transactions(_block); return _i < p.size() ? p[_i] : Transaction(); }
175  TransactionHashes transactionHashes(BlockNumber _block) const { if (_block == PendingBlock) return pendingHashes(); return transactionHashes(hashFromNumber(_block)); }
176  BlockHeader uncle(BlockNumber _block, unsigned _i) const { return uncle(hashFromNumber(_block), _i); }
177  UncleHashes uncleHashes(BlockNumber _block) const { return uncleHashes(hashFromNumber(_block)); }
178  unsigned uncleCount(BlockNumber _block) const { return uncleCount(hashFromNumber(_block)); }
179 
180  // [EXTRA API]:
181 
183  virtual unsigned number() const = 0;
184 
187  virtual Transactions pending() const = 0;
188  virtual h256s pendingHashes() const = 0;
189 
192  virtual Addresses addresses() const { return addresses(m_default); }
193  virtual Addresses addresses(BlockNumber _block) const = 0;
194 
196  virtual u256 gasLimitRemaining() const = 0;
197  // Get the gas bidding price
198  virtual u256 gasBidPrice() const = 0;
199 
201  virtual SyncStatus syncStatus() const = 0;
202 
205 
206  // [SEALING API]:
207 
209  virtual void setAuthor(Address const& _us) = 0;
211  virtual Address author() const = 0;
212 
215  virtual void startSealing() = 0;
218  virtual void stopSealing() = 0;
220  virtual bool wouldSeal() const = 0;
221 
223  virtual bool isSyncing() const { return false; }
225  virtual bool isMajorSyncing() const { return false; }
226 
228  virtual u256 networkId() const { return 0; }
230  virtual void setNetworkId(u256 const&) {}
231 
233  virtual int chainId() const { return 0; }
234 
236  virtual SealEngineFace* sealEngine() const { return nullptr; }
237 
239  virtual std::tuple<h256, h256, h256> getWork() = 0;
240 
241 protected:
242  int m_default = PendingBlock;
243 };
244 
245 class Watch;
246 
247 }
248 }
249 
250 namespace std { void swap(dev::eth::Watch& _a, dev::eth::Watch& _b); }
251 
252 namespace dev
253 {
254 namespace eth
255 {
256 
257 class Watch: public boost::noncopyable
258 {
259  friend void std::swap(Watch& _a, Watch& _b);
260 
261 public:
262  Watch() {}
263  Watch(Interface& _c, h256 _f): m_c(&_c), m_id(_c.installWatch(_f)) {}
264  Watch(Interface& _c, LogFilter const& _tf): m_c(&_c), m_id(_c.installWatch(_tf)) {}
265  ~Watch() { if (m_c) m_c->uninstallWatch(m_id); }
266 
267  LocalisedLogEntries check() { return m_c ? m_c->checkWatch(m_id) : LocalisedLogEntries(); }
268  LocalisedLogEntries peek() { return m_c ? m_c->peekWatch(m_id) : LocalisedLogEntries(); }
269  LocalisedLogEntries logs() const { return m_c->logs(m_id); }
270 
271 private:
272  Interface* m_c = nullptr;
273  unsigned m_id = 0;
274 };
275 
276 }
277 }
278 
279 namespace std
280 {
281 
282 inline void swap(dev::eth::Watch& _a, dev::eth::Watch& _b)
283 {
284  swap(_a.m_c, _b.m_c);
285  swap(_a.m_id, _b.m_id);
286 }
287 
288 }
dev::eth::Interface::installWatch
virtual unsigned installWatch(LogFilter const &_filter, Reaping _r=Reaping::Automatic)=0
Install, uninstall and query watches.
dev::eth::Interface::hashFromNumber
virtual h256 hashFromNumber(BlockNumber _number) const =0
dev::eth::Interface::gasBidPrice
virtual u256 gasBidPrice() const =0
dev::eth::TransactionSkeleton
Definition: Common.h:184
dev::eth::Interface::stateRootAt
virtual h256 stateRootAt(Address _a, BlockNumber _block) const =0
dev::eth::ImportResult
ImportResult
Definition: Common.h:97
dev::eth::Transaction
Encodes a transaction, ready to be exported to or freshly imported from RLP.
Definition: Transaction.h:86
dev::eth::LogFilter
Definition: LogFilter.h:51
dev::eth::Interface::stateAt
u256 stateAt(Address _a, u256 _l) const
Definition: Interface.h:112
dev::eth::Interface::countAt
u256 countAt(Address _a) const
Definition: Interface.h:111
dev::eth::Interface::setDefault
void setDefault(BlockNumber _block)
Definition: Interface.h:108
dev::eth::Interface::uncle
virtual BlockHeader uncle(h256 _blockHash, unsigned _i) const =0
dev::eth::Interface::transactions
virtual Transactions transactions(BlockNumber _block) const =0
dev::eth::BlockHeader
Encapsulation of a block header. Class to contain all of a block header's data. It is able to parse a...
Definition: BlockHeader.h:97
dev::eth::SealEngineFace
Definition: SealEngine.h:46
dev::eth::Interface::stateAt
virtual u256 stateAt(Address _a, u256 _l, BlockNumber _block) const =0
dev::eth::GasEstimationProgress
Definition: Interface.h:57
dev::eth::Interface::number
virtual unsigned number() const =0
dev::eth::Transactions
std::vector< Transaction > Transactions
Nice name for vector of Transaction.
Definition: Transaction.h:122
dev::eth::Interface::author
virtual Address author() const =0
Get the block author address.
dev::eth::LocalisedTransaction
Definition: Transaction.h:125
dev::eth::SyncStatus
Definition: CommonNet.h:96
dev::SecureFixedHash< 32 >
dev::eth::Interface::injectBlock
virtual ImportResult injectBlock(bytes const &_block)=0
Injects the RLP-encoded block given by the _rlp into the block queue directly.
dev::eth::FudgeFactor::Strict
@ Strict
dev::eth::Interface::codeHashAt
virtual h256 codeHashAt(Address _a, BlockNumber _block) const =0
dev::eth::Interface::sealEngine
virtual SealEngineFace * sealEngine() const
Get the seal engine.
Definition: Interface.h:236
dev::eth::Interface::transaction
Transaction transaction(BlockNumber _block, unsigned _i) const
Definition: Interface.h:174
dev::eth::Interface::chainId
virtual int chainId() const
Gets the chain id.
Definition: Interface.h:233
dev::eth::Interface::uncleHashes
virtual UncleHashes uncleHashes(h256 _blockHash) const =0
dev::eth::Interface::blockInfo
virtual BlockHeader blockInfo(h256 _hash) const =0
dev::eth::Interface::uncle
BlockHeader uncle(BlockNumber _block, unsigned _i) const
Definition: Interface.h:176
dev::eth::FudgeFactor
FudgeFactor
Definition: Interface.h:51
dev::eth::Interface::gasLimitRemaining
virtual u256 gasLimitRemaining() const =0
Get the remaining gas limit in this block.
dev::eth::Watch::~Watch
~Watch()
Definition: Interface.h:265
dev::eth::Reaping
Reaping
Definition: Interface.h:45
std::swap
void swap(dev::eth::Watch &_a, dev::eth::Watch &_b)
Definition: Interface.h:282
dev::eth::Interface::flushTransactions
virtual void flushTransactions()=0
Blocks until all pending transactions have been processed.
dev::eth::Interface::transactionHashes
TransactionHashes transactionHashes(BlockNumber _block) const
Definition: Interface.h:175
dev::eth::GasEstimationProgress::upperBound
u256 upperBound
Definition: Interface.h:59
dev::eth::Interface::wouldSeal
virtual bool wouldSeal() const =0
Would we like to be sealing now?
dev::eth::Interface::codeAt
bytes codeAt(Address _a) const
Definition: Interface.h:113
dev::eth::Interface::submitTransaction
virtual h256 submitTransaction(TransactionSkeleton const &_t, Secret const &_secret)=0
dev::eth::Watch::Watch
Watch(Interface &_c, h256 _f)
Definition: Interface.h:263
dev::eth::Interface::balanceAt
virtual u256 balanceAt(Address _a, BlockNumber _block) const =0
dev::eth::Interface::localisedTransaction
virtual LocalisedTransaction localisedTransaction(h256 const &_transactionHash) const =0
Common.h
dev::eth::Interface::setAuthor
virtual void setAuthor(Address const &_us)=0
Set the block author address.
dev::eth::Interface::~Interface
virtual ~Interface()
Destructor.
Definition: Interface.h:74
dev::eth::Interface::pendingInfo
virtual BlockHeader pendingInfo() const
Definition: Interface.h:167
dev::eth::Interface::estimateGas
virtual std::pair< u256, ExecutionResult > estimateGas(Address const &_from, u256 _value, Address _dest, bytes const &_data, int64_t _maxGas, u256 _gasPrice, BlockNumber _blockNumber, GasEstimationCallback const &_callback=GasEstimationCallback())=0
dev::eth::BlockDetails
Definition: BlockDetails.h:42
dev::Addresses
h160s Addresses
A vector of Ethereum addresses.
Definition: Address.h:33
dev::eth::Interface::isKnown
virtual bool isKnown(BlockNumber _block) const =0
dev::FixedHash< 32 >
dev::eth::Interface::transactionLocation
virtual std::pair< h256, unsigned > transactionLocation(h256 const &_transactionHash) const =0
dev::eth::Interface::evmSchedule
virtual EVMSchedule evmSchedule() const
Definition: Interface.h:170
dev::eth::Interface::call
ExecutionResult call(Secret const &_secret, u256 _value, Address _dest, bytes const &_data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff=FudgeFactor::Strict)
Definition: Interface.h:94
dev::eth::Interface::uncleHashes
UncleHashes uncleHashes(BlockNumber _block) const
Definition: Interface.h:177
dev::eth::Interface::transactions
virtual Transactions transactions(h256 _blockHash) const =0
dev::eth::Interface::pending
virtual Transactions pending() const =0
dev::eth::Interface::balanceAt
u256 balanceAt(Address _a) const
Definition: Interface.h:110
dev::eth::Interface::uncleCount
unsigned uncleCount(BlockNumber _block) const
Definition: Interface.h:178
dev::eth::Interface::localisedTransactionReceipt
virtual LocalisedTransactionReceipt localisedTransactionReceipt(h256 const &_transactionHash) const =0
dev::eth::Interface::transactionReceipt
virtual TransactionReceipt transactionReceipt(h256 const &_transactionHash) const =0
dev::eth::Interface::startSealing
virtual void startSealing()=0
dev::eth::Interface::transaction
virtual Transaction transaction(h256 _transactionHash) const =0
dev::eth::Watch
Definition: Interface.h:258
dev::eth::toAddress
Address toAddress(std::string const &_s)
Convert the given string into an address.
Definition: Common.cpp:56
dev::h256s
std::vector< h256 > h256s
Definition: FixedHash.h:361
CommonIO.h
Common.h
dev::eth::Interface::compareBlockHashes
virtual int compareBlockHashes(h256 _h1, h256 _h2) const =0
dev::eth::Interface::checkWatchSafe
LocalisedLogEntries checkWatchSafe(unsigned _watchId)
Definition: Interface.h:135
dev::eth::Interface::transactionHashes
virtual TransactionHashes transactionHashes(h256 _blockHash) const =0
dev::eth::Interface::m_default
int m_default
Definition: Interface.h:242
dev::eth::Reaping::Manual
@ Manual
dev::eth::Interface::peekWatchSafe
LocalisedLogEntries peekWatchSafe(unsigned _watchId) const
Definition: Interface.h:134
dev::eth::Interface::countAt
virtual u256 countAt(Address _a, BlockNumber _block) const =0
dev::bytes
std::vector< byte > bytes
Definition: Common.h:72
dev::eth::Interface::setNetworkId
virtual void setNetworkId(u256 const &)
Sets the network id.
Definition: Interface.h:230
dev::eth::Watch::check
LocalisedLogEntries check()
Definition: Interface.h:267
dev::eth::Interface::syncStatus
virtual SyncStatus syncStatus() const =0
Get some information on the block queue.
SealEngine.h
dev::eth::Interface::installWatch
virtual unsigned installWatch(h256 _filterId, Reaping _r=Reaping::Automatic)=0
dev::eth::Interface::pendingHashes
virtual h256s pendingHashes() const =0
dev::eth::GasEstimationCallback
std::function< void(GasEstimationProgress const &)> GasEstimationCallback
Definition: Interface.h:62
Transaction.h
dev::eth::Interface::getWork
virtual std::tuple< h256, h256, h256 > getWork()=0
GasPricer.h
dev::eth::Interface::numberFromHash
virtual BlockNumber numberFromHash(h256 _blockHash) const =0
dev::eth::Interface::isKnownTransaction
virtual bool isKnownTransaction(h256 const &_transactionHash) const =0
dev::eth::Interface::isKnown
virtual bool isKnown(h256 const &_hash) const =0
dev::eth::Interface::transaction
virtual Transaction transaction(h256 _blockHash, unsigned _i) const =0
dev::eth::Interface::populateTransactionWithDefaults
virtual TransactionSkeleton populateTransactionWithDefaults(TransactionSkeleton const &_t) const =0
Populate the uninitialized fields in the supplied transaction with default values.
dev::eth::Interface
Main API hub for interfacing with Ethereum.
Definition: Interface.h:68
dev::eth::Watch::peek
LocalisedLogEntries peek()
Definition: Interface.h:268
dev::eth::Watch::Watch
Watch(Interface &_c, LogFilter const &_tf)
Definition: Interface.h:264
dev::Invalid256
constexpr u256 Invalid256
Definition: Common.h:147
dev::eth::Interface::networkId
virtual u256 networkId() const
Gets the network id.
Definition: Interface.h:228
dev::eth::Interface::isSyncing
virtual bool isSyncing() const
Are we updating the chain (syncing or importing a new block)?
Definition: Interface.h:223
dev::eth::Interface::blockDetails
virtual BlockDetails blockDetails(h256 _hash) const =0
dev::eth::LocalisedLogEntries
std::vector< LocalisedLogEntry > LocalisedLogEntries
Definition: LogEntry.h:94
dev::eth::Interface::call
ExecutionResult call(Secret const &_secret, u256 _value, Address _dest, bytes const &_data, u256 _gas, u256 _gasPrice, FudgeFactor _ff=FudgeFactor::Strict)
Definition: Interface.h:95
dev::eth::Watch::logs
LocalisedLogEntries logs() const
Definition: Interface.h:269
dev::eth::Interface::isKnownTransaction
virtual bool isKnownTransaction(h256 const &_blockHash, unsigned _i) const =0
dev::eth::Interface::logs
virtual LocalisedLogEntries logs(LogFilter const &_filter) const =0
dev::eth::Interface::call
virtual ExecutionResult call(Address const &_from, u256 _value, Address _dest, bytes const &_data, u256 _gas, u256 _gasPrice, BlockNumber _blockNumber, FudgeFactor _ff=FudgeFactor::Strict)=0
Makes the given call. Nothing is recorded into the state.
dev::eth::Interface::storageAt
std::map< h256, std::pair< u256, u256 > > storageAt(Address _a) const
Definition: Interface.h:115
dev::eth::Interface::codeAt
virtual bytes codeAt(Address _a, BlockNumber _block) const =0
dev::eth::UncleHashes
h256s UncleHashes
Definition: BlockChain.h:81
dev::eth::GasEstimationProgress::lowerBound
u256 lowerBound
Definition: Interface.h:58
dev::eth::Interface::stopSealing
virtual void stopSealing()=0
dev::eth::Interface::uninstallWatch
virtual bool uninstallWatch(unsigned _watchId)=0
dev::eth::BlockNumber
unsigned BlockNumber
Definition: Common.h:64
std
Definition: FixedHash.h:393
dev::eth::Interface::peekWatch
virtual LocalisedLogEntries peekWatch(unsigned _watchId) const =0
dev::eth::Interface::checkWatch
virtual LocalisedLogEntries checkWatch(unsigned _watchId)=0
dev::eth::Interface::localisedTransaction
virtual LocalisedTransaction localisedTransaction(h256 const &_blockHash, unsigned _i) const =0
dev::u256
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
Definition: Common.h:121
dev::eth::Interface::addresses
virtual Addresses addresses(BlockNumber _block) const =0
dev::eth::Interface::getDefault
int getDefault() const
Definition: Interface.h:107
dev::eth::Interface::addresses
virtual Addresses addresses() const
Definition: Interface.h:192
dev::eth::Interface::call
ExecutionResult call(Address const &_from, u256 _value, Address _dest, bytes const &_data=bytes(), u256 _gas=1000000, u256 _gasPrice=DefaultGasPrice, FudgeFactor _ff=FudgeFactor::Strict)
Definition: Interface.h:93
dev::eth::TransactionReceipt
Definition: TransactionReceipt.h:40
dev::eth::Watch::Watch
Watch()
Definition: Interface.h:262
dev
Definition: Address.cpp:21
LogFilter.h
dev::eth::Interface::isMajorSyncing
virtual bool isMajorSyncing() const
Are we syncing the chain?
Definition: Interface.h:225
dev::eth::Interface::transactionCount
virtual unsigned transactionCount(BlockNumber _block) const =0
dev::eth::ExecutionResult
Description of the result of executing a transaction.
Definition: Transaction.h:71
dev::eth::LocalisedTransactionReceipt
Definition: TransactionReceipt.h:74
dev::eth::Interface::storageAt
virtual std::map< h256, std::pair< u256, u256 > > storageAt(Address _a, BlockNumber _block) const =0
dev::eth::Interface::codeHashAt
h256 codeHashAt(Address _a) const
Definition: Interface.h:114
dev::eth::Interface::transactionCount
virtual unsigned transactionCount(h256 _blockHash) const =0
Guards.h
dev::eth::Interface::importTransaction
virtual h256 importTransaction(Transaction const &_t)=0
Imports the given transaction into the transaction queue.
dev::eth::Reaping::Automatic
@ Automatic
dev::eth::EVMSchedule
Definition: EVMSchedule.h:29
dev::eth::FudgeFactor::Lenient
@ Lenient
dev::eth::Interface::uncleCount
virtual unsigned uncleCount(h256 _blockHash) const =0
dev::eth::Interface::pendingDetails
virtual BlockDetails pendingDetails() const
Definition: Interface.h:168
BlockDetails.h
dev::eth::Interface::Interface
Interface()
Constructor.
Definition: Interface.h:71
dev::eth::Interface::logs
virtual LocalisedLogEntries logs(unsigned _watchId) const =0
dev::eth::TransactionHashes
h256s TransactionHashes
Definition: BlockChain.h:80