설정 매개변수
tonviewer를 통해 실시간 값을 읽어보세요
👋 소개
이 페이지에서는 TON 블록체인에서 사용되는 설정 매개변수에 대한 설명을 찾을 수 있습니다. TON은 많은 기술적 매개변수가 있는 복잡한 설정을 가지고 있습니다: 일부는 블록체인 자체에서 사용되고, 일부는 생태계에서 사용됩니다. 하지만 이러한 매개변수의 의미를 이해하는 사람은 많지 않습니다. 이 글은 사용자에게 매개변수와 그 목적을 쉽게 이해할 수 있는 방법을 제공하기 위해 필요합니다.
💡 전제조건
이 자료는 매개변수 목록과 함께 읽어야 합니다. 현재 설정에서 매개변수 값을 볼 수 있으며, cells에 쓰이는 방식은 TL-B 형식의 block.tlb 파일에 설명되어 있습니다.
TON 블록체인 매개변수 끝의 이진 인코딩은 설정의 직렬화된 이진 표현으로, 설정의 효율적인 저장이나 전송을 가능하게 합니다. 직렬화의 정확한 세부사항은 TON 블록체인이 사용하는 특정 인코딩 체계에 따라 다릅니다.
🚀 시작하겠습니다!
모든 매개변수는 순서대로 되어 있어 헷갈리지 않을 것입니다. 빠른 탐색을 위해 오른쪽 사이드바를 사용하세요.
Param 0
이 매개변수는 블록체인의 설정을 저장하는 특별한 스마트 컨트랙트의 주소입니다. 설정은 검증자 투표 중 로딩과 수정을 단순화하기 위해 컨트랙트에 저장됩니다.
설정 매개변수에는 주소의 해시 부분만 기록되는데, 이는 컨트랙트가 항상 마스터체인(워크체인 -1)에 있기 때문입니다. 따라서 컨트랙트의 전체 주소는 -1:<설정 매개변수의 값>
으로 작성됩니다.
Param 1
이 매개변수는 검증자 임명, 보상 분배, 블록체인 매개변수 변경에 대한 투표를 담당하는 선거인 스마트 컨트랙트의 주소입니다.
Param 2
이 매개변수는 새로운 TON을 발행하고 블록체인 검증에 대한 보상으로 보내는 시스템의 주소를 나타냅니다.
매개변수 2가 없으면 매개변수 0이 대신 사용됩니다(새로 발행된 TON은 설정 스마트 컨트랙트에서 나옴).
Param 3
이 매개변수는 트랜잭션 수수료 수집기의 주소입니다.
매개변수 3이 없는 경우(현재 상황), 트랜잭션 수수료는 선거인 스마트 컨트랙트(매개변수 1)로 보내집니다.
Param 4
이 매개변수는 TON 네트워크의 루트 DNS 컨트랙트의 주소입니다.
자세한 정보는 TON DNS & 도메인 문서와 더 자세한 원본 설명인 여기에서 찾을 수 있습니다. 이 컨트랙트는 .ton 도메인 판매를 담당하지 않습니다.
Param 6
이 매개변수는 새로운 화폐 발행 수수료를 담당합니다.
Currently, minting additional currency is not implemented and does not work. The implementation and launch of the minter are planned.
문제와 전망에 대해 관련 문서에서 자세히 알아볼 수 있습니다.
Param 7
이 매개변수는 유통 중인 각 추가 화폐의 양을 저장합니다. 데이터는 딕셔너리(이진 트리; TON 개발 중에 이 구조가 실수로 hashmap으로 명명된 것 같음) extracurrency_id -> amount
형태로 저장되며, 금액은 VarUint 32
- 0
에서 2^248
사이의 정수로 표시됩니다.
Param 8
이 매개변수는 네트워크 버전과 검증자가 지원하는 추가 기능을 나타냅니다.
검증자는 새 블록 을 생성하고 트랜잭션을 확인하는 책임이 있는 블록체인 네트워크의 노드입니다.
-
version
: 이 필드는 버전을 지정합니다. -
capabilities
: 이 필드는 특정 기능이나 성능의 존재 또는 부재를 나타내는 데 사용되는 플래그 세트입니다.
따라서 네트워크를 업데이트할 때 검증자들은 매개변수 8을 변경하는 데 투표할 것입니다. 이런 방식으로 TON 네트워크는 다운타임 없이 업데이트될 수 있습니다.
Param 9
이 매개변수는 필수 매개변수 목록(이진 트리)을 포함합니다. 매개변수 9가 변경될 때까지 설정 변경 제안으로 제거할 수 없는 특정 설정 매개변수가 항상 존재하도록 보장합니다.
Param 10
이 매개변수는 변경이 네트워크에 크게 영향을 미치는 중요한 TON 매개변수 목록(이진 트리)을 나타내므로 더 많은 투표 라운드가 열립니다.
Param 11
이 매개변수는 TON 설정 변경 제안이 어떤 조건에서 수락되는지를 나타냅니다.
min_tot_rounds
- 제안을 적용할 수 있는 최소 라운드 수max_tot_rounds
- 도달하면 제안이 자동으로 거부되는 최대 라운드 수min_wins
- 필요한 승리 수(검증자의 3/4이 담보금 합계로 찬성 투표 해야 함)max_losses
- 도달하면 제안이 자동으로 거부되는 최대 패배 수min_store_sec
와max_store_sec
는 제안이 저장될 수 있는 가능한 시간 간격을 결정bit_price
와cell_price
는 제안의 1비트나 1셀을 저장하는 비용을 나타냄
Param 12
이 매개변수는 TON 블록체인의 워크체인 설정을 나타냅니다. TON 블록체인의 워크체인은 병렬로 작동할 수 있는 독립적인 블록체인으로 설계되어 TON이 매우 많은 트랜잭션과 스마트 컨트랙트를 처리할 수 있게 합니다.
워크체인 설정 매개변수
-
enabled_since
: 이 워크체인이 활성화된 순간의 UNIX 타임스탬프 -
actual_min_split
: 검증자가 지원하는 이 워크체인의 최소 분할(샤딩) 깊이 -
min_split
: 설정에 의해 설정된 이 워크체인의 최소 분할 깊이 -
max_split
: 이 워크체인의 최대 분할 깊이 -
basic
: 이 워크체인이 기본(TON 코인 처리, TON 가상 머신 기반 스마트 컨트랙트)인지 나타내는 부울 플래그(true는 1, false는 0) -
active
: 이 워크체인이 현재 활성 상태인지 나타내는 부울 플래그 -
accept_msgs
: 이 워크체인이 현재 메시지를 수락하고 있는지 나타내는 부울 플래그 -
flags
: 워 크체인의 추가 플래그(예약됨, 현재 항상 0) -
zerostate_root_hash
와zerostate_file_hash
: 워크체인의 첫 번째 블록 해시 -
version
: 워크체인의 버전 -
format
: vm_version과 vm_mode를 포함하는 워크체인의 형식 - 거기서 사용되는 가상 머신
Param 13
이 매개변수는 선거인 컨트랙트에서 검증자의 잘못된 작동에 대한 불만을 제기하는 비용을 정의합니다.
Param 14
이 매개변수는 TON 블록체인에서 블록 생성에 대한 보상을 나타냅니다. 나노그램은 nanoTON이므로, 마스터체인의 블록 생성 보상은 1.7 TON이고, 기본 워크체인에서는 1.0 TON입니다(한편, 워크체인이 분할되는 경우 블록 보상도 분할됩니다: 워크체인에 두 개의 샤드체인이 있으면 샤드 블록 보상은 0.5 TON이 됩니다).
Param 15
이 매개변수는 TON 블록체인에서 선거와 검증자 작업의 다른 단계의 기간을 포함합니다.
각 검증 기간에는 검증 시작 시 UNIX 형식 시간과 동일한 election_id
가 있습니다.
선거인 컨트랙트의 각각의 get-methods active_election_id
와 past_election_ids
를 호출하여 현재 election_id
(선 거가 진행 중인 경우) 또는 이전 id를 얻을 수 있습니다.
워크체인 설정 매개변수
-
validators_elected_for
: 선출된 검증자 세트가 역할을 수행하는 초 단위 시간(한 라운드) -
elections_start_before
: 현재 라운드 종료 몇 초 전에 다음 기간의 선거 과정이 시작될지 -
elections_end_before
: 현재 라운드 종료 몇 초 전에 다음 라운드의 검증자가 선택될지 -
stake_held_for
: 라운드가 만료된 후 불만 처리를 위해 검증자의 스테이크가 보류되는 기간
인수의 각 값은 uint32
데이터 유형으로 결정됩니다.
예시
TON 블록체인에서는 검증 기간을 짝수와 홀수로 관례적으로 나누는 것이 일반적입니다. 이러한 라운드는 서로 이어집니다. 다음 라운드에 대한 투표가 이전 라운드 중에 이루어지므로, 검증자는 두 라운드 모두에 참여할 기회를 가지기 위해 자금을 두 풀로 나눠야 합니다.
메인넷
현재 값:
constants = {
'validators_elected_for': 65536, # 18.2 hours
'elections_start_before': 32768, # 9.1 hours
'elections_end_before': 8192, # 2.2 hours
'stake_held_for': 32768 # 9.1 hours
}
스키마:
기간은 어떻게 계산하나요?
election_id = validation_start = 1600032768
이라고 가정해 보겠습니다. 그러면:
election_start = election_id - constants['elections_start_before'] = 1600032768 - 32768 = 1600000000
election_end = delay_start = election_id - constants['elections_end_before'] = 1600032768 - 8192 = 1600024576
hold_start = validation_end = election_id + constants['validators_elected_for'] = 1600032768 + 65536 = 1600098304
hold_end = hold_start + constants['stake_held_for'] = 1600098304 + 32768 = 1600131072
따라서 현재 한 패리티의 한 라운드 길이는 1600131072 - 1600000000 = 131072초 = 36.40888... 시간
입니다.
테스트넷
현재 값:
constants = {
'validators_elected_for': 7200, # 2 hours
'elections_start_before': 2400, # 40 minutes
'elections_end_before': 180, # 3 minutes
'stake_held_for': 900 # 15 minutes
}
스키마
기간은 어떻게 계산하나요?
election_id = validation_start = 160002400
이라고 가정해 보겠습니다. 그러면:
election_start = election_id - constants['elections_start_before'] = 160002400 - 2400 = 1600000000
election_end = delay_start = election_id - constants['elections_end_before'] = 160002400 - 180 = 160002220
hold_start = validation_end = election_id + constants['validators_elected_for'] = 160002400 + 7200 = 160009600
hold_end = hold_start + constants['stake_held_for'] = 160009600 + 900 = 160010500
따라서 현재 한 패리티의 한 라운드 길이는 160010500 - 1600000000 = 10500초 = 175분 = 2.91666... 시간
입니다.
Param 16
이 매개변수는 TON 블록체인의 검증자 수에 대한 제한을 나타냅니다. 선거인 스마트 컨트랙트에서 직접 사용됩니다.
선거를 위한 검증자 수 설정 매개변수:
-
max_validators
: 네트워크 운영에 참여할 수 있는 최대 검증자 수를 나타냅니다. -
max_main_validators
: 마스터체인 검증자의 최대 수를 나타냅니다. -
min_validators
: 네트워크 운영을 지원해야 하는 최소 검증자 수를 나타냅니다.
- 최대 검증자 수는 마스터체인 검증자의 최대 수보다 크거나 같아야 합니다.
- 마스터체인 검증자의 최대 수는 최소 검증자 수보다 크거나 같아야 합니다.
- 최소 검증자 수는 1 이상이어야 합니다.
Param 17
이 매개변수는 TON 블록체인의 스테이크 매개변수 설정을 나타냅니다. 지분증명이나 위임된 지분증명 합의 알고리즘을 사용하는 많은 블록체인 시스템에서, 네트워크 고유의 암호화폐 소유자는 검증자가 되어 보상을 얻기 위해 토큰을 "스테이크"할 수 있습니다.
설정 매개변수:
-
min_stake
: 검증 과정에 참여하기 위해 관심 있는 당사자가 스테이크해야 하는 최소 TON 양을 나타냅니다. -
max_stake
: 관심 있는 당사자가 스테이크할 수 있는 최대 TON 양을 나타냅니다. -
min_total_stake
: 선택된 검증자 세트가 보유해야 하는 최소 총 TON 양을 나타냅니다. -
max_stake_factor
: 최대 유효 스테이크(담보)가 다른 검증자가 보낸 최소 스테이크를 초과할 수 있는 배수를 나타내는 승수입니다.
인수의 각 값은 uint32
데이터 유형으로 결정됩니다.
Param 18
이 매개변수는 TON 블록체인의 데이터 저장 비용을 결정하는 설정을 나타냅니다. 이는 스팸을 방지하고 네트워크 유지를 장려하는 수단으로 작용합니다.
저장소 수수료 매개변수 딕셔너리:
-
utime_since
: 지정된 가격이 적용되는 초기 Unix 타임스탬프를 제공합니다. -
bit_price_ps
와cell_price_ps
: TON 블록체인의 주요 워크체인에서 65536초 동안 1비트나 1셀의 정보에 대한 저장 가격을 나타냅니다. -
mc_bit_price_ps
와mc_cell_price_ps
: 65536초 동 안 TON 마스터체인에서의 컴퓨팅 자원 가격을 나타냅니다.
각 인수의 값은 uint32
데이터 유형으로 결정됩니다.
나머지는 uint64
데이터 타입으로 값을 받습니다.
Param 20과 21
이 매개변수들은 TON 네트워크에서 연산 비용을 정의합니다. 모든 연산의 복잡성은 가스 단위로 추정됩니다.
-
flat_gas_limit
와flat_gas_price
:flat_gas_price
가격으로 제공되는 특정 시작 가스량(TON 가상 머신 실행 비용을 상쇄하기 위함) -
gas_price
: 이 매개변수는 네트워크의 가스 가격을 반영하며, 65536 가스 단위당 나노톤 단위입니다. -
gas_limit
: 트랜잭션당 소비할 수 있는 최대 가스량을 나타냅니다. -
special_gas_limit
: 특별한(시스템) 컨트랙트의 트랜잭션당 소비할 수 있는 가스량 제한을 나타냅니다. -
gas_credit
: 외부 메시지 확인을 위해 트랜잭션에 제공되는 가스 단위의 크레딧을 나타냅니다. -
block_gas_limit
: 단일 블록 내에서 소비할 수 있는 최대 가스량을 나타냅니다. -
freeze_due_limit
와delete_due_limit
: 컨트랙트가 동결되고 삭제되는 누적 저장 수수료의 한도(나노TON 단위)입니다.
gas_credit
과 다른 매개변수에 대한 자세한 내용은 외부 메시지 섹션 여기를 참조하세요.
Param 22와 23
이 매개변수들은 블록에 대한 제한을 설정하며, 이 제한에 도달하면 블록이 종료되고 남은 메시지의 콜백(있는 경우)이 다음 블록으로 이월됩니다.
설정 매개변수:
-
bytes
: 바이트 단위로 블록 크기의 제한을 설정합니다. -
underload
: 언더로드는 샤드가 부하가 없음을 인식하고 이웃 샤드가 기꺼이 받아들일 경우 병합하려는 상태입니다. -
soft_limit
: 소프트 제한 - 이 제한에 도달하면 내부 메시지 처리가 중단됩니다. -
hard_limit
: 하드 제한 - 이것은 절대적인 최대 크기 입니다. -
gas
: 블록이 소비할 수 있는 가스양에 대한 제한을 설정합니다. 블록체인 맥락에서 가스는 연산 작업의 지표입니다. 언더로드, 소프트 및 하드 제한에 대한 제한은 바이트 크기와 동일하게 작동합니다. -
lt_delta
: 첫 번째와 마지막 트랜잭션 사이의 논리적 시간 차이에 대한 제한을 설정합니다. 논리적 시간은 TON 블록체인에서 이벤트를 정렬하는 데 사용되는 개념입니다. 언더로드, 소프트 및 하드 제한에 대한 제한은 바이트 크기와 가스와 동일하게 작동합니다.
샤드의 부하가 부족하고 그에 따라 이웃과 병합하고자 하는 경우, soft_limit
는 내부(internal) 메시지가 처리를 중단하지만 외부(external) 메시지는 계속되는 상태를 정의합니다. 외부(external) 메시지는 (soft_limit + hard_limit)/2
와 같은 제한에 도달할 때까지 처리됩니다.
Param 24와 25
매개변수 24는 TON 블록체인의 마스터체인에서 메시지 전송 비용에 대한 설정을 나타냅니다.
매개변수 25는 다른 모든 경우의 메시지 전송 비용에 대한 설정을 나타냅니다.