board_FAQ custom_top_html:no
default debug random = 0 / type = READ / detected = READ

단축키

Prev이전 문서

Next다음 문서

크게 작게 댓글로 가기 위로 아래로

단축키

Prev이전 문서

Next다음 문서

크게 작게 댓글로 가기 위로 아래로

이오타 IOTA 백서 번역 나머지 부분입니다.

 

1/2은

https://www.ddengle.com/board_free/2847836

에서 보실 수 있습니다.

 

 

IOTA의 가격은

 

8월 초 0.27USD였으며, 8월 28일 0.91USD까지 상승하였습니다.

 

0045.jpg

 

 

앞으로도 상승이 기대되며, 기존의 Bitcoin과는 다른 독특한 방식으로인해

보안성이 개선되었다고 개발진은 주장합니다.

 

 

 

 

-------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

3.1 cumulative weight의 일반적인 성장 속도

 

 

 low load 체제 아래에서, 우리의 트랜젝션이 몇 차례 승인된 이후에, cumulative weight 는 λω의 속도로 성장할 것이다. 여기에서 ω는 전체적인 트랜젝션의 평균 weight이며, 왜냐하면 모든 새로운 트랜젝션은 간접적으로 우리의 트랜젝션을 참조할 예정이기 때문이다.

 

 

 

 

 

 

 

high load 체제에서는 앞부분에서 살펴본 것과 마찬가지로 만약 하나의 트랜젝션이 충분히 old해지고, 큰 cumulative weight를 나타낼 때 cumulative weight는 λω의 속도로 성장한다. 또 시작 단계에서 트랜젝션이 승인되려면 어느정도 대기시간이 필요하다는 것을 관찰했으며, cumulative weight가 그 순간에 랜덤의 방식으로 행동한다는 것은 분명하다. 몇 번의 승인을 받은 뒤에 해당 트랜젝션이 얼마나 빠르게 성장하는지 알아보기 위해서, 다음과 같이 지정한다. (단순화하기 위해서, 처음에는 트랜젝션이 만들어진 시점부터 시간을 측정한다.) H(t)는 특정시간 t의 cumulative weight의 기댓값이며, K(t)는 특정 시간 t에 우리의 트랜젝션을 승인하는 tips의 숫자들의 기댓값이다. (혹은 단순히 “우리의 tips”) h:=h(L0,N)으로 단축된다. 단순한 가정으로써, 궁극적으로 tips의 숫자가 거의 일정(L0와 동일)할 것이다. “두 개의 랜덤 tips 승인 전략”을 사용하며, 결과는 “두 개의 랜덤 tips을 top αL(t)에서 선택하기”와 거의 동일할 것이다.

 

 

 

 

특정 시간 t에 해당 시스템으로의 트랜젝션이 두 개의 트랜젝션을 선택하여 승인할 때, 시간 t-h의 시스템의 상태에 기반하여 승인된다. 적어도 하나의 “우리의” tip이 승인될 가능성을 계산하는 것은 어렵지 않으며, 다음 공식과 같다.0001.jpg  비슷하게, [9]의 6.4의 사례에서, 다음을 확인할 수 있다.

 

 

 

 

0002.jpg

 

 

 

 

 

그리고 따라서 다음의 미분 방정식(differential equation)을 추론할 수 있다.

 

 

 

 

0003.jpg

 

 

 

 

(5)를 사용하기 위해서, 첫 번째로는 K(t)를 계산해야 한다. 이것을 어떻게 수행할지는 분명하지 않은데, 왜냐하면 t-h라는 시간의 어느 한 tip은 t의 tip이 아닐 수도 있고, 만약 새롭게 등장하는 트랜젝션이 그런 tip 하나를 승인할 경우, 원래의 트랜젝션을 승인하는 전체적인 tip의 숫자는 1만큼 증가하게 된다. (1)과 (3)을 살펴보면 중요한 특징은 특정 시간 t-h에 tip이 시간 t에도 tip으로 남아있을 확률이 대략 1/2이라는 사실을 알 수 있다. 따라서 t라는 시간에 필수적으로 K(t-h)의 절반의 “이전의” 우리의 tips은 tips으로 존재할 것이며, 나머지 절반은 적어도 1번은 이미 승인되었을 것이다. A : 특정 시점 t-h의 (대략적인) K(t-h)/의 tip으로, 시점 t에도 tip으로 존재한 것들의 집합. B : 다른 K(t-h)/2 tip의 집합 (이미 승인됨) p1을 새롭게 도달한 트랜젝션이 B로부터 적어도 1의 트랜젝션을 승인할 확률이라고 하고, A로부터는 트랜젝션을 전혀 승인하지 않는다고 하자. p2를 양 쪽의 승인된 트랜젝션이 A로 속할 확률이라고 하자. p1과 p2은 각각 현재 “우리의” tips의 숫자가 새로운 트랜젝션의 도달에 따라 1의 차이로 증가 감소하는 확률이라고 볼 수 있다.

 

 

 

 

0004.jpg

 

 

 

 

 

 

 

 

 

 

 

 

(첫 번째 계산 과정을 얻기 위해서, P1 이라는 확률은 다음과 동일하다. 두 개의 승인된 tips이 모두 B에 속활 확률 더하기 최초의 tip이 B에 속하고, 2번째 tip이 A∪B에 속하지 않는 경우의 두배). (5)와 비슷하게, K(t)에 대한 미분 방정식은 다음과 같이 서술된다.

 

 

 

 

 

 

0005.jpg

 

 

 

(6)을 정확히 풀어내는 것은 어려우므로, 단순화를 위한 가정을 적용한다. K(t)가 고정된 ε>0에 대하여, K(t)가 εL0에 도달하는 시점 이후에, 거의 L0로 굉장히 빠른 속도로 성장할 것이다. 현재, K(t)는 L0에 상응하여 작은 상태이며, (6)의 우변의 마지막 부분을 단순화할 수 있다. K(t-h)를0006.jpg 로 대체하면, (6)의 단순화된 버전을 알 수 있다. (0007.jpg라는 사실 상기하라.)

 

 

0008.jpg

 

 

K(0)=1이라는 경계조건(boundary condition)에서, 미분 방정식은 다음과 같다.

 

 

 

0009.jpg

 

 

 

 

