Show Posts
|
Pages: « 1 2 3 [4] 5 »
|
Thanks for the feedback. I wasn't sure what kind of interest there would be for something like this, but there's definitely a lot of room for new/alternate card designs. These cards aren't mass produced, so I do have the flexibility to print any design. Theoretically, the check out page could offer a choice of several designs or even include a JPEG upload box to use your own.
Sorry I can't do international shipping. If it were just the postage cost, I wouldn't mind but the USPS makes it a real pain to send anything out of the country. You have to fill out a customs form and then wait in line to personally hand your item to someone at the desk.
For the checkout system, I have two servers interacting with each other. One server runs the bitcoind daemon and the other server hosts the web site. When the web site processes an order, it sends a request to the one with bitcoind to ask for a new address. It displays this address on the screen as both ASCII and a QR code, and it logs that address in an SQL database along with the other details of the order (customer name, shipping address, quantity, order total, etc.). This database entry also has a field for order status (values are either pending, paid, or shipped). Every two hours, a cron job runs on the web server to check the balance of the addresses of all pending orders. If it spots that payment to an address has been received, it updates the database entry for that order to "paid".
The purpose of using two servers is first for added security, and second so that the same system could potentially be used to manage payments for a bunch of different web sites across an array of different web servers.
I'll post a more detailed explanation up on the site a little later.
|
|
|
I made something that seems to be quite effective in helping me to explain Bitcoin to newcomers. It's a plastic card, like a credit card, with a QR code of my payment address. The idea is that if I wanted to receive a payment from someone in-person, I could hand him my card, he'd scan it with his phone, and pay me with his mobile app. So far, I've only been using it for demonstration purposes to show how easy it is to send and receive money with Bitcoin, but the response I've been getting has surprised me. Somehow showing somebody a tangible card makes the whole concept easier to understand. If anyone wants one with your own address printed on it, I'm selling them at: http://www.paymyaddress.com
|
|
|
I found the problem in case anyone else is interested. You have to add some more headers and objects to the makefile.centos so that it looks like this: HEADERS=base58.h \ bignum.h \ crypter.h \ db.h \ headers.h \ init.h \ irc.h \ key.h \ keystore.h \ main.h \ net.h \ noui.h \ protocol.h \ rpc.h \ script.h \ serialize.h \ strlcpy.h \ ui.h \ uibase.h \ uint256.h \ util.h \ wallet.h OBJS=obj/crypter.o \ obj/db.o \ obj/init.o \ obj/irc.o \ obj/keystore.o \ obj/main.o \ obj/net.o \ obj/protocol.o \ obj/rpc.o \ obj/script.o \ obj/util.o \ obj/wallet.o \ cryptopp/obj/sha.o \ cryptopp/obj/cpu.o
Also, it seems unrelated but sha256.cpp is not included with the v0.4.0 source. I had to copy it from a previous version.
|
|
|
I've followed the instructions on this page: http://www.staff.tugraz.at/michael.steurer/Bitcoin-CentOS5.5-V1.pdfBut this is the output I get: make -f makefile.centos bitcoind g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/util.o util.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/script.o script.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/db.o db.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/net.o net.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/irc.o irc.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/main.o main.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/rpc.o rpc.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o obj/no gui/init.o init.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -O3 -o cr yptopp/obj/sha.o cryptopp/sha.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -O3 -o cr yptopp/obj/cpu.o cryptopp/cpu.cpp g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -msse2 -O 3 -march=amdfam10 -o obj/sha256.o sha256.cpp g++ -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/home/bitman/Bitcoin/Deps/include" -o bitcoind obj/nogui/util.o obj/nogui/script.o obj/nogui/db.o obj/nogui/net.o obj/nogui/irc.o obj/nogui/main.o obj/nogui/rpc.o obj/nogui/init.o crypt opp/obj/sha.o cryptopp/obj/cpu.o obj/sha256.o -dead_strip -Wl,-Bstatic /home/bitman/Bitcoin/Deps/lib/libdb_cxx-5.1.a -mtl /home/bitman/Bit coin/Deps/lib/libboost_system.a -mtl /home/bitman/Bitcoin/Deps/lib/libboost_thread.a -mtl /home/bitman/Bitcoin/Deps/lib/libboost_filesyste m.a -mtl /home/bitman/Bitcoin/Deps/lib/libboost_program_options.a /home/bitman/Bitcoin/Deps/lib/libdb_cxx.a /home/bitman/Bitcoin/Deps/lib/ libssl.a /home/bitman/Bitcoin/Deps/lib/libcrypto.a -l ssl -l crypto -Wl,-Bdynamic -l gthread-2.0 -l z -l dl obj/nogui/db.o: In function `CAddrDB::WriteAddress(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/db.cpp:511: undefined reference to `CAddress::GetKey() const' obj/nogui/db.o: In function `CAddrDB::EraseAddress(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/db.cpp:516: undefined reference to `CAddress::GetKey() const' obj/nogui/db.o: In function `CAddrDB::LoadAddresses()': /home/bitman/Bitcoin/Trunk/src/src/db.cpp:532: undefined reference to `CAddress::CAddress(char const*, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/db.cpp:534: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/db.cpp:564: undefined reference to `CAddress::GetKey() const' /home/bitman/Bitcoin/Trunk/src/src/db.cpp:562: undefined reference to `CAddress::CAddress()' obj/nogui/db.o: In function `operator>><CAddress>': /home/bitman/Bitcoin/Trunk/src/src/protocol.h:77: undefined reference to `CAddress::Init()' obj/nogui/db.o: In function `CWallet::LoadKey(CKey const&)': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:61: undefined reference to `CCryptoKeyStore::AddKey(CKey const&)' obj/nogui/db.o: In function `CWallet::LoadCryptedKey(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsign ed char, std::allocator<unsigned char> > const&)': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:63: undefined reference to `CCryptoKeyStore::AddCryptedKey(std::vector<unsigned char, std::all ocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&)' obj/nogui/db.o: In function `CWalletDB::LoadWallet(CWallet*)': /home/bitman/Bitcoin/Trunk/src/src/db.cpp:857: undefined reference to `CAddress::ToString() const' obj/nogui/db.o: In function `Unserialize<CDataStream>': /home/bitman/Bitcoin/Trunk/src/src/protocol.h:77: undefined reference to `CAddress::Init()' obj/nogui/net.o: In function `Lookup(char const*, std::vector<CAddress, std::allocator<CAddress> >&, int, int, bool, int, bool)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:260: undefined reference to `CAddress::CAddress(unsigned int, unsigned short, unsigned long lon g)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:277: undefined reference to `CAddress::CAddress(unsigned int, unsigned short, unsigned long lon g)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:278: undefined reference to `CAddress::IsValid() const' obj/nogui/net.o: In function `FindNode(CAddress)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:638: undefined reference to `operator==(CAddress const&, CAddress const&)' obj/nogui/net.o: In function `CNode::CloseSocketDisconnect()': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:711: undefined reference to `CAddress::ToString() const' obj/nogui/net.o: In function `ConnectSocket(CAddress const&, unsigned int&, int)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:103: undefined reference to `CAddress::GetSockAddr() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:102: undefined reference to `CAddress::IsRoutable() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:103: undefined reference to `CAddress::GetSockAddr() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:192: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:218: undefined reference to `CAddress::ToString() const' obj/nogui/net.o: In function `GetMyExternalIP2(CAddress const&, char const*, char const*, unsigned int&)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:300: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:330: undefined reference to `CAddress::CAddress(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:331: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:332: undefined reference to `CAddress::IsRoutable() const' obj/nogui/net.o: In function `GetMyExternalIP(unsigned int&)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:345: undefined reference to `CAddress::CAddress()' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:361: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:380: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:365: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:366: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:384: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:385: undefined reference to `CAddress::IsValid() const' obj/nogui/net.o: In function `__static_initialization_and_destruction_0': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:47: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:65: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' obj/nogui/net.o: In function `AddAddress(CAddress, long long, CAddrDB*)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:441: undefined reference to `CAddress::IsRoutable() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:452: undefined reference to `CAddress::GetKey() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:456: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:457: undefined reference to `CAddress::GetKey() const' obj/nogui/net.o: In function `DNSAddressSeed()': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1182: undefined reference to `CAddress::GetByte(int) const' obj/nogui/net.o: In function `AddressCurrentlyConnected(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:501: undefined reference to `CAddress::GetKey() const' obj/nogui/net.o: In function `StartNode(void*)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1673: undefined reference to `CAddress::CAddress(unsigned int, unsigned short, unsigned long lo ng)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1674: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1674: undefined reference to `CAddress::GetByte(int) const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1690: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1695: undefined reference to `CAddress::CAddress(char const*, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1696: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1638: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' obj/nogui/net.o: In function `ThreadSocketHandler2(void*)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:883: undefined reference to `CAddress::CAddress(sockaddr_in const&, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:901: undefined reference to `CAddress::ToString() const' obj/nogui/net.o: In function `ConnectNode(CAddress, long long)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:664: undefined reference to `CAddress::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:667: undefined reference to `CAddress::GetKey() const' obj/nogui/net.o: In function `std::map<std::vector<unsigned char, std::allocator<unsigned char> >, CAddress, std::less<std::vector<unsigne d char, std::allocator<unsigned char> > >, std::allocator<std::pair<std::vector<unsigned char, std::allocator<unsigned char> > const, CAdd ress> > >::operator[](std::vector<unsigned char, std::allocator<unsigned char> > const&)': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_map.h:348: undefined reference to `CAddress::CAddress()' obj/nogui/net.o: In function `ConnectNode(CAddress, long long)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:674: undefined reference to `CAddress::ToString() const' obj/nogui/net.o: In function `OpenNetworkConnection(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1457: undefined reference to `CAddress::IsIPv4() const' obj/nogui/net.o: In function `ThreadOpenConnections2(void*)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1300: undefined reference to `CAddress::CAddress(std::basic_string<char, std::char_traits<char> , std::allocator<char> >, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1301: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1318: undefined reference to `CAddress::CAddress(std::basic_string<char, std::char_traits<char> , std::allocator<char> >, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1319: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1380: undefined reference to `CAddress::CAddress()' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1395: undefined reference to `CAddress::IsIPv4() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1395: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1445: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:1368: undefined reference to `CAddress::CAddress()' obj/nogui/net.o: In function `ThreadGetMyExternalIP(void*)': /home/bitman/Bitcoin/Trunk/src/src/net.cpp:421: undefined reference to `CAddress::ToStringIP() const' /home/bitman/Bitcoin/Trunk/src/src/net.cpp:422: undefined reference to `CAddress::IsRoutable() const' obj/nogui/net.o: In function `CNode::PushAddress(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/net.h:240: undefined reference to `CAddress::IsValid() const' obj/nogui/net.o: In function `std::less<CAddress>::operator()(CAddress const&, CAddress const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CAddress c onst&, CAddress const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CAddress c onst&, CAddress const&)' obj/nogui/net.o: In function `CNode::BeginMessage(char const*)': /home/bitman/Bitcoin/Trunk/src/src/net.h:283: undefined reference to `CMessageHeader::CMessageHeader(char const*, unsigned int)' obj/nogui/net.o: In function `CNode': /home/bitman/Bitcoin/Trunk/src/src/net.h:153: undefined reference to `CAddress::CAddress()' obj/nogui/net.o: In function `CNode::PushVersion()': /home/bitman/Bitcoin/Trunk/src/src/net.h:357: undefined reference to `CAddress::CAddress(char const*, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.h:356: undefined reference to `CAddress::CAddress(char const*, bool, unsigned long long)' obj/nogui/irc.o: In function `DecodeAddress(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, CAddress&)': /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:51: undefined reference to `CAddress::CAddress(unsigned int, unsigned short, unsigned long long )' obj/nogui/irc.o: In function `GetIPFromIRC(unsigned int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int&)': /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:230: undefined reference to `CAddress::CAddress(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:231: undefined reference to `CAddress::IsValid() const' obj/nogui/irc.o: In function `ThreadIRCSeed2(void*)': /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:272: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:276: undefined reference to `CAddress::CAddress(char const*, int, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:277: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:304: undefined reference to `CAddress::IsRoutable() const' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:333: undefined reference to `CAddress::CAddress()' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:392: undefined reference to `CAddress::CAddress()' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:336: undefined reference to `CAddress::ToStringIP() const' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:337: undefined reference to `CAddress::IsRoutable() const' /home/bitman/Bitcoin/Trunk/src/src/irc.cpp:397: undefined reference to `CAddress::ToString() const' obj/nogui/main.o: In function `EraseFromWallets': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:112: undefined reference to `CWallet::EraseFromWallet(uint256)' obj/nogui/main.o: In function `CWallet::GetDebit(CTransaction const&) const': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:134: undefined reference to `CWallet::GetDebit(CTxIn const&) const' obj/nogui/main.o: In function `SyncWithWallets': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:118: undefined reference to `CWallet::AddToWalletIfInvolvingMe(CTransaction const&, CBlock con st*, bool)' obj/nogui/main.o: In function `ResendWalletTransactions': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:148: undefined reference to `CWallet::ResendWalletTransactions()' obj/nogui/main.o: In function `GetTransaction': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:104: undefined reference to `CWallet::GetTransaction(uint256 const&, CWalletTx&)' obj/nogui/main.o: In function `std::less<CInv>::operator()(CInv const&, CInv const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' obj/nogui/main.o: In function `SendMessages(CNode*, bool)': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2537: undefined reference to `CInv::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2402: undefined reference to `CAddress::IsRoutable() const' obj/nogui/main.o: In function `CNode::PushAddress(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/net.h:240: undefined reference to `CAddress::IsValid() const' obj/nogui/main.o: In function `CreateNewBlock(CReserveKey&)': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2669: undefined reference to `CReserveKey::GetReservedKey()' obj/nogui/main.o: In function `PrintWallets': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:136: undefined reference to `CWallet::PrintWallet(CBlock const&)' obj/nogui/main.o: In function `CBlock::AcceptBlock()': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1324: undefined reference to `CInv::CInv(int, uint256 const&)' obj/nogui/main.o: In function `CheckWork(CBlock*, CWallet&, CReserveKey&)': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2886: undefined reference to `CReserveKey::KeepKey()' obj/nogui/main.o: In function `~CReserveKey': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:220: undefined reference to `CReserveKey::ReturnKey()' /home/bitman/Bitcoin/Trunk/src/src/wallet.h:220: undefined reference to `CReserveKey::ReturnKey()' /home/bitman/Bitcoin/Trunk/src/src/wallet.h:220: undefined reference to `CReserveKey::ReturnKey()' obj/nogui/main.o: In function `ProcessMessage': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1768: undefined reference to `CAddress::CAddress()' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1769: undefined reference to `CAddress::CAddress()' obj/nogui/main.o: In function `Unserialize<CDataStream>': /home/bitman/Bitcoin/Trunk/src/src/protocol.h:77: undefined reference to `CAddress::Init()' /home/bitman/Bitcoin/Trunk/src/src/protocol.h:77: undefined reference to `CAddress::Init()' obj/nogui/main.o: In function `ProcessMessage': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1810: undefined reference to `CAddress::IsRoutable() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1787: undefined reference to `CAddress::ToString() const' obj/nogui/main.o: In function `CNode::PushVersion()': /home/bitman/Bitcoin/Trunk/src/src/net.h:357: undefined reference to `CAddress::CAddress(char const*, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/net.h:356: undefined reference to `CAddress::CAddress(char const*, bool, unsigned long long)' obj/nogui/main.o: In function `ProcessMessage': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1939: undefined reference to `CInv::ToString() const' obj/nogui/main.o: In function `std::less<CInv>::operator()(CInv const&, CInv const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' obj/nogui/main.o: In function `CNode::AskFor(CInv const&)': /home/bitman/Bitcoin/Trunk/src/src/net.h:263: undefined reference to `CInv::ToString() const' obj/nogui/main.o: In function `ProcessMessage': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1882: undefined reference to `CAddress::IsIPv4() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1888: undefined reference to `CAddress::IsRoutable() const' obj/nogui/main.o: In function `CNode::PushAddress(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/net.h:240: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/net.h:240: undefined reference to `CAddress::IsValid() const' obj/nogui/main.o: In function `ProcessMessage': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1988: undefined reference to `CInv::IsKnownType() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1963: undefined reference to `CInv::ToString() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1982: undefined reference to `CInv::CInv(int, uint256 const&)' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:1995: undefined reference to `CInv::GetCommand() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2027: undefined reference to `CInv::CInv(int, uint256 const&)' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2086: undefined reference to `CInv::CInv(int, uint256 const&)' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2140: undefined reference to `CInv::CInv(int, uint256 const&)' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2108: undefined reference to `CInv::CInv(int, uint256 const&)' obj/nogui/main.o: In function `CNode::PushAddress(CAddress const&)': /home/bitman/Bitcoin/Trunk/src/src/net.h:240: undefined reference to `CAddress::IsValid() const' obj/nogui/main.o: In function `ProcessMessage': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2190: undefined reference to `CWallet::GetKeyFromPool(std::vector<unsigned char, std::allocato r<unsigned char> >&, bool)' obj/nogui/main.o: In function `ProcessMessages(CNode*)': /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2276: undefined reference to `CMessageHeader::CMessageHeader()' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2292: undefined reference to `CMessageHeader::CMessageHeader()' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2294: undefined reference to `CMessageHeader::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2296: undefined reference to `CMessageHeader::GetCommand() const' /home/bitman/Bitcoin/Trunk/src/src/main.cpp:2299: undefined reference to `CMessageHeader::GetCommand() const' obj/nogui/main.o: In function `std::less<CAddress>::operator()(CAddress const&, CAddress const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CAddress c onst&, CAddress const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CAddress c onst&, CAddress const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CAddress c onst&, CAddress const&)' obj/nogui/main.o: In function `std::less<CInv>::operator()(CInv const&, CInv const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' obj/nogui/main.o:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: more undefined references t o `operator<(CInv const&, CInv const&)' follow obj/nogui/main.o: In function `CNode::AskFor(CInv const&)': /home/bitman/Bitcoin/Trunk/src/src/net.h:263: undefined reference to `CInv::ToString() const' obj/nogui/main.o: In function `void Unserialize_impl<CDataStream, CAddress, std::allocator<CAddress> >(CDataStream&, std::vector<CAddress, std::allocator<CAddress> >&, int, int, boost::integral_constant<bool, false> const&)': /home/bitman/Bitcoin/Trunk/src/src/serialize.h:547: undefined reference to `CAddress::CAddress()' obj/nogui/main.o: In function `Unserialize<CDataStream>': /home/bitman/Bitcoin/Trunk/src/src/protocol.h:77: undefined reference to `CAddress::Init()' obj/nogui/main.o: In function `void Unserialize_impl<CDataStream, CInv, std::allocator<CInv> >(CDataStream&, std::vector<CInv, std::alloca tor<CInv> >&, int, int, boost::integral_constant<bool, false> const&)': /home/bitman/Bitcoin/Trunk/src/src/serialize.h:547: undefined reference to `CInv::CInv()' obj/nogui/main.o: In function `std::less<CInv>::operator()(CInv const&, CInv const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' obj/nogui/main.o:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: more undefined references t o `operator<(CInv const&, CInv const&)' follow obj/nogui/main.o: In function `bool WriteSetting<int>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int c onst&)': /home/bitman/Bitcoin/Trunk/src/src/main.h:125: undefined reference to `GetWalletFile(CWallet*, std::basic_string<char, std::char_traits<ch ar>, std::allocator<char> >&)' obj/nogui/main.o: In function `std::less<CInv>::operator()(CInv const&, CInv const&) const': /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h:227: undefined reference to `operator<(CInv const &, CInv const&)' obj/nogui/rpc.o: In function `GetAccountBalance(CWalletDB&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:635: undefined reference to `CWalletTx::GetAccountAmounts(std::basic_string<char, std::char_tra its<char>, std::allocator<char> > const&, long long&, long long&, long long&, long long&) const' obj/nogui/rpc.o: In function `WalletTxToJSON(CWalletTx const&, std::vector<json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_st ring<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Pair_impl<json_spirit::Config_vector<std::basic _string<char, std::char_traits<char>, std::allocator<char> > > > > >&)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:95: undefined reference to `CWalletTx::GetTxTime() const' obj/nogui/rpc.o: In function `CCryptoKeyStore::Lock()': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:97: undefined reference to `CCryptoKeyStore::SetCrypted()' obj/nogui/rpc.o: In function `keypoolrefill(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::ch ar_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std ::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1264: undefined reference to `CWallet::TopUpKeyPool()' obj/nogui/rpc.o: In function `encryptwallet(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::ch ar_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std ::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1444: undefined reference to `CWallet::EncryptWallet(std::basic_string<char, std::char_traits<c har>, std::allocator<char> > const&)' obj/nogui/rpc.o: In function `walletpassphrasechange(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char , std::char_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string< char, std::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1383: undefined reference to `CWallet::ChangeWalletPassphrase(std::basic_string<char, std::char _traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' obj/nogui/rpc.o: In function `walletpassphrase(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std: :char_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1335: undefined reference to `CWallet::Unlock(std::basic_string<char, std::char_traits<char>, s td::allocator<char> > const&)' obj/nogui/rpc.o: In function `getbalance(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_ traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::c har_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:686: undefined reference to `CWalletTx::GetAmounts(long long&, long long&, std::list<std::pair< CBitcoinAddress, long long>, std::allocator<std::pair<CBitcoinAddress, long long> > >&, std::list<std::pair<CBitcoinAddress, long long>, s td::allocator<std::pair<CBitcoinAddress, long long> > >&, long long&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:664: undefined reference to `CWallet::GetBalance() const' obj/nogui/rpc.o: In function `sendtoaddress(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::ch ar_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std ::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:526: undefined reference to `CWallet::SendMoneyToBitcoinAddress(CBitcoinAddress const&, long lo ng, CWalletTx&, bool)' obj/nogui/rpc.o: In function `sendfrom(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_tr aits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::cha r_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:789: undefined reference to `CWallet::SendMoneyToBitcoinAddress(CBitcoinAddress const&, long lo ng, CWalletTx&, bool)' obj/nogui/rpc.o: In function `ListTransactions(CWalletTx const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > co nst&, int, bool, std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::alloc ator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::a llocator<char> > > > > >&)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1006: undefined reference to `CWalletTx::GetAmounts(long long&, long long&, std::list<std::pair <CBitcoinAddress, long long>, std::allocator<std::pair<CBitcoinAddress, long long> > >&, std::list<std::pair<CBitcoinAddress, long long>, std::allocator<std::pair<CBitcoinAddress, long long> > >&, long long&, std::basic_string<char, std::char_traits<char>, std::allocator<char > >&) const' obj/nogui/rpc.o: In function `CWallet::GetDebit(CTransaction const&) const': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:134: undefined reference to `CWallet::GetDebit(CTxIn const&) const' /home/bitman/Bitcoin/Trunk/src/src/wallet.h:134: undefined reference to `CWallet::GetDebit(CTxIn const&) const' obj/nogui/rpc.o: In function `GetAccountAddress(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:382: undefined reference to `CWallet::GetKeyFromPool(std::vector<unsigned char, std::allocator< unsigned char> >&, bool)' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:385: undefined reference to `CWallet::SetAddressBookName(CBitcoinAddress const&, std::basic_str ing<char, std::char_traits<char>, std::allocator<char> > const&)' obj/nogui/rpc.o: In function `setaccount(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_ traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::c har_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:435: undefined reference to `CWallet::SetAddressBookName(CBitcoinAddress const&, std::basic_str ing<char, std::char_traits<char>, std::allocator<char> > const&)' obj/nogui/rpc.o: In function `getnewaddress(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::ch ar_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std ::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:340: undefined reference to `CWallet::TopUpKeyPool()' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:344: undefined reference to `CWallet::GetKeyFromPool(std::vector<unsigned char, std::allocator< unsigned char> >&, bool)' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:348: undefined reference to `CWallet::SetAddressBookName(CBitcoinAddress const&, std::basic_str ing<char, std::char_traits<char>, std::allocator<char> > const&)' obj/nogui/rpc.o: In function `listaccounts(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::cha r_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std: :char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1174: undefined reference to `CWalletTx::GetAmounts(long long&, long long&, std::list<std::pair <CBitcoinAddress, long long>, std::allocator<std::pair<CBitcoinAddress, long long> > >&, std::list<std::pair<CBitcoinAddress, long long>, std::allocator<std::pair<CBitcoinAddress, long long> > >&, long long&, std::basic_string<char, std::char_traits<char>, std::allocator<char > >&) const' obj/nogui/rpc.o: In function `listtransactions(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std: :char_traits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1113: undefined reference to `CWalletTx::GetTxTime() const' obj/nogui/rpc.o: In function `sendmany(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_tr aits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::cha r_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:853: undefined reference to `CWallet::CreateTransaction(std::vector<std::pair<CScript, long lon g>, std::allocator<std::pair<CScript, long long> > > const&, CWalletTx&, CReserveKey&, long long&)' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:856: undefined reference to `CWallet::GetBalance() const' obj/nogui/rpc.o: In function `~CReserveKey': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:220: undefined reference to `CReserveKey::ReturnKey()' obj/nogui/rpc.o: In function `sendmany(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_tr aits<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::cha r_traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:860: undefined reference to `CWallet::CommitTransaction(CWalletTx&, CReserveKey&)' obj/nogui/rpc.o: In function `~CReserveKey': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:220: undefined reference to `CReserveKey::ReturnKey()' /home/bitman/Bitcoin/Trunk/src/src/wallet.h:220: undefined reference to `CReserveKey::ReturnKey()' obj/nogui/rpc.o: In function `getinfo(std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char_tra its<char>, std::allocator<char> > > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char, std::char _traits<char>, std::allocator<char> > > > > > const&, bool)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:306: undefined reference to `CWallet::GetBalance() const' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:309: undefined reference to `CAddress::ToStringIPPort() const' /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:315: undefined reference to `CWallet::GetOldestKeyPoolTime()' obj/nogui/rpc.o: In function `CCryptoKeyStore::Lock()': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:97: undefined reference to `CCryptoKeyStore::SetCrypted()' obj/nogui/rpc.o: In function `ThreadTopUpKeyPool(void*)': /home/bitman/Bitcoin/Trunk/src/src/rpc.cpp:1275: undefined reference to `CWallet::TopUpKeyPool()' obj/nogui/rpc.o: In function `CCryptoKeyStore::Lock()': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:97: undefined reference to `CCryptoKeyStore::SetCrypted()' obj/nogui/rpc.o: In function `CWallet::GetDebit(CTransaction const&) const': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:134: undefined reference to `CWallet::GetDebit(CTxIn const&) const' obj/nogui/init.o: In function `AppInit2(int, char**)': /home/bitman/Bitcoin/Trunk/src/src/init.cpp:392: undefined reference to `CWallet::LoadWallet(bool&)' /home/bitman/Bitcoin/Trunk/src/src/init.cpp:420: undefined reference to `CWallet::ScanForWalletTransactions(CBlockIndex*, bool)' /home/bitman/Bitcoin/Trunk/src/src/init.cpp:440: undefined reference to `CWallet::ReacceptWalletTransactions()' /home/bitman/Bitcoin/Trunk/src/src/init.cpp:486: undefined reference to `CAddress::CAddress(std::basic_string<char, std::char_traits<char> , std::allocator<char> >, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/init.cpp:487: undefined reference to `CAddress::IsValid() const' /home/bitman/Bitcoin/Trunk/src/src/init.cpp:498: undefined reference to `CAddress::CAddress(std::basic_string<char, std::char_traits<char> , std::allocator<char> >, bool, unsigned long long)' /home/bitman/Bitcoin/Trunk/src/src/init.cpp:500: undefined reference to `CAddress::IsValid() const' obj/nogui/init.o: In function `CKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:11: undefined reference to `vtable for CKeyStore' obj/nogui/init.o: In function `CWallet': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:43: undefined reference to `vtable for CWallet' obj/nogui/init.o: In function `~CCryptoKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:57: undefined reference to `vtable for CCryptoKeyStore' obj/nogui/init.o: In function `~CBasicKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:26: undefined reference to `vtable for CBasicKeyStore' obj/nogui/init.o: In function `~CKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:11: undefined reference to `vtable for CKeyStore' obj/nogui/init.o: In function `~CBasicKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:26: undefined reference to `vtable for CBasicKeyStore' obj/nogui/init.o: In function `~CWallet': /home/bitman/Bitcoin/Trunk/src/src/wallet.h:17: undefined reference to `vtable for CWallet' obj/nogui/init.o: In function `~CCryptoKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:57: undefined reference to `vtable for CCryptoKeyStore' obj/nogui/init.o: In function `~CBasicKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:26: undefined reference to `vtable for CBasicKeyStore' obj/nogui/init.o: In function `~CKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:11: undefined reference to `vtable for CKeyStore' obj/nogui/init.o: In function `~CCryptoKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:57: undefined reference to `vtable for CCryptoKeyStore' obj/nogui/init.o: In function `~CBasicKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:26: undefined reference to `vtable for CBasicKeyStore' obj/nogui/init.o: In function `~CKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:11: undefined reference to `vtable for CKeyStore' obj/nogui/init.o: In function `~CBasicKeyStore': /home/bitman/Bitcoin/Trunk/src/src/keystore.h:26: undefined reference to `vtable for CBasicKeyStore' /home/bitman/Bitcoin/Trunk/src/src/keystore.h:26: undefined reference to `vtable for CBasicKeyStore' collect2: ld returned 1 exit status make: *** [bitcoind] Error 1
Any idea what's wrong?
|
|
|
Would you buy MtG cards back for BTC?
For now, ABUgames only sells cards for Bitcoin but they do buy cards for USD. They've only been accepting Bitcoin for the last two months, but so far, very few people have used it. If more customers started paying with bit, I imagine they would gladly start issuing buylist payments in bit as well.
|
|
|
If you are looking for MtG cards (singles, packs, boxes, and accessories) visit www.ABUgames.com. They have a huge selection of every magic product ever made, fast shipping, excellent customer service, and very favorable BTC exchange rates.
|
|
|
The big question I have is how do you convince the users to adopt BTC? Offering a 5% discount (most likely the high end, of the discount range) will only be attractive to a certain group of people considering the additional hassle involved, compared with swiping a credit card.
This is indeed the big question. So far, I have convinced four vendors to start accepting bitcoin. They are each offering discounts in the amounts of 10%, 15%, 50% and 50%. (The stores that are offering the 50% discounts are doing that by pegging 1 BTC to $20.) Unfortunately, almost no one has used bitcoin despite these incredible discounts they're offering. The barrier to entry on the consumer side is still too high. I'm working with two other vendors to begin accepting bitcoin soon too. One will likely be offering a 20% discount but they aren't willing to proceed until they can point their customers to an easy way to get started (such as an online wallet or bank that lets you easily fund your account).
|
|
|
Bitcoin has seen plenty of scandal in recent weeks with things like the Mt.Gox and MyBitcoin catastrophes, but these episodes have been totally within the realm of normalcy compared to what happens every single day to conventional merchants who accept credit card. The Visa/MC monopoly controls business much like the mafia do. And like the mafia, these things aren't discussed much. So here are few of the horrors of credit card processing, especially relating to internet based sales, that you might not be aware of:
* That 3% rate you see quoted everywhere is a lie. Card-not-present transactions (i.e. anything online) are billed at a much higher rate. Rewards cards, business cards, and any of dozens of other types of cards are billed at different rates too. A more typical base rate is going to be around 4.25% On top of that, there are authorization fees both to the gateway and the processor, which will total about $0.60 per transaction. That puts total fees on a $9.95 sale upwards of 10%. Keep in mind that's coming off of gross. Even the IRS doesn't charge this much because they're just grabbing a share of your profit.
* Chargeback fraud is getting out of hand. Once designed as a failsafe to protect against stolen cards, the chargeback is now being used as a catch-all for unreasonable customer demands. Wanted the product in a different color? Charge it back. Found it somewhere else for a better price? Charge it back. Changed your mind about a purchase? Charge it back. Simply want to have your cake and eat it too? Charge it back. There's no reasonable time limit either. We've received chargebacks up to a full year after the purchase was made.
* In addition to losing the money from a sale and the goods or services your customer stole, your processor will also hit you with a chargeback fee. These fees range from $20-40 per incident. Think about that in terms of how many new sales you have to make just to cover the cost of that fee. You'd probably lose less getting mugged in an alley.
* Credit card authorizations occur within seconds, very much like an unconfirmed bitcoin transfer. At the end of the day, a batch is processed and sent to the processor with that day's transactions. The processor typically holds that money for a week before it gets deposited into your bank account. A week!
* Get too many chargebacks in too short a period of time, and your processor will shut you down or start suspending deposits. How many is too many? That's arbitrary (despite whatever you may have heard about a 1% limit).
* The processors can do anything to you without notice. They can shut down your account for no reason without even telling you. They can withhold deposits to your bank account. They can increase their rates. They can refuse to process certain transactions even after they've been authorized without even telling you. They can implement a "reserve" on your account where they withhold some portion of your money (like 20%) just for "safe keeping", again, without even telling you.
* If you complain about anything, or if you encourage your customers to pay by other means, you can be shut down without notice.
* With that one week delay on your deposits, getting shut down means losing an entire week's gross revenue. We have a client who got shut down about a month ago and still has more than $30,000 stuck in limbo. The former processor is claiming we have to wait 270 days before they will even consider releasing the funds. There aren't even any written contracts or bank statements to substantiate our claim.
* To even get processing, the principals of the company must pass personal credit checks and the products/services offered must meet various arbitrary and unpublished requirements. You can be rejected simply because your product is "too commonly available," or conversely, "too unusual".
I could go on, but I think you get the point, so I'll stop here for now. Successful businesses just have to fight through this as best they can by passing as much of the cost onto their customers and employees as possible, and that's not good for anyone. Bitcoin can solve every problem on this list. If the user base grows enough, merchants will flock to it. And they'll even be able to offer huge discounts to their customers for using it.
tl;dr: The Visa/MC monopoly is choking the life out of us in ways many people don't realize. Bitcoin has the potential to save us.
|
|
|
- My business no longer has to worry about fraudulent charge-backs.
- Businesses are no longer at the mercy of Visa/MC's oppressive rules, regulations, and fees.
|
|
|
Assuming you're able to get past all the other obstacles in a sales pitch to a retailer, there is one question you won't be able to avoid: How does the customer pay?
As far as I know, there is no Bitcoin iPhone app, and the only Android app sounds dangerously unreliable. Until we have some simple, quick way to do mobile payments, I don't see how a retailer would be too interested.
|
|
|
Overall, I agree with the OP's sentiment. I've been quite frustrated with how slowly things have been progressing. In the last 6 weeks, I have worked with two separate sites to begin accepting Bitcoin as an alternative payment method. These aren't little mom and pop operations either. One of the sites is hard coding the exchange rate at $20. The other is using market price + 0.5, so there is already a huge discount being factor in. Yet sadly, fewer Bitcoin orders have come in over the last 6 weeks combined than either of these sites typically receives by credit card over the course of a single hour. The vendors I've talked to absolutely love the idea of getting out from under Visa/MCs thumb, but there's just not enough incentive to accept this form of payment if no one's using it.
However, I also think there are a few relatively minor developments that could turn the trend very rapidly upward. There is still presently no effective way to introduce the average consumer to Bitcoins. We're facing a major chicken and egg problem, and this side of it is just as important as getting the merchants to accept it (if not more so). The only solution I see for this is for someone to build a very professional online wallet service that also sells at least small units of bitcoin (even at 2x market price).
One of the sites I've referred to above is an online game that sells monthly subscriptions. They have expressed an interest in selling the service on a per game basis (for something like $0.05), using Bitcoin for micro-payments. They won't move on this until they can also link to a wallet service where their customers can sign up for a Bitcoin account and immediately fund it, even with just $5-10 worth of coin. Once these initial road blocks to growth are overcome, things could expand very quickly.
|
|
|
Brad,
I would think that the waiting-for-armeggedon armchair militia types that seem to constitute the ideology-driven segment of the Bitcoin community would be as equally off-putting as any financial fragility. Rebranding this "black market currency" would be harder than simply starting another Bitcoin effort.
Yes, we discussed that. The early Internet had a reputation as being a haven for anarchists and porn addicts. Once the money starts to flow, those impressions would erode rather quickly. Additionally, it would actually be incredibly easy to re-brand Bitcoin. Someone could make a web based wallet service called SuperPay that would operate on Bitcoin's infrastructure behind the scenes, but no one would be any the wiser to it. This company could solicit businesses to start accepting SuperPay (adding SuperPay's logo to their sites, directing traffic to it, etc.) and it would all work seamlessly on the Bitcoin network.
|
|
|
Attracting the common folk isn't what's needed. And yes, that is who reads the WSJ. Direct contact/networking to people who would be interested in bitcoin businesses is what is needed. If we get even more people trying to come in and buy coins with credit cards and paypal then we'll just have a lot of people who have bad experiences due to the rough client and such.
So, if we're going to market, market to high tech VCs and entrepreneurs. That is bitcoin's best bet IMO.
I work for a venture capital firm. That's essentially how I ended up here. The price and publicity surge in early June got our attention, but there are several reasons we've decided against any Bitcoin related projects (for the time being). The primary reason is that the Bitcoin market share is puny. The entire Bitcoin economy is worth less than $200M. To put that into perspective, Zynga -- one single gaming company -- grossed nearly $600M last year. Production and marketing of the movie the Green Lantern -- one single B movie -- was $400M. We won't be able to justify any major investment in this market until it gets much, much larger. Personally, I really want to see Bitcoin succeed. But before any of the serious money can move into this market, we need a whole lot more common folk with bitcoins ready to spend.
|
|
|
Do you think it would be possible for us as a community to scrounge up 5000 Bitcoins for a frontpage ad on the Wall Street Journal?
Possible? Yes. Worthwhile? Not yet. An effective ad does two things. First, it gets the viewer's attention. Second, it calls the viewer to action. It says, "Here's something super cool. Now go out and buy it!" The call to action has to be something ultra simple. It's usually either to call a phone number or go to a web site. Once the user takes the action, that's where marketing transitions into sales. If we're talking about a sales phone line, a salesman needs to answer that call and secure the sale. If it's a web site, the site itself needs to do the selling to get that user to take the next step (e.g. download a program, sign-up for a service, buy a product). Marketing is like chum. You're throwing bait in the water to attract fish. Sales is what you need to do once the fish are circling to set the hook and reel them onto the boat. Right now, we have nothing on the sales side. The average consumer will never, ever be able to figure out the Bitcoin client. A super simple web-based wallet service designed for non-technical users needs to come before expensive advertising. The Get Firefox campaign may provide some good examples for us to imitate. Remember Firefox started out as Mozilla and it wasn't nearly as user-friendly ("dumbed down") as Firefox's current incarnations. Once they had their sales strategy in place, that's when they did their full page ad in the New York Times ( http://www.mozilla.org/images/nyt_ad_2004.png).
|
|
|
I'm currently working on a startup that plans to solve the egg.
This is excellent news. Please keep us informed of your progress. I've been working with the owners of a simple online game site that sells monthly subscriptions via credit card/paypal. Once a viable system is in place for new bitcoin users to create and fund a wallet, I will be able to get this site to offer single game purchases for bitcoin micropayments as an alternative to monthly subscriptions.
|
|
|
First of all, let me say that I really, really want Bitcoin to succeed as an ubiquitous form of online payment. Speaking primarily from the merchant side of things, I see enormous potential to bust up the Visa/MC monopoly so as to free merchants and customers, not just from their exorbitant fees, but their strong-arm control of open trade as well.
To make that happen, we need to get cracking on this fast. Time is not on our side. Bitcoin is already on the radar as a potential threat to services like Paypal, other corporations (like Google) are working rapidly to bring proprietary payment solutions to market, and the world may be headed for a double-dip recession that will make the first dip look like a tiny divot. (If the latter occurs before Bitcoin is well enough established to serve as a safe haven asset, we're ruined. It will dry up much needed venture capital, ensuring that we never get off the ground.)
The challenges are great, but I believe we can succeed. Bitcoin is a brilliant concept and this community has a tremendous array of talents and expertise. We can make this happen, but it's time to come up with a serious plan for the next step.
The biggest obstacle I see right now is a classic chicken and egg problem.
Problem 1: The egg. Customers have no incentive to use Bitcoin because very few merchants accept it, they can already get everything they need with dollars, and getting started with Bitcoin is too difficult.
Problem 2: The chicken. Merchants have no incentive to accept Bitcoin because no one uses it. Until it gets to the point where a good 5-10% of sales are paying with Bitcoin, the development, administrative, and bookkeeping overhead will exceed the value of accepting it.
As with any chicken and egg problem, both must be solved simultaneously. I've been thinking about this non-stop for weeks now but have yet to solidify a concrete idea that would work. But here's what I've got so far:
Solving the egg: An online wallet is absolutely the way to go to get the Average Joe involved. Joe can understand signing up on a web site, opening an account with some service, and holding an online balance. He won't ever be able to figure out how to install a client, download the block chain, secure his wallet, or even understand what any of that means. We need someone who can make a very professional looking easy to use online wallet service that appeals strictly to new users. It will have to get them started with some initial amount of coin too. So, what if this site charged a $10 sign-up fee (via credit card) and included some small amount of coin, which would be sold at a 2x-3x markup over market price? Between the high markup and credit card security features such as AVS with IP geo-location, I think the fraud risks could be mitigated reasonably well. If a customer wanted to add more than his small starting coin to his account, he'd have to procure them elsewhere.
Solving the chicken: This is where my idea is a little hazy, but I think we need a service that accepts Bitcoin exclusively and couldn't even exist without it. I can buy alpaca socks anywhere, and I can get much better price and selection if I shop around. But if I wanted a Widget X, and Widget X Corp. only accepts Bitcoin, and no one else sells Widget X's, I'd have no choice but to go to that online wallet site and open an account. So what is it that does not yet exist anywhere else and can only exist because of Bitcoin? I'm thinking it will have to be something that takes advantage of its micropayment capabilities. That's something no other payment system can presently compete on. What if it were some site that offered a really awesome tic-tac-toe game for 0.01 BTC per match? But instead of tic-tac-toe, make it something that people would actually want and couldn't easily get anywhere else.
We just need to get the ball rolling a little bit, then the venture capital will be willing to step in. If we can show some forward momentum, I can bring massive resources to the table. I have connections to large amounts of venture capital and experts in web programming, graphic design, sales, marketing, and business management.
So for now I ask, Is there anyone here who wants to participate in an effort to solve the egg, and does anyone have ideas on a type of product or service that could solve the chicken?
|
|
|
Imagine you are in a room with five well educated, intelligent people. Consider the thought-provoking conversations you could have with these people and think about the dynamic of your conversations with them. You'd probably want to put a good amount of thought into your contributions to the discussions, and you'd probably be inclined to ask insightful questions, listen to their differing points of view, and bring imaginative ideas to the table. Certainly, a gathering such as this could lead to some very interesting, enjoyable, high-level dialogs.
Now suppose 100 more people start to file into the room, and let's suppose these happen to be rather low-level thinkers. Just for the sake of argument, let's imagine them as ditsy blonde valley girls, smacking their bubble gum, twirling their hair, chipping away on text messaging cell phones, and all the while yammering on and on about shallow subjects like fashion, the latest gossip from the mall, or some celebrity scandal. They start to interrupt your thoughtful conversation with mindless jabber. They dilute the incentive to participate in conversation, and they drown out any decent exchange of ideas with their incessant nattering.
Internet communication, whether in the form of e-mail, message board forums, blog comments, or whatever else, is susceptible to a similar pitfall. The Internet is really good at giving everyone a voice -- perhaps too good. With all the voices competing to be heard, it's easy for the ones who actually have something to say to get lost in the crowd. And then, it's easy for those who would participate to simply figure, "why bother," and leave. (This particular forum seems to have a lot of intelligent participation, and that's why I've felt inclined to subscribe. I don't feel like I'm wasting my time conversing with clowns, as is the case on so many other sites these days. I suspect the high barrier to entry with Bitcoins themselves has been keeping out the bulk of the nattering fools.)
The same analogy as above can really be applied to any form of Internet communication, including e-mail. I get more junk pharmaceutical spam and similar garbage than legitimate communication. Of the legitimate e-mail, half of it takes me more time to decipher the author's meaning than it likely took him to write it.
So here's a rough idea for a possible way to improve the quality of on-line communication: What if it cost 0.001 BTC to post a message on a forum or send an e-mail? Would a trivial fee provide enough incentive to shut up those who have nothing to say? Would it encourage those who do have something to say to engage a little bit more thinking before speaking? As a side benefit, could such a requirement also help fuel adoption of Bitcoin itself?
|
|
|
One of the largest internet retailers of Magic the Gathering trading cards and accessories is now accepting Bitcoin. Visit www.ABUgames.com for a wide selection of MtG and related products (and be sure to pay with Bitcoin).
|
|
|
Success! I have successfully convinced www.abugames.com to accept Bitcoin. The logo is posted directly below their other payment option logos for credit card and paypal. Prices on the site are still listed in USD, but bitcoin is now a payment option during the checkout process. When selected, a new order total is computed in BTC. At the end of the ordering process, the customer is presented with a unique payment address that corresponds with each order ID. My bitcoin address for the reward is: 1AgZgDq77Ahux1K7LdoYUJdYXT8fQanwn4 Thank you to all those who have sponsored this challenge. Is this reward offer available more than once per applicant? (I might know of a few more stores who would go for it.) I will also post in another thread some tips that might help others who are working to convince more shops.
|
|
|
If you would like to make a serious offer, send me a private message and we can discuss the details. I can then provide you with the list of all 98 sites and complete year-to-date Adsense stats.
|
|
|
|