moneroexamples / onion-monero-blockchain-explorer

Onion Monero Blockchain Explorer
https://xmrchain.net
BSD 3-Clause "New" or "Revised" License
361 stars 269 forks source link

Emission calculation fix #315

Closed moneroexamples closed 1 month ago

moneroexamples commented 1 month ago

https://github.com/moneroexamples/onion-monero-blockchain-explorer/issues/313

Gingeropolous commented 4 weeks ago

Trying to compile. Ubuntu 22, freshly cloned and compiled monero master:

xmrchain@Ubuntu-1804-bionic-64-minimal:~/xmrchain_emission/build$ make -j
Consolidate compiler generated dependencies of target mycrypto
Consolidate compiler generated dependencies of target myext
Consolidate compiler generated dependencies of target mstch
[  9%] Built target mycrypto
[ 22%] Built target myext
[ 59%] Built target mstch
Consolidate compiler generated dependencies of target myxrm
[ 63%] Building CXX object src/CMakeFiles/myxrm.dir/CurrentBlockchainStatus.cpp.o
In file included from /home/xmrchain/monero/src/wallet/wallet2.h:67,
                 from /home/xmrchain/xmrchain_emission/src/monero_headers.h:30,
                 from /home/xmrchain/xmrchain_emission/src/MicroCore.h:10,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/home/xmrchain/monero/src/serialization/tuple.h: In function ‘bool do_serialize_tuple_nth(Archive<W>&, std::tuple<Ts ...>&)’:
/home/xmrchain/monero/src/serialization/tuple.h:60:6: warning: ‘if constexpr’ only available with ‘-std=c++17’ or ‘-std=gnu++17’
   60 |   if constexpr (I == 0)
      |      ^~~~~~~~~
/home/xmrchain/monero/src/serialization/tuple.h:63:8: warning: ‘if constexpr’ only available with ‘-std=c++17’ or ‘-std=gnu++17’
   63 |     if constexpr (BackwardsCompat && (tuple_size == 3 || tuple_size == 4))
      |        ^~~~~~~~~
/home/xmrchain/monero/src/serialization/tuple.h:75:11: warning: ‘if constexpr’ only available with ‘-std=c++17’ or ‘-std=gnu++17’
   75 |   else if constexpr (I < tuple_size)
      |           ^~~~~~~~~
/home/xmrchain/monero/src/serialization/tuple.h:80:6: warning: ‘if constexpr’ only available with ‘-std=c++17’ or ‘-std=gnu++17’
   80 |   if constexpr (I == tuple_size)
      |      ^~~~~~~~~