따라서 (8)에서의 로그를 이용하여, K(t)가 εL0에 도달하는 시간이 대략 아래와 같음을 알 수 있다.

 

 

0010.jpg

 

 

 

 

 

(5)으로 되돌아와서, (우면의 마지막 부분을 단순화함으로써) “적응 기간”이 얼마인지 확인했다. (즉, t0가 (9)에서와 같을 경우 t≤t0)에서. 다음을 알 수 있고,

 

 

0011.jpg

 

 

 

 

 

따라서

 

 

0012.jpg

 

 

 

 

 

앞에서 논의된 것처럼, 적응 기간 뒤에, cumulative weight H(t)는 선형으로 λω의 속도로 증가한다. ((10)에서처럼)“기하급수적 성장(exponential growth)”이 곧 cumulative weight이 적응기간동안 “굉장히 빠르게” 성장한다는 것을 의미하지는 않는다. 대신에, 그림 4에서 성장모습을 확인할 수 있다.

 

 

 

 

 

 

또, 이 부분의 계산 과정을 변형하여, 어떤 node가 s>1 트랜젝션을 평균적으로 참조하는 상황에도 쉽게 적용된다. 변형을 하기위해서, (2)에서 2를 s로 교체((5)에서는 아님)해야 하며, (3)과 (4), (7) - (10)에서 ln2를 lns 로 변환해야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

결론:

 

 

  1. low load 체제에서, 우리의 트랜젝션이 몇 차례 승인된 이후에, cumulative weight은 λω의 속도로 성장할 것이며, 여기에서 ω는 포괄적인 트랜젝션의 평균값이다.
  2. high load 체제에서, 우리의 트랜젝션이 몇 차례승인된 이후에 , cumulative weight H(t)는 소위 적응 기간동안 가속도가 붙는 상태로 증가하며, (10)의 공식에 따라 성장하고, 적응 기간이 종료된 이후에는 λω의 속도로 증가한다. (그림 4 참고) 사실상, 어떠한 합리적인 전략에 의해서이든지 cumulative weight는 적응기간이 종료된 뒤에 이 속도로 증가할 것이고, 그 이유는 필수적으로 모든 새롭게 등장하는 트랜젝션들이 간접적으로 우리의 트랜젝션을 승인할 것이기 때문이다.                                                     0013.jpg
  3. 적응기간이라는 것의 의미는 대부분의 현재의 tips이 (간접적으로) 우리의 트랜젝션을 승인하는 때 까지의 시점이라고 볼 수 있다. 일반적인 적응기간의 길이는 (9)에서 주어진다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. 가능한 공격 시나리오들

 

 

  1. 공격자가 판매자에게 지불하고, 트랜젝션이 이미 충분히 큰 cumulative weight라고 생각한 뒤에 물건을 받는다.
  2. 공격자는 double-spending 트랜젝션을 발행한다.
  3. 공격자는 수많은 작은 트랜젝션들(뛰어난 계산력으로 공격적으로)을 발행하고, 원래의 트랜젝션을 직간접적으로 승인하지는 않지만, double-spending 트랜젝션을 승인한다.
  4. 공격자는 수많은 Sybil identities를 보유할 수도 있고, 또 반드시 tips을 승인해야 하는 것은 아니다.0014.jpg
  5. 3번 내용 대신에 공격자는 모든 계산력을 이용하여 “큰” double-spending 트랜젝션(즉, 굉장히 큰 own weight)를 만들고, 이 트랜젝션이 정당한 트랜젝션 이전에 두 개의 트랜젝션을 승인할 수도 있다.(정당한 트랜젝션은 판매자에게 지불하기 위해 사용된 것이다.)
  6. “sub_DAG”가 “main_DAG”를 앞서기를 바랄 것이며, DAG가 지속적으로 double-spending 트랜젝션으로부터 성장하기를 원하기 때문이며, 이 경우 정당한 branch는 폐기된다.(그림 5 참고)

 

 

 

 

 

 

아랫 부분에서 하나의 big double-spending의 전략이 공격 확률을 높이는 것을 확인할 수 있을 것이다. 심지어 이러한 수학적 모델의 “이상적인” 상황 하에서 이 공격은 항상 성공한다.

 

 

 

 

적어도 3n의 double-spending 트랜젝션으로의 weight 정도를 가능하게 하는 nonce를 얻기 위해 필요로 하는 시간을 W(n)이라고 하자. W(n)이 파라미터 μ3-n과 함께 지수적으로 분산된 랜덤 변수라고 추측할 수 있다. (즉, 기댓값은 μ-13n) 여기에서 μ은 공격자의 계산력을 나타낸다.

 

 

 

 

 

 

판매자가 cumulative weight가 적어도 ω0인 경우에 정당한 트랜젝션을 받아들인다고 가정하면(그리고 이러한 상황은 원래의 트랜젝션 이후 t0 시간 단위에 발생하며) cumulative weight가 선형 속도 λω으로 상승한다고 기대할 수 있고, 여기에서 λ은 (정상 유저에 의해 만들어진) 종합적인 트랜젝션이 시스템으로 도달하는 속도를 나타낸다. 그리고 ω는 전체적인 트랜젝션의 평균 weight이다. ω1=λωt0 라는 사실을 알아두어야 하며, 이 공식은 그 시간의 정당한 branch의 전형적인 총 weight를 나타낸다.

 

 

 

 

[x]를 x보다 크거나 같은 가장 작은 정수라고 정의할 때, 0015.jpg 와 같으며, 따라서 0016.jpg 이다. (사실 ω1이 큰 경우 0017.jpg 이다.) 만약 t0의 시간 간격 동안에, 공격자는 가까스로 적어도 3n0의 weight를 제공하는 nonce를 얻을 수 있을 것이며, 그러면 공격은 성공할 것이다. 이 사건의 확률은 다음과 같다.

 

 

 

 

0018.jpg

 

 

 

 

 

(적어도 0019.jpg 이 작은 경우에 해당하며, 이 경우는 충분히 가능한 가정이다.) 그리고 나서 만약 이러한 “즉각적인” 공격이 성공하지 않는다면, 공격자는 지속적으로 n>n0에 대해서 weight 3n을 도출시키는 nonce를 찾을 것이며, 찾은 때에 정당한 branch의 총 weight가 3n보다 작기를 기대할 것이다. 이러한 가능성은 다음과 같다.

 

 

 

 

