Estos parámetros de configuración son generales a cualquier nodo indpendientemente del tipo de cliente que se vaya a usar, los parámetros específicos de cada cliente se encontrarán en sus respectivas secciones.
La configuración de un nodo puede realizarse de diferentes maneras. A continuación se enumeran los mecanismos admitidos, de menor a mayor prioridad:
- Variables de entorno.
- Archivo de configuración.
Variables de entorno
Los siguientes parámetros de configuración solo se pueden configurar a través de variables de entorno y como parámetros al binario que se genera al compilar el cliente, pero no haciendo uso de archivos:
Variable de entorno | Descripción | Parámetro de entrada | Qué recibe |
KORE_PASSWORD |
Contraseña que se utilizará para encriptar el material criptográfico | -p |
La contraseña |
KORE_FILE_PATH |
Ruta del archivo de configuración a utilizar | -f |
Ruta del archivo |
Los parámetros que se pueden configurar mediante variables de entorno y archivos son:
Variable de entorno | Descripción | Qué recibe | Valor por defecto |
KORE_PROMETHEUS |
Dirección y puerto donde se va a exponer el servidor que contiene el endpoint /metrics donde se encuentra el prometheus |
Una dirección IP y un puerto | 0.0.0.0:3050 |
KORE_KEYS_PATH |
Ruta donde se guardará la clave privada en formato PKCS8 encriptada con PKCS5 |
Un directorio | examples/keys |
KORE_DB_PATH |
Ruta donde se creará la base de datos si no existe o donde se encuentra la base de datos en caso de que ya exista | Un directorio | Para LevelDB examples/leveldb y para SQlite examples/sqlitedb |
KORE_NODE_KEY_DERIVATOR |
Key derivator a utilizar |
Un String con Ed25519 o Secp256k1 |
Ed25519 |
KORE_NODE_DIGEST_DERIVATOR |
Digest derivator a utilizar |
Un String con Blake3_256 , Blake3_512 , SHA2_256 , SHA2_512 , SHA3_256 o SHA3_512 |
Blake3_256 |
KORE_NODE_REPLICATION_FACTOR |
Porcentaje de nodos de red que reciben mensajes de protocolo en una iteración | Valor flotante | 0.25 |
KORE_NODE_TIMEOUT |
Tiempo de espera que se utilizará entre iteraciones del protocolo | Valor entero sin signo | 3000 |
KORE_NODE_PASSVOTATION |
Comportamiento del nodo en la fase de aprobación | Valor entero sin signo, 1 para aprobar siempre, 2 para denegar siempre, otro valor para aprobación manual | 0 |
KORE_NODE_SMARTCONTRACTS_DIRECTORY |
Directorio donde se almacenarán los contratos de los sujetos | Un directorio | Contracts |
KORE_NETWORK_PORT_REUSE |
Verdadero para configurar la reutilización de puertos para sockets locales, lo que implica la reutilización de puertos de escucha para conexiones salientes para mejorar las capacidades transversales de NAT. | Valor Boolean | false |
KORE_NETWORK_USER_AGENT |
El user agent | El user agent | kore-node |
KORE_NETWORK_NODE_TYPE |
Tipo de nodo | Un String: Bootstrap, Addressable o Ephemeral | Bootstrap |
KORE_NETWORK_LISTEN_ADDRESSES |
Direcciones donde el nodo va a escuchar | Direcciones donde el nodo va a escuchar | /ip4/0.0.0.0/tcp/50000 |
KORE_NETWORK_EXTERNAL_ADDRESSES |
Dirección externa por la cual se puede acceder al nodo, pero no se encuentra entre sus interfaces | Dirección externa por la cual se puede acceder al nodo, pero no se encuentra entre sus interfaces | /ip4/90.0.0.70/tcp/50000 |
KORE_NETWORK_ROUTING_BOOT_NODES |
Direcciones de los Boot Nodes en la red P2P a los cuales nos conectaremos para empezar a formar parte de la red | Direcciones de los Boot Nodes, donde si tiene más de una dirección será separada con una _ y las direcciones se separan del Peer-ID del nodo mediante /p2p/ |
|
KORE_NETWORK_ROUTING_DHT_RANDOM_WALK |
Verdadero para activar el random walk en la DHT de Kademlia |
Valor Boolean | true |
KORE_NETWORK_ROUTING_DISCOVERY_ONLY_IF_UNDER_NUM |
Número de conexiones activas sobre las que interrumpimos el proceso de descubrimiento | Cantidad de conexiónes activas | u64::MAX |
KORE_NETWORK_ROUTING_ALLOW_NON_GLOBALS_IN_DHT |
Verdadero si se permiten direcciones no globales en el DHT | Valor Boolean | false |
KORE_NETWORK_ROUTING_ALLOW_PRIVATE_IP |
Si es false el dirección de un nodo no puede ser privada | Valor Boolean | false |
KORE_NETWORK_ROUTING_ENABLE_MDNS |
Verdadero para activar mDNS | Valor Boolean | true |
KORE_NETWORK_ROUTING_KADEMLIA_DISJOINT_QUERY_PATHS |
Cuando está habilitado, el número de rutas separadas utilizadas es igual al paralelismo configurado | Valor Boolean | true |
KORE_NETWORK_ROUTING_KADEMLIA_REPLICATION_FACTOR |
El factor de replicación determina a cuántos peers más cercanos se replica un registro | Valor entero sin signo mayor a 0 | false |
KORE_NETWORK_ROUTING_PROTOCOL_NAMES |
Protocolos que soporta el nodo | Protocolos que soporta el nodo | /kore/routing/1.0.0 |
KORE_NETWORK_TELL_MESSAGE_TIMEOUT_SECS |
Tiempo de espera de un mensaje | Cantidad de segundos | 10 |
KORE_NETWORK_TELL_MAX_CONCURRENT_STREAMS |
Cantidad máxima de transmisiones simultáneas | Valor entero sin signo | 100 |
KORE_NETWORK_CONTROL_LIST_ENABLE |
Habilitar lista de control | Valor booleano | true |
KORE_NETWORK_CONTROL_LIST_ALLOW_LIST |
Lista de peers permitidos | Cadena de texto separada por comas | Peer200,Peer300 |
KORE_NETWORK_CONTROL_LIST_BLOCK_LIST |
Lista de peers bloqueados | Cadena de texto separada por comas | Peer1,Peer2 |
KORE_NETWORK_CONTROL_LIST_SERVICE_ALLOW_LIST |
Lista de URLs de servicios permitidos | Cadena de texto separada por comas | http://90.0.0.1:3000/allow_list |
KORE_NETWORK_CONTROL_LIST_SERVICE_BLOCK_LIST |
Lista de URLs de servicios bloqueados | Cadena de texto separada por comas | http://90.0.0.1:3000/block_list |
KORE_NETWORK_CONTROL_LIST_INTERVAL_REQUEST |
Intervalo de solicitud en segundos | Cantidad de segundos | 58 |
.json File
{
"kore": {
"network": {
"user_agent": "Kore2.0",
"node_type": "Addressable",
"listen_addresses": ["/ip4/127.0.0.1/tcp/50000","/ip4/127.0.0.1/tcp/50001","/ip4/127.0.0.1/tcp/50002"],
"external_addresses": ["/ip4/90.1.0.60/tcp/50000", "/ip4/90.1.0.61/tcp/50000"],
"tell": {
"message_timeout_secs": 58,
"max_concurrent_streams": 166
},
"control_list": {
"enable": true,
"allow_list": ["Peer200", "Peer300"],
"block_list": ["Peer1", "Peer2"],
"service_allow_list": ["http://90.0.0.1:3000/allow_list", "http://90.0.0.2:4000/allow_list"],
"service_block_list": ["http://90.0.0.1:3000/block_list", "http://90.0.0.2:4000/block_list"],
"interval_request": 99
},
"routing": {
"boot_nodes": ["/ip4/172.17.0.1/tcp/50000_/ip4/127.0.0.1/tcp/60001/p2p/12D3KooWLXexpg81PjdjnrhmHUxN7U5EtfXJgr9cahei1SJ9Ub3B","/ip4/11.11.0.11/tcp/10000_/ip4/12.22.33.44/tcp/55511/p2p/12D3KooWRS3QVwqBtNp7rUCG4SF3nBrinQqJYC1N5qc1Wdr4jrze"],
"dht_random_walk": false,
"discovery_only_if_under_num": 55,
"allow_non_globals_in_dht": true,
"allow_private_ip": true,
"enable_mdns": false,
"kademlia_disjoint_query_paths": false,
"kademlia_replication_factor": 30,
"protocol_names": ["/kore/routing/2.2.2","/kore/routing/1.1.1"]
},
"port_reuse": true
},
"node": {
"key_derivator": "Secp256k1",
"digest_derivator": "Blake3_512",
"replication_factor": 0.555,
"timeout": 30,
"passvotation": 50,
"smartcontracts_directory": "./fake_route"
},
"db_path": "./fake/db/path",
"keys_path": "./fake/keys/path",
"prometheus": "10.0.0.0:3030"
}
}
.toml File
[kore.network]
user_agent = "Kore2.0"
node_type = "Addressable"
port_reuse = true
listen_addresses = ["/ip4/127.0.0.1/tcp/50000","/ip4/127.0.0.1/tcp/50001","/ip4/127.0.0.1/tcp/50002"]
external_addresses = ["/ip4/90.1.0.60/tcp/50000","/ip4/90.1.0.61/tcp/50000"]
[kore.network.control_list]
enable = true
allow_list = ["Peer200", "Peer300"]
block_list = ["Peer1", "Peer2"]
service_allow_list = ["http://90.0.0.1:3000/allow_list", "http://90.0.0.2:4000/allow_list"]
service_block_list = ["http://90.0.0.1:3000/block_list", "http://90.0.0.2:4000/block_list"]
interval_request = 99
[kore.network.tell]
message_timeout_secs = 58
max_concurrent_streams = 166
[kore.network.routing]
boot_nodes = ["/ip4/172.17.0.1/tcp/50000_/ip4/127.0.0.1/tcp/60001/p2p/12D3KooWLXexpg81PjdjnrhmHUxN7U5EtfXJgr9cahei1SJ9Ub3B", "/ip4/11.11.0.11/tcp/10000_/ip4/12.22.33.44/tcp/55511/p2p/12D3KooWRS3QVwqBtNp7rUCG4SF3nBrinQqJYC1N5qc1Wdr4jrze"]
dht_random_walk = false
discovery_only_if_under_num = 55
allow_non_globals_in_dht = true
allow_private_ip = true
enable_mdns = false
kademlia_disjoint_query_paths = false
kademlia_replication_factor = 30
protocol_names = ["/kore/routing/2.2.2", "/kore/routing/1.1.1"]
[kore.node]
key_derivator = "Secp256k1"
digest_derivator = "Blake3_512"
replication_factor = 0.555
timeout = 30
passvotation = 50
smartcontracts_directory = "./fake_route"
[kore]
db_path = "./fake/db/path"
keys_path = "./fake/keys/path"
prometheus = "10.0.0.0:3030"
.yaml File
kore:
network:
control_list:
allow_list:
- "Peer200"
- "Peer300"
block_list:
- "Peer1"
- "Peer2"
service_allow_list:
- "http://90.0.0.1:3000/allow_list"
- "http://90.0.0.2:4000/allow_list"
service_block_list:
- "http://90.0.0.1:3000/block_list"
- "http://90.0.0.2:4000/block_list"
interval_request: 99
enable: true
user_agent: "Kore2.0"
node_type: "Addressable"
listen_addresses:
- "/ip4/127.0.0.1/tcp/50000"
- "/ip4/127.0.0.1/tcp/50001"
- "/ip4/127.0.0.1/tcp/50002"
external_addresses:
- "/ip4/90.1.0.60/tcp/50000"
- "/ip4/90.1.0.61/tcp/50000"
tell:
message_timeout_secs: 58
max_concurrent_streams: 166
routing:
boot_nodes:
- "/ip4/172.17.0.1/tcp/50000_/ip4/127.0.0.1/tcp/60001/p2p/12D3KooWLXexpg81PjdjnrhmHUxN7U5EtfXJgr9cahei1SJ9Ub3B"
- "/ip4/11.11.0.11/tcp/10000_/ip4/12.22.33.44/tcp/55511/p2p/12D3KooWRS3QVwqBtNp7rUCG4SF3nBrinQqJYC1N5qc1Wdr4jrze"
dht_random_walk: false
discovery_only_if_under_num: 55
allow_non_globals_in_dht: true
allow_private_ip: true
enable_mdns: false
kademlia_disjoint_query_paths: false
kademlia_replication_factor: 30
protocol_names:
- "/kore/routing/2.2.2"
- "/kore/routing/1.1.1"
port_reuse: true
node:
key_derivator: "Secp256k1"
digest_derivator: "Blake3_512"
replication_factor: 0.555
timeout: 30
passvotation: 50
smartcontracts_directory: "./fake_route"
db_path: "./fake/db/path"
keys_path: "./fake/keys/path"
prometheus: "10.0.0.0:3030"