쿼크체인 설명, 3부 : 쿼크체인의 샤딩-분할의 정의

QuarkChain
QuarkChain Official
11 min readAug 1, 2018

(샤딩에 대해서 더 이해 잘하기 위해서 2부:샤딩-간략한 소개와 블록체인에서의 기회를 봐주십시오)

쿼크체인 샤딩의 설계 개요

기존의 블록 체인 모델에서는, 쿼크체인은 다음의 설계에 따른 기존의 모델을 확장합니다.

-(분할의 정의):쿼크체인은 스마트 계약을 분석합니다. 스마트 계약에는 코드와 스토리지가 포함되어 있으며, 데이터 사이즈는 사용자 계정보다 훨씬 커지고 있습니다.(주소가많고 거래량이 많은 ERC20을 고려하세요).

-(분할의 정의):사용자 계정은 분할되지 않았습니다. 이 때문에 개인 키를 가지는 사용자는 모든 공유 내의 모든 자원(스마트 계약)에 접속할 수 있습니다.

-(원자수):각 스마트 계약에는 공유 키(코드 베이스의 풀 공유 Id)이 있고 같은 공유 키를 가진 모든 스마트 계약에서의 일회분 조작은 원자입니다. 또, 스마트 컨트렉트는, 다른 공유 키를 가진 다른 스마트 컨트렉트에 접속하는 것을 금지합니다

-(균형 잡힌 부하/사이즈):스마트 계약의 샤드키가 고르게 분산되어 있는 것을 전제로, 스마트 계약를 다른 샤드에 균등 분할할 것으로 기대됩니다.

-(리샤드):이행 비용을 낮추고 공유를 추가하려면, 스마트 계약 내의 공유 키에 따르고 공유를 2개의 공유에 분할해야합니다. 이 때문에 다른 이전의 샤드 에서 데이터 이행이 불필요하게 되어, 리샤딩을 심플화 합니다.

-(리샤드):스마트 계약의 행동은, 변경 전과 변경 후, 즉, 동일한 가치의 스마트 계약 결과를 읽고 시스템 상태 변경 전과 변경 후에, 스마트 계약 결과를 올림으로써 동일하게 된다.

쿼크체인의 시스템 상태 및 상태 파티션

쿼크체인의 CRUD조작의 배치의 원자력성을 지원하기 위해서쿼크체인은 각 주소에 32비트 샤드 키를 추가하여 사용자 계정과 스마트 계약의 주소를 다시 정의합니다.

주소 := RIPEMD160(공개 키)+샤드 키,

여기에서, +는 데카르트 곱 연산이며, 쿼크체인 주소는 192비트의 데이터입니다. 이 주소의 첫 160비트를 쿼크체인 주소의 수신자라고 부릅니다.
쿼크체인네트워크의 공유(샤드 사이즈)수는 2의 거듭 제곱이다, 다시 하드웨어 동작에 의해서 네트워크 내의 공유 수가 2배로 증가합니다. 샤드 사이즈를 지정하면, 그 공유는 다음과 같이 인덱스화됩니다.
Shard Id := Shard key%Shard size.(공유 ID:=공유 키%공유 사이즈)
공유 내의 상태는 키와 값의 매핑입니다. 여기서 키는 주소의 수신자이고 값은 다음과 같습니다.

-균형
-난스,
-코드
-스토리지
-ShardKey.

여기서 샤딩 키는 키와 값의 페어가 작성될 때 설정되어 그 후 변경 불가능합니다.
주소에 추가 공유 키를 사용하면 사용자(또는 수신자)는 모든 공유 내의 모든 주소를 단일의 개인 키로 관리할 수 있습니다.

쿼크체인거래

균형 전송 트랜잭션

균형 전송 트랜잭션은 목적지 주소와 보낸 주소에 의존합니다.

-(샤드안의 트랜잭션):양쪽 주소에 같은 공유 ID가 설정되어 있는 경우(공유 키가 다른 경우에도), 전송은 공유 내 트랜잭션입니다. 같은 샤드 내의 수신자의 균형만 갱신됩니다.