0020.jpg

 

 

 

0021.jpg 가 보편적으로 작아야 함에도 불구하고, 각각의 “level” n에서 공격은 일정한 가능성으로 성공하게 된다. 따라서 궁극적으로 공격이 성공하게 된다. 성공하기 전까지의 표준 시간은 대략 0022.jpg이며, 이러한 수치가 굉장히 큰 것으로 보일지라도, “최초의(t0)” 공격이 성공할 가능성은 굉장히 작은 것이 아니다. 따라서 다음과 같은 결론에 도달했다. 우리는 방어전략이 필요하다. 예를 들어 위에서부터 own weight을 제한하거나, 상수로 설정시키는 것이다.(Section 3에서 언급된 것처럼, 후자는 스팸을 완전히 막을 수 없어서 최고의 해결책은 아니다.)

 

 

 

 

m으로 정의되는 최고의 weight에 도달했을 때의 공격의 성공 확률을 고려해보자.

 

 

 

 

위의 논의의 관점에 따르면(그리고 또한 일부 Theory of Large Deviations[11]에서의 일반적인 직관을 사용해서), 만약 공격자가 main chain을 따라잡으려면, 허용된 최대 weight의 트랜젝션 만을 만들어내야 한다. 발행된 순간 이후 특정한 트랜젝션에서 cumulative weight가 t0의 시간에서 ω0일 때를 생각해보자. 그러한 트랜젝션의 적응 기간이 끝났다고 가정해보자. 따라서 cumulative weight는 λω의 속도로 선형적으로 증가한다. 이제 공격자는 double-spend 공격을 이 트랜젝션에 대해서 시작할 것이다. 최초의 트랜젝션이 발행된 시간에 그는 비밀스럽게 double-spending 트랜젝션을 준비한다. 그리고 weight 값이 m인 다른 트랜젝션을 만들어내며, 이것이 double-spending 트랜젝션을 승인한다. 만약 어떤 순간에(판매자가 정당한 트랜젝션을 받아들이기로 결정한 뒤) 공격자의 subtangle이 정당한 subtangle보다 weight이 더 클 수 있으며, 따라서 double-spending 공격은 성공할 지도 모른다. 만약 이러한 사태가 발생하지 않는다면, double-spending 트랜젝션은 다른이들에 의하여 승인되지 않을 것이다.(왜냐하면 정당한 트랜젝션이 더 많은 cumulative weight를 나타낼 것이며, 필수적으로 모든 새로운 tips은 간접적으로 정당한 트랜젝션을 승인함.) 따라서 double-spending 트랜젝션은 orphan 상태가 될 것이다.

 

 

앞에서처럼 μ를 공격자의 계산력이라고 가정하자. G1, G2, G3, ... 는 i.i.d.를 나타낸다. 파라미터 μ/m에 대한 지수 랜덤 변수(즉, 기대값 m/μ)이며, 또한 0023.jpg이다. 분명히 V1, V2, V3...는 i.i.d.이며 파라미터 1에 대한 지수 랜덤 변수이다.

 

 

 시간 t0일 때(이 때 cumulative weight은 ω0)에 판매자가 트랜젝션을 받아들이기로 결정했다고 가정하자. 이 때 공격자가 double-spend 공격을 성공할 확률을 생각해보자. ([12]의 7.7 참고)     M(θ) = (1-θ)-1 을 파라미터 1에 대한 지수 분포의 moment generating function이라고 하자. ([11], [12]의 8.5의 가정 5.2 참고, 그 곳에서 inequialty를 서술하지는 않지만 대략적인 equiality) α∈(0,1)에 대 하여 다음과 같음을 알 수 있다.

 

 

 

 

 0024.jpg

 

 

 

여기에서 φ(α) = -lnα + α - 1 은 M(-θ)의 Legendre 변환이다. 일반적으로 α∈(0,1)에 대 하여 φ(α)>0임을 알 수 있다.(Exp(1) 랜덤 변수의 기대값은 1과 같다는 것을 상기하라.)

 

 

또 0025.jpg라고 하자. (그렇지 않다면 공격자의 subtangle이 궁극적으로 정당한 것을 추월할 확률은 1에 도달하게 된다.) 이제 특정 시간 t0에 ω0의 weight를 능가하려면, 공격자는 적어도 ω0/m(단순함을 위하여 integer 부분을 제거)의 트랜젝션을 최대 weight m으로 시간 t0동안에 발행해야 한다. 따라서 (11)을 활용하여, double-spending 트랜젝션이 특정시간 t0에 더 많은 cumulative weight을 가질 확률이 대략 다음과 같다는 사실을 알 수 있다.

 

 

 

 

 0026.jpg

 

 

 

 

 

 

 

 다시말해서, 위의 가능성이 너무 작아 보이지만, 우리는 일반적으로 0027.jpg 이 커야 하며, 0028.jpg 은 너무 작지는 않아야 한다.

 

 

특정 시간 t≥t0 일 때, 정당한 트랜젝션의 cumulative weight이 대략0029.jpg 이다. (적응 기간이 종료되었다고 상정한 것을 기억하라. 따라서 cumulative weight는 λω의 속도로 성장한다.) (12)와 비슷하게, double-spending 트랜젝션이 시간 t≥t0에 대해서 더 많은 cumulative weight를 나타낼 확률은 대략 다음과 같다.

 

 

 

 

 0030.jpg

 

 

 

 

 

전형적으로 0031.jpg 이라는 사실을 알 수 있다. (적응기간 동안에 cumulative weight가 λω보다 낮은 속도로 성장하기 때문이다.) 어찌되었든, double spending 공격이 성공할 확률은 다음과 같다.

 

 

 

 

 

  

 

 

 

 

 

 

 

 0032.jpg

 

 

 

 

