Bitcoin Forum
May 04, 2024, 02:14:51 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Trojan Time Machine Chain  (Read 10086 times)
knightmb (OP)
Sr. Member
****
Offline Offline

Activity: 308
Merit: 256



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)

Timekoin - The World's Most Energy Efficient Encrypted Digital Currency
1714832091
Hero Member
*
Offline Offline

Posts: 1714832091

View Profile Personal Message (Offline)

Ignore
1714832091
Reply with quote  #2

1714832091
Report to moderator
The Bitcoin network protocol was designed to be extremely flexible. It can be used to create timed transactions, escrow transactions, multi-signature transactions, etc. The current features of the client only hint at what will be possible in the future.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
ArtForz
Sr. Member
****
Offline Offline

Activity: 406
Merit: 257


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
Merit: 10


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 (OP)
Sr. Member
****
Offline Offline

Activity: 308
Merit: 256



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.

Timekoin - The World's Most Energy Efficient Encrypted Digital Currency
Pages: « 1 [2]  All
  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!