문서
개념
보호 풀, 자산, 수수료, 메모, 블록과 검증자, 그리고 교환 풀을 설명합니다.
테스트 네트워크: 코인에는 가치가 없습니다
보호 풀과 노트
Tint에서의 잔액은 노트의 집합입니다. 노트는 하나의 주소로 암호화된 기록으로, “이 코인이 이만큼 당신의 것입니다”라는 내용을 담고 있습니다. 노트는 Merkle 트리의 커밋먼트로 체인에 저장되므로, 누구도 노트를 읽거나 누구의 것인지 알 수 없습니다.
결제하려면 지갑이 노트 몇 개를 사용하고 새 노트를 만듭니다. 받는 사람을 위한 노트 하나와 나에게 돌아오는 잔돈입니다. 지갑은 Halo 2 증명으로 사용한 노트를 소유하고 있다는 것, 그 노트가 존재했다는 것, 값의 합이 맞는다는 것을 어떤 노트인지 밝히지 않고 증명합니다. 사용된 노트마다 무효화자(nullifier)가 공개됩니다. 네트워크는 이 태그로 같은 노트의 두 번째 사용을 거부하며, 어떤 노트였는지는 알지 못합니다.
받는 사람의 지갑은 모든 블록을 읽고 새 노트를 각각 열람 키로 복호화해 봅니다. 복호화되는 노트가 그 사람의 것입니다. 이 시험 복호화 때문에 노드는 결제의 수신자가 누구인지 알 수 없습니다.
자산
코인은 번호가 있는 자산입니다. 자산 0은 기본 코인 TINT이고, 자산 1은 테스트 달러 TUSD입니다. 체인은 최대 16개의 자산을 정의할 수 있습니다. 자산마다 별도의 보호 풀이 있습니다. 결제는 한 자산의 노트를 옮기며, 두 자산이 만나는 곳은 거래소뿐입니다.
금액은 단위의 정수입니다. 코인 1개는 100,000,000 단위(소수 8자리)이므로 TINT의 최소 금액은 0.00000001입니다.
수수료
결제의 모든 액션은 최소 수수료를 내며, 수수료는 보내는 코인으로 지불합니다. 가스용으로 두 번째 코인이 필요하지 않습니다. 현재 테스트 네트워크의 최소 수수료는 다음과 같습니다.
| 코인 | 액션당 수수료 |
|---|---|
TINT | 0.00005 |
TUSD | 0.001 |
트랜잭션에는 액션이 최소 1개, 최대 64개 있습니다. 지갑은 승인하기 전에 정확한 수수료를 보여 줍니다. 수수료는 공개됩니다.
메모
모든 노트에는 노트와 함께 암호화되는 512바이트 메모 필드가 있습니다. 여기에 짧은 글을 넣으면 받는 사람의 지갑만 읽을 수 있습니다. 모든 노트에 이 필드가 있으므로 빈 메모에는 추가 비용이 들지 않습니다.
블록과 검증자
Tint는 지분 증명 방식입니다. 고정된 검증자 집합이 BFT 합의(commonware 라이브러리의 Simplex)로 각 블록에 합의합니다. 검증자들이 합의하면 블록은 확정되며, 확인이 쌓이기를 기다릴 필요가 없습니다.
- 결제가 포함될 수 있게 되면 즉시 결제가 담긴 블록이 만들어집니다.
- 조용한 체인은 디스크가 빈 블록으로 채워지지 않도록 약 5초마다 빈 블록을 만듭니다. 결제는 이 간격을 기다리지 않습니다.
- 합의 파라미터는 두 블록 사이의 최소 간격을 0.5초로 정합니다.
- 검증자는 제네시스에서 정해지며 아직 변경되지 않습니다. 공개 테스트 네트워크에서는 다섯 곳 모두 한 서버에서 실행됩니다.
블록 보상은 검증자에게 지급됩니다. 테스트 네트워크는 블록당 2 TINT로 시작해 15,768,000 블록마다 절반으로 줄고, 0.1 TINT의 고정 보상(tail reward)에서 멈춥니다.
교환 풀
체인에는 TINT와 TUSD를 서로 거래하는 내장 풀이 있습니다. 이 풀은 상수곱 규칙(x · y = k)을 따릅니다. 풀의 두 준비금이 바뀌면 가격이 움직입니다. 풀은 지불된 금액의 0.3%를 가져가며, 수수료는 풀에 남습니다.
풀은 200,000 TINT와 100,000 TUSD로 시작하며, 가격은 코인 하나당 0.5 테스트 달러입니다. 풀을 운영하는 사람은 없고 풀의 코인은 인출할 수 없으며, 거래만 할 수 있습니다.
스왑에는 받아들일 최소 금액이 명시됩니다. 풀의 가격이 움직여 그 금액을 더 이상 줄 수 없으면 노드는 price_moved로 응답하며 아무것도 사용되지 않습니다.
제한
| 제한 | 테스트 네트워크의 값 |
|---|---|
| 트랜잭션 하나의 액션 수 | 64 |
| 블록 하나의 액션 수 | 2,048 |
| 트랜잭션이 기준으로 삼을 수 있는 최근 루트 | 1,000 블록 |
| 트랜잭션 만료를 미리 지정할 수 있는 범위 | 1,000 블록 |