-(크로스 점유율 트랜잭션):양쪽 주소가 다른 공유 ID를 갖는 경우, 전송은 크로스 점유율 변동이며, 트랜잭션의 원자력성은 더욱 조정할 필요가 있습니다. 다행히, 이러한 트랜잭션은 전통의 크로스 체인 트랜잭션보다 훨씬 단순합니다. 이것은, 양쪽의 공유에서 같은 암호 통화(QKC)가 실행되고 있기 때문입니다. 크로스 점유율 트랜잭션에 대한 자세한 내용은 다른 기사에서 설명합니다.

스마트한 계약 거래

스마트 계약 트랜잭션은, 같은 샤드내에서 발행할 필요가 있습니다. 즉, 보낸유저의 사용자 계정의 공유 ID와 목적지 스마트 계약은 같지 않으면 안 됩니다. 스마트 계약는, 같은 공유 키로 다른 스마트 계약(EVM의 하위 호환성을 유지하기 위한 코드 내의 EVM내 주소)를 불러낼 수 있다. 단, 스마트 계약가 다른 점유율에 있는 경우, 이런 계약 콜은 실패합니다. 이 경우, 이런 콜은 다음의 비슷한 코드를 사용하고 스마트 계약을 부르는 것과 동등합니다.

(샤딩에 대해서 더 이해 잘하기 위해서 2부:샤딩-간략한 소개와 블록체인에서의 기회를 봐주십시오)
쿼크체인 샤딩의 설계 개요

기존의 블록 체인 모델에서는, 쿼크체인은 다음의 설계에 따른 기존의 모델을 확장합니다.

-(분할의 정의):쿼크체인은 스마트 계약을 분석합니다. 스마트 계약에는 코드와 스토리지가 포함되어 있으며, 데이터 사이즈는 사용자 계정보다 훨씬 커지고 있습니다.(주소가많고 거래량이 많은 ERC20을 고려하세요).

-(분할의 정의):사용자 계정은 분할되지 않았습니다. 이 때문에 개인 키를 가지는 사용자는 모든 공유 내의 모든 자원(스마트 계약)에 접속할 수 있습니다.

-(원자수):각 스마트 계약에는 공유 키(코드 베이스의 풀 공유 Id)이 있고 같은 공유 키를 가진 모든 스마트 계약에서의 일회분 조작은 원자입니다. 또, 스마트 컨트렉트는, 다른 공유 키를 가진 다른 스마트 컨트렉트에 접속하는 것을 금지합니다

-(균형 잡힌 부하/사이즈):스마트 계약의 샤드키가 고르게 분산되어 있는 것을 전제로, 스마트 계약를 다른 샤드에 균등 분할할 것으로 기대됩니다.

-(리샤드):이행 비용을 낮추고 공유를 추가하려면, 스마트 계약 내의 공유 키에 따르고 공유를 2개의 공유에 분할해야합니다. 이 때문에 다른 이전의 샤드 에서 데이터 이행이 불필요하게 되어, 리샤딩을 심플화 합니다.

-(리샤드):스마트 계약의 행동은, 변경 전과 변경 후, 즉, 동일한 가치의 스마트 계약 결과를 읽고 시스템 상태 변경 전과 변경 후에, 스마트 계약 결과를 올림으로써 동일하게 된다.
쿼크체인의 시스템 상태 및 상태 파티션

쿼크체인의 CRUD조작의 배치의 원자력성을 지원하기 위해서쿼크체인은 각 주소에 32비트 샤드 키를 추가하여 사용자 계정과 스마트 계약의 주소를 다시 정의합니다.
주소 := RIPEMD160(공개 키)+샤드 키,
여기에서, +는 데카르트 곱 연산이며, 쿼크체인 주소는 192비트의 데이터입니다. 이 주소의 첫 160비트를 쿼크체인 주소의 수신자라고 부릅니다.
쿼크체인네트워크의 공유(샤드 사이즈)수는 2의 거듭 제곱이다, 다시 하드웨어 동작에 의해서 네트워크 내의 공유 수가 2배로 증가합니다. 샤드 사이즈를 지정하면, 그 공유는 다음과 같이 인덱스화됩니다.
Shard Id := Shard key%Shard size.(공유 ID:=공유 키%공유 사이즈)
공유 내의 상태는 키와 값의 매핑입니다. 여기서 키는 주소의 수신자이고 값은 다음과 같습니다.

