Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. def operator \chain\upchain^\mu:
  2. A <- C[0]
  3. Z <- C[-1]
  4. C` <- []
  5. while Z \neq A:
  6. if level(Z) \geq \mu:
  7. C`.prepend(Z)
  8. Z <- Z.interlink[\mu]
  9. C`.prepend(A)
  10.  
  11. def operator \chain`\downchain_\chain:
  12. A <- C`[0]
  13. Z <- \chain'[-1]
  14. a <- index_of(A, \chain)
  15. z <- index_of(Z, \chain)
  16. return \chain[a:z]
  17.  
  18. def operator \chain`\updownchain^\mu_\chain:
  19. return \chain`\downchain_\chain\upchain^\mu
  20.  
  21. def operator \chain\{B:\}:
  22. \chain' <- []
  23. Z <- C[-1]
  24. while Z \neq B:
  25. \chain`.prepend(Z)
  26. Z <- Z.interlink[0]
  27. \chain'.prepend(B)
  28.  
  29. def prove_{m,k,\delta}(\chain):
  30. B <- \chain[0]
  31. \tilde\pi <- \emptyset
  32. for \mu <- |C[-1].interlink| - 1 to 0:
  33. \pi = \chain\{B:\}\upchain^\mu
  34. \tilde\pi \cup<- \pi
  35. if good(\pi):
  36. B <- \pi[-m]
  37. return \tilde\pi
  38.  
  39. def superchain(b, \mu, B):
  40. \pi <- [b]
  41. do:
  42. b <- b.interlink[\mu]
  43. if level(b) \geq \mu:
  44. \pi.prepend(b)
  45. while b \neq B
  46. return \pi
  47.  
  48. def v1 good_{m,\delta}(\chain`, \chain, \mu):
  49. if |\chain`| < m:
  50. return False
  51. if (1 - \delta)2^{-\mu}|\chain`\downchain^\chain| > |\chain`|:
  52. return False
  53. return True
  54.  
  55. def verify_m(\Pi):
  56. return max(\Pi)
  57.  
  58. def v1 operator \tilde\pi_\mathcal{A} \geq \tilde\pi_B:
  59. b <- LCA(\tilde\pi_\mathcal{A}, \tilde\pi_B)
  60. \tilde\pi_A <- parse(\tilde\pi_\mathcal{A})
  61. \tilde\pi_B <- parse(\tilde\pi_B)
  62.  
  63. (\mu_A, \alpha_A) <- best_arg(\overline\pi_\mathcal{A})
  64. (\mu_B, \alpha_B) <- best_arg(\overline\pi_B)
  65.  
  66. return 2^{\mu_\mathcal{A}}|\alpha_A| \geq 2^{\mu_B}|\alpha_B|
  67.  
  68. def best_arg(\overline\pi):
  69. \mu <-
  70. argmax_{0 \leq \mu < |\overline\pi| \land (|\overline\pi[\mu]| \geq m \lor \mu = 0)}
  71. {2^\mu|\overline\pi[\mu]|}
  72. return (\mu, \overline\pi[\mu])
  73.  
  74. def v2 good_{m,\delta}(\chain`, \chain, \mu):
  75. if |\chain'| < m:
  76. return False
  77. for \chain^* \in {\chain`[i:i + m - 1]: 0 \leq i < |\chain`| - m}:
  78. if m < (1 - \delta)2^{-\mu}|\chain^*\downchain_\chain|:
  79. return False
  80. return True
  81.  
  82. def v2 operator \tilde\pi_\mathcal{A} \geq \tilde\pi_B:
  83. b <- LCA(\tilde\pi_\mathcal{A}, \tilde\pi_B)
  84. \tilde\pi_A <- parse(\tilde\pi_\mathcal{A})
  85. \tilde\pi_B <- parse(\tilde\pi_B)
  86.  
  87. \overline\pi_\mathcal{A}` <- map(_{b:}, \overline\pi_\mathcal{A})
  88. \overline\pi_B` <- map(_{b:}, \overline\pi_B)
  89.  
  90. (\mu_A, \alpha_A) <- best_arg(\overline\pi_\mathcal{A}`)
  91. (\mu_B, \alpha_B) <- best_arg(\overline\pi_B`)
  92.  
  93. return 2^{\mu_\mathcal{A}}|\alpha_A| \geq 2^{\mu_B}|\alpha_B|
  94.  
  95. Lemma: Suppose \tilde\pi_\mathcal{A} \geq \tilde\pi_B is called, where B is honest.
  96. Let \mu_B` be the highest "good" superchain level for B,
  97. and let b = LCA(\tilde\pi_\mathcal{A}, \tilde\pi_B).
  98. Then \mu_B` \geq \mu_B.
  99.  
  100. Pf: By \mu_B winning argument condition we have:
  101. 2^{\mu_B}|\chain\{b:\}\upchain^{\mu_B}| > 2^{\mu_B}|\chain\{b:\}|. (1)
  102.  
  103. By \mu_B badness condition:
  104. 2^{\mu_B}|\chain\{b:\}\upchain^{\mu_B}| < (1 - \delta)|\chain\{b:\}|. (2)
  105.  
  106. By \mu_B` goodness condition:
  107. 2^{\mu_B`}|\chain\{b:}\upchain^{\mu_B`} > (1 - \delta)|\chain\{b:\}|. (3)
  108.  
  109. (1)(2) => (1 - \delta)|\chain\{b:\}| > 2^{\mu_B`}|\chain\{b:\}\upchain^{\mu_B`}| (4)
  110. (3)(4) => \bot. \qed
  111.  
  112. Thm: Suffix NIPoPoW is secure with overwhelming probability in \kappa.
  113.  
  114. Pf: Suppose \tilde_\mathcal{A} \geq \tilde_B. Then let b = LCA(\tilde\pi_\mathcal{A}, \tilde\pi_B).
  115. Let 2^{\mu_\mathcal{A}}|\alpha_A| \geq 2^{\mu_B}|\alpha_B|.
  116. Let \mu_B` be the highest "good" superchain level for B.
  117. (and note that it is possible that \mu_B \neq \mu_B` if \mu_B contains more PoW).
  118.  
  119. Claim: If \mu_\mathcal{A} \geq \mu_B, then all \mu_B`-level blocks honestly adopted by B after b are included in \alpha_B.
  120. Therefore the chains \alpha_\mathcal{A}, \alpha_B are disjoint.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement