기존 화폐 시스템은 시간에 가치를 부여한다. 돈을 빌려주면 이자를 받을 수 있고, 돈을 빌리면 이자를 내야 한다. 은행은 돈을 빌려주고자 하는 사람과 빌리고자 하는 사람을 연결해주는 역할을 한다. 하지만 초기 암호화폐 생태계는…
이더리움의 차별점은 스마트 컨트랙을 이용하여 블록체인 위에서 다양한 어플리케이션을 만들 수 있다는 점이다. 하지만 스마트 컨트랙 때문에 오히려 간단한 일이 복잡해지기도 한다. 일례로, 이더리움에서…
Garbage collection(a.k.a. GC)은 프로그램이 더 이상 접근할 수 없는 메모리를 자동으로 해제시켜 주는 기술을 의미한다. John McCarthy가 Lisp에 처음…
비트코인에서, 하나의 주소로 돈을 계속 넣고 빼는 것은 권장되지 않습니다. 돈을 한 번 이라도 빼면, 보안적인 측면에서, 더 약해집니다. 비트코인의 주소는 퍼블릭 키의 해시 값입니다. 따라서…
프로그램이 다른 프로그램과 데이터를 주고 받기 위해서는 서로 간에 공유하는 규칙이 필요합니다. 네트워크를 통해 주고 받는 정보는 결국 0과 1의 나열입니다. 이 나열을 어떻게…
많은 새로운 코인들이 이더리움 위에 ERC20표준에 맞춰 올라가고 있습니다. ERC20표준의 코인을 만드는 건 매우 쉬운 일입니다. 다른 코인의 소스코드를 복사한 뒤 코인 이름만 만들고 배포하면 되는…
Rust의 Associated Type은 Generic Type과 비슷하지만, 할 수 있는 일을 제약시켜서 코드를 관리하기 쉽게 만들어주는 문법입니다. trait의 Generic타입 중, trait을 구현한 타입에 따라 정해지는 타입을 Associated Type 문법을 사용하여 표현할 수 있습니다.
현재 비트코인과 이더리움의 풀 노드를 운영하는데 필요한 디스크 사이즈가 비트코인이 150GB, 400GB 정도로 추정됩니다. 이더리움이 비트코인보다 늦게 시작되었다는 점을 감안하면 이더리움의 디스크 사용량이 빠르게 증가했음을 추측할 수 있습니다. 개인용 랩탑이나 데스크탑의 스토리지 구성이 일반적으로 1TB 이하인 것을 생각해보면 개인이 풀 노드를 운영할 때 부담스럽게 느껴질 수 있는 부분입니다.
p2p 네트워크는 많은 취약점을 가지고 있는데 대표적인 것이 Eclipse attack이다. Eclipse attack은 네트워크 전체를 공격하는 것이 아니라 목표로 하는 노드의 Routing table을 공격하여 목표로 하는 노드와 전체 네트워크 사이에 악의적인 노드를 집어넣는 공격이다. Routing table을 공격하는 방법이기 때문에 routing-table poisoning이라고도 불린다.
분산환경 시스템에서는 다른 노드가 보낸 메시지가 정상적이라고 보장할 수 없다. 이때 잘못된 노드가 모두에게 틀린 메시지를 보낸다면 문제가 쉽게 풀린다. 틀린 메시지를 보내는 노드를 차단하면 된다.
하지만 일부 노드에게는 잘못된 메시지를 보내고, 일부 노드에게는 제대로 된 메시지를 보내는 경우는 문제 상황을 찾기 힘들다. 분산 시스템에서 각 노드는 다른 노드의 상태를 모르기 때문이다. 이런 식으로…