Configuration
address
address: n0sas
genesis-operations
genesis-operation
은 네트워크 초기화 시 실행되는 제네시스 operation에 대한 설정입니다.genesis-operation
은 최초로 생성되는 블록의 내용을 담고 있습니다.*genesis account*의 키 (key, weight, threshold)
최초 잔액
Currency ID
생성될 currency의 수수료 정책
genesis-operations:
- account-keys:
keys:
- publickey: rcrd3KA2wWNhKdAP8rHRzfRmgp91oR9mqopckyXRmCvGmpu
weight: 100
threshold: 100
currencies:
- balance: "99999999999999999999"
currency: MCC
new-account-min-balance: "33"
type: genesis-currencies
network
$ openssl genrsa -out mitum.key 4096
$ openssl req -x509 -new -nodes -key mitum.key -sha256 -days 1024 -out mitum.crt
network:
bind: https://0.0.0.0:54321
url: https://127.0.0.1:54321
cert-key: mitum.key
cert: mitum.crt
rate-limit
rate limit
가 적용될 수 있습니다.rate-limit
가 이런 API 서비스에 적용됩니다.network:
bind: https://0.0.0.0:54321
url: https://127.0.0.1:54321
rate-limit:
cache: "memory:?prefix=showme"
preset:
bad-nodes:
new-seal: 3/2m
blockdata: 4/m
3.3.3.3:
preset: bad-nodes
4.4.4.4/24:
preset: bad-nodes
blockdata: 5/m
127.0.0.1/24:
preset: suffrage
cache
: 요청에 대한 캐시. 이때, “memory:”와 “redis://<redis server>”를 지원합니다.memory: memory cache
redis://<redis server>: cached in redis server
preset
: 사전 정의된 rate limit 설정.Mitum에대한
suffrage
와world
프리셋은 이미 정의되어 있습니다. launch/config/ratelimit.go 소스코드에서 확인하세요.bad-nodes와 같은 자신만의 rate limit 설정을 만들수도 있습니다.
Rules:
특정 IP에 대한 Rate-limit 설정
규칙은 IP address (또는 IP address 범위),
preset
그리고 자세한rate-limit
설정으로 구성되어 있습니다.IP 주소는 단일 값이나 CIDR 표기법으로 표현된 IP 주소의 범위일 수 있습니다. * example : 3.3.3.3, 4.4.4.4/24, 127.0.0.1/24
Rate limit는
preset
과 추가적인limits
으로 설정될 수 있습니다.preset``는 ``suffrage
,world
와 같은 사전 정의된 프리셋이나bad-nodes
와 같은 사용자화 프리셋일 수 있습니다.blockdata: 5/m
과 같은 추가적인 limit이preset
에 추가될 수 있습니다.규칙은 정의된 순서대로 확인됩니다. 상위 규칙이 먼저 확인됩니다.
Detailed limit:
limit 설정에 사용되는 new-seal과 같은 Mitum API 인터페이스의 이름은 RateLimitHandleMap(launch/config/ratelimit.go)에서 확인할 수 있습니다..
Mitum Currency API 인터페이스의 이름은 RateLimitHandlerMap(digest/handler.go)에서 확인할 수 있습니다.
new-seal: 3/2m은 new-seal 인터페이스가 특정 IP, IP 주소 범위에 대해 2분에 3 요청을 허용한다는 뜻입니다.
time duration의 방법을 확인하세요.
다른 규칙이 설정되지 않으면 기본적으로 rate limit이 없습니다.
4.4.4.4/24:
preset: bad-nodes
blockdata: -1/m
4.4.4.4/24:
preset: bad-nodes
blockdata: 0/m
network-id
network id
는 네트워크를 식별하는 식별자의 역할을 합니다.network id
값을 가집니다.network-id: mitum
keypair
privatekey: Kxt22aSeFzJiDQagrvfXPWbEbrTSPsRxbYm9BhNbNJTsrbPbFnPAmpr
storage
blockdata > path
가 현재 경로의 blockdata라고 불리는 폴더로 기본 설정됩니다.storage:
blockdata:
path: ./mitum-blockfs
database:
uri: mongodb://127.0.0.1:27017/mc
port number
는 docker를 실행할 때의 것과 같아야합니다.suffrage
nodes
n0sas
입니다.n0
, n1
, n2
, n3
노드가 suffrage 노드로 추가되면 설정은 다음과 같아집니다.suffrage:
nodes:
- n0sas
- n1sas
- n2sas
- n3sas
n0
가 suffrage 노드로 추가되지 않으면 로컬 노드는 None-suffrage 노드가 되며 syncing node 로서만 운용되게 됩니다.Syncing node 는 합의에 참여하지 않으며 오직 블록 데이터를 동기화하기만 합니다.
None-suffrage 노드는 operation을 담은 seal만 다룹니다.
None-suffrage 노드는 노드 사이의 voting과 관련된 ballot과 proposal을 처리하지 않습니다.
None-suffrage 노드가 operation seal을 저장할 때, 이를 suffrage 노드에 브로드캐스팅합니다.
suffrage:
nodes:
- n1sas
- n2sas
- n3sas
sync-interval
sync-interval
설정을 통해 주기를 변경할 수 있습니다.sync-interval: 3s
nodes
address
, public key
, url
를 입력합니다.작성하지 않으면 standalone node 로서 운용되게 됩니다.
노드가 suffrage 노드이거나 node discovery 기능이 사용되면, 노드의
url
는 필요하지 않습니다.하지만 노드가 suffrage 노드가 아닌 경우 suffrage 노드들의
url
입력되어야 합니다.
만약 설정과 관련된 certificate가 Network config 에 설정되지 않으면 노드는 self-signed certificate 를 사용합니다.
다른 Mitum 노드들이 self-signed certificate를 사용하면, self-signed certificate를 사용하는 모든 노드들에
tls-insecure: true
가 설정되어야 합니다.
(In case of suffrage node)
nodes:
- address: n1sas
publickey: ktJ4Lb6VcmjrbexhDdJBMnXPXfpGWnNijacdxD2SbvRMmpu
tls-insecure: true
- address: n2sas
publickey: wfVsNvKaGbzB18hwix9L3CEyk5VM8GaogdRT4fD3Z6Zdmpu
tls-insecure: true
- address: n3sas
publickey: vAydAnFCHoYV6VDUhgToWaiVEtn5V4SXEFpSJVcTtRxbmpu
tls-insecure: true
(If it is not a suffrage node)
nodes:
- address: n1sas
publickey: ktJ4Lb6VcmjrbexhDdJBMnXPXfpGWnNijacdxD2SbvRMmpu
url: https://127.0.0.1:54331
tls-insecure: true
- address: n2sas
publickey: wfVsNvKaGbzB18hwix9L3CEyk5VM8GaogdRT4fD3Z6Zdmpu
url: https://127.0.0.1:54341
tls-insecure: true
- address: n3sas
publickey: vAydAnFCHoYV6VDUhgToWaiVEtn5V4SXEFpSJVcTtRxbmpu
url: https://127.0.0.1:54351
tls-insecure: true
digest
digest:
network:
bind: https://localhost:54320
url: https://localhost:54320
cert-key: mitum.key
cert: mitum.crt
tutorial.yml
address: mc-nodesas
privatekey: Kxt22aSeFzJiDQagrvfXPWbEbrTSPsRxbYm9BhNbNJTsrbPbFnPAmpr
storage:
database:
uri: mongodb://127.0.0.1:27017/mc
blockdata:
path: ./mitum-blockfs
network-id: mitum
network:
bind: https://0.0.0.0:54321
url: https://127.0.0.1:54321
cert-key: mitum.key
cert: mitum.crt
genesis-operations:
- type: genesis-currencies
account-keys:
keys:
- publickey: rcrd3KA2wWNhKdAP8rHRzfRmgp91oR9mqopckyXRmCvGmpu
weight: 100
threshold: 100
currencies:
- balance: "99999999999999999999"
currency: MCC
new-account-min-balance: "33"
feeer:
type: fixed
amount: 1
policy:
threshold: 100
suffrage:
nodes:
- mc-nodesas
digest:
network:
bind: https://0.0.0.0:54320
url: https://127.0.0.1:54320
cert-key: mitum.key
cert: mitum.crt