검수요청.png검수요청.png

텐서리티

해시넷
이동: 둘러보기, 검색
바이텀(Bytom)

텐서리티(tensority)는 해시뿐 아니라 인공지능 가속 및 분산 병렬 컴퓨팅을 위해 채굴 전력을 활용하기 위해 매트릭스 및 텐서의 사용이 도입된 작업증명(PoW) 합의 알고리즘을 기반으로 한 알고리즘이다. 유일하게 바이텀(Bytom)만이 텐서리티를 사용하고 있다.

개요[편집]

텐 서리티는 바이텀 코인으로 데뷔했다. 비트메인 이 바이텀 채굴에 독점적으로 기여한 ASIC Ant miner B3를 실제로 발표했을 정도로 에이식 친화적 알고리즘이며, 심층 학습 및 인공지능을 목표로 하는 새로운 칩이 특징이다. 텐 서리티의 목표는 블록체인을 위한 새로운 합의 메커니즘을 제공함과 동시에 심층 학습 및 인공지능 서비스를 위한 분산 네트워크를 만들어 이 컴퓨팅 파워를 유용하고 효율적인 방식으로 사용하는 것이다. 텐 서리티에서 블록 헤더 해시를 계산하고 난이도를 비교하는 것은 비트코인 과 동일하지만 텐 서리티에는 많은 매트릭스 작업이 있음으로 텐 서리티를 지원하는 마이닝 기계는 AI 가속 서비스를 제공 할 수 있다.[1]

특징[편집]

텐 서리티는 상당히 최근의 작업 증명 합의 알고리즘으로, 매트릭스와 텐서의 사용이 도입되어 해싱뿐만 아니라 인공 지능 및 분산 병렬 컴퓨팅. 바이텀 코인에 텐서 리 티가 데뷔했다. Bitmain이 ASIC Ant miner B3를 발표할 정도로 ASIC 친화적인 알고리즘으로, 바이텀의 채광에만 전념하고 딥 러닝 및 인공 지능을 위한 새로운 칩이 특징인 ASIC Ant miner B3를 발표했다. 탠서리티의 목표는 블록체인에 새로운 합의 시스템을 제공하는 동시에 딥 러닝 및 인공 지능 서비스를 위한 분산 네트워크를 만들어 유용하고 효율적인 방식으로 이 컴퓨팅 기능을 사용하는 것이다.

텐 서리티 연산은 시드 및 블록 헤더 해시를 입력으로 사용하고 이에 따라 작업을 생성하고, 시드는 블록체인 히스토리 기간에 의해 결정된 32의 바이트 배열이다. 다시 말해, 시드는 히스토리 네트워크 컨센서스의 스냅 샷으로 간주 될 수 있다. 검증된 블록을 얻으려면 광부들이 난이도 요건에 맞을 때까지 다른 노드로 텐서리티를 ​​계속 운영해야 한다.[2]

  • 종자 생산
텐 서리티에는 두 개의 입력이 있으며, 하나는 블록 헤더 해시이고, 다른 하나는 시드이며, 씨앗은 256블록마다 교체되는데, 그것 또한 블록 헤더 해시로 1 255는 1블록 헤더 해시 사용, 256, 511은 256블록 해시 사용하고, 텐 서리티 논문이 말했듯이, 시드는 블록체인 기록 기간에 의해 결정되는 32의 바이트 배열이다. 다시 말해, 시드는 과거 네트워크 합의의 스냅 샷으로 간주 될 수 있다.
캐시계산
  • 캐시 계산
시드를 사용하여 행렬을 얻고, Scrypt는 Litecoin에서 사용되는데 이것의 요구 사항을 충족시키기 위해 해시를 사용하여 시드 길이를 확장한다. 그런 다음 Scrypt를 사용하여 32x1024x128의 martix를 생성한다. 캐시는 시드에 의해 생성되고, 차단 속도와 비교할 때 시드 재생이 느려진다. 따라서 시드에서 생성된 캐시를 일정 기간 동안 재사용 할 수 있고 또한 캐시는 캐시 매트릭스를 구성하는 중개자이다. 주요 단계는 다음과 같다.
  1. 시드익스텐션(Seed Extention) : seed_0을 시드로 설정하고 seed_0의 SHA 256 해시를 계산하면 seed_1을 얻는다. 마찬가지로 seed_i-1의 SHA 256 해시를 계산하여 seed_i를 하나씩 얻을 수 있고, 마지막으로 seed_0, 을 문자열로 묶습니다. seed_ext round를 함께 묶어 ext seed 한다.
  2. Ext seed 암호화 : 32x1024x128의 unint32 배열인 캐시를 얻기 위해 스크립트(Scrypt) 함수를 재귀적으로 호출한다. 스크립트는 저비용 암호 충돌을 방지하기 위한 키 생성 방법으로 주로 사용되는 일종의 KDF 알고리즘이다. 스크립트는 2011년부터 라이트코인 에서 사용되었다는 점을 언급할 가치가 있다. 따라서 신뢰할 수 있는 시드 확장 알고리즘으로 입증되었다.
