Lightning routing node? – Bitcoin Stack Exchange

It can be done, but it’s not trivial. Technically, in order to be able to route payments, you need liquidity in both directions, incoming as well as outgoing. If you just funded two channels, you only have outgoing liquidy now (all the money is on your side).

There are many ways to gain incoming liquity. You could spend or swap the funds in your channels (or a part of them). You could ask someone to open a channel to you ( seem to give these away for free). You could buy liquidy from

But that’s just the beginning. If you really want to contribute, you need to always manage your node so that it provides routes where people need them. This is an art and you can surely find more hints by googling.

There are some developments underway to automate this process. If you used c-lightning instead of LND, you could try the clboss plugin, which has the goal of making all these choices without user input. Your mileage may vary.

Compiling Bitcoin Core v0.10.0 on Ubuntu 20.04

I’m trying to compile Bitcoin Core v0.10.0 on Ubuntu 20.04, but then I get the following error:

rpcserver.cpp: In function ‘void StartRPCThreads()’:
rpcserver.cpp:594:77: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’
  594 |     rpc_ssl_context = new ssl::context(*rpc_io_service, ssl::context::sslv23);
      |                                                                             ^
In file included from /usr/include/boost/asio/ssl/context.hpp:757,
                 from /usr/include/boost/asio/ssl.hpp:18,
                 from rpcprotocol.h:16,
                 from rpcserver.h:10,
                 from rpcserver.cpp:6:
/usr/include/boost/asio/ssl/impl/context.ipp:371:1: note: candidate: ‘boost::asio::ssl::context::context(boost::asio::ssl::context&&)’
  371 | context::context(context&& other)
      | ^~~~~~~
/usr/include/boost/asio/ssl/impl/context.ipp:371:1: note:   candidate expects 1 argument, 2 provided
/usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate: ‘boost::asio::ssl::context::context(boost::asio::ssl::context_base::method)’
   63 | context::context(context::method m)
      | ^~~~~~~
/usr/include/boost/asio/ssl/impl/context.ipp:63:1: note:   candidate expects 1 argument, 2 provided
rpcserver.cpp:613:50: error: ‘class boost::asio::ssl::context’ has no member named ‘impl’
  613 |         SSL_CTX_set_cipher_list(rpc_ssl_context->impl(), strCiphers.c_str());
      |                                                  ^~~~
rpcserver.cpp: In instantiation of ‘void RPCListen(boost::shared_ptr >, boost::asio::ssl::context&, bool) (with Protocol = boost::asio::ip::tcp; SocketAcceptorService = boost::asio::executor)’:
rpcserver.cpp:673:58:   required from here
rpcserver.cpp:482:111: error: ‘class boost::asio::basic_socket_acceptor’ has no member named ‘get_io_service’
  482 |     boost::shared_ptr > conn(new AcceptedConnectionImpl(acceptor->get_io_service(), context, fUseSSL));
      |                                                                                                     ~~~~~~~~~~^~~~~~~~~~~~~~
In file included from primitives/block.h:9,
                 from chainparams.h:11,
                 from base58.h:17,
                 from rpcserver.cpp:8:
./primitives/transaction.h: In instantiation of ‘static _OI std::__copy_move::__copy_m(_II, _II, _OI) (with _II = const CTxOut*; _OI = CTxOut*)’:
/usr/include/c++/9/bits/stl_algobase.h:404:30:   required from ‘_OI std::__copy_move_a(_II, _II, _OI) (with bool _IsMove = false; _II = const CTxOut*; _OI = CTxOut*)’
/usr/include/c++/9/bits/stl_algobase.h:441:30:   required from ‘_OI std::__copy_move_a2(_II, _II, _OI) (with bool _IsMove = false; _II = __gnu_cxx::__normal_iterator >; _OI = __gnu_cxx::__normal_iterator >)’
/usr/include/c++/9/bits/stl_algobase.h:474:7:   required from ‘_OI std::copy(_II, _II, _OI) (with _II = __gnu_cxx::__normal_iterator >; _OI = __gnu_cxx::__normal_iterator >)’
/usr/include/c++/9/bits/vector.tcc:238:31:   required from ‘std::vector& std::vector::operator=(const std::vector&) (with _Tp = CTxOut; _Alloc = std::allocator)’
coins.h:90:19:   required from here
./primitives/transaction.h:103:7: warning: implicitly-declared ‘CScript& CScript::operator=(const CScript&)’ is deprecated (-Wdeprecated-copy)
  103 | class CTxOut
      |       ^~~~~~
