Homepage
Open in app
Sign in
Get started
코드체인
자산토큰
Planet CodeChain
아카이브
English
Planet CodeChain
Compound Protocol
Compound Protocol
기존 화폐 시스템은 시간에 가치를 부여한다. 돈을 빌려주면 이자를 받을 수 있고, 돈을 빌리면 이자를 내야 한다. 은행은 돈을 빌려주고자 하는 사람과 빌리고자 하는 사람을 연결해주는 역할을 한다. 하지만 초기 암호화폐 생태계는 거래소를 통한 차익…
Seongjae Choi
Jan 20, 2020
이더리움 스마트 컨트랙으로 입금받기가 어려운 이유
이더리움 스마트 컨트랙으로 입금받기가 어려운 이유
이더리움의 차별점은 스마트 컨트랙을 이용하여 블록체인 위에서 다양한 어플리케이션을 만들 수 있다는 점이다. 하지만 스마트 컨트랙 때문에 오히려 간단한 일이 복잡해지기도 한다. 일례로, 이더리움에서 특정한 주소에 얼마의 ETH가 입금되었는지 알아내는…
Park Juhyung
Jun 25, 2019
Garbage collection과 memory leak
Garbage collection과 memory leak
Garbage collection(a.k.a. GC)은 프로그램이 더 이상 접근할 수 없는 메모리를 자동으로 해제시켜 주는 기술을 의미한다. John McCarthy가 Lisp에 처음 구현한 이후 많은 언어가 사용하여 현대 프로그래머 중에 모르는…
Seulgi Kim
May 9, 2019
비트코인 코어 소스코드를 통해 보는 HD wallet
비트코인 코어 소스코드를 통해 보는 HD wallet
비트코인에서, 하나의 주소로 돈을 계속 넣고 빼는 것은 권장되지 않습니다. 돈을 한 번 이라도 빼면, 보안적인 측면에서, 더 약해집니다. 비트코인의 주소는 퍼블릭 키의 해시 값입니다. 따라서 해커가 주소를 통해서 프라이빗 키를 알아내려면, 두번의…
Park Juhyung
Feb 24, 2018
비트코인과 이더리움에서 직접 Serialize를 구현한 이유
비트코인과 이더리움에서 직접 Serialize를 구현한 이유
프로그램이 다른 프로그램과 데이터를 주고 받기 위해서는 서로 간에 공유하는 규칙이 필요합니다. 네트워크를 통해 주고 받는 정보는 결국 0과 1의 나열입니다. 이 나열을 어떻게 만들고, 어떻게 해석할 지는 서로 약속을 해야 합니다. 규칙에 맞게…
Park Juhyung
Feb 12, 2018
비트코인 위에 새로운 화폐를 발행하는 테크닉
비트코인 위에 새로운 화폐를 발행하는 테크닉
많은 새로운 코인들이 이더리움 위에 ERC20표준에 맞춰 올라가고 있습니다. ERC20표준의 코인을 만드는 건 매우 쉬운 일입니다. 다른 코인의 소스코드를 복사한 뒤 코인 이름만 만들고 배포하면 되는 일입니다. ICO하는 많은 코인들이 이더리움 위에…
Park Juhyung
Feb 5, 2018
Rust Associated Type
Rust Associated Type
Rust의 Associated Type은 Generic Type과 비슷하지만, 할 수 있는 일을 제약시켜서 코드를 관리하기 쉽게 만들어주는 문법입니다. trait의 Generic타입 중, trait을 구현한 타입에 따라 정해지는 타입을…
Park Juhyung
Sep 9, 2018
비트코인, 이더리움, 리플 프루닝 비교
현재 비트코인과 이더리움의 풀 노드를 운영하는데 필요한 디스크 사이즈가 비트코인이 150GB, 400GB 정도로 추정됩니다. 이더리움이 비트코인보다 늦게 시작되었다는 점을 감안하면 이더리움의 디스크 사용량이 빠르게 증가했음을 추측할 수 있습니다…
JinGyeong Jeong
Apr 25, 2018
이더리움과 Eclipse attack
p2p 네트워크는 많은 취약점을 가지고 있는데 대표적인 것이 Eclipse attack이다. Eclipse attack은 네트워크 전체를 공격하는 것이 아니라 목표로 하는 노드의 Routing table을 공격하여 목표로 하는 노드와 전체 네트워크…
Seulgi Kim
Apr 25, 2018
Byzantine Fault Tolerance 시스템에서 N = 3f + 1인 이유
분산환경 시스템에서는 다른 노드가 보낸 메시지가 정상적이라고 보장할 수 없다. 이때 잘못된 노드가 모두에게 틀린 메시지를 보낸다면 문제가 쉽게 풀린다. 틀린 메시지를 보내는 노드를 차단하면 된다.
Seulgi Kim
Apr 25, 2018
Ethereum의 state trie pruning
Ethereum은 현재 상태를 prefix tree의 일종인 modified merkle patricia trie(a.k.a. MPT)로 저장한다. MPT는 state root의 hash를 계산하기 위해 state trie 전체를 볼 필요가 없이…
Seulgi Kim
Apr 28, 2018
이더리움 샤딩
현재 이더리움이 겪고 있는 가장 큰 문제는 scalability다. 이더리움이 인기를 끌면서 트랜잭션의 양도 늘어나고 참여하고 있는 노드의 수도 늘고 있는데 PoW를 쓰는 이더리움의 특성상 초당 트랜잭션 처리 수는 늘지 못한다. 그래서 지금 이더리움…
Seulgi Kim
Apr 25, 2018
Byzantine Failure — 블록체인 개발이 어려운 이유
Byzantine Failure — 블록체인 개발이 어려운 이유
2017년에 이어 올해 2018년까지 블록체인은 정말 시대의 대세가 됐다. 결국, 개발자 외에도 많은 사람이 블록체인을 이야기하고 있다. 그 사람들에게 블록체인이 어려운 이유를 말하라고 하면 대부분 블록체인은 단순한 기술을 넘어서 화폐이기 때문에…
Seulgi Kim
May 18, 2018
Secure Trie — state trie의 키가 256 bit인 이유
지난번 글에서 설명했듯이 ethereum의 상태는 modified Merkle Patricia Trie(a.k.a. MPT)에 저장된다. Ethererum에서 값은 nonce, balance 등 account의 상태고, 그 키는 account의…
Seulgi Kim
Jun 1, 2018
Modified Merkle Patricia Trie — ethereum이 상태를 저장하는 방법
Modified Merkle Patricia Trie — ethereum이 상태를 저장하는 방법
Ethereum에서 네트워크 부분을 빼고 보면, Ethereum은 하나의 state machine이고, transaction은 ethereum의 state를 변경시키는 것이다. 이 state는 key-value pair로 표현된다. Key-value…
Seulgi Kim
Jun 1, 2018
read-writers lock — 공유 자원 접근하기
Multithreaded programming에서 공유 자원에 접근할 때는 동시에 두 개 이상의 스레드가 자원을 변경시키지 않기 위해서 mutex를 사용한다. Mutex를 사용하면 공유자원에 접근하는 스레드를 한 개로 제한하기 때문에 안전하지만…
Seulgi Kim
Feb 12, 2019
코드박스 인턴 생활기
코드박스 인턴 생활기
제가 인턴으로 코드박스에 온 지 벌써 5개월이 되어갑니다.
Hyunsik Jeong
Jan 20, 2019
오프체인 트랜잭션 — 지불 채널
오프체인 트랜잭션 — 지불 채널
오프체인 트랜잭션은 블록체인의 확장성을 위한 방법 중 하나입니다. 일부 트랜잭션을 블록체인에 직접 기록하지 않고 처리하여 트랜잭션 처리량을 간접적으로 증가시키는 효과를 가져옵니다. 간접적이란 말의 의미는 이 방법이 블록체인 자체의 TPS 성능을…
JinGyeong Jeong
May 7, 2018
Safety & Liveness — FLP impossibility으로 보는 블록체인
블록체인이 유행하면서 블록체인의 수만큼 다양한 합의 알고리즘이 나오고 있다. 이는 어째서일까? 애초에 왜 다양한 블록체인이 나오고 있는 것일까? 이는 근본적으로 합의 알고리즘이 무엇을 할 수 있고 무엇을 할 수 없는가에서 기인한다. 좋은 합의…
Seulgi Kim
May 24, 2018
self 구분하기
self 구분하기
Rust를 공부할 때 재밌던 부분 중 하나가 self의 사용법이었습니다. 함수의 첫번째 인자로 self를 받거나 안 받을 수 있는데, 이 self의 사용법에 따라 함수의 특징이 많이 바뀌게 됩니다.
Park Juhyung
Aug 17, 2018
vergen 라이브러리 소개
vergen 라이브러리 소개
유저가 실행중인 프로그램에 문제가 생겼을 때, 실행파일이 언제 빌드되었는지, 어떤 커밋 해시에서 빌드되었는지 정보를 알면 디버깅하기가 훨씬 쉬워지므로, 많은 프로젝트가 빌드된 시점의 정보를 실행파일에 추가합니다.
Park Juhyung
Aug 21, 2018
[Rust] _는 bind하지 않는다
[Rust] _는 bind하지 않는다
Rust는 RAII idiom을 사용하는 언어로, 객체가 소멸하는 시점에 따라 코드의 의미가 달라진다. 예를 들어 아래 코드를 보자.
Seulgi Kim
Aug 9, 2018
About 코드체인
Latest Stories
Archive
About Medium
Terms
Privacy
Teams