Algorithm: calcSeedCache
------------------------------------------------
Input: seed
Output: cache
------------------------------------------------
1   Initialize extround = 3, scryptround = 128;
2   extseed = seed;
3   tmphash = seed;
4   for i = 1; i <= extround; i++ do
5       tmphash = SHA256(tmphash);
6       extseed = append(extseed, tmphash);
7   end
8   cache = null;
9   tmpv = null;
10  for j = 1; j <= scryptround; j++ do
11      tmpv = Scrypt.smix(extseed, tmpv);
12      cache = append(cache, tmpv);
13  end
14  return cache
------------------------------------------------ 
매트릭스 구성
  • 매트릭스 구성
매트릭스의 구성은 32x1024x128의 매트릭스를 256x256x256의 매트릭스로 전환한다. 텐 서리티의 기술 혁신은 Tensor 및 매트릭스 작업을 기반으로 한다. 이 절차에서는 다음 절차에서 행렬 작업을 수행할 수 있는 행렬을 구성하는데, 주요 단계는 다음과 같다.
  1. 캐시 재구성 : 처음에는 캐시를 128개의 그룹으로 분할한다. 각 그룹은 32x1024요소를 포함하고, 각 그룹에서 32개의 요소를 하나의 단위로 묶는다. 따라서 32x1024x128의 uint32 매트릭스 tmpmatrix를 얻으며, 재구성된 매트릭스 의 크기는 또한 32x1024x128이다. Tmpmatrix홀수 차원 2 인덱스를 갖는 요소는 대응하는 1 내지 1024/2의 차원 2인 덱스를 갖는 요소와 동일한 재구성 매트릭스를 갖는 것을 특징으로 한다. 마찬가지로 인덱스가 짝수인 tmpmatrix 요소는 1024 / 2 + 1에서 1024 사이의 인덱스를 가진 재구성 된 매트릭스 요소의 핵심 응답자이다.
  2. 캐시 매트릭스 구성 : 매트릭스 재구성 매트릭스를 확산시키고 256x256x256의 int 8 배열로 설정한다. 그런 다음 유형 캐스팅으로 256x256x256의 float 64 배열을 얻으면, 마지막으로 256x256x256의 float 64 매트릭스 캐시 매트릭스를 얻는다.
Algorithm: constructCacheMatrix
------------------------------------------------------------------------------
Input: cache
Output: cachematrix
------------------------------------------------------------------------------
1   Initialize dim1 = 32; dim2 = 1024; dim3 = 128; dim = 256;
2   tmpmatrix = Matrix(cache, dim1, dim2, dim3);
3   recomposedmatrix = NewMatrix(dim1, dim2, dim3);
4   cachematrix = NewMatrix(dim, dim, dim);
5   recomposedmatrix[:][1:dim2/2][:] = tmpmatrix[:][all odd index][:];
6   recomposedmatrix[:][dim2/2+1:dim2][:] = tmpmatrix[:][all even index][:];
7   cachematrix = Float64(Matrix(Int8Array(recomposedmatrix), dim, dim, dim)));
8   return cachematrix;
------------------------------------------------------------------------------  
매트릭스 연산
  • 매트릭스 연산
