mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge branch 'develop' into crypto
Conflicts: test/TestHelperCrypto.h
This commit is contained in:
commit
5693de0f13
@ -6,7 +6,8 @@ include_directories(..)
|
||||
link_directories(../libethcore)
|
||||
link_directories(../libethereum)
|
||||
|
||||
add_executable(testeth ${SRC_LIST})
|
||||
file(GLOB HEADERS "*.h")
|
||||
add_executable(testeth ${SRC_LIST} ${HEADERS})
|
||||
|
||||
target_link_libraries(testeth ethereum)
|
||||
target_link_libraries(testeth ethcore)
|
||||
|
@ -55,7 +55,7 @@ public:
|
||||
#endif
|
||||
|
||||
/// 256-bit hash of the node - this is a SHA-3/256 hash of the RLP of the node.
|
||||
h256 hash256() const { RLPStream s; makeRLP(s); return dev::eth::sha3(s.out()); }
|
||||
h256 hash256() const { RLPStream s; makeRLP(s); return dev::sha3(s.out()); }
|
||||
bytes rlp() const { RLPStream s; makeRLP(s); return s.out(); }
|
||||
void mark() { m_hash256 = h256(); }
|
||||
|
||||
@ -200,7 +200,7 @@ void MemTrieNode::putRLP(RLPStream& _parentStream) const
|
||||
if (s.out().size() < 32)
|
||||
_parentStream.APPEND_CHILD(s.out());
|
||||
else
|
||||
_parentStream << dev::eth::sha3(s.out());
|
||||
_parentStream << dev::sha3(s.out());
|
||||
}
|
||||
|
||||
void TrieBranchNode::makeRLP(RLPStream& _intoStream) const
|
||||
|
@ -22,13 +22,24 @@
|
||||
#pragma once
|
||||
|
||||
//#include <ostream>
|
||||
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4100 4244)
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wconversion"
|
||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||
#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor"
|
||||
#pragma GCC diagnostic ignored "-Wextra"
|
||||
#include <osrng.h>
|
||||
#include <eccrypto.h> // secp256r1
|
||||
#include <eccrypto.h> // secp256k1
|
||||
#include <oids.h> // ec domain
|
||||
#include <ecp.h> // ec prime field
|
||||
#include <files.h> // also for buffer
|
||||
#include <files.h> // cryptopp buffer
|
||||
#include <aes.h>
|
||||
#include <modes.h> // aes modes
|
||||
#pragma warning(pop)
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
using namespace std;
|
||||
using namespace CryptoPP;
|
||||
|
@ -344,7 +344,7 @@ int cryptoTest()
|
||||
int ret = secp256k1_ecdsa_recover_compact((byte const*)hmsg.data(), (int)hmsg.size(), (byte const*)sig64.data(), pubkey.data(), &pubkeylen, 0, (int)t.vrs.v - 27);
|
||||
pubkey.resize(pubkeylen);
|
||||
cout << "RECPUB: " << dec << ret << " " << pubkeylen << " " << toHex(pubkey) << endl;
|
||||
cout << "SENDER: " << hex << toAddress(dev::eth::sha3(bytesConstRef(&pubkey).cropped(1))) << dec << endl;
|
||||
cout << "SENDER: " << hex << toAddress(dev::sha3(bytesConstRef(&pubkey).cropped(1))) << dec << endl;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
|
@ -29,7 +29,6 @@
|
||||
|
||||
using namespace std;
|
||||
using namespace dev;
|
||||
using namespace dev::eth;
|
||||
namespace js = json_spirit;
|
||||
|
||||
BOOST_AUTO_TEST_CASE(hexPrefix_test)
|
||||
|
2
rlp.cpp
2
rlp.cpp
@ -79,7 +79,7 @@ namespace dev
|
||||
if ( v.type() == js::str_type )
|
||||
{
|
||||
const std::string& expectedText = v.get_str();
|
||||
if ( expectedText.front() == '#' )
|
||||
if ( !expectedText.empty() && expectedText.front() == '#' )
|
||||
{
|
||||
// Deal with bigint instead of a raw string
|
||||
std::string bigIntStr = expectedText.substr(1,expectedText.length()-1);
|
||||
|
46
trie.cpp
46
trie.cpp
@ -31,7 +31,6 @@
|
||||
|
||||
using namespace std;
|
||||
using namespace dev;
|
||||
using namespace dev::eth;
|
||||
|
||||
namespace js = json_spirit;
|
||||
|
||||
@ -236,6 +235,51 @@ BOOST_AUTO_TEST_CASE(moreTrieTests)
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(trieLowerBound)
|
||||
{
|
||||
cnote << "Stress-testing Trie.lower_bound...";
|
||||
{
|
||||
MemoryDB dm;
|
||||
EnforceRefs e(dm, true);
|
||||
GenericTrieDB<MemoryDB> d(&dm);
|
||||
d.init(); // initialise as empty tree.
|
||||
for (int a = 0; a < 20; ++a)
|
||||
{
|
||||
StringMap m;
|
||||
for (int i = 0; i < 50; ++i)
|
||||
{
|
||||
auto k = randomWord();
|
||||
auto v = toString(i);
|
||||
m[k] = v;
|
||||
d.insert(k, v);
|
||||
}
|
||||
|
||||
for (auto i: d)
|
||||
{
|
||||
auto it = d.lower_bound(i.first);
|
||||
for (auto iit = d.begin(); iit != d.end(); ++iit)
|
||||
if ((*iit).first.toString() >= i.first.toString())
|
||||
{
|
||||
BOOST_REQUIRE(it == iit);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (unsigned i = 0; i < 100; ++i)
|
||||
{
|
||||
auto k = randomWord();
|
||||
auto it = d.lower_bound(k);
|
||||
for (auto iit = d.begin(); iit != d.end(); ++iit)
|
||||
if ((*iit).first.toString() >= k)
|
||||
{
|
||||
BOOST_REQUIRE(it == iit);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(trieStess)
|
||||
{
|
||||
cnote << "Stress-testing Trie...";
|
||||
|
11
vm.cpp
11
vm.cpp
@ -493,7 +493,6 @@ void doTests(json_spirit::mValue& v, bool _fillin)
|
||||
BOOST_REQUIRE(o.count("pre") > 0);
|
||||
BOOST_REQUIRE(o.count("exec") > 0);
|
||||
|
||||
VM vm;
|
||||
dev::test::FakeExtVM fev;
|
||||
fev.importEnv(o["env"].get_obj());
|
||||
fev.importState(o["pre"].get_obj());
|
||||
@ -508,11 +507,13 @@ void doTests(json_spirit::mValue& v, bool _fillin)
|
||||
fev.code = &fev.thisTxCode;
|
||||
}
|
||||
|
||||
vm.reset(fev.gas);
|
||||
bytes output;
|
||||
u256 gas;
|
||||
try
|
||||
{
|
||||
output = vm.go(fev).toBytes();
|
||||
VM vm(fev.gas);
|
||||
output = vm.go(fev).toVector();
|
||||
gas = vm.gas(); // Get the remaining gas
|
||||
}
|
||||
catch (Exception const& _e)
|
||||
{
|
||||
@ -549,7 +550,7 @@ void doTests(json_spirit::mValue& v, bool _fillin)
|
||||
o["post"] = mValue(fev.exportState());
|
||||
o["callcreates"] = fev.exportCallCreates();
|
||||
o["out"] = "0x" + toHex(output);
|
||||
fev.push(o, "gas", vm.gas());
|
||||
fev.push(o, "gas", gas);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -573,7 +574,7 @@ void doTests(json_spirit::mValue& v, bool _fillin)
|
||||
else
|
||||
BOOST_CHECK(output == fromHex(o["out"].get_str()));
|
||||
|
||||
BOOST_CHECK(test.toInt(o["gas"]) == vm.gas());
|
||||
BOOST_CHECK(test.toInt(o["gas"]) == gas);
|
||||
BOOST_CHECK(test.addresses == fev.addresses);
|
||||
BOOST_CHECK(test.callcreates == fev.callcreates);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user