작성자: Brett McLain, 엔지니어링 이사 – Crypto, Fiat, Staking
암호화폐, 지불 또는 스테이킹에 관심이 있고 미래의 금융 시스템 구축을 돕고 싶다면 자금 지원 엔지니어링 팀 @ Kraken이 고용합니다!
XNUMX년 전 Kraken이 출시되었을 때 BTC, LTC 및 XRP의 세 가지 암호화폐만 지원되었습니다.
현재 Kraken은 82개의 블록체인에서 33개의 자산을 지원하고 8개의 암호화폐에 대한 스테이킹 서비스를 지원합니다.
Kraken에서 연간 수백만 건의 입금, 출금 및 스테이킹 거래를 용이하게 하기 위해 암호화 엔지니어링 팀은 거래소 안팎으로 원활한 자금 흐름을 보장하기 위해 수백 가지 서비스를 운영합니다. 이러한 서비스를 뒷받침하는 블록체인 소프트웨어는 자주 업데이트됩니다. 좀 더 활동적인 블록체인의 경우 하드 포크와 소프트 포크는 본질적으로 월간일 수 있지만 이더리움과 같은 다른 블록체인은 연간 XNUMX회 이벤트입니다. 일반적으로 매주 블록체인 인프라에 대한 소프트웨어 업데이트가 최소한 몇 개 있습니다.
이처럼 다양한 서비스를 지원하고 업데이트하는 동시에 새로운 서비스를 구축하는 것은 벅찰 수 있습니다.
지난 12개월 동안 우리 팀은 다음에 대한 지원을 추가했습니다.
- 60개의 새로운 암호화폐:
- 39 x ERC20 토큰
- Polkadot(메인넷 출시 시)
- 쿠사마
- 파일코인(메인넷 출시 시)
- 흐름(메인넷 출시 시)
- Kava
- Energy Web Token (메인넷 출시 시)
- USDT(TRC20)
- 10 x 파라체인 크라우드론
- 솔라 나
- 1 x SPL 토큰(세럼)
- 미나
- 8개의 새로운 스테이킹 자산:
- Polkadot(메인넷 출시 시)
- 쿠사마
- 이더리움 2.0(메인넷 출시 시)
- 흐름(메인넷 출시 시)
- Cardano
- 코스모스
- Kava
- 솔라 나
이러한 성과는 기존 통합의 유지 관리와 함께 달성되었습니다. 암호화 팀의 엔지니어는 사내에서 작성된 게이트웨이 소프트웨어뿐만 아니라 게이트웨이가 의존하는 블록체인 인프라의 유지 관리 및 배포를 담당합니다. 이러한 프로젝트에 대한 블록체인 개발의 흐름은 급변하는 변경 사항과 새로운 기능이 자주, 때로는 거의 경고 없이 제공되므로 맹렬한 일일 수 있습니다.
그렇다면 Kraken은 어떻게 블록체인 개발의 빠른 속도를 따라가면서도 매년 수십 개의 신제품을 출시할 수 있을까요?
엔드 투 엔드(E2E) 테스트!
우리가 E2E 테스트를 중요하게 생각하고 모의 실험을 피하는 이유
Kraken 초기부터 E2E 테스트는 엔지니어가 구축할 수 있는 가장 가치 있는 테스트 유형이라는 점을 강조했습니다. 단위 테스트가 그 자리를 차지하고 있지만 복잡한 통합에 대한 경험이 부족한 많은 개발자는 개발 중인 소프트웨어의 전반적인 품질을 향상시킨다는 믿음으로 빌드하는 모든 코드에 대해 단위 테스트를 작성하는 경향이 있습니다.
이 길은 좋은 의도로 가득 차 있지만 종종 길에서 많은 고통을 초래할 수 있습니다. 단위 테스트에 지나치게 의존하면 아키텍처가 굳어지는 경향이 있습니다. 이는 전체 코드 기반 위에 에폭시 층을 붓는 것과 같습니다. 코드를 테스트에 밀접하게 연결하여 코드를 더 단단하고 유연하지 않으며 리팩토링되지 않도록 만듭니다. 변경해야 하는 경우 테스트를 크게 변경해야 하며 경우에 따라 완전히 폐기해야 합니다. 코드 리팩토링은 엔지니어링 팀이 툴킷에 포함해야 하는 핵심 기능이며 리팩토링의 용이성에 마찰을 추가하는 모든 것은 도입 전에 신중하게 평가해야 합니다. 코드를 리팩토링할 때 잘 설계된 E2E 테스트에는 많은 변경이 필요하지 않은 경우가 많으며 애플리케이션이 예상대로 계속 작동하도록 하는 동시에 애플리케이션의 내부 내장을 조정할 수 있는 유연성을 제공합니다.
이것은 단위 테스트를 작성해서는 안 된다는 것을 의미합니까? 별말씀을 요! 단위 테스트가 완벽한 솔루션인 많은 시나리오가 있지만 복잡한 통합의 경우 E2E 테스트가 더 잘 작동하는 것으로 나타났습니다. 일반적으로 단위 테스트는 다음 기준을 충족하는 코드에 대해 작성될 때 가장 효과적입니다.
- 많은 엣지 케이스로 알고리즘적으로 복잡합니다.
- 잘 정의된 요구 사항으로 엄격하게 범위를 지정합니다.
- 단일 작업 단위를 완료합니다.
- 무국적자.
이러한 작고 촘촘한 범위의 복잡한 코드 조각은 종종 더 큰 응용 프로그램의 빌딩 블록이며 리팩터링이 발생하더라도 이러한 기능은 변경되지 않을 것입니다. 우리의 세계에서는 주소 파생, 주소 유효성 검사, 트랜잭션 서명 등과 같은 것이 될 것입니다.
여기서 중요한 점은 소규모 엔지니어링 팀으로서 현재 지원하는 서비스의 양을 유지할 수 있는 방법이 없다는 것입니다. 와 엔드 투 엔드 테스트 없이 새 제품을 빌드합니다. 단위 테스트는 테이블 스테이크로 간주되어야 하지만, 개별적으로는 이 진화하는 공간을 따라잡기에 충분하지 않습니다. 대신, 우리는 우리 서비스가 가장 일반적인 운영 모드에서 성공적으로 작동할 것임을 검증하는 강력한 통합 및 E2E 테스트 세트에 막대한 투자를 하기로 결정했습니다.
E2E 테스트의 과제
E2E 테스트는 강력할 수 있지만 만병 통치약은 아닙니다. 타사 서비스와 통합할 때 이러한 종류의 테스트는 특정 기능 또는 호출의 흐름을 완전히 테스트하기 위해 특정 끝점 또는 인터페이스를 조롱해야 하기 때문에 많은 가치를 상실하는 경우가 많습니다. 모의는 모의 서비스에 대한 이해 정도에 따라 다르므로 업데이트가 빈번하고 본질적으로 큰 경우 오류가 발생하기 쉽습니다. 자신의 코드와 모의 코드를 유지하는 것은 David Thomas와 Andrew Hunt가 "The Pragmatic Programmer"에서 만든 용어인 DRY 원칙(자신을 반복하지 마십시오)을 위반하는 것입니다. 그들의 책에서 그들은 "모든 지식은 시스템 내에서 하나의 모호하지 않고 권위 있는 표현을 가져야 한다"고 말합니다. 모든 서비스의 모의 버전을 생성한다는 것은 이제 해당 서비스의 잠재적으로 서로 다른 두 가지 사본, 즉 모의 버전과 실제 버전이 있음을 의미합니다. 조롱된 종속성의 동작을 번역할 때 발생하는 오류는 이제 고려해야 할 또 다른 문제입니다.
구출에 대한 항의
고맙게도 대부분의 블록체인은 CI(지속적 통합)/CD(지속적 배포) 프로세스의 일부로 스핀업할 수 있는 임시 사설망을 실행할 수 있는 기능을 지원합니다. 가장 많이 사용되는 예는 비트코인의 회귀 테스트(regtest) 모드입니다. '-regtest' 옵션으로 bitcoind를 시작하면 완전히 제어할 수 있는 새로운 로컬 블록체인 환경이 생성됩니다. regtest 모드의 주요 기능은 임의의 수의 블록을 마음대로 채굴할 수 있다는 것입니다. 이를 통해 E2E 테스트가 모든 유형과 변형의 입출금에 대한 왕복을 완료하고 몇 초 안에 수백 가지 시나리오를 시뮬레이션할 수 있습니다. 다중서명 거래, 재조직, 수수료로 대체(RBF), 부모에 대한 자식 지불(CPFP) 등과 같은 엣지 케이스 및 기타 고유한 시나리오를 regtest 모드에서 쉽게 시뮬레이션할 수 있습니다. 이 테스트는 코드에 오류가 없는지 확인할 뿐만 아니라 블록체인과 원장의 최종 상태를 확인하여 모든 것이 예상대로 작동하는지 확인합니다.
Kraken에서 새로운 암호화폐에 대한 지원을 추가하는 프로세스의 일부로 자금 지원 팀은 모든 새 목록에 대한 regtest 프레임워크를 구축합니다. 이 코드는 유지 관리 체제의 기초입니다. 새 버전이 출시될 때마다 블록체인 노드 버전을 업데이트하고 CI 파이프라인을 다시 실행하여 주요 변경 사항이 없는지 확인하기만 하면 됩니다. 릴리스 정보를 주의 깊게 읽고 커뮤니티와의 협력이 여전히 매우 필요하지만 이러한 테스트를 통해 다른 방법으로는 가질 수 없는 새 버전을 릴리스할 수 있다는 확신을 갖게 됩니다.
창의적인 솔루션
불행히도 모든 블록체인이 Bitcoin만큼 전투 테스트를 거친 것은 아닙니다. 새로운 블록체인은 종종 새로운 개념을 도입하며 고객에게 가장 흥미로운 신기술에 대한 액세스를 제공하기 위해 Kraken은 가능한 한 메인넷의 시작에 가깝게 새로운 블록체인에 대한 지원을 시작하는 것을 선호합니다. 출시 날짜에 또는 가까운 새 자산을 안전하게 지원하기 위해 Kraken은 통합에 대한 확신을 얻고 고객 자금이 위험에 처하지 않도록 하기 위해 복잡한 테스트 장치를 개발해야 하는 경우가 있습니다.
이에 대한 완벽한 예시는 2.0년 3월 1일 메인넷이 활성화된 지 2020일 만에 Kraken이 Ethereum 2.0에 대한 지원을 시작했을 때입니다. 전 세계 수천 명의 개인과 회사가 Medalla 및 Spadina와 같은 여러 테스트넷에서 Ethereum 2.0을 테스트하는 데 도움을 주었지만 여전히 이 통합을 통해 regtest의 개념을 완전히 다른 수준으로 끌어올리기로 결정했습니다. 우리는 일찍부터 이더리움 800,000이 중요한 발전이 될 것이라는 것을 알고 있었고, Kraken 클라이언트가 스테이킹한 XNUMX개 이상의 ETH를 포함하여 수백만 개의 ETH가 지금까지 비콘 체인에 스테이킹되었기 때문에 그 믿음이 사실로 입증되었습니다.
아래에서 개발자가 ETH2 코드 리포지토리 중 하나에 코드를 커밋할 때마다 CI(지속적 통합) 파이프라인이 회전하고 해제하는 서비스 집합의 다이어그램을 볼 수 있습니다.
높은 수준에서 테스트 흐름은 다음과 같습니다.
- 테스트를 위한 초기 ETH 양을 포함하는 제네시스로 ETH1 기본 및 대체 노드(각각 합의를 위해 교대로 마이닝)를 시작합니다.
- ETH2 비콘 체인 노드를 제네시스를 활성화하는 데 16명의 검증자만 필요한 특수 최소 구성 모드를 사용하여 프라이빗 체인으로 시작합니다.
- ETH2 블록체인에 ETH1 스마트 계약을 배포합니다.
- 자금이 소각되고 검증자가 ETH2 외부 검증자 노드에 생성되는 ETH2 예금 계약에 ETH를 예치합니다. 이들은 ETH2 네트워크를 운영하는 검증인이며 모든 Kraken 검증인의 외부에 있는 것처럼 취급됩니다.
- ETH1 및 ETH2 블록 탐색기를 시작합니다.
- 데이터베이스를 시작합니다.
- 게이트웨이 및 서명자를 시작합니다.
- ETH -> ETH2 스테이킹에 대한 클라이언트 요청을 삽입합니다.
- 게이트웨이는 클라이언트 요청을 선택하고 ETH1 블록체인의 보증금 계약에 ETH를 보내고 ETH2 내부 검증자 노드에 해당 수의 검증자를 생성합니다. 검증인은 내부 및 외부 검증인 세트로 분리되어 검증인이 다운될 때 어떤 일이 발생하는지 테스트하고(슬래싱, 페널티, 보상 손실을 테스트하기 위해), 나머지 네트워크가 다운되거나 오프라인일 때 어떤 일이 발생하는지 확인할 수 있습니다. 남아있어.
- 검증자가 ETH2 체인에서 활성화될 때까지 모니터링하고 보상, 지불금, 슬래싱 및 페널티 테스트, 보상 손실 감지 및 고객에게 보상 지급을 추적하기 시작합니다.
- 모든 거래에 대해 별도의 재정 조정 프로세스를 실행하여 모든 원장의 모든 항목이 올바르게 일치하도록 합니다.
위의 내용은 테스트 프레임워크 내에서 진행 중인 작업에 대한 높은 수준의 요약일 뿐입니다. 다른 많은 테스트, 확인 및 검증이 발생합니다. 개발자가 무언가를 디버깅하거나 두 네트워크 중 하나의 상태를 확인해야 하는 경우 블록 탐색기를 참조하여 정확히 어떤 일이 발생했는지 한 눈에 확인할 수 있습니다. 우리는 일반적으로 CI 파이프라인에 블록 탐색기를 포함하지 않지만 통합의 복잡성을 고려할 때 개발 단계에서 체인에서 무슨 일이 일어나고 있는지 시각화하는 것이 도움이 되었습니다.
이것이 CI 파이프라인에 엄청난 지연을 추가한다고 생각할 수도 있지만 다행히도 그렇지 않습니다. 현재 이더리움 2.0 저장소의 전체 CI 파이프라인을 실행하는 데 14분이 걸립니다. 여기에는 모든 종속성 감사/구축, 모든 서비스 시작, 블록체인에 다양한 스마트 계약 배포, 블록 마이닝, 유효성 검사기 생성, 100개 이상의 모든 테스트 시나리오 실행이 포함됩니다.
최종 생각
Kraken에서 모든 단일 블록체인 통합에 대한 포괄적인 E2E 테스트를 개발하려면 상당한 양의 엔지니어링 리소스가 필요합니다. 우리의 최우선 관심사는 고객 자금의 안전과 그들이 우리 플랫폼에서 양질의 경험을 할 수 있도록 보장하는 것이기 때문에 기꺼이 지불하는 가격입니다. 새로운 통합을 구축할 때 테스트에 더 적은 시간을 할애한다면 우리 팀이 더 많은 제품을 출시할 수 있을까요? 질문 없이. 그러나 그렇게 하는 것은 엔지니어링 팀뿐만 아니라 회사 전체의 정신과 가치에 반하는 것입니다. 이러한 테스트를 통해 블록체인 소프트웨어의 새 버전으로 안전하게 업데이트하고, 하드/소프트 포크 중에 자신감을 높이며, 변경 사항을 배포할 때 개발자 스트레스를 줄일 수 있습니다.
Kraken 엔지니어가 업계에서 가장 존경받는 이유는 무엇입니까? 이 메시지 Kraken의 엔지니어링 부사장인 Steve Hunt가 다른 블록체인 엔지니어를 돕기 위한 우리의 가치와 헌신에 대해 설명합니다.
출처: https://blog.kraken.com/post/10227/testing-crypto-payments-staking-at-kraken/
- &
- 000
- 11
- 2020
- ACCESS
- 계정
- 활동적인
- All
- 모든 거래 창구
- 허용
- 어플리케이션
- 아키텍처
- 약
- 유산
- 자산
- 전투
- 비컨 사슬
- 비트코인
- blockchain
- BTC
- 빌드
- 건물
- 전화
- 가지 경우
- 도전
- 이전 단계로 돌아가기
- 확인하는 것이 좋다.
- 아이
- 암호
- 협동
- 오는
- 공통의
- 커뮤니티
- 기업
- 회사
- 자신
- 일치
- 계속
- 계약
- 계약
- 만들기
- 암호화는
- 크립토 통화를
- 암호 화폐
- 데이터베이스
- 거래
- 지연
- Detection System
- 개발
- 개발자
- 개발자
- 개발
- 책임자
- 초기의
- Edge
- 유효한
- 기사
- 엔지니어링
- 엔지니어
- 환경
- ERC20
- ETH
- 이더리움
- 에테 리엄 2.0
- 기풍
- 이벤트
- 교환
- FAST
- 특색
- 특징
- 피아트
- 금융
- 유연성
- 흐름
- 뼈대
- 가득 찬
- 기능
- 자금
- 자금
- 미래
- 일반
- 창세기
- 좋은
- 큰
- 여기에서 지금 확인해 보세요.
- 높은
- 집
- 방법
- HTTPS
- 수백
- 포함
- 증가
- 산업
- 인프라
- 완성
- 통합
- 격리
- IT
- 유지
- 키
- 지식
- 크라켄
- 넓은
- 시작
- 리드
- 레벨
- 목록
- 지방의
- LTC
- 유튜브 영상을 만드는 것은
- 채굴
- 개월
- 가장 인기 많은
- Multisig
- 네트워크
- 새로운 기능
- 새로운 제품
- 노드
- 제공
- 운영
- 선택권
- 주문
- 기타
- 고통
- 지불
- 결제
- 플랫폼
- 인기 문서
- 가격
- 사설
- 제품
- 프로젝트
- 품질
- 읽기
- 감소
- 신뢰
- 요구조건 니즈
- 자료
- REST
- 보상
- 위험
- 달리기
- 달리는
- 안전
- 화면
- 서비스
- 세트
- 작은
- 스마트 한
- 똑똑한 계약
- 스마트 계약
- So
- 소프트웨어
- 스페이스 버튼
- 말뚝
- 측설
- 스타트
- 주 정부
- 스트레스
- SUPPORT
- 지원
- 지원
- 체계
- 기술
- 일시적인
- test
- 지원
- 테스트
- 시간
- 토큰
- 상단
- 추적
- 거래
- 거래 내역
- 업데이트
- 업데이트
- us
- 가치
- 음량
- 웹
- 주
- 이내
- 작업
- 세계
- X
- xrp
- year