사진은 블록 헤더 해시를 4조각으로 나누었고, 각 조각에는 8바이트가 들어 있으며, 각 조각을 해시하고 새로운 해시를 생성한다. 그런 다음 새 해시를 32바이트로 나누고 각 바이트는 매트릭스 슬라이스의 인덱스로 매트릭스를 직사각형으로 자르고, 모든 바이트가 사용될 때까지 동작을 반복한 다음 행렬을 곱하고 128 직사각형을 1 직사각형으로 전환한다.
매트릭스 작동 속도는 주로 광부의 컴퓨팅 성능에 달려 있다. 주로 매트릭스 연산의 플로트 식 environment. The 절차에서 실행 AI 알고리즘을 지원 광부를 사용해야 하기 때문에 또한 대신 정수 승산 float 64 행렬 곱셈 채용 블록 헤더 해시 이용 header hash를 슬라이스 할 수 있는 지표로서 cache matrix를, 256 × 256 × 256의 float 64 행렬. 여러 라운드에 대해 슬라이스로 반복적으로 행렬 곱셈을 계산한 후 마침내 작업 행렬 work matrix를 얻는다. 256x256의 행렬 사이에는 총 256회의 곱셈이 있는데 주요 단계는 다음과 같이 나열된다.
  1. 매트릭스 슬라이스 인덱스 생성 : 먼저 블록 헤더 해시를 4개의 그룹으로 나누고 그런 다음 각 그룹에 대해 SHA 256을 작동시키고 32바이트의 해당 시퀀스를 얻는다. 시퀀스의 각 바이트는 행렬 슬라이스의 인덱스로 정수로 캐스트 되면, 분명히 이 과정에서 4x32 매트릭스 슬라이스가 생성된다.
  2. 매트릭스 계산 슬라이스 인덱스에 따라 : 해당 256x256캐시 매트릭스 슬라이스 mb를 얻을 수 있고, 행렬 m c는 ma와 MBT를 곱한 결과이다. MA가 첫 번째 라운드에서 단위행렬로 초기화된 다음 MC의 요소를 int 32로 캐스팅하면, 여기에 Compress32to8 이라는 연산을 정의한다. 데이터 의 데이터 유형 int32를 수식를 통해 uint8로 변환한다. 곱셈 결과의 더 나은 무작위성을 보장하기 위해 Compress32to8이 도입되었다. 그런 다음 MC 요소를 해당 Compress32to8 결과로 설정 한 다음 MC 요소를 float 64로 캐스팅하고 시퀀스가 끝날 때까지 ma에 결과를 할당한다. 이전 단계는 2번 반복해야 한다, 마지막으로 ma를 사용하여 hash matrix를 갱신하면, ma와 hashmatrix의 Integer32합을 얻을 수 있다. 해시 매트릭스 갱신 해당 위치에서 낮은 8비트 값을 가진 요소를 부동 소수점으로 캐스팅한다.
Algorithm: constructHashMatrix
------------------------------------------------------------------------------
Input: cachematrix, headerhash
Output: hashmatrix
------------------------------------------------------------------------------
1   Initialize drawround = 4; mulround = 2; dim = 256;
2   hashmatrix = Matrix(dim, dim);
3   drawmatrix = Matrix(headerhash, drawround, sizeof(headerhash)/drawround);
4   for i = 1; i <= drawround; i++ do
5       ma = I;
6       mc = Matrix(dim, dim);
7       sequence = SHA256(drawmatrix[i]);
8       for j = 1; j <= mulround; j++ do
9           for k = 1; k <= sizeof(sequence); k++ do
10              index = uint8(sequence[k])+1;
11              mb = srcmatrix[index][:][:];
12              mc = ma * mb.T();
13              for element ∈ mc do
14                  element = Float64(Compress32to8(Int32(element)));
15              end
16              ma = mc
17          end
18      end
19      for row = 1; row <= dim; row++ do
20          for col = 1; col <= dim; col++ do
21              i32vhashmatrix = Int32(hashmatrix[row][col]);
22              i32vma = Int32(ma[row][col]);
23              i8v = Int8(i32vhashmatrix+i32vma);
24              hashmatrix[row][col] = Float64(i8v);
25          end
26      end
27  end
28  return hashmatrix;
------------------------------------------------------------------------------
작업생성
  • 작업 생성
