목록분류 전체보기 (238)
devops
v1.1이 곧 나온다고 하지만, 먼저 v1을 번역해서 Leviathan이 어떤 구조의 Layer2인지 확인하여 정리해보려고 한다. 내용이 좀 투박해서 이해하는데 어려움이 있고, 내용이 세부적으로 설명되지 않았기에 의역을 덧붙였다. (저자의 의도와 일하지 않을 수 있습니다) 먼저 간단히 요약하자면, Leviathan Cardano의 처리량과, 최종성을 높이기 위해서 개발된 Cardano Layer2다. Cardano 네트워크의 컨펌을 기다리지 않고 여러 트랜잭션을 실행할 수 있는 중앙화된 Sequencer를 통해서 실행된다. 순차적으로 연결된 트랜잭션에 작동하는 것으로, 비용과 공간 측면에서 비용이 많이 든다. zk롤업을 구현하는데 사용될 수 있다. 시퀀서는 tx를 큐에 추가하기 위해서 tx에 대한 컨트롤..
현재 수 많은 블록체인 네트워크가 있지만, 그 중에 개인적으로 미래가 가장 기대되는 프로젝트는 카르다노다. 합의 알고리즘인 Ouroboros, EUTXO 모델과 함수형 언어인 Haskell 기반의 네트워크기 때문에 보안성, 탈중앙화, 확장성 이 세가지 블록체인 트릴레마 최대한 해결하고 있다고 생각한다. 내가 현재 DevOps 엔지니어로 일하고 있는 만큼, 네트워크의 보안과 분산화에 기여하는 카르다노의 스테이킹 풀에 대해서 관심이 있다. 관련된 기본적인 정보들을 간단히 정리해보려고 한다. 스테이킹(staking)? 스테이킹은 카르다노 네트워크의 분산화와 보안에 참여하는 프로세스라고 보면 된다. $ADA 홀더들은 스테이킹을 통해서 보상을 받는다. 자신의 월렛에 있는 ADA를 풀에 위임하면, 풀은 늘어난 지분..
우리 팀에선 Loki-Prometheus-Grafana 스택으로 서비스 로그와 메트릭을 Grafana에 통합하여 모니터링하고 있다. 특히, Loki는 Container의 stdout, stderr 로그를 생성된 파드 기준으로 Promtail을 통해 수집하는데, debug 로그는 컨테이너 내부에서. log 파일 형태로 저장한다. 서비스 로그 레벨은 3으로 설정되어 있어, 문제가 생길 때마다 컨테이너에 있는 debug 파일을 확인하는게 아주 번거롭다. 그렇다고 로그레벨 수정을 위해 실행 중인 서비스를 재실행할 수 도 없었기에, retention을 최대한 줄이더라도 debug 로그를 수집할 필요가 있었다. 이 로그 파일을 로깅하기 위해서 고민했던 방식은 크게 3가지였다. hostpath로 노드에 컨테이너 로그..
ERC1155 ERC1155는 가스 효율적인 Token Contract를 만들기 위해서 이전 표준을 최대한 활용하기 위해 만들어진 토큰 표준이다. 좀 더 이해하기 쉽게 얘길하자면, 하나의 컨트랙트에서 여러 토큰을 발행해서 관리한다고 볼 수 있다. 심지어 ERC20, ERC721 모두 지원한다. 그래서 Multi-token standard라고 불린다. ERC1155의 특징은 단일 스마트 컨트랙트를 이용해서 여러 토큰을 한번에 표현 각 토큰 마다 고유한 id 를 기준으로 구분된 balanceOf 메소드를 호출 가능 모든 state를 하나의 컨트랙트에 존재하기 때문에 단일 트랜잭션에서 다양한 토큰 관리 가능 Features Batch Transfer: 여러 에셋을 하나의 Tx로 전송가능 Batch Balanc..
ERC721, NFT는 크립토에 관심이 없는 사람들도 아는 대표적인 토큰 유형으로 toknID 기준, 다른 토큰들과는 구별되는 고유한 특성이 있다. 워낙 유명해서.. 굳이 소개할 필요는 없을 것같다. 내가 활동하는 CURG 라는 블록체인 학회에서 관련 코드를 재정리했기 때문에 코드 구성을 한번 확인하고 정리해보려 한다. SolRoot/token/ERC-721 CURG 학회에서 진행하는 오픈소스 프로젝트인 SolRoot에서 ERC-721 코드 디렉토리는 다음과 같이 구성되어 있다. (Extension은 제외) ERC721Base.sol ERC721Extension.sol ERC721Metadata.sol ERC721SlotBase.sol ERC721Utils.sol IERC721.sol IERC721Enu..
짧게 TBA라고도 하는 ERC-6551은 NFT의 오너가 여러 컨트랙트를 컨트롤할 수 있는 권한을 가지고 있는 것이라고 보면된다. 즉, NFT + CA의 결합이라고도 보는데, 이 TBA의 NFT는 '지갑의 역할을 하기 때문에 누군가에게 양도되는 순간, 이 NFT에 있는 모든 자산도 그대로 양도된다. 디사이퍼 미디움에 따르면, 여러 유스케이스를 예상할 수 있다. Gas Fee 절약 NFT를 살때 개별 NFT마다 Tx가 일어나야했지만, TBA에 NFT Collection이 있다면 한번의 Tx로 모든 NFT를 구매할 수 있음 게임의 경우에도 하나의 NFT TBA안에 캐릭터와 물약, 아이템이 있다면 한번에 거래가 가능 보안의 향상 NFT 판매 시점에 ERC-20 토큰을 내재한 채로 판매하여 에어드랍 가능 별도의..
OpenZepplin 오픈제플린은 EVM 스마트 컨트랙트 개발에 많이 사용되는 오픈 소스 라이브러리다. 사실상 Solidity 기반 컨트랙트 개발에 있어선 표준으로 자리 잡을 정도로 사용된다. Security-Centric : 보안 전문가들에 의해서 검토되어 있으며, 실사용되고 있는 검증된 컨트랙트들로 구성되어 있다. Standard Contracts : ERC-20, ERC-721과 같은 표준 토큰 컨트랙트를 제공함. Reusable Components : 공통기능을 제공하는 다양한 스마트 계약 구성 요소를 포함하고 있어서, 개발자들은 이를 조합해 복잡한 기능을 빠르고 안전하게 구현가능. Community-Driven : 활발한 커뮤니티에 의해 지원되고 있으며, 보안과 최적화 및 기타 주제에 대해서 지..
대부분 쿠버네티스 기반 모니터링에 특화된 Prometheus Operator를 활용하여 job을 추가한다. Prometheus Operator를 사용하면 일일이 kubectl patch를 통해 configmap에서 job을 추가하지 않고도 Service monitor 혹은 Pod monitor라는 CR로 쉽게 등록이 가능하다는 장점이 있다. 그러나 문제는 Service Monitor를 apply했는데도, Target에 등록조차 안되는 상황이 올때가 있다. kubectl get servicemonitor 를 확인하면 오브젝트가 정상적으로 apply된 상태임을 알 수 있다. 에러 메시지도 확인할 수 없는 상황. 사실 프로메테우스 오퍼레이터는 초기 배포 시 namespace와 label 키 값을 설렉터로 지정..
Prometheus는 Memory와 CPU같은 하드웨어 리소스를 모니터링하는데 사용되므로 프로세스의 이벤트를 로깅하는데 한계가 있다. ELK 스택으로 개별 모니터링 파이프라인을 구축하기도 하지만, Grafana로 로깅에 최저화된 Loki를 사용하면 이미 Prometheus + Grafana로 메트릭을 수집하던 파이프라인에서 효율적인 로깅까지도 가능해진다. Loki Loki는 2018년 Grafana Lab에서 시작한 프로젝트로 수평 확장과 높은 가용성 그리고 멀티테넌시라는 특징을 가지고 있으며 낮은 비용에 운영이 간단하다. Store the logs in Loki Loki는 로그 텍스트를 인덱싱하지않고, 스트림으로 그룹화, 라벨링으로 인덱싱한다. 이를 통해서 비용 절감과 함께 로그 라인 쿼리를 짧은 시간..
Optimism의 op-batcher는 Layer1에 Tx Batch를 생성하여 압축, 전송하는 역할을 담당한다. 코드를 통해서 간단히 알아보자. # op-batcher func main() { oplog.SetupDefaults() app := cli.NewApp() app.Flags = flags.Flags app.Version = fmt.Sprintf("%s-%s-%s", Version, GitCommit, GitDate) app.Name = "op-batcher" app.Usage = "Batch Submitter Service" app.Description = "Service for generating and submitting L2 tx batches to L1" app.Action = cur..