여기에서 a V b := max(a,b)이다. 예를 들어, m = ω = 1이라고 하고, μ = 2, λ = 3이라고 하자. (이 가정의 의미는 공격자의 힘을 나머지 네트워크보다 약간 아래라고 가정하는 것이다.) 트랜젝션의 cumulative weight 이 시간 12에 대하여 32라고 하자. 그러면, 0033.jpg0034.jpg 이며, (14)를 통해서 상갛값이 약 0.29라는 사실을 확인할 수 있다. (다른 변수가 동일하고) μ = 1이라고 가정하면, 0035.jpg0036.jpg 이며 (14)에서 대략 0.00001135이 등장하며, 상당히 큰 차이가 발생한다.

 

 

위의 논의로부터, 시스템이 안전하려면 λω > μ라는 사실을 도출할 수 있다. (그렇지 않다면 (14)에 대한 추정값은 무의미해진다.) 즉 "정직한" 트랜젝션의 input flow가 공격자의 계산력보다 충분히 커야 한다는 의미이다. iota의 도입 초기에 (즉, checkpoint와 같은) 추가적인 보안 조치가 필요하다는 점을 시사한다.

 

 

충돌하는 두 개의 트랜젝션 중에서 어떤 것이 유효한지 결정하는 전략에서, 온전히 cumulative weight에 의하여 결정하는지에 대해 주의해야 한다. 왜냐하면 Section 4.1에서와 유사한 공격의 대상이 될 수 있기 때문이다. (공격자는 아마도 double-spending 트랜젝션을 한참 전부터 준비했을 수도 있으며, 그 트렌젝션을 참조하는 비밀 subchain과 subtangle을 만들었을 수도 있으며, 그리고 나서 판매자가 정당한 트랜젝셔능ㄹ 받아들이고 난 다음에 이러한 subtangle을 전파한다.) 충돌하는 두 개의 트랜젝션 중 하나를 선택하는 더 나은 방법은 다음 section에서 서술하는 방법이 될 것이다. tip selection 알고리즘의 수행과, 둘 중 어떠한 트랜젝션이 선택된 tip에 의하여 (간접적으로) 승인되는 과정을 살펴봐야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.1 parasite chain 공격 / 새로운 tip 선택 알고리즘.

 

다음의 공격(그림 6)을 고려해보면, 공격자는 비밀스럽게 chain/subtangle을 작성하고, 때때로 main tangle을 참조하여 더 많은 score를 얻으려 한다. good tips 의 score은 대략 메인 tangle의 모든 자신만의 weight의 총 합이고, 반면 공격자의 tips은 또한 parasite chain의 모든 own weights의 총 합을 포함한다. ). 또, 네트워크 레이턴시는 체인을 혼자서 만들만큼 충분히 강력한 컴퓨터를 보유하고 있는 사람에게는 큰 문제가 아니기 때문에, 공격자는 아마도 더 많은 height을 parasite tips으로 가져다 줄 수 있을 것이다. 마침내, (아래의 그림 6 참고. 동일한 공격자의 트랜젝션들을 승인하는 수많은 트랜젝션들을 발행함으로써) 공격자의 tips의 숫자는 공격의 순간에 인공적으로 증가하며, 정직한 node들이 가능한 tips을 선택하는 단순한 특정한 선택 전략을 사용하는 경우에 가능하다.

 

 

이러한 공격을 방어하기 위해서, main tangle이 더 많은 (활성화된) 해쉬 파워를 가지고 있다는 사실을 이용할 것이고, 따라서 공격자보다 더 많은 cumulative weight을 더 많은 트랜젝션에 대해 얻을 수 있다. 이러한 아이디어는 MCMC(Markov Chain Monte Carlo) 알고리즘을 사용하여 참조할 2개의 tip을 선택하는 것이다.

 

 

Ηx를 현재 site(즉 tangle graph에 표현된 것 중 하나의 트랜젝션)의 cumulative weight라고 하자. 모든 own weights가 1과 같다고 가정했다는 것을 기억하라. 따라서 어떤 하나의 tip의 cumulative weight는 항상 1이 되며, 다른 sites의 cumulative weight는 적어도 2이다.

 

 

 

 

 

 

 (random walker)라고 불리는 입자들을 그 탱글의 sites에 배치하고, 그것들로 하여금 랜덤한 방향으로 움직이게 하는 것이다. 움직임에 의하여 "선택된" tips는 승인될 지도 모르는 후보군이 된다. 알고리즘은 다음과 같은 방식으로 서술된다. 

 

  1. (W가 선택될 정도로 큰 경우) 모든 트랜젝션의 cumulative weight는 W와 2W사이에 존재한다.
  2. N 개의 입자를 독립적으로 배치한다. (N은 10정도이다.)
  3. 이러한 입자들은 독립적인 이산시간(discrete time) 의 랜덤적인 움직임을 "tips"을 향해 수행할 것이다. (즉 y가 x를 승인하는 경우에만 (다른 경우에는 불가) x에서 y로의 변환은 가능하다.)
  4. 해당 tip set에 도달하는 두 개의 random walks를 통해 승인될 2개의 tip을 알 수 있다.0037.jpg
  5. 움직임들의 변환 가능성은 다음과 같이 서술된다. 만약 y가 x를 승인하면(이러한 것을 기호로 0038.jpg라고 함), 변환 가능성 Pxy는 0039.jpg에 비례하며, 즉 다음과 같다.

 

0040.jpg

 

 

 

여기에서 α > 0 는 선택될 파라미터이다.(α = 0으로부터 시작할 수 있다.)

 

 

 

이러한 알고리즘이 "local"하다는 것을 알아두어야 한다. 굳이 genesis까지의 모든 계산을 할 필요는 없다.

 

 

알고리즘이 의도한 대로 작동하는지 확인하기 위해서, 먼저 "lazy tips"(이것들은의도적으로 일부 오래된 트랜젝션을 승인하여, 확인 작업을 방해한다.)를 고려해야 한다. 그림 6을 살펴보면, 심지어 그 입자가 그러한 tip에 의하여 승인된 site 내에 존재하더라도, lazy tip이 선택될 가능성은 낮다. 그 이유는 (15)에서처럼 cumulative weight의 차이가 클 것이기 떄문이다.

 

 

