text:
"Bit Coin Investigators" or Consultants for hire - to help locate a Bit Coin account after a person has died?
Do you know where I can obtain a List of "Bit Coin Investigators"
 or  -  Consultants for hire -
to help locate a Bit Coin account after a person has died?

You're unlikely to find such a list. Wallet recovery is an inherently difficult field, and most people you'd find would be more likely to scam you than help you. If you were to post a question detailing the situation, someone here might be able to point you in the right direction

Thank you for your kind advice. I have my grandson's computer & iPhone & drive, but don't know how to find his Bitcoin account info. He had been investing for about 4 years before he unexpectedly passed away. He happily had told me about having an account  with Bitcoins in it & I don't know anything else.

Good luck with your quest, please do be careful. The person that you trust to recover the Bitcoin wallet will have the opportunity to steal it if they are dishonest.

Do you know where I can obtain a List of "Bit Coin Investigators"

There isn't any established list.
You need to be very careful about trusting strangers on the Internet, there are many crooks looking for people like you. They will ask you for a fee to retrieve the Bitcoins, then ask for additional fees using various technical-sounding reasons until they have bled you dry.
Remember that you are putting an extreme amount of temptation in the hands of any potential helper, it would be so easy for them to take everything away for investigation and later tell you the "bitcoin wallet" was empty - or contained some small amount they thought would satisfy you. Even respectable people working for respectable lawfirms sometimes embezzle their customers money. The temptation is so much greater when the chances of anyone discovering their deceit can be near to zero.

I have my grandson's computer & iPhone & drive, but don't know how to find his Bitcoin account info.

