BlockChain
-
pBFTBlockChain 2018. 11. 13. 10:56
Byzantine failur model 분산 시스템에서 각 노드간에 상태를 알 수 없다 일부노드가 악의적이거나 장애가 났을 경우 가 있다고 가정하는 모델이다. BFT라고 불리는 시스템은 불량인 노드가 f개가 있을때까지 실뢰할 수 있다는 것을 가정한 시스템이다 예를 들어 5f개라면 전체노드중 1/5이 Byzantine Failure일때 정상적으로 동작하는 모델을 뜻한다. 어떤 노드가 Byzantine Failure일 상황은 크게 두가지이다. 메시지를 보내지 않는 노드 악의적으로 메시지를 보내는 노드 1번의 경우가 발생되면 해당 네트워크를 신뢰 할 수 있는지 판별하기 위해서 (N-f)개의 정족수로 판단 하여야한다. 2번의 경우 (N-f)메시지 중에 악의 적인 노드 f개가 있을때 (N-f) - f > f 라..
-
Raft Consensus AlgorithmBlockChain 2018. 11. 12. 18:00
Consensus Algorithm이란 분산 데이터에서 데이터를 동기화 시키기 위한 알고리즘 Raft는 Consensus Algorithm중 하나로써 다음과 같은 상태를 가진다 Follower State Candidate State Leader State 1 처음 모든 노드는 follower State상태가 된다. Follow State 상태 각 노드에 Election Timeout시간이 랜덤에 부여되고 이시간을 먼저 소진 한 노드가 Candidate State 상태가 되어 자기자신에게 투표후 다른 노드에게 투표해 달라는 신호를 요청한다. 만약 일정 시간동안 응답이 안오면 다시 Election Timout시간을 보낸다. Candidate 노드가 투표를 요청하면 Follow노드들은 투표를 진행 하고, 투표..
-
Geth Trie insertBlockChain 2018. 11. 9. 14:32
Trie insert 테스트 trie_test.go 의 insert를 통하여 이더리움의 머클 페트리시아가 어떻게 데이터를 Insert하는 디버그 과정 trie := newEmpty() updateString(trie, "doe", "reindeer") updateString(trie, "dog", "puppy") updateString(trie, "dogglesworth", "cat") trie_test.go 위 코드를 따라가면 trie.go 의 trie.Update(key,value) 메소를 따라 간다 func (t *Trie) Update(key, value []byte) { //트라이에 변경을 시도하려는 함수 호출 if err := t.TryUpdate(key, value); err != nil {..