다음으로, 이러한 공격을 생각해볼 수 있다. 공격자가 비밀적으로 chain을 만든다("parasite chain") 이 chain은 (그림 6에서 나타난 것과 같이)---------------한다. 특정 지점에서 공격자는 main tangle 내에서 트랜젝션을 발행한다. (다른 red circle에 나타나 있다.) 그리고 판매자가 받아들일 때까지 대기한다. parasite chain은 때때로 main tangle을 참조하며 (여기에서 이름이 유래했고) 결국 그것의 sites는 해당 chain에서 cumulative weight이 그렇게 크지 않음에도 불구하고, 훌륭한 height와 score를 갖게 된다. (심지어 main tangle의 height과 score보다 뛰어나게 된다.) 판매자의 트랜젝션 이후에 main tangle을 참조할 수 없다는 사실을 기억하라. 또한 그림에서와 같이 공격자는 공격의 순간에 자신의 tip의 숫자를 인공적으로 상승시킬 수도 있다. 공격자의 아이디어는 node가 parasite chain을 참조하도록 만드는 것이며, 이를 통하여 "선의의" tangle이 orphaned 되기를 바라는 것이다.

 

 

 

 

 

이제, 왜 MCMC 선택 알고리즘에서 공격자의 tip을 선택하지 않을 확률이 높다는 사실은 자명하다. 기본적으로 알고리즘이 게으른(lazy) tips을 선택하지 않는 이유와 동일하다. parasite chain의 sites는 그들이 참조하는 main tangle 의 sites보다, 훨씬 더 작은 cumulative weight를 나타낼 것이다. 따라서, random walk가 parasite chain으로 점프하게 된다고 생각하는 것은 일리가 없다. (그곳에서 시작되지 않는다면, 그러나 이러한 상황도 거의 확률이 희박한데, 왜냐하면 main tangle에서 더 많은 sites를 포함하기 때문이다.)

 

 

 

 

그 다음으로, 왜 nodes가 (적어도 대략적으로라도) 이 알고리즘을 따르는지에 대해 이야기해 보겠다. Section 1에서, 적어도 “좋은” 비율의 nodes는 reference 알고리즘을 따를 것이다. 또한 컴퓨터 계산과 네트워크의 딜레이로 인해서, tip 선택 알고리즘은 (트랜젝션이 발행된 순간의) 과거의 tangle의 모습을 바탕으로 계산을 진행할 것이다. reference 알고리즘에서, 의도적으로 이러한 과거의 사진을 좀더 과거로 참조하는 것이 가능할 수도 있으며, 다음에 발표되는 글에서 이것에 대해 다룰 예정이다. “이기적인”node가 자신의 트랜젝션의 승인 속도를 높이고자 한다고 가정해보자. 이 section의 MCMC 알고리즘(상당한 비율의 다른 node에 의하여 선택됨)에서는 set of tips의 확률 분포를 규정한다. 분명하게 말해서, 그 노드의 자연적인 최초의 선택은 최대의 분포값을 얻을 수 있는 tips을 선택할 것이다. 그러나 (다른이들도 충분히 이기적일 가능성이 있으며) 만약 많은 다른 node들도 똑같이 이기적인 방식으로 행동한다면, 모두가 패배하게 된다. 많은 새로운 트랜젝션은 (거의) 동시에 동일한 2개의 tips을 선택할 것이며, 따라서 다음의 승인에 대해서 과도한 경쟁이 발생한다. (node는 과거의 모습을 이용하기 때문에, 그 2개의 tip의 대량 승인으로 인하여 증가하는 cumulative weight를 “인지하지는” 못한다.) 따라서 심지어 이기적인 node는 일종의 random tip 승인 알고리즘을 사용해야 하며, 선택된 tips의 확률 분포는, 어떤 의미로 살펴보면, 기본값의 확률 분포(즉, 참조 tip selection 알고리즘에 의하여 만들어진 분포)와 “많은 차이가 나지는” 않는다. (이기적인 nodes로 인하여 발생한) 이러한 전체의 확률 분포가 기본 확률 분포와 같다고 주장하는 것은 아니지만, 유사하다는 의미이다. 즉 “나쁜” tip을 선택할 확률은 여전히 낮은 상태이다. (Bitcoin과는 달리) 어떤 경우에서든지 node가 이기적인 행동을 함으로써 얻을 수 있는 incentive는 그리 많지 않으며, 이득은 컨펌 시간이 약간 줄어든다는 것 뿐이다.

 

 

 

 

 

 

또한, transition 확률이 반드시 (15)에서처럼 규정되어야 한다고 확정된 것은 아니다. 지수(exponent) 대신에, 급격히 감소하는 다른 함수를 활용해도 된다. 예를 들어 f(s) = s-3 등이다. W와 N에 대한 선택도 자유롭게 할 수 있다. 이 부분의 핵심은 MCMC를 tip 선택에 사용한다는 것이다. 이론적으로 이러한 파라미터들이 반드시 선택되어야 한다는 “이론적인” 논의가 존재했는지는 분명치 않다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2 분리 공격

 

위의 MCMC 알고리즘에 대한 공격 방식은 Aviv Zohar에 의하여 제안된 것으로써, high-load 체제에서, 공격자는 tangle을 2개의 branch로 나누려고 시도하며, 2개 사이의 균형을 유지하려 한다. 결과적으로 두 개의 branch는 모두 성장하게 된다. 이를 방지하기 위하여 정직한 node는 (효율적으로 그들을 결합하여) 두 개의 branches를 동시에 참조한다. 그리고 공격자는 반드시 적어도 두 개의 충돌하는 트랜젝션을 split의 초기에 제시해야 한다. 그리고 나서 공격자는 절반의 네트워크가 각각의 branch에 기여하기를 기대하고, 이를 통해 상대적으로 적은 계산력으로도 랜덤적인 출렁임을 “보상”할 수 있기를 기대한다. 그리고 나서, 공격자는 두 브랜치들의 금액과 동일한 금액을 소비할 수 있다.

 

 

 

 

 

 

이러한 공격을 막기 위해서 “날카로운 문지방” 규칙을 사용할 필요가 있다. (Bitcoin에서 “가장 긴 체인”을 선택하는 것과 비슷하다. ) 이 규칙을 통해서 두 branch 간의 균형을 유지하는 것이 상당히 어려워진다. 예를 들어서, 한 branch의 총 weight가 537이라고 가정고, 다른 branch의 총 weight가 거의 동일한 528이라고 하자. 만약 그러한 상황에서 정직한 node가 최초의 branch를 거의 1/2확률로 선택하게 된다면, 아마도 공격자는 brance간의 균형을 유지할 수 있을 것이다. 하지만 만약 정직한 node가 최초의 branch를 1/2의 확률보다 더 크게 선호한다면, 공격자는 아마도 균형을 유지할 수 없을 것이다. 그 이유는 피할 수 없는 랜덤적인 출렁임에서 네트워크는 재빨리 branch 중 하나를 선택할 것이고, 다른 것을 배제하기 때문이다. 분명하게, MCMC 알고리즘이 이런 방식으로 행동하려면, 굉장히 빠르게 소멸하는 function f를 선택해야만 하며, 상대적으로 large depth에서 random walk를 시작해야 한다. (이를 통해 갈라지기 전에 시작되었다는 것을 추론할 수 있다.) 이 경우에, random walk는 “더 무거운” branch를 더 높은 확률로 선택할 것이다. 심지어 branch들 간의 총 weight의 차이는 작을 것이다.

 

 

 

 

 네트워크 동기화 문제 때문에, 공격자의 작업이 굉장히 어렵다는 사실은 무시될 수 있다. 공격자는 최근에 발행된 선의의 트랜젝션들에 대해서 인지하지 못할 수도 있다. 그러한 공격을 막는 또다른 방법은 충분히 강력한 entity에서 많은 수의 트랜젝션을 한번에( 하나의 branch 안에) 발행하는 것이다. 따라서 급격하게 power의 균형을 깨고, 공격자가 이러한 변화에 대처하기 어렵게 만든다. 만약 공격자가 가까스로 split을 유지했다고 하더라도, 최근의 트랜젝션은 약 50퍼센트의 컨펌 confidence(Section 1참고)을 나타내며, 성장하지 않을 것이다. 따라서 "정직한" nodes는 미리 split된 트랜젝션만을 승인하기 시작할 수 있다. ( 그리고 두 개의 충돌하는 트랜젝션 모두를 승인하지 않을 수도 있다. )

 

 

tip selection 알고리즘의 변형을 고려할 수도 있다. 예를 들어 만약 node가 두 개의 큰 subtangle을 볼 때, own weight가 더 큰 쪽을 먼저 선택하며, 그리고 나서 위의 MCMC 알고리즘을 사용하여 tip selection 과정을 수행하는 것이다.

 

 

또한, 다음의 아이디어는 고려할 만한 가치가 있다. (15)의 변환 가능성을 Hx - Hy에만 의존하지 않도록 하며, Hx에 의존하도록 하는 것이다. 이러한 방식으로 walker가 tangle의 깊은 곳에 존재할 때 (더 약한 branch로의 이동을 막기 위해서) 다음 단계의 Markov chain은 예측이 가능해진다. 하지만 tips에 가까워질 수록 좀 더 퍼져나가게 된다. (결과적으로 승인될 2개의 트랜젝션의 선택은 충분히 무작위적으로 이루어진다.)

 

 

 

 

 

 

 

 

결론:

 

  1. 공격자가 시스템의 성능을 “초월함으로써” double-spend 공격을 시도하는 몇가지 공격 전략에 대해서 고려하였다.
  2. “large weight”공격의 의미는 double-spend가 되려면 공격자는 굉장히 큰 weight를 시도하게 된다는 것이다. 이를 통해서 정당한 subtangle의 weight보다 상승한다. 이러한 전략은 수락된 own weight가 unbounded인 경우에는 위험한 상황이다. 해결책으로, 트랜젝션의 own weight에 제한을 두거나, 상수로 두는 방법도 있다.
  3. 트랜젝션의 최고 own weight가 m일 때, 최고의 공격자의전략은 항상 최고의 own weights로 된 트랜젝션을 만들고, 이것은 double-spending transaction을 참고한다. “가장 정직한”트랜젝션들의 입력 흐름은 공격자의 계산력보다 충분히 크며, 따라서 double-spending 트랜젝션이 더 많은 cumulative weight가 필요하며 이러한 내용은 공식 (14)((14)하의 예시 참고)에서 사용하였다.
  4. “parasite chain”을 만드는 것을 기반으로 하는 공격에서 height 혹은 score에 기반한 승인 전략은 의미가 없다. 공격자가 정당한 tangle보다 더 높은 height과 score값을 같기 때문이다. 반면에, MCMC tip 선택 알고리즘(Section 4.1)에서 이러한 종류의 공격으로부터 잘 보호해 줄 것이다.
  5. 보너스로서, “게으른 nodes”에 대한 보호를 제공한다. 게으른 nodes는 일부 오래된 트랜젝션들을 승인하여, tangle을 유효화하는데에 필수적인 계산들을 회피한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.3 양자계산에 대한 저항성

 

 

(아직까지는 가정이지만) 잠재적으로 성능이 좋은 양자 컴퓨터는 반복적인 계산 능력에서 엄청난 능력을 보여줄 것이다. Bitcoin block을 만들기 ndl해서 nonce를 찾는 과정은 그런 반복적인 계산의 사례이다. 오늘날, 평균적으로 약 268의 논스들을 찾아야 적당한 해쉬를 찾을 수 있으며, 비로소 블록을 만들어낼 수 있다. (e.g.[13] 참고) 양자 컴퓨터가 0041.jpg 만큼의 작동을 하여 문제를 해결하는 데 반해, 기존 컴퓨터에서는 0042.jpg 의 작동으로 문제를 해결하게 된다. 따라서 양자 컴퓨터는 대략 0043.jpg만큼 비트코인 채굴에서 기존의 컴퓨터보다 뛰어날 것이다. 또 만약 블록체인이 해쉬파워가 증가함에 따라 난이도를 높이지 않으면 orphaned block이 증가하여 좋지 않을 것이다.

 

 

같은 이유로 “large weight” 공격은 또한 양자 컴퓨터에서 효율적이다. 그러나 Section 4에서 제시된 것과 같이 weight의 capping은 양자컴퓨터의 공격을 효과적으로 막아낼 것이며, 이유는 다음과 같다. iota에서 트랜젝션을 발행하기 위하여 찾아야 하는 적당한 해쉬값을 찾기 위하여 검색해야 하는 nonce들의 숫자는 단지 38 정도이다. “이상적인”양자컴퓨터는 따라서 34=81의 명령을 내리며, 이미 받아들일만 한 것이다. ( 0041.jpg 은 쉽게 0044.jpg 정도를 의미할 수 있다. ) 또한, 트랜젝션을 발행하기 위해 nonce를 찾는 시간보다 다른 작업을 하는 시간이 더 오래 걸리며, 이 부분이 양자컴퓨터에 대한 방어력을 제공한다.

 

 

 

 

