Real 51% probability
http://blockindex.info/blog/51en.htmlThe miner have create more than 300000 blocks, is that possible use these blocks to evaluate the real 51% attack probability?
The follow will try to calculate the probability with the z=6 attack
Select the time of the blocks that heighs from 280000~300000 to calculate.
The usually blockchain, we named "C" blockchain.
[]----->[]----->[]----->[]----->[]----->[]----->[] C blockchain
The chain of honesty miner created named "A" blockchain
The chain of the attack miner created named "b" blockchain
[]----->[]----->[]----->[]----->[]----->[]----->[] A blockchain
\
[]----->[]----->[]----->[]----->[]----->[]----->[] B blockchain
calculate the time delta in continuous 6 blocks in chain:
t1 = blk5.time - blk0.time t2 = blk6.time - blk1.time ..... tx = blkn.time - blk(n-5).time
Then we got a time set named TC1: {t1,t2,t3....tx}
and we calculate the TC2 that continuous 7 blocks to get another time set named TC2: {t1,t2,t3....tx}
Follow graph is created by TC1
http://blockindex.info/blog/imgs/6.pngsort TC1 then got follow graph
http://blockindex.info/blog/imgs/6s.pngcount the element in T1 number every 10 seconds then got a new set {len(T1...Tx),len(Tx+1....Tx+n)....}
http://blockindex.info/blog/imgs/6d.pngIf we do same calculator with the height from [200000- 220000], [220000- 240000], [240000- 260000], [200000- 280000], wo got these graph:
http://blockindex.info/blog/imgs/xd.pngso the time's density distribution of create block is similar. so tthe time's density distribution of create block in the A chain and the B chain should similar with C blockchain. but the speed of create block of A and B is lower than C, so we need scale the TC.
TA = TC1 * 100/(1-49) This is the time set of create block when use 49% computing
TB = TC2 * 100/(1-51) This is the time set of create block when use 51% computing
http://blockindex.info/blog/imgs/51d.pngThe left cruved line is created by A, the right cruved line is created by set B
Now the question is select random a in A and b in B, what's the probability of a>b?
The follow is python code:
def realAttackerSuccessProbability (A,B):
N = []
qz = 0.0
for i,a in enumerate(A):
n = 0
for b in B:
if a<=b: break
else: n+=1
N.append(n)
return float(sum(N))/(len(B) *len(A))
results:
If C blockchain is from block height 280000~300000, about 20000 blocks to calculate:
z=0 P=1.000000
z=1 P=0.25991752883
z=2 P=0.327356211643
z=3 P=0.362791063488
z=4 P=0.38572021231
z=5 P=0.402129295953
z=6 P=0.41492854999
If C blockchain from block height 200000~300000, about 100000 blocks to calculate:
z=0 P=1.000000
z=1 P=0.258909623337
z=2 P=0.327897207064
z=3 P=0.363898341947
z=4 P=0.387023480539
z=5 P=0.403786580212
z=6 P=0.416886094841
Real 51% probability
http://blockindex.info/blog/51en.html