Gidhub BE Developer

BlockChain (2)

2018-02-06
goodGid

  • 원문은 Blog에서 확인하자 !

  • 아래는 위 Blog에서 핵심적인 부분(주관적)을 발췌하였다.


데이터를 중앙서버가 가지는 것이 아니라, 각 노드들이 동일한 복제본을 각각 보관하는 것입니다.

각 노드들이 가진 데이터를 지속적인 싱크를 통해서 일치시켜 나감으로써 데이터의 정합성을 유지합니다.

이 데이터는 다수의 어카운트로 구성되는데, 어카운트에는 두가지 형태가 있습니다.

  1. 사용자 어카운트 (프라이빗 키에 의해 제어됨)
  2. 컨트랙트 (코드에 의해서 제어됨)

이들 어카운트들은 모두 상태(state) 정보를 가집니다.

이 상태정보를 바꾸는 것이 트랜잭션입니다.

트랜잭션은 사용자 어카운트에서 일으킬 수도 있고, 컨트랙트가 발생시킬 수도 있습니다.

이 중 컨트랙트에 포함되는 코드가 바로 애플리케인션핵심적인 비지니스 로직을 구성하게 됩니다.

이더리움은 컨트랙트 코드를 프로그래밍하는 상위 언어를 제공하는데,

그 중 가장 보편적으로 쓰이는 것이 솔리디티(solidity) 입니다.

이더리움 컨트랙트 코드는

EVM 이라는 가상머신을 통해 수행되고

그 결과에 의해서 어카운트의 상태가 변화하게 됩니다.

트랜잭션들은 일정한 주기마다

블록이라는 그룹으로 묶여서

다른 노드들로 전파가 됩니다.

각 블록에는 이 안에 포함된 트랜잭션들의 해시값과

이전 블록의 해시값을 포함하게 됨으로써

상호간에 불일치가 있거나,

과거기록에 대한 변조가 있을시 쉽게 발견될 수 있도록 합니다.

네트워크에 참가하는 모든 노드들(정확히는 Full Node입니다)은

이들 블록을 각자 처리하고 그 결과가 동일함을

서로 합의해(Consensus) 갑니다.

합의과정블록체인 기술가장 중요한 메카니즘입니다.

이 합의 방식에는 여러 가지 솔루션들이 있는데,

이더리움이 현재 사용하고 있는 방식은 Proof of Work 의 일종입니다.

하지만 보안성을 더 높이고, 처리속도와 용량을

대폭적으로 향상시키기 위해 Proof of Stake 의 한 형태인

캐스퍼 방식으로 전환하고자 계획 중입니다.

이렇게 각 노드들의 합의에 의해 dApp 의 백엔드인

블록체인의 정합성이 유지됩니다.

그렇다면 dApp 아키텍쳐가 중앙서버 모델에 비해

가지는 장점은 무엇일까요?

지금까지 많은 언급된 장점들은 주로 다음과 같은 점들이었습니다.


  1. 운영주체에 대한 신뢰가 필요 없거나 최소화

  2. 투명한 운영 원칙과 규칙 관철 용이

  3. 보안 향상

  4. 프라이버시 보호

  5. 이미 투자된 자원의 활용도 증가

  6. 국가별 규제를 넘어선 글로벌 서비스 용이

  7. IoT 네트워크에 매우 유리

  8. 소수기업의 서비스/이윤 독점화 해소



이들 장점들이 dApp 만 사용한다고 해서

모두 발휘되고 기존 중앙서버 모델의 문제를

단번에 모두 해결한다고는 볼 수 없을 겁니다.

독자적인 인터넷 서비스로서

사용자들에게 경쟁력있는 사용가치를 만들어내지 못한다면,

탈중앙화된 모델을 사용한다는 것만으로는

큰 장점이 되지 못하는 경우가 많을 것입니다.

반면, 탈중앙화된 어플리케이션들이

넘어야 할 제약 또는 단점들도 존재합니다.

어떤 트랜잭션을 실행하기 위해서는,

네트워크에 있는 모든 노드들이

전부 이를 다 실행해봐야 한다는

비효율성이 항상 존재합니다.

스케일링에 매우 제한이 되는 요소입니다.

이를 해결하기 위한 노력,

예를 들어 샤딩 기법,

멀티체인 솔루션들이 활발히 연구되고 있지만,

안정적인 솔루션이 나오기까지는

아직 많은 시간이 필요합니다.

스케일링에 제한이 있다 보니,

트랜잭션에 대한 비용이

부담이 될 수도 있습니다.

너무 복잡한 트랜잭션이나 로직을 구현하려다 보면

이에 소모되는 비용이 너무 클 수 있습니다.

아직까지는 비교적 단순한 형태의 로직에

촛점을 맞추는 이유들 중의 하나입니다.

블록체인에서 직접 제공되는 데이터는

단순 키-밸류에 불과합니다.

다른 현대적인 데이터베이스에 비하면

형편없이 초보적인 기능만이 제공됩니다.

따라서 이를 보완하기 위해

블록체인과 함께 별도의 여러 가지 형태의

인덱스와 필터링을 제공하는

로컬 데이터베이스를 운용하는 기법들도

더 많이 발전할 것으로 예상됩니다.

dApp 을 기획하고 설계함에 있어서

탈중앙화된 모델이 가진 장점들을

극대화시키면서도,

피하기 어려운 단점들을 잘 보완하는 것이

좋은 설계의 핵심일 것 같습니다.

그리고 이런 좋은 설계는 한 번에 완성되는 것이 아니라

많은 실패와 경험의 축적이 필요하리라 생각합니다.

다음 편


Comments

Content