양자컴퓨터에 대해서 tangle은 Bitcoin 블록체인보다 더 나은 보안성을 보인다고 생각한다.

 

 

 

 

1

땡글IN님의 서명

<신간>가상화폐 투자전략 리포트

<뉴스>비트데이즈

 

유용한 정보

 

<초보 채굴 방법>

클레이모어 마이너 -------- https://www.ddengle.com/2709327

AS --------------------------- https://www.ddengle.com/2749013

팀뷰어 / 크롬 원격 -------- https://www.ddengle.com/2768986

Whattomine ---------------- https://www.ddengle.com/2808037

모네로 채굴 명령어 모음 -- https://www.ddengle.com/2971503

클레이모어 채굴 명령어 --- https://www.ddengle.com/3097132

수퍼노바 풀 ----------------- https://www.ddengle.com/2900726

배치파일 정리 -------------- https://www.ddengle.com/2980251

웨일코인 쉽게 채굴하기--- https://www.ddengle.com/3213004

DECRED 웹 지갑 만들기 --- https://www.ddengle.com/3126084

Zcash 계열 코인 비교 ------ https://www.ddengle.com/3119592

 

_____________________________________________

<백서 번역 / 요약>

뮤지코인 ------------ https://www.ddengle.com/2683402

크립토노트 --------- https://www.ddengle.com/2717149

Signatum ----------- https://www.ddengle.com/2810370

IOTA ---------------- https://www.ddengle.com/2847836

OMG ---------------- https://www.ddengle.com/2920066

Komodo ------------ https://www.ddengle.com/3001916

Steem --------------- https://www.ddengle.com/3028636

Whalecoin ---------- https://www.ddengle.com/3134211

디지털노트 --------- https://www.ddengle.com/2948339

파스칼 코인--------- https://www.ddengle.com/3257061

웨일코인 ------------ https://www.ddengle.com/3134211

 

_____________________________________________

 

 

<코인뉴스>

구글에 비트데이즈(Bitdays)를 검색해주세요.

www.bitdays.co.kr

 

※ 원하시는 주제를 댓글로 남겨주시면 참고하겠습니다.~ㅎㅎ

댓글 8
default debug random = 0 / type = READ / detected = READ

땡글 FAQ

FAQ에 올라오는 문서중 FAQ에 맞지 않는 문서는 관리자에 의해 다른 곳으로 옮겨질 수 있습니다.