Unless you know his passwords, it is likely be impossible to ever gain access to any of his Bitcoins.
Unless he was an extraordinarily careless sort of person, he won't have the passwords for his bitcoins stored on his computer or on his iPhone - at least not in a form where you can easily find them.
You could try to find if he had a "paper wallet" - a piece of paper with a string of 36 digits and letters written down or a set of twelve words (sometimes there are eighteen or twenty-four words) which form what is called a "recovery phrase". If you find those, put them aside somewhere very very safe, keep them secret from any helpers, then spend some time learning how to create a bitcoin wallet on your own computer (don't use an online wallet), when you have some experience buying and spending bitcoin, only then, import the key or use the recovery phrase to gain access to your grandson's bitcoins.


text:
Java mining solution
I am a beginner in mining algorithms and I have a general question regarding the mining using Java language.
Does it make sense to use Java to develop for example ETHASH algorithm (or any other) and is it going to be as such effective as C ?
I already found that it is possible to do mining with Java and OpenCL, for example here : is there a Java or C# library for mining bitcoins?
But still, I am confused, is it going to be slower? Or Java just need to transfer data/code to GPU and then it works the same as native C code? Or am I missing something? How is it working under the hook?
Thanks in advance for any response or reference.

Assuming you mean Java as in Oracle Java and not JavaScript?

Yes, Oracle Java language.

Thanks you shouldn't have to clarify that but these days I see so many people ask questions referring to js and calli g it Java. I mean if the co text is clear than I can see calling js Java for short but I've seen it where it can go either way and then I assume naturally Java and turns out they meant js, waisting everyone's time.

Java (Oracle and not JavaScript) is typically one of two competing paradigms for enterprise servers. The other is windows, assuming that Java is always paired with some enterprise version of Linux. So though you can completely use Java on windows servers without any loss of utility or performance, in the setting that you were to use Java you would just likely use Linux as windows has a competing programing paradigm known as c#. Also the comparison here is rough and not meant to be lliteral 1 to 1 map of c# to Java.
That said the primary reason for Java is complete hardware abstraction and portability of programs. A side effect of this is easier scalability. New server hardware can come online and completely and automatically join existing server hardware in running Java.
Java is probably one of the most high level software languages there are. In that you can deal with primarily abstract computational notions with out dealing with often repetitive and frankly independent aspects of everyday computers in their present formats. Additionally this could be why Java has some following in academia. You can study the abstract computational problems instead of some standard publication which may go out of date. In theory some Java software will never be outdated or obsolete if correctly written.
Java as a trade off does have significant overhead. When you say c or c++, that doesn't necessarily describe it's performance as to some extent that is just a standard which describes the syntax of the language. What you may actually be thinking of is what it compiles to. Depending it can be portable executable or .exe for example or it can be microcontroller arm machine binary or a list of Opcode's ready to be read off by the processor.
Java does specify the performance because it only compiles to one thing. That is a set of codes which the Java virtual machine executes (which in turn is executed by the stuff c would produce). This is how Java gets its portability. The JVM acts as a socket or adapter from one interface to another. Therefore one person need develop the JVM for the particular machine and that's it. You can see it's high priority for Java to improve performance of its JVM's. But even still for example in c and low to hardware, you can switch out costly trig functions to rough approximation by multiplication of a constant. In for loops etc calling trig functions this might be permissible in c while rendering a Java application utterly impossible.
Finally as to mining, Java key aspect is scalability. Software in Java can easily and very neatly be written to detect say new network additions and start scheduling work for them. So you can take any computer and as long as it has a JVM, it is now part of the pool simply by starting the same Java app that everyone else is running. I'm not sure you can get this aspect as easily with c. This is partly because windows has a different philosophy on hardware OEMs partly motivated by profits and a business environment, however you can see the good it has done in its own right by the excellent diversity of windows PC hardware while still typically retaining top performance to alternatives.
Again. Though Java allows enterprise to easily gain the server power they need and minimizing headaches. Sometimes the headaches are necessary to learn but sometimes it's not what's wanted.
In any case if you model the reduction in performance due to JVM overhead, you would have to compare that to longer down time or time in bringing up new hardware. If it took you a week to get a new minor up on say windows in c, and you could of had it up in 5 miinutes on Linux distribution with Java JVM you may be losing money short term. If the mining hardware had short life span that too could improve the cause for Java. It's some what to iot and using o.s. or not. You may get better performance with your custom servo controller but if a raspberry pi gets it up and running with Linux in 1 percent of the time, realistically after only a few projects testing prototypes you begin to devalue the bare bones solution.

Thank you for so extended response. I would like to note that I have a good experience working with Java language (up to 10 years): just meant - I understand everything you described about scalability, adapter, endless etc. But I am very beginner in mining algorithms (combining with HW). What I need is actually develop mining desktop app. What I understood that Java does not have native support to execute code inside GPU, which means I need to use some kind of 'Adapter' - OpenCL. I don't see enough experience of using Java with mining, which confuses me. Even that DiabloMiner is not supported.

Well than you can see with your experience that Java will obviously not prove competitive in mining, in those aspects. It is really an enterprise solution to web hosting/server. Today that is changing a little bit with aws, which pulls rug out from Java by using a VM representing a single machine across several machine. Aws isn't efficient if it's using a VM. this is the trade off for easy cross platform compatibility same with Java and a trade off of efficiency most large enterprise are frankly willing to go.

With rise in aws it shows large and even medium and small size organizations are willing to for go performance and efficiency (cost) for simplicit. with Java bringing up new minors is as simple as acquiring nearly any kind of programmable computer at least capable of running the JVM. That is where the benefit will be. I won't get into what levels are required to beat or be profitable.

So to abruptly answer your question, the total number of computer devices capable of running a JVM is larger than the total hardware specific devices to mine. So clearly Java in theory is a solution that works in theory, but probably may never exist in reality.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Recovering My BitCoin Core Account/Wallet
My name is Patrick and I need assistance recovering my account.  My brother sent me some bitcoin to my bitcoin core wallet.  I am unable to access this due to my laptop becoming infected with a virus and needing to be restored.  I have my wallet ID where the transaction took place, but I do not know how to access my bitcoin core wallet.  (My original laptop hard drive was fully corrupt and replaced.) I would be extremely grateful for any assistance in recovering my bitcoin core wallet.
Sincerely,
Patrick Moore

you have no backup? You don't have the wallet.dat file? What do you mean by wallet ID? the address? or the transaction number?

Correct, no backup.  The wallet.dat file was thrown away with my old harddrive.  All I have is the “string” (what I  believe is my address).  This is shown on blockchain.info.  I see my brother’s number sending it to my number.   Is there any possible way to recover it?  Thank you.

Access to wallets can be recovered by means of a recovery phrase, private key (string or QR code) or backup file (in this case a copy of wallet.dat).
If you have none of these you will not be able to prove ownership of the wallet and will not have access to the funds.

Thank you Jorijnsmit. How can I tell the difference between a public and private key?

a public key is derived from the private key, but you cannot go vice versa. This is due to the ECDSA logic. A private key is 32Bytes, whereas a public key in the bitcoin world is 65 Bytes long, beginning with hex "04", or as compressed keys beginning with hex "02" or "03", being 33 Bytes long.

Thank you Pebwindkraft. I have 34 characters in the Key I have here. Here are the first 10 character: “15maqpfwprkmf”. Is this a private key?

@PatrickEdwardAshodianMoore no that's an address. private keys look like this: https://en.bitcoin.it/wiki/Private_key#Base58_Wallet_Import_format

You will have to use your recovery phrase ,when you open your bitcoin wallet they gave you a recovery phrase set , that is as low as 12 phrases that you should have stored on some place in order to recover your wallet in case something happens ,if you did not back up your wallet it will be difficult to recover it.

thanks Luis.  Unfortunately I didn't back up my wallet.

core doesn't provide a seed mnemonic

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Restore backup wallet
In the app "Bitcoin wallet" from " bitcoin wallet developers" you can choose to backup your wallet. It will store this backup on your sd-card. But how can you restore it on another phone? I saved the backup on my PC and send it to my other phone, but he can't open the file and I don't know how to restore the wallet.

you have in the wallet on the right top the 3 points. click on it. click on "security" (or something like that, on my phone the language is not english). in my case i have several options including "save wallet" and "restore wallet" (or something like that). when you click the restore-option you should be able to choose your backup if the app finds your backup (in my case it finds my test-backup in the downloadfolder on the sd-card for example).

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
What if during transaction Ripple price drops, in this case the receiving bank will get less amount
Suppose bank A wants to send 100 USD to bank B using ripple. As per other answers, time taken for this transaction ranges between 4-7 seconds. But, what if the price of ripple drops drastically during this time frame.

The market makers (which can be the banks themselves) price this slight risk into the rates they offer. Most of the time, this doesn't happen, and they make a slight profit. When it occasionally does happen, they may take a slight loss. Fortunately, the price can't move very much in so little time -- and, if necessary, the amount of time can be brought down to sub-second levels by using off-chain scaling schemes such as payment channels.


text:
How do institutional investors prevent theft by employees
There are a lot of institutional investors in BTC now, some even having 9 digit figures or higher. How many employees have access to the private key in such institutions and can do a trade?
If I understand Bitcoin correctly, a transaction cannot be traced (at least not to a real person - only to an anonymous wallet) neither can it be undone. So what stops an employee having access to transactions from stealing millions of dollars? Given the amounts at stake it cannot be simply trust. Also if you have a sort of 4-eyes approval for transactions two employees could team up and commit the theft. If every transaction needs the approval of some high management or CEO it would be very unpractical. It would be also very risky to only have very few people in the company have access to the key since it increases the risk of it getting lost, basically also losing all the investment.
Obviously the employee could be identified, but maybe they could fake a robbery and argue their life was at risk. Or even if they go to jail for a couple of years they would still be very well of once they get out. Other options are getting out of the country or event committing the theft while abroad.
Since I haven't heard of any of these cases I guess, there is some mechanism that prevents this scenario. But how?

If the company follows good security practices no single person would have access to the cold wallet where 90+% of the funds would be stored.
There might be single employees with access to the hot wallets which are the ones that are doing the day to day transactions and when the hot wallets run low transfers from the cold to hot wallets would require multiple participants (for example 6 out of 11 multisig or similar)


text:
Am I being scammed from Forex-Billionaires.com?
Has anyone used Forex-Billionaires.com? I invested in BTC and am now trying to get a withdrawal. I gave them my CashApp wallet address but now they are saying I have to let them generate a private key for the funds to be attached. Of course there is a fee to pay. I generated my own private key and Bitcoin wallet and sent the public key. I am reading that you never share your Private key. So I assumed that meant not letting the exchange generate a private key for me as well. Does anyone have any advice for me? Exchange is saying that it’s an empty key and they have to generate it in order to add the funds from the trade account. Does this sound right?  Read that the private key is created first and wallet created from the key. So that is why I generated my own. I appreciate any help because I think I might be getting scammed.

That definitely sounds like a scam.

You have definitely been scammed. Your money is gone and you will not be able to recover it. You should report the fraud to police but not expect them to get your money back for you. You will be contacted by more scammers now, pretending to be able to help you. They will trick you out of more money.

Thank you for responding. I thought that was the case.


text:
Process to get started with bitcoin for beginners
I'm new to all the crypto stuff, and I spent some time reading about it to get familiar with it, and now I'd like to start the experience, though I'd first like to have some feedback about whether I understood it correctly.
I'd like to invest in bitcoin with a moderate amount, for a long period. As a result, I'm not looking for the convenience of trading quickly between cryptocurrencies, but rather I'm looking for low fees, and security.
From what I understood, going through an exchange platform is the most secure, yet not so expensive, way to do that. They charge a fee, so I'm looking for the lowest fees applicable for depositing/withdrawing/exchanging.
In order to enhance the security, I read that I could buy a cold wallet and transfer my exchange wallet there.
So to sum up, I understood that I roughly have to follow the following steps:

depositing euros to my account
exchanging them for bitcoins
(optional) moving them to a cold wallet
(if step 3) moving them back to the account
exchanging it for euros
withdrawing euros back to bank account

My web search concludes that binance provides the cheapest depositing/withdrawing/exchanging fees, whilst still providing some sort of security (as opposed to, say, finding a random person online willing to exchange currencies). Am I right to think that these fees include the bitcoin transaction fee ?
Is this description accurate ? Is it the most classical / best / cheapest / most secure steps to buy bitcoins for investment purposes ? Or are there cheaper ways to achieve this investment ?
I also read about decentralized exchanges, such as binance dex, which seem to provide overall lower fees, but I don't know if they apply to my use case.
Thanks.

Well no, not really. I already read a lot of articles to get me started, including actually some of the links in the question you provided. But now that I've read all this information, I was hoping I would get an answer tailored to my specific case, to make sure I understood it all, rather than just generic documentation.

Seems like a reasonable question, but I would edit your question to not mention Binance or it will get flagged.    I don't think you need the cold wallet, unless maybe you are over 0.1 BTC or some amount which needs some risk protection.

Your process is correct, if you're not using a cold wallet at the very least you can use a mobile wallet like Blockstream's Green wallet or software like exodus for your computer (which also allows you to add 2FA authenticator apps). However, using a hardware wallet is the most secure method.

Fair enough, thanks. Can you elaborate a bit about binance dex? I find it confusing. Do such (decentralized) platforms allow cheaper transaction fees ? Where are the cheapest way to get bitcoins with euros ? Where do rich guys go to get bitcoins and not lose too much on fees ?


text:
Understanding transaction input and ouput
The definition of bitcoin transaction input and output that is there on the web is:
Input = address from which money was sent, Output = address to which money is received
1.
But when I looked at one of the transaction screenshots below:
The left side which should be the input but when I hover over it shows as output
What could be the reason for that?
2.
Below shows the amount going to 2 different addresses. In a normal transaction
the amount will go to one address only. In bitcoin could one transfer to multiple accounts simultaneously?

The definition you found is wrong. There is no such thing as a "from" address, nor a "Bitcoin account".
Think about the Bitcoin system as coins. As for physical coins, you spend them entirely and may get new coins back in change. Contrary to physical coins, these coins are public so anyone can "grab" them therefore there must be a way for only the "owner" of the coin to be able to successfully use them. This is essentially what an address is.
The coins are transaction outputs. "Grabbing" a coin is referencing a transaction output in a new transaction's input. Proving the ownership is done by providing data in this input to fulfill the challenge set by the address in the output you reference.
Therefore, to get back specifically to your question(s), in your screenshot the application displays the output referenced by this transaction input as it's where interesting information is present (value of the coin and how to unlock it). And you can certainly lock multiple coin to the same address. In fact this transaction unlocks 3 coins that where locked in the same way (therefore "at the same address").

I feel like it's "re-explaining the wheel" for the hundredth time but i didn't find an explanation of the coins/utxo model with a quick search so i just wrote a tailored answer. However i feel like it could be marked as duplicate if someone can find a reasonably close answer..


text:
Does difficulty adjustment apply when you mine in secret?
Imagine you have an enormous amount of hashpower (say a nation state level attack) and you mine in secret. Does the difficulty adjustment apply specifically to your secret chain?  Because that would mean that you need to add hashpower at a faster rate than the public chain is adding it for your attack to effective?

Yes. The difficulty adjustment is part of the consensus rules. In order to create a valid chain that you intend to use to replace the current main chain, you must follow all of the consensus rules. That means adjusting the difficulty in the same way any verifier would be when they validate your chain.


text:
How do nodes verify backwards incompatible blocks?
When you start the initial block download with the latest versions of Bitcoin Core, how does your node know that old blocks were valid according to different rules prior to soft forks?

Old blocks in the chain are still valid under the current consensus rules.
In a broad sense, this is because the code will be written to enact rule changes at specific block heights, and thus older blocks will not be subject to said new rules.
To put it differently: the consensus ruleset doesn't just cover what new blocks are supposed to look like, they also cover what the historical valid chain looks like!
Sometimes, specific exceptions are written in, such as is the case with BIP 30.

This is incorrect. Old blocks aren't necessarily valid under the new consensus rules post soft fork activation. A soft fork enforces additional restrictions that old blocks aren't expected to abide by.

No it isn't, in such an example the consensus rules would be "all blocks after x height must follow 'new rule'". Older blocks are thus still implicitly valid under this 'current consensus ruleset'. To put it differently: the consensus ruleset doesn't just cover what new blocks are supposed to look like, they also cover what the historical valid chain looks like!

Ah ok I see what you mean, your answer wasn't clear to me. Yeah if you include the historical consensus rules in the soft fork consensus rules then yeah old blocks are still valid because they are not being assessed by the same rules as the new blocks.

@MichaelFolkson I edited the answer to include some text from my comment, hopefully its a little more clear. Appreciate the feedback, helps to keep content on here accurate and easily digestible

A soft fork is a change to the Bitcoin protocol that adds additional restrictions to the rules enforced by full nodes. However, these additional restrictions only apply to blocks from the point of activation. Blocks pre soft fork activation aren't expected to meet the new restrictions. These blocks are validated according to the old protocol rules that continue to be present in the code of a protocol implementation (e.g. Bitcoin Core).


text:
How to convert PSBT transaction (base64) to raw/serialized (hex) transaction?
Bitcoin Core's CLI has a converttopsbt command used to convert from raw transaction to PSBT transaction but how is it possible to convert from PSBT transaction to raw transaction using Bitcoin Core (or if not possible using another client like Electrum)?
Example of a PSBT transaction (testnet):

cHNidP8BAHECAAAAAW4TCBaK74DxafvrRdWpF32Gg5eVRs1DJX9YHz2v9jduAQAAAAD9////AugDAAAAAAAAFgAUlZYmgEZt2xztxXvON/MpazPDg7h4fAEAAAAAABYAFAos5SNG8ZD0bYuTY1T3lwWbt6XcC+8cAAABAN4CAAAAAAEBtxgls3RExZgey5D+Apcb7GIFdINeRlmY05VOQwZ7LtoBAAAAAP3///8CCgAAAAAAAAAWABSdRgMHmJrQiGsOWa+Ue5R6hDsGJlCBAQAAAAAAFgAUgIISApOAGqWF1K6dU+ANtN8F53kCRzBEAiAL3rtr0r5eB/U3HFRFKEWCJ/MuHEIetMi/5W/Pdw2tOAIgNSY0WkLk1lDHFxJIYgISnlr/0ZZu6YNExTLAGmgoca4BIQNc7DqYfFYpf3ejWJHMoMS+SGNnQh+QcpG8DXyPT1mnHgPvHAAiBgIDWK/NdMjNwkMIwK+D39jKrQQdd8QVK/Kmur/hQm0ACQy0x7YSAQAAAAEAAAAAIgICoL287OJyWbD9uT1ATxNQaD9VqKoAKdvQ6mRatmnd5zMMtMe2EgAAAAABAAAAACICAkaw3TsIUUYODFTLGB5brpjvHFDF7dG63Mg9m/KFHmMzDLTHthIBAAAAAgAAAAA=

Yes, once the PSBT is finalized you can extract a fully-signed raw transaction from it (using the finalizepsbt RPC). As your PSBT does not have signatures yet, there is no point in constructing an actual transaction from it yet.

I see, so:
a) Using the CLI how would you sign the PSBT transaction with a key not in the wallet as signrawtransactionwithkey takes a raw (not PSBT) transaction as an argument?
b) Is finalizepsbt the only way in the RPC to convert from PSBT to raw transaction?