In file included from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h: In member function ‘xmreg::CurrentBlockchainStatus::Emission::operator std::string() const’:
/home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:44:55: error: no matching function for call to ‘to_string(const uint128_t&)’
   44 |             return to_string(blk_no) + "," + to_string(coinbase)
      |                                              ~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from /home/xmrchain/xmrchain_emission/src/MicroCore.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/usr/include/c++/11/bits/basic_string.h:6660:3: note: candidate: ‘std::string std::__cxx11::to_string(int)’
 6660 |   to_string(int __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6660:17: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘int’
 6660 |   to_string(int __val)
      |             ~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6671:3: note: candidate: ‘std::string std::__cxx11::to_string(unsigned int)’
 6671 |   to_string(unsigned __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6671:22: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘unsigned int’
 6671 |   to_string(unsigned __val)
      |             ~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6679:3: note: candidate: ‘std::string std::__cxx11::to_string(long int)’
 6679 |   to_string(long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6679:18: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long int’
 6679 |   to_string(long __val)
      |             ~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6690:3: note: candidate: ‘std::string std::__cxx11::to_string(long unsigned int)’
 6690 |   to_string(unsigned long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6690:27: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long unsigned int’
 6690 |   to_string(unsigned long __val)
      |             ~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6698:3: note: candidate: ‘std::string std::__cxx11::to_string(long long int)’
 6698 |   to_string(long long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6698:23: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long long int’
 6698 |   to_string(long long __val)
      |             ~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6710:3: note: candidate: ‘std::string std::__cxx11::to_string(long long unsigned int)’
 6710 |   to_string(unsigned long long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6710:32: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long long unsigned int’
 6710 |   to_string(unsigned long long __val)
      |             ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6721:3: note: candidate: ‘std::string std::__cxx11::to_string(float)’
 6721 |   to_string(float __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6721:19: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘float’
 6721 |   to_string(float __val)
      |             ~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6730:3: note: candidate: ‘std::string std::__cxx11::to_string(double)’
 6730 |   to_string(double __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6730:20: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘double’
 6730 |   to_string(double __val)
      |             ~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6739:3: note: candidate: ‘std::string std::__cxx11::to_string(long double)’
 6739 |   to_string(long double __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6739:25: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long double’
 6739 |   to_string(long double __val)
      |             ~~~~~~~~~~~~^~~~~
In file included from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:45:37: error: no matching function for call to ‘to_string(const uint128_t&)’
   45 |                    + "," + to_string(fee) + "," + to_string(checksum());
      |                            ~~~~~~~~~^~~~~
In file included from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from /home/xmrchain/xmrchain_emission/src/MicroCore.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/usr/include/c++/11/bits/basic_string.h:6660:3: note: candidate: ‘std::string std::__cxx11::to_string(int)’
 6660 |   to_string(int __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6660:17: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘int’
 6660 |   to_string(int __val)
      |             ~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6671:3: note: candidate: ‘std::string std::__cxx11::to_string(unsigned int)’
 6671 |   to_string(unsigned __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6671:22: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘unsigned int’
 6671 |   to_string(unsigned __val)
      |             ~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6679:3: note: candidate: ‘std::string std::__cxx11::to_string(long int)’
 6679 |   to_string(long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6679:18: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long int’
 6679 |   to_string(long __val)
      |             ~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6690:3: note: candidate: ‘std::string std::__cxx11::to_string(long unsigned int)’
 6690 |   to_string(unsigned long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6690:27: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long unsigned int’
 6690 |   to_string(unsigned long __val)
      |             ~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6698:3: note: candidate: ‘std::string std::__cxx11::to_string(long long int)’
 6698 |   to_string(long long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6698:23: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long long int’
 6698 |   to_string(long long __val)
      |             ~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6710:3: note: candidate: ‘std::string std::__cxx11::to_string(long long unsigned int)’
 6710 |   to_string(unsigned long long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6710:32: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long long unsigned int’
 6710 |   to_string(unsigned long long __val)
      |             ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6721:3: note: candidate: ‘std::string std::__cxx11::to_string(float)’
 6721 |   to_string(float __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6721:19: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘float’
 6721 |   to_string(float __val)
      |             ~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6730:3: note: candidate: ‘std::string std::__cxx11::to_string(double)’
 6730 |   to_string(double __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6730:20: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘double’
 6730 |   to_string(double __val)
      |             ~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6739:3: note: candidate: ‘std::string std::__cxx11::to_string(long double)’
 6739 |   to_string(long double __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6739:25: note:   no known conversion for argument 1 from ‘const uint128_t’ {aka ‘const boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long double’
 6739 |   to_string(long double __val)
      |             ~~~~~~~~~~~~^~~~~
In file included from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:45:60: error: no matching function for call to ‘to_string(boost::multiprecision::uint128_t)’
   45 |                    + "," + to_string(fee) + "," + to_string(checksum());
      |                                                   ~~~~~~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from /home/xmrchain/xmrchain_emission/src/MicroCore.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.h:8,
                 from /home/xmrchain/xmrchain_emission/src/CurrentBlockchainStatus.cpp:5:
/usr/include/c++/11/bits/basic_string.h:6660:3: note: candidate: ‘std::string std::__cxx11::to_string(int)’
 6660 |   to_string(int __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6660:17: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘int’
 6660 |   to_string(int __val)
      |             ~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6671:3: note: candidate: ‘std::string std::__cxx11::to_string(unsigned int)’
 6671 |   to_string(unsigned __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6671:22: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘unsigned int’
 6671 |   to_string(unsigned __val)
      |             ~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6679:3: note: candidate: ‘std::string std::__cxx11::to_string(long int)’
 6679 |   to_string(long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6679:18: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long int’
 6679 |   to_string(long __val)
      |             ~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6690:3: note: candidate: ‘std::string std::__cxx11::to_string(long unsigned int)’
 6690 |   to_string(unsigned long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6690:27: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long unsigned int’
 6690 |   to_string(unsigned long __val)
      |             ~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6698:3: note: candidate: ‘std::string std::__cxx11::to_string(long long int)’
 6698 |   to_string(long long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6698:23: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long long int’
 6698 |   to_string(long long __val)
      |             ~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6710:3: note: candidate: ‘std::string std::__cxx11::to_string(long long unsigned int)’
 6710 |   to_string(unsigned long long __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6710:32: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long long unsigned int’
 6710 |   to_string(unsigned long long __val)
      |             ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6721:3: note: candidate: ‘std::string std::__cxx11::to_string(float)’
 6721 |   to_string(float __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6721:19: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘float’
 6721 |   to_string(float __val)
      |             ~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6730:3: note: candidate: ‘std::string std::__cxx11::to_string(double)’
 6730 |   to_string(double __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6730:20: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘double’
 6730 |   to_string(double __val)
      |             ~~~~~~~^~~~~
/usr/include/c++/11/bits/basic_string.h:6739:3: note: candidate: ‘std::string std::__cxx11::to_string(long double)’
 6739 |   to_string(long double __val)
      |   ^~~~~~~~~
/usr/include/c++/11/bits/basic_string.h:6739:25: note:   no known conversion for argument 1 from ‘boost::multiprecision::uint128_t’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >’} to ‘long double’
 6739 |   to_string(long double __val)
      |             ~~~~~~~~~~~~^~~~~
make[2]: *** [src/CMakeFiles/myxrm.dir/build.make:132: src/CMakeFiles/myxrm.dir/CurrentBlockchainStatus.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:248: src/CMakeFiles/myxrm.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
moneroexamples commented 3 weeks ago

I will have a look on Ubuntu. It works on Gentoo.

moneroexamples commented 3 weeks ago

I pushed an update, and in my tests it works on ubuntu 22.

Gingeropolous commented 3 weeks ago

i can't see where the update was pushed.... is it on the emission branch? (sorry for my poor git skills)

ah its in the devel branch. compiling that now...

moneroexamples commented 3 weeks ago

devel branch.