List of Articles
번호 제목 추천 수 조회 수 글쓴이 날짜
공지 이 게시판의 글 퍼감은 주의해주세요. 15 5 6433
쌍둥아빠
2017.08.28
39 비트코인 용어 사전 P - 마지막 10 16 7023
땡글IN
2017.08.18
38 Signatum에 대한 간단한 정보   whattomine 1위로 제치고 나왔던 Signatum 입니다.~ 간단히 정리해보겠습니다. ==============================================================   https://si... 19 file 4 4439
땡글IN
2017.08.18
37 Whattomine 사용법 채산성 계산하기 whattomine.com을 이용하면 편리하게 코인 채산성을 계산이 가능합니다.   하루에 얼마를 벌 수 있는지, 현재 최대 채산성의 코인이 무엇인지 알 수 있습니다. ... 9 file 10 12117
땡글IN
2017.08.22
36 시그나텀 Signatum 백서 번역 및 요약입니다. White Paper 안녕하세요   Signatum의 White Paper를 요약해 보았습니다.         Signatum은 4개의 해쉬 방식 Skein, CubeHash, Gost-Streebog, Fugue   이 합쳐진 Skunk Has... 17 file 11 5309
땡글IN
2017.08.21
35 Q 비트코인은 누가 만들었나요? 6 2 3190
쌍둥아빠
2017.08.22
34 Q 비트코인, 어디에서 쓸 수 있죠? A. 전 세계적으로 비트코인을 받는 가맹점 수는 상당히 많습니다. http://coinmap.org의 정보에 따르면 현재 오프라인 가맹점 수는 전세계에 9354개입니다. 비트... file 2 2468
쌍둥아빠
2017.08.22
33 Q 비트코인은 어디서 사고 팔 수 있죠? 1 2 2775
쌍둥아빠
2017.08.22
32 Q 비트코인 가격은 어떻게 정해지나요? 7 3 3558
쌍둥아빠
2017.08.22
31 Q 리치리스트가 뭔가요? 4 2 2789
쌍둥아빠
2017.08.22
30 Q 비트코인의 단위는 어떻게 되나요? 1 1 4460
쌍둥아빠
2017.08.22
29 Q 비트코인은 얼마나 발행됐나요? A. 비트코인의 특징은 발행량이 미리 정해져 있다는 것입니다. 비트코인의 총 발행량은 2100만 BTC입니다. 이 코인은 블록을 생성한 채굴자들에게 보상으로 지급... 5 file 2 4106
쌍둥아빠
2017.08.22
28 Q 비트코인의 발행이 종료되면 채굴할 필요가 없어지나요? 13 6 7182
쌍둥아빠
2017.08.22
27 Q 비트코인이 기존의 화폐 시스템과는 무엇이 다르죠? 1 1 2241
쌍둥아빠
2017.08.24
26 Q 비트코인 주소가 뭐죠? 2 1 6521
쌍둥아빠
2017.08.24
25 Q 트랜잭션이 뭐죠? A. 쌍둥아빠가 땡글이에게 코인을 보냈습니다. 그런데 땡글이는 코인이 왔는지 안 왔는지 알 수가 없다고 합니다. 이거 어떻게 하죠? 쌍둥아빠가 1MpxWLPyFT93WdX... 3 file 2 6957
쌍둥아빠
2017.08.24
24 Q 블록체인이 뭐죠? A. 비트코인에서 수많은 전송들(이하 트랜잭션)이 전파됩니다. 하지만 전파만 되었을 뿐 아직 이 트랜잭션들이 승인을 받은 것은 아닙니다. 이 트랜잭션들이 네트... 8 file 6 4018
쌍둥아빠
2017.08.24
23 Q 제네시스 블록이란? 2 3 4548
쌍둥아빠
2017.08.24
22 Q 비트코인은 어디서 생기죠? 2 0 2708
쌍둥아빠
2017.08.24
21 Q 이체수수료는 뭐죠? 4 1 3038
쌍둥아빠
2017.08.24
20 Q 왜 10분이나 걸리나요? 4 2 3992
쌍둥아빠
2017.08.24
19 Q 블록체인과 지갑은 어떤 관계인가요? A. 앞에서 계속 블록체인에 대한 얘기가 잠깐씩 나왔었죠? 이쯤에서 블록체인에 대한 정리를 한 번 하고 넘어가겠습니다. 비트코인에는 최초 블럭genesis block이... 4 file 5 3496
쌍둥아빠
2017.08.24
18 Q 비트코인은 복사하기가 쉽지 않나요? 2 1 4264
쌍둥아빠
2017.08.24
17 Q 비트코인은 해킹을 당하기 쉽지 않나요? 5 2 3098
쌍둥아빠
2017.08.24
16 Q 양자컴퓨터가 나오면 비트코인이 해킹당한다던데요? 15 11 6886
쌍둥아빠
2017.08.24
15 Q 이더리움은 누가 만들었나요? 10 5 3211
쌍둥아빠
2017.08.24
14 Q 스마트 컨트랙트Smart Contract가 무엇이죠? 4 9 4058
쌍둥아빠
2017.08.24
13 Q 이더리움이 비트코인과 다른 점은 무엇이죠? A. 이더리움이 비트코인과 다른점은 바로 스마트 컨트랙트를 손쉽게 작성할 수 있다는 점입니다. 기존에는 스마트 컨트랙트를 구현하기 위해서는 별도의 블록체인... 2 file 7 4832
쌍둥아빠
2017.08.24
12 이오타 IOTA 백서 번역 및 요약입니다. White Paper 1/2 안녕하세요   IOTA의 white Paper를 요약해 보았습니다.       IOTA는 현재 coinmarketcap의 6위를 차지하며, 기존의 채굴 방식과는 다르다는 특징이 있습니다. ... 5 file 2 9821
땡글IN
2017.08.25
11 비트코인 / 이더리움 지갑 추적하기   [비트코인 / 이더리움 트랜젝션에 대한 의문.]   1. 내가 송금한 전자화폐가 잘 도착하고 있을까?   내가 보낸 전자화폐가 언제 도착하는지 궁금해하는 경우가 ... 15 file 12 58351
땡글IN
2017.08.25
10 하드웨어지갑 Ledger Nano S 설치하기 하드웨이 지갑으로는 Ledger Nano S (이하 Ledger) 가 많이 사용되고 있습니다. Ledger를 사용하기 위해서는 크롬 웹 브라우저를 사용해야합니다. 크롬이 설치가 ... 8 file 7 5521
쌍둥아빠
2017.08.25
9 하드웨어지갑 Ledger Nano S 코인 받기/보내기 받기 이 하드웨어지갑의 코인 주소로 코인을 보내보겠습니다. 상단의 [RECEIVE]를 클릭합니다. 3Fu2KynFV39q24kbShbWnaVK75X2G4EsmF 이것의 이 지갑의 주소 중 하... 17 file 3 8079
쌍둥아빠
2017.08.25
이오타 IOTA 백서 번역 및 요약입니다. White Paper 2/2 8 3 3412
땡글IN
2017.08.28
7 Q 라이트코인은 무엇인가요? A. 비트코인은 10분에 한 번씩 블록이 생성되므로 그만큼 전송이 완료되는 데 시간이 오래 걸립니다. 시간이 오래 걸린다는 것은 그만큼 오류 발생 확률을 낮춘다... 13 file 7 5075
쌍둥아빠
2017.08.28
6 Q 이더리움 클래식 Ethereum Classic은 무엇인가요? A. 이더리움 이외에 이더리움 클래식이라는 코인이 또 있습니다. 순대국집 옆에 &ldquo;원조 순대국&rdquo;집이 또 있는 격입니다. 누가 더 맛있을까요? 이더리움... 5 file 5 5379
쌍둥아빠
2017.08.28
5 Q 비트코인 캐쉬Bitcoin Cash는 무엇인가요? A. 비트코인은 아직도 개발 진행형입니다. 전송할 수 있는 이체갯수가 10분에 대략 1500~2000개 정도로 낮은 수준입니다. 이 때문에 우선순위가 미뤄지는 전송들... 27 file 15 8517
쌍둥아빠
2017.08.28
4 Monacoin 소개 Monacoin은 2014년 라이트코인의 포크로써, 일본에서 만들어진 코인입니다.         알고리즘은  Lyra2REv2 (450000블록 이전에는 Scrypt) 프리마이닝 없음 블록... 16 file 6 6964
땡글IN
2017.08.29
3 오미세고 OmiseGO 백서 번역 및 요약입니다. White Pap... OmiseGO 요약입니다.   OmiseGO는 eWallet 솔루션으로,  2017년도 4분기에 정식 서비스가 시작될 예정입니다.   OMG 이전의 결제 시스템에는 여러가지 단점이 존... 9 file 7 8518
땡글IN
2017.09.01
2 디지털노트 DigitalNote XDN 백서 번역 및 요약입니다.... 사유를 적지 않고 게시글 내용 삭제시 레벨이 강등됩니다.   질문은 주제별 게시판에 맞게. 중고제품 판매는 장터에. (레벨5 이상) ICO는 ICO게시판에.(레벨5 이... 13 file 8 8646
땡글IN
2017.09.05
1 오미세고 OmiseGO 백서 번역 및 요약입니다. White Pap...   OMG 백서 앞부분 링크: https://www.ddengle.com/board_free/2920066     최근 중국정부에서 ICO와 토큰의 거래를 전면 중단하고 환불해야 한다는 경고를 했습... 50 file 16 8282
땡글IN
2017.09.06
목록
Board Pagination Prev 1 2 Next
/ 2
default debug random = 0 / type = READ / detected = READ