분류 전체보기

    [Klaytn] 합의알고리즘

    [Klaytn] 합의알고리즘

    카카오 블록체인 Klaytn의 합의 알고리즘 A to Z (https://if.kakao.com/2022/session/46) 를 정리한 내용입니다. 1. 합의 알고리즘이란? 비잔틴 오류 허용 문제를 해결하며 발전 분산 시스템에서 각 노드 간 데이터 동기화 문제를 효율적으로 해결하기 위해 발전. 비동기 분산 시스템에서 하나의 노드만 장애가 난다면 비잔틴 문제를 해결할 수 있는 분산 알고리즘은 존재할 수 없다는 것이 1985년 증명이 되었다. -> 따라서 네트워크 상황과 어플리케이션 특성을 고려하여 설계하는 것이 중요. 2. 블록체인에서의 합의 알고리즘 기존의 분산시스템과 유사함. 하지만 public blockchain 환경에서는 "외부에서 언제든지 접근하여 동기화를 진행할 수 있다." 는 특성 때문에, ..

    [Spring Boot] Jpa 테스트 작성 시 영속성 컨텍스트 관련 주의사항

    테스트용 엔티티를 돌려쓰지 말 것! 테스트 코드를 작성하다보면 Mock 객체를 매번 생성해주어야한다. @DataJpaTest 를 통해 트랜잭션 테스트를 진행하다보면 유독 많이 사용되는 객체가 존재한다. 예로 회원서비스는 대부분의 서비스가 의존하고 있기 때문에 회원 엔티티를 Mocking 하는 경우가 아주 많다. 만약 @BeforeAll 과 같은 메서드를 사용하거나, 테스트 클래스 변수 선언을 통해, Member 엔티티를 단 하나 생성하고, 테스트 메서드간 돌려 쓴다면, 테스트가 의도치 않게 실패할 수 있다. 또 테스트가 실행되는 순서에 따라 서로 논리적인 의존성이 발생하기도 한다. 그 이유는 다음과 같다. @DataJpaTest 어노테이션은 내부에 @Transactional 이 붙어서 테스트가 하나 끝나..

    [Hyperledger Fabric] 개념 정리 및 활용 프로젝트 예시

    [Hyperledger Fabric] 개념 정리 및 활용 프로젝트 예시

    노션에 정리했습니다. Hyperledger Fabric [목차] fragrant-comfort-49c.notion.site Hyperledger Fabric 2.4 Gateway 활용 예시. GitHub - InhaLedger/hyperledger-fabric-gateway-middleware: query-optimized Hyperledger fabric gateway service query-optimized Hyperledger fabric gateway service - GitHub - InhaLedger/hyperledger-fabric-gateway-middleware: query-optimized Hyperledger fabric gateway service github.com Hyperle..

    EIP-1155: Multi Token Standard

    노션에 정리한 내용이 더 가독성이 좋음. EIP-1155: Multi Token Standard [목차] fragrant-comfort-49c.notion.site [Summary] EIP-20, EIP-721 은 한가지 종류의 토큰에 대한 인터페이스를 정의한다. 즉 해당 인터페이스로는 하나의 컨트랙트는 하나의 토큰만 다룰 수 있다. EIP-1155는 하나의 컨트랙트에서 여러개의 토큰을 다루는 것에 대한 표준 인터페이스를 제공한다. [Specification] 1) ERC1155 Interface code 2) Token Receiver code 3) Safe Transfer Rules ⇒ safeTransferFrom 과 safeBatchTransferFrom 는 ERC1155TokenReceiver ..

    EIP-721: Non-Fungible Token Standard

    Abstract 스마트 컨트랙트 내에서 NFT의 표준 API 인터페이스를 규정. 표준 API는 NFT를 교환하고 기록하기 위한 기본적인 기능을 제공한다. NFT는 다음과 같은 다양한 디지털 또는 물리 자산에 대한 소유권을 나타낼 수 있다. 물리 자산 - 집, 예술 작품 등 수집품 - 유일성이 보장되는 수집용 카드 등 대출과 같은 마이너스 자산 등 NFT는 구별 가능한 디지털 토큰으로서 각 자산에 대해 개별적으로 소유권을 추적할 수 있도록 한다. Specification ERC-721를 따르는 컨트랙트를 만들기 위해서는 ERC721, ERC165 인터페이스를 반드시 구현해야한다. 어플리케이션은 지갑 인터페이스를 구현해야한다. (Optional) 토큰 이름과 상세 정보를 외부에 제공하도록 메타데이터 인터페이..

    비트코인이란? (Bitcoin WhitePaper 정리)

    비트코인이란? (Bitcoin WhitePaper 정리)

    첨부된 비트코인 백서(White paper)를 읽고 정리한 내용입니다. 1. Intro 전통적으로 전자상거래를 사용하기 위해서는 ‘신뢰할 수 있는 제3의 금융기관’이 필수적이었다. 이는 이중지불 문제를 해결하기 위함인데, 자산을 한 번 소비하면 동일한 자산을 다시 다른 곳에 사용할 수 없도록 보장해야하는 문제이다. 즉, ‘제 3의 기관’이 이중지불 문제를 해결함으로써, 전자화폐로서의 기능을 보증한다. 하지만 블록체인은 이중지불 문제를 순수하게 peer-to-peer 네트워크를 통해 해결하는 법을 제시한다. 해시 기반 작업증명 방식을 통해 거대한 체인이 자라난다. 이 거대한 체인은 그 자체로 거래내역 장부의 무결성을 보장하고, 시장 참여자들의 cpu 가 계속 작업하도록 유도함으로써 위변조 공격을 방지한다...

    [SpringBoot] 9. OSIV 설정을 통한 쿼리 최적화 방안 고찰

    [SpringBoot] 9. OSIV 설정을 통한 쿼리 최적화 방안 고찰

    [배경] 기존 시큐리티 필터에서는 Role-based access control를 담당하고 있다. [관리자등급 -> 운영진 -> 일반회원] 과 같은 역할기반 접근 제어 말고, 다른 특성으로 권한을 검사해야하는 경우가 있다. 예를 들어, 강의를 개설한 뒤에 강의자만 접근할 수 있는 api 가 있다면 매번 데이터베이스에 쿼리를 날려서 강의자인지 확인하고 인가를 해주어야한다. [문제] 위와 같이 해도 주요 기능은 제대로 수행하고 있지만, 트랜젝션이 2번 실행되는 점을 고려해야한다. 트랜젝션이 끝나면 영속성 컨텍스트에서 관리되던 엔티티들은 detached 되어 다른 트랜젝션이 수행될 때는 다시 db로부터 조회해서 영속화를 또 해주어야하는 중복이 발생한다. 강의실 정보를 수정하기 위한 api를 호출할 때, 강의자..

    [SpringBoot] 8. 하이버네이트 원격서버 암호화 연결 (SSH tunneling 설정)

    [SpringBoot] 8. 하이버네이트 원격서버 암호화 연결 (SSH tunneling 설정)

    [배경] 개발 서버를 따로 운영하고 있다. 따로 로컬에서 db 작업하고 다시 개발서버로 적용하는 일이 번거로워서 애초에 개발서버에서 db 작업 후 바로 적용한다. 기존에는 개발용 데이터베이스를 학교에 두고 사용했다. 근데 종종 전원이 꺼지거나, 랜선이 뽑히는 등의 일이 발생해서 직접 학교에 가서 일일이 작업해야하는 소요가 있었다. 그래서 개발용 db 도 aws로 옮겨버렸다. 하지만 암호화를 사용하지 않고 db 연결해서 사용하면, (예로 3306포트로 다이렉트 연결할 경우) 패킷에 평문이 그대로 노출되기 때문에 종단간 암호화를 해주어야한다. 따라서 ssh tunneling 을 이용해서 공개키 암호화 방식의 프로토콜을 이용하되, aws 상에서 forwarding 을 해주어 db로 연결하도록 했다. [연결 개..