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:
parent
328d280f17
commit
30053cfaa3
54
contrib/macbuild/boostpatch.diff
Normal file
54
contrib/macbuild/boostpatch.diff
Normal 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,
|
18
contrib/macbuild/boostwrangle.sh
Normal file
18
contrib/macbuild/boostwrangle.sh
Normal 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
|
585
contrib/macbuild/dogecoind.xcodeproj/project.pbxproj
Normal file
585
contrib/macbuild/dogecoind.xcodeproj/project.pbxproj
Normal 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 */;
|
||||
}
|
7
contrib/macbuild/dogecoind.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
contrib/macbuild/dogecoind.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:dogecoind.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
|
@ -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; }
|
||||
};
|
||||
|
|
11
src/core.cpp
11
src/core.cpp
|
@ -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(),
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "allocators.h"
|
||||
#include "serialize.h"
|
||||
#include "keystore.h"
|
||||
#include "script.h"
|
||||
|
||||
class uint256;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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())
|
||||
|
|
18
src/main.cpp
18
src/main.cpp
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
|
||||
//
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
112
src/wallet.cpp
112
src/wallet.cpp
|
@ -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;
|
||||
|
|
465
src/wallet.h
465
src/wallet.h
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue