deeponion / deeponion-legacy

Official Source Repo for DeepOnion - Anonymous Cryptocurrency on TOR Network (legacy)
https://deeponion.org
MIT License
415 stars 113 forks source link

I wanna a Mac wallet before 450000 blocks. #76

Closed kidddfu closed 6 years ago

kidddfu commented 6 years ago

Please ! There's so many troubles with new Mac wallet .We need a DeepOnion-wallet.dmg

brakmic commented 6 years ago

Currently not possible because of some issues with newer Mac versions (High Sierra etc.).

Btw. the switch is at 460,000 not 450,000.

But you can build the binaries yourself. It's not hard as you basically install a few packages with brew and then let the scripts compile the binaries for you.

This is what you should do to get a fully working build:

Open a Terminal.

  1. Clone the github tree to get the source code and checkout the Mac branch
git clone --recursive https://github.com/deeponion/deeponion.git
cd deeponion
git checkout macos
  1. Download and install Brew for Mac (https://brew.sh)

  2. Install dependencies with Brew

brew install autoconf
brew install automake
brew install pkg-config
brew install protobuf
brew install boost@1.57 --cc=clang 
brew link boost@1.57 --force
brew install berkeley-db@4 
brew link berkeley-db@4 --force
brew install openssl 
brew install miniupnpc
brew install libevent
brew install qt5  [only use if building the Wallet UI]
brew link qt5 --force
brew install qrencode [only use if building the Wallet UI]
  1. Build DeepOnion
cd deeponion
./autogen.sh
./configure --with-gui=qt5 --disable-tests [or use --without-gui if only building the daemon]
make
  1. Outputs

The daemon will be located under src/DeepOniond, the Wallet UI under src/qt/DeepOnion-qt.

You can now start them directly (either the daemon or the wallet but never both of them at the same time!), or you can first copy them somewhere else and then start them by typing in their respective names. The apps will automatically find your default DeepOnion directory (if you already have one).

I hope this will help you in the mean time.

ohJohanZ commented 6 years ago

./configure --with-gui=qt5 --disable-tests ... checking for LIBEVENT... yes checking for ZLIB... yes checking for SSL... yes checking for CRYPTO... yes checking for PROTOBUF... yes checking for QR... yes checking for protoc... /usr/local/bin/protoc checking whether to build DeepOniond... yes checking for QT... no configure: error: Qt dependencies not found

I had install all dependencies before configure, how to fix it?

brakmic commented 6 years ago

Look at the tutorial above: brew install qt5 Then: ./autogen.sh Then: ./configure --disable-tests --with-gui=qt5

Maybe also: make clean, just to get rid of all the cruft.

If still problems with finding qt5 try brew link qt5 --force

ohJohanZ commented 6 years ago

brew link qt5 --force it works, think you! @brakmic

ohJohanZ commented 6 years ago

then I got a make error ...

./configure --disable-tests --with-gui=qt5 make ... CC src/or/scheduler.o CC src/or/scheduler_kist.o CC src/or/scheduler_vanilla.o CC src/or/statefile.o CC src/or/status.o CC src/or/torcert.o CC src/or/tor_api.o CC src/or/onion_ntor.o AR src/or/libtor.a /opt/local/bin/ranlib: file: src/or/libtor.a(protover_rust.o) has no symbols ranlib: file: src/or/libtor.a(protover_rust.o) has no symbols Making all in src CXX libbitcoin_server_a-bitcoinrpc.o bitcoinrpc.cpp:713:49: error: too many template arguments for class template 'basic_socket_acceptor' ...basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor, ^ ~~~~~~ /opt/local/include/boost/asio/basic_socket_acceptor.hpp:73:7: note: template is declared here class basic_socket_acceptor ^ [snip] ... [/snip] ^ 5 errors generated. make[1]: [libbitcoin_server_a-bitcoinrpc.o] Error 1 make: [all-recursive] Error 1

brakmic commented 6 years ago

This is due to some changes in boost library. I will provide you a link to a file called bitcoinrpc.cpp that you should use to replace the current one you have. Later, after we have tested it with Windows & Linux, we will provide the changes via GitHub, but for now, you will have to do this locally.

Just a second...will also update the tutorial.

brakmic commented 6 years ago

Get the bitcoinrpc.cpp file from here and replace the old src/bitcoinrpc.cpp. Just copy/paste. Then try to compile again.

ohJohanZ commented 6 years ago

I download the bitcoinrpc.cpp and replace the old src/bitcoinrpc.cpp

make ... CC src/or/status.o CC src/or/torcert.o CC src/or/tor_api.o CC src/or/onion_ntor.o AR src/or/libtor.a /opt/local/bin/ranlib: file: src/or/libtor.a(protover_rust.o) has no symbols ranlib: file: src/or/libtor.a(protover_rust.o) has no symbols Making all in src CXX libbitcoin_server_a-bitcoinrpc.o [snip] ... [/snip] 7 errors generated. make[1]: [libbitcoin_server_a-bitcoinrpc.o] Error 1 make: [all-recursive] Error 1

brakmic commented 6 years ago

Please refresh the link of mine. I had for a few seconds the variant for DeepVault. You just grabbed the other version. Sorry.

http://brakmic.com/download/txt/bitcoinrpc.cpp

Take the contents and replace the bitcoinrpc.cpp you already have.

ohJohanZ commented 6 years ago

continue make

make ... CC xxhash/libbitcoin_common_a-xxhash.o CC lz4/libbitcoin_common_a-lz4.o AR libbitcoin_common.a /opt/local/bin/ranlib: file: libbitcoin_common.a(libbitcoin_common_a-aes_helper.o) has no symbols /opt/local/bin/ranlib: file: libbitcoin_common.a(libbitcoin_common_a-hamsi_helper.o) has no symbols /opt/local/bin/ranlib: file: libbitcoin_common.a(libbitcoin_common_a-aes_helper.o) has no symbols /opt/local/bin/ranlib: file: libbitcoin_common.a(libbitcoin_common_a-hamsi_helper.o) has no symbols CXX libbitcoin_util_a-sync.o CXX libbitcoin_util_a-util.o util.cpp:526:30: warning: array subscript is of type 'char' [-Wchar-subscripts] ret = (ret << 4) | hextable[*hexString++]; ^~~~~ 1 warning generated. AR libbitcoin_util.a CXX leveldb/db/libleveldb_a-builder.o clang: error: no such file or directory: 'TARGET_OS=Darwin' make[1]: [leveldb/db/libleveldb_a-builder.o] Error 1 make: [all-recursive] Error 1

brakmic commented 6 years ago

Ah yes, it came back. It's not a problem on your side, but because we reverted a few things yesterday the latest patch fixing this issue was reverted too. Will update it right now and all you have to do is to pull in the changes with git pull, Ok?

Will come back and give you a signal.

brakmic commented 6 years ago

I have committed the change. After you have pulled in the changes you will reenter the following commands:

./autogen.sh
./configure --disable-tests --with-gui=qt5

Then you can continue with make.

ohJohanZ commented 6 years ago

continue make

make ... CC src/or/tor_api.o CC src/or/onion_ntor.o AR src/or/libtor.a /opt/local/bin/ranlib: file: src/or/libtor.a(protover_rust.o) has no symbols ranlib: file: src/or/libtor.a(protover_rust.o) has no symbols Making all in src CXX leveldb/db/libleveldb_a-builder.o In file included from leveldb/db/builder.cc:7: In file included from ./leveldb/db/filename.h:14: In file included from ./leveldb/port/port.h:14: ./leveldb/port/port_posix.h:38:12: fatal error: 'endian.h' file not found

include

^~~~~~ 1 error generated. make[1]: [leveldb/db/libleveldb_a-builder.o] Error 1 make: [all-recursive] Error 1

brakmic commented 6 years ago

Pull again the latest changes. The current autogen.sh wasn't executing the leveldb.patch that is already there.

Then, after git pull, go again:

./autogen.sh ./configure --disable-tests --with-gui=qt5

ohJohanZ commented 6 years ago

continue make

make ... Making all in tor /Applications/Xcode.app/Contents/Developer/usr/bin/make all-am Making all in src CXXLD DeepOniond Undefined symbols for architecture x86_64: "boost::this_thread::hidden::sleep_until_realtime(timespec const&)", referenced from: AppInit2() in libbitcoin_server.a(libbitcoin_server_a-init.o) "boost::this_thread::hidden::sleep_for(timespec const&)", referenced from: Shutdown(void) in libbitcoin_server.a(libbitcoin_server_a-init.o) MilliSleep(long long) in libbitcoin_server.a(libbitcoin_server_a-init.o) AppInit2() in libbitcoin_server.a(libbitcoin_server_a-init.o) ThreadSocketHandler2(void) in libbitcoin_server.a(libbitcoin_server_a-net.o) ThreadDumpAddress(void) in libbitcoin_server.a(libbitcoin_server_a-net.o) ThreadOpenConnections2(void) in libbitcoin_server.a(libbitcoin_server_a-net.o) ThreadOpenAddedConnections2(void*) in libbitcoin_server.a(libbitcoin_server_a-net.o) ... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: [DeepOniond] Error 1 make: [all-recursive] Error 1

brakmic commented 6 years ago

This is a problem with boost paths. You have to take care of correctly setting the link. brew link boost@1.57 --force. If it doesnt't help, then do a make clean and start over. Sometimes I had to close the terminal and open a new one. Never could find a proper way out of this, but mostly it could be solved with make clean and reconfigure again.

brakmic commented 6 years ago

This is basically the last step. If you overcome this, you'll get the wallet.

ohJohanZ commented 6 years ago

ok, I think I can overcome it soon, think you for your help

brakmic commented 6 years ago

Howewer, there's also another way. Just download our zips from GitHub, unpack them and then start the binary DeepOnion-qt from the Terminal. As you have already installed all the libs it'll simply use them and start working.

Try it out :)