In file included from ./primitives/transaction.h:10,
                 from primitives/block.h:9,
                 from chainparams.h:11,
                 from base58.h:17,
                 from rpcserver.cpp:8:
./script/script.h:365:5: note: because ‘CScript’ has user-provided ‘CScript::CScript(const CScript&)’
  365 |     CScript(const CScript& b) : std::vector(b.begin(), b.end()) { }
      |     ^~~~~~~
In file included from /usr/include/c++/9/algorithm:61,
                 from serialize.h:9,
                 from amount.h:9,
                 from rpcserver.h:9,
                 from rpcserver.cpp:6:
/usr/include/c++/9/bits/stl_algobase.h:342:18: note: synthesized method ‘CTxOut& CTxOut::operator=(const CTxOut&)’ first required here
  342 |        *__result = *__first;
      |        ~~~~~~~~~~^~~~~~~~~~
In file included from chain.h:11,
                 from main.h:14,
                 from rpcserver.cpp:10:
tinyformat.h: In static member function ‘static const char* tinyformat::detail::FormatIterator::streamStateFromFormat(std::ostream&, unsigned int&, const char*, int, int)’:
tinyformat.h:785:21: warning: this statement may fall through (-Wimplicit-fallthrough=)
  785 |             out.setf(std::ios::uppercase);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:786:9: note: here
  786 |         case 'x': case 'p':
      |         ^~~~
tinyformat.h:791:21: warning: this statement may fall through (-Wimplicit-fallthrough=)
  791 |             out.setf(std::ios::uppercase);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:792:9: note: here
  792 |         case 'e':
      |         ^~~~
tinyformat.h:797:21: warning: this statement may fall through (-Wimplicit-fallthrough=)
  797 |             out.setf(std::ios::uppercase);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:798:9: note: here
  798 |         case 'f':
      |         ^~~~
tinyformat.h:802:21: warning: this statement may fall through (-Wimplicit-fallthrough=)
  802 |             out.setf(std::ios::uppercase);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:803:9: note: here
  803 |         case 'g':
      |         ^~~~
make(2): *** (Makefile:3910: libbitcoin_server_a-rpcserver.o) Error 1
make(2): Leaving directory '/usr/local/src/bitcoin-0.10.0/src'
make(1): *** (Makefile:6475: all-recursive) Error 1
make(1): Leaving directory '/usr/local/src/bitcoin-0.10.0/src'
make: *** (Makefile:569: all-recursive) Error 1

I followed the instructions on the file, and I believe the problem is related to the required dependencies, especially the libboost-all-dev package. Interestingly, I was able to compile every released version from v0.20.1 to 0.16.0, but nothing older than that, using the same instructions on If the problem really is libboost-all-dev , how can I solve it?


I’ve installed boost version 1.57 as Pieter suggested with:

tar --bzip2 -xf /path/to/boost_1_57_0.tar.bz2
cd boost_1_57_0/
./ --prefix=/usr/
sudo ./b2 install

And then, on the bitcoin root, used:

./configure --with-boost-liddir=LIB_DIR

But as result I got:

configure: error: Could not find a version of the boost_system library!

And I’ve tried different paths but always got the same result. Is this just path problem or is there something else?

Update 2:

Apparently I fixed the path with:

./configure --with-boost-libdir=/usr/lib/

But when I run make I got this error.

What is the problem?

bitcoin core – What algorithm do miners (mining pools) use the generate different blocks as they exhaust the nonce values

As I understand it, the building of a block goes something like this (please correct):

  1. Collect a bunch of new transactions.
  2. Hash all those transactions.
  3. Generate a coinbase transaction using the miner’s (mining pool) public address.
  4. Generate the Merkle root for all the transactions using an arbitrary order.
  5. Fill in the block header.
  6. Dispatch to mining hardware which will try all 2^32 nonce combinations.