-균형
-난스,
-코드
-스토리지
-ShardKey.

여기서 샤딩 키는 키와 값의 페어가 작성될 때 설정되어 그 후 변경 불가능합니다.
주소에 추가 공유 키를 사용하면 사용자(또는 수신자)는 모든 공유 내의 모든 주소를 단일의 개인 키로 관리할 수 있습니다.

쿼크체인거래

균형 전송 트랜잭션

균형 전송 트랜잭션은 목적지 주소와 보낸 주소에 의존합니다.

-(샤드안의 트랜잭션):양쪽 주소에 같은 공유 ID가 설정되어 있는 경우(공유 키가 다른 경우에도), 전송은 공유 내 트랜잭션입니다. 같은 샤드 내의 수신자의 균형만 갱신됩니다.

-(크로스 점유율 트랜잭션):양쪽 주소가 다른 공유 ID를 갖는 경우, 전송은 크로스 점유율 변동이며, 트랜잭션의 원자력성은 더욱 조정할 필요가 있습니다. 다행히, 이러한 트랜잭션은 전통의 크로스 체인 트랜잭션보다 훨씬 단순합니다. 이것은, 양쪽의 공유에서 같은 암호 통화(QKC)가 실행되고 있기 때문입니다. 크로스 점유율 트랜잭션에 대한 자세한 내용은 다른 기사에서 설명합니다.

스마트한 계약 거래

스마트 계약 트랜잭션은, 같은 샤드내에서 발행할 필요가 있습니다. 즉, 보낸유저의 사용자 계정의 공유 ID와 목적지 스마트 계약은 같지 않으면 안 됩니다. 스마트 계약는, 같은 공유 키로 다른 스마트 계약(EVM의 하위 호환성을 유지하기 위한 코드 내의 EVM내 주소)를 불러낼 수 있다. 단, 스마트 계약가 다른 점유율에 있는 경우, 이런 계약 콜은 실패합니다. 이 경우, 이런 콜은 다음의 비슷한 코드를 사용하고 스마트 계약을 부르는 것과 동등합니다.

PUSH 0x0
DUP1
REVERT

같은 공유 키를 가진 스마트 계약은 늘 같은 샤드에 분할되기 때문에, 시스템의 상태가 어떻게 분할되고 있으면, 스마트 계약(판독/기입)의 동작은 마찬가지임을 보증합니다(“리샤드”의 섹션을 참조).

쿼크 체인의 리샤드

리샤드 동작에는, 각 샤드가 2개의 개별의 샤드에 분할되어 그 결과, 샤드사이즈는 배가합니다. 샤드 사이즈를 2배로 하면, 유저 어카운트/스마트 계약의 목적지가, 새로운 샤드 ID의 여분의 중요한 비트에 의해서 식별됩니다. 사용자 계정/스마트 계약의 샤드 키가 고르게 분산되고 있다고 가정하면, 유저 어카운트/스마트 계약의 절반은 새로운 샤드에 분할되었고 나머지는 다른 샤드에 분할된다. 게다가, 분할된 샤드는, 코드를 REVER코드에 치환, 그 스토리지를 삭제하여 분할된 다른 샤드의 스마트 계약를 포함할 경우가 있습니다. 이들의 더미의 스마트 계약에 의해서, 새로운 샤드 카드의 스마트 계약은 같은 샤드 카드 내에 있는, 다른 샤드 키를 가진 스마트 계약을 콜 할 수 없게 됩니다.

스플릿된 양쪽의 공유를 처리하는 현재 노드가 능력 부족의 경우, 네트워크에 새로운 노드를 추가해서 그 상태를 이행하면서 새로운 샤드를 처리할 수 있습니다. 그래서, shards/number가 증가하면서 시스템의 능력이 증가합니다. 이를 실현하려면, 클러스터를 사용합니다. 클러스터에 대해서는, 향후의 기사에서 설명합니다.

