Lets get at least dogecoind building

This is an Xcode project and a script to wrangle boost to work on the
mac.
This commit is contained in:
Alan Westbrook 2014-04-05 00:09:56 -07:00
parent 328d280f17
commit 30053cfaa3
17 changed files with 1012 additions and 316 deletions

View file

@ -0,0 +1,54 @@
diff -rud boost/atomic/detail/gcc-atomic.hpp /Users/alan/Downloads/frakinboost/boost_1_55_0/boost/atomic/detail/gcc-atomic.hpp
--- boost/atomic/detail/gcc-atomic.hpp 2014-03-12 20:21:08.000000000 -0700
+++ /Users/alan/Downloads/frakinboost/boost_1_55_0/boost/atomic/detail/gcc-atomic.hpp 2013-07-20 11:01:35.000000000 -0700
@@ -958,16 +958,14 @@
public:
BOOST_DEFAULTED_FUNCTION(base_atomic(void), {})
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT
+ explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
{
- memset(&v_, 0, sizeof(v_));
memcpy(&v_, &v, sizeof(value_type));
}
void store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
{
- storage_type tmp;
- memset(&tmp, 0, sizeof(tmp));
+ storage_type tmp = 0;
memcpy(&tmp, &v, sizeof(value_type));
__atomic_store_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order));
}
@@ -982,8 +980,7 @@
value_type exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT
{
- storage_type tmp;
- memset(&tmp, 0, sizeof(tmp));
+ storage_type tmp = 0;
memcpy(&tmp, &v, sizeof(value_type));
tmp = __atomic_exchange_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order));
value_type res;
@@ -997,9 +994,7 @@
memory_order success_order,
memory_order failure_order) volatile BOOST_NOEXCEPT
{
- storage_type expected_s, desired_s;
- memset(&expected_s, 0, sizeof(expected_s));
- memset(&desired_s, 0, sizeof(desired_s));
+ storage_type expected_s = 0, desired_s = 0;
memcpy(&expected_s, &expected, sizeof(value_type));
memcpy(&desired_s, &desired, sizeof(value_type));
const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, false,
@@ -1015,9 +1010,7 @@
memory_order success_order,
memory_order failure_order) volatile BOOST_NOEXCEPT
{
- storage_type expected_s, desired_s;
- memset(&expected_s, 0, sizeof(expected_s));
- memset(&desired_s, 0, sizeof(desired_s));
+ storage_type expected_s = 0, desired_s = 0;
memcpy(&expected_s, &expected, sizeof(value_type));
memcpy(&desired_s, &desired, sizeof(value_type));
const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, true,

View file

@ -0,0 +1,18 @@
#!/bin/bash
if [ -e boost_1_55_0.tar.bz2 ]
then
echo bunzipping ... wait for it!
bunzip2 boost_1_55_0.tar.bz2
echo de-tarring ... moar waiting!
tar -xf boost_1_55_0.tar
mv boost_1_55_0/boost .
echo cleaning up mess...
rm -rf boost_1_55_0
rm boost_1_55_0.tar
echo patching boost...
patch -u -p0 -R -i boostpatch.diff
echo All done!
else
echo Go get boost from http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download and put the zip file in this dir.
fi

View file

@ -0,0 +1,585 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
E7AA602918EFCD050068AD4A /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA5FE218EFCD040068AD4A /* libcrypto.a */; };
E7AA602B18EFCD050068AD4A /* libdb_cxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA5FE418EFCD040068AD4A /* libdb_cxx.a */; };
E7AA602E18EFCD050068AD4A /* libminiupnpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA5FE718EFCD040068AD4A /* libminiupnpc.a */; };
E7AA605A18EFCD050068AD4A /* libboost_atomic-mt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA601318EFCD040068AD4A /* libboost_atomic-mt.a */; };
E7AA606318EFCD050068AD4A /* libboost_exception-mt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA601C18EFCD050068AD4A /* libboost_exception-mt.a */; };
E7AA606518EFCD050068AD4A /* libboost_filesystem-mt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA601E18EFCD050068AD4A /* libboost_filesystem-mt.a */; };
E7AA607118EFCFD90068AD4A /* libleveldb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA606F18EFCFD90068AD4A /* libleveldb.a */; };
E7AA607218EFCFD90068AD4A /* libmemenv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA607018EFCFD90068AD4A /* libmemenv.a */; };
E7AA607418EFD4560068AD4A /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA607318EFD4560068AD4A /* libssl.a */; };
E7AA607618EFD58E0068AD4A /* libboost_program_options-mt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA607518EFD58E0068AD4A /* libboost_program_options-mt.a */; };
E7AA607718EFD5D00068AD4A /* libboost_thread-mt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA600E18EFCD040068AD4A /* libboost_thread-mt.a */; settings = {ATTRIBUTES = (Required, ); }; };
E7AA607918EFD71D0068AD4A /* libboost_system-mt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E7AA607818EFD71D0068AD4A /* libboost_system-mt.a */; };
E7F6018E18EA85A300ACD3FA /* addrman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6018C18EA85A300ACD3FA /* addrman.cpp */; };
E7F6019218EA85BD00ACD3FA /* alert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6019018EA85BD00ACD3FA /* alert.cpp */; };
E7F6019518EA860100ACD3FA /* bloom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6019318EA860100ACD3FA /* bloom.cpp */; };
E7F601B618EA868B00ACD3FA /* checkpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6019818EA868B00ACD3FA /* checkpoints.cpp */; };
E7F601B718EA868B00ACD3FA /* coins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6019A18EA868B00ACD3FA /* coins.cpp */; };
E7F601B818EA868B00ACD3FA /* init.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6019C18EA868B00ACD3FA /* init.cpp */; };
E7F601B918EA868B00ACD3FA /* keystore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6019E18EA868B00ACD3FA /* keystore.cpp */; };
E7F601BA18EA868B00ACD3FA /* leveldbwrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601A018EA868B00ACD3FA /* leveldbwrapper.cpp */; };
E7F601BB18EA868B00ACD3FA /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601A218EA868B00ACD3FA /* main.cpp */; };
E7F601BC18EA868B00ACD3FA /* miner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601A418EA868B00ACD3FA /* miner.cpp */; };
E7F601BD18EA868B00ACD3FA /* net.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601A618EA868B00ACD3FA /* net.cpp */; };
E7F601BE18EA868B00ACD3FA /* noui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601A818EA868B00ACD3FA /* noui.cpp */; };
E7F601BF18EA868B00ACD3FA /* rpcblockchain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601AA18EA868B00ACD3FA /* rpcblockchain.cpp */; };
E7F601C018EA868B00ACD3FA /* rpcmining.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601AB18EA868B00ACD3FA /* rpcmining.cpp */; };
E7F601C118EA868B00ACD3FA /* rpcmisc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601AC18EA868B00ACD3FA /* rpcmisc.cpp */; };
E7F601C218EA868B00ACD3FA /* rpcnet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601AD18EA868B00ACD3FA /* rpcnet.cpp */; };
E7F601C318EA868B00ACD3FA /* rpcrawtransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601AE18EA868B00ACD3FA /* rpcrawtransaction.cpp */; };
E7F601C418EA868B00ACD3FA /* scrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601AF18EA868B00ACD3FA /* scrypt.cpp */; };
E7F601C518EA868B00ACD3FA /* txdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601B118EA868B00ACD3FA /* txdb.cpp */; };
E7F601C618EA868B00ACD3FA /* txmempool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601B318EA868B00ACD3FA /* txmempool.cpp */; };
E7F601D318EA86FA00ACD3FA /* crypter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601C918EA86FA00ACD3FA /* crypter.cpp */; };
E7F601D418EA86FA00ACD3FA /* db.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601CB18EA86FA00ACD3FA /* db.cpp */; };
E7F601D518EA86FA00ACD3FA /* rpcdump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601CD18EA86FA00ACD3FA /* rpcdump.cpp */; };
E7F601D618EA86FA00ACD3FA /* rpcwallet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601CE18EA86FA00ACD3FA /* rpcwallet.cpp */; };
E7F601D718EA86FA00ACD3FA /* wallet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601CF18EA86FA00ACD3FA /* wallet.cpp */; };
E7F601D818EA86FA00ACD3FA /* walletdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601D118EA86FA00ACD3FA /* walletdb.cpp */; };
E7F601F218EA877600ACD3FA /* allocators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601DA18EA877600ACD3FA /* allocators.cpp */; };
E7F601F318EA877600ACD3FA /* chainparams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601DC18EA877600ACD3FA /* chainparams.cpp */; };
E7F601F418EA877600ACD3FA /* core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601DE18EA877600ACD3FA /* core.cpp */; };
E7F601F518EA877600ACD3FA /* hash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601E018EA877600ACD3FA /* hash.cpp */; };
E7F601F618EA877600ACD3FA /* key.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601E218EA877600ACD3FA /* key.cpp */; };
E7F601F718EA877600ACD3FA /* netbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601E418EA877600ACD3FA /* netbase.cpp */; };
E7F601F818EA877600ACD3FA /* protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601E618EA877600ACD3FA /* protocol.cpp */; };
E7F601F918EA877600ACD3FA /* rpcprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601E818EA877600ACD3FA /* rpcprotocol.cpp */; };
E7F601FA18EA877600ACD3FA /* script.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601EA18EA877600ACD3FA /* script.cpp */; };
E7F601FB18EA877600ACD3FA /* sync.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601EC18EA877600ACD3FA /* sync.cpp */; };
E7F601FC18EA877600ACD3FA /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601EE18EA877600ACD3FA /* util.cpp */; };
E7F601FD18EA877600ACD3FA /* version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601F018EA877600ACD3FA /* version.cpp */; };
E7F6020018EA87C700ACD3FA /* rpcclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F601FE18EA87C700ACD3FA /* rpcclient.cpp */; };
E7F6020218EA884500ACD3FA /* dogecoind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6020118EA884500ACD3FA /* dogecoind.cpp */; };
E7F6020718EA88C500ACD3FA /* rpcserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E7F6020418EA88C500ACD3FA /* rpcserver.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
E7F6017818EA7FB200ACD3FA /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
E7AA5FE218EFCD040068AD4A /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = lib/libcrypto.a; sourceTree = "<group>"; };
E7AA5FE418EFCD040068AD4A /* libdb_cxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdb_cxx.a; path = lib/libdb_cxx.a; sourceTree = "<group>"; };
E7AA5FE718EFCD040068AD4A /* libminiupnpc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libminiupnpc.a; path = lib/libminiupnpc.a; sourceTree = "<group>"; };
E7AA600E18EFCD040068AD4A /* libboost_thread-mt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libboost_thread-mt.a"; path = "lib/libboost_thread-mt.a"; sourceTree = "<group>"; };
E7AA601318EFCD040068AD4A /* libboost_atomic-mt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libboost_atomic-mt.a"; path = "lib/libboost_atomic-mt.a"; sourceTree = "<group>"; };
E7AA601C18EFCD050068AD4A /* libboost_exception-mt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libboost_exception-mt.a"; path = "lib/libboost_exception-mt.a"; sourceTree = "<group>"; };
E7AA601E18EFCD050068AD4A /* libboost_filesystem-mt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libboost_filesystem-mt.a"; path = "lib/libboost_filesystem-mt.a"; sourceTree = "<group>"; };
E7AA606F18EFCFD90068AD4A /* libleveldb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libleveldb.a; path = ../../src/leveldb/libleveldb.a; sourceTree = "<group>"; };
E7AA607018EFCFD90068AD4A /* libmemenv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmemenv.a; path = ../../src/leveldb/libmemenv.a; sourceTree = "<group>"; };
E7AA607318EFD4560068AD4A /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = lib/libssl.a; sourceTree = "<group>"; };
E7AA607518EFD58E0068AD4A /* libboost_program_options-mt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libboost_program_options-mt.a"; path = "lib/libboost_program_options-mt.a"; sourceTree = "<group>"; };
E7AA607818EFD71D0068AD4A /* libboost_system-mt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libboost_system-mt.a"; path = "lib/libboost_system-mt.a"; sourceTree = "<group>"; };
E7F6017A18EA7FB200ACD3FA /* dogecoind */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dogecoind; sourceTree = BUILT_PRODUCTS_DIR; };
E7F6018C18EA85A300ACD3FA /* addrman.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = addrman.cpp; path = ../../src/addrman.cpp; sourceTree = "<group>"; };
E7F6018D18EA85A300ACD3FA /* addrman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = addrman.h; path = ../../src/addrman.h; sourceTree = "<group>"; };
E7F6019018EA85BD00ACD3FA /* alert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = alert.cpp; path = ../../src/alert.cpp; sourceTree = "<group>"; };
E7F6019118EA85BD00ACD3FA /* alert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = alert.h; path = ../../src/alert.h; sourceTree = "<group>"; };
E7F6019318EA860100ACD3FA /* bloom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bloom.cpp; path = ../../src/bloom.cpp; sourceTree = "<group>"; };
E7F6019418EA860100ACD3FA /* bloom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bloom.h; path = ../../src/bloom.h; sourceTree = "<group>"; };
E7F6019818EA868B00ACD3FA /* checkpoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = checkpoints.cpp; path = ../../src/checkpoints.cpp; sourceTree = "<group>"; };
E7F6019918EA868B00ACD3FA /* checkpoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = checkpoints.h; path = ../../src/checkpoints.h; sourceTree = "<group>"; };
E7F6019A18EA868B00ACD3FA /* coins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = coins.cpp; path = ../../src/coins.cpp; sourceTree = "<group>"; };
E7F6019B18EA868B00ACD3FA /* coins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = coins.h; path = ../../src/coins.h; sourceTree = "<group>"; };
E7F6019C18EA868B00ACD3FA /* init.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = init.cpp; path = ../../src/init.cpp; sourceTree = "<group>"; };
E7F6019D18EA868B00ACD3FA /* init.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = init.h; path = ../../src/init.h; sourceTree = "<group>"; };
E7F6019E18EA868B00ACD3FA /* keystore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = keystore.cpp; path = ../../src/keystore.cpp; sourceTree = "<group>"; };
E7F6019F18EA868B00ACD3FA /* keystore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = keystore.h; path = ../../src/keystore.h; sourceTree = "<group>"; };
E7F601A018EA868B00ACD3FA /* leveldbwrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = leveldbwrapper.cpp; path = ../../src/leveldbwrapper.cpp; sourceTree = "<group>"; };
E7F601A118EA868B00ACD3FA /* leveldbwrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = leveldbwrapper.h; path = ../../src/leveldbwrapper.h; sourceTree = "<group>"; };
E7F601A218EA868B00ACD3FA /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../../src/main.cpp; sourceTree = "<group>"; };
E7F601A318EA868B00ACD3FA /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = main.h; path = ../../src/main.h; sourceTree = "<group>"; };
E7F601A418EA868B00ACD3FA /* miner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = miner.cpp; path = ../../src/miner.cpp; sourceTree = "<group>"; };
E7F601A518EA868B00ACD3FA /* miner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = miner.h; path = ../../src/miner.h; sourceTree = "<group>"; };
E7F601A618EA868B00ACD3FA /* net.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = net.cpp; path = ../../src/net.cpp; sourceTree = "<group>"; };
E7F601A718EA868B00ACD3FA /* net.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = net.h; path = ../../src/net.h; sourceTree = "<group>"; };
E7F601A818EA868B00ACD3FA /* noui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = noui.cpp; path = ../../src/noui.cpp; sourceTree = "<group>"; };
E7F601A918EA868B00ACD3FA /* noui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = noui.h; path = ../../src/noui.h; sourceTree = "<group>"; };
E7F601AA18EA868B00ACD3FA /* rpcblockchain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcblockchain.cpp; path = ../../src/rpcblockchain.cpp; sourceTree = "<group>"; };
E7F601AB18EA868B00ACD3FA /* rpcmining.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcmining.cpp; path = ../../src/rpcmining.cpp; sourceTree = "<group>"; };
E7F601AC18EA868B00ACD3FA /* rpcmisc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcmisc.cpp; path = ../../src/rpcmisc.cpp; sourceTree = "<group>"; };
E7F601AD18EA868B00ACD3FA /* rpcnet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcnet.cpp; path = ../../src/rpcnet.cpp; sourceTree = "<group>"; };
E7F601AE18EA868B00ACD3FA /* rpcrawtransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcrawtransaction.cpp; path = ../../src/rpcrawtransaction.cpp; sourceTree = "<group>"; };
E7F601AF18EA868B00ACD3FA /* scrypt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = scrypt.cpp; path = ../../src/scrypt.cpp; sourceTree = "<group>"; };
E7F601B018EA868B00ACD3FA /* scrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = scrypt.h; path = ../../src/scrypt.h; sourceTree = "<group>"; };
E7F601B118EA868B00ACD3FA /* txdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = txdb.cpp; path = ../../src/txdb.cpp; sourceTree = "<group>"; };
E7F601B218EA868B00ACD3FA /* txdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = txdb.h; path = ../../src/txdb.h; sourceTree = "<group>"; };
E7F601B318EA868B00ACD3FA /* txmempool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = txmempool.cpp; path = ../../src/txmempool.cpp; sourceTree = "<group>"; };
E7F601B418EA868B00ACD3FA /* txmempool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = txmempool.h; path = ../../src/txmempool.h; sourceTree = "<group>"; };
E7F601C918EA86FA00ACD3FA /* crypter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = crypter.cpp; path = ../../src/crypter.cpp; sourceTree = "<group>"; };
E7F601CA18EA86FA00ACD3FA /* crypter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = crypter.h; path = ../../src/crypter.h; sourceTree = "<group>"; };
E7F601CB18EA86FA00ACD3FA /* db.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = db.cpp; path = ../../src/db.cpp; sourceTree = "<group>"; };
E7F601CC18EA86FA00ACD3FA /* db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = db.h; path = ../../src/db.h; sourceTree = "<group>"; };
E7F601CD18EA86FA00ACD3FA /* rpcdump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcdump.cpp; path = ../../src/rpcdump.cpp; sourceTree = "<group>"; };
E7F601CE18EA86FA00ACD3FA /* rpcwallet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcwallet.cpp; path = ../../src/rpcwallet.cpp; sourceTree = "<group>"; };
E7F601CF18EA86FA00ACD3FA /* wallet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wallet.cpp; path = ../../src/wallet.cpp; sourceTree = "<group>"; };
E7F601D018EA86FA00ACD3FA /* wallet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wallet.h; path = ../../src/wallet.h; sourceTree = "<group>"; };
E7F601D118EA86FA00ACD3FA /* walletdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = walletdb.cpp; path = ../../src/walletdb.cpp; sourceTree = "<group>"; };
E7F601D218EA86FA00ACD3FA /* walletdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = walletdb.h; path = ../../src/walletdb.h; sourceTree = "<group>"; };
E7F601DA18EA877600ACD3FA /* allocators.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = allocators.cpp; path = ../../src/allocators.cpp; sourceTree = "<group>"; };
E7F601DB18EA877600ACD3FA /* allocators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = allocators.h; path = ../../src/allocators.h; sourceTree = "<group>"; };
E7F601DC18EA877600ACD3FA /* chainparams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = chainparams.cpp; path = ../../src/chainparams.cpp; sourceTree = "<group>"; };
E7F601DD18EA877600ACD3FA /* chainparams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = chainparams.h; path = ../../src/chainparams.h; sourceTree = "<group>"; };
E7F601DE18EA877600ACD3FA /* core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = core.cpp; path = ../../src/core.cpp; sourceTree = "<group>"; };
E7F601DF18EA877600ACD3FA /* core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = core.h; path = ../../src/core.h; sourceTree = "<group>"; };
E7F601E018EA877600ACD3FA /* hash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = hash.cpp; path = ../../src/hash.cpp; sourceTree = "<group>"; };
E7F601E118EA877600ACD3FA /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hash.h; path = ../../src/hash.h; sourceTree = "<group>"; };
E7F601E218EA877600ACD3FA /* key.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = key.cpp; path = ../../src/key.cpp; sourceTree = "<group>"; };
E7F601E318EA877600ACD3FA /* key.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = key.h; path = ../../src/key.h; sourceTree = "<group>"; };
E7F601E418EA877600ACD3FA /* netbase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = netbase.cpp; path = ../../src/netbase.cpp; sourceTree = "<group>"; };
E7F601E518EA877600ACD3FA /* netbase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = netbase.h; path = ../../src/netbase.h; sourceTree = "<group>"; };
E7F601E618EA877600ACD3FA /* protocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = protocol.cpp; path = ../../src/protocol.cpp; sourceTree = "<group>"; };
E7F601E718EA877600ACD3FA /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = protocol.h; path = ../../src/protocol.h; sourceTree = "<group>"; };
E7F601E818EA877600ACD3FA /* rpcprotocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcprotocol.cpp; path = ../../src/rpcprotocol.cpp; sourceTree = "<group>"; };
E7F601E918EA877600ACD3FA /* rpcprotocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rpcprotocol.h; path = ../../src/rpcprotocol.h; sourceTree = "<group>"; };
E7F601EA18EA877600ACD3FA /* script.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = script.cpp; path = ../../src/script.cpp; sourceTree = "<group>"; };
E7F601EB18EA877600ACD3FA /* script.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = script.h; path = ../../src/script.h; sourceTree = "<group>"; };
E7F601EC18EA877600ACD3FA /* sync.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sync.cpp; path = ../../src/sync.cpp; sourceTree = "<group>"; };
E7F601ED18EA877600ACD3FA /* sync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sync.h; path = ../../src/sync.h; sourceTree = "<group>"; };
E7F601EE18EA877600ACD3FA /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = util.cpp; path = ../../src/util.cpp; sourceTree = "<group>"; };
E7F601EF18EA877600ACD3FA /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = util.h; path = ../../src/util.h; sourceTree = "<group>"; };
E7F601F018EA877600ACD3FA /* version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = version.cpp; path = ../../src/version.cpp; sourceTree = "<group>"; };
E7F601F118EA877600ACD3FA /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../src/version.h; sourceTree = "<group>"; };
E7F601FE18EA87C700ACD3FA /* rpcclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcclient.cpp; path = ../../src/rpcclient.cpp; sourceTree = "<group>"; };
E7F601FF18EA87C700ACD3FA /* rpcclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rpcclient.h; path = ../../src/rpcclient.h; sourceTree = "<group>"; };
E7F6020118EA884500ACD3FA /* dogecoind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dogecoind.cpp; path = ../../src/dogecoind.cpp; sourceTree = "<group>"; };
E7F6020418EA88C500ACD3FA /* rpcserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rpcserver.cpp; path = ../../src/rpcserver.cpp; sourceTree = "<group>"; };
E7F6020518EA88C500ACD3FA /* rpcserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rpcserver.h; path = ../../src/rpcserver.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
E7F6017718EA7FB200ACD3FA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E7AA607918EFD71D0068AD4A /* libboost_system-mt.a in Frameworks */,
E7AA606518EFCD050068AD4A /* libboost_filesystem-mt.a in Frameworks */,
E7AA607718EFD5D00068AD4A /* libboost_thread-mt.a in Frameworks */,
E7AA607618EFD58E0068AD4A /* libboost_program_options-mt.a in Frameworks */,
E7AA607418EFD4560068AD4A /* libssl.a in Frameworks */,
E7AA602918EFCD050068AD4A /* libcrypto.a in Frameworks */,
E7AA602B18EFCD050068AD4A /* libdb_cxx.a in Frameworks */,
E7AA602E18EFCD050068AD4A /* libminiupnpc.a in Frameworks */,
E7AA607218EFCFD90068AD4A /* libmemenv.a in Frameworks */,
E7AA607118EFCFD90068AD4A /* libleveldb.a in Frameworks */,
E7AA605A18EFCD050068AD4A /* libboost_atomic-mt.a in Frameworks */,
E7AA606318EFCD050068AD4A /* libboost_exception-mt.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
E7AA606E18EFCD9C0068AD4A /* lib */ = {
isa = PBXGroup;
children = (
E7AA607818EFD71D0068AD4A /* libboost_system-mt.a */,
E7AA607518EFD58E0068AD4A /* libboost_program_options-mt.a */,
E7AA607318EFD4560068AD4A /* libssl.a */,
E7AA606F18EFCFD90068AD4A /* libleveldb.a */,
E7AA607018EFCFD90068AD4A /* libmemenv.a */,
E7AA601318EFCD040068AD4A /* libboost_atomic-mt.a */,
E7AA601C18EFCD050068AD4A /* libboost_exception-mt.a */,
E7AA601E18EFCD050068AD4A /* libboost_filesystem-mt.a */,
E7AA600E18EFCD040068AD4A /* libboost_thread-mt.a */,
E7AA5FE218EFCD040068AD4A /* libcrypto.a */,
E7AA5FE418EFCD040068AD4A /* libdb_cxx.a */,
E7AA5FE718EFCD040068AD4A /* libminiupnpc.a */,
);
name = lib;
sourceTree = "<group>";
};
E7F6017118EA7FB200ACD3FA = {
isa = PBXGroup;
children = (
E7F6018F18EA85AB00ACD3FA /* source */,
E7AA606E18EFCD9C0068AD4A /* lib */,
E7F6017B18EA7FB200ACD3FA /* Products */,
);
sourceTree = "<group>";
};
E7F6017B18EA7FB200ACD3FA /* Products */ = {
isa = PBXGroup;
children = (
E7F6017A18EA7FB200ACD3FA /* dogecoind */,
);
name = Products;
sourceTree = "<group>";
};
E7F6018F18EA85AB00ACD3FA /* source */ = {
isa = PBXGroup;
children = (
E7F6020818EA88E000ACD3FA /* cli */,
E7F601D918EA870700ACD3FA /* common */,
E7F601C818EA86B900ACD3FA /* wallet */,
E7F601C718EA86A900ACD3FA /* server */,
);
name = source;
sourceTree = "<group>";
};
E7F601C718EA86A900ACD3FA /* server */ = {
isa = PBXGroup;
children = (
E7F6018C18EA85A300ACD3FA /* addrman.cpp */,
E7F6018D18EA85A300ACD3FA /* addrman.h */,
E7F6019018EA85BD00ACD3FA /* alert.cpp */,
E7F6019118EA85BD00ACD3FA /* alert.h */,
E7F6019318EA860100ACD3FA /* bloom.cpp */,
E7F6019418EA860100ACD3FA /* bloom.h */,
E7F6019818EA868B00ACD3FA /* checkpoints.cpp */,
E7F6019918EA868B00ACD3FA /* checkpoints.h */,
E7F6019A18EA868B00ACD3FA /* coins.cpp */,
E7F6019B18EA868B00ACD3FA /* coins.h */,
E7F6019C18EA868B00ACD3FA /* init.cpp */,
E7F6019D18EA868B00ACD3FA /* init.h */,
E7F6019E18EA868B00ACD3FA /* keystore.cpp */,
E7F6019F18EA868B00ACD3FA /* keystore.h */,
E7F601A018EA868B00ACD3FA /* leveldbwrapper.cpp */,
E7F601A118EA868B00ACD3FA /* leveldbwrapper.h */,
E7F601A218EA868B00ACD3FA /* main.cpp */,
E7F601A318EA868B00ACD3FA /* main.h */,
E7F601A418EA868B00ACD3FA /* miner.cpp */,
E7F601A518EA868B00ACD3FA /* miner.h */,
E7F601A618EA868B00ACD3FA /* net.cpp */,
E7F601A718EA868B00ACD3FA /* net.h */,
E7F601A818EA868B00ACD3FA /* noui.cpp */,
E7F601A918EA868B00ACD3FA /* noui.h */,
E7F601AA18EA868B00ACD3FA /* rpcblockchain.cpp */,
E7F601AB18EA868B00ACD3FA /* rpcmining.cpp */,
E7F601AC18EA868B00ACD3FA /* rpcmisc.cpp */,
E7F601AD18EA868B00ACD3FA /* rpcnet.cpp */,
E7F601AE18EA868B00ACD3FA /* rpcrawtransaction.cpp */,
E7F601AF18EA868B00ACD3FA /* scrypt.cpp */,
E7F601B018EA868B00ACD3FA /* scrypt.h */,
E7F601B118EA868B00ACD3FA /* txdb.cpp */,
E7F601B218EA868B00ACD3FA /* txdb.h */,
E7F601B318EA868B00ACD3FA /* txmempool.cpp */,
E7F601B418EA868B00ACD3FA /* txmempool.h */,
);
name = server;
sourceTree = "<group>";
};
E7F601C818EA86B900ACD3FA /* wallet */ = {
isa = PBXGroup;
children = (
E7F601C918EA86FA00ACD3FA /* crypter.cpp */,
E7F601CA18EA86FA00ACD3FA /* crypter.h */,
E7F601CB18EA86FA00ACD3FA /* db.cpp */,
E7F601CC18EA86FA00ACD3FA /* db.h */,
E7F601CD18EA86FA00ACD3FA /* rpcdump.cpp */,
E7F601CE18EA86FA00ACD3FA /* rpcwallet.cpp */,
E7F601CF18EA86FA00ACD3FA /* wallet.cpp */,
E7F601D018EA86FA00ACD3FA /* wallet.h */,
E7F601D118EA86FA00ACD3FA /* walletdb.cpp */,
E7F601D218EA86FA00ACD3FA /* walletdb.h */,
);
name = wallet;
sourceTree = "<group>";
};
E7F601D918EA870700ACD3FA /* common */ = {
isa = PBXGroup;
children = (
E7F601DA18EA877600ACD3FA /* allocators.cpp */,
E7F601DB18EA877600ACD3FA /* allocators.h */,
E7F601DC18EA877600ACD3FA /* chainparams.cpp */,
E7F601DD18EA877600ACD3FA /* chainparams.h */,
E7F601DE18EA877600ACD3FA /* core.cpp */,
E7F601DF18EA877600ACD3FA /* core.h */,
E7F601E018EA877600ACD3FA /* hash.cpp */,
E7F601E118EA877600ACD3FA /* hash.h */,
E7F601E218EA877600ACD3FA /* key.cpp */,
E7F601E318EA877600ACD3FA /* key.h */,
E7F601E418EA877600ACD3FA /* netbase.cpp */,
E7F601E518EA877600ACD3FA /* netbase.h */,
E7F601E618EA877600ACD3FA /* protocol.cpp */,
E7F601E718EA877600ACD3FA /* protocol.h */,
E7F601E818EA877600ACD3FA /* rpcprotocol.cpp */,
E7F601E918EA877600ACD3FA /* rpcprotocol.h */,
E7F601EA18EA877600ACD3FA /* script.cpp */,
E7F601EB18EA877600ACD3FA /* script.h */,
E7F601EC18EA877600ACD3FA /* sync.cpp */,
E7F601ED18EA877600ACD3FA /* sync.h */,
E7F601EE18EA877600ACD3FA /* util.cpp */,
E7F601EF18EA877600ACD3FA /* util.h */,
E7F601F018EA877600ACD3FA /* version.cpp */,
E7F601F118EA877600ACD3FA /* version.h */,
);
name = common;
sourceTree = "<group>";
};
E7F6020818EA88E000ACD3FA /* cli */ = {
isa = PBXGroup;
children = (
E7F6020418EA88C500ACD3FA /* rpcserver.cpp */,
E7F6020518EA88C500ACD3FA /* rpcserver.h */,
E7F6020118EA884500ACD3FA /* dogecoind.cpp */,
E7F601FE18EA87C700ACD3FA /* rpcclient.cpp */,
E7F601FF18EA87C700ACD3FA /* rpcclient.h */,
);
name = cli;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
E7F6017918EA7FB200ACD3FA /* dogecoind */ = {
isa = PBXNativeTarget;
buildConfigurationList = E7F6018318EA7FB200ACD3FA /* Build configuration list for PBXNativeTarget "dogecoind" */;
buildPhases = (
E7F6017618EA7FB200ACD3FA /* Sources */,
E7F6017718EA7FB200ACD3FA /* Frameworks */,
E7F6017818EA7FB200ACD3FA /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = dogecoind;
productName = dogecoind;
productReference = E7F6017A18EA7FB200ACD3FA /* dogecoind */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
E7F6017218EA7FB200ACD3FA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
ORGANIZATIONNAME = "Team Dogecoin";
};
buildConfigurationList = E7F6017518EA7FB200ACD3FA /* Build configuration list for PBXProject "dogecoind" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = E7F6017118EA7FB200ACD3FA;
productRefGroup = E7F6017B18EA7FB200ACD3FA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
E7F6017918EA7FB200ACD3FA /* dogecoind */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
E7F6017618EA7FB200ACD3FA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E7F601FD18EA877600ACD3FA /* version.cpp in Sources */,
E7F601FA18EA877600ACD3FA /* script.cpp in Sources */,
E7F601B818EA868B00ACD3FA /* init.cpp in Sources */,
E7F601F618EA877600ACD3FA /* key.cpp in Sources */,
E7F601C318EA868B00ACD3FA /* rpcrawtransaction.cpp in Sources */,
E7F601C218EA868B00ACD3FA /* rpcnet.cpp in Sources */,
E7F601F218EA877600ACD3FA /* allocators.cpp in Sources */,
E7F601F718EA877600ACD3FA /* netbase.cpp in Sources */,
E7F601C518EA868B00ACD3FA /* txdb.cpp in Sources */,
E7F601C418EA868B00ACD3FA /* scrypt.cpp in Sources */,
E7F601BE18EA868B00ACD3FA /* noui.cpp in Sources */,
E7F601B718EA868B00ACD3FA /* coins.cpp in Sources */,
E7F601F418EA877600ACD3FA /* core.cpp in Sources */,
E7F6019218EA85BD00ACD3FA /* alert.cpp in Sources */,
E7F601FC18EA877600ACD3FA /* util.cpp in Sources */,
E7F601BD18EA868B00ACD3FA /* net.cpp in Sources */,
E7F601BF18EA868B00ACD3FA /* rpcblockchain.cpp in Sources */,
E7F601B918EA868B00ACD3FA /* keystore.cpp in Sources */,
E7F6020018EA87C700ACD3FA /* rpcclient.cpp in Sources */,
E7F601D818EA86FA00ACD3FA /* walletdb.cpp in Sources */,
E7F601BC18EA868B00ACD3FA /* miner.cpp in Sources */,
E7F6018E18EA85A300ACD3FA /* addrman.cpp in Sources */,
E7F601D618EA86FA00ACD3FA /* rpcwallet.cpp in Sources */,
E7F601D718EA86FA00ACD3FA /* wallet.cpp in Sources */,
E7F601D418EA86FA00ACD3FA /* db.cpp in Sources */,
E7F6019518EA860100ACD3FA /* bloom.cpp in Sources */,
E7F601B618EA868B00ACD3FA /* checkpoints.cpp in Sources */,
E7F601C018EA868B00ACD3FA /* rpcmining.cpp in Sources */,
E7F601C118EA868B00ACD3FA /* rpcmisc.cpp in Sources */,
E7F601BB18EA868B00ACD3FA /* main.cpp in Sources */,
E7F601D318EA86FA00ACD3FA /* crypter.cpp in Sources */,
E7F601F318EA877600ACD3FA /* chainparams.cpp in Sources */,
E7F601BA18EA868B00ACD3FA /* leveldbwrapper.cpp in Sources */,
E7F601FB18EA877600ACD3FA /* sync.cpp in Sources */,
E7F6020718EA88C500ACD3FA /* rpcserver.cpp in Sources */,
E7F601F518EA877600ACD3FA /* hash.cpp in Sources */,
E7F601F818EA877600ACD3FA /* protocol.cpp in Sources */,
E7F6020218EA884500ACD3FA /* dogecoind.cpp in Sources */,
E7F601F918EA877600ACD3FA /* rpcprotocol.cpp in Sources */,
E7F601C618EA868B00ACD3FA /* txmempool.cpp in Sources */,
E7F601D518EA86FA00ACD3FA /* rpcdump.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
E7F6018118EA7FB200ACD3FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
E7F6018218EA7FB200ACD3FA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.9;
SDKROOT = macosx;
};
name = Release;
};
E7F6018418EA7FB200ACD3FA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_CXX_LIBRARY = "libstdc++";
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
.,
/usr/local/include,
../../src/leveldb/include,
../../src/leveldb,
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/lib",
/Users/alan/src/dogecoin/src/leveldb,
);
OTHER_CFLAGS = (
"-DBOOST_NO_CXX11_SCOPED_ENUMS=1",
"-DENABLE_WALLET=1",
"-DUSE_UPNP=1",
"-DMAC_OSX=1",
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
E7F6018518EA7FB200ACD3FA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_CXX_LIBRARY = "libstdc++";
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
.,
/usr/local/include,
../../src/leveldb/include,
../../src/leveldb,
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/lib",
/Users/alan/src/dogecoin/src/leveldb,
);
OTHER_CFLAGS = (
"-DBOOST_NO_CXX11_SCOPED_ENUMS=1",
"-DENABLE_WALLET=1",
"-DUSE_UPNP=1",
"-DMAC_OSX=1",
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
E7F6017518EA7FB200ACD3FA /* Build configuration list for PBXProject "dogecoind" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E7F6018118EA7FB200ACD3FA /* Debug */,
E7F6018218EA7FB200ACD3FA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
E7F6018318EA7FB200ACD3FA /* Build configuration list for PBXNativeTarget "dogecoind" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E7F6018418EA7FB200ACD3FA /* Debug */,
E7F6018518EA7FB200ACD3FA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = E7F6017218EA7FB200ACD3FA /* Project object */;
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:dogecoind.xcodeproj">
</FileRef>
</Workspace>

View file

@ -147,11 +147,21 @@ public:
vSeeds.push_back(CDNSSeedData("dglibrary.org", "seed.dglibrary.org"));
vSeeds.push_back(CDNSSeedData("dogechain.info", "seed.dogechain.info"));
base58Prefixes[PUBKEY_ADDRESS] = list_of(30);
base58Prefixes[SCRIPT_ADDRESS] = list_of(22);
base58Prefixes[SECRET_KEY] = list_of(158);
base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x04)(0x88)(0xC4)(0x2E);
base58Prefixes[EXT_SECRET_KEY] = list_of(0x04)(0x88)(0xE1)(0xF4);
// Boost sucks, and should not be used. Workaround for Boost not being compatible with C++11;
std::vector<unsigned char> pka = list_of(30);
base58Prefixes[PUBKEY_ADDRESS] = pka;
std::vector<unsigned char> sca = list_of(22);
base58Prefixes[SCRIPT_ADDRESS] = sca;
std::vector<unsigned char> sk = list_of(158);
base58Prefixes[SECRET_KEY] = sk;
std::vector<unsigned char> epk = list_of(0x04)(0x88)(0xC4)(0x2E);
base58Prefixes[EXT_PUBLIC_KEY] = epk;
std::vector<unsigned char> esk = list_of(0x04)(0x88)(0xE1)(0xF4);
base58Prefixes[EXT_SECRET_KEY] = esk;
// Convert the pnSeeds array into usable address objects.
for (unsigned int i = 0; i < ARRAYLEN(pnSeed); i++)
@ -211,11 +221,18 @@ public:
vSeeds.push_back(CDNSSeedData("testdoge.lionservers.de", "testdoge-seed.lionservers.de"));
vSeeds.push_back(CDNSSeedData("lionservers.de", "testdoge-seed-static.lionservers.de"));
base58Prefixes[PUBKEY_ADDRESS] = list_of(113);
base58Prefixes[SCRIPT_ADDRESS] = list_of(196);
base58Prefixes[SECRET_KEY] = list_of(241);
base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x04)(0x35)(0xD1)(0xDF);
base58Prefixes[EXT_SECRET_KEY] = list_of(0x04)(0x35)(0x75)(0xA4);
// Boost sucks, and should not be used. Workaround for Boost not being compatible with C++11;
std::vector<unsigned char> pka = list_of(113);
base58Prefixes[PUBKEY_ADDRESS] = pka;
std::vector<unsigned char> sca = list_of(196);
base58Prefixes[SCRIPT_ADDRESS] = sca;
std::vector<unsigned char> sk = list_of(241);
base58Prefixes[SECRET_KEY] = sk;
std::vector<unsigned char> epk = list_of(0x04)(0x35)(0xD1)(0xDF);
base58Prefixes[EXT_PUBLIC_KEY] = epk;
std::vector<unsigned char> esk = list_of(0x04)(0x35)(0x75)(0xA4);
base58Prefixes[EXT_SECRET_KEY] = esk;
}
virtual Network NetworkID() const { return CChainParams::TESTNET; }
};

