bitcoin core - Unconfirmed transaction. How to make my ...

Technical: Taproot: Why Activate?

This is a follow-up on https://old.reddit.com/Bitcoin/comments/hqzp14/technical_the_path_to_taproot_activation/
Taproot! Everybody wants it!! But... you might ask yourself: sure, everybody else wants it, but why would I, sovereign Bitcoin HODLer, want it? Surely I can be better than everybody else because I swapped XXX fiat for Bitcoin unlike all those nocoiners?
And it is important for you to know the reasons why you, o sovereign Bitcoiner, would want Taproot activated. After all, your nodes (or the nodes your wallets use, which if you are SPV, you hopefully can pester to your wallet vendoimplementor about) need to be upgraded in order for Taproot activation to actually succeed instead of becoming a hot sticky mess.
First, let's consider some principles of Bitcoin.
I'm sure most of us here would agree that the above are very important principles of Bitcoin and that these are principles we would not be willing to remove. If anything, we would want those principles strengthened (especially the last one, financial privacy, which current Bitcoin is only sporadically strong with: you can get privacy, it just requires effort to do so).
So, how does Taproot affect those principles?

Taproot and Your /Coins

Most HODLers probably HODL their coins in singlesig addresses. Sadly, switching to Taproot would do very little for you (it gives a mild discount at spend time, at the cost of a mild increase in fee at receive time (paid by whoever sends to you, so if it's a self-send from a P2PKH or bech32 address, you pay for this); mostly a wash).
(technical details: a Taproot output is 1 version byte + 32 byte public key, while a P2WPKH (bech32 singlesig) output is 1 version byte + 20 byte public key hash, so the Taproot output spends 12 bytes more; spending from a P2WPKH requires revealing a 32-byte public key later, which is not needed with Taproot, and Taproot signatures are about 9 bytes smaller than P2WPKH signatures, but the 32 bytes plus 9 bytes is divided by 4 because of the witness discount, so it saves about 11 bytes; mostly a wash, it increases blockweight by about 1 virtual byte, 4 weight for each Taproot-output-input, compared to P2WPKH-output-input).
However, as your HODLings grow in value, you might start wondering if multisignature k-of-n setups might be better for the security of your savings. And it is in multisignature that Taproot starts to give benefits!
Taproot switches to using Schnorr signing scheme. Schnorr makes key aggregation -- constructing a single public key from multiple public keys -- almost as trivial as adding numbers together. "Almost" because it involves some fairly advanced math instead of simple boring number adding, but hey when was the last time you added up your grocery list prices by hand huh?
With current P2SH and P2WSH multisignature schemes, if you have a 2-of-3 setup, then to spend, you need to provide two different signatures from two different public keys. With Taproot, you can create, using special moon math, a single public key that represents your 2-of-3 setup. Then you just put two of your devices together, have them communicate to each other (this can be done airgapped, in theory, by sending QR codes: the software to do this is not even being built yet, but that's because Taproot hasn't activated yet!), and they will make a single signature to authorize any spend from your 2-of-3 address. That's 73 witness bytes -- 18.25 virtual bytes -- of signatures you save!
And if you decide that your current setup with 1-of-1 P2PKH / P2WPKH addresses is just fine as-is: well, that's the whole point of a softfork: backwards-compatibility; you can receive from Taproot users just fine, and once your wallet is updated for Taproot-sending support, you can send to Taproot users just fine as well!
(P2WPKH and P2WSH -- SegWit v0 -- addresses start with bc1q; Taproot -- SegWit v1 --- addresses start with bc1p, in case you wanted to know the difference; in bech32 q is 0, p is 1)
Now how about HODLers who keep all, or some, of their coins on custodial services? Well, any custodial service worth its salt would be doing at least 2-of-3, or probably something even bigger, like 11-of-15. So your custodial service, if it switched to using Taproot internally, could save a lot more (imagine an 11-of-15 getting reduced from 11 signatures to just 1!), which --- we can only hope! --- should translate to lower fees and better customer service from your custodial service!
So I think we can say, very accurately, that the Bitcoin principle --- that YOU are in control of your money --- can only be helped by Taproot (if you are doing multisignature), and, because P2PKH and P2WPKH remain validly-usable addresses in a Taproot future, will not be harmed by Taproot. Its benefit to this principle might be small (it mostly only benefits multisignature users) but since it has no drawbacks with this (i.e. singlesig users can continue to use P2WPKH and P2PKH still) this is still a nice, tidy win!
(even singlesig users get a minor benefit, in that multisig users will now reduce their blockchain space footprint, so that fees can be kept low for everybody; so for example even if you have your single set of private keys engraved on titanium plates sealed in an airtight box stored in a safe buried in a desert protected by angry nomads riding giant sandworms because you're the frickin' Kwisatz Haderach, you still gain some benefit from Taproot)
And here's the important part: if P2PKH/P2WPKH is working perfectly fine with you and you decide to never use Taproot yourself, Taproot will not affect you detrimentally. First do no harm!

Taproot and Your Contracts

No one is an island, no one lives alone. Give and you shall receive. You know: by trading with other people, you can gain expertise in some obscure little necessity of the world (and greatly increase your productivity in that little field), and then trade the products of your expertise for necessities other people have created, all of you thereby gaining gains from trade.
So, contracts, which are basically enforceable agreements that facilitate trading with people who you do not personally know and therefore might not trust.
Let's start with a simple example. You want to buy some gewgaws from somebody. But you don't know them personally. The seller wants the money, you want their gewgaws, but because of the lack of trust (you don't know them!! what if they're scammers??) neither of you can benefit from gains from trade.
However, suppose both of you know of some entity that both of you trust. That entity can act as a trusted escrow. The entity provides you security: this enables the trade, allowing both of you to get gains from trade.
In Bitcoin-land, this can be implemented as a 2-of-3 multisignature. The three signatories in the multisgnature would be you, the gewgaw seller, and the escrow. You put the payment for the gewgaws into this 2-of-3 multisignature address.
Now, suppose it turns out neither of you are scammers (whaaaat!). You receive the gewgaws just fine and you're willing to pay up for them. Then you and the gewgaw seller just sign a transaction --- you and the gewgaw seller are 2, sufficient to trigger the 2-of-3 --- that spends from the 2-of-3 address to a singlesig the gewgaw seller wants (or whatever address the gewgaw seller wants).
But suppose some problem arises. The seller gave you gawgews instead of gewgaws. Or you decided to keep the gewgaws but not sign the transaction to release the funds to the seller. In either case, the escrow is notified, and if it can sign with you to refund the funds back to you (if the seller was a scammer) or it can sign with the seller to forward the funds to the seller (if you were a scammer).
Taproot helps with this: like mentioned above, it allows multisignature setups to produce only one signature, reducing blockchain space usage, and thus making contracts --- which require multiple people, by definition, you don't make contracts with yourself --- is made cheaper (which we hope enables more of these setups to happen for more gains from trade for everyone, also, moon and lambos).
(technology-wise, it's easier to make an n-of-n than a k-of-n, making a k-of-n would require a complex setup involving a long ritual with many communication rounds between the n participants, but an n-of-n can be done trivially with some moon math. You can, however, make what is effectively a 2-of-3 by using a three-branch SCRIPT: either 2-of-2 of you and seller, OR 2-of-2 of you and escrow, OR 2-of-2 of escrow and seller. Fortunately, Taproot adds a facility to embed a SCRIPT inside a public key, so you can have a 2-of-2 Taprooted address (between you and seller) with a SCRIPT branch that can instead be spent with 2-of-2 (you + escrow) OR 2-of-2 (seller + escrow), which implements the three-branched SCRIPT above. If neither of you are scammers (hopefully the common case) then you both sign using your keys and never have to contact the escrow, since you are just using the escrow public key without coordinating with them (because n-of-n is trivial but k-of-n requires setup with communication rounds), so in the "best case" where both of you are honest traders, you also get a privacy boost, in that the escrow never learns you have been trading on gewgaws, I mean ewww, gawgews are much better than gewgaws and therefore I now judge you for being a gewgaw enthusiast, you filthy gewgawer).

Taproot and Your Contracts, Part 2: Cryptographic Boogaloo

Now suppose you want to buy some data instead of things. For example, maybe you have some closed-source software in trial mode installed, and want to pay the developer for the full version. You want to pay for an activation code.
This can be done, today, by using an HTLC. The developer tells you the hash of the activation code. You pay to an HTLC, paying out to the developer if it reveals the preimage (the activation code), or refunding the money back to you after a pre-agreed timeout. If the developer claims the funds, it has to reveal the preimage, which is the activation code, and you can now activate your software. If the developer does not claim the funds by the timeout, you get refunded.
And you can do that, with HTLCs, today.
Of course, HTLCs do have problems:
Fortunately, with Schnorr (which is enabled by Taproot), we can now use the Scriptless Script constuction by Andrew Poelstra. This Scriptless Script allows a new construction, the PTLC or Pointlocked Timelocked Contract. Instead of hashes and preimages, just replace "hash" with "point" and "preimage" with "scalar".
Or as you might know them: "point" is really "public key" and "scalar" is really a "private key". What a PTLC does is that, given a particular public key, the pointlocked branch can be spent only if the spender reveals the private key of the given public key to you.
Another nice thing with PTLCs is that they are deniable. What appears onchain is just a single 2-of-2 signature between you and the developemanufacturer. It's like a magic trick. This signature has no special watermarks, it's a perfectly normal signature (the pledge). However, from this signature, plus some datta given to you by the developemanufacturer (known as the adaptor signature) you can derive the private key of a particular public key you both agree on (the turn). Anyone scraping the blockchain will just see signatures that look just like every other signature, and as long as nobody manages to hack you and get a copy of the adaptor signature or the private key, they cannot get the private key behind the public key (point) that the pointlocked branch needs (the prestige).
(Just to be clear, the public key you are getting the private key from, is distinct from the public key that the developemanufacturer will use for its funds. The activation key is different from the developer's onchain Bitcoin key, and it is the activation key whose private key you will be learning, not the developer's/manufacturer's onchain Bitcoin key).
So:
Taproot lets PTLCs exist onchain because they enable Schnorr, which is a requirement of PTLCs / Scriptless Script.
(technology-wise, take note that Scriptless Script works only for the "pointlocked" branch of the contract; you need normal Script, or a pre-signed nLockTimed transaction, for the "timelocked" branch. Since Taproot can embed a script, you can have the Taproot pubkey be a 2-of-2 to implement the Scriptless Script "pointlocked" branch, then have a hidden script that lets you recover the funds with an OP_CHECKLOCKTIMEVERIFY after the timeout if the seller does not claim the funds.)

Quantum Quibbles!

Now if you were really paying attention, you might have noticed this parenthetical:
(technical details: a Taproot output is 1 version byte + 32 byte public key, while a P2WPKH (bech32 singlesig) output is 1 version byte + 20 byte public key hash...)
So wait, Taproot uses raw 32-byte public keys, and not public key hashes? Isn't that more quantum-vulnerable??
Well, in theory yes. In practice, they probably are not.
It's not that hashes can be broken by quantum computes --- they're still not. Instead, you have to look at how you spend from a P2WPKH/P2PKH pay-to-public-key-hash.
When you spend from a P2PKH / P2WPKH, you have to reveal the public key. Then Bitcoin hashes it and checks if this matches with the public-key-hash, and only then actually validates the signature for that public key.
So an unconfirmed transaction, floating in the mempools of nodes globally, will show, in plain sight for everyone to see, your public key.
(public keys should be public, that's why they're called public keys, LOL)
And if quantum computers are fast enough to be of concern, then they are probably fast enough that, in the several minutes to several hours from broadcast to confirmation, they have already cracked the public key that is openly broadcast with your transaction. The owner of the quantum computer can now replace your unconfirmed transaction with one that pays the funds to itself. Even if you did not opt-in RBF, miners are still incentivized to support RBF on RBF-disabled transactions.
So the extra hash is not as significant a protection against quantum computers as you might think. Instead, the extra hash-and-compare needed is just extra validation effort.
Further, if you have ever, in the past, spent from the address, then there exists already a transaction indelibly stored on the blockchain, openly displaying the public key from which quantum computers can derive the private key. So those are still vulnerable to quantum computers.
For the most part, the cryptographers behind Taproot (and Bitcoin Core) are of the opinion that quantum computers capable of cracking Bitcoin pubkeys are unlikely to appear within a decade or two.
So:
For now, the homomorphic and linear properties of elliptic curve cryptography provide a lot of benefits --- particularly the linearity property is what enables Scriptless Script and simple multisignature (i.e. multisignatures that are just 1 signature onchain). So it might be a good idea to take advantage of them now while we are still fairly safe against quantum computers. It seems likely that quantum-safe signature schemes are nonlinear (thus losing these advantages).

Summary

I Wanna Be The Taprooter!

So, do you want to help activate Taproot? Here's what you, mister sovereign Bitcoin HODLer, can do!

But I Hate Taproot!!

That's fine!

Discussions About Taproot Activation

submitted by almkglor to Bitcoin [link] [comments]

[ Bitcoin ] Technical: Taproot: Why Activate?

Topic originally posted in Bitcoin by almkglor [link]
This is a follow-up on https://old.reddit.com/Bitcoin/comments/hqzp14/technical_the_path_to_taproot_activation/
Taproot! Everybody wants it!! But... you might ask yourself: sure, everybody else wants it, but why would I, sovereign Bitcoin HODLer, want it? Surely I can be better than everybody else because I swapped XXX fiat for Bitcoin unlike all those nocoiners?
And it is important for you to know the reasons why you, o sovereign Bitcoiner, would want Taproot activated. After all, your nodes (or the nodes your wallets use, which if you are SPV, you hopefully can pester to your wallet vendoimplementor about) need to be upgraded in order for Taproot activation to actually succeed instead of becoming a hot sticky mess.
First, let's consider some principles of Bitcoin.
I'm sure most of us here would agree that the above are very important principles of Bitcoin and that these are principles we would not be willing to remove. If anything, we would want those principles strengthened (especially the last one, financial privacy, which current Bitcoin is only sporadically strong with: you can get privacy, it just requires effort to do so).
So, how does Taproot affect those principles?

Taproot and Your /Coins

Most HODLers probably HODL their coins in singlesig addresses. Sadly, switching to Taproot would do very little for you (it gives a mild discount at spend time, at the cost of a mild increase in fee at receive time (paid by whoever sends to you, so if it's a self-send from a P2PKH or bech32 address, you pay for this); mostly a wash).
(technical details: a Taproot output is 1 version byte + 32 byte public key, while a P2WPKH (bech32 singlesig) output is 1 version byte + 20 byte public key hash, so the Taproot output spends 12 bytes more; spending from a P2WPKH requires revealing a 32-byte public key later, which is not needed with Taproot, and Taproot signatures are about 9 bytes smaller than P2WPKH signatures, but the 32 bytes plus 9 bytes is divided by 4 because of the witness discount, so it saves about 11 bytes; mostly a wash, it increases blockweight by about 1 virtual byte, 4 weight for each Taproot-output-input, compared to P2WPKH-output-input).
However, as your HODLings grow in value, you might start wondering if multisignature k-of-n setups might be better for the security of your savings. And it is in multisignature that Taproot starts to give benefits!
Taproot switches to using Schnorr signing scheme. Schnorr makes key aggregation -- constructing a single public key from multiple public keys -- almost as trivial as adding numbers together. "Almost" because it involves some fairly advanced math instead of simple boring number adding, but hey when was the last time you added up your grocery list prices by hand huh?
With current P2SH and P2WSH multisignature schemes, if you have a 2-of-3 setup, then to spend, you need to provide two different signatures from two different public keys. With Taproot, you can create, using special moon math, a single public key that represents your 2-of-3 setup. Then you just put two of your devices together, have them communicate to each other (this can be done airgapped, in theory, by sending QR codes: the software to do this is not even being built yet, but that's because Taproot hasn't activated yet!), and they will make a single signature to authorize any spend from your 2-of-3 address. That's 73 witness bytes -- 18.25 virtual bytes -- of signatures you save!
And if you decide that your current setup with 1-of-1 P2PKH / P2WPKH addresses is just fine as-is: well, that's the whole point of a softfork: backwards-compatibility; you can receive from Taproot users just fine, and once your wallet is updated for Taproot-sending support, you can send to Taproot users just fine as well!
(P2WPKH and P2WSH -- SegWit v0 -- addresses start with bc1q; Taproot -- SegWit v1 --- addresses start with bc1p, in case you wanted to know the difference; in bech32 q is 0, p is 1)
Now how about HODLers who keep all, or some, of their coins on custodial services? Well, any custodial service worth its salt would be doing at least 2-of-3, or probably something even bigger, like 11-of-15. So your custodial service, if it switched to using Taproot internally, could save a lot more (imagine an 11-of-15 getting reduced from 11 signatures to just 1!), which --- we can only hope! --- should translate to lower fees and better customer service from your custodial service!
So I think we can say, very accurately, that the Bitcoin principle --- that YOU are in control of your money --- can only be helped by Taproot (if you are doing multisignature), and, because P2PKH and P2WPKH remain validly-usable addresses in a Taproot future, will not be harmed by Taproot. Its benefit to this principle might be small (it mostly only benefits multisignature users) but since it has no drawbacks with this (i.e. singlesig users can continue to use P2WPKH and P2PKH still) this is still a nice, tidy win!
(even singlesig users get a minor benefit, in that multisig users will now reduce their blockchain space footprint, so that fees can be kept low for everybody; so for example even if you have your single set of private keys engraved on titanium plates sealed in an airtight box stored in a safe buried in a desert protected by angry nomads riding giant sandworms because you're the frickin' Kwisatz Haderach, you still gain some benefit from Taproot)
And here's the important part: if P2PKH/P2WPKH is working perfectly fine with you and you decide to never use Taproot yourself, Taproot will not affect you detrimentally. First do no harm!

Taproot and Your Contracts

No one is an island, no one lives alone. Give and you shall receive. You know: by trading with other people, you can gain expertise in some obscure little necessity of the world (and greatly increase your productivity in that little field), and then trade the products of your expertise for necessities other people have created, all of you thereby gaining gains from trade.
So, contracts, which are basically enforceable agreements that facilitate trading with people who you do not personally know and therefore might not trust.
Let's start with a simple example. You want to buy some gewgaws from somebody. But you don't know them personally. The seller wants the money, you want their gewgaws, but because of the lack of trust (you don't know them!! what if they're scammers??) neither of you can benefit from gains from trade.
However, suppose both of you know of some entity that both of you trust. That entity can act as a trusted escrow. The entity provides you security: this enables the trade, allowing both of you to get gains from trade.
In Bitcoin-land, this can be implemented as a 2-of-3 multisignature. The three signatories in the multisgnature would be you, the gewgaw seller, and the escrow. You put the payment for the gewgaws into this 2-of-3 multisignature address.
Now, suppose it turns out neither of you are scammers (whaaaat!). You receive the gewgaws just fine and you're willing to pay up for them. Then you and the gewgaw seller just sign a transaction --- you and the gewgaw seller are 2, sufficient to trigger the 2-of-3 --- that spends from the 2-of-3 address to a singlesig the gewgaw seller wants (or whatever address the gewgaw seller wants).
But suppose some problem arises. The seller gave you gawgews instead of gewgaws. Or you decided to keep the gewgaws but not sign the transaction to release the funds to the seller. In either case, the escrow is notified, and if it can sign with you to refund the funds back to you (if the seller was a scammer) or it can sign with the seller to forward the funds to the seller (if you were a scammer).
Taproot helps with this: like mentioned above, it allows multisignature setups to produce only one signature, reducing blockchain space usage, and thus making contracts --- which require multiple people, by definition, you don't make contracts with yourself --- is made cheaper (which we hope enables more of these setups to happen for more gains from trade for everyone, also, moon and lambos).
(technology-wise, it's easier to make an n-of-n than a k-of-n, making a k-of-n would require a complex setup involving a long ritual with many communication rounds between the n participants, but an n-of-n can be done trivially with some moon math. You can, however, make what is effectively a 2-of-3 by using a three-branch SCRIPT: either 2-of-2 of you and seller, OR 2-of-2 of you and escrow, OR 2-of-2 of escrow and seller. Fortunately, Taproot adds a facility to embed a SCRIPT inside a public key, so you can have a 2-of-2 Taprooted address (between you and seller) with a SCRIPT branch that can instead be spent with 2-of-2 (you + escrow) OR 2-of-2 (seller + escrow), which implements the three-branched SCRIPT above. If neither of you are scammers (hopefully the common case) then you both sign using your keys and never have to contact the escrow, since you are just using the escrow public key without coordinating with them (because n-of-n is trivial but k-of-n requires setup with communication rounds), so in the "best case" where both of you are honest traders, you also get a privacy boost, in that the escrow never learns you have been trading on gewgaws, I mean ewww, gawgews are much better than gewgaws and therefore I now judge you for being a gewgaw enthusiast, you filthy gewgawer).

Taproot and Your Contracts, Part 2: Cryptographic Boogaloo

Now suppose you want to buy some data instead of things. For example, maybe you have some closed-source software in trial mode installed, and want to pay the developer for the full version. You want to pay for an activation code.
This can be done, today, by using an HTLC. The developer tells you the hash of the activation code. You pay to an HTLC, paying out to the developer if it reveals the preimage (the activation code), or refunding the money back to you after a pre-agreed timeout. If the developer claims the funds, it has to reveal the preimage, which is the activation code, and you can now activate your software. If the developer does not claim the funds by the timeout, you get refunded.
And you can do that, with HTLCs, today.
Of course, HTLCs do have problems:
Fortunately, with Schnorr (which is enabled by Taproot), we can now use the Scriptless Script constuction by Andrew Poelstra. This Scriptless Script allows a new construction, the PTLC or Pointlocked Timelocked Contract. Instead of hashes and preimages, just replace "hash" with "point" and "preimage" with "scalar".
Or as you might know them: "point" is really "public key" and "scalar" is really a "private key". What a PTLC does is that, given a particular public key, the pointlocked branch can be spent only if the spender reveals the private key of the given private key to you.
Another nice thing with PTLCs is that they are deniable. What appears onchain is just a single 2-of-2 signature between you and the developemanufacturer. It's like a magic trick. This signature has no special watermarks, it's a perfectly normal signature (the pledge). However, from this signature, plus some datta given to you by the developemanufacturer (known as the adaptor signature) you can derive the private key of a particular public key you both agree on (the turn). Anyone scraping the blockchain will just see signatures that look just like every other signature, and as long as nobody manages to hack you and get a copy of the adaptor signature or the private key, they cannot get the private key behind the public key (point) that the pointlocked branch needs (the prestige).
(Just to be clear, the public key you are getting the private key from, is distinct from the public key that the developemanufacturer will use for its funds. The activation key is different from the developer's onchain Bitcoin key, and it is the activation key whose private key you will be learning, not the developer's/manufacturer's onchain Bitcoin key).
So:
Taproot lets PTLCs exist onchain because they enable Schnorr, which is a requirement of PTLCs / Scriptless Script.
(technology-wise, take note that Scriptless Script works only for the "pointlocked" branch of the contract; you need normal Script, or a pre-signed nLockTimed transaction, for the "timelocked" branch. Since Taproot can embed a script, you can have the Taproot pubkey be a 2-of-2 to implement the Scriptless Script "pointlocked" branch, then have a hidden script that lets you recover the funds with an OP_CHECKLOCKTIMEVERIFY after the timeout if the seller does not claim the funds.)

Quantum Quibbles!

Now if you were really paying attention, you might have noticed this parenthetical:
(technical details: a Taproot output is 1 version byte + 32 byte public key, while a P2WPKH (bech32 singlesig) output is 1 version byte + 20 byte public key hash...)
So wait, Taproot uses raw 32-byte public keys, and not public key hashes? Isn't that more quantum-vulnerable??
Well, in theory yes. In practice, they probably are not.
It's not that hashes can be broken by quantum computes --- they're still not. Instead, you have to look at how you spend from a P2WPKH/P2PKH pay-to-public-key-hash.
When you spend from a P2PKH / P2WPKH, you have to reveal the public key. Then Bitcoin hashes it and checks if this matches with the public-key-hash, and only then actually validates the signature for that public key.
So an unconfirmed transaction, floating in the mempools of nodes globally, will show, in plain sight for everyone to see, your public key.
(public keys should be public, that's why they're called public keys, LOL)
And if quantum computers are fast enough to be of concern, then they are probably fast enough that, in the several minutes to several hours from broadcast to confirmation, they have already cracked the public key that is openly broadcast with your transaction. The owner of the quantum computer can now replace your unconfirmed transaction with one that pays the funds to itself. Even if you did not opt-in RBF, miners are still incentivized to support RBF on RBF-disabled transactions.
So the extra hash is not as significant a protection against quantum computers as you might think. Instead, the extra hash-and-compare needed is just extra validation effort.
Further, if you have ever, in the past, spent from the address, then there exists already a transaction indelibly stored on the blockchain, openly displaying the public key from which quantum computers can derive the private key. So those are still vulnerable to quantum computers.
For the most part, the cryptographers behind Taproot (and Bitcoin Core) are of the opinion that quantum computers capable of cracking Bitcoin pubkeys are unlikely to appear within a decade or two.
So:
For now, the homomorphic and linear properties of elliptic curve cryptography provide a lot of benefits --- particularly the linearity property is what enables Scriptless Script and simple multisignature (i.e. multisignatures that are just 1 signature onchain). So it might be a good idea to take advantage of them now while we are still fairly safe against quantum computers. It seems likely that quantum-safe signature schemes are nonlinear (thus losing these advantages).

Summary

I Wanna Be The Taprooter!

So, do you want to help activate Taproot? Here's what you, mister sovereign Bitcoin HODLer, can do!

But I Hate Taproot!!

That's fine!

Discussions About Taproot Activation

almkglor your post has been copied because one or more comments in this topic have been removed. This copy will preserve unmoderated topic. If you would like to opt-out, please send a message using [this link].
[deleted comment]
[deleted comment]
[deleted comment]
submitted by anticensor_bot to u/anticensor_bot [link] [comments]

04-29 13:24 - 'How do I speed up my transaction???? Ledger "seems" to not be aware of the need to include this option.' (self.Bitcoin) by /u/CaddarkCrypto removed from /r/Bitcoin within 428-438min

'''
I have a pending ether transaction, 27+ hours and counting. I am unable to use metamask because I sent through ledger live, and I guess that because it is pending, metamask is unaware of it. The only two things that recognize this transaction are ledger live and etherscan, which means it is actually within the network, and every other wallet than ledger still sees the amount that both accounts involved have the same amount that they did before I sent.
Some weird things:
  1. The sending account elsewhere shows as having never sent. This account also does show a log of the transaction as "sent" and it has a pending status.
  2. The receiving account on Ledger Live has the balance updated to what it would be once the transaction is sent, but there is no log of the transaction, neither sent or received, pending or otherwise, within the details of the account.
Ledger, I guess, doesn't ever bother to check on the efficacy of their support articles. This is already implied, given they have the thumbs up or down option that asks if the article solved the problem, but have no option available to tell them what the issue is, so even if they did check, they wouldn't have any practical feedback to fix the problem. I would imagine they put in the up or down option just to mitigate spamming their support reps with the same issue, by allowing users to feel like they've impacted the progression of improvement, but then I don't under stand why the total votes of each are shown, since right now that only serves to commemorate how incompetent they are with customer satisfaction. Their Article "Transaction Stays Unconfirmed" has 160 out of 518 voters giving a thumbs up, and that's better than average, at least for the articles from Ledger that I've read so far.
I guess they meant to use it at some point? I realize that the security of devices are where most of the company's money is probably going to, but how are they supposed to be able to properly do that when they don't give attention to feedback?!?!? How do you know what issues are critical and what aren't?
'''
How do I speed up my transaction???? Ledger "seems" to not be aware of the need to include this option.
Go1dfish undelete link
unreddit undelete link
Author: CaddarkCrypto
submitted by removalbot to removalbot [link] [comments]

Groestlcoin 6th Anniversary Release

Introduction

Dear Groestlers, it goes without saying that 2020 has been a difficult time for millions of people worldwide. The groestlcoin team would like to take this opportunity to wish everyone our best to everyone coping with the direct and indirect effects of COVID-19. Let it bring out the best in us all and show that collectively, we can conquer anything.
The centralised banks and our national governments are facing unprecedented times with interest rates worldwide dropping to record lows in places. Rest assured that this can only strengthen the fundamentals of all decentralised cryptocurrencies and the vision that was seeded with Satoshi's Bitcoin whitepaper over 10 years ago. Despite everything that has been thrown at us this year, the show must go on and the team will still progress and advance to continue the momentum that we have developed over the past 6 years.
In addition to this, we'd like to remind you all that this is Groestlcoin's 6th Birthday release! In terms of price there have been some crazy highs and lows over the years (with highs of around $2.60 and lows of $0.000077!), but in terms of value– Groestlcoin just keeps getting more valuable! In these uncertain times, one thing remains clear – Groestlcoin will keep going and keep innovating regardless. On with what has been worked on and completed over the past few months.

UPDATED - Groestlcoin Core 2.18.2

This is a major release of Groestlcoin Core with many protocol level improvements and code optimizations, featuring the technical equivalent of Bitcoin v0.18.2 but with Groestlcoin-specific patches. On a general level, most of what is new is a new 'Groestlcoin-wallet' tool which is now distributed alongside Groestlcoin Core's other executables.
NOTE: The 'Account' API has been removed from this version which was typically used in some tip bots. Please ensure you check the release notes from 2.17.2 for details on replacing this functionality.

How to Upgrade?

Windows
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer.
OSX
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), run the dmg and drag Groestlcoin Core to Applications.
Ubuntu
http://groestlcoin.org/forum/index.php?topic=441.0

Other Linux

http://groestlcoin.org/forum/index.php?topic=97.0

Download

Download the Windows Installer (64 bit) here
Download the Windows Installer (32 bit) here
Download the Windows binaries (64 bit) here
Download the Windows binaries (32 bit) here
Download the OSX Installer here
Download the OSX binaries here
Download the Linux binaries (64 bit) here
Download the Linux binaries (32 bit) here
Download the ARM Linux binaries (64 bit) here
Download the ARM Linux binaries (32 bit) here

Source

ALL NEW - Groestlcoin Moonshine iOS/Android Wallet

Built with React Native, Moonshine utilizes Electrum-GRS's JSON-RPC methods to interact with the Groestlcoin network.
GRS Moonshine's intended use is as a hot wallet. Meaning, your keys are only as safe as the device you install this wallet on. As with any hot wallet, please ensure that you keep only a small, responsible amount of Groestlcoin on it at any given time.

Features

Download

iOS
Android

Source

ALL NEW! – HODL GRS Android Wallet

HODL GRS connects directly to the Groestlcoin network using SPV mode and doesn't rely on servers that can be hacked or disabled.
HODL GRS utilizes AES hardware encryption, app sandboxing, and the latest security features to protect users from malware, browser security holes, and even physical theft. Private keys are stored only in the secure enclave of the user's phone, inaccessible to anyone other than the user.
Simplicity and ease-of-use is the core design principle of HODL GRS. A simple recovery phrase (which we call a Backup Recovery Key) is all that is needed to restore the user's wallet if they ever lose or replace their device. HODL GRS is deterministic, which means the user's balance and transaction history can be recovered just from the backup recovery key.

Features

Download

Main Release (Main Net)
Testnet Release

Source

ALL NEW! – GroestlcoinSeed Savior

Groestlcoin Seed Savior is a tool for recovering BIP39 seed phrases.
This tool is meant to help users with recovering a slightly incorrect Groestlcoin mnemonic phrase (AKA backup or seed). You can enter an existing BIP39 mnemonic and get derived addresses in various formats.
To find out if one of the suggested addresses is the right one, you can click on the suggested address to check the address' transaction history on a block explorer.

Features

Live Version (Not Recommended)

https://www.groestlcoin.org/recovery/

Download

https://github.com/Groestlcoin/mnemonic-recovery/archive/master.zip

Source

ALL NEW! – Vanity Search Vanity Address Generator

NOTE: NVidia GPU or any CPU only. AMD graphics cards will not work with this address generator.
VanitySearch is a command-line Segwit-capable vanity Groestlcoin address generator. Add unique flair when you tell people to send Groestlcoin. Alternatively, VanitySearch can be used to generate random addresses offline.
If you're tired of the random, cryptic addresses generated by regular groestlcoin clients, then VanitySearch is the right choice for you to create a more personalized address.
VanitySearch is a groestlcoin address prefix finder. If you want to generate safe private keys, use the -s option to enter your passphrase which will be used for generating a base key as for BIP38 standard (VanitySearch.exe -s "My PassPhrase" FXPref). You can also use VanitySearch.exe -ps "My PassPhrase" which will add a crypto secure seed to your passphrase.
VanitySearch may not compute a good grid size for your GPU, so try different values using -g option in order to get the best performances. If you want to use GPUs and CPUs together, you may have best performances by keeping one CPU core for handling GPU(s)/CPU exchanges (use -t option to set the number of CPU threads).

Features

Usage

https://github.com/Groestlcoin/VanitySearch#usage

Download

Source

ALL NEW! – Groestlcoin EasyVanity 2020

Groestlcoin EasyVanity 2020 is a windows app built from the ground-up and makes it easier than ever before to create your very own bespoke bech32 address(es) when whilst not connected to the internet.
If you're tired of the random, cryptic bech32 addresses generated by regular Groestlcoin clients, then Groestlcoin EasyVanity2020 is the right choice for you to create a more personalised bech32 address. This 2020 version uses the new VanitySearch to generate not only legacy addresses (F prefix) but also Bech32 addresses (grs1 prefix).

Features

Download

Source

Remastered! – Groestlcoin WPF Desktop Wallet (v2.19.0.18)

Groestlcoin WPF is an alternative full node client with optional lightweight 'thin-client' mode based on WPF. Windows Presentation Foundation (WPF) is one of Microsoft's latest approaches to a GUI framework, used with the .NET framework. Its main advantages over the original Groestlcoin client include support for exporting blockchain.dat and including a lite wallet mode.
This wallet was previously deprecated but has been brought back to life with modern standards.

Features

Remastered Improvements

Download

Source

ALL NEW! – BIP39 Key Tool

Groestlcoin BIP39 Key Tool is a GUI interface for generating Groestlcoin public and private keys. It is a standalone tool which can be used offline.

Features

Download

Windows
Linux :
 pip3 install -r requirements.txt python3 bip39\_gui.py 

Source

ALL NEW! – Electrum Personal Server

Groestlcoin Electrum Personal Server aims to make using Electrum Groestlcoin wallet more secure and more private. It makes it easy to connect your Electrum-GRS wallet to your own full node.
It is an implementation of the Electrum-grs server protocol which fulfils the specific need of using the Electrum-grs wallet backed by a full node, but without the heavyweight server backend, for a single user. It allows the user to benefit from all Groestlcoin Core's resource-saving features like pruning, blocks only and disabled txindex. All Electrum-GRS's feature-richness like hardware wallet integration, multi-signature wallets, offline signing, seed recovery phrases, coin control and so on can still be used, but connected only to the user's own full node.
Full node wallets are important in Groestlcoin because they are a big part of what makes the system be trust-less. No longer do people have to trust a financial institution like a bank or PayPal, they can run software on their own computers. If Groestlcoin is digital gold, then a full node wallet is your own personal goldsmith who checks for you that received payments are genuine.
Full node wallets are also important for privacy. Using Electrum-GRS under default configuration requires it to send (hashes of) all your Groestlcoin addresses to some server. That server can then easily spy on your transactions. Full node wallets like Groestlcoin Electrum Personal Server would download the entire blockchain and scan it for the user's own addresses, and therefore don't reveal to anyone else which Groestlcoin addresses they are interested in.
Groestlcoin Electrum Personal Server can also broadcast transactions through Tor which improves privacy by resisting traffic analysis for broadcasted transactions which can link the IP address of the user to the transaction. If enabled this would happen transparently whenever the user simply clicks "Send" on a transaction in Electrum-grs wallet.
Note: Currently Groestlcoin Electrum Personal Server can only accept one connection at a time.

Features

Download

Windows
Linux / OSX (Instructions)

Source

UPDATED – Android Wallet 7.38.1 - Main Net + Test Net

The app allows you to send and receive Groestlcoin on your device using QR codes and URI links.
When using this app, please back up your wallet and email them to yourself! This will save your wallet in a password protected file. Then your coins can be retrieved even if you lose your phone.

Changes

Download

Main Net
Main Net (FDroid)
Test Net

Source

UPDATED – Groestlcoin Sentinel 3.5.06 (Android)

Groestlcoin Sentinel is a great solution for anyone who wants the convenience and utility of a hot wallet for receiving payments directly into their cold storage (or hardware wallets).
Sentinel accepts XPUB's, YPUB'S, ZPUB's and individual Groestlcoin address. Once added you will be able to view balances, view transactions, and (in the case of XPUB's, YPUB's and ZPUB's) deterministically generate addresses for that wallet.
Groestlcoin Sentinel is a fork of Groestlcoin Samourai Wallet with all spending and transaction building code removed.

Changes

Download

Source

UPDATED – P2Pool Test Net

Changes

Download

Pre-Hosted Testnet P2Pool is available via http://testp2pool.groestlcoin.org:21330/static/

Source

submitted by Yokomoko_Saleen to groestlcoin [link] [comments]

Sent bitcoins to Wasabi Wallet, did a coinjoin and computer shutdown unexpectedly before they were confirmed now they are gone...

Hello, I downloaded wasabi wallet in TAILS distro yestedray, created an address and saved the seed words. Afterwards I sent some bitcoin and did a coinjoin when suddently the computer shutdown in the process...
When I restarted and imported the seed words I found out my wasabi wallet was empty. Restored the wallet with seed words in Electrum and there was an unconfirmed output transaction so I thought the coins would appear when it's confirmed but now transaction is confirmed and wallet empty....
This is output transaction ID I can find in Electrum: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
In Wasabi backend is connected with 8 peers but no trace I ever had bitcoins there...
Could you please help? I'm desperate... let me know if I should post any logs... :'(
Thanks in advance for any help you could provide.
submitted by kasikedaking to WasabiWallet [link] [comments]

The most useful links I have found over the past few years to track Bitcoin's fundamentals as well as technicals.

= FUNDAMENTALS =
= TECHNICALS =
= Other Useful Links =
submitted by Oskar_Koch to BitcoinMarkets [link] [comments]

I keep reading people say bitcoin development is stalled

But in practice there's more going on right now than there's ever been in the last few years. You just have to look in the right places. Here's a few days of documented github activity from the bitcoin slack and I've a feeling there are hundreds more people working on Bitcoin projects outside of the work being done by core:
github BOT [6:28 PM] [bitcoin:master] 2 new commits by Daniel Kraft and 1 other: f93c2a1 net: Avoid duplicate getheaders requests. - Daniel Kraft 8e8bebc Merge #8054: net: Avoid duplicate getheaders requests. - Wladimir J. van der Laan
[6:28] [bitcoin/bitcoin] Pull request closed: #8054 net: Avoid duplicate getheaders requests. by laanwj
[6:31] [bitcoin:master] 6 new commits by Pieter Wuille and 1 other: d253ec4 Make ProcessNewBlock dbp const and update comment - Pieter Wuille 316623f Switch reindexing to AcceptBlock in-loop and ActivateBestChain afterwards - Pieter Wuille fb8fad1 Optimize ActivateBestChain for long chains - Pieter Wuille d3d7547 Add -reindex-chainstate that does not rebuild block index - Pieter Wuille b4d24e1 Report reindexing progress in GUI - Pieter Wuille Show more...
[6:31] [bitcoin/bitcoin] Pull request closed: #7917 Optimize reindex by laanwj
Joshua Unseth [9:55 PM] joined #commit-activity. Also, @sjors joined and left.
----- May 19th -----
github BOT [12:08 AM] [bitcoin/bitcoin] Pull request submitted by EthanHeilman

8070 Remove non-determinism which is breaking net_tests #8069

If addrmanUncorrupted does not have the same nKey every time it will map addrs to different bucket positions and occasionally cause a collision between two addrs, breaking the test.
github BOT [1:00 AM] [bitcoin/bitcoin] Pull request closed: #7716 [0.11] Backport BIP9 and softfork for BIP's 68,112,113 by morcos
Eragmus You Should Probably Stop Modding [1:12 AM] joined #commit-activity. Also, @buttmunch joined, @icandothisallday joined, @misnomer joined, @coreneedstostop joined, @xchins joined, @jbeener joined, @jbleeks joined, @whalepanda joined, @grinny joined, @alex_may joined, @mr_e joined.
github BOT [2:46 PM] [bitcoin:master] 5 new commits by Warren Togami and 1 other: 00678bd Make failures to connect via Socks5() more informative and less unnecessarily scary. - Warren Togami 0d9af79 SOCKS5 connecting and connected messages with -debug=net. - Warren Togami 94fd1d8 Make Socks5() InterruptibleRecv() timeout/failures informative. - Warren Togami bf9266e Use Socks5ErrorString() to decode error responses from socks proxy. - Warren Togami 18436d8 Merge #8033: Fix Socks5() connect failures to be less noisy and less unnecessarily scary - Wladimir J. Show more...
[2:46] [bitcoin/bitcoin] Pull request closed: #8033 Fix Socks5() connect failures to be less noisy and less unnecessarily scary by laanwj
github BOT [3:56 PM] [bitcoin:master] 3 new commits by EthanHeilman and 2 others: f4119c6 Remove non-determinism which is breaking net_tests #8069 - EthanHeilman 2a8b358 Fix typo adddrman to addrman as requested in #8070 - Ethan Heilman 7771aa5 Merge #8070: Remove non-determinism which is breaking net_tests #8069 - Wladimir J. van der Laan
[3:56] [bitcoin/bitcoin] Pull request closed: #8070 Remove non-determinism which is breaking net_tests #8069 by laanwj
github BOT [5:18 PM] [bitcoin/bitcoin] Pull request submitted by MarcoFalke

8072 travis: 'make check' in parallel and verbose

• 'make check' in parallel, since the log will take care of clean output • 'make check' verbose, so that test failure causes aren't hidden
Fixes: #8071
github BOT [7:56 PM] [bitcoin/bitcoin] Pull request submitted by rat4

8073 qt: askpassphrasedialog: Clear pass fields on accept

This is usability improvement in a case if user gets re-asked passphrase. (e.g. made a typo)
Victor Broman [8:01 PM] joined #commit-activity. Also, @bb joined, @ziiip joined.
----- May 20th -----
github BOT [12:34 PM] [bitcoin/bitcoin] Pull request submitted by jsantos4you

8075 0.12

debug.data.txt
[12:37] [bitcoin/bitcoin] Pull request closed: #8075 0.12 by sipa
github BOT [3:37 PM] [bitcoin/bitcoin] Pull request closed: #7082 Do not absolutely protect local peers and make eviction more aggressive. by gmaxwell
github BOT [3:44 PM] [bitcoin:master] 2 new commits by Cory Fields and 1 other: 401ae65 travis: 'make check' in parallel and verbose - Cory Fields 1b87e5b Merge #8072: travis: 'make check' in parallel and verbose - MarcoFalke
[3:44] [bitcoin/bitcoin] Pull request closed: #8072 travis: 'make check' in parallel and verbose by MarcoFalke
github BOT [3:58 PM] [bitcoin/bitcoin] Pull request closed: #7093 Address mempool information leak and resource wasting attacks. by gmaxwell
github BOT [6:11 PM] [bitcoin/bitcoin] Pull request submitted by sdaftuar

8076 VerifyDB: don't check blocks that have been pruned

If a pruning node ends up in a state where it has very few blocks on disk, then a node could fail to start up in VerifyDB. This pull changes the behavior for pruning nodes, so that we will just not bother trying to check blocks that have been pruned.
I don't expect this edge case to be triggered much in practice currently; this is a preparatory commit for segwit (to deal with the case of pruning nodes that upgrade after segwit activation).
@sipa
Erik Hedman [6:20 PM] joined #commit-activity
github BOT [8:46 PM] [bitcoin/bitcoin] Pull request submitted by jtimon

8077 Consensus: Decouple from chainparams.o and timedata.o

Do it for the consensus-critical functions:
• CheckBlockHeader • CheckBlock • ContextualCheckBlockHeader Show more...
github BOT [9:26 PM] [bitcoin:master] 3 new commits by MarcoFalke: fac9349 [qa] Remove hardcoded "4 nodes" from test_framework - MarcoFalke fad68f7 [qa] Reduce node count for some tests - MarcoFalke 8844ef1 Merge #8056: [qa] Remove hardcoded "4 nodes" from test_framework - MarcoFalke
[9:27] [bitcoin/bitcoin] Pull request closed: #8056 [qa] Remove hardcoded "4 nodes" from test_framework by MarcoFalke
github BOT [9:48 PM] [bitcoin/bitcoin] Pull request submitted by petertodd

8078 Disable the mempool P2P command when bloom filters disabled

Only useful to SPV peers, and attackers... like bloom is a DoS vector as far more data is sent than received.
null radix [10:15 PM] joined #commit-activity
github BOT [11:34 PM] [bitcoin:master] 2 new commits by MarcoFalke: fab5233 [qa] test_framework: Set wait-timeout for bitcoind procs - MarcoFalke 37f9a1f Merge #8047: [qa] test_framework: Set wait-timeout for bitcoind procs - MarcoFalke
[11:34] [bitcoin/bitcoin] Pull request closed: #8047 [qa] test_framework: Set wait-timeout for bitcoind procs by MarcoFalke
github BOT [11:48 PM] [bitcoin/bitcoin] Pull request closed: #7826 [Qt] show conflicts of unconfirmed transactions in the UI by jonasschnelli
[11:50] [bitcoin/bitcoin] Pull request re-opened: #7826 [Qt] show conflicts of unconfirmed transactions in the UI by jonasschnelli
----- May 21st ----- Rentaro Matsukata [1:56 AM] joined #commit-activity. Also, @evilone joined, @cryptop joined, @thomas5 joined.
github BOT [1:54 PM] [bitcoin/bitcoin] Pull request submitted by gmaxwell

8080 Do not use mempool for GETDATA for tx accepted after the last mempool req.

The ability to GETDATA a transaction which has not (yet) been relayed is a privacy loss vector.
The use of the mempool for this was added as part of the mempool p2p message and is only needed to fetch transactions returned by it.
github BOT [5:48 PM] [bitcoin/bitcoin] Pull request submitted by gmaxwell

8082 Defer inserting into maprelay until just before relaying.

Also extend the relaypool lifetime by 1 minute (6%) to 16 minutes.
This reduces the rate of not founds by better matching the far end expectations, it also improves privacy by removing the ability to use getdata to probe for a node having a txn before Show more...
Sergey Ukustov [9:17 PM] joined #commit-activity. Also, @stoicism joined.
----- Yesterday May 22nd, 2016 -----
github BOT [5:59 AM] [bitcoin/bitcoin] Pull request submitted by jonasschnelli

8083 Add support for dnsseeds with option to filter by servicebits

Opposite part of https://github.com/sipa/bitcoin-seedepull/36. Including new testnet seed that supports filtering.
Required for SW #7910.
Junseth Sock Puppet Account [6:13 AM] joined #commit-activity
github BOT [1:59 PM] [bitcoin/bitcoin] Pull request submitted by gmaxwell

8084 Add recently accepted blocks and txn to AttemptToEvictConnection.

This protect any not-already-protected peers who were the most recent to relay transactions and blocks to us.
This also takes increases the eviction agressiveness by making it willing to disconnect a netgroup with only one member.
github BOT [5:04 PM] [bitcoin/bitcoin] Pull request submitted by theuni

8085 p2p: Begin encapsulation

This work creates CConnman. The idea is to begin moving data structures and functionality out of globals in net.h and into an instanced class, in order to avoid side-effects in networking code. Eventually, an (internal) api begins to emerge, and as long as the conditions of that api are met, the inner-workings may be a black box.
For now (for ease), a single global CConnman is created. Down the road, the instance could be passed around instead. Also, CConnman should be moved out of net.h/net.cpp, Show more...
github BOT [5:14 PM] [bitcoin/bitcoin] Pull request submitted by sipa

8086 Use SipHash for node eviction

github BOT [5:50 PM] [bitcoin/bitcoin] Pull request closed: #6844 [REST] Add send raw transaction by lclc
----- Today May 23rd, 2016 ----- yannie888 [5:21 AM] joined #commit-activity. Also, @myco joined, @er_sham joined, @ethdealer joined.
github BOT [3:23 PM] [bitcoin/bitcoin] Pull request submitted by pstratem

8087 Introduce CBlockchain and move CheckBlockHeader

[3:23] [bitcoin/bitcoin] Pull request submitted by pstratem

8088 Avoid recalculating vchKeyedNetGroup in eviction logic.

Lazy calculate vchKeyedNetGroup in CNode::GetKeyedNetGroup.
submitted by BillyHodson to Bitcoin [link] [comments]

Creating a Headless Staking Node on Ubuntu 18.04

Creating a Headless Staking Node on Ubuntu 18.04
##UPDATE## Step 8 - Option 2, has some bugs in the final build process. i haven't had time to work them out yet!

This guide will take you through building and running a headless x42 Full Node! The OS I am using here is Ubuntu 18.04, this guide picks up from a complete/fresh ubuntu install.
This is meant to setup a staking node and so this guide will run you through building, configuring and setting up staking. It will not cover sending transactions or anything else.
The things we are going to do:
  • Step 1 - Install .net core
  • Step 2 - Download The x42 Node Source & Compile It
  • Step 3 - Setting The x42 Node Up To Run On Boot
  • Step 4 - Setup A New Wallet
  • Step 5 - Configure The x42 Daemon
  • Step 6 - Get Address
  • Step 7 - Check Balance
  • Step 8 - Connect The UI Wallet To A Headless Node
  • Step 8 - [Option 1 - Use Installer] Connect The UI Wallet To A Headless Node
  • Step 8 - [Option 2 - Build/Compile UI Only] Connect The UI Wallet To A Headless Node # BROKEN#

Step 1 - Install .net Core

Here is the reference link:
https://dotnet.microsoft.com/download/linux-package-manageubuntu18-04/sdk-current
Register Microsoft Key’s & Install Their repos:
cd /tmp wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo add-apt-repository universe sudo apt -y install apt-transport-https sudo apt update sudo apt -y install dotnet-sdk-2.2 
Microsoft collect telemetry data by default, if you are part of the “tin foil hat brigade” you can set the following environment variable to turn it off:
echo "DOTNET_CLI_TELEMETRY_OPTOUT=1" >> /etc/environment 
now you should be at a point where .net core is installed on your system… that wasn’t so hard was it! You can check by running the following command:
dotnet--list-sdks 
The output should look like this:
$ dotnet --list-sdks 2.2.103 [/usshare/dotnet/sdk] 

Step 2 - Download & Compile The x42 Node

This part assumes you have GIT installed, if not:
apt -y install git 
Now to pull down the source and compile it!
cd ~/ git clone https://github.com/x42protocol/X42-FullNode.git # “cd” into the source folder cd X42-FullNode/src/ 
Now .net core uses NuGet for package management, before we compile, we need to pull down all of the required packages.. its as simple as running (this will take a couple of minutes) inside of “X42-FullNode/src/”:
dotnet restore 
now we are ready to compile the source, execute (inside of “X42-FullNode/src/”):
dotnet build --configuration Release 
ignore the yellow warnings, this is just the rosyln compiler having a grumble.. if you get red ones then something went wrong! The “--configuration Release” will strip out all debug symbols and slim things down.. only a little, this optional parameter is not mandatory.
Once this is done everything is built/compiled, you can run the daemon directly from the repository, this can be done by going to:
cd ~/X42-FullNode/src/x42.x42D/bin/Release/netcoreapp2.1 dotnet x42.x42D.dll 
this will kick off the node, however if you exit SSH at this time it will kill the process! however I always recommend copying out the binaries to a separate folder. This can be done with the following:
mkdir ~/x42node mv ~/X42-FullNode/src/x42.x42D/bin/Release/netcoreapp2.1/*.* ~/x42node/ 
now we have everything we need to run the node outside the git repository! What we need to do now is run the node and have it create the default x42.conf file.. so
cd ~/x42node dotnet x42.x42D.dll 
feel free to hit “CTRL + C” to exit the application after a couple of seconds, by then the folders/files would have been created at the following path:
~/.x42node/x42/x42Main/ 

Step 3 - Setting The x42 Node Up To Run on Boot

Now we are going to create a service file so our x42 node automatically starts when the system is rebooted.
THINGS TO NOTE ABOUT BELOW.. CHANGE THE ##USER## to the username your currently using as these files are within your home directory!
We need to drop to root for this..
sudo -i cat < /etc/systemd/system/x42node.service [Unit] Description=x42 Node [Service] WorkingDirectory=/home/##USER##/x42node ExecStart=/usbin/dotnet /home/##USER##/x42node/x42.x42D.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 SyslogIdentifier=x42node User=##USER## Environment=ASPNETCORE_ENVIRONMENT=Development [Install] WantedBy=multi-user.target EOF 
To enable the service, run the following (as the root user):
systemctl enable x42node.service 
BOOM.. the node isn’t running yet.. but next time the system restarts it will automatically run!
now lets exit out of root!
exit 
We can now start the node up and begin downloading blocks, by running the following command:
sudo systemctl start x42node.service 
if you want to check its loaded and see some of the output, you can run:
sudo systemctl status x42node.service 
an example of the output:
$ sudo systemctl status x42node.service ● x42node.service - x42 Node Loaded: loaded (/etc/systemd/system/x42node.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-01-24 15:47:55 UTC; 14s ago Main PID: 5456 (dotnet) Tasks: 23 (limit: 1112) CGroup: /system.slice/x42node.service └─5456 /usbin/dotnet /home/darthnoodle/x42node/x42.x42D.dll Jan 24 15:48:09 x42staking x42node[5456]: Batch Size: 0 Mb (0 headers) Jan 24 15:48:09 x42staking x42node[5456]: Cache Size: 0/50 MB Jan 24 15:48:09 x42staking x42node[5456]: Jan 24 15:48:09 x42staking x42node[5456]: =======Mempool======= Jan 24 15:48:09 x42staking x42node[5456]: MempoolSize: 0 DynamicSize: 0 kb OrphanSize: 0 Jan 24 15:48:09 x42staking x42node[5456]: Jan 24 15:48:09 x42staking x42node[5456]: info: Stratis.Bitcoin.Connection.ConnectionManagerBehavior[0] Jan 24 15:48:09 x42staking x42node[5456]: Peer '[::ffff:86.184.76.255]:52342' connected (outbound), agent 'x42:1.2.13 (70012)', height 213920 Jan 24 15:48:09 x42staking x42node[5456]: info: Stratis.Bitcoin.Connection.ConnectionManagerBehavior[0] Jan 24 15:48:09 x42staking x42node[5456]: Peer '[::ffff:86.184.76.255]:52342' offline, reason: 'Receiving cancelled.'. All node screen output can be found in the /valog/syslog file. 

Step 4 - Setup a New Wallet

With the Node running, we now need to setup and/or restore a wallet!
Everything will be performed through the API’s, however by default these API’s are listening on localhost (127.0.0.1), if you are connecting in remotely then this would be a problem since you cant hit that IP. The solution, SSH TUNNEL!
Execute the following command on your local system:
ssh -L 42220:localhost:42220 @ 
This binds the local port (on your system) with 127.0.0.1:42220 on the remote system, once you have executed the command you can type the following address in your laptop/desktop’s web browser and be able to access the API’s:
http://127.0.0.1:42220/swaggeindex.html 
It should look something like this:
https://preview.redd.it/9lzeg3vob8d21.jpg?width=482&format=pjpg&auto=webp&s=b5d574998816056140d5d6de7b03c56772a892fe
To Create a new wallet, first we have to generate some mnemonic works (e.g. the seed), you can do that by going to the following API:
/api/Wallet/mnemonic 
Hit the “Try it out” button which then prompts you for 2 fields:
https://preview.redd.it/dvbdllfrb8d21.jpg?width=722&format=pjpg&auto=webp&s=766d14bafba6facbcd56d31c63c0012748e682e5
Enter “English” and I would recommend 24 words as this greatly increases the seed strength! Once that is done you hit execute and then scroll down to see the “Response Body”, this should contain the mnemonic which you are going to use to create the wallet! This looks something like below:
https://preview.redd.it/6p4q0rsub8d21.jpg?width=603&format=pjpg&auto=webp&s=44b9265626467a43ca670b134c4d28187f475c2e
THIS IS VERY IMPORTANT, BACKUP THIS MNEMONIC TO A SAFE SECURE LOCATION THAT IS ENCRYPTED!!!
So now we have our mnemonic, its time to generate the wallet, for this we need to use the API:
/api/Wallet/create
There are a number of parameters which are required in order to create a wallet:
WalletCreationRequest{ mnemonic string password* string passphrase* string name* string } 
It should be noted that the password and mnemonic are is the most important parts of this request where the “password” will encrypt the wallet and Is required to unlock it.
  • Hit the “Try it out” button
  • input the necessary data
  • Insert the mnemonic
  • Put a password & passphrase
  • “Name” is what your wallet will be called
It should look something like the following:
https://preview.redd.it/958ttfbxb8d21.jpg?width=603&format=pjpg&auto=webp&s=ce48336436ea4b469b5e87513da802de0bf444ee
Hit “Execute”, the “Loading” sign may spin for a few minutes while the wallet is created… once the wallet has been created the “Response Body” will return the mnemonic you have just used.. we now have a wallet!!
HOWEVER IT IS NOT LOADED INTO THE NODE JUST YET!
This is where we will now jump back out and to configure the node to automatically load the wallet and automatically start staking when it first loads.
AGAIN BACKUP YOUR MNEMONIC AND PASSWORD, MAKE SURE THEY ARE ENCRYPTED AND STORED SOMEWHERE SAFE!

Step 5 - Configure The x42 Daemon

Now we are going to modify the x42.conf file in order to automatically load our wallet and start staking 😊
First things first, lets stop our node by running the following command:
sudo systemctl stop x42node.service 
CD to the following folder and view its contents:
~/.x42node/x42/x42Main ls -lah 
within that folder there should be 2 files you are interested in:
-rw-r--r-- 1 darthnoodle darthnoodle 18K Jan 28 16:01 TestWallet.wallet.json -rw-rw-r-- 1 darthnoodle darthnoodle 3.1K Jan 24 15:25 x42.conf 
So TestWallet.wallet.json is our physical wallet that will be loaded, but for right now we want to modify the x42.conf file.. fire up your favourite text editor (if you use VI you’re a masochist)..
nano x42.conf 
The area we are interested in is the following:
####Miner Settings#### #Enable POW mining. #mine=0 #Enable POS. #stake=0 #The address to use for mining (empty string to select an address from the wallet). #mineaddress= #The wallet name to use when staking. #walletname= #Password to unlock the wallet. #walletpassword= #Maximum block size (in bytes) for the miner to generate. #blockmaxsize=1000000 #Maximum block weight (in weight units) for the miner to generate. #blockmaxweight=1000000 #Enable splitting coins when staking. #enablecoinstakesplitting=1 #Minimum size of the coins considered for staking, in satoshis. #minimumstakingcoinvalue=10000000 #Targeted minimum value of staking coins after splitting, in satoshis. #minimumsplitcoinvalue=10000000000 
Uncomment (remove the #) of the following lines and change their value:
stake=1 (changed to 1) walletname=TestWallet (changed to our Wallet Name) walletpassword=password123 (changed to the wallet password) 
save the file and exit back to the command prompt, now we shall restart the node with the following command:
sudo systemctl status x42node.service 
now the wallet is automatically loaded and ready for action!
YES I KNOW YOU HAVE PUT YOUR PASSWORD IN CLEARTEXT, THIS IS WHERE YOU SHOULD HARDEN YOUR BOX. IF THEY CAN GET TO THE POINT WHERE THEY CAN READ YOUR CONF FILE THEY CAN JUST GRAB YOUR WALLET AND BRUTEFORCE THE PASSWORD.
You can check its loaded by going back to the API and executing the following command:
/Dashboard 
Or execute the following command on the NODE:
curl -X GET "http://127.0.0.1:42220/Dashboard" -H "accept: application/json" 
both will produce the same output, if you scroll to the bottom you should see something like this:
======Wallets====== TestWallet/account 0, Confirmed balance: 0.00000000 Unconfirmed balance: 0.00000000 
This means the wallet is loaded and ready for action!!

Step 6 - Get Addresses

Next thing you are probably going to want is a receive address and to check the balance and TX history.. so lets start with getting an address!
Go to the following API:
/api/Wallet/unusedaddress 
Fill in the Wallet name which is “TestWallet” (in this example) and “account 0” (which is the first/default account):
https://preview.redd.it/ayri5jk0c8d21.jpg?width=602&format=pjpg&auto=webp&s=2d16bbb78da49c0125d24d0834c9454d702cb7a1
Hit execute and you should have an x42 address within the “Response Body”:

https://preview.redd.it/tmc495j3c8d21.jpg?width=349&format=pjpg&auto=webp&s=b00177f66a9e24c980d3c6d4e532a33cbf3fb0bc
BOOM… ok now we can receive funds! 😊

Step 7 - Check TX History

Go to the API and the following call:
/api/Wallet/history 
The 2 fields we are most concerned about are:
https://preview.redd.it/lw194af6c8d21.jpg?width=602&format=pjpg&auto=webp&s=27e264bc008879355ff5b9c50a0a5cb06f16e960
Input the name of the wallet and account you want to view the history of, then hit execute. The other fields can be black. This will return a list of TX’s that the wallet has received:
This should look like the following:
https://preview.redd.it/x1hgargac8d21.jpg?width=585&format=pjpg&auto=webp&s=4fd25f22772f4bcec523a6e82b321ae8146a2c75
There is an easier way of doing this, that doesn’t require you to be connected to your node.. especially if your only interested in viewing your staking rewards… THE EXPLORER!
Access the following URL:
https://explorer.x42.tech/address/ 
this will allow you to easily see all TX’s associated with this address, it should look something like below:
https://preview.redd.it/e480grscc8d21.jpg?width=601&format=pjpg&auto=webp&s=0f8a9ebc7944dfcc73f7df659bd839bb983ba90c
… and your done! By this point your node should be running, staking and you have an easy way to view transactions/rewards 😊


Step 8 - Connect The UI Wallet To A Headless Node

The UI utilises a combination of technologies, however the important part is the code attempts to access the x42 Node API on 127.0.0.1:42220.
So you have 2 options here:
  1. Download the Wallet Installers
  2. Compile The UI Yourselves
Pick the option that best suits you given the pros/cons below:
Option 1 - Pro's/Cons
Pro's
  • If you use the installer, its quick and easy.
Cons
  • This also installs an x42 node on your system which runs when the UI loads.
  • If you dont setup an SSH tunnel before running the wallet the local node will bind to the port and the tunnel wont work.. you will be connecting to the local wallet!!
Option 2 - Pro's/Cons
Pro's
  • You only run the UI, the x42 node is not installed
  • you dont have a superfluous node running, downloading blocks on your local system
Cons
  • Time Consuming
  • Have to download dependencies and manually compile the code

Pre-Requirement - Needed For Both Options!!
As previously mentioned, the UI attempts to access the API's on 127.0.0.1:42220, however our node isnt running on our local system. IN ORDER TO GET IT WORKING YOU NEED TO HAVE AN SSH TUNNEL, THIS TUNNEL NEEDS TO REMAIN ACTIVE WHENEVER YOU WANT TO ACCESS THE WALLET.
this can be done by executing the following command:
ssh -L 42220:localhost:42220 @ 


Step 8 - [Option 1 - Use Installer] Connect The UI Wallet To A Headless Node

Download and install the UI/Wallet & Node from:
https://github.com/x42protocol/X42-FullNode-UI/releases

DO NOT RUN THE WALLET YET!
Those of us who dont want to run a local node and just want the UI, execute the following commands (as an administrator):
cd C:\Program Files\x42 Core\resources\daemon\ ren x42.x42D.exe x42.x42D.exe.bak 
The above is with Windows, if your are in *NIX then locate the daemon and rename it (i will update how to do that/where to find it shortly)
Setup the SSH tunnel as outlined above, Execute the wallet and it will load, however you will see an exception:

https://preview.redd.it/9os5h8q7scd21.jpg?width=550&format=pjpg&auto=webp&s=ac45ed7bc987917142075c61fb486e7d71f820d1
dont worry, this is just the wallet trying to execute/start the x42 node which we dont want, if all works according to plan.. after you click "OK" you should now be presented with the wallet UI and have the option to select what wallet you would like to load:

https://preview.redd.it/hnyt0b4mscd21.jpg?width=958&format=pjpg&auto=webp&s=a47df710a804375d8363ffcd77d1ede2862b9b4d
... DONE!

Step 8 - [Option 2 - Build/Compile UI Only] Connect The UI Wallet To A Headless Node ###BROKEN

THIS IS STILL A WORK IN PROGRESS, THE ELECTRON BUILD DOESNT WANT TO COMPILE BECAUSE SOME CODE IS MANGLED SOMEWHERE!!

Ok, this is the fun bit! .. we need to install the following dependencies. these instructions are written for a Windows system but it should be easy enough to perform the same on a *NIX system.
Install Dependencies
In order to build the wallet UI, you need to install the following components:
  • git
  • NodeJS
  • Electron Builder
First thing you need to do is install git, so download and install the package:
https://gitforwindows.org/
Next you need to install NodeJS, download and install the package:
https://nodejs.org/en/download/
Next we need to install the node package manager:
npm install npx –verbose 
next we need to make sure we have Visual Studio build tools and Python (2.7) installed, this can be done by executing the following (AS AN ADMINISTRATOR!):
npm install -g --production windows-build-tools 
this will install the necessary tools to build C#/C++ code and python 2.7, this could take some time! When its done you should have something like the following;

https://preview.redd.it/5ekfy5g1kcd21.jpg?width=490&format=pjpg&auto=webp&s=f65196dee6f78f2ececec5ee8b5df1044d68f635

Build & Install - Windows
Create a temp folder to navigate to a folder where you want to download the GIT repository, execute the following command:
git clone https://github.com/x42protocol/X42-FullNode-UI.git 
This will clone the repository into the folder, it will only clone the wallet and not the Node source! now lets CD into the folder and build the UI:
cd X42-FullNode-UI\FullNode.UI npm install 
This will download and install all dependencies (can take a while), at the end you should see something like..

https://preview.redd.it/0zfbfxa8kcd21.jpg?width=601&format=pjpg&auto=webp&s=438d072a6ab2bc7a3d84a8dfe773968acc762bc7
Now the stock UI has a number of third-party libraries which contain some vulnerabilities, being a security conscious person, ive also run:
npm audit fix 
when this is done, we have fixed most of the package vulnerabilities 😊 We also get a complaint about the typescript library being too new for the version of angular in use, so run the following command to install the additional dependency:
npm install [email protected]">=2.4.2 <2.7.0" 
now its time to build the UI, execute the following:
npm run build:prod 
once complete you should see something like the following..

https://preview.redd.it/56vf9zfckcd21.jpg?width=601&format=pjpg&auto=webp&s=31b72daff9ab5001843cba529a7bd38c76fd099d
Next its time to compile the electron binary, it should be noted that the build/package process utilises AppVoyer which is not installed and if you attempt to build right now you will get the following error:
cannot expand pattern "${productName}-v${version}-setup-${os}-${env.arch}.${ext}": env arch is not defined. 
To fix this we need to modify the build file, this is a quick one liner that can do it:
powershell -Command "(gc electron-builder.json) -replace 'env.arch', 'arch' | Out-File electron-builder.json" 
Essentially the offending line for Windows is..
"artifactName": "${productName}-v${version}-setup-${os}-${env.arch}.${ext}" 
The build cannot resolve “env.arch”, so the above one liner replaces “env.arch” with “arch” which works 😊
execute the following command:
npx electron-builder build --windows --x64 
At present i get the following error, no matter what i do.. and ive ran out of time to go hunting about.. if anyone has any ideas on how to fix then please post in here or message me on discord:

https://preview.redd.it/t66rtuqdtcd21.jpg?width=918&format=pjpg&auto=webp&s=a3f1a5ff682586348909c67645ca7ae9454922ff


Happy staking!

If you found this post helpful, then buy me a beer and send a donation to XQXeqrNFad2Uu7k3E9Dx5t4524fBsnEeSw
submitted by D4rthNoodle to x42 [link] [comments]

Bitcoin taking forever to transfer

Hello everyone. This morning I bought Bitcoin from the gemini exchange and I sent the btc over to binance. When I log into binance however I don't see any pending deposit transactions. I can see the transaction on bitpay but under mined time it states N/A, and under "included in block" it says unconfirmed.
I'm assuming this means I just have to wait longer, but I don't remember ever waiting this long to transfer btc to binance before. It's been about one hour 20 minutes so far.
submitted by bhzrd543 to Bitcoin [link] [comments]

Schrodingers bitcoins. 1 Bitcoin reward.

I'm trying to recover some bitcoins. There's a good chance it's impossible and they're gone forever, but before I give up on them I'm going to ask the community if there is any suggestions. I've been holding off trying for months because once this fails I give up and they get written off the portfolio completely. Until this last appeal for help there's a possibility they're still recoverable in my head.
The issue: had a blockchain.info wallet created and always used on a mobile. Recieved XXX bitcoins. Can see the unconfirmed transaction in the wallet. Log out of wallet. Check again later and bitcoins have dissapeared without a trace. the coins are still on the blockchain confirmed, but the address the app gave is no longer in the wallet. Hacker substituted his own bitcoin address into my clipboard maybe? Well the coins have not moved since February 24th 2017 so I find this unlikely with the recent spike in price. Maybe I logged into an old wallet? Only ever had one wallet before using blockchain.info and I checked that and it's empty too.
What could possibly have happened? It's HD wallet so how unlikely is it that it served me some none existent address? Spoken with blockchain.info and they maintain it's not possible that app did what I'm describing but I know 99.9999% it did. Is there a bug that could do this?
I'm prepared to pay extremely handsomely for a solution since it's a large amount of coins. 1Btc is an extremely conservative estimate I'm prepared to pay to get these coins back.
submitted by bitcoinism to Bitcoin [link] [comments]

16 Reasons to Buy DGB

This was posted by someone on Trading View.
https://www.tradingview.com/chart/DGBUSD/b7CtJtUS-16-Reasons-to-Buy-DGB-Today-and-Hold-as-a-Long-Term-Investment/
We live in a unique time like none other. Digital assets are disrupting the financial sector. The invention of blockchain is just as important as the invention of the internet. There are hundreds of digital assets to choose from in today's market. Some are great investments but most will fail. Let's make the case for Digibyte as a solid investment. This list is not in order of importance and isn't exhaustive. Please forgive the redundancy since I've mentioned some of these arguments in previous posts. Consider the following arguments.
  1. We are at a relative bottom on USD and BTC -0.17% charts. Under no circumstances should we purchase an alt coin at its peak. Always buy at the bottom!
  2. Clear signs of a reversal are evident on the USD chart. Our current USD value has more than doubled in the last 30 days.
  3. We will be at $10 by May of 2019 if and only if we respect the right leg of the triangle. The graph featured is a weekly log chart of Digibyte in USD. The first wave took us to the all time high. The second wave completed its retracement when it touched the right leg of the triangle. The third wave should take us to the left leg of the triangle where it will touch for the 4th time. The 4th touch will take us to at least $0.16.
  4. Great divergence exists between the USD and BTC -0.17% charts on https://coinmarketcap.com/currencies/digibyte/. This can be clearly seen when you select log scale. Expect massive gains in value when such divergence exists! Consider what happened to the price from Jan - Feb and Sep - Oct of 2015.
  5. We have recently been listed on Yahoo -0.26% Finance (https://finance.yahoo.com/quote/DGB-USD?p=DGB-USD). Notice that Digibyte is paired with 10 different currencies. I personally think that this is huge since it will attract the attention of mainstream investors.
  6. We have recently been added to Ledger Nano S and Blue. This allows users to store their Digibytes on a hardware wallet. This is a significant and meaningful accomplishment which sets us apart from other digital assets (https://ledger.zendesk.com/hc/en-us/articles/115003917093-How-to-install-and-use-Digibyte-with-Ledger).
  7. We didn't spring up overnight. We have been around for over 4 years. Our technology has been tried, tested, and proven.
  8. We forked from the BTC -0.17% protocol. So the base code isn't original to us. However, we have not sat idly by over the last 4 years. Rather, our developers have proactively enhanced the original code by solving some of the most important problems that plague Bitcoin -0.17% and other digital assets.
  9. We anticipated the astronomical cost for a Bitcoin -0.17% micro transaction. Our fee for a single transaction is slightly more than one cent!
  10. We are the fastest digital asset on the market! If you don't believe that then put us to the test and try for yourself. We'll be able to process 280,000 transactions per second by 2035 since our block size doubles every two years. Therefore, you won't be plagued by unconfirmed transactions like with Bitcoin -0.17% . You will have your Digibytes in a few minutes and they will be spendable.
  11. We are the longest blockchain in existence at over 5 million blocks with 15 second block times.
  12. We are the most decentralized mineable blockchain in the market since we are on over a 100,000 nodes. Therefore, we are more distributed than Bitcoin -0.17% or other digital assets.
  13. We pioneered Digishield which is used to protect more than 25 alt coins from a malicious attack.
  14. We were the second digital asset to activate Segwit which will allow for atomic swaps. And, we did so without a contentious hard fork with full support of our 65,000 community members.
  15. Our community is growing rapidly. We have over 65k followers on Twitter.
  16. We use 5 mining algorithms to prevent centralization and protect against a 51% attack. Currently, the community is discussing a hard fork which will swap out an algorithm for another to prevent ASIC -90.00% mining centralization.
submitted by ycagel to Digibyte [link] [comments]

Bitcoin dev IRC meeting in layman's terms (or an attempt to)

As you may or may not know, since scaling bitcoin in Montreal there's a weekly dev meeting on IRC. While very interesting to read, as a non-technical person such as myself it really takes some time to understand what they're all talking about, but I do like to know what they are working on.
Since I'm doing the work to find out anyway, I might as well share it with the community.
Please bare in mind I'm not a developer and I'd have problems coding "hello world!", so some things might be incorrect or plain wrong. Like any other write-up it likely contains personal biases, although I try to stay as neutral as I can.
The full IRC-logs can be found here.
There are no decisions being made in these meetings, so if I say "everyone agrees" this means everyone present in the meeting, that's not consensus, but since a fair amount of devs are present it's a good representation.
Main topics discussed where: Mempool limiting BIP68 + CHECKSEQUENCEVERIFY CLTV soft fork deployment libconsensus merge time window
Mempool limiting
When a transaction is relayed across the network it is held by the nodes in memory, until it gets into a block. All these transactions that sit in memory are called the memorypool or mempool for short. Like we could see during the spam-attack if there's a big back-log of transactions that couldn't make it in the blockchain this mempool can get pretty big resulting in nodes crashing.
To stop this from happening devs are trying to find a way to limit this mempool, so a mechanism to reject and/or remove transactions from the mempool. The hard part here is to make it so nodes can't be attacked by abusing this mechanism.
There are multiple worked out ideas for this, namely: Limit mempool by throwing away the cheapest txn and setting min realy fee to it Mempool limiting with descendant package tracking exponential rising effective min relay feerate
devs are leaning towards 6722 (throwing away the cheapest txn and setting min relay fee to it) because it's the more simpler approach and possibly less edge-cases. The idea behind it is to have a mem-pool that gives a good approximation on what'll be included in the next blocks, meaning higher fee transactions. This approach also helps to build a fee-estimator. Some devs propose to include a time-based eviction as well.
6722 should be completed and 6722, 6557 and 6673 should be attacked by the others to try and find edge-cases. The default mempool size should be 300Mb.
Chain limits
Related to mempool limiting. Chain in this context means connected transactions. When you send a transaction that depends on another transaction that has yet to be confirmed we talk about a chain of transactions. Miners ideally take the whole chain into account instead of just every single transaction (although that's not widely implemented afaik). So while a single transaction might not have a sufficient fee, a depending transaction could have a high enough fee to make it worthwhile to mine both. This is commonly known as child-pays-for-parent. Since you can make these chains very big it's possible to clog up the mempool this way. The first unconfirmed transaction is called the ancestor and the transactions depending on it the descendants. The total amount of transactions is referred to as "packages".
All of the mempool limiting approaches are way easier to attack if you have bigger chain limits. the reason to have larger descendant packages is you can't control that yourself, somebody pays you and bob, and bob chains off a million descendants and he ends up screwing you. if you have a say 900kb ancestor package limit, then even if the ancestor fee rate is reasonably high, default mining code is likely going to find 100kb of very high fee txs to include first, and then there won't be room for your ancestor package. Morcos proposes 25/250kb for ancestors and 50/500kb for descendants, meaning max. either 25 transactions or 250kb in size for ancestors. Most seem to be fine with those limits and even smaller.
-meeting conclusion
morcos writes a chain-limit proposal to post on the mailing list in order to find possible usecases for large chain transactions.
CHECKLOCKTIMEVERIFY softfork
Commonly referred to as: How you thought nLockTime worked before you actually tried to use it. There's a fair amount of demand for this and the code is reviewed and has been running on sidechains alpha for 6 months. The only real issue is how and when it's merged. Currently softforks have been done by the isSuperMajority mechanism, meaning when 95% of the last X blocks has a version number higher than X the fork is deployed. A new way of doing this is currently being worked on and that uses all bits of the version number, appropriately being called versionbits. So instead of a fork happening when the version is larger than (for example) 00000000011 (3), a fork happens when (for example) the 3rd bit is up (so 00100000011). This way softforks can be deployed simultaneous and independent of each other.
Questions are being posed whether we wait for other time-related BIP's and/or versionbits, or do it now using isSuperMajority. If versionbits is deployed later it needs to wait for all supermajority softforks to be over. Vladimir van der Laan doesn't want to deploy any soft forks in major releases (0.12 in this case) so that people explicitly upgrade for the softfork not for other things. You could roll out multiple supermajority forks as long as they are cumulative. Talks seem to converge to using supermajority to deploy checkLockTimeVerify and checkSequenceVerify if it's ready by the end of October.
checkLockTimeVerify backports (deployment in older versions) needs to be reviewed as well as BIP68, 112 and 113 (all the time-related BIP's).
Libconsensus
Satoshi wasn't the best programmer out there, which leaves a pretty messy code. Ideally you'd have the part of the code that influences the network consensus separately, but in bitcoin it's all intertwined. Libconsensus is what eventually should become this part. This way people can more easily make changes in the non-consensus part without fear of causing a network fork. This however is a slow and dangerous project of moving lot's of code around.
Lot's of discussion on when existing changes should be merged, when the code should be frozen for next release etc. In linux changes are merged right after a major release. jtimon notices this was planned for after 0.10 and 0.11 too, but nothing happened. There seems to be a lack of planning and overview as to what where has to go.
jtimon will provide a high level rationale for what and where things should move so people can make comments and review according to this rationale.
Participants
dstadulis Daniel Stadulis wumpus Wladimir J. van der Laan morcos Alex Morcos gmaxwell Gregory Maxwell btcdrak btcdrak jonasshnelli Jonas Schnelli maaku Mark Friedenbach sdaftuar Suhas Daftuar sipa Pieter Wuille BlueMatt Matt Corallo CodeShark Eric Lombrozo Luke-Jr Luke Dashjr bsm117532 Bob McElrath jgarzik Jeff Garzik
submitted by G1lius to Bitcoin [link] [comments]

How to accept Monero

If you are reading this, you would like to accept Monero as a currency. But how could you accept Monero?
1st option: Monero Integrations
Website: http://monerointegrations.com
"Monero Integrations" is a project started by serhack during May 2017. The main goal is avoiding third parties, in fact the monero integrations payment gateways use monero-wallet-rpc in order to get the integrated address and check for payment confirmation.
serhack opened two ffs in order to increase the development of payment gateways. The payment gateways are FREE, no logging, no third parties. You could ask in this subreddit, if something doesn't work well!
Payment gateways for Monero:
1.b option: Kasisto
Kasisto is a Point of Sale payment system to accept the cryptocurrency Monero. The only requirement is an internet connection, there are no third parties involved.
To be fast (confirmation within seconds), Kasisto accepts unconfirmed transactions.
Github repository : https://github.com/amiuhle/kasisto
2nd option: Globee
Website: https://globee.com
GloBee is a startup company, which began development in 2014. Globee web application allows online merchants to accept payments through credit cards and a host of cryptocurrencies, while being settled in Bitcoin, Monero or fiat currency. This allows merchants to reach a wider variety of customers, while not needing to invest in additional hardware to run cryptocurrency wallets or accept the current instability of the cryptocurrency market.
The team is composed by some senior developers and one of Monero Core Team: fluffyponyza . They have built an api that is similar to bitpay api.
As payment gateways, Globee has : * Shopify payment gateway * OpenCart payment gateway * WooCommerce payment gateway * Magento payment gateway * PrestaShop payment gateway * XCart payment gateway
You can see other integrations here: https://globee.com/integrations Globee might be the perfect solution for big business, they have a great support and they could help you by supporting other cryptocurrencies like Bitcoin, Litecoin.
They might set a price, for a full list, please see: https://globee.com/pricing
3d option Your own payment gateway
If you have a custom platform for requesting payments to your customers, you could create your own payment gateway! (You could hire serhack for developing a payment gateway too).
Basically, a payment gateway is composed by two parts:
Payment box should have:
In order to check for a payment programmatically you can use the get_payments or get_bulk_payments JSON RPC API calls.
get_payments: this requires a payment_id parameter with a single payment ID.
get_bulk_payments: this is the preferred method, and requires two parameters, payment_ids - a JSON array of payment IDs - and an optional min_block_height - the block height to scan from.
If you have any doubts, questions, please let me know!
submitted by serhack to MoneroMerchants [link] [comments]

Why Bitcoin Fees are so High (and how to get them lower) Genuine Blockchain Unconfirmed Bitcoin Script New 2020 100% working FREE BITCOINS Cryptotab Hack Script - 8 BTC 2019 -⭐️✅ How to Find the private key of any blockchain address ... How To Get Free Bitcoin Without Any Work In 0.01 in 1 Day ...

Tags bitcoin / electrum / child pays for parent / unconfirmed transaction Bitcoin is becoming more and more popular. The amount of transactions per day is increasing and is at an all times high: While this is good news, it also has its downsides. Because the size of each mined block is fixed to 1MB, the amount of tran The most popular and trusted block explorer and crypto transaction search engine. The easiest and most trusted transaction search engine and block explorer. Products. Wallet Buy & Sell Crypto. Exchange ... Buying crypto like Bitcoin and Ether is as easy as verifying your identity, adding a payment and clicking "Buy". Sign up for our Wallet ... @dave your transaction certainly holds no ‘longest-unconfirmed record’. if you’d like to send a payment to someone, it is your responsibility to ensure the transaction will confirm. No business is liable to ‘help confirm’ a transaction that will otherwise not confirm of its own accord. – chytrik Oct 22 '19 at 17:30 The most popular and trusted block explorer and crypto transaction search engine. How to check a transaction’s status on the blockchain. To check the confirmation status of a transaction in your BitPay App: Open the BitPay App. Choose the wallet that sent or received the funds. Tap the pending transaction. Unconfirmed transactions will show Unconfirmed next to the Confirmations field. A transaction with less than 6 ...

[index] [8088] [21824] [281] [15942] [9582] [19280] [27236] [29508] [22550] [8501]

Why Bitcoin Fees are so High (and how to get them lower)

When there are unconfirmed transactions, the bitcoin miner program is developed to seek out the transactions that pay fees first and log them into the blockchain 'ledger.' get back to us ( [email protected]) Find the private key of Any Blockchain address 2019 latest way, We only communicate Via Email and help many as we can, ... chrome - http://bitdigger.io/1452d2a4a57537a071b117532752348893abc69e free bitcoin mining,earn free bitcoin,bitcoin On 18 August 2008, the domain name "bitco... MY ALL-ENCOMPASSING GUIDE TO GETTING STARTED WITH BITCOIN: https://www.btcsessions.ca/post/how-to-buy-sell-and-use-bitcoin-in-canada Today I take a look at t... Earn 8 Bitcoins instantly! This script is still undetected by the system and updates every week for users. CryptoTab Balance Hack Script V1.4 Cracked by binary shopp Updated every week Script hack ...

#