작업 생성 알고리즘은 해시 매트릭스를 입력으로 사용하고 작업을 나타내는 32바이트 해시를 생성한다. 이 절차의 핵심은 임의성 전제하에서 계산 효율성을 향상하는 것인데, 암호화되지 않은 해시 알고리즘이므로 SH2 또는 SH3 대신 더 빠른 해시 매트릭스를 해시 하는 FNV 를 사용한다. FNV는 Ethereum Et hash에서도 한동안 채택되었으며, 따라서 그 신뢰성이 입증되었다. 또한 파라미터 FNV prime 로 0x01000193을 선택한다. 마지막으로 FNV 결과에 SHA 256을 적용하여 확실한 임의성을 보장한다. 사각형을 해시로 전환하고 난이도와 비교하는데, 해시가 난이도를 충족시키지 못하면 다음 라운드로 돌아간다.
  1. 매트릭스 해시 매트릭스 크기 조정 : Hash matrix는 256x256의 uint8 매트릭스로 각 행에 대해 그룹으로 위치를 64로 나눈 나머지가 동일한 요소를 추출하면, 각 그룹의 요소를 unint32 요소로 결합한다. 그런 다음 mat 32라는 256x64의 unint32 행렬을 얻는다.
  2. 이진 전달 FNV : 이진 전달 FNV는 기본적으로 매트릭스를 해시 하는 방법 다. 먼저, mat 32의 dim 1에서 n을 시작한다. 행 1에서 행 n의 경우, 를 행 위치로 나누는 것과 나머지가 동일한 열의 두 요소에 FNV기능을 조작하고 하위 행 인덱스를 가진 요소를 FNV 결과로 설정한다. 그런 다음 우리는 n을 반으로 나누고 단계 단위 n은 1과 같다. 마지막으로, mat 32의 첫 번째 행을 가져와 바이트 배열로 변환하고, 해당 바이트 배열에 대해 SHA 256을 조작한 후 work를 얻는다.