OscarPradel commented 6 years ago

I get an error different from the one telnetor gets:

                                             ^

1 warning generated. CXX libbitcoin_wallet_a-wallet.o wallet.cpp:3017:52: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal] printf("Stealth send to generated pubkey %"PRIszu": %s\n", pkSendTo.size(), HexStr(p... ^

wallet.cpp:3019:32: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal] printf("ephem_pubkey %"PRIszu": %s\n", ephem_pubkey.size(), HexStr(ephem_pubkey).c_str()); ^

2 errors generated. make[1]: [libbitcoin_wallet_a-wallet.o] Error 1 make: [all-recursive] Error 1

I've tried pulling the newest from GitHub, making clean and restarting the whole proces. boost should be correctly linked as well. I've also tried replacing the existing bitcoinrpc.cpp. Do you have any suggestions? :)

brakmic commented 6 years ago

This is a C++11 warning/error (it depends on how strict the compiler is).

Basically, go into this file an put a space between PRIszu and the preceding quote.

For example:

before: "PRIszu after: " PRIszu

Then recompile.

Meanwhile, I have updated wallet.cpp and commited changes. So you can also pull them and continue compiling.

OscarPradel commented 6 years ago

Oh wow, I worked haha. That's the biggest reason why I'll never start any coding.. That a single space can do so much damage 😄

