목록DevOps/Chain (21)
devops

이더리움의 트랜잭션은 암호로 서명된 Data message다. 한 이더리움 account에서 다른 account로 ETH를 전송하거나, 블록체인에 배포된 Smart Contract와 상호작용하는 역할을 한다. 트랜잭션은 블록체인에 있어 아주 기본적이지만, 중요한 개념이기 때문에 관련 종사자라면 필수적으로 알아야하는 부분이기도 하다. 트랜잭션 Transaction 트랜잭션은 EVM 상태 변경을 위해 전체 네트워크에 Broadcast되어야 한다. 모든 노드는 EVM에 실행될 트랜잭션에 대한 요청을 Broadcast할 수 있어야하며, Broadcast된 후에는 Validator가 트랜잭션을 실행하고 상태가 변경된 결과를 네트워크에 전파한다. 이더리움 네트워크에서 트랜잭션은 Serialize되어 전송되는데, 각..

서비스 테스트를 위해서, 자체적으로 구축한 아비트럼 체인의 TxGas 수수료를 제로로 하는 테스트를 진행했다. 짧은 시간에 Tx가 많이 요구되는 서비스라면 사용자 경험을 최적화하기 위해서, 가스비를 0로 해야할 수 있다. 서비스 테스팅을 위해서 아래 local-dev-node 방식으로 일부 코드를 수정하여 체인을 구축했다. https://developer.arbitrum.io/node-running/local-dev-node Running a local dev node | Arbitrum Documentation Center 1. Install developer.arbitrum.io 아비트럼의 가스비는 ETH로 사용되며, Arbos의 L2Pricing 기능을 통해서 비용이 결정되는데, Arbos가 Nit..

[Arbos] nitro 노드는 아래와 같은 세가지 layer로 구성된다. base layer : evm contract 실행과 state를 구성하는 데이터 구조를 유지 관리하는 core 역할을 담당한다. nitro에선 필요한 hook를 추가하기 위해 몇가지 수정을 거쳐 이 코드를 라이브러리로 컴파일한다. middle layer : arbos로써, sequencer의 batch와 압축 및 해석, layer 1 가스비용 계산과 요금 징수 등 레이어 2의 추가 기능을 제공하는 custom s/w. 크로스체인 브릿지 기능을 지원한다. top layer : geth 에서 가져온 노드 소프트웨어로 구성된다. client로부터 접속과 RPC request를 처리하고 Ethernet 호환을 위한 노드를 작동시키는 기..

아비트럼이 현재 옵티미즘 롤업 기반 L2 사이에서 높은 TPS를 자랑한다. 많은 Layer 1 프로젝트들이 Layer 2 연구에 옵티미즘을 많이 사용하는 만큼, 가장 빠른 아비트럼으로 테스트를 진행해봤다. 조만간 Orbit이 출시하면 더 친절한 자료들이 나오겠지만, 시급한 서비스 테스트를 위해 현재 Arbitrum Nitro를 L1인 위믹스3.0 테스트넷에 연결시켰다. https://developer.arbitrum.io/node-running/local-dev-node Running a local dev node | Arbitrum Documentation Center 1. Install developer.arbitrum.io 위 링크에 들어가면 Local 환경에서 docker-compose로 손쉽게 ..

아비트럼에서 다양한 컴포넌트에 대한 설명부터, 클라이언트가 서명한 트랜잭션이 생성되어 레이어 1에서 컨펌되는 과정을 단계별로 정리해본다. 지난 포스팅에서 블록체인의 간단한 구조를 정리했는데, 트랜잭션의 라이프사이클만 확인해도 전체적인 프로세스를 이해하는 데 많은 도움이 된다. 1. Sequencer의 트랜잭션 수신 트랜잭션 라이프사이클의 시작은 Sequencer가 클라이언트로부터 트랜잭션을 수신하면서 시작된다. Sequencer는 두 가지의 방법으로 트랜잭션을 수신한다. Directly/Offchain 아비트럼의 Dapp에서 발생하는 트랜잭션은 클라이언트가 지갑을 L2 노드에 연결하여 서명된 트랜잭션을 직접 전달함 Delayed Inbox 클라이언트는 아비트럼의 Delayed Inbox에 L1 트랜잭션에..

최근 아비트럼이 자체 거버넌스 토큰인 $ARB 를 발행하면서, 많은 관심을 받고 있다. GMX, Camelot 같은 트렌디한 Defi들이 출시되면서 체인의 TVL도 급격히 높이고 있는 추세다. 다양한 옵티미즘 롤업 기반 체인들이 있지만 그중에서 가장 높은 TPS를 구현한 아비트럼이기에, 이더리움의 보안을 빌려 높은 확장성을 유지하는 아비트럼에 매력적인 서비스들이 많이 운영되고 있는 것같다. 아무튼 간단한 구조를 정리해보면 다음과 같다. 아비트럼 네트워크는 Sequencer와 Validator 이 두 노드에 의해서 실행되어 Ethereum 메인넷과 상호 작용한다. Sequencer는 유저의 L2 트랜잭션을 가져와 L1에 제출하고, Validator는 L1의 트랜잭션 데이터를 읽고 트랜잭션을 처리하여 L2 ..

쿼럼은 기본적으로 gas 비용이 없는 프라이빗 체인으로 운영된다. 만약 가스비가 트랜잭션 처리에 요구되도록 설정한다면 가스비를 보상으로 수령할 주체도 필요하다. 여기서 보상은 두가지로 구분되는데, 1) 트랜잭션 비용 2) 블록 생성 이다. 이는 genesis.json에서 transition block을 추가하여 설정해야한다. (참고로, coinbase에 account를 추가하거나, eth.coinbase에서 출력되는 account 또한 사실상 의미없다) 1) 트랜잭션 비용 보상 (Transaction cost rewards) 트랜잭션 전송에 사용되는 가스비로, 트랜잭션을 전송하는 주체가 부담하는 비용이다. 이 비용은 beneficiaryMode 로 설정된다. 2) 블록 생성 보상 각 블록을 생성할 때 벨..

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가지 중에 하나의 역할을 가지는데, 이 임기..
테세라(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로 설정하면 하나의 노드만 연결해도 다른 노드들..