Algorithm: Binary Forwarded FNV
---------------------------------------------------------------
Input: mat32
Output: hash
---------------------------------------------------------------
1   Initialize dim1 = 256; dim2 = 64;
2   for k = dim1; k > 1; k = k/2 do
3       for i = 1; i <= k; i++ do
4           for j = 1; j <= dim2; j++ do
5               mat32[i][j] = FNV(mat32[i][j], mat32[i+k][j]);
6           end
7       end
8   end
9   hash = SHA256(ToByteArray(mat32[0][:]);
10  return hash;
--------------------------------------------------------------- 
  • 작업 검증
이 절차에서는 작업 가치를 블록 난이도와 비교하는데, 작품의 가치가 낮으면 검증된 저작물로 볼 수 있으며 광부는 다른 사람으로부터 검증된 블록을 받기 전에 해당 블록을 브로드 캐스트 한다. 그렇지 않으면, 채굴자는 검증된 블록을 받기 전에 Tensority를 ​​실행하기 위해 nonce 값을 계속 변경한다.
  • 텐서 마스터 링
블록체인은 분산 시스템이고, 일관성은 분산 시스템의 기본 문제이며, 시스템이 서로 다른 일관성 수준을 충족하도록 합의 알고리즘이 필요하다. 가장 널리 사용되는 알고리즘은 POW, POS, DPOS 등이 있고, 비트코인에서 9년 동안 사용한 POW 합의 알고리즘은 안정적이고 신뢰할 수 있는 것으로 입증되었지만 거대한 하드웨어 및 에너지 낭비로 인해 비난을 받았다. 자원 낭비를 피하고자 POS와 DPOS는 인증서와 선거를 통해 합의를 통해 계산을 직접 폐기하지만, 분산을 줄인다.

작동원리[편집]

텐 서리티는 시드 매개 변수와 블록 헤더의 해시를 입력으로 사용한다. 시드는 블록체인의 특정 수명 기간에 따라 결정되는 32바이트의 배열이다. 따라서 네트워크에 대한 합의 이력의 스냅샷으로 간주될 수 있다. 검증된 블록을 얻으려면 채굴기는 난이도 요구 사항을 충족할 때까지 논스 를 계속 생성해야 한다. 텐서리티는 캐시 계산, 매트릭스 구성, 매트릭스 간의 연산, 작업 생성 및 검증 작업의 5단계로 구성된다.

텐서리티개요.PNG

캐시는 블록 생성 속도와 비교하여 시드 갱신이 더 느리게 발생하기 때문에 시드로부터 생성된다. 따라서, 시드에 의해 생성된 캐시는 일정 기간 동안 재사용 될 수 있다. 그런 다음 알고리즘의 가장 혁신적인 부분인 매트릭스의 구성이 있다. 이 매트릭스는 캐시를 분할하고 그룹화하는 일련의 작업을 수행함으로써 구축된다. 그다음 단계는 매트릭스 간의 연산을 포함한다. 수행 할 수 있는 작업의 수는 주로 채굴기의 계산 능력에 따라 달라진다. 주로 float 64를 기반으로 하는 인공지능 알고리즘에 의해 수행되는 작업을 지원하기 위해 고전적인 정수 행렬 대신 float 64가 사용된다. 마지막으로 해시 매트릭스도 생성된다. 이 시점에서 실제 PoW가 존재하는데, 이 PoW는 이전 단계에서 생성된 해시 매트릭스에서 시작하여 32바이트 해시로 구성된다. 마지막으로, 수행된 PoW 값과 블록의 난이도를 비교한다. 만약 그 작품이 더 낮은 가치를 가지고 있다면, 유효한 것으로 간주하여 다른 채굴기에 전파된다. 그렇지 않으면 채굴기는 유효성이 검증된 새 블록을 수신할 때까지 다른 논스를 사용하여 절차를 계속 다시 실행한다.[3]

활용[편집]

바이텀[편집]

바이텀 은 2017년 6월 20일에 서비스를 시작한 현실과 가상의 자산 이동을 목표로 개발된 암호화폐 플랫폼 이며, 가상세계와 현실 세계를 연결해 모든 자산의 거래를 가능케 하는 쌍방향 프로토콜 이다. 바이텀의 목적은 실물 자산을 디지털 세계에서 관리함으로써 현실의 주식채권, 지적재산권 등을 디지털화하여 보관, 거래, 교환을 가능케 하는 것이다. 즉, 보유 중인 다양한 실물 자산들, 현금, 부동산, 미술품, 기타 코인 등을 바이텀 플랫폼에서 토큰화하거나 동시에 토큰을 실물 자산으로 교환할 수 있다. 다만 비트코인 이나 이더리움 과 같은 다른 블록체인 과 비교했을 때 바이텀은 '자산 등록 및 관리'에 초점을 맞추고 있다. 또한 비트코인의 트랜잭션 구조 및 UTXO 모델과 높은 호환성을 가지고 있어 확장성이 뛰어나고 빠른 거래를 지원할 수 있다.

바이텀은 기존 작업 증명 방식이 가지고 있던 에너지 과소비 문제를 해결하기 위해 인공지능 에이식 CPU에 친화적이며 독자적인 작업 증명 합의 알고리즘을 사용하고 있다. 2017년 12월, 바이텀은 세계 최초로 ObEN과 인공지능 개발 협약을 맺었고, 이로 인해 인공지능 칩을 비트메인 에이식에 이식할 계획으로, AI 칩은 현재 개발 중이다. 더불어 해시 알고리즘이 적용되는 과정에서 매트릭스 및 콘볼루션 계산이 적용되며 채굴자들은 인공지능 가속화 서비스를 이용해 채굴에 참여할 수 있다. 코인마켓캡 에 따르면, 시가 총액은 2019년 8월 기준 약 1억 1,400만 달러로 62위를 기록하고 있다.

  • 주요인물
  • 장지아(Chang Jia, zhǎng jiá)는 바이텀의 창시자이다. 장지아는 중화권에서 아주 유명한 암호화폐 포털 8btc.com의 설립자이기도 하며, 랑 유(LANG YU)라는 친구는 2012년부터 2014년까지 알리바바와 알리페이 개발을 담당했던 수석 개발자이고, 두안 신싱(DUAN XINXING)은 오케이코인(OKcoin)의 부사장, GUO 장지아는 이더리움 계열 지갑인 패리티 지갑을 담당했던 이력, 그 외 다른 개발진들도 모두 출중한 경력을 가지고 있고 특이한 점은 개발진 모두 장자 대표가 설립한 8btc에서 같이 일한 경험이 있다.[4]

각주[편집]

  1. BYTOM 블록체인, 〈텐서 마스터 링〉,《미디엄》, 2018-06-04
  2. 바이텀 공식 홈페이지 - 〈https://docs.bytom.io/en-us/docs/09_1_tensority.html〉
  3. Emanuele Pagliari, 〈마이닝 알고리즘 (작업 증명)〉,《크립토노미스트》, 2019-07-28
  4. drunkenjack, 〈Bytom 바이텀 코인에 대해서 알아볼까요?〉,《스팀잇》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 텐서리티 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.