My deeponion directory is now gone and replaced with DeepOnion-qt and DeepOniond executables in my Applications folder (Folder named DeepOnionMac). If I run them, I get errors however: Oscar:~ oscarp$ /Applications/DeepOnionMac/DeepOnion-qt/DeepOnion-qt ; exit; dyld: Library not loaded: /opt/local/lib/db48/libdb_cxx-4.8.dylib Referenced from: /Applications/DeepOnionMac/DeepOnion-qt/DeepOnion-qt Reason: image not found Abort trap: 6 logout Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.

[Process completed]

brakmic commented 6 years ago

try to link berkeley-db@4 with: brew link berkeley-db@4 --force

OscarPradel commented 6 years ago

I have a last problem. everything is setup (wallet, config file), I can see my balance and so on, but the wallets crashes after 30 seconds or so. I get this in the terminal:

QObject::~QObject: Timers cannot be stopped from another thread Assertion failed: (size>0), function median, file ./util.h, line 588. Abort trap: 6

brakmic commented 6 years ago

brew install libevent

brakmic commented 6 years ago

If you still encounter these problems, try to resync the chain without the Wallet UI. Just start the daemon with DeepOniond -daemon and let it get the whole chain. This is a well-known Qt problem.

OscarPradel commented 6 years ago

The brew install lib event didn't do the trick, so I'll try starting DeepOniond -daemon and let it run. How will I know when it is done, if I don't have a GUI?

brakmic commented 6 years ago

It will show every 48sec or so the new block height, and many other things, transactions etc. Just type:

tail -f /User/YOUR_USER/Library/Application Support/DeepOnion/debug.log 

for a real time log.

brakmic commented 6 years ago

but you can also try to open a new terminal and start DeepOnion-qt again.

OscarPradel commented 6 years ago

But hey man, thank you so much. I guess that the last couple of days have been hectic and with a lot of questions from noobs like me. It's all working now, and if a noob like me can figure it out with your guide and help, everyone should be able to 😃

brakmic commented 6 years ago

You're welcome. Glad I could help you.

And please, share this thread with other Mac users.

Spread the word and help your fellow $ONION-Hodlers!

Cheers,

brakmic commented 6 years ago

Btw. I created a separate branch macos only for Mac users. So all changes we discussed previously are now there. I have also updated the tutorial above. So others don't have to copy/paste things we did previously.

brakmic commented 6 years ago

Here's the link to the new branch. I created a separate tutorial based on our today's experience. It's linked at the top of repo's README. Please, spread the word (bitcointalk, twitter etc.). Thanks!

https://github.com/deeponion/deeponion/tree/macos