View file

@ -140,7 +140,7 @@ double CTransaction::ComputePriority(double dPriorityInputs, unsigned int nTxSiz
std::string CTransaction::ToString() const
{
std::string str;
str += strprintf("CTransaction(hash=%s, ver=%d, vin.size=%"PRIszu", vout.size=%"PRIszu", nLockTime=%u)\n",
str += strprintf("CTransaction(hash=%s, ver=%d, vin.size=%" PRIszu", vout.size=%" PRIszu", nLockTime=%u)\n",
GetHash().ToString().substr(0,10),
nVersion,
vin.size(),
@ -242,11 +242,12 @@ std::vector<uint256> CBlock::GetMerkleBranch(int nIndex) const
BuildMerkleTree();
std::vector<uint256> vMerkleBranch;
int j = 0;
for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2)
size_t iH8cpp = nIndex;
for (size_t nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2)
{
int i = std::min(nIndex^1, nSize-1);
int i = std::min(iH8cpp^1, nSize-1);
vMerkleBranch.push_back(vMerkleTree[j+i]);
nIndex >>= 1;
iH8cpp >>= 1;
j += nSize;
}
return vMerkleBranch;
@ -269,7 +270,7 @@ uint256 CBlock::CheckMerkleBranch(uint256 hash, const std::vector<uint256>& vMer
void CBlock::print() const
{
LogPrintf("CBlock(hash=%s, ver=%d, hashPrevBlock=%s, hashMerkleRoot=%s, nTime=%u, nBits=%08x, nNonce=%u, vtx=%"PRIszu")\n",
LogPrintf("CBlock(hash=%s, ver=%d, hashPrevBlock=%s, hashMerkleRoot=%s, nTime=%u, nBits=%08x, nNonce=%u, vtx=%" PRIszu")\n",
GetHash().ToString(),
nVersion,
hashPrevBlock.ToString(),

View file

@ -8,6 +8,7 @@
#include "allocators.h"
#include "serialize.h"
#include "keystore.h"
#include "script.h"
class uint256;

View file

@ -1069,12 +1069,12 @@ bool AppInit2(boost::thread_group& threadGroup)
RandAddSeedPerfmon();
//// debug print
LogPrintf("mapBlockIndex.size() = %"PRIszu"\n", mapBlockIndex.size());
LogPrintf("mapBlockIndex.size() = %" PRIszu"\n", mapBlockIndex.size());
LogPrintf("nBestHeight = %d\n", chainActive.Height());
#ifdef ENABLE_WALLET
LogPrintf("setKeyPool.size() = %"PRIszu"\n", pwalletMain ? pwalletMain->setKeyPool.size() : 0);
LogPrintf("mapWallet.size() = %"PRIszu"\n", pwalletMain ? pwalletMain->mapWallet.size() : 0);
LogPrintf("mapAddressBook.size() = %"PRIszu"\n", pwalletMain ? pwalletMain->mapAddressBook.size() : 0);
LogPrintf("setKeyPool.size() = %" PRIszu"\n", pwalletMain ? pwalletMain->setKeyPool.size() : 0);
LogPrintf("mapWallet.size() = %" PRIszu"\n", pwalletMain ? pwalletMain->mapWallet.size() : 0);
LogPrintf("mapAddressBook.size() = %" PRIszu"\n", pwalletMain ? pwalletMain->mapAddressBook.size() : 0);
#endif
StartNode(threadGroup);

View file

@ -10,7 +10,7 @@
#include <leveldb/cache.h>
#include <leveldb/env.h>
#include <leveldb/filter_policy.h>
#include <memenv.h>
#include <helpers/memenv/memenv.h>
void HandleError(const leveldb::Status &status) throw(leveldb_error) {
if (status.ok())

View file

@ -353,7 +353,7 @@ bool AddOrphanTx(const CTransaction& tx)
BOOST_FOREACH(const CTxIn& txin, tx.vin)
mapOrphanTransactionsByPrev[txin.prevout.hash].insert(hash);
LogPrint("mempool", "stored orphan tx %s (mapsz %"PRIszu")\n", hash.ToString(),
LogPrint("mempool", "stored orphan tx %s (mapsz %" PRIszu")\n", hash.ToString(),
mapOrphanTransactions.size());
return true;
}
@ -3062,7 +3062,7 @@ void PrintBlockTree()
// print item
CBlock block;
ReadBlockFromDisk(block, pindex);
LogPrintf("%d (blk%05u.dat:0x%x) %s tx %"PRIszu"",
LogPrintf("%d (blk%05u.dat:0x%x) %s tx %" PRIszu"",
pindex->nHeight,
pindex->GetBlockPos().nFile, pindex->GetBlockPos().nPos,
DateTimeStrFormat("%Y-%m-%d %H:%M:%S", block.GetBlockTime()),
@ -3389,7 +3389,7 @@ void static ProcessGetData(CNode* pfrom)
bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
{
RandAddSeedPerfmon();
LogPrint("net", "received: %s (%"PRIszu" bytes)\n", strCommand, vRecv.size());
LogPrint("net", "received: %s (%" PRIszu" bytes)\n", strCommand, vRecv.size());
if (mapArgs.count("-dropmessagestest") && GetRand(atoi(mapArgs["-dropmessagestest"])) == 0)
{
LogPrintf("dropmessagestest DROPPING RECV MESSAGE\n");
@ -3533,7 +3533,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
if (vAddr.size() > 1000)
{
Misbehaving(pfrom->GetId(), 20);
return error("message addr size() = %"PRIszu"", vAddr.size());
return error("message addr size() = %" PRIszu"", vAddr.size());
}
// Store the new addresses
@ -3596,7 +3596,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
if (vInv.size() > MAX_INV_SZ)
{
Misbehaving(pfrom->GetId(), 20);
return error("message inv size() = %"PRIszu"", vInv.size());
return error("message inv size() = %" PRIszu"", vInv.size());
}
// find last block in inv vector
@ -3647,11 +3647,11 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
if (vInv.size() > MAX_INV_SZ)
{
Misbehaving(pfrom->GetId(), 20);
return error("message getdata size() = %"PRIszu"", vInv.size());
return error("message getdata size() = %" PRIszu"", vInv.size());
}
if (fDebug || (vInv.size() != 1))
LogPrint("net", "received getdata (%"PRIszu" invsz)\n", vInv.size());
LogPrint("net", "received getdata (%" PRIszu" invsz)\n", vInv.size());
if ((fDebug && vInv.size() > 0) || (vInv.size() == 1))
LogPrint("net", "received getdata for: %s\n", vInv[0].ToString());
@ -3759,7 +3759,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
vEraseQueue.push_back(inv.hash);
LogPrint("mempool", "AcceptToMemoryPool: %s %s : accepted %s (poolsz %"PRIszu")\n",
LogPrint("mempool", "AcceptToMemoryPool: %s %s : accepted %s (poolsz %" PRIszu")\n",
pfrom->addr.ToString(), pfrom->cleanSubVer,
tx.GetHash().ToString(),
mempool.mapTx.size());
@ -3943,7 +3943,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
}
if (!(sProblem.empty())) {
LogPrint("net", "pong %s %s: %s, %x expected, %x received, %"PRIszu" bytes\n",
LogPrint("net", "pong %s %s: %s, %x expected, %x received, %" PRIszu" bytes\n",
pfrom->addr.ToString(),
pfrom->cleanSubVer,
sProblem,

View file

@ -532,7 +532,7 @@ void static DogecoinMiner(CWallet *pwallet)
CBlock *pblock = &pblocktemplate->block;
IncrementExtraNonce(pblock, pindexPrev, nExtraNonce);
printf("Running DogecoinMiner with %"PRIszu" transactions in block (%u bytes)\n", pblock->vtx.size(),
printf("Running DogecoinMiner with %" PRIszu" transactions in block (%u bytes)\n", pblock->vtx.size(),
::GetSerializeSize(*pblock, SER_NETWORK, PROTOCOL_VERSION));
//

View file

@ -185,7 +185,7 @@ CScript _createmultisig(const Array& params)
if ((int)keys.size() < nRequired)
throw runtime_error(
strprintf("not enough keys supplied "
"(got %"PRIszu" keys, but need at least %d to redeem)", keys.size(), nRequired));
"(got %" PRIszu" keys, but need at least %d to redeem)", keys.size(), nRequired));
std::vector<CPubKey> pubkeys;
pubkeys.resize(keys.size());
for (unsigned int i = 0; i < keys.size(); i++)

View file

@ -93,7 +93,7 @@ string HTTPReply(int nStatus, const string& strMsg, bool keepalive)
"HTTP/1.1 %d %s\r\n"
"Date: %s\r\n"
"Connection: %s\r\n"
"Content-Length: %"PRIszu"\r\n"
"Content-Length: %" PRIszu"\r\n"
"Content-Type: application/json\r\n"
"Server: dogecoin-json-rpc/%s\r\n"
"\r\n"

View file

@ -90,6 +90,8 @@ T* alignup(T* p)
#define MSG_NOSIGNAL 0
#endif
#define HAVE_WORKING_BOOST_SLEEP_FOR 1
inline void MilliSleep(int64_t n)
{
// Boost's sleep_for was uninterruptable when backed by nanosleep from 1.50

View file

@ -686,6 +686,116 @@ bool CWallet::IsChange(const CTxOut& txout) const
return false;
}
#pragma mark - CWalletTx
bool CWalletTx::IsTrusted() const
{
// Quick answer in most cases
if (!IsFinalTx(*this))
return false;
int nDepth = GetDepthInMainChain();
if (nDepth >= 1)
return true;
if (nDepth < 0)
return false;
if (!bSpendZeroConfChange || !IsFromMe()) // using wtx's cached debit
return false;
// Trusted if all inputs are from us and are in the mempool:
BOOST_FOREACH(const CTxIn& txin, vin)
{
// Transactions not sent by us: not trusted
const CWalletTx* parent = pwallet->GetWalletTx(txin.prevout.hash);
if (parent == NULL)
return false;
const CTxOut& parentOut = parent->vout[txin.prevout.n];
if (!pwallet->IsMine(parentOut))
return false;
}
return true;
}
int64_t CWalletTx::GetAvailableCredit(bool fUseCache) const
{
if (pwallet == 0)
return 0;
// Must wait until coinbase is safely deep enough in the chain before valuing it
if (IsCoinBase() && GetBlocksToMaturity() > 0)
return 0;
if (fUseCache && fAvailableCreditCached)
return nAvailableCreditCached;
int64_t nCredit = 0;
uint256 hashTx = GetHash();
for (unsigned int i = 0; i < vout.size(); i++)
{
if (!pwallet->IsSpent(hashTx, i))
{
const CTxOut &txout = vout[i];
nCredit += pwallet->GetCredit(txout);
if (!MoneyRange(nCredit))
throw std::runtime_error("CWalletTx::GetAvailableCredit() : value out of range");
}
}
nAvailableCreditCached = nCredit;
fAvailableCreditCached = true;
return nCredit;
}
int64_t CWalletTx::GetChange() const
{
if (fChangeCached)
return nChangeCached;
nChangeCached = pwallet->GetChange(*this);
fChangeCached = true;
return nChangeCached;
}
int64_t CWalletTx::GetCredit(bool fUseCache) const
{
// Must wait until coinbase is safely deep enough in the chain before valuing it
if (IsCoinBase() && GetBlocksToMaturity() > 0)
return 0;
// GetBalance can assume transactions in mapWallet won't change
if (fUseCache && fCreditCached)
return nCreditCached;
nCreditCached = pwallet->GetCredit(*this);
fCreditCached = true;
return nCreditCached;
}
int64_t CWalletTx::GetImmatureCredit(bool fUseCache) const
{
if (IsCoinBase() && GetBlocksToMaturity() > 0 && IsInMainChain())
{
if (fUseCache && fImmatureCreditCached)
return nImmatureCreditCached;
nImmatureCreditCached = pwallet->GetCredit(*this);
fImmatureCreditCached = true;
return nImmatureCreditCached;
}
return 0;
}
int64_t CWalletTx::GetDebit() const
{
if (vin.empty())
return 0;
if (fDebitCached)
return nDebitCached;
nDebitCached = pwallet->GetDebit(*this);
fDebitCached = true;
return nDebitCached;
}
int64_t CWalletTx::GetTxTime() const
{
int64_t n = nTimeSmart;
@ -1630,7 +1740,7 @@ bool CWallet::TopUpKeyPool(unsigned int kpSize)
if (!walletdb.WritePool(nEnd, CKeyPool(GenerateNewKey())))
throw runtime_error("TopUpKeyPool() : writing generated key failed");
setKeyPool.insert(nEnd);
LogPrintf("keypool added key %d, size=%"PRIszu"\n", nEnd, setKeyPool.size());
LogPrintf("keypool added key %d, size=%" PRIszu"\n", nEnd, setKeyPool.size());
}
}
return true;

View file

@ -34,6 +34,25 @@ class CReserveKey;
class CScript;
class CWalletTx;
typedef std::map<std::string, std::string> mapValue_t;
static void ReadOrderPos(int64_t& nOrderPos, mapValue_t& mapValue)
{
if (!mapValue.count("n"))
{
nOrderPos = -1; // TODO: calculate elsewhere
return;
}
nOrderPos = atoi64(mapValue["n"].c_str());
}
static void WriteOrderPos(const int64_t& nOrderPos, mapValue_t& mapValue)
{
if (nOrderPos == -1)
return;
mapValue["n"] = i64tostr(nOrderPos);
}
/** (client) version numbers for particular wallet features */
enum WalletFeature
{
@ -89,6 +108,170 @@ public:
StringMap destdata;
};
/** A transaction with a bunch of additional info that only the owner cares about.
* It includes any unrecorded transactions needed to link it back to the block chain.
*/
class CWalletTx : public CMerkleTx
{
private:
const CWallet* pwallet;
public:
mapValue_t mapValue;
std::vector<std::pair<std::string, std::string> > vOrderForm;
unsigned int fTimeReceivedIsTxTime;
unsigned int nTimeReceived; // time received by this node
unsigned int nTimeSmart;
char fFromMe;
std::string strFromAccount;
int64_t nOrderPos; // position in ordered transaction list
// memory only
mutable bool fDebitCached;
mutable bool fCreditCached;
mutable bool fImmatureCreditCached;
mutable bool fAvailableCreditCached;
mutable bool fChangeCached;
mutable int64_t nDebitCached;
mutable int64_t nCreditCached;
mutable int64_t nImmatureCreditCached;
mutable int64_t nAvailableCreditCached;
mutable int64_t nChangeCached;
CWalletTx()
{
Init(NULL);
}
CWalletTx(const CWallet* pwalletIn)
{
Init(pwalletIn);
}
CWalletTx(const CWallet* pwalletIn, const CMerkleTx& txIn) : CMerkleTx(txIn)
{
Init(pwalletIn);
}
CWalletTx(const CWallet* pwalletIn, const CTransaction& txIn) : CMerkleTx(txIn)
{
Init(pwalletIn);
}
void Init(const CWallet* pwalletIn)
{
pwallet = pwalletIn;
mapValue.clear();
vOrderForm.clear();
fTimeReceivedIsTxTime = false;
nTimeReceived = 0;
nTimeSmart = 0;
fFromMe = false;
strFromAccount.clear();
fDebitCached = false;
fCreditCached = false;
fImmatureCreditCached = false;
fAvailableCreditCached = false;
fChangeCached = false;
nDebitCached = 0;
nCreditCached = 0;
nImmatureCreditCached = 0;
nAvailableCreditCached = 0;
nChangeCached = 0;
nOrderPos = -1;
}
IMPLEMENT_SERIALIZE
(
CWalletTx* pthis = const_cast<CWalletTx*>(this);
if (fRead)
pthis->Init(NULL);
char fSpent = false;
if (!fRead)
{
pthis->mapValue["fromaccount"] = pthis->strFromAccount;
WriteOrderPos(pthis->nOrderPos, pthis->mapValue);
if (nTimeSmart)
pthis->mapValue["timesmart"] = strprintf("%u", nTimeSmart);
}
nSerSize += SerReadWrite(s, *(CMerkleTx*)this, nType, nVersion,ser_action);
std::vector<CMerkleTx> vUnused; // Used to be vtxPrev
READWRITE(vUnused);
READWRITE(mapValue);
READWRITE(vOrderForm);
READWRITE(fTimeReceivedIsTxTime);
READWRITE(nTimeReceived);
READWRITE(fFromMe);
READWRITE(fSpent);
if (fRead)
{
pthis->strFromAccount = pthis->mapValue["fromaccount"];
ReadOrderPos(pthis->nOrderPos, pthis->mapValue);
pthis->nTimeSmart = mapValue.count("timesmart") ? (unsigned int)atoi64(pthis->mapValue["timesmart"]) : 0;
}
pthis->mapValue.erase("fromaccount");
pthis->mapValue.erase("version");
pthis->mapValue.erase("spent");
pthis->mapValue.erase("n");
pthis->mapValue.erase("timesmart");
)
// make sure balances are recalculated
void MarkDirty()
{
fCreditCached = false;
fAvailableCreditCached = false;
fDebitCached = false;
fChangeCached = false;
}
void BindWallet(CWallet *pwalletIn)
{
pwallet = pwalletIn;
MarkDirty();
}
int64_t GetDebit() const;
int64_t GetCredit(bool fUseCache=true) const;
int64_t GetImmatureCredit(bool fUseCache=true) const;
int64_t GetAvailableCredit(bool fUseCache=true) const;
int64_t GetChange() const;
void GetAmounts(std::list<std::pair<CTxDestination, int64_t> >& listReceived,
std::list<std::pair<CTxDestination, int64_t> >& listSent, int64_t& nFee, std::string& strSentAccount) const;
void GetAccountAmounts(const std::string& strAccount, int64_t& nReceived,
int64_t& nSent, int64_t& nFee) const;
bool IsFromMe() const
{
return (GetDebit() > 0);
}
bool IsTrusted() const;
bool WriteToDisk();
int64_t GetTxTime() const;
int GetRequestCount() const;
void RelayWalletTransaction();
std::set<uint256> GetConflicts() const;
};
/** A CWallet is an extension of a keystore, which also maintains a set of transactions and balances,
* and provides the ability to create new transactions.
*/
@ -415,288 +598,6 @@ public:
};
typedef std::map<std::string, std::string> mapValue_t;
static void ReadOrderPos(int64_t& nOrderPos, mapValue_t& mapValue)
{
if (!mapValue.count("n"))
{
nOrderPos = -1; // TODO: calculate elsewhere
return;
}
nOrderPos = atoi64(mapValue["n"].c_str());
}
static void WriteOrderPos(const int64_t& nOrderPos, mapValue_t& mapValue)
{
if (nOrderPos == -1)
return;
mapValue["n"] = i64tostr(nOrderPos);
}
/** A transaction with a bunch of additional info that only the owner cares about.
* It includes any unrecorded transactions needed to link it back to the block chain.
*/
class CWalletTx : public CMerkleTx
{
private:
const CWallet* pwallet;
public:
mapValue_t mapValue;
std::vector<std::pair<std::string, std::string> > vOrderForm;
unsigned int fTimeReceivedIsTxTime;
unsigned int nTimeReceived; // time received by this node
unsigned int nTimeSmart;
char fFromMe;
std::string strFromAccount;
int64_t nOrderPos; // position in ordered transaction list
// memory only
mutable bool fDebitCached;
mutable bool fCreditCached;
mutable bool fImmatureCreditCached;
mutable bool fAvailableCreditCached;
mutable bool fChangeCached;
mutable int64_t nDebitCached;
mutable int64_t nCreditCached;
mutable int64_t nImmatureCreditCached;
mutable int64_t nAvailableCreditCached;
mutable int64_t nChangeCached;
CWalletTx()
{
Init(NULL);
}
CWalletTx(const CWallet* pwalletIn)
{
Init(pwalletIn);
}
CWalletTx(const CWallet* pwalletIn, const CMerkleTx& txIn) : CMerkleTx(txIn)
{
Init(pwalletIn);
}
CWalletTx(const CWallet* pwalletIn, const CTransaction& txIn) : CMerkleTx(txIn)
{
Init(pwalletIn);
}
void Init(const CWallet* pwalletIn)
{
pwallet = pwalletIn;
mapValue.clear();
vOrderForm.clear();
fTimeReceivedIsTxTime = false;
nTimeReceived = 0;
nTimeSmart = 0;
fFromMe = false;
strFromAccount.clear();
fDebitCached = false;
fCreditCached = false;
fImmatureCreditCached = false;
fAvailableCreditCached = false;
fChangeCached = false;
nDebitCached = 0;
nCreditCached = 0;
nImmatureCreditCached = 0;
nAvailableCreditCached = 0;
nChangeCached = 0;
nOrderPos = -1;
}
IMPLEMENT_SERIALIZE
(
CWalletTx* pthis = const_cast<CWalletTx*>(this);
if (fRead)
pthis->Init(NULL);
char fSpent = false;
if (!fRead)
{
pthis->mapValue["fromaccount"] = pthis->strFromAccount;
WriteOrderPos(pthis->nOrderPos, pthis->mapValue);
if (nTimeSmart)
pthis->mapValue["timesmart"] = strprintf("%u", nTimeSmart);
}
nSerSize += SerReadWrite(s, *(CMerkleTx*)this, nType, nVersion,ser_action);
std::vector<CMerkleTx> vUnused; // Used to be vtxPrev
READWRITE(vUnused);
READWRITE(mapValue);
READWRITE(vOrderForm);
READWRITE(fTimeReceivedIsTxTime);
READWRITE(nTimeReceived);
READWRITE(fFromMe);
READWRITE(fSpent);
if (fRead)
{
pthis->strFromAccount = pthis->mapValue["fromaccount"];
ReadOrderPos(pthis->nOrderPos, pthis->mapValue);
pthis->nTimeSmart = mapValue.count("timesmart") ? (unsigned int)atoi64(pthis->mapValue["timesmart"]) : 0;
}
pthis->mapValue.erase("fromaccount");
pthis->mapValue.erase("version");
pthis->mapValue.erase("spent");
pthis->mapValue.erase("n");
pthis->mapValue.erase("timesmart");
)
// make sure balances are recalculated
void MarkDirty()
{
fCreditCached = false;
fAvailableCreditCached = false;
fDebitCached = false;
fChangeCached = false;
}
void BindWallet(CWallet *pwalletIn)
{
pwallet = pwalletIn;
MarkDirty();
}
int64_t GetDebit() const
{
if (vin.empty())
return 0;
if (fDebitCached)
return nDebitCached;
nDebitCached = pwallet->GetDebit(*this);
fDebitCached = true;
return nDebitCached;
}
int64_t GetCredit(bool fUseCache=true) const
{
// Must wait until coinbase is safely deep enough in the chain before valuing it
if (IsCoinBase() && GetBlocksToMaturity() > 0)
return 0;
// GetBalance can assume transactions in mapWallet won't change
if (fUseCache && fCreditCached)
return nCreditCached;
nCreditCached = pwallet->GetCredit(*this);
fCreditCached = true;
return nCreditCached;
}
int64_t GetImmatureCredit(bool fUseCache=true) const
{
if (IsCoinBase() && GetBlocksToMaturity() > 0 && IsInMainChain())
{
if (fUseCache && fImmatureCreditCached)
return nImmatureCreditCached;
nImmatureCreditCached = pwallet->GetCredit(*this);
fImmatureCreditCached = true;
return nImmatureCreditCached;
}
return 0;
}
int64_t GetAvailableCredit(bool fUseCache=true) const
{
if (pwallet == 0)
return 0;
// Must wait until coinbase is safely deep enough in the chain before valuing it
if (IsCoinBase() && GetBlocksToMaturity() > 0)
return 0;
if (fUseCache && fAvailableCreditCached)
return nAvailableCreditCached;
int64_t nCredit = 0;
uint256 hashTx = GetHash();
for (unsigned int i = 0; i < vout.size(); i++)
{
if (!pwallet->IsSpent(hashTx, i))
{
const CTxOut &txout = vout[i];
nCredit += pwallet->GetCredit(txout);
if (!MoneyRange(nCredit))
throw std::runtime_error("CWalletTx::GetAvailableCredit() : value out of range");
}
}
nAvailableCreditCached = nCredit;
fAvailableCreditCached = true;
return nCredit;
}
int64_t GetChange() const
{
if (fChangeCached)
return nChangeCached;
nChangeCached = pwallet->GetChange(*this);
fChangeCached = true;
return nChangeCached;
}
void GetAmounts(std::list<std::pair<CTxDestination, int64_t> >& listReceived,
std::list<std::pair<CTxDestination, int64_t> >& listSent, int64_t& nFee, std::string& strSentAccount) const;
void GetAccountAmounts(const std::string& strAccount, int64_t& nReceived,
int64_t& nSent, int64_t& nFee) const;
bool IsFromMe() const
{
return (GetDebit() > 0);
}
bool IsTrusted() const
{
// Quick answer in most cases
if (!IsFinalTx(*this))
return false;
int nDepth = GetDepthInMainChain();
if (nDepth >= 1)
return true;
if (nDepth < 0)
return false;
if (!bSpendZeroConfChange || !IsFromMe()) // using wtx's cached debit
return false;
// Trusted if all inputs are from us and are in the mempool:
BOOST_FOREACH(const CTxIn& txin, vin)
{
// Transactions not sent by us: not trusted
const CWalletTx* parent = pwallet->GetWalletTx(txin.prevout.hash);
if (parent == NULL)
return false;
const CTxOut& parentOut = parent->vout[txin.prevout.n];
if (!pwallet->IsMine(parentOut))
return false;
}
return true;
}
bool WriteToDisk();
int64_t GetTxTime() const;
int GetRequestCount() const;
void RelayWalletTransaction();
std::set<uint256> GetConflicts() const;
};
class COutput
{

View file

@ -896,7 +896,7 @@ bool CWalletDB::Recover(CDBEnv& dbenv, std::string filename, bool fOnlyKeys)
LogPrintf("Salvage(aggressive) found no records in %s.\n", newFilename);
return false;
}
LogPrintf("Salvage(aggressive) found %"PRIszu" records\n", salvagedData.size());
LogPrintf("Salvage(aggressive) found %" PRIszu" records\n", salvagedData.size());
bool fSuccess = allOK;
Db* pdbCopy = new Db(&dbenv.dbenv, 0);