mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	logs
This commit is contained in:
		
							parent
							
								
									603bad34f9
								
							
						
					
					
						commit
						966709b7d7
					
				| @ -85,6 +85,15 @@ RPCSession::TransactionReceipt RPCSession::eth_getTransactionReceipt(string cons | ||||
| 	BOOST_REQUIRE(!result.isNull()); | ||||
| 	receipt.gasUsed = result["gasUsed"].asString(); | ||||
| 	receipt.contractAddress = result["contractAddress"].asString(); | ||||
| 	for (auto const& log: result["logs"]) | ||||
| 	{ | ||||
| 		LogEntry entry; | ||||
| 		entry.address = log["address"].asString(); | ||||
| 		entry.data = log["data"].asString(); | ||||
| 		for (auto const& topic: log["topics"]) | ||||
| 			entry.topics.push_back(topic.asString()); | ||||
| 		receipt.logEntries.push_back(entry); | ||||
| 	} | ||||
| 	return receipt; | ||||
| } | ||||
| 
 | ||||
| @ -174,10 +183,9 @@ Json::Value RPCSession::rpcCall(string const& _methodName, vector<string> const& | ||||
| 	request += "],\"id\":" + to_string(m_rpcSequence) + "}"; | ||||
| 	++m_rpcSequence; | ||||
| 
 | ||||
| 	//cout << "Request: " << request << endl;
 | ||||
| 	string reply = m_ipcSocket.sendRequest(request); | ||||
| 
 | ||||
| 	cout << "Request: " << request << endl; | ||||
| 	cout << "Reply: " << reply << endl; | ||||
| 	//cout << "Reply: " << reply << endl;
 | ||||
| 
 | ||||
| 	Json::Value result; | ||||
| 	Json::Reader().parse(reply, result, false); | ||||
|  | ||||
| @ -59,10 +59,17 @@ public: | ||||
| 		std::string toJson() const; | ||||
| 	}; | ||||
| 
 | ||||
| 	struct LogEntry { | ||||
| 		std::string address; | ||||
| 		std::vector<std::string> topics; | ||||
| 		std::string data; | ||||
| 	}; | ||||
| 
 | ||||
| 	struct TransactionReceipt | ||||
| 	{ | ||||
| 		std::string gasUsed; | ||||
| 		std::string contractAddress; | ||||
| 		std::vector<LogEntry> logEntries; | ||||
| 	}; | ||||
| 
 | ||||
| 	static RPCSession& instance(std::string const& _path); | ||||
|  | ||||
| @ -1553,7 +1553,7 @@ BOOST_AUTO_TEST_CASE(log0) | ||||
| 							 "}\n"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	callContractFunction("a()"); | ||||
| 	BOOST_CHECK_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_REQUIRE_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); | ||||
| 	BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1))); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 0); | ||||
| @ -1568,7 +1568,7 @@ BOOST_AUTO_TEST_CASE(log1) | ||||
| 							 "}\n"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	callContractFunction("a()"); | ||||
| 	BOOST_CHECK_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_REQUIRE_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); | ||||
| 	BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1))); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 1); | ||||
| @ -1584,7 +1584,7 @@ BOOST_AUTO_TEST_CASE(log2) | ||||
| 							 "}\n"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	callContractFunction("a()"); | ||||
| 	BOOST_CHECK_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_REQUIRE_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); | ||||
| 	BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1))); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 2); | ||||
| @ -1601,7 +1601,7 @@ BOOST_AUTO_TEST_CASE(log3) | ||||
| 							 "}\n"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	callContractFunction("a()"); | ||||
| 	BOOST_CHECK_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_REQUIRE_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); | ||||
| 	BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1))); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 3); | ||||
| @ -1618,7 +1618,7 @@ BOOST_AUTO_TEST_CASE(log4) | ||||
| 							 "}\n"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	callContractFunction("a()"); | ||||
| 	BOOST_CHECK_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_REQUIRE_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); | ||||
| 	BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1))); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 4); | ||||
| @ -1634,7 +1634,7 @@ BOOST_AUTO_TEST_CASE(log_in_constructor) | ||||
| 							 "  }\n" | ||||
| 							 "}\n"; | ||||
| 	compileAndRun(sourceCode); | ||||
| 	BOOST_CHECK_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_REQUIRE_EQUAL(m_logs.size(), 1); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); | ||||
| 	BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(1))); | ||||
| 	BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 1); | ||||
|  | ||||
| @ -39,7 +39,6 @@ ExecutionFramework::ExecutionFramework(): | ||||
| 	if (g_logVerbosity != -1) | ||||
| 		g_logVerbosity = 0; | ||||
| 
 | ||||
| 	cout << "New Framework" << endl; | ||||
| 	m_rpc.test_rewindToBlock(0); | ||||
| } | ||||
| 
 | ||||
| @ -69,9 +68,18 @@ void ExecutionFramework::sendMessage(bytes const& _data, bool _isCreation, u256 | ||||
| 		BOOST_REQUIRE(m_contractAddress); | ||||
| 		string code = m_rpc.eth_getCode(receipt.contractAddress, "latest"); | ||||
| 		BOOST_REQUIRE(code.size() > 2); | ||||
| 		m_output = asBytes(code); | ||||
| 		m_output = fromHex(code, WhenError::Throw); | ||||
| 	} | ||||
| 
 | ||||
| 	m_gasUsed = u256(receipt.gasUsed); | ||||
| 	m_logs.clear(); | ||||
| 	for (auto const& log: receipt.logEntries) | ||||
| 	{ | ||||
| 		LogEntry entry; | ||||
| 		entry.address = Address(log.address); | ||||
| 		for (auto const& topic: log.topics) | ||||
| 			entry.topics.push_back(h256(topic)); | ||||
| 		entry.data = fromHex(log.data, WhenError::Throw); | ||||
| 		m_logs.push_back(entry); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -253,6 +253,13 @@ protected: | ||||
| 
 | ||||
| 	RPCSession& m_rpc; | ||||
| 
 | ||||
| 	struct LogEntry | ||||
| 	{ | ||||
| 		Address address; | ||||
| 		std::vector<h256> topics; | ||||
| 		bytes data; | ||||
| 	}; | ||||
| 
 | ||||
| 	std::unique_ptr<eth::SealEngineFace> m_sealEngine; | ||||
| 	size_t m_optimizeRuns = 200; | ||||
| 	bool m_optimize = false; | ||||
| @ -265,7 +272,7 @@ protected: | ||||
| 	u256 const m_gasPrice = 100 * eth::szabo; | ||||
| 	u256 const m_gas = 100000000; | ||||
| 	bytes m_output; | ||||
| 	eth::LogEntries m_logs; | ||||
| 	std::vector<LogEntry> m_logs; | ||||
| 	u256 m_gasUsed; | ||||
| }; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user