Bitcoin Forum
November 18, 2024, 11:03:30 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Can coin fork modify transactions  (Read 250 times)
pozmu (OP)
Hero Member
*****
Offline Offline

Activity: 770
Merit: 504


(っ◔◡◔)っ🍪


View Profile
July 13, 2018, 06:54:28 PM
Merited by paxmao (1)
 #1

Hi

I have question about coin forks.

Is there possibility to modify transactions by issuing hard fork?

An example: dev makes mistake and sends part of premine coins to inaccessible (random) addresses instead to investor's addresses.

Networks is working, days go by and then this error is found.

Can dev modify wallet to accept incorrect block that fixes this error by sending coins from this inaccessible addresses to valid ones (maybe even hardcode this block into wallet's code), make this update mandatory and coins will get back where they originally had to go?

Or another option, make snapshot of current blockchain and in the last block of new blockchain before it's released to public add block with invalid transactions that retrieve coins from inaccessible wallets to proper one. In this case such modification could be also made by utilising 51% attack as all miners on the new chain would be dev's, not only by wallet modifications. 

Thanks for help.

pooya87
Legendary
*
Offline Offline

Activity: 3640
Merit: 11041


Crypto Swap Exchange


View Profile
July 14, 2018, 03:49:19 AM
Merited by suchmoon (7), paxmao (2), pozmu (1)
 #2

a fork is sometimes referred to as a way to make things that weren't possible before, possible or make things that were possible before, impossible.
in this case you can always break any rules you want when creating a fork, even spend coins that you are not capable of. for example there was a bitcoin fork proposal (to create another new altcoin like BTG, BCH, BTV,...) that spent coins that weren't touched for a long time like Satoshi's coin.
the problem is when you create a fork you also have to get the whole network (assuming it is a decentralized cryptocurrency) to follow your fork. otherwise the main chain will continue as it were and your chain will be a new coin with a different blockchain which the nodes on the main chain reject.

Or another option, make snapshot of current blockchain and in the last block of new blockchain before it's released to public add block with invalid transactions that retrieve coins from inaccessible wallets to proper one. In this case such modification could be also made by utilising 51% attack as all miners on the new chain would be dev's, not only by wallet modifications. 
if they do that their chain will be rejected by literary the whole network (except those miners) since the miners in this scenario have upgraded their code and the rest of the network (nodes, exchanges, ...) are still seeing it as an invalid block so they will reject it and continue waiting for a valid block to be produced by the 49% remaining hashrate.

edit:
i think this is the best example that i can find regarding this: https://bitcointalk.org/index.php?topic=2041607.0
a mining pool (1hash) have included invalid transactions (had unconfirmed parents and wrong order of transactions in the block) in the blocks they found and they were easily rejected by the whole network.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
mithrim
Sr. Member
****
Offline Offline

Activity: 434
Merit: 436


View Profile
July 16, 2018, 09:22:23 AM
 #3

As explained you can do anything you like in a fork and that's the main problem. The blockchain in itself is "trustless" but whenever someone does a fork (or creates a new coin), there needs to be some form of trust in either the developer who does it or the one who is responsible. You can (and should) validate his/their work but not every one of us can e.g. because of information asymmetry.

Forks are always risky, not only because of the needed trust involved but also because of dilution - not everyone will follow the new fork.
Tronx
Member
**
Offline Offline

Activity: 61
Merit: 12


View Profile
July 16, 2018, 10:28:09 AM
 #4

Hi

I have question about coin forks.

Is there possibility to modify transactions by issuing hard fork?

An example: dev makes mistake and sends part of premine coins to inaccessible (random) addresses instead to investor's addresses.

Networks is working, days go by and then this error is found.

Can dev modify wallet to accept incorrect block that fixes this error by sending coins from this inaccessible addresses to valid ones (maybe even hardcode this block into wallet's code), make this update mandatory and coins will get back where they originally had to go?

Or another option, make snapshot of current blockchain and in the last block of new blockchain before it's released to public add block with invalid transactions that retrieve coins from inaccessible wallets to proper one. In this case such modification could be also made by utilising 51% attack as all miners on the new chain would be dev's, not only by wallet modifications. 

Thanks for help.

Coin fork take the snapshot at the specified block and there is no change in the current transactions.
pozmu (OP)
Hero Member
*****
Offline Offline

Activity: 770
Merit: 504


(っ◔◡◔)っ🍪


View Profile
August 05, 2018, 08:42:15 PM
 #5

Thanks for the answers.
I got some valuable info, I understand that forks are mess, but the situation I was talking about (which I didn't mention in initial post) is that particular coin is doing forks anyway, I mean they require everyone (users/ miners/ exchanges) to update to new version, old version stops working, there is some kind of snapshot of all transactions created and they start from that, old transactions are not included in new blockchain, just wallets/ addresses that held some amount of coins.

I have also new question, if no one replies I will create new topic, no worries: is it possible to block certain wallet/ address from spending coins?
There are number of wallets that should not be touched for some reason, my thinking is that if everyone updates their client (wallet) software you can blacklist those addresses so miners won't include transactions from these addresses in blocks, is that correct? I'm talking of less than 100 addresses, so I don't think that would "eat" much of processing power, I can think that blocking hundreds of thousands addresses would require some sort of database and heavy modifications to wallet, but with such little number I can't see a problem, am I thinking right? Thanks.

pooya87
Legendary
*
Offline Offline

Activity: 3640
Merit: 11041


Crypto Swap Exchange


View Profile
August 06, 2018, 03:52:16 AM
 #6

Thanks for the answers.
I got some valuable info, I understand that forks are mess, but the situation I was talking about (which I didn't mention in initial post) is that particular coin is doing forks anyway, I mean they require everyone (users/ miners/ exchanges) to update to new version, old version stops working, there is some kind of snapshot of all transactions created and they start from that, old transactions are not included in new blockchain, just wallets/ addresses that held some amount of coins.
the way it works is that you first release the new version with the change the will create the fork and set a time when the fork is going to happen and usually set some criteria for it too like having >95% hashrate support. that time is a certain block because finding new blocks have a certain randomness to it which makes it hard to predict when a certain block is going to be found.
for example if we are now at block 10000 you set the fork to happen at 11000. it is not exactly a "snapshot" it is the same blockchain, you just build on it with new blocks which follow the new rules.
- if it is backward incompatible like hard forks then the old version becomes abandoned (it will still work but it will be another chain if someone decides to build on it.
- if it is backward compatible like soft forks then the old version continues to work.

you don't throw away the old blockchain. that's the whole point of blockchain, to have this immutable public distributed ledger where all the transactions from the start are stored in. if you throw it away then there is no way of verifying where coins came from.

Quote
I have also new question, if no one replies I will create new topic, no worries: is it possible to block certain wallet/ address from spending coins?
There are number of wallets that should not be touched for some reason, my thinking is that if everyone updates their client (wallet) software you can blacklist those addresses so miners won't include transactions from these addresses in blocks, is that correct? I'm talking of less than 100 addresses, so I don't think that would "eat" much of processing power, I can think that blocking hundreds of thousands addresses would require some sort of database and heavy modifications to wallet, but with such little number I can't see a problem, am I thinking right? Thanks.
it's just code so yeah it is possible. when a node receives a transaction it checks to see if it is valid. so the function that checks its validity can also have new "IF" clause checking which private key was used to sign it (based on the public key included in the transaction) and
Code:
if(IgnoreListOfPubKeys.Contains(GivenPubKey)
  reject;

your question however reminds of proof of burn though. you can read about it here https://en.bitcoin.it/wiki/Proof_of_burn
basically if you want to make some coins unspendable there is a much easier way and that is sending them to an output that can't be spent from. for example using OP_Return outputs. or sending to burn addresses like 1BitcoinEaterAddressDontSendf59kuE

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
pozmu (OP)
Hero Member
*****
Offline Offline

Activity: 770
Merit: 504


(っ◔◡◔)っ🍪


View Profile
August 06, 2018, 07:42:44 PM
 #7

you don't throw away the old blockchain. that's the whole point of blockchain, to have this immutable public distributed ledger where all the transactions from the start are stored in. if you throw it away then there is no way of verifying where coins came from.

I kid you not, some coins do it via snapshot, new blockchain is much smaller than the old one.
Maybe it's not the best example, because it's pretty young and unconventional coin, but IOTA did this multiple times... well, yeah, bad example because one of IOTA's feature is "no blockchain", but if you search you'll find some conventional, bitcoin-style coins that did snapshots.

it's just code so yeah it is possible.

I had beeen thinking it should be easy to implement this and your post confirms that.

Thanks!

Coinster
Full Member
***
Offline Offline

Activity: 222
Merit: 101


View Profile
August 06, 2018, 08:06:29 PM
Merited by pozmu (1)
 #8

I kid you not, some coins do it via snapshot, new blockchain is much smaller than the old one.

Yes, what you're talking about is essentially the UTXO (list of unspent transaction outputs). That's what really matters for a blockchain. The blockchain is just the historical list to get the current UTXO. The selling point of Bitcoin is that it's trustless. You don't have to trust anyone about how many coins there are or who rightfully owns what coins. Your node checks everything itself, from the Genesis block up to the current block. (At least in theory it can. A practice has been adding "checkpoints" for new software releases, so you do trust a dev team somewhat, in that they will give you the correct calculation up to that point, so there is no need to actually check.)

So Bitcoin is actually capable of discarding much of the blockchain too, with a feature called "pruning". With pruning enabled you set your node to only keep about 2 weeks of historical blockchain.

On your original topic about forking to invalidate coins, that's why there is now ETH and ETC (Ethereum Classic). Someone made an Ethereum smart contract (for some new investment) with a bug which was found allowing the coder to send coins to his own address. The coder taking the coins argued publicly that he was only following the code as it was written to behave, which was true (it was just written incorrectly). That presented a philosophical dilemma: the idea of Ethereum is the code is the law, outside government regulations be dammed. So calls to create a fork invalidating that mistake went against that idea. In the end Vitalik decided to indeed fork Ethereum and refund those investors. That gave rise to people saying Ethereum is really proof-of-vitalik, and that code is law isn't really true. Another dev decided to keep the original chain alive and it became known as ETC.
pozmu (OP)
Hero Member
*****
Offline Offline

Activity: 770
Merit: 504


(っ◔◡◔)っ🍪


View Profile
August 06, 2018, 11:22:21 PM
 #9

Oh yeah, the infamous DAO hack, don't even mention it to me, there was so much FUD that it'll kill Ethereum or at least drive Ether price to the very bottom that I sold half of my small holdings, which I can't really forgive myself to this day.
That's interesting what you're saying about BTC pruning and checkpoints, does it mean that with current Bitcoin core you don't have to download whole xxGB of blocks? When I started using BTC it was recommended to use light wallets like Multibit so I sticked with that, I'm not sure if ever synced Bitcoin core wallet fully, but I did it with many altcoins and it was really painfully as it took literally days to get their wallets synced.

pooya87
Legendary
*
Offline Offline

Activity: 3640
Merit: 11041


Crypto Swap Exchange


View Profile
August 07, 2018, 03:17:48 AM
 #10

That's interesting what you're saying about BTC pruning and checkpoints, does it mean that with current Bitcoin core you don't have to download whole xxGB of blocks?

it is an "Option" not the default setting. and you won't be running a full node anymore. you would be running a pruned node. and it is important to note that YOU are throwing away most of the blockchain not the whole network.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!