목록분류 전체보기 (238)
devops
쿼럼은 기본적으로 gas 비용이 없는 프라이빗 체인으로 운영된다. 만약 가스비가 트랜잭션 처리에 요구되도록 설정한다면 가스비를 보상으로 수령할 주체도 필요하다. 여기서 보상은 두가지로 구분되는데, 1) 트랜잭션 비용 2) 블록 생성 이다. 이는 genesis.json에서 transition block을 추가하여 설정해야한다. (참고로, coinbase에 account를 추가하거나, eth.coinbase에서 출력되는 account 또한 사실상 의미없다) 1) 트랜잭션 비용 보상 (Transaction cost rewards) 트랜잭션 전송에 사용되는 가스비로, 트랜잭션을 전송하는 주체가 부담하는 비용이다. 이 비용은 beneficiaryMode 로 설정된다. 2) 블록 생성 보상 각 블록을 생성할 때 벨..
체인의 키를 안전하게 관리하기 위해서 많이들 사용하는 Hashicorp의 Vault 배포 과정을 간단히 정리해보려고 한다. 사실 볼트 서버를 올리는 것은 간단하지만, Policy나 Secret Engine을 효율적으로 사용하고, Plugin을 적용하는 과정이 쉽지 않다. (관련해서는 다음 포스팅에 하나씩 정리해보려고 함) Vault는 튜토리얼에서 dev 버전으로 간단히 올릴 수 있지만, 데이터를 memory에 저장하고 Unseal 상태가 디폴트기 때문에 실제 프로덕션 단계에서는 적합하지 않다. 아래는 실제 환경의 Vault를 배포하는 것을 정리한다. 1. Configuration Vault 서버의 구성파일을 먼저 작성한다. 아래와 같이 스토리지와 API 요청받을 리스너를 입력해준다. ## config.j..
Latency 블록체인의 확장성을 평가할 때 가장 많이 언급되는 TPS(Transaction per Seconds)는 말 그대로 1초에 몇 개의 트랜잭션을 처리하는 지를 확인하는 지표다. 하지만 단순히 TPS로만 평가하기엔 부족하다. 전송된 트랜잭션이 포함된 블록이 생성되어야, 실제 트랜잭션이 처리되었다고 판단할 수 있기 때문이다. 유저의 액션이 완결성 있게 실행되기까지 걸리는 시간을 블록이 생성된 시간으로 평가하기 위해서 Latency를 체크해야 한다. Latency는 처리량보다 지연시간을 기준으로 체인의 확장성을 평가하는 주요 지표라고 볼 수 있다. Quorum Blockchain 쿼럼은 JP모건에서 개발하고 현재 Consensys에서 인수하여 지속적으로 디벨롭 중인 Private Blockchain..
Raft Consensus Algorithm Raft는 이해하기 쉽게 디자인된 합의 알고리즘이라고 한다. fault-tolerance(내결함성)와 Performance(성능) 면에서 우수하여 다수의 노드를 클러스터링하는데 많이 사용한다. 대표적으로 etcd와 Hyperledger Fabric, ZooKeeper, Haddop, 요즘 내가 관심이 많은 Quorum 체인에서도 사용되고 있다. Raft는 합의 알고리즘을 3가지 문제를 나눠서 해결한다. 1) 리더 선출 2) 로그 복제 3) 안정성 보장 이 해결방법이 하나의 컨센서스 모듈로 구현된다고 볼 수 있다. 1) Leader Election 모든 노드는 특정 순간에 하나의 상태를 가지게된다. 모두가 임기 마다 3가지 중에 하나의 역할을 가지는데, 이 임기..
aws의 ec2에 간단한 ping 테스트하려는데 갑자기 아래와 같은 오류가 발생했다. pem 키 권한 문제도 아닌 것이, 동일한 키로 로컬 pc에서 테스트하면 ssh 접속엔 문제가 없었다. 알고보니, 해당 서버의 pem 파일문제였던 것! 리눅스에서 파일을 생성하지 않고, 사용하던 키 파일을 전송했더니 아래와 같이 테스트가 잘된다...
테세라(Tessera) 테세라는 프라이빗 트랜잭션을 암호화, 복호화하는 자바 프로그램으로, 무상태성이며 JDBC 클라이언트와 연결될 수 있다. 테세라는 아래 4개의 서비스로 구성될 수 있다. Tessera Peer to Peer Tessera Third Party Tessera Admin Tessera Quorum to Tessera Tessera Peer to Peer 이 서비스는 Tessera node간 통신을 위해 사용된다. 이 서비스를 활성화하기 위해서 tessera config 파일에 아래 section을 넣어야 한다. CommunicationType의 REST와 app의 P2P는 P2P 서비스를 위한 설정이다. auto-discovery를 true로 설정하면 하나의 노드만 연결해도 다른 노드들..
쿼럼(quorum)은 JP모건에서 높은 확장성 구현을 위해 이더리움을 하드포크하여 개발한 엔터프라이즈 블록체인이다. 각 노드는 전체 네트워크 합의를 기다리지 않고, 신뢰할 수 있는 특정 노드만이 합의하여 확장성을 크게 개선할 수 있다. 오픈소스기 때문에 많은 기업과 서비스들이 쿼럼을 활용해서 프라이빗 체인을 운용하고 테스트 중에 있는 것으로 보인다.쿼럼같은 엔터프라이즈 체인은 프라이버시가 중요한데, 이를 Tessera 라는 Private Transaction Manager가 역할을 해주고 있다. Tessera 테세라는 Consensys가 개발하고 있으며 Goquorum과 Hyperledger Besu에 사용되는 트랜잭션 매니저다. 주요 역할은 아래와 같다. 다른 트랜잭션 매니저와 함께 P2P 네트워크 구..
위메이드의 메인넷, 위믹스 3.0를 올려보려고 한다. requirements - Golang $ git clone https://github.com/wemixarchive/go-wemix.git $ cd go-wemix && make 빌드가 완료되면 아래와 gwemix.tar.gz 파일이 build 디렉토리에 생성된다. $ tar xvfz gwemix.tar.gz 압축을 풀면 아래와 같은 파일들이 생성되는데, gwemix.sh는 기본 디렉토리 경로가 /opt/ 기 때문에 /opt/wemix 디렉토리를 생성하고 아래 파일들을 옮긴다. bin/gwemix bin/gwemix.sh bin/solc.sh bin/logrot conf/WemixGovernance.js conf/genesis-template.jso..
Cosmos 체인의 아키텍처를 이해하기 위해선 상태머신과 텐더민트 그리고 인터페이스인 ABCI를 알아야한다. 하나씩 짚어보자 State Machine 블록체인은 'replicated deterministic state machine'이라고 부른다. 즉, 복제되는 결정론적인 상태머신이다. 상태머신은 컴퓨터 사이언스의 개념으로 머신이 다양한 상태를 가질 수 있으나, 특정 시점엔 하나의 상태만 가진다. 여기서 현재 시스템의 상태를 말하는 'state'와 상태를 변화시키는 트리거 역할을 하는 'transaction'이 있다. +--------+ +--------+ | | | | | S +---------------->+ S' | | | apply(T) | | +--------+ +--------+ 위를 보면 상..
Application Specific blockchain을 앱체인(App-chain)이라고 부르기도 한다. 즉 특정 어플리케이션만을 위해서 구축된 블록체인이다. 그래서 어플리케이션의 최적화를 위해서 코어부터 커스터마이징을 통해 원하는 체인 스펙을 설정한다. Cosmos SDK는 이런 앱체인에 특화된 프레임워크로 많은 블록체인 프로젝트에서 사용하고 있다. 아마 우리가 들어본 웬만한 프로젝트는 Cosmos SDK를 썼다고봐도 무방하다. 아래 레포는 cosmos sdk 기반의 체인들 리스트다. akash, cronos, evmos, ehos, kava, osmosis, terra, terra2 등 아주 유명한 프로젝트들이 cosmos sdk를 통해서 탄생했다. https://github.com/cosmos/c..