쿼크체인의 공유 키 선택

쿼크체인의 로드 밸런싱의 목표는 모든 스마트 계약을 모두 샤드에 확실히 알리기입니다. 스마트계약을 만든 후에는, 샤드 키는 불변이므로, 작성 시 키 선택이 중요합니다.

우선, 작성하는 스마트 계약가 다른 스마트 계약에 의존하는 경우, 점유율 키는 의존하는 스마트 계약이 같지 않으면 안됩니다.

둘째, 스마트 계약이 다른 스마트 계약에 의존하지 않으면 사용자(또는 지갑)은 자유롭게 샤드 키를 선택할 수 있다.

-불규칙하게 생성된 공유 키, 또는
-수신자의 주소가 32비트인 경우, 또는
-지갑의 IP주소

처음의 2가지 선택에 의해서, 고르게 분산된 샤드 키가 발생할 가능성이 있습니다. 하지만 수백, 수천의 샤드가 있다고 합니다. 네트워크 내의 임의의 스마트 계약에 접근하고자 하는 사용자는 잦은 크로스 점유율 거래를 필요로 할지, 복수의 균형을 유지하기가 필요한 경우가 있기 때문에 사용자 경험의 공유 효율이 저하하거나, 사용자 경험이 저하하거나 합니다.

IP주소를 사용하면 스마트 계약을 지리 정보에서 그룹화함으로써 문제가 완화될 가능성이 있습니다. 스마트 계약의 대화가 지리적으로 관련된 경우(예를 들어, 로컬의 상품/서비스에서의 불필요한 거래 장소 이동을 절약하는 경우 등)는, 유저가 그대로 유지됩니다.

쿼크체인과 Google의 BigTable의 비교

쿼크체인의 샤드디자인의 대부분은 Google의 BigTable에서 영감을 받았으며 그들은 많은 공통점을 가지고 있고 그 공통점은 꼭 매장에 필요한 키입니다. 다음 표에서 그것들을 놓고 비교합니다.

쿼크체인도 비슷한 기능 외에 BigTable와 큰 차이가 있습니다.

-쿼크체인은 원어민처럼 크로스 점유율 트랜잭션을 지원하고 있습니다. 이는 어느 샤드 내 1개의 계정에서 다른 샤드 내의 다른 계정에 균형을 전송하는 한편, BigTable은 여러 행 키 간의 트랜잭션을 지원하지 않습니다.

-BigTable에서는, 인접한 2개의 태블릿(점유율)이 삭제되고 작은 테이블에서 있으면, 그것들을 1개의 태블릿에 통합 수 있다. 이것에 대해서, 블록 체인에서는 삭제 조작(예를 들면, 자기 파괴)이 대부분 사용되지 않기 때문에, 통합 조작이 불필요하게 됩니다. 이 때문에 QuarkChain의 시스템 모델과 위협 모델(리플레이 공격) 이 크게 간단하게 됩니다.

요약

기존의 확장 가능한 시스템에서 영감을 얻고, 우리는 새로운 블록 체인 시스템 모델을 제안하고 추후 계획에 대해서 말했습니다. 그 제안한 모델로 Google의 BigTable과 비교도 소개했습니다. 다음의 기사에서는, 샤딩와 그것에 대응하는 쿼크체인의 위협 모델을 지원하기 위한 합의를 형성하는 방법을 논의할것입니다.

QuarkChain에 대해서

쿼크체인은, 수평 방향의 확장성 기술을 이용해서 블록 체인의 확장성 문제에 대처합니다. 쿼크체인의 임무는 세상 누구나가 언제 어디서나 블록 체인 기술을 이용하게 하는 것입니다. 쿼크체인에 관심 있는 분은 다음의 링크로 자세한 사항을 확인하세요.
Website https://www.quarkchain.io
Telegram https://t.me/quarkchainio
Twitter https://twitter.com/Quark_Chain
Steemit https://steemit.com/@quarkchain
Medium https://medium.com/quarkchain-official
Reddit https://www.reddit.com/r/quarkchainio/
Weibo https://weibo.com/QuarkChain

--

--