You either use a raw transaction workflow or a PSBT workflow. Mixing them is bound to cause problems. PSBT signing will generally involve walletprocesspsbt, or using something like the HWI project to sign using hardware wallets.

Perhaps part of the confusion is that raw transactions serve two distinct purposes: an unsigned form that you pass around while gathering signatures, and a fully-signed form that can be broadcast on the network. PSBT wholly replaces the first one, but not the second. In PSBT you'd use RPCs like createpsbt, walletcreatefundedpsbt, utxoupdatepsbt, walletprocesspsbt, combinepsbt, finalizepsbt. Only after the last of those do you have a (signed) raw transaction.

You can still use raw transaction RPCs, and then convert to PSBT using converttopsbt but that's just for compatibility with (the very first step) of a raw-transaction based workflow.

Bitcoin Core currently has no RPC to sign PSBT using a key not in a wallet.


text:
best way to generate btc wallet with mnemonic phrase
Im fairly new to crypto but after some further exposure it seems like it should be possible to do what im trying to do
I want to gift a small amount of btc to my nieces and nephews. My idea was to laminate a small card with their wallet id and a mnemonic phrase; then transfer some btc to this wallet from my own accounts
then when they are all grown up they can withdraw these funds
what is the best way (or software) to create multiple btc accounts using mnemonic phrases?

What do you mean by wallet id, do you mean bitcoin address? Also when you say you want to create multiple btc accounts using mnemonic is confusing, accounts has a specific meaning within an HD key chain, but I don't think that is what you are asking. I think you are asking how to create multiple mnemonics and get their first corresponding address within the keychain, is that right?

i think thats right.  i want to generate something with a mnemonic phrase that i can then send some btc to and eventually can be withdrawn from using the mnemonic phrase

It sounds like you just want multiple wallets. With a wallet like Electrum (for example) you can simply create a new wallet for each niece/nephew and write down each mnemonic phrase. https://bitcoinelectrum.com/how-to-create-a-new-electrum-wallet-file/