Now, when the mining hardware says that there is no solution after trying all nonce combinations, it appears that it has the following options for generating new options to check:

  • Gather new transactions (or drop transactions), hash, and recalculate the Markle root.
  • Update the script (extranonce) field in the coinbase transaction (or the target address), hash, recalculate the Merkle root.
  • Update the timestamp in the header (what is the granularity on the timestamp).
  • Update the difficulty in the header (is this possible)??
  • Rearrange transaction order, and recalculate the Merkle root.

Are there any options I missed. What is the typical order that the mining pools do these things?


❓ASK – Twitter CEO working to improve bitcoin technology |

Twitter CEO Jack Dorsey is working on a project called the Lightning Development Kit (LDK) that’ll massively help bitcoin’s scalability issues. Bitcoin payments can take a long time and currently they can only handle seven transactions per second. So when LDK technology is integrated with bitcoin’s current network, it can process payments much faster. It’s said that it can process millions of transactions per second! That’ll clearly beat Visa’s 45000 transactions per second!!

Number of Bitcoin ATMs Exceeds 15,000

According to the information provided by the data monitoring platform Coin ATM Radar, the number of Bitcoin ATMs has exceeded 15,000 worldwide. According to the information obtained, most of these machines are located in the United States and then in Canada.
What do you think about this increase?

Industry Round Table: BitCoin and Price Volatility

Every month, LowEndBox puts a question in front of hosting industry leaders and LEB community providers, who are invited to comment and offer their perspective.  Our goal is to stimulate discussion around important issues in the industry, inform our readership, and help other providers so the community as a whole benefits.  If you have a question you’d like to put to the round table, please submit it to us!

This month’s question:

Do you take Bitcoin (or other Cryptocurrency)?  If yes, how do you deal with the wild changes in value we’ve seen recently.  If you don’t take it, why not?


Jay, CEO of NexusBytes

As a global business, a lot of our family members are from countries, where Credit/Debit card comes with hefty international transaction fees and paypal isn’t an option. Crypto currency fulfills that void. Here at Nexus Bytes, we accept major crypto currency such as Bitcoin, Litecoin, Etherium and Bitcoin Cash.

Crypto currency is yet to become a stable flat currency, that we could rely on to perform day to day transactions. To most, this is still an asset rather than currency, with real world value. Which also creates a volatile market, where the currency loses stability.

Here at Nexus Bytes, we usually (and almost always instantly) convert and withdraw expense portion of the currency to USD. We convert the rest to BTC and keep the remainder (profit) as future investment and let it ride the wave.


Dustin Cisneros, CEO of RackNerd

RackNerd who was voted #1 as LowEndTalk’s top provider accepts cryptocurrency payments via Bitcoin, Bitcoin Cash, Litecoin, Ethereum, and ZCash.

It goes without saying that cryptocurrency’s value is constantly variable and dynamic, and while at some times, what an end-user pays you via cryptocurrency today may go up in value tomorrow, as a company you should also be prepared if it were to go the other direction. A handful of transaction’s potential variable amount should not impact your health as a company – and I think that also improves with scale as you continue to grow as a company.

The number one reason why businesses fail today is because their ideas/products weren’t sold quickly enough, AND in quantities high enough. You need to have both margin and volume in order to run a sustainable business that can weather any economic impact. In my last guest post here, I went over 5 tips on how to succeed and expand as a business in 2021, and how you can continue to expand your business even during COVID-19 times. In conclusion, you can monitor your cryptocurrency transactions to see the value change on a day-by-day basis and take actions based on what you as a company are comfortable with, or alternatively – some payment processors may offer the ability to immediately convert the cryptocurrency payment from the end-user to USD for you.


Justin Blanchard, CMO of ServerMania

ServerMania accepts Bitcoin as the only form of cryptocurrency, however, customers must speak to a sales agent when placing the order to receive instructions on how to complete the payment. This is an easy process that can be completed through live chat, ticket or over the phone at the time of checkout.

Bitcoin’s current exchange rate will be charged at the time of submitting the order. For example, if the request is being made on a Saturday the order may not be processed until Monday (during sales hours), so charges would reflect Monday’s Bitcoin exchange rate.

We will be placing more of a priority on building a module for Bitcoin on our order form once we see the increase in demand from Bitcoin paying customers.


Ditlev Bredahl, CEO, OnApp

As you probably know, we don’t sell cloud hosting, instead we enable hosts to sell cloud – and looking at our data since 2010, some of our customers do offer crypto as an option alongside traditional currencies, but mainstream currencies are still most popular. But, that stuff isn’t important.

