From 9435aabbacfdeacf42ab8a24f918c2f6c87318f2 Mon Sep 17 00:00:00 2001 From: Tim Hughes <tim@twistedfury.com> Date: Thu, 16 Jan 2014 20:33:50 +0000 Subject: [PATCH 1/3] Projects, solution and fixes for Visual Studio 2013. --- Test.vcxproj | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++ main.cpp | 6 +- 2 files changed, 187 insertions(+), 3 deletions(-) create mode 100644 Test.vcxproj diff --git a/Test.vcxproj b/Test.vcxproj new file mode 100644 index 000000000..8b08adad2 --- /dev/null +++ b/Test.vcxproj @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <Keyword>Win32Proj</Keyword> + <RootNamespace>Test</RootNamespace> + <ProjectName>Test</ProjectName> + <ProjectGuid>{3F3E389B-88DE-41D5-A73B-4F6036E18B36}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v120</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v120</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v120</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v120</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\libethereum\LibEthereum.props" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\libethereum\LibEthereum.props" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\libethereum\LibEthereum.props" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\libethereum\LibEthereum.props" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../libethereum</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <IntrinsicFunctions>true</IntrinsicFunctions> + <RuntimeTypeInfo>false</RuntimeTypeInfo> + <OpenMPSupport>true</OpenMPSupport> + <DisableSpecificWarnings>4351</DisableSpecificWarnings> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <LargeAddressAware>true</LargeAddressAware> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../libethereum</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <IntrinsicFunctions>true</IntrinsicFunctions> + <RuntimeTypeInfo>false</RuntimeTypeInfo> + <OpenMPSupport>true</OpenMPSupport> + <DisableSpecificWarnings>4351</DisableSpecificWarnings> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../libethereum</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <StringPooling>true</StringPooling> + <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> + <RuntimeTypeInfo>false</RuntimeTypeInfo> + <OpenMPSupport>true</OpenMPSupport> + <DisableSpecificWarnings>4351</DisableSpecificWarnings> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <LargeAddressAware>true</LargeAddressAware> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../libethereum</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <StringPooling>true</StringPooling> + <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> + <RuntimeTypeInfo>false</RuntimeTypeInfo> + <OpenMPSupport>true</OpenMPSupport> + <DisableSpecificWarnings>4351</DisableSpecificWarnings> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ProjectReference Include="..\..\cryptopp562\cryptlib.vcxproj"> + <Project>{3423ec9a-52e4-4a4d-9753-edebc38785ef}</Project> + </ProjectReference> + <ProjectReference Include="..\libethereum\LibEthereum.vcxproj"> + <Project>{7050c7cf-7551-48be-8e57-92235906c13a}</Project> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <ClCompile Include="main.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/main.cpp b/main.cpp index 35f3fc20d..df9c3ba85 100644 --- a/main.cpp +++ b/main.cpp @@ -142,7 +142,7 @@ int main() Trie t; t.insert("dog", "puppy"); - assert(t.hash256() == hash256({{"dog", "puppy"}})); + assert(t.hash256() == hash256(StringMap({{"dog", "puppy"}}))); assert(t.at("dog") == "puppy"); t.insert("doe", "reindeer"); assert(t.hash256() == hash256({{"dog", "puppy"}, {"doe", "reindeer"}})); @@ -158,7 +158,7 @@ int main() assert(t.at("doe").empty()); assert(t.at("dogglesworth").empty()); assert(t.at("dog") == "puppy"); - assert(t.hash256() == hash256({{"dog", "puppy"}})); + assert(t.hash256() == hash256(StringMap({{"dog", "puppy"}}))); t.insert("horse", "stallion"); t.insert("do", "verb"); t.insert("doge", "coin"); @@ -170,7 +170,7 @@ int main() t.remove("horse"); t.remove("do"); t.remove("doge"); - assert(t.hash256() == hash256({{"dog", "puppy"}})); + assert(t.hash256() == hash256(StringMap({{"dog", "puppy"}}))); assert(t.at("dog") == "puppy"); t.remove("dog"); From 16eddcb35d4f484a9210e4d3961b12b5468dd3d3 Mon Sep 17 00:00:00 2001 From: Tim Hughes <tim@twistedfury.com> Date: Fri, 17 Jan 2014 10:11:42 +0000 Subject: [PATCH 2/3] Fixed assert in test/main.cpp (using a .data() from temporary string after it was destroyed). --- main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index df9c3ba85..0613bd274 100644 --- a/main.cpp +++ b/main.cpp @@ -204,7 +204,8 @@ int main() assert(asString(rlp("dog")) == "\x43""dog"); // 2-item list - RLP twoItemList("\x82\x0f\x43""dog"); + string twoItemListString = "\x82\x0f\x43""dog"; + RLP twoItemList(twoItemListString); assert(twoItemList.itemCount() == 2); assert(twoItemList[0] == 15); assert(twoItemList[1] == "dog"); From 0ccc676f4ef60796afb91ba6d4fbe7863ef6b2c4 Mon Sep 17 00:00:00 2001 From: Tim Hughes <tim@twistedfury.com> Date: Fri, 17 Jan 2014 13:05:47 +0000 Subject: [PATCH 3/3] Tweak Dagger API to facilitate more complex mining. --- main.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/main.cpp b/main.cpp index 0613bd274..6152f2d77 100644 --- a/main.cpp +++ b/main.cpp @@ -39,22 +39,23 @@ int main() /* // Test dagger { - Dagger d((h256)0); + Dagger d; auto s = steady_clock::now(); - cout << hex << d.eval(0); + cout << hex << d.eval((h256)1, 0); cout << " " << dec << duration_cast<milliseconds>(steady_clock::now() - s).count() << " ms" << endl; - cout << hex << d.eval(1); + cout << hex << d.eval((h256)1, 1); cout << " " << dec << duration_cast<milliseconds>(steady_clock::now() - s).count() << " ms" << endl; } { - Dagger d((h256)1); + Dagger d; auto s = steady_clock::now(); - cout << hex << d.eval(0); + cout << hex << d.eval((h256)1, 0); cout << " " << dec << duration_cast<milliseconds>(steady_clock::now() - s).count() << " ms" << endl; - cout << hex << d.eval(1); + cout << hex << d.eval((h256)1, 1); cout << " " << dec << duration_cast<milliseconds>(steady_clock::now() - s).count() << " ms" << endl; } - */ + //*/ + /* // Test transaction. bytes tx = fromUserHex("88005401010101010101010101010101010101010101011f0de0b6b3a76400001ce8d4a5100080181c373130a009ba1f10285d4e659568bfcfec85067855c5a3c150100815dad4ef98fd37cf0593828c89db94bd6c64e210a32ef8956eaa81ea9307194996a3b879441f5d");