You can click 'Generate' on this page (although I highly don't recommend using the online version, see below for more) to generate mnemonic phrases and use them. The site supports several languages, multiple currencies not just Bitcoin & more.
The site is also open source and I highly recommend using this offline than the online one for obvious security reasons: https://github.com/iancoleman/bip39

Downvote: it is very bad advice to generate wallets in an online environment as you've suggested. Instead, emphasis should be put on the second part of your answer: if you're going to use the Ian Coleman tool, you should download the source code and run it on a computer that does not ever connect to the internet.

@chytrik And that’s exactly what I suggested! You’re welcome to edit my answer to emphasise the second half if you like

People are prone to just reading only as far as they need to, in this case that could be just your first sentence, and generating wallets in an online web-page is probably the least secure method you could recommend. I don't mean to be rude in my comment, but I think it is imperative to recommend best practices whenever possible. To do otherwise presents a very real risks to users of this site.

@chytrik 100% agree!

@chytrik I've edited it now, what do you think?

I think the disclaimer is a good addition, I changed my vote. Cheers

after i generate my phrases with this tool (offline).  how i do i create the wallet with them?  i dont see a create wallet button, seems like i have to send some command to the btc chain to have my wallet actually created.

@owengerig No command is required! As soon as you have generated a wallet, it exists.  As soon as you have sent BTC to it, it exists on the blockchain. So to answer your question, after you have generated your phrases, you've created a wallet that's ready to use.

do i send btc to the BIP39 Seed or BIP32 Root Key?  there is also "Account Extended Public Key"

@owengerig The address you should send too should be listed as “BTC address”

theres a list of "Derived Addresses" is that what your referring to?

If it says “BTC address and it’s in an btc address format then yea

Let us continue this discussion in chat.


text:
im planing to buy BTC miner but the place im keeping it in suffers of power cuts everyday for approximately 15 minutes. will it operate?
im buying bitmain s9 for the 1st time and i have 0 experiences. if the power cut off for like 15-20 min everyday and come back will the miner operate by it self ? or i have to do it my self everyday. also will this affect the miner performance ?


text:
What stops people attacking my new coin?
Say I just made a new altcoin.
I mined it for a few days at some reasanoble difficulty - 2000 for example.
I got to the 10 000th block and I am happy with my premine and network.
Then, an attacker downloads my client and without connecting to the network, starts mining with some huge hashing power.
So for 24 hours, he is at block 12 000th with difficulty of 5000.
Then, he connects to my network.
Wouldn't that make all my nodes sync with his network?
This way I would lose my premine, wouldn't I?
Is that the case?
Can I prevent the attack?

Firstly, if he downloads the client wouldn't he have to sync with the existing block and be up to date.
From what I'm able to understand your concern is time warping (it should be but it kinda got solved in july 2010 for bitcoin if your coin is a fork of the bitcoin source). But to simply answer your question his solved blocks would have to get approved and even if they do they will get added to the network and synced to the current ledger. Therefore, only the blocks 10000 to 12000 would be solved by him and no it won't make it sync to his nodes.

This is incorrect, an attacker could download the client, and then privately mine a chain without fully syncing to the network. OPs chain would essentially be reorg’d back to the genesis block.

So this kind of attack is possible?


text:
getblocktemplate returns out of memory
I tried on a few different machines, vps etc. Also, few different altcoin litecoin included. Most were with 4 GB of ram, if this matters.
Every time when I enter the command getblocktemplate , I get return error message -7 "out of memory".
This prevents me from mining the coins in a pool.
Does anyone have any idea, why do I get these errors, and what to do to fix them?

It was the masternodes syncing.
Once I created a masternode and synced it, the getblocktemplate started returning normally.

The error is exactly as it sounds: your machine was unable to allocate memory for the block template object thus it ran out of memory. You will need to use a machine that has more RAM.

I tried it ona a machine with 8GB of ram and still it returns the same error. Could it be, that the error indicates something else, or a blocktemplate could really take more than 8GB of space?

The block template is really not that large. There's probably something else going on in your OS that is preventing it from being able to allocate the memory.

Any idea what could that be? Some file permissions? Any other ideas?


text:
Easy way to compare bitcoin node block to total block, check sync status
I am familiar with bitcoin-cli getblockcount, but is there an easy way to compare this to the total block count to check my sync status?

Since you're already on the command line, try:
wget -q -O- https://blockexplorer.com/q/getblockcount; echo

That's not even a URL, and hasn't been for years.

This is exactly what I was looking for, it works for me. Did you try it?


text:
Polar docker compose not found v2
In recent versions of Docker Compose we no longer have the docker-compose command instead we use docker compose (mind the space instead of dash) but Polar does not understand this.
To Reproduce
Steps to reproduce the behavior:

Remove old versions of docker-compose
Install the most recent version of docker compose
The command docker compose version should work properly but docker-compose version should result in an error
Install Polar
You'll see this error on the startup

Docker Compose  Not Found
{"errno":-2,"code":"ENOENT","syscall":"spawn docker-compose","path":"docker-compose","spawnargs":["version","--short"]}

Expected behavior:
Polar should also try docker compose and be compatible with recent versions of docker compose.
Screenshots

Hello! This stack exchange is probably not the relevant place to post your bug report. If you have a general question relating to Bitcoin or Lightning relevant to this application that you want to post, please do. But for now you should submit your post above to the Polar issues page: https://github.com/jamaljsr/polar/issues

Question relates to a bug in a specific application, directed OP to their issues page on Github

For now, it seems like Polar does not support the new v2 docker compose. A workaround can be to install the old docker-compose too.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version


text:
receiving a small refund
I was joining a website and asked  pay with bitcoin and they say they will refund a tiny bit back to me and the last 4 digits will be my passcode.
Is this even possible? how would there computer know what code or wallet they would be sending it back to.
As from what i know from selling and receiving bitcoin always needs a new code which they haven't asked for.

I would never "join" a website if I found any of their financial arrangements unusual, surprising or confusing. That's a red flag. Others may disagree.

This sounds very unusual. Barring further details, I would be quite wary of this being some sort of scam.


text:
relating the UTXO set to the total supply of bitcoins
If the number of Bitcoins in the UTXO is always equal to the number of mined Bitcoins
See:
How is a wallet's balance computed?
then why do the number of bitcoins mined depicted here:
https://blockchain.info/charts/total-bitcoins
differ drastically from the UTXO set depicted here:
https://blockchain.info/charts/utxo-count

A more interesting question might be whether the total value of all UTXOs equals the total number of coins mined (the sum of all block rewards).  You might think it would, but some of the issues mentioned here would have caused coins to be "destroyed".

This is an apple : oranges comparison. The size "Number of Unspent Transaction Outputs" set is independent from the number of bitcoins in existence.
An unspent transaction output might be for a fraction of a bitcoin (some number of satoshis) yet it still counts as one unspent transaction output, a member of a very large set (over 55 million UTXO's according to the chart provided).
To put this in other terms, suppose every single UTXO was spent into a single bitcoin address. (It will never happen, this just a thought experiment)  Then that address would hold all the bitcoins in existence, (a bit more than 17,100,000) and then there would only be one member in the "Unspent Transaction Output" set.

Thank you! I had mistakenly assumed that the UTXO set size (in the link above) was measured in bitcoins...


text:
Please explain WalletExplorer.com layout of data
I am having a hard time understanding exactly what information is being presented here:
https://www.walletexplorer.com/wallet/Poloniex.com
I believe that this is the aggregating wallet held by the exchange Poloniex. On the left hand side (received) are incoming bitcoins to the aggregating wallet likely from individuals who are selling their bitcoins to the exchange in order to cash out. On the right hand side (sent) are outgoing bitcoins leaving the aggregating wallet likely due to individuals who are buying bitcoins from the exchange.
If this is correct, why is the balance decreasing when coins are received? The balance appears to be denominated in bitcoin, but exactly what does this balance mean?

You may try c-hound.ai for a more intuitive interpretation of wallet data. It goes a bit further compared to most common wallet explorers, by highlighting inter-address relationships, token balance, and more. I hope my suggestion will come handy for you.

And also Longhash is also very useful.

@MCCCS never heard of it, but looks interesting


text:
Does the estimated transaction volume on Blockchain.info exclude exchanges?
Does the estimate of transaction volume provided on Blockchain.info exclude the major Bitcoin exchanges? According to this paper: https://siepr.stanford.edu/sites/default/files/publications/17-033_1.pdf
(see pg. 17) it does but I do not see this information written anywhere on blockchain.info's website (or anywhere else).

The paper uses Blockchain.info's estimated transaction volume as input data. This data would not include off-chain transactions, it is only the transactions made public on the blockchain.
Centralized bitcoin exchanges make use of off-chain transactions, to execute trade orders between their users, etc. This off-chain data may be made public by the exchange, but from my skim through this paper it appears that data is outside the scope of the paper.
Quote from page 17 of the paper:

We rely on Blockchain.info because this site provides an estimate of transaction volume excluding the major Bitcoin exchanges, and we believe their list of addresses associated with Bitcoin exchanges is more complete and accurate than ours. Blockchain.info also makes use of heuristics to remove change.

I'm actually a little confused by this, as it seems to imply that any data relating to a bitcoin exchange's addresses has been excluded, but I see no such mention of that on blockchain.info's website. Whether this is a typo on the authors' part, or the authors misinterpreted the dataset as actually excluding exchange addresses, I am unsure (ie. not just the off-chain tx data is exlcuded, but the on-chain txs to/from the exchanges themselves, as well as internal on-chain txs completed by the exchange).
As the authors mention, the blockchain.info site also removes change addresses from their reporting. I think it is worth mentioning that blockchain.info can only guess at which output is a change address, there is no way to be certain about this measure.

Thanks @chytrik for your thoughts. I interpreted this statement on p. 17 in the paper to mean that all on-chain tx data involving the addresses of major exchanges is excluded from the blockchain.info estimated transaction value data. I agree, however, that there is no reason to think that this is true. And yes, maybe the authors were referring to off-chain transactions.


text:
How to estimate pool hashrates based on the number of blocks they have found?
What is the formula used to estimate the pool hashrate based on the number of blocks found by that pool? For example, Braiins provides an estimated hashrate that is calculated based on the amount of blocks each pool has found. I a looking for a formula that requires knowing only the network difficulty and the number of blocks found by each entity during a given period.
https://insights.braiins.com/en/

Mining is (very close to) memoryless, i.e. every new hash you calculate gives you an equal chance at finding a valid hash with sufficient Proof of Work. In a perfectly memoryless system, large miners (or pools) have no benefit over smaller miners because their larger amount of past work does not give them any advantage in finding the next valid hash.
This makes calculating the pool's estimated hash rate straightforward. In a given time period,
if nt is the total number of blocks found by all miners, np the number of blocks found by the pool, and ht the total hash rate, then the pool hash rate hp can be calculated as:
hp = (np / nt) * ht
Of course, as your question indicates this is just an estimation:

the total network's hashrate can only be estimated from the current difficulty and the rate at which blocks are mined, it can not be calculated
the mining process is probabilistic, pools will mine sometimes more and sometimes less blocks than their share of hash rate would suggest
we can't verify which blocks are mined by which mining pool, this is all based on optional, voluntary and unverifiable information provided by the miner


text:
Does pruning during IBD reduce the ability to utilize the dbcache fully?
I'm running IBD on a machine with 8GB ram with prune=550 and dbcache=7000 and noticing that memory usage is not going above ~880mb.  Seems unusual and I assume it's related to pruning.  I found a couple old threads on github about this but it sounded like there were improvements made?
What's the current status of the interaction between prune and dbcache during ibd?

Yes.
Whenever pruning kicks in because the maximum size (550 MiB in your example) is reached, the chainstate database needs to be flushed to disk, because otherwise, if the process were to shutdown uncleanly, you could have an inconsistent state where the chainstate refers to an old block that no longer exists on disk.
Due to peculiarities of the design of the Bitcoin Core UTXO cache, when the cache is flushed to disk, it is also wiped.


text:
Bitcoin millionaire pro
Can someone earn bitcoins for free by using bitcoin millionaire pro platform really?
I have just come across this ad somewhere. And I thought of inquiring about it to have some clue about it.

That's almost definitely a scam

In my opinion it is scam. Some explanations in link

https://binarysignalsadvise.com/bitcoin-millionaire-pro-review-scam/

Although I do not endorse the review, I did find the results on the is-scam.com website intersting: review

Final Verdict
Bitcoin Millionaire Pro is a cheap and unauthentic online trading system that wants to trick unsuspecting people into registering for it. There are many similar scams out there and our job is to make sure that you will be informed about them on time, in order to avoid any contact with fraudulent trading products. So, make sure to regularly check our site and read the newest product reviews we upload for you.


text:
application layer protocol for propagation between nodes
for the propagation process between nodes in the networks, witch application layer protocol they use, HTTP or WebSocket?
And if they use WebSocket, does each node maintain a continuous connection with each of the other nodes?

Used Bitcoin protocol over TCP/IP protocol.
You can read more on this link https://en.bitcoin.it/wiki/Protocol_documentation#Message_types

the OP is asking about application level, not infrastructure / TCP/IP layer. Probably a link to the code would help more, to understand how listeners are opened for incoming messages?

Nodes not use HTTP or WebSocket protocol. Nodes connect over TCP/IP and start handshake https://en.bitcoin.it/wiki/Version_Handshake


text:
Can you infer the geolocation of a stratum server from its address?
Is it possible to determine the geolocation of a bitcoin mining pool's stratum server address? For instance, Antpool has a server with the address stratum.antpool.com:3333.
See: https://help.antpool.com/en/chapter-2/10.html
Is it possible to determine where it is the way you can look up an IP address? Alternatively, is there data compiled for miners that reveals the locations of the various pools' servers?

There is nothing about a domain name or IP-address that is tied to a specific physical location. There are "geolocation" services that attempt to provide a location for an IP-address but these are of greatly variable accuracy and cannot be relied on.
Let's look at your antpool example.
$ dig stratum.antpool.com

; <<>> DiG 9.16.1-Ubuntu <<>> stratum.antpool.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55752
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;stratum.antpool.com.           IN      A

;; ANSWER SECTION:
stratum.antpool.com.    300     IN      CNAME   ss.svp.flkf.antpool.com.cdn.cloudflare.net.
ss.svp.flkf.antpool.com.cdn.cloudflare.net. 300 IN CNAME 149bb53e5ee64aa0a30a7c9c89a8791c.pacloudflare.com.
149bb53e5ee64aa0a30a7c9c89a8791c.pacloudflare.com. 300 IN A 172.65.209.66

antpool is using cloudflare as a content delivery network (CDN). This effectively hides antpool's real IP-address and therefore hinders the use of normal geolocation.

Thank you @RedGrittyBrick. That was very helpful.


text:
How to Setup Masternode for Beginners?
guide is for a single masternode, on a Ubuntu 16.04 64bit server (VPS) running headless and will be controlled from the wallet on your local computer (Control wallet)

What is a masternode? What software or cryptocurrency project is this about?

Pls visit here: https://medium.com/@DanielJenkinson/an-introduction-and-guide-to-masternodes-1832fecd8ab5

Do you want a Dash or a GeekCash masternode?


text:
Antminer S9 13.5Th/s is giving 9.5Th/s only
I just bought a new antminer S9 model 13.5Th/s.
The problem that the average hash rate doesn't exceed the 10Th/s as attached in the picture, anyone knows why?
Thank you in advance.

First of all - check your logs on the miner and then the status via the buildt in GUI on the 9S.
From what i can guess, one of your hashboards arent running.
And there can be several reasons for this.
Reboot the miner,
Update Firmware,
Check PSU,
Check Netcable,
and Check Fans
IF non of this helped you need to look into the logs more closely,.
a board might be defective.


text:
Traced stolen crypto to exchange. Any way to get it back?
A week my BTC was stolen (very likely some form of trojan/keylogger as I stupidly kept the keys on a computer which connects to the internet). After getting over the initial shock, I looked into the thieves activities.
Now there has been some movement on his/her address and I found a way to connect it to an exchange (Poloniex.com). Do you think it is reasonable to expect the exchange to get involved in this, if I reach out to them? Or will they just side with their customer and ignore me?
The paper trail:
My BTC was stolen on 6th of August and sent to this wallet: https://mempool.space/address/bc1qwhyawjvexu2uv0tll4cw2vvn05e8c9ak4pwv4z
He/she now split it between two addresses (a new one, and an older one with 92 transactions: https://mempool.space/address/3HmQHzjzT2t2s21pGoCyHyo2ZYXZbuifmP)
This older one has previously interacted with the Poloniex.com exchange: https://vivigle.com/BitWallet/wallet?address=12KQs513uwL6wNynQ3JP6efaocDjkE2w5C
I am very grateful for any input and information. Even if you say there is no way to get it back, I'm glad to learn more. Thank you all!

Do you think it is reasonable to expect the exchange to get involved in this, if I reach out to them?

I'd look at this from their point of view. A random stranger wants the exchange to give them money from one of their customers' accounts. Maybe the stranger says the money is stolen but the customer says it was payment for a painting. The exchange has no way to tell who is telling the truth. The exchange is bound by laws like GDPR to protect the personal details of their customer.
That means it might be necessary to get local police involved and pay a lawyer to communicate with the exchange.
At least a casual check suggests that it is hard for non-customers to communicate with exchanges at all.

Your analysis with poloniex is right and they are furthermore very likely a huobi.com client.
You need to get law enforcements help to contact the exchange in order to freeze available funds of the scammer or to get his id or bank data.


text:
How long does a payment take to appear in my wallet, If not how do I reacieave it?
Yes how long does it take for a payment to appear in my wallet, on Bitcore, if it doesnt how do I reacieve it? Because it's been 15 hours but still havent seen it

Bitcore, or bitcoin core? Is your wallet fully synchronized? Do you have a transaction ID?

Most wallets will show you incoming/outgoing transactions as soon as they appear on the network. If you are not seeing a transaction, it is possible that your node (if you're using Bitcoin Core or a similar full client) is not fully synced yet, or that the node your light wallet connects to isn't fully synced. You can fix this by either waiting for your node to sync, or connecting to one that is synced.
During times when the mempool is full, nodes might drop transactions with low fees depending on how large their mempool is. At the time of writing, the mempool is quite empty, so this should not affect you.
If you are using a hosted wallet such as blockchain.info or an exchange, their systems may have not been able to detect your transaction, and you should reach out to their customer service.
You can also ask the sender for the tx id and use a block explorer to verify that the transaction has been confirmed successfully.

If you are using node wallet then you dont need to worry about your coins as the pvt key is with you,using which you can get your coins back. Generally it wont take more than the blockformation time  which is 10min(approx) if your node of fully synchronised with bitcoin blockchain else you might have to wait till your node is sync.
You can keep trace of your transaction here.


text:
How to implement Lightning Network in to a cryptocurrency exchange
A highly potent use-case for the lightning network are the millions of transactions that occur on a daily basis. There's still a good chance of data breach and hacks due to centralization. The possibility of centralized exchanges scamming people, and many more...
This question aims at a detailed step-wise implementation of the Lightning Network in a Binance like cryptocurrency exchange.


text:
Stratum proxy on Windows
I am looking to do solo mining on a SHA-256 altcoin by purchasing hashrate from NiceHash. I have the client set up on a Windows Server 2016 VPS and the blockchain is synced. For NiceHash to point the miners to me, I need to offer a stratum+tcp connection.
I have attempted to set up a mining pool using NOMP, but ran into countless errors that - when fixed - generated even more abstract errors, so dead end there.
Essentially what I am looking for is a proxy (?) that will get work from my client (JSON-RPC works and is potentially reachable from other servers) and deliver it to the NiceHash miners over stratum+tcp. I need no payout system or similar.
Is there any ready windows ( /java /...) program that covers this?
Thanks in advance!

If anybody is searching this in the future: CoiniumServ can be self-compiled from the github source and runs on windows.

awesome! I was looking for exactly that


text:
Used salvagewalllet, now it shows zero balance
I used the salvage wallet command in bitcoin. Now the new and old wallet files both say zero balance. Can anybody help me understand what`s going on?

-salvagewallet will extract only the private keys from your wallet. When it does that, it may also end up corrupting your wallet if it was not already corrupted. -salvagewallet should only be used as a last resort.
Because only the private keys are pulled out, all transaction and comment information is lost. That means that you will lose all of your labels and your wallet balance. You will need to rescan the blockchain be starting Bitcoin Core with -rescan.

Thanks for the response. I did try to rescan. It  rescanned very fast, and still no balance. When I try to add the backup wallet file that I had made earlier, it always makes a new wallet file, as if there is no file there.

When you use a backup, you must name it wallet.dat otherwise Bitcoin Core won't know it is there. Rescanning should take a very long time unless you are not fully synced.

Yes, I did name it wallet.dat , it says that it is fully synced. Still no balance. When I used salvagwallet, it also made a wallet bak file. When I try to run with that file, even when renamed, it just makes a new wallet, again.

Is the backup from before or after you used salvagewallet? What makes you think that it makes a new wallet file?

Yes, I have tried the backup that I made before I used salvagewallet. I can see in the bitcoin folder that it is making a new wallet each time. It also has a new receiving address.

If it is making a new wallet every time and you can see that file, then you are not naming your wallet file correctly. The underlying file system does not allow for two files to share the same name (which includes the extension).

it seems to be naming the new wallet "wallet" without the .dat,

This is in the debug file:
Renamed wallet.dat to wallet.dat.1515627016.bak
2018-01-10 23:30:16 Salvage(aggressive) found 5256 records

No, it's just that your file explorer is not showing the extension, which is default behavior on windows. In Windows, click "View" and then click "File name extensions" to see the full file names. What you should then see is the new wallet is wallet.dat and your backup is wallet.dat.dat.

Thank you very much. That did it. This is an old wallet file, from one of the first versions of bitcoin core. I don`t remember having any coins on it back then, but wanted to make sure that there were no private keys that were not showing up on the new program, which is why I ran salvage, I probably should have moved my known coins first. Anyway, how do I check for old private keys?

Is it normal for salvage to have found 5256 records?

You don't/can't. All private keys (old and new, whatever the distinction for that is) are loaded regardless and don't just "hide somewhere". salvagewallet will make things worse and make it more likely that private keys don't appear as it is known to corrupt uncorrupted wallets.

So when I ran salvagewallet, it made a backup (bak) file and it also made a new wallet file. What is the new wallet file for? Is it just an empty new wallet, or did it try to import keys to the new wallet?

It is a new wallet file with only the private keys it was able to extract imported into that wallet. Note that those private keys are not necessarily actually your private keys (they could just be garbage data that looks like a private key) and that it may not actually find all of your private keys.

So, when I use the new wallet that was created, it shows zero balance. It this right?

Without a rescan, it will show zero balance as there is no transaction information known to the wallet.

Well, it`s odd. Even with a rescan and the sync up to date, it shows zero balance.


text:
Most of the Bitcoin exchanges, are they using 3rd party API like blockchain.info or running their own node?
I'd like to know how the bitcoin exchanges work. It's not about big exchanges like binance or bittrex. I'd like to know people could make an exchange solely relay on third party apis and are they safe ?

Most of the Bitcoin exchanges, are they using 3rd party API like
  blockchain.info or running their own node?

They're running own nodes.

I'd like to know people could make an exchange solely relay on third
  party apis and are they safe ?

In my own opinion it's not safe to delegate service to third party services in case of money, especially if you can create and run that's service byself.

Thanks, is there any opensource bitcoin node I can try it on my server. Bitcoin core is something like GUI based desktop application.

All that you need is https://en.bitcoin.it/wiki/Bitcoind

You may want to checkout https://bitcore.io/guides as well, as it abstracts a lot of the difficulties when building apps on top of bitcoind.


text:
I must have written my 24 seed words incorrectly, options?
I have 24 seed words for a wallet (greenaddress), and also had access to that wallet with a simple passphrase on my machine. I wrote down two backups of the seed words which are identical, yet I must have made a mistake as it isn't working to restore the wallet. This is after my passphrase failed 3 times and was reset which was odd.
Anyway entering it into greenadress tells me nothing except "log in failed". So I downloaded electrum to try and restore there. Entering the words into their text box doesn't allow me to click on "next" with no error warning. There are in fact 24 words so I'm assuming I misspelled one or put one out of order.
What are my options here for most efficiently finding out which it is and regaining access to my funds?

If your old wallet supports the default BIP-0039, you could look up all the words and check them here: https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
Maybe you wrote "odd" instead of "add" or smth. like this down.

Is there some code that can do this for you more effectively? I also have one of the associated addresses if that helps.

@ArielDeschapell I am pretty sure that all valid seed word combinations result in a wallet. I also understand that it is possible to have the same seed words with a different checksum word and get a different wallet so, they must be entered accurately. You can try this answer for an explanation of brute forcing probability.

First off, you should check that each of the words you wrote down is in fact a valid word as mentioned by ndsvw.
We can automate this with a bit of python and this library.
from btctools.HD import WORDS

known_words = [
    'glory'
    'habit',
    'limit',
    'slow',
    'yard',
    'clog',
    'cylinder',
    'axis',
    'enough',
    'only',
    'magic',
    'hair'
]

total_phrases = []
for word in known_words:
    if word not in WORDS:
        print(f'Found INVALID word in list: {word}')

In this case we see the following output:
Found INVALID word in list: cylinder

This should send you down the right path. If you find a word that isn't valid and can't find a similar valid one that makes sense then I suggest checking out some related posts where people are missing one word from their mnemonic phrase:

Automate Bip39 seed recovery
Lost my Bitcoin wallet and have only 11 out of 12 mnemonic seed phrase words. How can I get my Bitcoins?


text:
Would nine 1MB transactions potentially create havoc on the BitcoinCash network
It appears that the BitcoinCash chain is still on its original BCH main chain, and non-upgraded mines/exchanges/wallets can still transact there.
What then would happen if nine (or more) 1MB transactions were created by padding the comments so each transaction was just under 1MB.  Assuming that these none-or-more transactions all had attractive Satoshi's per byte, is the following scenario possible?  If not why not?

Upgraded mines would try and fill a new block with nine (or more) 1MB
transactions while non-upgraded nodes would try and fill a new block
with exactly eight of them.
If an upgraded mine won the next block, then it would create a
physical 32MB consensus rule fork with an initial 9MB block off of
the main chain, and we would be able to see this >8MB block in a
BitcoinCash block explorer (at least for a while).
Subsequent blocks mined by non-upgraded nodes would extend original
8MB non-upgraded main chain, whereas subsequent blocks mined by
upgraded nodes would extend the upgraded now hard fork chain.
Meanwhile exchanges/wallets which have not been upgraded (possibly
some major players due to non-consensus seeking nature of this release)
would operate only on the original main chain, while those that have
upgraded would operate on the upgraded chain, assuming it is longer.
Periodically the chain with the largest cumulative work would
cause transactions on the other chain to be sent back back into the
mempool, potentially allowing this process to repeat assuming that
the new upgraded chain had less cumulative work and that the new
upgraded chain again won the next block race and wrote a new 9MB hard
fork block.
Should this work, the overall effect of this could be tantamount to
a temporary denial of service attack on the BitcoinCash network.

By "none-or-more" on the 4th line, I meant "nine-or-more", apologies for the typo, thanks..

No, the hard fork also brought new opcodes. Transactions using those new opcodes have already been made, which caused the chains to become separated. If the only change were a block size limit increase, the developers would (?) put a consensus rule that says "The size of the first block after the fork must be bigger than 8 MB.", similar to Bitcoin Cash's first block, after forking the Bitcoin blockchain. "...must be bigger than 1 MB..."
Trivia: Rawpool continued to mine for the old blockchain for one day. More information

(1) Yes. That's why hard forks are opposed. (2) There are no obstacles. A miner can fill their block completely if they want, for free. However, big blocks increase the risk of orphaning, which means it only looks like "free", and has a hidden price. Such a block would be different than a 30 MB block filled by real transactions. In that case, since the transactions would have been broadcast, Xthin/Compact Blocks/Graphene can significantly reduce the probability of an orphan block. So, a miner either has to broadcast their transactions to reduce the prob of orph. (lose money by fees) or deal

with orphaning @jimhash


text:
Full node storage requirements for new 2MB block which is only 10% full
If blocks were 2MB, and a 2MB block that is only 10% full gets confirmed, then how much additional storage is required on a full node?
I am guessing the correct answer here is 200K?
Thanks in advance for any guidance in this matter.

What is a 2MB block that is only 10% full? Isn't that just a 200k block?

Full nodes are not required to store blocks (they can be pruned). So the answer is 0.
If a 200 kB block does get stored, it takes 200 kB to store it.

Can we assume this new block will be stored locally on some full node somewhere, ultimately.  Which is it 200K 0r 2MB? Thanks very much for your time.

It will be stored somewhere. But not nearly every full node needs to keep it for eternity.

How much space will it take when it does get stored?

That seems like a trivial question, but I've updated my answer.

It's also mostly irrelevant in that debate - which is about costs related to bandwidth (full nodes need to download all blocks, even if they don't store them), validation costs, impact on growth of the UTXO set, ...

So in this example, the node in question is only downloading 200k, not 2MB, is that also correct?

Yes, why do you keep repeating 2MB? A 200kB block is 200kB.

Part of what I'm trying to get to the root of is whether or not block size where doubled on BitCoin Core say or quartered on BitCoin Cash the actual resource requirements (and cost) would differ or not.

The reason resource limits like block weight exist is to prevent miners from increasing resource costs needed for full nodes - as that would amount to full nodes effectively accepting becoming powerless themselves. As including transactions in a block has effectively zero cost for a miner, and Bitcoin's design relies on not trusting miners, we should care about the worst-case situation where all blocks are full - even if that situation isn't reached in the short term. A resource limit increase isn't something that can be easily undone after it already hurts centralization.

But if miners do a cost-benefit analysis of sha-2 work (effort), it increases linearly as the amount of transactions packed into a single block increases (as I understand it), and further diminishes the chance of reward.  I may be operating under the mistaken assumption that this cost-benefit analysis results in the natural choice of smaller blocks (changing as a function of transaction cost).  Thank you again very much for your time.

No, their amount of SHA256 work is independent of the number of transactions. Also, since the introduction of efficient block relay protocols like BIP152 and Fibre the speed of block propagation is also (almost) independent of their size. There is no rational reason why miners shouldn't include each and every transaction that they can if it pays them. If they don't, a competitor may include it, in which case they'll still pay all the cost, but lose the benefit.

I thought SHA-2 work was a function of message size.  Are you saying that if one message has length L and another has length 2L, that the second message doesn't take twice as long to compute a digest for?

Yes, it is dependent. But we first hash all the transaction together into the Merkle root, and then hash that many times to find a good block. There are maybe 100000 SHA256 transforms necessary to compute the Merkle root and almost 1000000000000000000 after that to find a block. The cost of hashing the transactions is completely irrelevant compared to the total effort of producing a block.

This is getting off topic and too long for comments. I suggest you spend some time reading more on this site and elsewhere about the details of Bitcoin's operation.

Ok, sorry thanks, so hash effort/work then is dominated by the hashing of intermediate Merkle root result(s) rather than on the transaction payload in the block, so the payload hashing is (relatively) insignificant by comparison. I think this is sinking in, thanks.  I'm going to go read about that.  Thanks again for all of your time -- have a good one!


text:
Why different pages report different number of mempool transactions?
I see different reports of transactions in mempool. From 35k (statoshi.info) over 170k (blockchain.info) to 215k (bitaps.com). All pages claim to report in realtime. Why is that? The difference is so big that it can not be caused by sync delays..


text:
Copay Log in Problem
I bought a new phone and when I enter the account recovery phrase and password it tells me it is incorrect, is there any way I can contact someone at copay to help me log on?

You can try opening an issue here: https://github.com/bitpay/copay/issues. However, if your recovery information is noted down incorrectly, there is little anyone can do to help you

Official BitPay/Copay support can be reached here:
https://help.bitpay.com/requestHelp
Below are a few tips you can try to make the 12 word recovery phrase work:

Are you sure that the recovery phrase was written in the correct order?
Did you use all lowercase letters and no punctuation?
Did you add a password to your recovery phrase?
Do you have the QR code or text/file backup?
Did you separate each word with a single space (no commas or any other punctuation)?

Please also ensure that your words are all contained in the following list of possible words:
https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt


text:
How to search (via json API) transactions to my wallet?
I'm new to bitcoin and want to take payments with it on my website.
Taking payment isn't a problem but the manually process of verifying payments and matching up with users is.
Is there any way to use an API to search the transactions to my address and look for specific text in the "message" field?
Thanks
Matt

There is no "message" field in Bitcoin transactions.

Oh then I misunderstood. Because I can make a QR code that includes a message or "description". When I scan it my bitcoin wallet shows this in the send dialog box.
I wanted to include there like a user ID which I could match up to my back end database

That's a message to appear in their wallet about who they paid to. It isn't part of the transaction, it isn't immutable. You need to give a unique payment address to every person who pays you, and that's how you know who paid you. This is how all services operate.

Aaah ok thank you, now I understand.  So the message won't arrive at my wallet.
I'll continue my search for how to correctly implement payments on my site then.

@MattDeemer you should probably look for integrated solutions, such as btcpayserver. If you still want to go with bitcoind, look for the listunspent call exposed by the JSONRPC API.

@darosior: That sounds more like an answer than a comment :)

There is no "message" field in Bitcoin transactions, only the payment information is transferred on the network. While you can generate a label for a payment requests on your end, or include a label in the QR code for the benefit of the payer, neither would be transferred on the Bitcoin network. The proper way of distinguishing payments on Bitcoin is to give each payment a unique invoice address.
Instead of using plain Bitcoin Core, you may want to take a look at BTCPay Server, which is a self-hosted open-source payment processing solution that facilitates on-chain and Lightning Network payments. If you want to continue using Bitcoin Core, look into the listunspent call.
H/T to @Anonymous and @darosior, whose comments I've collected to write this answer.


text:
How would I prove that I own X amount of Bitcoin to somebody without violating my privacy or sending/risking any coins?
Now that people who own a full Bitcoin will be like people who currently own ten million USD or more in "liquid assets", I'm trying to come up with some way that I can safely and reasonably prove to somebody that I own X amount of Bitcoin. Being able to cryptographically convince somebody that you control (have the private keys to) a certain sum of Bitcoin (or "over X amount", to conceal your full wealth) will probably be very important in the near future. I want to prepare for that situation.
If I simply tell somebody that I own X BTC, why should they believe me? I realize that this same goes for fiat money as well. How many attractive females have not been lied to by some guy in a fancy suite who claims to have "ten mills" on the bank, but really is all broke and barely was able to afford the clothes he is wearing?
But Bitcoin is still seen by many as some kind of "joke" or "fake money". So I would have to prove it for sure for them to even speak to me. And if this requires doing scary operations in Bitcoin Core and possibly ending up revealing your private keys or other sensitive data... well... I don't even understand how a normal person would be able to verify your cryptographic "key" or whatever form this takes. They are just not going to bother with that.
In summary: how do I prove to somebody that I own and exclusively control X amount of Bitcoin, in a way which non-computer hackers can comprehend, yet does not rely on some kind of "traditional bank" or third-party commercial service?
For example, those who went on those "Bitcoin rich people" cruises, how were they verified to actually own a bunch of Bitcoin? Can anyone just claim to own X BTC and they will believe you? I don't get how this is done.

The way that this is done is to sign messages using the private keys which correspond to your UTXOs. Your UTXOs are what make up your Bitcoin balance, and by signing a message with the keys associated with them, you are proving that you have the ability to spend those UTXOs.
To verify, someone can verify the signed message, compute the addresses for the keys you used, and then lookup the addresses and see how much Bitcoin are associated with all of those addresses.
For the average person, there is software that can verify the message for you and they will return what address was used in signing that message. Then they can just take this address and look it up on a block explorer.

Hmm... Sounds awfully complicated. How many people know about and do this?

Signing a message with an address (technically not what you do, but that's what everyone calls it) is fairly common and implemented by a lot of wallets. There's guides and tutorials on how to do it for most wallets. While it does require you to know enough about Bitcoin to have a wallet and understand what keys are, the barrier to entry is fairly low and your average person should be able to sign and verify messages.

by Displaying your Bitcoin address publicly, if you write your name next to it, it could be associated with your name, but if you don't share any information about you and give your Bitcoin address to someone, they can verify how much BTC is on the address without any risk of getting in trouble or loosing your funds.

This frankly makes no sense. What is "my Bitcoin address"? There are only receive addresses and private keys AFAIK...

Ok then, recieve address if you prefer. Or you just sign a bitcoin message.

Since the blockchain is public, can't I just scan through for any address associated with roughly X amount of Bitcoin and post that address with my name next to it? I don't see how this proves control over money. bc1qgdjqv0av3q56jvd82tkdjpy7gdp9ut8tlqmgrpmv24sq90ecnvqqjwvw97


text:
How to perform automated mining in regtest mode?
I'm trying to setup a private network of bitcoin nodes for testing and experimentation. From what i understand, i have two choices while setting up a network:

I can run bitcoind -testnet and connect to the public test network. The testnet has nodes that will facilitate the mining of my transactions as long as i just broadcast them.
I can configure the node with regtest=1 and manually run the generate command whenever i want to create blocks.

I've also managed to find out that the mining is no longer a part of the core codebase and is usually in an external component.
What i don't understand is how any of these mining softwares interact with the bitcoin node. Does it periodically poll through the JSON RPC to check if the transaction pool has reached a certain threshold (in numbers or size)? If not, what triggers the beginning of a mining operation? Can the bitcoin node send out events when the transaction pool reaches a threshold?
I want to setup a similar automated process for creating blocks in my regtest network, but using the generate command instead of any mining software. I don't need a robust PoW setup in my local network. My aim is to just build an app which interacts with the nodes and makes transactions. Is writing an RPC client which periodically queries the pool size and fires a generate command on reaching a threshold the right way to proceed? Or does the bitcoin node itself provide some way to setup periodic generation of blocks?
Thanks in advance.
P.S. I'm very new to bitcoin development, so apologies if this is an obvious question.

The miner can generate a block candidate with the getblocktemplate call, which uses certain heuristics to construct an approximation of an fee-optimised block given the current local mempool state.
1) The question in regards to when to begin mining
Generally, the miner will want to begin mining the next block as soon as the strong chain is extended, maximising the time available to search for the solution.
However, consider building an optimal block template from a growing number of unconfirmed transactions being accepted into the mempool. This means a transaction selection so that total block fee reward is optimised, whilst ensuring no double-spend. A growing mempool provides a greater optimisation space, but takes time. Solving for the exact optimal block from an increasingly large pool of valid transactions is NP-Hard (knapsack/max independent sets) and expensive.
At some point, the gains in fee rewards of solving this optimisation problem will be offset by the opportunity cost of the miner (during optimisation, the miner hashing equipment will necessarily be idle). Simpler heuristics may optimise for a less than optimal block template (as in getblocktemplate), but enables the miner to begin mining immediately.
If you wish to apply your own block template solver, you can get a mempool dump via
getrawmempool (not very efficient to acquire over RPC).
2) Regarding regtest in a local network
Is it possible to create bitcoind regtest network on Ubuntu (which itself is on Virtualbox)?

Hey so i get that deciding what pool size is optimal is tricky, and the miner would have the highest probability of mining a block if he started as soon as the chain gets extended. What i want to confirm is, once a miner has decided a trigger condition (e.g. the chain has been extended + at least 10 transactions in the mempool), how does he configure it? Setup a blocknotify event and poll the mempool from a script when the event fires? Or is there some other way?

Oh and about the regtest part, i've already got a local network setup and i'm able to use the generate command to create blocks. My question is if there's any way to ask bitcoind to generate a block every x seconds or something. I want the generation process automated. The link in your answer just instructs to run the setgenerate command manually which is not quite what i'm after.


text:
How to save the mempool information immediately before the node receives a block?
I want to use Bitcoin RPC API 'getrawmempool' to save the snapshot of the mempool immediately before my full node receives a block. This requires modification of the Bitcoin source code. How should I modify it? Who can help me very kindly?


text:
Are there any existing tools to measure the time required for block and transaction validation？
The validation time of transactions and blocks has a great impact on the performance of the Bitcoin network. Are there any special measuring tools that can be used?

Bitcoin Core has inbuilt benchmarks which can be enabled using debug=bench, which breaks down the validation time of incoming blocks.

How to enable "debug=bench" please?

https://bitcoin.stackexchange.com/q/66892/13866 and https://bitcoin.org/en/release/v0.20.0#notable-changes


text:
How do I use the getblocktemplate RPC command of Bitcoin Core GUI? I tried the following usages but none of them worked
I tried the following commands, but none of them worked.
-getblocktemplate "segwit"
-Error: Error parsing JSON: segwit

-getblocktemplate ("segwit")
-Error: Error parsing JSON: segwit

-getblocktemplate "rules": ["segwit"]
-Error: Error parsing JSON: rules:

-getblocktemplate {"rules": ["segwit"]}
-Error: Error parsing JSON: {rules:

-getblocktemplate
-getblocktemplate must be called with the segwit rule set (call with {"rules": ["segwit"]}) (code -8)

-getblocktemplate {"rules": ["segwit"]}
-Error: Error parsing JSON: {rules:

How can I use this command correctly?

The GUI's debug console operates similarly to a shell. It needs quotes around the entire JSON string so that it is first interpreted as a string before the JSON is parsed. Then, if you used double quotes, you need to escape the quotes that are part of the JSON so that they aren't misinterpreted.
A valid way of writing this command is
getblocktemplate "{\"rules\":[\"segwit\"]}"

Alternatively, to avoid additional escaping, you can use single quotes on the outside:
getblocktemplate '{"rules":["segwit"]}'


text:
Is PoW and consensus unnecessary without double spending?
Satoshi's whitepaper claims that the reason there must be a consensus on all transactions is to solve the problem of double spend. I'm curious then, how would a non-consensus based system work if double spend were not a problem?
If a coin is still represented as a series of transactions, each of which is verifiable, and these are submitted as proof of ownership during transactions, then how can one prove that the entire coin is valid? While no one can fake a spend from an unwilling party, it seems you could fake the entire coin altogether.
The only solution I see to above is that each coin is initially issued and signed by a trusted party. Once these coins are in existence the trusted party is removed.

The only solution I see to above is that each coin is initially issued and signed by a trusted party. Once these coins are in existence the trusted party is removed.

This is not correct. Why would that party need to be trusted?
Is the issue that they might sign more coins than they said they would sign? But that's a double spend problem. Right?
A double spend is when a party is only supposed to transfer X coins but they sign valid transactions to transfer Y coins where Y is more than X. The assumption we started with is that double spend isn't a problem. So there is no need to trust the "trusted party" since the only problem would be if they double spend and the starting assumption was that double spend wasn't a problem.
At every point in the system's existence, there has to be some set of future transactions that are valid and some set of future transactions that aren't and everyone has to agree on which transactions go in which set if they know the system's state. The system's initial state is also a system state, and so part of the system's rules have to be to see which transactions are valid from the initial state.
So simply a rule that there exists spendable tokens in the system's initial state is sufficient. The party that can spend those initial tokens doesn't need any special trust -- they are no different from any party that can spend any tokens in any other state.

Well how would the coins be created in the first place? My concern is that someone can fake a coin by putting together a series of fake transactions to fake addresses.

@curiousgeorge The system's rules would specify what coins exist in the first place just as it specifies what coins exist in all other states. No special trust is needed just because the coins don't exist as the result of a prior transactions. All participants have to agree on all system rules or no system will work.

I see so for example an initial system state would be "these 1k coins are signed by some hidden system private key, so they will forever be verifiable as authentic"

@curiousgeorge Sure. If everyone agreed on that, that would work. The XRP Ledger starts a new chain of ledgers with all 100 billion XRP controlled by an account with a well-known private key. They are defined by the system's rules as existing initially as if they were placed there by a transaction. That's just one of the system rules that participants must agree on to use the system and agree on who holds what XRP.

To clarify "everyone has to agree on which transactions go in." In a case with no double spend this does not need to be the case right? No ledger is necessary. When you spend a coin, you could simply submit the coin's transactions as proof of ownership.

No. It still has to be the case that given some transaction (and identical knowledge of the system's current state, which you can think of as being packed in with the transaction), all participants must agree on whether it's valid or not. That applies to the initial state (when there are no prior transactions) too.

Oh ok everyone has to verify it the same way sure, but not everyone needs to be aware of every transaction. Each person does not need a global transaction history. Satoshi's paper claims the awareness of the full history is necessary to solve the double-spend (perhaps I understand this wrong)

Let us continue this discussion in chat.


text:
Is the "vin" value field necessary or just a matter of convenience?
I notice that vin has a value field denoting the amount of money being spent from the input transaction. Am I correct that this is here for convenience and must equal the value of the specified transaction output?
The only other case I can think of is splitting the same transaction output into two transaction inputs, but I don't see the point of this.
"vin": [{
  "txid":"672aeb1bc62b3941f2e9a530ff6d12e5e70c257632d536d5b0633e12b68a915d",
  "vout":1,
  "scriptSig":{
    "asm":"..."
  },
  "addr":"1HKqcNrf3NPuz4s2MdoAzpYYfjYvbbsxZf",
  "value":0.0468234
},
...]

That field in the RPC response is by definition just information about the output being spent, so yes, it is always going to be equal.
As for whether it's necessary - no, of course not. But the RPC in the first place exists because of convenience.


text:
How do I use Bitcoin Core (fully synced) to "backtrack" a receive address?
I'm trying to "reverse-track" my current Bitcoin wallet to see its exact history on the blockchain, backwards.
I have a fully synced Bitcoin Core installed.
What command do I use in its console or API to return a "backtrace" of transactions if I feed it a receive address?
I'm expecting a JSON nested arrays/objects tree with all the "actions" going back to when it was first "minted", prior to me buying it.

Are you asking about how to trace a specific coin back in time (ie, back before you received it, to the point where it was minted)? If so, then understand that you cannot: each transaction blends all inputs/outputs, there is no meaningful way to trace a specific coin through time.

@chytrik I don't know what you are saying. I think I asked my question very clearly...

A bitcoin transaction is composed of inputs (coins) and output (coins). As example, if a transaction has 10 inputs worth 1 BTC each, and 10 outputs worth 1 BTC each, there is no meaningful way to discern "which input become which output?", it is a nonsensical question at a technical level. Think of it as if all of the inputs are melded together, and then the outputs are forged anew from this blob.
So in relation to your question, the best you could do is to write some code to report back with a full index of bitcoin outputs that share a history with the output in question. This would mean finding the history of every input to the transaction that paid you, and every input to those transactions... and so on, until you reach coinbase outputs for every possible path.
For a lot of outputs, I think this history would likely be absolutely massive, tracing back to a large number of coinbase transactions across time. Very very few outputs would be traceable back to a single coinbase output!


text:
How can I Recover my Lost Bitcoin
how can i recover 3.617BTC i Lost to This investment Website ,
i invested in bitcoin on the website ""Coinfoxltd.com"" through  one of their account mangers Julia Adam.
I tried to withdraw my profit after 2 months, i was told to pay withdrawal fee$1500, which i did then I tried withdraw my profit then i was asked to make another $964 payment for Tax which i did, when i tried to withdraw again i was asked to make another deposit, i think i am been scammed.
Please how can i recover my money from this fake website???

I think you are basically unable to withdraw your BTC because you have been scammed. There is no BTC on its website at all. You cannot withdraw your BTC or money. This will not happen if you buy from a proper organization. For example, you will not be deceived when you invest in a formal platform like Coinbase or Binance. So don't trust the fake investment institutions on the Internet.


text:
How do people know who sent them bitcoin, ex. in case of a ransomware targetting multiple locations?
I have a rough understanding about how bitcoin works and have read about how anonymous it is, or rather how not anonymous it can be in certain situations. But I still do not get how is it possible to use bitcoin for transactions where it is important for the recipient to know who sent which amount while staying "anonymous" and not communicating with the sender. In case of a pirate expecting to receive money from more than one victim, how do they know who paid? Same question for people selling illegal stuff.

Disclaimer: I am not a pirate, nor a drug dealer. These are the first examples that came to mind.

The answer is simply that in almost all cases, the receiver does not care who paid. They care about what item/service/bill was paid, not by whom. And to do that, receivers create a new receive address for every payment they expect.
In the case of an online shop, when an order is placed, they create an address, store the address in their database together with the order information, and when that address receives the expected payment, the order is processed. It doesn't matter who paid it, or even whether that was the same person as the one who placed the order; it only matters which order was paid.

Turns out I had already missed the fact that a wallet and an address are not the same thing... thanks!


text:
Is it Possible to Create Signature Chains for Private Keys to Sign Transactions with? Similar to how Certificate Authorities Use Intermediate Certs?
I am wondering if it is possible to implement this flow with bitcoin private keys, similar to how certificate authorities have a root cert and an intermediate cert used to sign csr's.  It would be nice to have this feature for a wallet, where you could keep your root safe but have some limited signing ability via an intermediate.  Has anyone thought about something like this before?

This idea is basically delegation: the root key delegates the ability to sign for an output to another key. This is not possible in Bitcoin, but there has been discussion about such delegation in the form of Graftroot.

With graftroot, the participants establish a threshold key, optionally
with a taproot alternative, just as they do with taproot.  At any
time, they can delegate their ability to sign to a surrogate script by
signing that script (and just the script) with their taproot key, and
sharing that delegation with whomever they choose.   Later, when it
comes time to spend the coin, if the signers aren't available and the
script must be used,  the redeeming party does whatever is required to
satisfy the script (e.g. provides their own signature and a timelock,
or whatnot)  and presents that information along with the signer's
signature of the script.


text:
Do Wallets need to be verified or activated? Crypto Support asking me to do that
1.5Bitcoins were stolen form me in 2019, and a company Merawing contacted me a few weeks again, saying that they work with Crypto Regulation of Cyprus and that they would help me getting my bitcoins back. Every step we did is double checked and confirmed by Crypto Support in Cyprus.
After having invested already 25'000 Euro to verify some steps in the process, when I wanted to send the btc to my Exchanger, an error occured and the btc were sent to another Wallet (not mine). They said I was so lucky that that wallet doesn't belong to anyone and that so they could save it under my name. Being a new wallet needs now to be activated and verified and this requires an additional turnover of 40'000 Euro.
Is it true and correct that a wallet needs to be activated and verified by specific turnovers before the btc can be send to a personal Wallet in the Exchanger or is this just a clever scam?
Many thanks.

Hi Startraveller, this sounds very much like you're being scammed. I've linked two topics that go into more detail on similar situations.

Merawing.net domain was only registered a few months ago. most of the website content is copied from bitcoin.org. Merawing's contact page gives a UK phone number but a Cyprus address. I'd guess Merawing and the Crypto Regulation of Cyprus are fake entities run by the same criminals.

Definitely a scam


text:
How can you consolidate your personal UTXO set? (different wallet answers welcomed)
With network fees so low at the moment, I've seen a lot of recommendations to take the opportunity to move funds to segwit addresses and consolidate your UTXO set. During peak congestion, many smaller UTXOs were simply not economical to spend and this is likely to occur again in the future. However I haven't found a definitive guide on how to actually do this.
I'm using the Ledger Nano S Bitcoin wallet, which doesn't provide the most granular control over software tradeoffs but not the most abstracted away either. As far as I can tell from the interphase I have two UTXOs in the wallet, one with the majority of my coins and one tiny one of change that I'd like to combine into the larger amount.
I thought this would be as simple as spending the full wallet amount to a new receiving address for the same wallet, and watch as the two inputs were combined into two outputs. However when I did this the wallet simply spent to two outputs of the same amount (minus a tiny fee) regardless. So since I'm assuming my end goal is to in fact combine them into a single output, what are my options here?

I thought this would be as simple as spending the full wallet amount to a new receiving address for the same wallet, and watch as the two inputs were combined into two outputs. However when I did this the wallet simply spent to two outputs of the same amount (minus a tiny fee) regardless

That is exactly what you are supposed to do. That it didn't work means that you did not specify the amount correctly. This could be because you either calculated the amount incorrectly or there is a software bug. I'm leaning towards the former.
If you calculated your amount by looking at a blockchain explorer, don't do that. It will result in an accurate balance calculation because of change addresses. Instead you should just use what your wallet reports back to you.
Most wallets have an option to send the maximum amount in a wallet. If your wallet has that option, use it instead of manually entering the amount. This will guarantee that your entire balance is sent to a single UTXO.

This is exactly what I did, again using the Ledger wallet. But it did not result in a single output. I'll be trying again once the transaction confirms however to hopefully eliminate any error on my side.

Repeating the process, I can confirm that even selecting "max" in the ledger wallet for the transfer amount creates a 2nd output which it then asks me to confirm on my Ledger. There doesn't seem to be any obvious way to override this and actually consolidate the two UTXOs into one.


text:
pyln.testing channel's spendable_msatoshi remains 0 in the direction towards the funder, regardless of balance
The python test script below (using the pyln-testing library) opens a channel between l1 and l2, and then the funder (l1) pays half of the channel's capacity to l2.
After this payment 'l2' wants to make a smaller payment to l1, but this payment fails for reasons I will explain below the script.
Test script
from pyln.testing.fixtures import *  # noqa: F401, F403
from pyln.testing.utils import wait_for, DEVELOPER
import unittest

@unittest.skipIf(not DEVELOPER, "gossip is too slow if we're not in developer mode")
def test_two_way_payment(node_factory):
    """Send a payment to and fro
    l1 ---- l2
    """
    opts = [{},{}]
    l1, l2 = node_factory.get_nodes(2, opts=opts)

    capacity=10**6

    l1.openchannel(l2, capacity=capacity)

    # Now wait for gossip to settle and l1 to learn the topology
    wait_for(lambda: len(l1.rpc.listchannels()['channels']) == 2)

     # Get all channels balanced (by paying money to the other node)
    l1.pay(l2, capacity // 2)
    l1.wait_for_htlcs()

    print("LISTPEERS L2: {}\n".format(l2.rpc.listpeers()))

    l2.pay(l1, capacity // 20)
    l2.wait_for_htlcs()

The script above fails with the error below
Error
Fail: pyln.client.lightning.RpcError: RPC call failed: method: waitsendpay, payload: {'payment_hash': '6d1281627828720bd86cb2815f222a8c0106545d7d4f972e5ec5324133163224'}, error: {'code': 204, 'message': 'failed: WIRE_TEMPORARY_CHANNEL_FAILURE (WIRE_TEMPORARY_CHANNEL_FAILURE: Capacity exceeded - HTLC fee: 7964sat)', 'data': {'id': 1, 'payment_hash': '6d1281627828720bd86cb2815f222a8c0106545d7d4f972e5ec5324133163224', 'destination': '0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518', 'msatoshi': 50000, 'amount_msat': 50000msat, 'msatoshi_sent': 50000, 'amount_sent_msat': 50000msat, 'created_at': 1623829593, 'status': 'failed', 'erring_index': 0, 'failcode': 4103, 'failcodename': 'WIRE_TEMPORARY_CHANNEL_FAILURE', 'erring_node': '022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59', 'erring_channel': '1x1x1', 'erring_direction': 0}}

Listpeers
If I lift some information out of the listpeers rpc call for l2 I can understand why the payment wouldn't work:
'msatoshi_to_us': 500000
[...]
'spendable_msatoshi': 0

What I don't understand is why 'spendable_msatoshi' would be zero. It can't be because of the channel reserve. I don't think it can be because of enormously overestimating the on-chain fees (in case of a forced close) because the l2 isn't the funder.
What am I missing/not understanding here?

You opened a 1 million Satoshi channel and send 500 sats to the other side. The protocol requires a 1%channel reserve kept on both sides for the penalty mechanism to always have enough collateral. This one percent is ignored initially if you never had that much balance (e. G. On new channels) but is the reason why you can't send sats unless you met the 1% threshold.
Send another 9501 sats (9501000msats) and you should see that you can spend 1 satoshi

I mixed up sats and msats. I meant to balance the channel 50/50, but openchannel uses sats and pay uses msats.