What’s important about crypto is that it’s an enabler for hosts. It’s a way to escape the clutches of VISA, Mastercard, Paypal. I bet most people reading this have been kicked from their payment provider at some point, or they’ve had funds frozen. That’s because of chargebacks from “establishment” payment systems, or KYC, or because of content restrictions etc. But if you think about “how to implement payment” in the first place, the point is: not everyone finds it easy to get a bank account, let alone a payment provider.

I’m not trying to pick on specific countries, but what if you’re an entrepreneur in Indonesia, for example? You have a great idea, you have a USP, you have your infra and your service… but you’re forced to go with a payment solution that’s charging you 3-5%, your 2checkout for example. You’re a start-up, it isn’t sustainable. With BTC it can either be fully P2P, or a middle-man situation with a commission that’s more like 0.1%.

If hosts start accepting BTC, then BTC starts becoming part of the ecosystem. And in terms of fluctuation, you have options there too: stablecoin, for example. Crypto isn’t mainstream yet – it will be a while before your average head of accounts or CFO is looking to pay their invoices with cryptocurrency – but it will happen. Has to.


Thank you to all of our providers for participating this month!

If you have a question you’d like to put to the round table, please submit it to us!


I’m Andrew, techno polymath and long-time LowEndTalk community Moderator. My technical interests include all things Unix, perl, python, shell scripting, and relational database systems. I enjoy writing technical articles here on LowEndBox to help people get more out of their VPSes.

bitcoin core – Classifying Miners based on their Location

Is there any way to classify the bitcoin miners based on their geographical locations?

According to this answer it’s not possible to check IP address of miners:

Even if it is possible with a workaround, they can use Tor, VPN, other proxy etc.

Non-KYC mining pools exist so miners do not share their real identity and location with pools. Even if they share such information, it can be faked and not necessary they have all the ASICs at one location.

Lot of journalists and researchers use other information and assumptions to speculate miners location. Example:

privacy – How can I get the transaction history of a bitcoin address?

Is it possible to get that address’s full transaction history (send/receive addresses and amount)

Yes, all that information is in the public blockchain.

type the address into any blockchain explorer

if the owner bought bit coins using a credit card will I be able to see that and possibly the card number

No. That information is not public. It isn’t really part of Bitcoin – not the network protocol, the blockchain or the reference software.

who can see that credit card number?

The merchant involved may, or their payment processor. But this part of your question is absolutely nothing to do with Bitcoin.

❕NEWS – President of Bank of International Settlements: Bitcoin could crash one day |

The Bank for International Settlements (BIS) also commented on crypto and digital currencies: Only central banks should issue digital money.
In a speech yesterday at the Hoover Institute, BIS president Agustin Carstens stated that cryptocurrencies are inherently risky assets and said, “Bitcoin investors should realize that it may collapse one day. Because as it approaches the maximum supply of 21 million, the system becomes more vulnerable to external attacks, ”he said.
How much do you agree with these views?

Why does Bitcoin Core’s API report the wrong amount of my wallet *while a transaction is being processed* (but not once fully confirmed)?

Note: For privacy purposes, I’m using made-up amounts here for the most part.

I had 0.0305 BTC in my wallet. I then made a transaction of 0.01 BTC.

My Bitcoin Core GUI immediately started saying: 0.0205 BTC, but the RPC API says 0.0105.

When it’s confirmed/settled, the RPC API goes back to saying the same thing as the GUI: 0.0205.

This confuses me. Why does it temporarily show a smaller number in the RPC API compared to the GUI? If it has to do with the transaction fee, why does this not reflect in the GUI?

The “pending” amount in the GUI says 0.00000000 BTC, so it’s not like that explains it either. It’s not taking the “pending” amount into consideration in the API response. I use getbalance to get it:

The difference between the before/after 6 verifications sum is 0.0128 BTC. I don’t know if that tells you anything or if it’s fixed each time. It’s certainly not the transaction fee. All I know is that I’ve noticed this every time I’ve made a transaction in the last year or so. (Note: I’m not saying that this is some “new thing” — only that I’ve only noticed it for that long, probably because I barely used to pay attention at all to how many BTC I had when they were worth so little.)

What can explain this?