Bitcoin Forum
December 05, 2016, 10:52:49 AM *
News: Latest stable version of Bitcoin Core: 0.13.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: « 1 [2]  All
  Print  
Author Topic: Trojan Time Machine Chain  (Read 2964 times)
knightmb
Sr. Member
****
Offline Offline

Activity: 308


Timekoin - Save Electricity, Don't Waste It!


View Profile WWW
August 03, 2010, 02:33:04 PM
 #21

I'm not quite sure how this attack can work because it has the following pre-requisites:

1) that you can generate blocks faster than the rest of the network

2) that you can do so without being subject to the same target modification rules

As I see it, assuming you have so much processing power that you can outpace the network, when you are doing your block generation, you will still have to adjust the target using the same algorithm or when you start posting your blocks to the network, they're going to get rejected because you weren't obeying the target value rules, therefore, I don't see how you could actually permit yourself to generate blocks more cheaply by not announcing them.
Connect two PC together with the -connect=XXX.XXX.XXX.XXX command line to both machines with a fresh install, and both will start generating blocks from the genesis block and start building up the network again. Get enough PC going, you'll be able to keep the 1 per 10 minutes generation up to a constant level since the difficulty will always be a 1.000

After a while, you would have a perfect block chain from to finish in which those two PCs own all the coin and with the constant generation rate, overtake the flux rates that are seen out in the public network (where one block takes 8,000 seconds to find sometimes, your little network is doing a constant block every 300 seconds, eventually it would catch up and surpass the real chain)

1480935169
Hero Member
*
Offline Offline

Posts: 1480935169

View Profile Personal Message (Offline)

Ignore
1480935169
Reply with quote  #2

1480935169
Report to moderator
1480935169
Hero Member
*
Offline Offline

Posts: 1480935169

View Profile Personal Message (Offline)

Ignore
1480935169
Reply with quote  #2

1480935169
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1480935169
Hero Member
*
Offline Offline

Posts: 1480935169

View Profile Personal Message (Offline)

Ignore
1480935169
Reply with quote  #2

1480935169
Report to moderator
ArtForz
Sr. Member
****
Offline Offline

Activity: 406


View Profile
August 03, 2010, 03:12:29 PM
 #22

Looks like "best block chain" does not simply mean "longest chain of blocks" but "highest sum of difficulty".
check main.cpp CBlock::AddToBlockIndex
Code:
pindexNew->bnChainWork = (pindexNew->pprev ? pindexNew->pprev->bnChainWork : 0) + pindexNew->GetBlockWork()
...
if (pindexNew->bnChainWork > bnBestChainWork)
...
now, what does GetBlockWork() do?
main.h
Code:
    CBigNum GetBlockWork() const
    {
        return (CBigNum(1)<<256) / (CBigNum().SetCompact(nBits)+1);
    }
So a single block of the real chain at 200 difficulty is "worth" 200 blocks of your 1.0 chain...

bitcoin: 1Fb77Xq5ePFER8GtKRn2KDbDTVpJKfKmpz
i0coin: jNdvyvd6v6gV3kVJLD7HsB5ZwHyHwAkfdw
Olipro
Member
**
Offline Offline

Activity: 70


View Profile
August 03, 2010, 03:37:32 PM
 #23

I'm not quite sure how this attack can work because it has the following pre-requisites:

1) that you can generate blocks faster than the rest of the network

2) that you can do so without being subject to the same target modification rules

As I see it, assuming you have so much processing power that you can outpace the network, when you are doing your block generation, you will still have to adjust the target using the same algorithm or when you start posting your blocks to the network, they're going to get rejected because you weren't obeying the target value rules, therefore, I don't see how you could actually permit yourself to generate blocks more cheaply by not announcing them.
Connect two PC together with the -connect=XXX.XXX.XXX.XXX command line to both machines with a fresh install, and both will start generating blocks from the genesis block and start building up the network again. Get enough PC going, you'll be able to keep the 1 per 10 minutes generation up to a constant level since the difficulty will always be a 1.000

After a while, you would have a perfect block chain from to finish in which those two PCs own all the coin and with the constant generation rate, overtake the flux rates that are seen out in the public network (where one block takes 8,000 seconds to find sometimes, your little network is doing a constant block every 300 seconds, eventually it would catch up and surpass the real chain)

precisely, and the hashes you generate are going to be completely invalid because the target your systems are aiming for will be higher than the one the network requires.
knightmb
Sr. Member
****
Offline Offline

Activity: 308


Timekoin - Save Electricity, Don't Waste It!


View Profile WWW
August 03, 2010, 03:43:15 PM
 #24

Looks like "best block chain" does not simply mean "longest chain of blocks" but "highest sum of difficulty".
check main.cpp CBlock::AddToBlockIndex
Code:
pindexNew->bnChainWork = (pindexNew->pprev ? pindexNew->pprev->bnChainWork : 0) + pindexNew->GetBlockWork()
...
if (pindexNew->bnChainWork > bnBestChainWork)
...
now, what does GetBlockWork() do?
main.h
Code:
    CBigNum GetBlockWork() const
    {
        return (CBigNum(1)<<256) / (CBigNum().SetCompact(nBits)+1);
    }
So a single block of the real chain at 200 difficulty is "worth" 200 blocks of your 1.0 chain...
Cool, actually a double-wham to the attack then because it's worth is better defined by how much CPU time it took to create it, thanks for pointing that out.

Pages: « 1 [2]  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!