diff --git a/coopos/chain.swagger.yaml b/coopos/chain.swagger.yaml index 0b503b74f..1857ed9ee 100644 --- a/coopos/chain.swagger.yaml +++ b/coopos/chain.swagger.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: API цепи COOPOS - description: Спецификация Chain API узла COOPOS (nodeos, совместимый с EOSIO/Antelope). Подробности — в документации разработчика на https://coopenomics.world. + description: Спецификация Chain API узла COOPOS (nodeos). Подробности — в документации на https://coopenomics.world. version: 1.0.0 license: name: MIT @@ -25,6 +25,7 @@ components: paths: /get_account: post: + summary: Сведения об учётной записи description: Возвращает объект с подробностями об указанной учётной записи в блокчейне. operationId: get_account requestBody: @@ -47,6 +48,7 @@ paths: $ref: "schemas/Account.yaml" /get_block: post: + summary: Получить блок description: Возвращает объект с подробностями об указанном блоке блокчейна. operationId: get_block requestBody: @@ -69,6 +71,7 @@ paths: $ref: "schemas/Block.yaml" /get_block_info: post: + summary: Краткие сведения о блоке description: Аналогично `get_block`, но возвращает фиксированный урезанный набор данных блока меньшего размера. operationId: get_block_info requestBody: @@ -91,6 +94,7 @@ paths: $ref: "schemas/BlockInfo.yaml" /get_info: post: + summary: Общие сведения о цепи description: Возвращает объект с общими сведениями о блокчейне. operationId: get_info security: [] @@ -104,6 +108,7 @@ paths: /push_transaction: post: + summary: Применить транзакцию (push) description: Ожидает транзакцию в формате JSON и пытается применить её к блокчейну. operationId: push_transaction requestBody: @@ -136,6 +141,7 @@ paths: /send_transaction: post: + summary: Применить транзакцию (send) description: Ожидает транзакцию в формате JSON и пытается применить её к блокчейну. operationId: send_transaction requestBody: @@ -169,6 +175,7 @@ paths: /push_transactions: post: + summary: Применить несколько транзакций description: Ожидает одну или несколько транзакций в формате JSON и пытается применить их к блокчейну. operationId: push_transactions requestBody: @@ -188,6 +195,7 @@ paths: /get_block_header_state: post: + summary: Состояние заголовка блока description: Возвращает состояние заголовка блока. operationId: get_block_header_state requestBody: @@ -212,6 +220,7 @@ paths: /get_abi: post: + summary: ABI контракта description: Возвращает ABI контракта по имени учётной записи. operationId: get_abi requestBody: @@ -233,6 +242,7 @@ paths: $ref: "schemas/Abi.yaml" /get_currency_balance: post: + summary: Баланс токена description: Возвращает текущий баланс токена. operationId: get_currency_balance requestBody: @@ -264,6 +274,7 @@ paths: /get_currency_stats: post: + summary: Статистика токена description: Возвращает статистику по выпуску валюты (токена). operationId: get_currency_stats requestBody: @@ -287,6 +298,7 @@ paths: /get_required_keys: post: + summary: Ключи для подписи транзакции description: Возвращает ключи, необходимые для подписи транзакции. operationId: get_required_keys requestBody: @@ -315,6 +327,7 @@ paths: /get_producers: post: + summary: Список продюсеров description: Возвращает список продюсеров блокчейна. operationId: get_producers requestBody: @@ -360,6 +373,7 @@ paths: /get_raw_code_and_abi: post: + summary: Сырой WASM и ABI description: Возвращает сырой WASM и ABI контракта по имени учётной записи. operationId: get_raw_code_and_abi requestBody: @@ -392,6 +406,7 @@ paths: /get_scheduled_transactions: post: + summary: Запланированные транзакции description: Возвращает отложенные (запланированные) транзакции. operationId: get_scheduled_transactions requestBody: @@ -424,6 +439,7 @@ paths: /get_table_by_scope: post: + summary: Области таблиц (scopes) description: Возвращает области (scopes) таблиц контракта. operationId: get_table_by_scope requestBody: @@ -476,6 +492,7 @@ paths: /get_table_rows: post: + summary: Строки таблицы состояния description: Возвращает строки указанной таблицы состояния контракта. operationId: get_table_rows requestBody: @@ -539,6 +556,7 @@ paths: /get_code: post: + summary: Код контракта (WASM) description: Возвращает объект с WASM-кодом смарт-контракта. operationId: get_code requestBody: @@ -578,6 +596,7 @@ paths: /get_raw_abi: post: + summary: Сырой ABI контракта description: Возвращает объект с сырым ABI смарт-контракта. operationId: get_raw_abi requestBody: @@ -611,6 +630,7 @@ paths: /get_activated_protocol_features: post: + summary: Активированные возможности протокола description: Возвращает активированные на узле продюсера протокольные возможности. operationId: get_activated_protocol_features requestBody: @@ -655,6 +675,7 @@ paths: description: "Если активированных возможностей больше, чем limit, здесь порядковый номер следующей не вошедшей в ответ; иначе 0." /get_accounts_by_authorizers: post: + summary: Учётные записи по авторизующим description: По набору имён учётных записей и публичных ключей находит разрешения (authorities), которые полностью или частично могут быть удовлетворены этими данными. operationId: get_accounts_by_authorizers requestBody: @@ -715,6 +736,7 @@ paths: description: Порог — сумма весов, которую нужно достичь или превысить /get_transaction_status: post: + summary: Статус транзакции (финальность) description: Возвращает состояние цепи и при наличии — информацию о транзакции по её идентификатору. Требуется включённая функция статуса финальности транзакций в плагине chain (параметр nodeos `--transaction-finality-status-max-storage-size-gb`). operationId: get_transaction_status requestBody: @@ -738,6 +760,7 @@ paths: /send_transaction2: post: + summary: Применить транзакцию (send v2) description: | Пытается применить транзакцию в формате JSON к блокчейну. Поддерживает полную трассировку неудачной транзакции и повторные попытки через nodeos, если они включены на узле. При включённом повторе API-узел досылает транзакцию в P2P-сеть до истечения срока, включения в блок или необратимости. Внимание: по умолчанию вместо исключений возвращается полная трассировка ошибки. Не путайте наличие трассировки с успешным выполнением — проверяйте поля «receipt» и «except». @@ -784,6 +807,7 @@ paths: /compute_transaction: post: + summary: Симуляция транзакции без записи description: | Выполняет указанную транзакцию, формирует трассировку (включая расход ресурсов), затем откатывает все изменения состояния; субъективный биллинг для аккаунта не увеличивается. Подписи, если есть, обрабатываются, ошибки подписи игнорируются. Неуспешные транзакции всё равно содержат трассировку сбоя. Внимание: на публичных узлах с включённым compute_transaction нужно ограничивать частоту запросов (защита от DoS). @@ -818,6 +842,7 @@ paths: /get_code_hash: post: + summary: Хеш кода контракта description: Возвращает хеш кода смарт-контракта в блокчейне. Его можно сравнить с ожидаемым значением, чтобы убедиться, что код не менялся. operationId: get_code_hash requestBody: @@ -846,6 +871,7 @@ paths: /get_transaction_id: post: + summary: Идентификатор транзакции description: Возвращает идентификатор транзакции (хеш транзакции) для переданной транзакции. operationId: get_transaction_id requestBody: @@ -865,6 +891,7 @@ paths: /get_producer_schedule: post: + summary: Расписание продюсеров description: Возвращает текущее расписание продюсеров — активный список и порядок ротации. operationId: get_producer_schedule responses: @@ -887,6 +914,7 @@ paths: /send_read_only_transaction: post: + summary: Транзакция только для чтения description: Отправляет транзакцию только для чтения в формате JSON; она не предназначена для включения в блокчейн. Если транзакция меняет состояние цепи, узел отклонит её. operationId: send_read_only_transaction requestBody: @@ -917,6 +945,7 @@ paths: /push_block: post: + summary: Передать блок в цепь description: Передаёт блок в блокчейн (для специальных сценариев узла). operationId: push_block requestBody: diff --git a/coopos/config.example.ini b/coopos/config.example.ini new file mode 100644 index 000000000..481cc2c1f --- /dev/null +++ b/coopos/config.example.ini @@ -0,0 +1,492 @@ +# Percentage of cpu block production time used to produce block. Whole number percentages, e.g. 80 for 80% (eosio::producer_plugin) +# cpu-effort-percent = 80 + +# Percentage of cpu block production time used to produce last block. Whole number percentages, e.g. 80 for 80% (eosio::producer_plugin) +# last-block-cpu-effort-percent = 80 + + +# the location of the blocks directory (absolute path or relative to application data dir) (eosio::chain_plugin) +# blocks-dir = "blocks" + +# split the block log file when the head block number is the multiple of the stride +# When the stride is reached, the current block log and index will be renamed '/blocks--.log/index' +# and a new current block log and index will be created with the most recent block. All files following +# this format will be used to construct an extended block log. (eosio::chain_plugin) +# blocks-log-stride = + +# the maximum number of blocks files to retain so that the blocks in those files can be queried. +# When the number is reached, the oldest block file would be moved to archive dir or deleted if the archive dir is empty. +# The retained block log files should not be manipulated by users. (eosio::chain_plugin) +# max-retained-block-files = + +# the location of the blocks retained directory (absolute path or relative to blocks dir). +# If the value is empty, it is set to the value of blocks dir. (eosio::chain_plugin) +# blocks-retained-dir = + +# the location of the blocks archive directory (absolute path or relative to blocks dir). +# If the value is empty, blocks files beyond the retained limit will be deleted. +# All files in the archive directory are completely under user's control, i.e. they won't be accessed by nodeos anymore. (eosio::chain_plugin) +# blocks-archive-dir = + +# the location of the state directory (absolute path or relative to application data dir) (eosio::chain_plugin) +# state-dir = "state" + +# the location of the protocol_features directory (absolute path or relative to application config dir) (eosio::chain_plugin) +# protocol-features-dir = "protocol_features" + +# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. (eosio::chain_plugin) +# checkpoint = + +# Override default WASM runtime ( "eos-vm-jit", "eos-vm") +# "eos-vm-jit" : A WebAssembly runtime that compiles WebAssembly code to native x86 code prior to execution. +# "eos-vm" : A WebAssembly interpreter. +# (eosio::chain_plugin) +# wasm-runtime = eos-vm-jit + +# The name of an account whose code will be profiled (eosio::chain_plugin) +# profile-account = + +# Override default maximum ABI serialization time allowed in ms (eosio::chain_plugin) +# abi-serializer-max-time-ms = 15 + +# Maximum size (in MiB) of the chain state database (eosio::chain_plugin) +# chain-state-db-size-mb = 1024 + +# Safely shut down node when free space remaining in the chain state database drops below this size (in MiB). (eosio::chain_plugin) +# chain-state-db-guard-size-mb = 128 + +# Percentage of actual signature recovery cpu to bill. Whole number percentages, e.g. 50 for 50% (eosio::chain_plugin) +# signature-cpu-billable-pct = 50 + +# Number of worker threads in controller thread pool (eosio::chain_plugin) +# chain-threads = 2 + +# print contract's output to console (eosio::chain_plugin) +# contracts-console = false + +# print deeper information about chain operations (eosio::chain_plugin) + deep-mind = false + +# Account added to actor whitelist (may specify multiple times) (eosio::chain_plugin) +# actor-whitelist = + +# Account added to actor blacklist (may specify multiple times) (eosio::chain_plugin) +# actor-blacklist = + +# Contract account added to contract whitelist (may specify multiple times) (eosio::chain_plugin) +# contract-whitelist = + +# Contract account added to contract blacklist (may specify multiple times) (eosio::chain_plugin) +# contract-blacklist = + +# Action (in the form code::action) added to action blacklist (may specify multiple times) (eosio::chain_plugin) +# action-blacklist = + +# Public key added to blacklist of keys that should not be included in authorities (may specify multiple times) (eosio::chain_plugin) +# key-blacklist = + +# Deferred transactions sent by accounts in this list do not have any of the subjective whitelist/blacklist checks applied to them (may specify multiple times) (eosio::chain_plugin) +# sender-bypass-whiteblacklist = + +# Database read mode ("head", "irreversible", "speculative"). +# In "head" mode: database contains state changes up to the head block; transactions received by the node are relayed if valid. +# In "irreversible" mode: database contains state changes up to the last irreversible block; transactions received via the P2P network are not relayed and transactions cannot be pushed via the chain API. +# In "speculative" mode: database contains state changes by transactions in the blockchain up to the head block as well as some transactions not yet included in the blockchain; transactions received by the node are relayed if valid. +# (eosio::chain_plugin) +# read-mode = head + +# Allow API transactions to be evaluated and relayed if valid. (eosio::chain_plugin) + api-accept-transactions = true + +# Chain validation mode ("full" or "light"). +# In "full" mode all incoming blocks will be fully validated. +# In "light" mode all incoming blocks headers will be fully validated; transactions in those validated blocks will be trusted +# (eosio::chain_plugin) +# validation-mode = full + +# Disable the check which subjectively fails a transaction if a contract bills more RAM to another account within the context of a notification handler (i.e. when the receiver is not the code of the action). (eosio::chain_plugin) +# disable-ram-billing-notify-checks = false + +# Subjectively limit the maximum length of variable components in a variable legnth signature to this size in bytes (eosio::chain_plugin) +# maximum-variable-signature-length = 16384 + +# Indicate a producer whose blocks headers signed by it will be fully validated, but transactions in those validated blocks will be trusted. (eosio::chain_plugin) +# trusted-producer = + +# Database map mode ("mapped", "heap", or "locked"). +# In "mapped" mode database is memory mapped as a file. +# In "heap" mode database is preloaded in to swappable memory and will use huge pages if available. +# In "locked" mode database is preloaded, locked in to memory, and will use huge pages if available. +# (eosio::chain_plugin) +# database-map-mode = mapped + +# Maximum size (in MiB) of the EOS VM OC code cache (eosio::chain_plugin) +# eos-vm-oc-cache-size-mb = 1024 + +# Number of threads to use for EOS VM OC tier-up (eosio::chain_plugin) +# eos-vm-oc-compile-threads = 1 + +# Enable EOS VM OC tier-up runtime (eosio::chain_plugin) +# eos-vm-oc-enable = false + +# enable queries to find accounts by various metadata. (eosio::chain_plugin) +# enable-account-queries = false + +# maximum allowed size (in bytes) of an inline action for a nonprivileged account (eosio::chain_plugin) +# max-nonprivileged-inline-action-size = 4096 + +# Maximum size (in GiB) allowed to be allocated for the Transaction Retry feature. Setting above 0 enables this feature. (eosio::chain_plugin) +# transaction-retry-max-storage-size-gb = + +# How often, in seconds, to resend an incoming transaction to network if not seen in a block. +# Needs to be at least twice as large as p2p-dedup-cache-expire-time-sec. (eosio::chain_plugin) +# transaction-retry-interval-sec = 20 + +# Maximum allowed transaction expiration for retry transactions, will retry transactions up to this value. +# Should be larger than transaction-retry-interval-sec. (eosio::chain_plugin) +# transaction-retry-max-expiration-sec = 120 + +# Maximum size (in GiB) allowed to be allocated for the Transaction Finality Status feature. Setting above 0 enables this feature. (eosio::chain_plugin) +# transaction-finality-status-max-storage-size-gb = + +# Duration (in seconds) a successful transaction's Finality Status will remain available from being first identified. (eosio::chain_plugin) +# transaction-finality-status-success-duration-sec = 180 + +# Duration (in seconds) a failed transaction's Finality Status will remain available from being first identified. (eosio::chain_plugin) +# transaction-finality-status-failure-duration-sec = 180 + +# Log the state integrity hash on startup (eosio::chain_plugin) +# integrity-hash-on-start = false + +# Log the state integrity hash on shutdown (eosio::chain_plugin) +# integrity-hash-on-stop = false + +# If set to greater than 0, periodically prune the block log to store only configured number of most recent blocks. +# If set to 0, no blocks are be written to the block log; block log file is removed after startup. (eosio::chain_plugin) +# block-log-retain-blocks = + +# The filename (relative to data-dir) to create a unix socket for HTTP RPC; set blank to disable. (eosio::http_plugin) +# unix-socket-path = + +# The local IP and port to listen for incoming http connections; set blank to disable. (eosio::http_plugin) +# http-server-address = 127.0.0.1:8888 + +# Specify the Access-Control-Allow-Origin to be returned on each request (eosio::http_plugin) +# access-control-allow-origin = + +# Specify the Access-Control-Allow-Headers to be returned on each request (eosio::http_plugin) +# access-control-allow-headers = + +# Specify the Access-Control-Max-Age to be returned on each request. (eosio::http_plugin) +# access-control-max-age = + +# Specify if Access-Control-Allow-Credentials: true should be returned on each request. (eosio::http_plugin) +# access-control-allow-credentials = false + +# The maximum body size in bytes allowed for incoming RPC requests (eosio::http_plugin) +# max-body-size = 2097152 + +# Maximum size in megabytes http_plugin should use for processing http requests. -1 for unlimited. 429 error response when exceeded. (eosio::http_plugin) +# http-max-bytes-in-flight-mb = 500 + +# Maximum number of requests http_plugin should use for processing http requests. 429 error response when exceeded. (eosio::http_plugin) +# http-max-in-flight-requests = -1 + +# Maximum time for processing a request, -1 for unlimited (eosio::http_plugin) +# http-max-response-time-ms = 30 + +# Append the error log to HTTP responses (eosio::http_plugin) +# verbose-http-errors = false + +# If set to false, then any incoming "Host" header is considered valid (eosio::http_plugin) +# http-validate-host = true + +# Additionaly acceptable values for the "Host" header of incoming HTTP requests, can be specified multiple times. Includes http/s_server_address by default. (eosio::http_plugin) +# http-alias = + +# Number of worker threads in http thread pool (eosio::http_plugin) +# http-threads = 2 + +# If set to false, do not keep HTTP connections alive, even if client requests. (eosio::http_plugin) +# http-keep-alive = true + +# The actual host:port used to listen for incoming p2p connections. (eosio::net_plugin) +# p2p-listen-endpoint = 0.0.0.0:9876 + +# An externally accessible host:port for identifying this node. Defaults to p2p-listen-endpoint. (eosio::net_plugin) +# p2p-server-address = + +# The public endpoint of a peer node to connect to. Use multiple p2p-peer-address options as needed to compose a network. +# Syntax: host:port[:|] +# The optional 'trx' and 'blk' indicates to node that only transactions 'trx' or blocks 'blk' should be sent. Examples: +# p2p.eos.io:9876 +# p2p.trx.eos.io:9876:trx +# p2p.blk.eos.io:9876:blk +# (eosio::net_plugin) +# p2p-peer-address = + +# Maximum number of client nodes from any single IP address (eosio::net_plugin) +# p2p-max-nodes-per-host = 1 + +# Allow transactions received over p2p network to be evaluated and relayed if valid. (eosio::net_plugin) +# p2p-accept-transactions = true + +# The account and public p2p endpoint of a block producer node to automatically connect to when the it is in producer schedule proximity +# . Syntax: account,host:port +# Example, +# eosproducer1,p2p.eos.io:9876 +# eosproducer2,p2p.trx.eos.io:9876:trx +# eosproducer3,p2p.blk.eos.io:9876:blk +# (eosio::net_plugin) +# p2p-auto-bp-peer = + +# The name supplied to identify this node amongst the peers. (eosio::net_plugin) +# agent-name = EOS Test Agent + +# Can be 'any' or 'producers' or 'specified' or 'none'. If 'specified', peer-key must be specified at least once. If only 'producers', peer-key is not required. 'producers' and 'specified' may be combined. (eosio::net_plugin) +# allowed-connection = any + +# Optional public key of peer allowed to connect. May be used multiple times. (eosio::net_plugin) +# peer-key = + +# Tuple of [PublicKey, WIF private key] (may specify multiple times) (eosio::net_plugin) +# peer-private-key = + +# Maximum number of clients from which connections are accepted, use 0 for no limit (eosio::net_plugin) +# max-clients = 25 + +# number of seconds to wait before cleaning up dead connections (eosio::net_plugin) +# connection-cleanup-period = 30 + +# max connection cleanup time per cleanup call in milliseconds (eosio::net_plugin) +# max-cleanup-time-msec = 10 + +# Maximum time to track transaction for duplicate optimization (eosio::net_plugin) +# p2p-dedup-cache-expire-time-sec = 10 + +# Number of worker threads in net_plugin thread pool (eosio::net_plugin) +# net-threads = 4 + +# number of blocks to retrieve in a chunk from any individual peer during synchronization (eosio::net_plugin) +# sync-fetch-span = 100 + +# Enable experimental socket read watermark optimization (eosio::net_plugin) +# use-socket-read-watermark = false + +# The string used to format peers when logging messages about them. Variables are escaped with ${}. +# Available Variables: +# _name self-reported name +# +# _cid assigned connection id +# +# _id self-reported ID (64 hex characters) +# +# _sid first 8 characters of _peer.id +# +# _ip remote IP address of peer +# +# _port remote port number of peer +# +# _lip local IP address connected to peer +# +# _lport local port number connected to peer +# +# (eosio::net_plugin) +# peer-log-format = ["${_name}" - ${_cid} ${_ip}:${_port}] + +# peer heartbeat keepalive message interval in milliseconds (eosio::net_plugin) +# p2p-keepalive-interval-ms = 10000 + +# Enable block production, even if the chain is stale. (eosio::producer_plugin) +# enable-stale-production = false + +# Start this node in a state where production is paused (eosio::producer_plugin) +# pause-on-startup = false + +# Limits the maximum time (in milliseconds) that is allowed a pushed transaction's code to execute before being considered invalid (eosio::producer_plugin) +# max-transaction-time = 30 + +# Limits the maximum age (in seconds) of the DPOS Irreversible Block for a chain this node will produce blocks on (use negative value to indicate unlimited) (eosio::producer_plugin) +# max-irreversible-block-age = -1 + +# ID of producer controlled by this node (e.g. inita; may specify multiple times) (eosio::producer_plugin) +# producer-name = + +# Key=Value pairs in the form = +# Where: +# is a string form of a valid COOPOS public key +# +# is a string in the form : +# +# is KEY, KEOSD, or SE +# +# KEY: is a string form of a valid COOPOS private key which maps to the provided public key +# +# KEOSD: is the URL where keosd is available and the approptiate wallet(s) are unlocked +# +# (eosio::producer_plugin) +# signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 + +# account that can not access to extended CPU/NET virtual resources (eosio::producer_plugin) +# greylist-account = + +# Limit (between 1 and 1000) on the multiple that CPU/NET virtual resources can extend during low usage (only enforced subjectively; use 1000 to not enforce any limit) (eosio::producer_plugin) +# greylist-limit = 1000 + +# Offset of non last block producing time in microseconds. Valid range 0 .. -block_time_interval. (eosio::producer_plugin) +# produce-time-offset-us = 0 + +# Offset of last block producing time in microseconds. Valid range 0 .. -block_time_interval. (eosio::producer_plugin) +# last-block-time-offset-us = -200000 + +# Percentage of cpu block production time used to produce block. Whole number percentages, e.g. 80 for 80% (eosio::producer_plugin) +# cpu-effort-percent = 10 + +# Percentage of cpu block production time used to produce last block. Whole number percentages, e.g. 80 for 80% (eosio::producer_plugin) +# last-block-cpu-effort-percent = 10 + +# Threshold of CPU block production to consider block full; when within threshold of max-block-cpu-usage block can be produced immediately (eosio::producer_plugin) +# max-block-cpu-usage-threshold-us = 5000 + +# Threshold of NET block production to consider block full; when within threshold of max-block-net-usage block can be produced immediately (eosio::producer_plugin) +# max-block-net-usage-threshold-bytes = 1024 + +# Maximum wall-clock time, in milliseconds, spent retiring scheduled transactions (and incoming transactions according to incoming-defer-ratio) in any block before returning to normal transaction processing. (eosio::producer_plugin) +# max-scheduled-transaction-time-per-block-ms = 100 + +# Time in microseconds allowed for a transaction that starts with insufficient CPU quota to complete and cover its CPU usage. (eosio::producer_plugin) +# subjective-cpu-leeway-us = 31000 + +# Sets the maximum amount of failures that are allowed for a given account per window size. (eosio::producer_plugin) +# subjective-account-max-failures = 3 + +# Sets the window size in number of blocks for subjective-account-max-failures. (eosio::producer_plugin) +# subjective-account-max-failures-window-size = 1 + +# Sets the time to return full subjective cpu for accounts (eosio::producer_plugin) +# subjective-account-decay-time-minutes = 1440 + +# ratio between incoming transactions and deferred transactions when both are queued for execution (eosio::producer_plugin) +# incoming-defer-ratio = 1 + +# Maximum size (in MiB) of the incoming transaction queue. Exceeding this value will subjectively drop transaction with resource exhaustion. (eosio::producer_plugin) +# incoming-transaction-queue-size-mb = 1024 + +# Disable subjective CPU billing for API/P2P transactions (eosio::producer_plugin) +# disable-subjective-billing = true + +# Account which is excluded from subjective CPU billing (eosio::producer_plugin) +# disable-subjective-account-billing = + +# Disable subjective CPU billing for P2P transactions (eosio::producer_plugin) +# disable-subjective-p2p-billing = true + +# Disable subjective CPU billing for API transactions (eosio::producer_plugin) +# disable-subjective-api-billing = true + +# Number of worker threads in producer thread pool (eosio::producer_plugin) +# producer-threads = 1 + +# the location of the snapshots directory (absolute path or relative to application data dir) (eosio::producer_plugin) +# snapshots-dir = "snapshots" + +# Number of worker threads in read-only execution thread pool. Max 8. (eosio::producer_plugin) +# read-only-threads = + +# Time in microseconds the write window lasts. (eosio::producer_plugin) +# read-only-write-window-time-us = 200000 + +# Time in microseconds the read window lasts. (eosio::producer_plugin) +# read-only-read-window-time-us = 60000 + +# The local IP and port to listen for incoming prometheus metrics http request. (eosio::prometheus_plugin) +# prometheus-exporter-address = 127.0.0.1:9101 + +# Time in seconds between two consecutive checks of resource usage. Should be between 1 and 300 (eosio::resource_monitor_plugin) +# resource-monitor-interval-seconds = 2 + +# Threshold in terms of percentage of used space vs total space. If used space is above (threshold - 5%), a warning is generated. Unless resource-monitor-not-shutdown-on-threshold-exceeded is enabled, a graceful shutdown is initiated if used space is above the threshold. The value should be between 6 and 99 (eosio::resource_monitor_plugin) +# resource-monitor-space-threshold = 90 + +# Absolute threshold in gibibytes of remaining space; applied to each monitored directory. If remaining space is less than value for any monitored directories then threshold is considered exceeded.Overrides resource-monitor-space-threshold value. (eosio::resource_monitor_plugin) +# resource-monitor-space-absolute-gb = + +# Used to indicate nodeos will not shutdown when threshold is exceeded. (eosio::resource_monitor_plugin) +# resource-monitor-not-shutdown-on-threshold-exceeded = + +# Number of resource monitor intervals between two consecutive warnings when the threshold is hit. Should be between 1 and 450 (eosio::resource_monitor_plugin) +# resource-monitor-warning-interval = 30 + +# Limits the maximum time (in milliseconds) that is allowed for sending requests to a keosd provider for signing (eosio::signature_provider_plugin) +# keosd-provider-timeout = 5 + +# the location of the state-history directory (absolute path or relative to application data dir) (eosio::state_history_plugin) +# state-history-dir = "state-history" + +# the location of the state history retained directory (absolute path or relative to state-history dir). (eosio::state_history_plugin) +# state-history-retained-dir = + +# the location of the state history archive directory (absolute path or relative to state-history dir). +# If the value is empty string, blocks files beyond the retained limit will be deleted. +# All files in the archive directory are completely under user's control, i.e. they won't be accessed by nodeos anymore. (eosio::state_history_plugin) +# state-history-archive-dir = + +# split the state history log files when the block number is the multiple of the stride +# When the stride is reached, the current history log and index will be renamed '*-history--.log/index' +# and a new current history log and index will be created with the most recent blocks. All files following +# this format will be used to construct an extended history log. (eosio::state_history_plugin) +# state-history-stride = + +# the maximum number of history file groups to retain so that the blocks in those files can be queried. +# When the number is reached, the oldest history file would be moved to archive dir or deleted if the archive dir is empty. +# The retained history log files should not be manipulated by users. (eosio::state_history_plugin) +# max-retained-history-files = + +# enable trace history (eosio::state_history_plugin) +# trace-history = false + +# enable chain state history (eosio::state_history_plugin) +# chain-state-history = false + +# the endpoint upon which to listen for incoming connections. Caution: only expose this port to your internal network. (eosio::state_history_plugin) +# state-history-endpoint = 127.0.0.1:8080 + +# the path (relative to data-dir) to create a unix socket upon which to listen for incoming connections. (eosio::state_history_plugin) +# state-history-unix-socket-path = + +# enable debug mode for trace history (eosio::state_history_plugin) +# trace-history-debug-mode = false + +# if set, periodically prune the state history files to store only configured number of most recent blocks (eosio::state_history_plugin) +# state-history-log-retain-blocks = + +# the location of the trace directory (absolute path or relative to application data dir) (eosio::trace_api_plugin) +# trace-dir = "traces" + +# the number of blocks each "slice" of trace data will contain on the filesystem (eosio::trace_api_plugin) +# trace-slice-stride = 10000 + +# Number of blocks to ensure are kept past LIB for retrieval before "slice" files can be automatically removed. +# A value of -1 indicates that automatic removal of "slice" files will be turned off. (eosio::trace_api_plugin) +# trace-minimum-irreversible-history-blocks = -1 + +# Number of blocks to ensure are uncompressed past LIB. Compressed "slice" files are still accessible but may carry a performance loss on retrieval +# A value of -1 indicates that automatic compression of "slice" files will be turned off. (eosio::trace_api_plugin) +# trace-minimum-uncompressed-irreversible-history-blocks = -1 + +# ABIs used when decoding trace RPC responses. +# There must be at least one ABI specified OR the flag trace-no-abis must be used. +# ABIs are specified as "Key=Value" pairs in the form = +# Where can be: +# an absolute path to a file containing a valid JSON-encoded ABI +# a relative path from `data-dir` to a file containing a valid JSON-encoded ABI +# (eosio::trace_api_plugin) +# trace-rpc-abi = + +# Use to indicate that the RPC responses will not use ABIs. +# Failure to specify this option when there are no trace-rpc-abi configuations will result in an Error. +# This option is mutually exclusive with trace-rpc-api (eosio::trace_api_plugin) +# trace-no-abis = + +# Plugin(s) to enable, may be specified multiple times +# plugin = diff --git a/coopos/producer.swagger.yaml b/coopos/producer.swagger.yaml index 4e004d970..34effbef8 100644 --- a/coopos/producer.swagger.yaml +++ b/coopos/producer.swagger.yaml @@ -10,7 +10,7 @@ info: url: https://coopenomics.world tags: - name: Версия протокола 4.0 - description: Тег релиза бинарников Leap совпадает с версией протокола + description: Тег релиза бинарников COOPOS совпадает с версией протокола servers: - url: "{protocol}://{host}:{port}/v1" variables: diff --git a/coopos/schemas/DateTime.yaml b/coopos/schemas/DateTime.yaml index feb444eb7..9ed1c9b4e 100644 --- a/coopos/schemas/DateTime.yaml +++ b/coopos/schemas/DateTime.yaml @@ -1,3 +1,3 @@ type: string -description: Дата и время истечения транзакции (строка в формате, принимаемом узлом COOPOS/EOSIO). +description: Дата и время истечения транзакции (строка в формате, принимаемом узлом COOPOS). title: Дата и время diff --git a/coopos/schemas/NamePrivileged.yaml b/coopos/schemas/NamePrivileged.yaml index 56571bbe6..fb72f982a 100644 --- a/coopos/schemas/NamePrivileged.yaml +++ b/coopos/schemas/NamePrivileged.yaml @@ -1,4 +1,4 @@ type: string pattern: '^[a-z1-5\.]{1,13}$' -description: Имя привилегированной учётной записи (подмножество правил имён EOSIO/COOPOS). +description: Имя привилегированной учётной записи (подмножество правил имён COOPOS). title: Привилегированное имя diff --git a/coopos/schemas/Symbol.yaml b/coopos/schemas/Symbol.yaml index 93145cfe3..280017a42 100644 --- a/coopos/schemas/Symbol.yaml +++ b/coopos/schemas/Symbol.yaml @@ -1,4 +1,4 @@ type: string -description: Строка актива EOSIO/COOPOS — дробная часть с точностью 4 и символ из 1–7 заглавных букв через пробел, например «1.0000 ABC». +description: Строка актива COOPOS — дробная часть с точностью 4 и символ из 1–7 заглавных букв через пробел, например «1.0000 ABC». pattern: "^([0-9]{1,32}.[0-9]{4} [A-Z]{1,7})$" title: Символ актива diff --git a/docs/documentation.md b/docs/documentation.md index 00dc06532..d56ceb294 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -17,10 +17,10 @@ --- - Документация к блокчейн-протоколу EOSIO & ANTELOPE, который лежит в основе программного комплекса Цифрового Кошелька. + Документация по стеку **COOPOS** — узлам, API и инструментам блокчейна кооперативной экономики. - [:octicons-arrow-right-24: Подробнее](https://developers.eos.io) - [:octicons-arrow-right-24: Репозиторий](https://github.com/blockchain) + [:octicons-arrow-right-24: Блокчейн](documentation/blockchain/intro.md) + [:octicons-arrow-right-24: Программы узла](documentation/blockchain/coopos/index.md) - __Смарт-контракты__ @@ -189,7 +189,7 @@ docker run --name node -d -p 8888:8888 -p 8080:8080 \-v $HOME/blockchain/data:/m __Сборка из исходников__ -Инструкция сборки из исходного кода описана в [репозитории](https://github.com/coopenomics/blockchain). +Инструкция сборки из исходного кода описана в [репозитории COOPOS](https://github.com/coopenomics/coopos). @@ -260,11 +260,9 @@ const options = { const session = new Session(args, options) ``` -Теперь вы можете применять сформированную сессию для отправки транзакций в любые смарт-контракты системы. Для чтения же информации из таблиц блокчейна вам потребуется ApiClient: +Теперь вы можете применять сформированную сессию для отправки транзакций в любые смарт-контракты системы. Для чтения информации из таблиц блокчейна нужен клиент Chain API из [WharfKit](https://wharfkit.com) (класс `APIClient`, подключение по инструкции актуальной версии SDK): ``` -import { APIClient } from "@wharfkit/antelope" - const client = new APIClient({ url: "https://testnet.coopenomics.world", }) diff --git a/docs/documentation/blockchain/components.md b/docs/documentation/blockchain/components.md index f75a7c9f4..df7b4ec80 100644 --- a/docs/documentation/blockchain/components.md +++ b/docs/documentation/blockchain/components.md @@ -1,4 +1,4 @@ -Платформа кооперативной экономики основана на открытом исходном коде блокчейна EOSIO и Antelope. +Платформа кооперативной экономики использует стек **COOPOS**. ## nodeos Ведущая программа, которая управляет хранением данных в блокчейне, поддерживает сетевые соединения, передаёт и принимает транзакции, воспроизводит состояние базы данных, исполняет действия, и так далее - т.е. выполняет всю базовую инфраструктурную работу платформы. diff --git a/docs/documentation/blockchain/configuration/api-node.md b/docs/documentation/blockchain/configuration/api-node.md new file mode 100644 index 000000000..902f48f21 --- /dev/null +++ b/docs/documentation/blockchain/configuration/api-node.md @@ -0,0 +1,53 @@ +# Пример конфигурации: API-нода + +**API-нода** обслуживает приложения: запросы к состоянию цепочки (`chain_api_plugin`), при необходимости сеть (`net_api_plugin`), иногда трассировку и историю состояния. Она **не подписывает блоки**, но часто принимает транзакции от клиентов и передаёт их в сеть. + +## Зачем именно так + +- **`chain_api_plugin` + `http_plugin`** — основа публичного или внутреннего RPC. Количество **`http-threads`** и размер **`chain-state-db-size-mb`** увеличивают по фактической нагрузке (число одновременных запросов, тяжёлые таблицы). +- **`api-accept-transactions = true`** — если узел должен принимать `push_transaction` / аналоги; если API только для чтения, можно выставить `false` и разгрузить узел. +- **`read-mode`**: + - **`head`** — данные до последнего полученного блока; удобно для «свежих» ответов. + - **`irreversible`** — только до последнего необратимого блока; строже согласованность, но в режиме `irreversible` транзакции из P2P не ретранслируются и поведение API для пуша может отличаться (см. комментарии в `config.example.ini` к `read-mode`). +- **`validation-mode = full`** — стандарт для узла, который следует за сетью. +- **P2P** — достаточно пиров для синхронизации; не обязательно держать сотни соединений, как на seed. +- **`net_api_plugin`** — включайте осознанно: он раскрывает информацию о P2P и часто **не выставляют публично**. Для внутренней диагностики — за VPN/firewall. +- **Защита HTTP**: `http-validate-host`, лимиты `http-max-in-flight-requests`, `http-max-bytes-in-flight-mb`, `max-body-size`, reverse proxy с rate limit и TLS на границе. + +Опционально подключайте **`trace_api_plugin`** и **`state_history_plugin`**, если приложениям нужны трассировки действий или поток истории состояния (см. [State History (SHiP)](../state-history-ship.md)). **State-роль** (поставка истории по WebSocket) может жить **на этом же узле** или на отдельной [state-ноде](state-node.md) — совмещение с API удобно для малых контуров, разделение — для нагрузки и безопасности. + +## Фрагмент `config.ini` + +```ini +plugin = eosio::chain_plugin +plugin = eosio::net_plugin +plugin = eosio::http_plugin +plugin = eosio::chain_api_plugin +# Только защищённая внутренняя сеть: +# plugin = eosio::net_api_plugin + +http-server-address = 0.0.0.0:8888 +http-threads = 16 +http-validate-host = true +http-max-in-flight-requests = 500 +http-max-bytes-in-flight-mb = 256 +max-body-size = 1048576 + +chain-threads = 8 +chain-state-db-size-mb = 16384 +chain-state-db-guard-size-mb = 256 + +validation-mode = full +read-mode = head +api-accept-transactions = true + +p2p-listen-endpoint = 0.0.0.0:9876 +p2p-peer-address = seed1.example.com:9876 +p2p-peer-address = seed2.example.com:9876 +max-clients = 50 +net-threads = 4 + +# Нет producer-name / signature-provider +``` + +Для пользовательских доменов укажите **`access-control-allow-origin`** и связанные CORS-директивы только если это требуется браузерным клиентам; не используйте `*` на публичных эндпоинтах с чувствительными данными без понимания рисков. diff --git a/docs/documentation/blockchain/configuration/index.md b/docs/documentation/blockchain/configuration/index.md new file mode 100644 index 000000000..6c595f217 --- /dev/null +++ b/docs/documentation/blockchain/configuration/index.md @@ -0,0 +1,29 @@ +# Конфигурация + +Узел **COOPOS** настраивается как один процесс `nodeos`, набор **плагинов** и общий `config.ini`. От выбранных плагинов и значений ключевых директив зависит роль узла в сети. + +Ниже — практические профили развёртывания. Подробнее о ролях узлов в архитектуре сети см. [Ноды и синхронизация истории](../nodes.md). + +| Аспект | Seed-нода | Production-нода | API-нода | State-нода (история) | Light-нода | +|--------|------------|-----------------|----------|----------------------|------------| +| Назначение | Точка входа в P2P, «клей» топологии | Выпуск блоков (делегат/BP) | RPC для приложений | Поставка истории по **SHiP** | Быстрый старт **со снимка**, без полной истории | +| Плагины | `chain`, `net` | + `producer`, часто `http` | `chain`, `net`, `http`, `chain_api` (+ опц.) | + **`state_history`** | как правило `chain`, `net`, `http`, `chain_api` | +| Продюсирование | Нет | Да | Нет | Нет | Нет | +| HTTP API | Обычно выкл. или `127.0.0.1` | Локально / внутр. сеть | Публично или за proxy | Часто **совмещают** с API; можно только SHiP | Локальный/внутренний API кооператива | +| P2P | Много пиров | Узкий круг BP | Умеренно | Нужен для догона цепи | **Синхронизация между кооперативами** и с сетью | +| Особенности | — | Ключи продюсера | Нагрузка на RPC | Диск, защита WS SHiP | **`--snapshot`**, усечённый block log | + +**State-нода** может быть **на том же хосте, что и API-нода**, или вынесена отдельно — см. [State-нода](state-node.md). + +**Light-ноды** в системе кооперативов обычно сочетают **локальный API** и **P2P** между контурами; подробнее — [Light-нода](light-node.md). + +## Дальше по разделу + +- [Параметры](parameters.md) — справочник отдельных директив. +- [Seed-нода](seed-node.md) +- [Production-нода](production-node.md) +- [API-нода](api-node.md) +- [State-нода (история / SHiP)](state-node.md) +- [Light-нода](light-node.md) + +Во всех примерах подставьте реальные хосты пиров, порты и пути к каталогам данных (`--data-dir`). diff --git a/docs/documentation/blockchain/configuration/light-node.md b/docs/documentation/blockchain/configuration/light-node.md new file mode 100644 index 000000000..68cf73086 --- /dev/null +++ b/docs/documentation/blockchain/configuration/light-node.md @@ -0,0 +1,52 @@ +# Пример конфигурации: light-нода + +**Light-нода** — узел COOPOS, поднятый **со снимком состояния (snapshot)** вместо полной перекачки и replay цепи с генезиса. У неё **нет полной истории блоков** с начала сети: есть **актуальное состояние** на момент снимка и дальнейшее наращивание цепи через **P2P** с момента подключения. + +## Зачем именно так + +- **Старт за минуты/часы вместо многодневной синхронизации** — критично для кооперативных и периферийных установок, где не нужен архив всей сети. +- **`--snapshot path/to.snapshot`** при запуске `nodeos` задаёт файл снимка; каталог данных и конфиг согласуют с инструкцией к вашему релизу COOPOS. +- **Журнал блоков** может быть пустым или коротким: узел не обязан хранить полный `blocks.log` от блока 1, если политика допускает усечённый лог (`block-log-retain-blocks` и см. [Параметры](parameters.md)). +- **P2P** остаётся обязательным: light-ноды **синхронизируют новые блоки** с сетью так же, как полные ноды, только **без истории «до снимка»**. +- **API** (`chain_api_plugin`) на light-ноде типичен для **локальной работы** приложений кооператива: чтение таблиц, отправка транзакций в сеть — в пределах доступного состояния и головы цепи. + +## Кооперативы и light-ноды + +В системе кооперативной экономики развёртывание часто строится вокруг **light-нод**: у каждого контура есть **свой узел** со снимком, **локальный Chain API** для сервисов и **P2P** для обмена блоками **между узлами кооперативов** (и с публичными seed/BP по политике сети). Полные архивные ноды и выделенные **state-ноды** остаются на уровне инфраструктуры сети или провайдеров; для **глубокой истории** приложения подключают **[Реактивный чтец SHiP](../../reactive-ship-reader.md)** к узлу с SHiP, а не полагаются на полный лог на каждой light-ноде. + +## Фрагмент `config.ini` + +Профиль по смыслу близок к [API-ноде](api-node.md), но эксплуатация отличается **запуском со снимка** и часто **меньшими лимитами диска** под блоки. + +```ini +plugin = eosio::chain_plugin +plugin = eosio::net_plugin +plugin = eosio::http_plugin +plugin = eosio::chain_api_plugin + +validation-mode = full +read-mode = head + +http-server-address = 0.0.0.0:8888 +http-threads = 8 +api-accept-transactions = true + +p2p-listen-endpoint = 0.0.0.0:9876 +p2p-peer-address = peer-coop.example.com:9876 +p2p-peer-address = seed-public.example.com:9876 + +chain-state-db-size-mb = 8192 + +# Опционально: усечённый block log, если не нужна длинная локальная история блоков +# block-log-retain-blocks = 100000 + +# Опционально: SHiP на light-ноде — только для диапазона, доступного узлу после снимка +# plugin = eosio::state_history_plugin +# trace-history = true +# chain-state-history = true +# state-history-endpoint = 127.0.0.1:8080 +``` + +**Запуск (схематично):** `nodeos --config-dir ... --data-dir ... --snapshot /path/to/snapshot.bin` + +Конкретные флаги и порядок инициализации см. в документации к вашей версии COOPOS; снимок должен быть **совместим** по версии протокола с бинарником узла. diff --git a/docs/documentation/blockchain/configuration.md b/docs/documentation/blockchain/configuration/parameters.md similarity index 97% rename from docs/documentation/blockchain/configuration.md rename to docs/documentation/blockchain/configuration/parameters.md index fc25b10fc..2aa763d0a 100644 --- a/docs/documentation/blockchain/configuration.md +++ b/docs/documentation/blockchain/configuration/parameters.md @@ -1,5 +1,8 @@ -# Конфигурация -Каждый из описанных параметров можно настроить для оптимизации работы nodeos в зависимости от целей и условий эксплуатации. Настраивая эти параметры, можно существенно изменить поведение узла, его производительность, безопасность и отказоустойчивость. Все эти параметры, или некоторые из них, устанавливаются в файле config.ini или передаются в качестве аргументов при запуске nodeos. +# Параметры конфигурации + +Каждый из описанных параметров можно настроить для оптимизации работы `nodeos` (COOPOS) в зависимости от целей и условий эксплуатации. Настраивая эти параметры, можно существенно изменить поведение узла, его производительность, безопасность и отказоустойчивость. Значения задаются в `config.ini` или аргументами при запуске. + +Типовые сочетания параметров для **seed-**, **production-** и **API-** ноды приведены в разделе [Конфигурация](index.md). Полный закомментированный перечень опций с пояснениями на английском см. в репозитории: `coopos/config.example.ini`. ## cpu-effort-percent @@ -36,7 +39,7 @@ state-dir указывает путь к директории, где храни ## protocol-features-dir -Параметр protocol-features-dir указывает путь к директории, где хранятся файлы с признаками протоколов. Этот параметр используется для хранения и управления признаками протоколов EOSIO. +Параметр protocol-features-dir указывает путь к директории, где хранятся файлы с признаками протоколов. Этот параметр используется для хранения и управления признаками протоколов COOPOS. ## checkpoint @@ -312,7 +315,7 @@ producer-name задает идентификатор продюсера, кон ## signature-provider -Параметр signature-provider задает пары ключ-значение в формате =, где определяет тип и данные провайдера для подписи транзакций. Например, KEY: для приватного ключа EOSIO или KEOSD: для URL-адреса, где доступен keosd. +Параметр signature-provider задает пары ключ-значение в формате =, где определяет тип и данные провайдера для подписи транзакций. Например, KEY: для приватного ключа в формате KEY или KEOSD: для URL-адреса, где доступен keosd. ## greylist-account diff --git a/docs/documentation/blockchain/configuration/production-node.md b/docs/documentation/blockchain/configuration/production-node.md new file mode 100644 index 000000000..350ec9278 --- /dev/null +++ b/docs/documentation/blockchain/configuration/production-node.md @@ -0,0 +1,54 @@ +# Пример конфигурации: production-нода + +**Production-нода** (нода делегата / block producer) **подписывает блоки** от имени аккаунта из графика продюсеров. Это самый чувствительный с точки зрения безопасности профиль: компрометация `signature-provider` равна компрометации ключа продюсера. + +## Зачем именно так + +- **`producer_plugin` обязателен**; **`producer-name`** и **`signature-provider`** — минимальная пара для подписи блоков. На проде обычно используют `KEOSD:` или аппаратный провайдер, а не `KEY:` с приватным ключом в файле. +- **`pause-on-startup = true`** — после рестарта производство не начнётся, пока вы явно не возобновите его (защита от двойного выпуска при ошибках в инфраструктуре). Перед включением убедитесь, что цепочка синхронизирована и график корректен. +- **`enable-stale-production = false`** (по умолчанию) — не выпускать блоки, если цепочка считается устаревшей; снижает риск некорректного поведения при сетевых сбоях. +- **`api-accept-transactions = false`** — публичная «касса» транзакций не на BP; транзакции приходят по P2P от API- и других нод. +- **HTTP на `127.0.0.1`** — если `http_plugin` нужен только для локального `cleos`/мониторинга. Публичный RPC на продюсере обычно не нужен и увеличивает атакуемую поверхность. +- **P2P — узкий круг** — соединения с другими BP и доверенными relay; опции вроде `allowed-connection`, `peer-key` и `p2p-auto-bp-peer` помогают ограничить, кто может подключаться (см. комментарии в `coopos/config.example.ini`). +- **`validation-mode = full`** — полная проверка входящих блоков. +- **`read-mode = head`** — состояние до головы цепочки, что соответствует роли продюсера. + +Тюнинг **`cpu-effort-percent`**, **`producer-threads`**, **`chain-threads`** зависит от железа и нагрузки сети; начните с значений из примера и корректируйте по метрикам. + +## Фрагмент `config.ini` + +```ini +plugin = eosio::chain_plugin +plugin = eosio::net_plugin +plugin = eosio::http_plugin +plugin = eosio::producer_plugin + +producer-name = yourproducer +# Пример с keosd; в бою — безопасное хранилище ключей, не файл с KEY: +signature-provider = YOUR_BLOCK_SIGNING_PUBKEY=KEOSD:http://127.0.0.1:8900 + +pause-on-startup = true +enable-stale-production = false + +validation-mode = full +read-mode = head + +http-server-address = 127.0.0.1:8888 +http-validate-host = true +api-accept-transactions = false + +p2p-listen-endpoint = 0.0.0.0:9876 +p2p-server-address = YOUR_BP_PUBLIC:9876 +p2p-peer-address = peer-bp1.example.com:9876 +p2p-peer-address = peer-bp2.example.com:9876 + +chain-threads = 4 +producer-threads = 2 +cpu-effort-percent = 80 +last-block-cpu-effort-percent = 80 +max-transaction-time = 30 + +keosd-provider-timeout = 5 +``` + +Дополнительно настройте файрвол так, чтобы **P2P-порт** был доступен только нужным пирам, а не всему интернету, если политика сети это допускает. diff --git a/docs/documentation/blockchain/configuration/seed-node.md b/docs/documentation/blockchain/configuration/seed-node.md new file mode 100644 index 000000000..bcfe76058 --- /dev/null +++ b/docs/documentation/blockchain/configuration/seed-node.md @@ -0,0 +1,43 @@ +# Пример конфигурации: seed-нода + +**Seed-нода** — это узел, который в первую очередь держит **устойчивые P2P-соединения** и помогает новым участникам сети найти пиров. Она не выпускает блоки и обычно **не обязана** отдавать публичный HTTP API. Подробнее о роли seed в топологии см. [Ноды и синхронизация истории](../nodes.md). + +## Зачем именно так + +- **Только `chain_plugin` и `net_plugin`** — цепочка синхронизируется и ретранслируется по P2P без лишних подсистем (продюсер, публичный RPC). +- **`p2p-listen-endpoint` на `0.0.0.0`** — приём входящих соединений от других нод; **`p2p-server-address`** должен отражать **достижимый снаружи** адрес:порт, иначе пиры не смогут корректно анонсировать ваш узел. +- **Несколько `p2p-peer-address`** — связность с остальной сетью; для seed критично не зависеть от одного пира. +- **`max-clients` выше типового** — seed рассчитан на большее число одновременных P2P-клиентов, чем «одиночная» нода. +- **`validation-mode = full`** — полная проверка блоков; для публичной инфраструктуры это базовая гигиена. +- **`api-accept-transactions = false`** — снижает поверхность атаки: узел не принимает произвольные транзакции через Chain API (если HTTP вообще включён). +- **`http-server-address = 127.0.0.1:8888` или пусто** — мониторинг/админка только локально; наружу seed обычно открывают только P2P-порт. + +## Фрагмент `config.ini` + +```ini +# --- Плагины: цепочка + сеть, без продюсера и без публичного API +plugin = eosio::chain_plugin +plugin = eosio::net_plugin + +# --- P2P: слушаем на всех интерфейсах, анонсируем внешний адрес +p2p-listen-endpoint = 0.0.0.0:9876 +p2p-server-address = YOUR_PUBLIC_HOSTNAME:9876 + +p2p-peer-address = seed-a.example.com:9876 +p2p-peer-address = seed-b.example.com:9876 + +max-clients = 150 +net-threads = 8 +sync-fetch-span = 100 + +validation-mode = full +read-mode = head + +# --- HTTP только для локального мониторинга (при необходимости отключите строку, оставив пустым) +http-server-address = 127.0.0.1:8888 +api-accept-transactions = false + +# Нет producer-name и signature-provider — блоки не подписываются на этом узле +``` + +При необходимости добавьте `resource_monitor_plugin` и `prometheus_plugin` (см. [Параметры](parameters.md)) для дискового мониторинга и метрик — для долгоживущей seed это полезно. diff --git a/docs/documentation/blockchain/configuration/state-node.md b/docs/documentation/blockchain/configuration/state-node.md new file mode 100644 index 000000000..593457ce6 --- /dev/null +++ b/docs/documentation/blockchain/configuration/state-node.md @@ -0,0 +1,58 @@ +# Пример конфигурации: state-нода (история / SHiP) + +**State-нода** в прикладном смысле — это узел, на котором включён **`state_history_plugin`**, чтобы **отдавать историю цепи потоком** (блоки, трассировки, дельты таблиц) по протоколу **State History (SHiP)**. Такой узел обычно называют близко к **HISTORY-ноде** в [обзоре ролей узлов](../nodes.md). + +## Совмещение с API-нодой + +Один и тот же процесс `nodeos` может одновременно: + +- обслуживать **Chain API** (`chain_api_plugin` + `http_plugin`); +- вести **журналы SHiP** и слушать **WebSocket** на `state-history-endpoint`. + +Это удобно для небольших установок: один хост и для `get_table_rows`, и для индексатора по SHiP. **Обязательным** совмещение не является: для изоляции нагрузки и безопасности часто выделяют **отдельную машину** только под историю (большой диск, ограниченный круг клиентов по сети), а HTTP API держат на других узлах. + +## Зачем именно так + +- **`state_history_plugin`** — без него нет SHiP-канала, только обычный RPC и при необходимости Trace API с файлов. +- **`trace-history`** и **`chain-state-history`** включают по потребности: для обозревателей и индексаторов чаще нужны **и трассы, и дельты**; только дельты уменьшают объём, если не нужны детальные трассы. +- **`state-history-endpoint`** — слушать на **127.0.0.1** или внутреннем интерфейсе; наружу — только через VPN/SSH-туннель или reverse proxy с ограничением доступа. Поток истории не должен быть публичным без жёсткой политики. +- **`chain_plugin` + `net_plugin`** — узел должен **догонять сеть** и применять блоки, иначе журнал SHiP неполный. +- Размер диска и опции **stride / retain / archive** (`state-history-stride`, `max-retained-history-files`, `state-history-archive-dir` и др.) задают политику хранения; для долгоживущей ноды см. [Параметры](parameters.md). + +Индексаторы в экосистеме COOPOS могут использовать **[Реактивный чтец SHiP](../../reactive-ship-reader.md)** как готовый клиент к этому endpoint. + +## Фрагмент `config.ini` + +```ini +plugin = eosio::chain_plugin +plugin = eosio::net_plugin +plugin = eosio::http_plugin +plugin = eosio::chain_api_plugin +plugin = eosio::state_history_plugin + +# Синхронизация с сетью +p2p-listen-endpoint = 0.0.0.0:9876 +p2p-peer-address = seed1.example.com:9876 +p2p-peer-address = seed2.example.com:9876 + +validation-mode = full +read-mode = head + +# HTTP API — по желанию на этой же ноде; для только-SHIP можно оставить 127.0.0.1 +http-server-address = 127.0.0.1:8888 +api-accept-transactions = false + +# SHiP: только внутренняя сеть +trace-history = true +chain-state-history = true +state-history-endpoint = 127.0.0.1:8080 +# state-history-unix-socket-path = ship.sock + +state-history-dir = state-history +# state-history-stride = ... +# max-retained-history-files = ... + +# Нет producer-name / signature-provider +``` + +Подробнее по протоколу и эксплуатации: [State History (SHiP)](../state-history-ship.md). diff --git a/docs/documentation/blockchain/coopos/00_install/01_build-from-source/00_build-unsupported-os.md b/docs/documentation/blockchain/coopos/00_install/01_build-from-source/00_build-unsupported-os.md new file mode 100644 index 000000000..b8fb52cbe --- /dev/null +++ b/docs/documentation/blockchain/coopos/00_install/01_build-from-source/00_build-unsupported-os.md @@ -0,0 +1,58 @@ +--- +content_title: Сборка COOPOS из исходников на других Unix-системах +--- + +**Инструкции по сборке на неподдерживаемых ОС следует считать экспериментальными, предоставляются «как есть» (best effort) и могут быть неполными.** + +**Предупреждение о параллельной компиляции (флаг `-j`)**: при сборке C/C++ часто используют `make -j $(nproc)` по числу ядер. Учтите: некоторые единицы компиляции (.cpp) в COOPOS очень тяжёлые и при компиляции могут потреблять почти 4 ГБ ОЗУ. Возможно, придётся снизить степень параллелизма в зависимости от объёма памяти на машине сборки, например вместо `make -j $(nproc)` запустить `make -j2`. Исчерпание памяти обычно (но не всегда) проявляется как падение компилятора. + +В целом мы рекомендуем так называемую **pinned**-сборку: версии компилятора и Boost остаются одинаковыми между сборками разных версий COOPOS (COOPOS требует неизменности этих версий, иначе состояние нужно восстанавливать из переносимого снимка). + +
+ Инструкции по сборке на FreeBSD 13.1 + +Установите зависимости: +``` +pkg update && pkg install \ + git \ + cmake \ + curl \ + boost-all \ + python3 \ + llvm11 \ + pkgconf +``` +и выполните сборку (в FreeBSD 13.1 по умолчанию llvm13 — передайте cmake опции clang11): +``` +git submodule update --init --recursive +mkdir build +cd build +cmake -DCMAKE_CXX_COMPILER=clang++11 -DCMAKE_C_COMPILER=clang11 -DCMAKE_BUILD_TYPE=Release .. +make -j $(nproc) package +``` +
+ +### Запуск тестов + +При сборке из исходников рекомендуется запускать как минимум «параллелизуемые» тесты. В этот набор по умолчанию не входят WASM spec tests — их можно добавить для большего покрытия, они тоже запускаются параллельно. + +``` +cd build + +# «parallelizable tests»: минимальный набор, который стоит прогонять +ctest -j $(nproc) -LE _tests + +# Дополнительно: WASM spec tests +ctest -j $(nproc) -L wasm_spec_tests +``` + +Другие тесты доступны и полезны, но они чувствительны к другому ПО на той же машине и могут **SIGKILL** другие запущенные экземпляры **nodeos**: +``` +cd build + +# Эти тесты нельзя гонять параллельно, но они рекомендованы +ctest -L "nonparallelizable_tests" + +# Эти тесты нельзя гонять параллельно; выполняются долго +ctest -L "long_running_tests" +``` diff --git a/docs/documentation/blockchain/coopos/00_install/01_build-from-source/index.md b/docs/documentation/blockchain/coopos/00_install/01_build-from-source/index.md new file mode 100644 index 000000000..9f0b2e914 --- /dev/null +++ b/docs/documentation/blockchain/coopos/00_install/01_build-from-source/index.md @@ -0,0 +1,20 @@ +--- +content_title: Сборка COOPOS из исходников +--- + +Ранее рекомендованные shell-скрипты для сборки удалены; процесс полностью управляется CMake. Собирающим из исходников нужно самостоятельно установить зависимости. Список зависимостей и рекомендуемая процедура сборки — в файле [`README.md`](https://github.com/coopenomics/coopos/blob/main/README.md). Там же — как эффективно запускать тесты. + +### Использование DUNE +Вместо сборки из исходников можно использовать [DUNE](https://github.com/AntelopeIO/DUNE) — удобный старт в Docker на разных платформах. + +### Сборка из исходников +COOPOS можно собрать и установить из исходников. Актуальные инструкции — [здесь](https://github.com/coopenomics/coopos/blob/main/README.md#build-and-install-from-source). + +#### Сборка «pinned» (фиксированные версии компилятора и Boost) +Инструкции для pinned-сборки перенесены [сюда](https://github.com/coopenomics/coopos/blob/main/README.md#pinned-build). Перед сборкой полезно прочитать [предварительные требования](https://github.com/coopenomics/coopos/blob/main/README.md#prerequisites) и предупреждение о параллельной сборке с флагом `-j` [здесь](https://github.com/coopenomics/coopos/blob/main/README.md#step-3---build). + +#### Ручная (не «pinned») сборка +Инструкции для unpinned-сборки — [здесь](https://github.com/coopenomics/coopos/blob/main/README.md#unpinned-build). Также см. [prerequisites](https://github.com/coopenomics/coopos/blob/main/README.md#prerequisites) и предупреждение о `-j` [здесь](https://github.com/coopenomics/coopos/blob/main/README.md#step-3---build). + +### Запуск тестов +Описание доступных наборов тестов и способов запуска — [здесь](https://github.com/coopenomics/coopos/blob/main/README.md#test). diff --git a/docs/documentation/blockchain/coopos/00_install/index.md b/docs/documentation/blockchain/coopos/00_install/index.md new file mode 100644 index 000000000..bf327d830 --- /dev/null +++ b/docs/documentation/blockchain/coopos/00_install/index.md @@ -0,0 +1,28 @@ +--- +content_title: Установка ПО COOPOS +--- + +!!! note "Установка и сеть" + Рекомендуемый способ — **сборка COOPOS из исходников** (ниже). Конфигурация узлов в сети: [Конфигурация нод](../../configuration/index.md). + +Лучший способ установить и использовать COOPOS — собрать его из исходников: + +* [Сборка COOPOS из исходников](01_build-from-source/index.md) + +## Поддерживаемые операционные системы + +COOPOS в настоящее время поддерживает следующие ОС: + +1. Ubuntu 22.04 Jammy +2. Ubuntu 20.04 Focal + +!!! note "Примечание" + Сборка и установка COOPOS на других Unix-подобных системах теоретически возможны. На отдельной странице собрана полезная информация, но имейте в виду: это экспериментально и не поддерживается официально. + +* [Сборка COOPOS на других Unix-системах](01_build-from-source/00_build-unsupported-os.md) + +## Docker Utilities for Node Execution (D.U.N.E.) + +Если у вас другая ОС или вы не хотите собирать COOPOS из исходников, можно попробовать набор утилит на Docker — D.U.N.E. — для быстрого знакомства с COOPOS и разработки контрактов. + +* [DUNE (Docker Utilities for Node Execution)](https://github.com/AntelopeIO/DUNE) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/00_nodeos-options.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/00_nodeos-options.md new file mode 100644 index 000000000..0c8793ff3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/00_nodeos-options.md @@ -0,0 +1,35 @@ +--- +content_title: Опции nodeos +--- + +`nodeos` — приложение командной строки (CLI). Его можно запускать вручную из терминала или скриптом. Поведение в основном задаётся загруженными плагинами и их опциями. У `nodeos` два класса опций: *специфичные для nodeos* и *специфичные для плагинов*. + +## Опции nodeos + +Они нужны в основном для «хозяйственных» задач: каталог данных блокчейна, имя файла конфигурации `nodeos`, путь к конфигурации логирования и т.д. Ниже — фрагмент вывода `nodeos --help` со специфичными для `nodeos` опциями (опции плагинов для ясности опущены): + +```console +Application Config Options: + --plugin arg Plugin(s) to enable, may be specified + multiple times + +Application Command Line Options: + -h [ --help ] Print this help message and exit. + -v [ --version ] Print version information. + --full-version Print full version information. + --print-default-config Print default configuration template + -d [ --data-dir ] arg Directory containing program runtime + data + --config-dir arg Directory containing configuration + files such as config.ini + -c [ --config ] arg (=config.ini) Configuration file name relative to + config-dir + -l [ --logconf ] arg (=logging.json) Logging configuration file name/path + for library users +``` + +## Опции плагинов + +Они управляют поведением плагинов `nodeos`. У каждой опции плагина уникальное имя, порядок в командной строке или `config.ini` произвольный. При указании опций плагина соответствующие плагины нужно включить через `--plugin`, иначе опции игнорируются. + +Подробности по опциям плагинов — в разделе [Плагины](../03_plugins/index.md). diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/01_nodeos-configuration.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/01_nodeos-configuration.md new file mode 100644 index 000000000..420739e41 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/01_nodeos-configuration.md @@ -0,0 +1,52 @@ +--- +content_title: Конфигурация nodeos +--- + +Опции плагинов задаются через аргументы CLI или файл `config.ini`. Опции, специфичные для `nodeos`, — только из командной строки. Полный список опций CLI и `config.ini` даёт `nodeos --help`, как показано выше. + +У каждой опции в `config.ini` есть соответствие в CLI, но не наоборот: часть опций CLI в `config.ini` недоступна. Например, большинство опций плагинов, выполняющих действия при старте, в `config.ini` не задаются — в частности `--delete-state-history` у `state_history_plugin`. + +Например, `--plugin eosio::chain_api_plugin` эквивалентно строке `plugin = eosio::chain_api_plugin` в `config.ini`. + +## Расположение `config.ini` + +По умолчанию на Linux `config.ini` находится в: +`~/.local/share/eosio/nodeos/config` + +Свой файл конфигурации задаётся опцией `nodeos` `--config path/to/config.ini`. + +## Пример nodeos + +Типичный запуск производящего узла: + +```sh +nodeos \ + -e -p eosio \ + --data-dir /users/mydir/eosio/data \ + --config-dir /users/mydir/eosio/config \ + --plugin eosio::producer_plugin \ + --plugin eosio::chain_plugin \ + --plugin eosio::http_plugin \ + --plugin eosio::state_history_plugin \ + --contracts-console \ + --access-control-allow-origin='*' \ + --http-validate-host=false \ + --verbose-http-errors \ + --state-history-dir /shpdata \ + --trace-history \ + --chain-state-history \ + >> nodeos.log 2>&1 & +``` + +Команда выше запускает производящий узел: + +* включает выпуск блоков (`-e`) +* задаёт имя продюсера `eosio` (`-p`) +* задаёт каталог данных блокчейна (`--data-dir`) +* задаёт каталог `config.ini` (`--config-dir`) +* подключает плагины `producer_plugin`, `chain_plugin`, `http_plugin`, `state_history_plugin` (`--plugin`) +* передаёт опции `chain_plugin` (`--contracts-console`) +* передаёт опции `http_plugin` (`--access-control-allow-origin`, `--http-validate-host`, `--verbose-http-errors`) +* передаёт опции state history (`--state-history-dir`, `--trace-history`, `--chain-state-history`) +* перенаправляет `stdout` и `stderr` в `nodeos.log` +* запускает процесс в фоне (`&`) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/00_producing-node.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/00_producing-node.md new file mode 100644 index 000000000..ecb0d1bed --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/00_producing-node.md @@ -0,0 +1,96 @@ +--- +content_title: Настройка производящего узла +--- + +!!! note "Нужны системные контракты" + Инструкции предполагают запуск производящего узла в сети с **загруженными системными контрактами**. На чистом dev-узле с нативной функциональностью или без системных контрактов шаги могут не сработать. + +Производящий **nodeos** в сети COOPOS подписывает и выпускает блоки; ниже — регистрация аккаунта как продюсера, `producer-name`, `signature-provider`, пиры и подключение `chain_plugin` / `producer_plugin`. Остальные возможности задаются [другими плагинами](../../03_plugins/index.md). + +## Перед началом + +* [Установка COOPOS](../../../00_install/index.md); в `PATH` — `nodeos`, `cleos`, `keosd`. + +[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN ) +[//]: # ( If you built COOPOS using shell scripts, make sure to run the Install Script ../../../00_install/01_build-from-source/01_shell-scripts/03_install-COOPOS-binaries.md ) + +* [Опции nodeos](../../02_usage/00_nodeos-options.md) — по необходимости. + +## Шаги + +1. [Зарегистрировать аккаунт как продюсера](#1-register-your-account-as-a-producer) +2. [Задать имя продюсера](#2-set-producer-name) +3. [Настроить signature-provider продюсера](#3-set-the-producers-signature-provider) +4. [Задать список пиров](#4-define-a-peers-list) +5. [Подключить нужные плагины](#5-load-the-required-plugins) + +### 1. Зарегистрировать аккаунт как продюсера {#1-register-your-account-as-a-producer} + +Чтобы аккаунт мог быть продюсером, зарегистрируйте его: + +```sh +cleos system regproducer accountname1 EOS1234534... http://producer.site Antarctica +``` + +### 2. Имя продюсера {#2-set-producer-name} + +В `config.ini` задайте опцию `producer-name` на ваш аккаунт: + +```console +# config.ini: + +# ID of producer controlled by this node (e.g. inita; may specify multiple times) (eosio::producer_plugin) +producer-name = youraccount +``` + +### 3. Signature-provider продюсера {#3-set-the-producers-signature-provider} + +Нужен закрытый ключ продюсера; открытый ключ должен входить в authority аккаунта продюсера. + +`signature-provider` задаётся кортежем из трёх полей: +* `public-key` — валидный открытый ключ COOPOS в виде строки. +* `provider-spec` — строка вида `:` +* `provider-type` — KEY или KEOSD + +#### Через KEY: + +```console +# config.ini: + +signature-provider = PUBLIC_SIGNING_KEY=KEY:PRIVATE_SIGNING_KEY + +//Example +//signature-provider = EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 +``` + +#### Через keosd: +Можно использовать `keosd` вместо явного указания ключей. + +```console +# config.ini: + +signature-provider = KEOSD: + +//Example +//EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEOSD:https://127.0.0.1:88888 +``` + +### 4. Список пиров {#4-define-a-peers-list} + +```console +# config.ini: + +# Default p2p port is 9876 +p2p-peer-address = 123.255.78.9:9876 +``` + +### 5. Нужные плагины {#5-load-the-required-plugins} + +В [config.ini](../index.md) убедитесь, что подключены следующие плагины (или добавьте их): + +```console +# config.ini: + +plugin = eosio::chain_plugin +plugin = eosio::producer_plugin +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/01_non-producing-node.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/01_non-producing-node.md new file mode 100644 index 000000000..d2b351280 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/01_non-producing-node.md @@ -0,0 +1,39 @@ +--- +content_title: Настройка непроизводящего узла +--- + +Непроизводящий **nodeos** в COOPOS только синхронизируется с пирами и не подписывает блоки; RPC, историю состояния и прочее включают [плагины](../../03_plugins/index.md) (кроме `producer_plugin`). + +## Перед началом + +* [Установка COOPOS](../../../00_install/index.md); в `PATH` — `nodeos`, `cleos`, `keosd`. + +[//]: # ( THIS IS A COMMENT NEXT LINK CONTAINS A BROKEN LINK ) +[//]: # ( If you built COOPOS using shell scripts, make sure to run the Install Script ../../../00_install/01_build-from-source/01_shell-scripts/03_install-COOPOS-binaries.md ) + +* [Опции nodeos](../../02_usage/00_nodeos-options.md) — по необходимости. + +## Шаги + +1. [Задать пиров](#1-set-peers) +2. [Включить один или несколько плагинов](#2-enable-one-or-more-available-plugins) + +### 1. Пиры {#1-set-peers} + +Укажите пиров в `config.ini`, например: + +```console +# config.ini: + +p2p-peer-address = 106.10.42.238:9876 +``` + +Либо задайте пир при запуске `nodeos`: + +```sh +nodeos ... --p2p-peer-address=106.10.42.238:9876 +``` + +### 2. Плагины {#2-enable-one-or-more-available-plugins} + +Список — [Плагины nodeos](../../03_plugins/index.md). Например: [`state_history_plugin`](../../03_plugins/state_history_plugin/index.md) для полной истории, [`http_plugin`](../../03_plugins/http_plugin/index.md) для HTTP RPC. У плагинов бывают зависимости — их нужно подключить вместе с ними. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/index.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/index.md new file mode 100644 index 000000000..252c321ed --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/02_node-setups/index.md @@ -0,0 +1,12 @@ +--- +content_title: Типовые схемы узлов nodeos +--- + +`nodeos` обычно работает в двух режимах: + + * [Производящий узел](00_producing-node.md) + * [Непроизводящий узел](01_non-producing-node.md) + +**Производящие узлы** настроены на выпуск блоков. Они подключаются к P2P-сети и активно создают новые блоки. Свободные транзакции также проверяются и ретранслируются. В mainnet производящий узел выпускает блоки только если назначенный ему продюсер входит в активное расписание. + +**Непроизводящие узлы** подключаются к P2P, но сами блоки не выпускают; их используют как прокси, для ретрансляции API-запросов, проверки транзакций, распространения данных между узлами и т.д. Также они удобны для мониторинга состояния цепочки. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/00_local-single-node-testnet.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/00_local-single-node-testnet.md new file mode 100644 index 000000000..ad2f99e1e --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/00_local-single-node-testnet.md @@ -0,0 +1,119 @@ +--- +content_title: Локальная одноузловая тестовая сеть +--- + +На одной машине поднимается один производящий **nodeos** COOPOS (**single host, single-node testnet**). `cleos` вызывает действия в цепи и при необходимости сам поднимает `keosd`; отдельный `keosd` нужен, если держите кошелёк на фиксированном URL. + +![Single host single node testnet](single-host-single-node-testnet.png) + +## Перед началом + +* [Установка COOPOS](../../../00_install/index.md); в `PATH` — `nodeos`, `cleos`, `keosd`. + +[//]: # (THIS IS A COMMENT, NEXT LINK HAS BROKEN LINK) +[//]: # (If you built COOPOS using shell scripts, make sure to run the Install Script ../../../00_install/01_build-from-source/01_shell-scripts/03_install-COOPOS-binaries.md .) + +* [Опции nodeos](../../02_usage/00_nodeos-options.md) — по необходимости. + +## Шаги + +Откройте одно окно терминала: + +1. [Запустить производящий узел](#1-start-the-producer-node) +2. [Получить информацию об узле](#2-get-node-info) + +### 1. Запуск производящего узла {#1-start-the-producer-node} + +Одна команда для одноузлового блокчейна: + +```sh +nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin +``` + +!!! note "Минимальная конфигурация nodeos" + Минимально для выпуска блоков нужны `chain_api_plugin` и `history_api_plugin`, флаги `-e` (stale production) и `-p eosio` (имя продюсера `eosio`). Альтернатива — свой аккаунт в роли продюсера. + +После запуска `nodeos` в логе должны появиться сообщения о выпуске блоков. + +```console +1575001ms thread-0 chain_controller.cpp:235 _push_block ] initm #1 @2017-09-04T04:26:15 | 0 trx, 0 pending, exectime_ms=0 +1575001ms thread-0 producer_plugin.cpp:207 block_production_loo ] initm generated block #1 @ 2017-09-04T04:26:15 with 0 trxs 0 pending +1578001ms thread-0 chain_controller.cpp:235 _push_block ] initc #2 @2017-09-04T04:26:18 | 0 trx, 0 pending, exectime_ms=0 +1578001ms thread-0 producer_plugin.cpp:207 block_production_loo ] initc generated block #2 @ 2017-09-04T04:26:18 with 0 trxs 0 pending +... +eosio generated block 046b9984... #101527 @ 2018-04-01T14:24:58.000 with 0 trxs +eosio generated block 5e527ee2... #101528 @ 2018-04-01T14:24:58.500 with 0 trxs +... +``` +На этом этапе `nodeos` работает с одним продюсером — `eosio`. + +### 2. Информация об узле {#2-get-node-info} + +```sh +cleos get info +``` + +Пример ответа: + +```json +{ + "server_version": "0f9df63e", + "chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f", + "head_block_num": 134, + "last_irreversible_block_num": 133, + "last_irreversible_block_id": "00000085060e9872849ef87bef3b19ab07de9faaed71154510c7f0aeeaddae2c", + "head_block_id": "000000861e3222dce1c7c2cfb938940d8aac22c816cc8b0b89f6bf65a8ad5bdc", + "head_block_time": "2019-11-18T22:13:10.500", + "head_block_producer": "eosio", + "virtual_block_cpu_limit": 228396, + "virtual_block_net_limit": 1197744, + "block_cpu_limit": 199900, + "block_net_limit": 1048576, + "server_version_string": "v2.0.0-rc2", + "fork_db_head_block_num": 134, + "fork_db_head_block_id": "000000861e3222dce1c7c2cfb938940d8aac22c816cc8b0b89f6bf65a8ad5bdc", + "server_full_version_string": "v2.0.0-rc2-0f9df63e1eca4dda4cb7df30683f4a1220599444" +} +``` + +## Дополнительные шаги + +Продвинутым пользователям часто нужна своя конфигурация. У `nodeos` отдельный каталог конфигурации; путь зависит от ОС. + +* macOS: `~/Library/Application\ Support/eosio/nodeos/config` +* Linux: `~/.local/share/eosio/nodeos/config` + +При сборке в каталог кладётся типовой `genesis.json`. Свой каталог конфигурации задаётся `--config-dir`; при его использовании `genesis.json` нужно скопировать вручную. + +Для осмысленной работы нужен корректный `config.ini`. При старте `nodeos` ищет `config.ini` в каталоге конфигурации; если файла нет, создаётся по умолчанию. Если готового `config.ini` нет, запустите `nodeos` и сразу остановите Ctrl-C — появится файл по умолчанию. Отредактируйте `config.ini`, добавив или изменив: + +```console +# config.ini: + + # Enable production on a stale chain, since a single-node test chain is pretty much always stale + enable-stale-production = true + # Enable block production with the testnet producers + producer-name = eosio + # Load the block producer plugin, so you can produce blocks + plugin = eosio::producer_plugin + # As well as API and HTTP plugins + plugin = eosio::chain_api_plugin + plugin = eosio::http_plugin + plugin = eosio::history_api_plugin +``` + +Затем снова запустите `nodeos`: + +```sh +nodeos +``` + +Данные времени выполнения (shared memory, логи и т.д.) лежат в каталоге данных: + +* macOS: `~/Library/Application\ Support/eosio/nodeos/data` +* Linux: `~/.local/share/eosio/nodeos/data` + +Каталог данных задаётся `--data-dir`. + +!!! note "Дальше" + Далее — [локальная многоузловая тестовая сеть на одном хосте](01_local-multi-node-testnet.md). diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/01_local-multi-node-testnet.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/01_local-multi-node-testnet.md new file mode 100644 index 000000000..69abe2301 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/01_local-multi-node-testnet.md @@ -0,0 +1,209 @@ +--- +content_title: Локальная многоузловая тестовая сеть +--- + +Два производящих **nodeos** на одном хосте (**single host, multi-node testnet**): отдельные порты HTTP/P2P и каталоги `config`/`data`, связь через `cleos` и при необходимости `keosd`. Схема ниже. + +![Single host multi node testnet](single-host-multi-node-testnet.png) + +## Перед началом + +* [Установка COOPOS](../../../00_install/index.md); в `PATH` — `nodeos`, `cleos`, `keosd`. +* [Опции nodeos](../../02_usage/00_nodeos-options.md) — по необходимости. + +## Шаги + +Откройте четыре окна терминала. + +1. [Запустить менеджер кошельков](#1-start-the-wallet-manager) +2. [Создать кошелёк по умолчанию](#2-create-a-default-wallet) +3. [Импортировать ключ COOPOS](#3-loading-the-COOPOS-key) +4. [Запустить первый производящий узел](#4-start-the-first-producer-node) +5. [Запустить второй производящий узел](#5-start-the-second-producer-node) +6. [Получить информацию об узлах](#6-get-nodes-info) + +### 1. Менеджер кошельков {#1-start-the-wallet-manager} + +В первом терминале запустите `keosd`: + +```sh +keosd --http-server-address 127.0.0.1:8899 +``` + +При успехе в начале вывода будут строки вроде: + +```console +2493323ms thread-0 wallet_plugin.cpp:39 plugin_initialize ] initializing wallet plugin +2493323ms thread-0 http_plugin.cpp:141 plugin_initialize ] host: 127.0.0.1 port: 8899 +2493323ms thread-0 http_plugin.cpp:144 plugin_initialize ] configured http to listen on 127.0.0.1:8899 +2493323ms thread-0 http_plugin.cpp:213 plugin_startup ] start listening for http requests +2493324ms thread-0 wallet_api_plugin.cpp:70 plugin_startup ] starting wallet_api_plugin +``` + +В логе должна появиться строка про `127.0.0.1:8899`; иначе смотрите ошибку и перезапустите `keosd`. Окно с `keosd` не закрывайте — переходите ко второму терминалу. + +### 2. Кошелёк по умолчанию {#2-create-a-default-wallet} + +Во втором терминале создайте кошелёк через `cleos`: + +```sh +cleos --wallet-url http://127.0.0.1:8899 wallet create --to-console +``` + +`cleos` сообщит о создании кошелька `default` и выдаст пароль — сохраните его. Пример вывода: + +```console +Creating wallet: default +Save password to use in the future to unlock this wallet. +Without password imported keys will not be retrievable. +"PW5JsmfYz2wrdUEotTzBamUCAunAA8TeRZGT57Ce6PkvM12tre8Sm" +``` + +В окне `keosd` появятся служебные сообщения. Дальнейшие команды `cleos` выполняйте во втором терминале. + +### 3. Ключ COOPOS {#3-loading-the-COOPOS-key} + +Приватная тестовая цепочка создаётся с типовым начальным ключом — его нужно импортировать в кошелёк. + +```sh +cleos --wallet-url http://127.0.0.1:8899 wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 +``` + +```console +imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV +``` + +### 4. Первый производящий узел {#4-start-the-first-producer-node} + +В третьем терминале: + +```sh +nodeos --enable-stale-production --producer-name eosio --plugin eosio::chain_api_plugin --plugin eosio::net_api_plugin +``` + +Получается специальный «bios»-продюсер. При успехе в логе `nodeos` виден выпуск блоков. + +### 5. Второй производящий узел {#5-start-the-second-producer-node} + +[//]: # (don't render for now) +[//]: # (The following commands assume that you are running this tutorial from the `eos\build` directory, from which you ran `./eosio_build.sh` to build the COOPOS binaries.) + +Загрузите на `eosio` контракт `eosio.bios` (ресурсы аккаунтов и привилегированные вызовы). Во втором терминале: + +```sh +cleos --wallet-url http://127.0.0.1:8899 set contract eosio build/contracts/eosio.bios +``` + +Создайте аккаунт-продюсер `inita`: сгенерируйте ключи и импортируйте закрытый в кошелёк. + +```sh +cleos create key +``` + +!!! warning "Внимание" + Дальнейшие команды используют пары ключей из примера ниже. Чтобы копировать команды без правок, возьмите именно эти ключи, а не результат своей команды `cleos create key`. Если используете свои ключи — подставьте их во все следующие команды. + +Типичный вывод `cleos create key`: + +```console +Private key: 5JgbL2ZnoEAhTudReWH1RnMuQS6DBeLZt4ucV6t8aymVEuYg7sr +Public key: EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg +``` + +Импорт закрытого ключа: + +```sh +cleos --wallet-url http://127.0.0.1:8899 wallet import 5JgbL2ZnoEAhTudReWH1RnMuQS6DBeLZt4ucV6t8aymVEuYg7sr +``` + +```console +imported private key for: EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg +``` + +Создание аккаунта `inita`: для `create account` нужны два открытых ключа — owner и active; здесь один и тот же ключ используется дважды. + +```sh +cleos --wallet-url http://127.0.0.1:8899 create account eosio inita EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg +``` + +```console +executed transaction: d1ea511977803d2d88f46deb554f5b6cce355b9cc3174bec0da45fc16fe9d5f3 352 bytes 102400 cycles +# eosio <= eosio::newaccount {"creator":"eosio","name":"inita","owner":{"threshold":1,"keys":[{"key":"EOS6hMjoWRF2L8x9YpeqtUEcsDKA... +``` + +Аккаунт готов; в других руководствах на него вешают контракты — здесь он станет продюсером блоков. + +В четвёртом терминале запустите второй экземпляр `nodeos`. Командная строка длиннее, чтобы не конфликтовать с первым узлом. Можно скопировать команду и при необходимости поправить ключи: + +```sh +nodeos --producer-name inita --plugin eosio::chain_api_plugin --plugin eosio::net_api_plugin --http-server-address 127.0.0.1:8889 --p2p-listen-endpoint 127.0.0.1:9877 --p2p-peer-address 127.0.0.1:9876 --config-dir node2 --data-dir node2 --signature-provider EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg=KEY:5JgbL2ZnoEAhTudReWH1RnMuQS6DBeLZt4ucV6t8aymVEuYg7sr +``` + +У нового узла в логе будет немного активности, затем тишина до последнего шага — пока `inita` не зарегистрирован как продюсер. Ниже пример хвоста лога (у вас могут отличаться времена): + +```console +2393147ms thread-0 producer_plugin.cpp:176 plugin_startup ] producer plugin: plugin_startup() end +2393157ms thread-0 net_plugin.cpp:1271 start_sync ] Catching up with chain, our last req is 0, theirs is 8249 peer dhcp15.ociweb.com:9876 - 295f5fd +2393158ms thread-0 chain_controller.cpp:1402 validate_block_heade ] head_block_time 2018-03-01T12:00:00.000, next_block 2018-04-05T22:31:08.500, block_interval 500 +2393158ms thread-0 chain_controller.cpp:1404 validate_block_heade ] Did not produce block within block_interval 500ms, took 3061868500ms) +2393512ms thread-0 producer_plugin.cpp:241 block_production_loo ] Not producing block because production is disabled until we receive a recent block (see: --enable-stale-production) +2395680ms thread-0 net_plugin.cpp:1385 recv_notice ] sync_manager got last irreversible block notice +2395680ms thread-0 net_plugin.cpp:1271 start_sync ] Catching up with chain, our last req is 8248, theirs is 8255 peer dhcp15.ociweb.com:9876 - 295f5fd +2396002ms thread-0 producer_plugin.cpp:226 block_production_loo ] Previous result occurred 5 times +2396002ms thread-0 producer_plugin.cpp:244 block_production_loo ] Not producing block because it isn't my turn, its eosio +``` + +Сейчас второй `nodeos` — «простаивающий» продюсер. Чтобы он стал активным, зарегистрируйте `inita` у bios-узла и обновите расписание продюсеров: + +```sh +cleos --wallet-url http://127.0.0.1:8899 push action eosio setprods "{ \"schedule\": [{\"producer_name\": \"inita\",\"block_signing_key\": \"EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg\"}]}" -p eosio@active +``` + +```console +executed transaction: 2cff4d96814752aefaf9908a7650e867dab74af02253ae7d34672abb9c58235a 272 bytes 105472 cycles +# eosio <= eosio::setprods {"version":1,"producers":[{"producer_name":"inita","block_signing_key":"EOS6hMjoWRF2L8x9YpeqtUEcsDKA... +``` + +Двухузловая тестовая сеть готова. Исходный узел перестаёт выпускать блоки, но продолжает их получать. Проверьте `get info` на каждом узле. + +### 6. Информация об узлах {#6-get-nodes-info} + +Первый узел: + +```sh +cleos get info +``` + +Пример ответа: + +```json +{ + "server_version": "223565e8", + "head_block_num": 11412, + "last_irreversible_block_num": 11411, + "head_block_id": "00002c94daf7dff456cd940bd585c4d9b38e520e356d295d3531144329c8b6c3", + "head_block_time": "2018-04-06T00:06:14", + "head_block_producer": "inita" +} +``` + +Второй узел: + +```sh +cleos --url http://127.0.0.1:8889 get info +``` + +Пример ответа: + +```json +{ + "server_version": "223565e8", + "head_block_num": 11438, + "last_irreversible_block_num": 11437, + "head_block_id": "00002cae32697444fa9a2964e4db85b5e8fd4c8b51529a0c13e38587c1bf3c6f", + "head_block_time": "2018-04-06T00:06:27", + "head_block_producer": "inita" +} +``` + +Сеть на нескольких физических хостах настраивается отдельно. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/index.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/index.md new file mode 100644 index 000000000..c27f5036c --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/index.md @@ -0,0 +1,30 @@ +--- +content_title: Среда разработки +--- + +Среду `nodeos` для разработки и тестов можно собрать по-разному; выбор зависит от целей проекта. Ниже — практичные варианты. + +## Локальная одноузловая тестовая сеть + +Подходит разработчикам смарт-контрактов, будущим продюсерам и операторам непроизводящих узлов. Минимальная конфигурация и мало требований. + +* [Настроить nodeos как локальную одноузловую тестовую сеть](00_local-single-node-testnet.md) + +## Локальная многоузловая тестовая сеть + +Технически пригодна и для разработки контрактов, но часто избыточна. Полезна при работе с ядром: бенчмарки, оптимизация, эксперименты; также для обучения и проверки идей. + +* [Настроить nodeos как локальную двухузловую тестовую сеть](01_local-multi-node-testnet.md) +* [Настроить nodeos как локальную 21-узловую тестовую сеть](/tutorials/bios-boot-tutorial.md) + +## Официальный тестовый узел + +Для простого старта и кроссплатформенности можно использовать инструменты вроде [DUNE](https://github.com/AntelopeIO/DUNE) (Docker) либо следовать [инструкциям в репозитории COOPOS](https://github.com/coopenomics/coopos). + +## Сторонние тестовые сети + +Для тестирования dApp и контрактов COOPOS доступны сторонние тестнеты: + +* Jungle Testnet: [монитор](https://monitor.jungletestnet.io/), [сайт](https://jungletestnet.io/) +* [CryptoKylin Testnet](https://www.cryptokylin.io/) +* [Telos Testnet](https://mon-test.telosfoundation.io/) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/single-host-multi-node-testnet.png b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/single-host-multi-node-testnet.png new file mode 100644 index 000000000..86b63c571 Binary files /dev/null and b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/single-host-multi-node-testnet.png differ diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/single-host-single-node-testnet.png b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/single-host-single-node-testnet.png new file mode 100644 index 000000000..0698c40e2 Binary files /dev/null and b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/03_development-environment/single-host-single-node-testnet.png differ diff --git a/docs/documentation/blockchain/coopos/01_nodeos/02_usage/index.md b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/index.md new file mode 100644 index 000000000..4e644557e --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/02_usage/index.md @@ -0,0 +1,10 @@ +--- +content_title: Использование nodeos +--- + +Здесь описано, как пользоваться `nodeos`, перечислены опции конфигурации, раскладка файлов на диске, типовые конфигурации узлов и варианты тестовой среды для разработки. + +* [Опции](00_nodeos-options.md) — запуск `nodeos`; опции самого `nodeos` и плагинов. +* [Конфигурация](01_nodeos-configuration.md) — CLI и `config.ini`; пример `nodeos`. +* [Типовые схемы узлов](02_node-setups/index.md) — производящий и непроизводящий узлы. +* [Среда разработки](03_development-environment/index.md) — тестовая сеть для разработки. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_api_plugin/api-reference/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_api_plugin/api-reference/index.md new file mode 100644 index 000000000..353b10f67 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_api_plugin/api-reference/index.md @@ -0,0 +1 @@ +[Справочник Chain API](https://docs.eosnetwork.com/coopos-plugins/latest/chain.api/) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_api_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_api_plugin/index.md new file mode 100644 index 000000000..dc118ccf6 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_api_plugin/index.md @@ -0,0 +1,38 @@ +## Описание + +Плагин `chain_api_plugin` выставляет возможности [`chain_plugin`](../chain_plugin/index.md) через RPC API, которое обслуживает [`http_plugin`](../http_plugin/index.md). + +## Использование + +```console +# config.ini +plugin = eosio::chain_api_plugin +``` +```sh +# command-line +nodeos ... --plugin eosio::chain_api_plugin +``` + +## Опции + +Нет + +## Зависимости + +* [`chain_plugin`](../chain_plugin/index.md) +* [`http_plugin`](../http_plugin/index.md) + +### Примеры загрузки зависимостей + +```console +# config.ini +plugin = eosio::chain_plugin +[options] +plugin = eosio::http_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::chain_plugin [operations] [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_plugin/index.md new file mode 100644 index 000000000..592ea123f --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/chain_plugin/index.md @@ -0,0 +1,244 @@ +## Описание + +Плагин `chain_plugin` — обязательный базовый модуль для обработки и агрегирования данных цепочки на узле COOPOS. + +## Использование + +```console +# config.ini +plugin = eosio::chain_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::chain_plugin [operations] [options] +``` + +## Операции (только CLI) + +Задаются только в командной строке `nodeos`: + +```console +Command Line Options for eosio::chain_plugin: + --genesis-json arg File to read Genesis State from + --genesis-timestamp arg override the initial timestamp in the + Genesis State file + --print-genesis-json extract genesis_state from blocks.log + as JSON, print to console, and exit + --extract-genesis-json arg extract genesis_state from blocks.log + as JSON, write into specified file, and + exit + --print-build-info print build environment information to + console as JSON and exit + --extract-build-info arg extract build environment information + as JSON, write into specified file, and + exit + --force-all-checks do not skip any validation checks while + replaying blocks (useful for replaying + blocks from untrusted source) + --disable-replay-opts disable optimizations that specifically + target replay + --replay-blockchain clear chain state database and replay + all blocks + --hard-replay-blockchain clear chain state database, recover as + many blocks as possible from the block + log, and then replay those blocks + --delete-all-blocks clear chain state database and block + log + --truncate-at-block arg (=0) stop hard replay / block log recovery + at this block number (if set to + non-zero number) + --terminate-at-block arg (=0) terminate after reaching this block + number (if set to a non-zero number) + --snapshot arg File to read Snapshot State from + +``` + +## Опции + +Доступны и в командной строке `nodeos`, и в `config.ini`: + +```console +Config Options for eosio::chain_plugin: + --blocks-dir arg (="blocks") the location of the blocks directory + (absolute path or relative to + application data dir) + --state-dir arg (="state") the location of the state directory + (absolute path or relative to + application data dir) + --protocol-features-dir arg (="protocol_features") + the location of the protocol_features + directory (absolute path or relative to + application config dir) + --checkpoint arg Pairs of [BLOCK_NUM,BLOCK_ID] that + should be enforced as checkpoints. + --wasm-runtime runtime (=eos-vm-jit) Override default WASM runtime ( + "eos-vm-jit", "eos-vm") + "eos-vm-jit" : A WebAssembly runtime + that compiles WebAssembly code to + native x86 code prior to execution. + "eos-vm" : A WebAssembly interpreter. + + --profile-account arg The name of an account whose code will + be profiled + --abi-serializer-max-time-ms arg (=15) + Override default maximum ABI + serialization time allowed in ms + --chain-state-db-size-mb arg (=1024) Maximum size (in MiB) of the chain + state database + --chain-state-db-guard-size-mb arg (=128) + Safely shut down node when free space + remaining in the chain state database + drops below this size (in MiB). + --signature-cpu-billable-pct arg (=50) + Percentage of actual signature recovery + cpu to bill. Whole number percentages, + e.g. 50 for 50% + --chain-threads arg (=2) Number of worker threads in controller + thread pool + --contracts-console print contract's output to console + --deep-mind print deeper information about chain + operations + --actor-whitelist arg Account added to actor whitelist (may + specify multiple times) + --actor-blacklist arg Account added to actor blacklist (may + specify multiple times) + --contract-whitelist arg Contract account added to contract + whitelist (may specify multiple times) + --contract-blacklist arg Contract account added to contract + blacklist (may specify multiple times) + --action-blacklist arg Action (in the form code::action) added + to action blacklist (may specify + multiple times) + --key-blacklist arg Public key added to blacklist of keys + that should not be included in + authorities (may specify multiple + times) + --sender-bypass-whiteblacklist arg Deferred transactions sent by accounts + in this list do not have any of the + subjective whitelist/blacklist checks + applied to them (may specify multiple + times) + --read-mode arg (=head) Database read mode ("head", + "irreversible", "speculative"). + In "head" mode: database contains state + changes up to the head block; + transactions received by the node are + relayed if valid. + In "irreversible" mode: database + contains state changes up to the last + irreversible block; transactions + received via the P2P network are not + relayed and transactions cannot be + pushed via the chain API. + In "speculative" mode: database + contains state changes by transactions + in the blockchain up to the head block + as well as some transactions not yet + included in the blockchain; + transactions received by the node are + relayed if valid. + --api-accept-transactions arg (=1) Allow API transactions to be evaluated + and relayed if valid. + --validation-mode arg (=full) Chain validation mode ("full" or + "light"). + In "full" mode all incoming blocks will + be fully validated. + In "light" mode all incoming blocks + headers will be fully validated; + transactions in those validated blocks + will be trusted + + --disable-ram-billing-notify-checks Disable the check which subjectively + fails a transaction if a contract bills + more RAM to another account within the + context of a notification handler (i.e. + when the receiver is not the code of + the action). + --maximum-variable-signature-length arg (=16384) + Subjectively limit the maximum length + of variable components in a variable + legnth signature to this size in bytes + --trusted-producer arg Indicate a producer whose blocks + headers signed by it will be fully + validated, but transactions in those + validated blocks will be trusted. + --database-map-mode arg (=mapped) Database map mode ("mapped", + "mapped_private", "heap", or "locked"). + In "mapped" mode database is memory + mapped as a file. + In "mapped_private" mode database is + memory mapped as a file using a private + mapping (no disk writeback until + program exit). + In "heap" mode database is preloaded in + to swappable memory and will use huge + pages if available. + In "locked" mode database is preloaded, + locked in to memory, and will use huge + pages if available. + + --eos-vm-oc-cache-size-mb arg (=1024) Maximum size (in MiB) of the EOS VM OC + code cache + --eos-vm-oc-compile-threads arg (=1) Number of threads to use for EOS VM OC + tier-up + --eos-vm-oc-enable arg (=auto) Enable EOS VM OC tier-up runtime + ('auto', 'all', 'none'). + 'auto' - EOS VM OC tier-up is enabled + for eosio.* accounts, read-only trxs, + and applying blocks. + 'all' - EOS VM OC tier-up is enabled + for all contract execution. + 'none' - EOS VM OC tier-up is + completely disabled. + + --enable-account-queries arg (=0) enable queries to find accounts by + various metadata. + --transaction-retry-max-storage-size-gb arg + Maximum size (in GiB) allowed to be + allocated for the Transaction Retry + feature. Setting above 0 enables this + feature. + --transaction-retry-interval-sec arg (=20) + How often, in seconds, to resend an + incoming transaction to network if not + seen in a block. + Needs to be at least twice as large as + p2p-dedup-cache-expire-time-sec. + --transaction-retry-max-expiration-sec arg (=120) + Maximum allowed transaction expiration + for retry transactions, will retry + transactions up to this value. + Should be larger than + transaction-retry-interval-sec. + --transaction-finality-status-max-storage-size-gb arg + Maximum size (in GiB) allowed to be + allocated for the Transaction Finality + Status feature. Setting above 0 enables + this feature. + --transaction-finality-status-success-duration-sec arg (=180) + Duration (in seconds) a successful + transaction's Finality Status will + remain available from being first + identified. + --transaction-finality-status-failure-duration-sec arg (=180) + Duration (in seconds) a failed + transaction's Finality Status will + remain available from being first + identified. + --integrity-hash-on-start Log the state integrity hash on startup + --integrity-hash-on-stop Log the state integrity hash on + shutdown + --block-log-retain-blocks arg If set to greater than 0, periodically + prune the block log to store only + configured number of most recent + blocks. + If set to 0, no blocks are be written + to the block log; block log file is + removed after startup. + +``` + +## Зависимости + +Нет diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/db_size_api_plugin/api-reference/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/db_size_api_plugin/api-reference/index.md new file mode 100644 index 000000000..9c263fdce --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/db_size_api_plugin/api-reference/index.md @@ -0,0 +1 @@ +[Справочник DB Size API](https://docs.eosnetwork.com/coopos-plugins/latest/db_size.api/) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/db_size_api_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/db_size_api_plugin/index.md new file mode 100644 index 000000000..8642be243 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/db_size_api_plugin/index.md @@ -0,0 +1,40 @@ +## Описание + +Плагин `db_size_api_plugin` возвращает аналитику по блокчейну: + +* free_bytes +* used_bytes +* size +* indices + + + +## Опции + +Нет + +## Зависимости + +* [`chain_plugin`](../chain_plugin/index.md) +* [`http_plugin`](../http_plugin/index.md) + +### Примеры загрузки зависимостей + +```console +# config.ini +plugin = eosio::chain_plugin +[options] +plugin = eosio::http_plugin +[options] +``` +```sh +# командная строка +nodeos ... --plugin eosio::chain_plugin [operations] [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/http_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/http_plugin/index.md new file mode 100644 index 000000000..34445d250 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/http_plugin/index.md @@ -0,0 +1,72 @@ +## Описание + +Плагин `http_plugin` поддерживается и `nodeos`, и `keosd`. Нужен для любой функциональности RPC API у экземпляра `nodeos` или `keosd`. + +## Использование + +```console +# config.ini +plugin = eosio::http_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::http_plugin [options] + (or) +keosd ... --plugin eosio::http_plugin [options] +``` + +## Опции + +Задаются в командной строке и в `config.ini`: + +```console +Config Options for eosio::http_plugin: + --unix-socket-path arg The filename (relative to data-dir) to + create a unix socket for HTTP RPC; set + blank to disable. + --http-server-address arg (=127.0.0.1:8888) + The local IP and port to listen for + incoming http connections; set blank to + disable. + --access-control-allow-origin arg Specify the Access-Control-Allow-Origin + to be returned on each request + --access-control-allow-headers arg Specify the Access-Control-Allow-Header + s to be returned on each request + --access-control-max-age arg Specify the Access-Control-Max-Age to + be returned on each request. + --access-control-allow-credentials Specify if Access-Control-Allow-Credent + ials: true should be returned on each + request. + --max-body-size arg (=2097152) The maximum body size in bytes allowed + for incoming RPC requests + --http-max-bytes-in-flight-mb arg (=500) + Maximum size in megabytes http_plugin + should use for processing http + requests. -1 for unlimited. 429 error + response when exceeded. + --http-max-in-flight-requests arg (=-1) + Maximum number of requests http_plugin + should use for processing http + requests. 429 error response when + exceeded. + --http-max-response-time-ms arg (=30) Maximum time for processing a request, + -1 for unlimited + --verbose-http-errors Append the error log to HTTP responses + --http-validate-host arg (=1) If set to false, then any incoming + "Host" header is considered valid + --http-alias arg Additionaly acceptable values for the + "Host" header of incoming HTTP + requests, can be specified multiple + times. Includes http/s_server_address + by default. + --http-threads arg (=2) Number of worker threads in http thread + pool + --http-keep-alive arg (=1) If set to false, do not keep HTTP + connections alive, even if client + requests. +``` + +## Зависимости + +Нет diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/index.md new file mode 100644 index 000000000..b339d83bd --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/index.md @@ -0,0 +1,24 @@ +--- +content_title: Плагины nodeos +--- + +## Обзор + +Плагины расширяют базовую функциональность `nodeos`. Обязательные включают `chain_plugin`, `net_plugin` и `producer_plugin` — это отражает модульность `nodeos`. Остальные опциональны: удобные функции, но не обязательные для работы узла. + +Описание конкретных плагинов — в списке: + +* [`chain_api_plugin`](chain_api_plugin/index.md) +* [`chain_plugin`](chain_plugin/index.md) +* [`db_size_api_plugin`](db_size_api_plugin/index.md) +* [`http_plugin`](http_plugin/index.md) +* [`net_api_plugin`](net_api_plugin/index.md) +* [`net_plugin`](net_plugin/index.md) +* [`producer_plugin`](producer_plugin/index.md) +* [`state_history_plugin`](state_history_plugin/index.md) +* [`test_control_api_plugin`](test_control_api_plugin/index.md) +* [`test_control_plugin`](test_control_plugin/index.md) +* [`trace_api_plugin`](trace_api_plugin/index.md) + +!!! note "Модульность nodeos" + Плагины добавляют возможности по шагам. В отличие от динамически подключаемых модулей, плагины `nodeos` собираются на этапе компиляции. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_api_plugin/api-reference/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_api_plugin/api-reference/index.md new file mode 100644 index 000000000..0b7cdb46c --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_api_plugin/api-reference/index.md @@ -0,0 +1 @@ +[Справочник Net API](https://docs.eosnetwork.com/coopos-plugins/latest/net.api/) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_api_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_api_plugin/index.md new file mode 100644 index 000000000..cf1a95037 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_api_plugin/index.md @@ -0,0 +1,49 @@ +## Описание +Плагин `net_api_plugin` выставляет функции `net_plugin` через RPC API, которое ведёт `http_plugin`. Операторы узла могут управлять P2P-соединениями активного узла. + +У `net_api_plugin` четыре конечные точки RPC API: + +* connect +* disconnect +* connections +* status + +См. [документацию Net API](https://docs.eosnetwork.com/coopos-plugins/latest/net.api/). + +!!! warning "Осторожно" + Плагин открывает управление P2P-соединениями. Не рекомендуется включать его на публично доступном узле — возможна эксплуатация. + +## Использование + +```console +# config.ini +plugin = eosio::net_api_plugin +``` +```sh +# command-line +nodeos ... --plugin eosio::net_api_plugin +``` + +## Опции + +Нет + +## Зависимости + +* [`net_plugin`](../net_plugin/index.md) +* [`http_plugin`](../http_plugin/index.md) + +### Примеры загрузки зависимостей + +```console +# config.ini +plugin = eosio::net_plugin +[options] +plugin = eosio::http_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::net_plugin [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_plugin/index.md new file mode 100644 index 000000000..1b97ee304 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/net_plugin/index.md @@ -0,0 +1,107 @@ +## Описание + +Плагин `net_plugin` реализует аутентифицированный P2P-протокол для устойчивой синхронизации узлов. + +## Использование + +```console +# config.ini +plugin = eosio::net_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::net_plugin [options] +``` + +## Опции + +Задаются в командной строке `nodeos` и в `config.ini`: + +```console +Config Options for eosio::net_plugin: + --p2p-listen-endpoint arg (=0.0.0.0:9876) + The actual host:port used to listen for + incoming p2p connections. + --p2p-server-address arg An externally accessible host:port for + identifying this node. Defaults to + p2p-listen-endpoint. + --p2p-peer-address arg The public endpoint of a peer node to + connect to. Use multiple + p2p-peer-address options as needed to + compose a network. + Syntax: host:port[:|] + The optional 'trx' and 'blk' + indicates to node that only + transactions 'trx' or blocks 'blk' + should be sent. Examples: + p2p.example.org:9876 + p2p.trx.example.org:9876:trx + p2p.blk.example.org:9876:blk + + --p2p-max-nodes-per-host arg (=1) Maximum number of client nodes from any + single IP address + --p2p-accept-transactions arg (=1) Allow transactions received over p2p + network to be evaluated and relayed if + valid. + --agent-name arg (=EOS Test Agent) The name supplied to identify this node + amongst the peers. + --allowed-connection arg (=any) Can be 'any' or 'producers' or + 'specified' or 'none'. If 'specified', + peer-key must be specified at least + once. If only 'producers', peer-key is + not required. 'producers' and + 'specified' may be combined. + --peer-key arg Optional public key of peer allowed to + connect. May be used multiple times. + --peer-private-key arg Tuple of [PublicKey, WIF private key] + (may specify multiple times) + --max-clients arg (=25) Maximum number of clients from which + connections are accepted, use 0 for no + limit + --connection-cleanup-period arg (=30) number of seconds to wait before + cleaning up dead connections + --max-cleanup-time-msec arg (=10) max connection cleanup time per cleanup + call in milliseconds + --p2p-dedup-cache-expire-time-sec arg (=10) + Maximum time to track transaction for + duplicate optimization + --net-threads arg (=2) Number of worker threads in net_plugin + thread pool + --sync-fetch-span arg (=100) number of blocks to retrieve in a chunk + from any individual peer during + synchronization + --use-socket-read-watermark arg (=0) Enable experimental socket read + watermark optimization + --peer-log-format arg (=["${_name}" - ${_cid} ${_ip}:${_port}] ) + The string used to format peers when + logging messages about them. Variables + are escaped with ${}. + Available Variables: + _name self-reported name + + _cid assigned connection id + + _id self-reported ID (64 hex + characters) + + _sid first 8 characters of + _peer.id + + _ip remote IP address of peer + + _port remote port number of peer + + _lip local IP address connected to + peer + + _lport local port number connected + to peer + --p2p-keepalive-interval-ms arg (=10000) + peer heartbeat keepalive message + interval in milliseconds +``` + +## Зависимости + +Нет diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_api_plugin/api-reference/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_api_plugin/api-reference/index.md new file mode 100644 index 000000000..7cfca7a34 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_api_plugin/api-reference/index.md @@ -0,0 +1 @@ +[Справочник Producer API](https://docs.eosnetwork.com/coopos-plugins/latest/producer.api/) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_api_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_api_plugin/index.md new file mode 100644 index 000000000..d944ca6ac --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_api_plugin/index.md @@ -0,0 +1,42 @@ +## Описание + +Плагин `producer_api_plugin` выставляет ряд конечных точек [`producer_plugin`](../producer_plugin/index.md) через RPC API под управлением [`http_plugin`](../http_plugin/index.md). + +## Использование + +```console +# config.ini +plugin = eosio::producer_api_plugin +``` +```sh +# параметры запуска nodeos +nodeos ... --plugin eosio::producer_api_plugin +``` + +## Опции + +Нет + +## Зависимости + +* [`producer_plugin`](../producer_plugin/index.md) +* [`chain_plugin`](../chain_plugin/index.md) +* [`http_plugin`](../http_plugin/index.md) + +### Примеры загрузки зависимостей + +```console +# config.ini +plugin = eosio::producer_plugin +[options] +plugin = eosio::chain_plugin +[options] +plugin = eosio::http_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::producer_plugin [options] \ + --plugin eosio::chain_plugin [operations] [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_plugin/10_block-producing-explained.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_plugin/10_block-producing-explained.md new file mode 100644 index 000000000..e33c500f0 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_plugin/10_block-producing-explained.md @@ -0,0 +1,85 @@ +--- +content_title: Как устроен выпуск блоков +--- + +Для наглядности введём обозначения: + +* `r` = `producer_repetitions = 12` (жёстко задано) +* `m` = `max_block_cpu_usage` (консенсус в цепочке) +* `u` = `max_block_net_usage` (консенсус в цепочке) +* `t` = `block-time` +* `e` = `produce-block-offset-ms` (конфигурация nodeos) +* `w` = `block-time-interval = 500ms` (жёстко задано) +* `a` = `produce-block-early-amount = w - (w - (e / r)) = e / r ms` (насколько раньше выпускается каждый блок раунда) +* `l` = `produce block time = t - a` +* `p` = `окно выпуска блока = w - a` (доступное время стеновых часов на один блок) +* `c` = `billed_cpu_in_block = minimum(m, w - a)` +* `n` = `задержка сети TCP/IP` +* `h` = `время проверки заголовка блока, мс` + +Валидация на пирах при схожем железе/версии/конфиге занимает ≤ `m` + +**Пример: два BP и топология сети на схеме** + +``` + +------+ +------+ +------+ +------+ + -->| BP-A |---->| BP-A |------>| BP-B |---->| BP-B | + +------+ | Peer | | Peer | +------+ + +------+ +------+ +``` + +`BP-A` отправляет блок в момент `l`, а `BP-B` должен получить блок к моменту `t`, иначе блок отбрасывается. + +Если `BP-A` выпускает 12 блоков в моменты `b(lock) at t(ime) 1`, `bt 1.5`, `bt 2`, …, `bt 6.5`, то `BP-B` должен получить `bt 6.5` к моменту `6.5`, чтобы осталось `0.5` на выпуск `bt 7`. + +Время `bt 7` минус `0.5` совпадает со временем `bt 6.5`, то есть `t` — время последнего блока `BP-A`, с которого `BP-B` должен начать свой первый блок. + +Блок выпускается и отправляется, когда достигнут один из пределов: `m`, `u` или `p`. + +Начиная с COOPOS 4.0, блоки распространяются после проверки заголовка. Вместо того чтобы пирам `BP-A` и `BP-B` тратить время порядка `m` на полную валидацию и пересылку, проверяется заголовок за миллисекунды и блок пересылается дальше. + +Начиная с COOPOS 5.0, блоки в раунде стартуют сразу после завершения предыдущего. До 5.0 блоки всегда начинались с шагом `w`, и узел мог «спать» между блоками. В 5.0 паузы сдвинуты к концу раунда выпуска. + +## Пример 1: блок приходит на 110 мс раньше +* Нулевая сетевая задержка между всеми узлами. +* Блоки не упираются в `m`, время выпуска каждого — `w - a`. +* Время завершения блока и подписи — ноль. +* У `BP-A`: e = 120, n = 0 мс, h = 5 мс, a = 10 мс +* `BP-A` шлёт b1 в `t1-10 мс` ⇒ `BP-A-Peer` обрабатывает `h=5 мс`, шлёт в `t-5 мс` ⇒ `BP-B-Peer` обрабатывает `h=5 мс`, шлёт в `t-0 мс` ⇒ приходит в `BP-B` в `t`. +* `BP-A` начинает b2 в `t1-10 мс`, шлёт b2 в `t2-20 мс` ⇒ … приходит в `BP-B` в `t2-10 мс`. +* `BP-A` начинает b3 в `t2-20 мс`, … +* `BP-A` начинает b12 в `t11-110 мс`, шлёт b12 в `t12-120 мс` ⇒ … приходит в `BP-B` в `t12-110 мс` + +## Пример 2: блок приходит на 80 мс раньше +* Нулевая задержка между `BP-A` и `BP-A Peer` и между `BP-B Peer` и `BP-B`. +* 150 мс между `BP-A Peer` и `BP-B Peer`. +* Блоки не упираются в `m`, время выпуска — `w - a`. +* Время подписи — ноль. +* У `BP-A`: e = 240, n = 0/150 мс, h = 5 мс, a = 20 мс +* `BP-A` шлёт b1 в `t1-20 мс` ⇒ … приходит в `BP-B` в `t+140 мс`. +* `BP-A` начинает b2 в `t1-20 мс`, шлёт b2 в `t2-40 мс` ⇒ … приходит в `BP-B` в `t2+120 мс`. +* … +* b12 приходит в `BP-B` в `t12-80 мс` + +## Пример 3: блок опоздал на 16 мс и отброшен +* Нулевая задержка между `BP-A` и `BP-A Peer` и между `BP-B Peer` и `BP-B`. +* 200 мс между `BP-A Peer` и `BP-B Peer`. +* Блоки не упираются в `m`, время выпуска — `w - a`. +* Время подписи — ноль. +* У `BP-A`: e = 204, n = 0/200 мс, h = 10 мс, a = 17 мс +* Цепочка задержек даёт приход b1 в `BP-B` в `t+203 мс`. +* … +* b12 приходит в `BP-B` в `t12+16 мс` — слишком поздно, блок отбрасывается. + +## Пример 4: полные блоки выпускаются раньше +* Нулевая задержка между `BP-A` и `BP-A Peer` и между `BP-B Peer` и `BP-B`. +* 200 мс между `BP-A Peer` и `BP-B Peer`. +* Все блоки полные: в очереди достаточно неприменённых транзакций. +* Блок с транзакциями на 200 мс CPU по времени исполнения собирается за 225 мс (с учётом накладных расходов на выпуск блока). +* У `BP-A`: e = 120, m = 200 мс, n = 0/200 мс, h = 10 мс, a = 10 мс +* `BP-A` шлёт b1 в `t1-275 мс` ⇒ `BP-A-Peer` обрабатывает `h=10 мс`, шлёт в `t-265 мс` =(200 мс)=> `BP-B-Peer` обрабатывает `h=10 мс`, шлёт в `t-55 мс` ⇒ приходит в `BP-B` в `t-55 мс`. +* `BP-A` начинает b2 в `t1-275 мс`, шлёт b2 в `t2-550 мс (t1-50 мс)` ⇒ `BP-A-Peer` обрабатывает `h=10 мс`, шлёт в `t2-540 мс` =(200 мс)=> `BP-B-Peer` обрабатывает `h=10 мс`, шлёт в `t2-330 мс` ⇒ приходит в `BP-B` в `t2-330 мс`. +* `BP-A` начинает b3 в `t2-550 мс`, … +* `BP-A` начинает b12 в `t11-3025 мс`, шлёт b12 в `t12-3300 мс` ⇒ `BP-A-Peer` обрабатывает `h=10 мс`, шлёт в `t12-3290 мс` =(200 мс)=> `BP-B-Peer` обрабатывает `h=10 мс`, шлёт в `t12-3080 мс` ⇒ приходит в `BP-B` в `t12-3080 мс` + +На ретрансляторе с `wasm-runtime=eos-vm-jit` и `eos-vm-oc-enable` время валидации сокращается. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_plugin/index.md new file mode 100644 index 000000000..0156cb89c --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/producer_plugin/index.md @@ -0,0 +1,134 @@ + +## Описание + +Плагин `producer_plugin` подключает функции, необходимые узлу для выпуска блоков. + +!!! note + Для выпуска блоков нужна дополнительная настройка: [Настройка производящего узла](../../02_usage/02_node-setups/00_producing-node.md). + +## Использование + +```console +# config.ini +plugin = eosio::producer_plugin [options] +``` +```sh +# параметры запуска nodeos +nodeos ... --plugin eosio::producer_plugin [options] +``` + +## Опции + +Задаются в командной строке `nodeos` и в `config.ini`: + +```console +Config Options for eosio::producer_plugin: + -e [ --enable-stale-production ] Enable block production, even if the + chain is stale. + -x [ --pause-on-startup ] Start this node in a state where + production is paused + --max-transaction-time arg (=499) Setting this value (in milliseconds) + will restrict the allowed transaction + execution time to a value potentially + lower than the on-chain consensus + max_transaction_cpu_usage value. + --max-irreversible-block-age arg (=-1) + Limits the maximum age (in seconds) of + the DPOS Irreversible Block for a chain + this node will produce blocks on (use + negative value to indicate unlimited) + -p [ --producer-name ] arg ID of producer controlled by this node + (e.g. inita; may specify multiple + times) + --signature-provider arg (=EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV=KEY:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3) + Key=Value pairs in the form + = + Where: + is a string form of + a valid EOS public + key + + is a string in the + form + : + + is KEY, KEOSD, or SE + + KEY: is a string form of + a valid EOS + private key which + maps to the provided + public key + + KEOSD: is the URL where + keosd is available + and the approptiate + wallet(s) are + unlocked + --greylist-account arg account that can not access to extended + CPU/NET virtual resources + --greylist-limit arg (=1000) Limit (between 1 and 1000) on the + multiple that CPU/NET virtual resources + can extend during low usage (only + enforced subjectively; use 1000 to not + enforce any limit) + --produce-block-offset-ms arg (=450) The minimum time to reserve at the end + of a production round for blocks to + propagate to the next block producer. + --max-block-cpu-usage-threshold-us arg (=5000) + Threshold of CPU block production to + consider block full; when within + threshold of max-block-cpu-usage block + can be produced immediately + --max-block-net-usage-threshold-bytes arg (=1024) + Threshold of NET block production to + consider block full; when within + threshold of max-block-net-usage block + can be produced immediately + --subjective-cpu-leeway-us arg (=31000) + Time in microseconds allowed for a + transaction that starts with + insufficient CPU quota to complete and + cover its CPU usage. + --subjective-account-max-failures arg (=3) + Sets the maximum amount of failures + that are allowed for a given account + per block. + --subjective-account-decay-time-minutes arg (=1440) + Sets the time to return full subjective + cpu for accounts + --incoming-transaction-queue-size-mb arg (=1024) + Maximum size (in MiB) of the incoming + transaction queue. Exceeding this value + will subjectively drop transaction with + resource exhaustion. + --disable-subjective-account-billing arg + Account which is excluded from + subjective CPU billing + --disable-subjective-p2p-billing arg (=1) + Disable subjective CPU billing for P2P + transactions + --disable-subjective-api-billing arg (=1) + Disable subjective CPU billing for API + transactions + --snapshots-dir arg (="snapshots") the location of the snapshots directory + (absolute path or relative to + application data dir) +``` + +## Dependencies + +* [`chain_plugin`](../chain_plugin/index.md) + +### Load Dependency Examples + +```console +# config.ini +plugin = eosio::chain_plugin [operations] [options] +``` +```sh +# command-line +nodeos ... --plugin eosio::chain_plugin [operations] [options] +``` + +Подробнее о выпуске блоков — в [пояснении по производству блоков](10_block-producing-explained.md). diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/resource_monitor_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/resource_monitor_plugin/index.md new file mode 100644 index 000000000..f56c9fbc4 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/resource_monitor_plugin/index.md @@ -0,0 +1,52 @@ + +## Обзор + +Плагин `resource_monitor_plugin` следит за заполнением дискового пространства на машине, где работает `nodeos`. Каждые `resource-monitor-interval-seconds` секунд измеряется использование файловых систем, к которым относятся `data-dir`, `state-dir`, `blocks-log-dir`, `snapshots-dir`, `state-history-dir` и `trace-dir`. Если на любом из отслеживаемых томов занято на `5%` меньше порога `resource-monitor-space-threshold`, выводится предупреждение с путём и процентом занятости. Если порог превышен и не задан `resource-monitor-not-shutdown-on-threshold-exceeded`, `nodeos` корректно завершается; если флаг задан, `nodeos` периодически печатает предупреждения, пока занятость не опустится ниже порога. + +`resource_monitor_plugin` всегда загружен. + +## Использование + +```console +# config.ini +plugin = eosio::resource_monitor_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::resource_monitor_plugin [options] +``` + +## Параметры конфигурации + +Задаются в командной строке `nodeos` и в `config.ini`: + +```console +Config Options for eosio::resource_monitor_plugin: + --resource-monitor-interval-seconds arg (=2) + Time in seconds between two consecutive + checks of resource usage. Should be + between 1 and 300 + --resource-monitor-space-threshold arg (=90) + Threshold in terms of percentage of + used space vs total space. If used + space is above (threshold - 5%), a + warning is generated. Unless + resource-monitor-not-shutdown-on-thresh + old-exceeded is enabled, a graceful + shutdown is initiated if used space is + above the threshold. The value should + be between 6 and 99 + --resource-monitor-not-shutdown-on-threshold-exceeded + Used to indicate nodeos will not + shutdown when threshold is exceeded. + --resource-monitor-warning-interval arg (=30) + Number of resource monitor intervals + between two consecutive warnings when + the threshold is hit. Should be between + 1 and 450 +``` + +## Зависимости плагина + +* Нет diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/10_how-to-fast-start-without-old-history.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/10_how-to-fast-start-without-old-history.md new file mode 100644 index 000000000..5adbecbda --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/10_how-to-fast-start-without-old-history.md @@ -0,0 +1,40 @@ +--- +content_title: Быстрый старт без прежней истории +--- + +Эта схема подходит, если нужно **зафиксировать текущее состояние цепочки** и дальше вести **State History** только «вперёд», без полной локальной старой истории. + +## Перед началом + +* [Установлен COOPOS](../../../00_install/index.md). +* Знакомство с [использованием nodeos](../../02_usage/index.md). +* Знакомство с [state_history_plugin](../../03_plugins/state_history_plugin/index.md). + +## Шаги + +1. Подготовьте: + * переносимый снимок (`data/snapshots/snapshot-xxxxxxx.bin`) + * по желанию: `blocks.log`, включающий блок, на котором снят снимок + +2. Убедитесь, что нет каталога `data/state` + +3. Запустите `nodeos` с `--snapshot` и опциями из описания [`state_history_plugin`](index.md). + +4. В логе найдите `Placing initial state in block n` — `n` это номер стартового блока. + +5. Если используете filler БД, запустите его с `--fpg-create` (PostgreSQL), `--fill-skip-to n` и `--fill-trim`. Подставьте `n` из шага 4. + +6. Не останавливайте `nodeos`, пока он не получит хотя бы один блок из сети — иначе перезапуск может быть невозможен. + +## Замечания + +Нет блоков из сети — подключите `net_api_plugin` и переподключите пиры: `cleos net disconnect` / `cleos net connect`. + +!!! warning "Осторожно с `net_api_plugin`" + Закройте файрволом доступ к `http-server-address` или задайте `localhost:8888`, чтобы отключить удалённый доступ. + +!!! note + После этого при перезапуске filler используйте `--fill-trim`. `--fpg-create` и `--fill-skip-to` — только при первом запуске. + +!!! note + На крупных цепочках первая дельта может быть слишком большой для процессов JavaScript; 64-битные C++ процессы справляются. В filler’ах `fill-pg` и `fill-lmdb` большая запись дробится на меньшие при заполнении БД. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/20_how-to-replay-or-resync-with-full-history.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/20_how-to-replay-or-resync-with-full-history.md new file mode 100644 index 000000000..2afc6ef15 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/20_how-to-replay-or-resync-with-full-history.md @@ -0,0 +1,17 @@ +--- +content_title: Реплей или ресинхронизация с полной историей +--- + +Полная история состояния на **nodeos** COOPOS: реплей или догонка с [`state_history_plugin`](index.md) от `blocks.log` или `--genesis-json`, чтобы с нуля записывалась вся цепочка в state history. + +## Перед началом + +* [COOPOS](../../../00_install/index.md), [nodeos](../../02_usage/index.md), [state_history_plugin](../../03_plugins/state_history_plugin/index.md). + +## Шаги + +1. Получите `blocks.log` и положите в `data/blocks`, либо возьмите файл генезиса и укажите `--genesis-json` + +2. Убедитесь, что нет `data/state`, либо используйте `--replay-blockchain` + +3. Запустите `nodeos` с опциями из [`state_history_plugin`](index.md) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/30_how-to-create-snapshot-with-full-history.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/30_how-to-create-snapshot-with-full-history.md new file mode 100644 index 000000000..9ade84823 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/30_how-to-create-snapshot-with-full-history.md @@ -0,0 +1,37 @@ +--- +content_title: Создание снимка с полной историей состояния +--- + +На узле **nodeos** COOPOS, где уже крутится полная state history с генезиса, снимается переносимый snapshot и копируются согласованные файлы `data/state-history` (и при необходимости `blocks.log`) для переноса или бэкапа. + +## Перед началом + +* [COOPOS](../../../00_install/index.md), [nodeos](../../02_usage/index.md), [state_history_plugin](../../03_plugins/state_history_plugin/index.md). + +## Шаги + +1. Включите `producer_api_plugin` на узле с полной state history. + +!!! warning "Осторожно с `producer_api_plugin`" + Закройте файрволом доступ к `http-server-address` или укажите `localhost:8888`. + +2. Создайте переносимый снимок: +```sh +curl http://127.0.0.1:8888/v1/producer/create_snapshot | json_pp +``` + +3. Дождитесь нескольких блоков после завершения снимка: в файлах state history должно быть минимум на один блок больше, чем в переносимом снимке, а в `blocks.log` — блок после того, как он стал необратимым. + +!!! note "Примечание" + Если блок из снимка вытеснен форком, снимок недействителен — повторите процедуру. + +4. Остановите `nodeos`. + +5. Сохраните копии: + * нового переносимого снимка (`data/snapshots/snapshot-xxxxxxx.bin`) + * содержимого `data/state-history`: + * `chain_state_history.log` + * `trace_history.log` + * `chain_state_history.index` — по желанию; без него восстановление дольше + * `trace_history.index` — по желанию; без него восстановление дольше + * по желанию: `data/blocks` без `data/blocks/reversible` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/40_how-to-restore-snapshot-with-full-history.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/40_how-to-restore-snapshot-with-full-history.md new file mode 100644 index 000000000..d160b5176 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/40_how-to-restore-snapshot-with-full-history.md @@ -0,0 +1,29 @@ +--- +content_title: Восстановление снимка с полной историей состояния +--- + +**nodeos** COOPOS поднимается из переносимого снимка вместе с каталогом state history, чтобы снова синхронизироваться с сетью и продолжить отдачу полной истории через [`state_history_plugin`](index.md). + +## Перед началом + +* [COOPOS](../../../00_install/index.md), [nodeos](../../02_usage/index.md), [state_history_plugin](../../03_plugins/state_history_plugin/index.md). + +## Шаги + +1. Подготовьте: + * переносимый снимок (`data/snapshots/snapshot-xxxxxxx.bin`) + * содержимое `data/state-history` + * по желанию: `blocks.log`, покрывающий блок снимка; без `data/blocks/reversible` + +2. Убедитесь, что нет `data/state` + +3. Запустите `nodeos` с `--snapshot` и опциями [`state_history_plugin`](index.md). + +4. Не останавливайте `nodeos`, пока не получите хотя бы один блок из сети. + +## Замечания + +Блоки не идут — `net_api_plugin` и `cleos net disconnect` / `cleos net connect`. + +!!! warning "Осторожно с `net_api_plugin`" + Закройте файрволом доступ к `http-server-address` или укажите `localhost:8888`. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/index.md new file mode 100644 index 000000000..9a783e0fa --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/state_history_plugin/index.md @@ -0,0 +1,59 @@ + +## Описание + +Плагин `state_history_plugin` сохраняет исторические данные о состоянии блокчейна. Получает данные от других узлов и кэширует их в файлах. Слушает сокет для подключения приложений и отдаёт данные согласно опциям, заданным при запуске `nodeos`. + +## Использование + +```console +# config.ini +plugin = eosio::state_history_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::state_history_plugin [operations] [options] +``` + +## Операции (только CLI) + +Только командная строка `nodeos`: + +```console +Command Line Options for eosio::state_history_plugin: + + --delete-state-history clear state history files +``` + +## Опции + +Командная строка `nodeos` и `config.ini`: + +```console +Config Options for eosio::state_history_plugin: + --state-history-dir arg (="state-history") + the location of the state-history + directory (absolute path or relative to + application data dir) + --trace-history enable trace history + --chain-state-history enable chain state history + --state-history-endpoint arg (=127.0.0.1:8080) + the endpoint upon which to listen for + incoming connections. Caution: only + expose this port to your internal + network. + --state-history-unix-socket-path arg the path (relative to data-dir) to + create a unix socket upon which to + listen for incoming connections. + --trace-history-debug-mode enable debug mode for trace history + --state-history-log-retain-blocks arg if set, periodically prune the state + history files to store only configured + number of most recent blocks +``` + +## Практические руководства + +* [Быстрый старт без старой истории на существующих цепочках](10_how-to-fast-start-without-old-history.md) +* [Реплей или ресинхронизация с полной историей](20_how-to-replay-or-resync-with-full-history.md) +* [Переносимый снимок с полной state history](30_how-to-create-snapshot-with-full-history.md) +* [Восстановление переносимого снимка с полной state history](40_how-to-restore-snapshot-with-full-history.md) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_api_plugin/api-reference/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_api_plugin/api-reference/index.md new file mode 100644 index 000000000..65b5b08a9 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_api_plugin/api-reference/index.md @@ -0,0 +1 @@ + diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_api_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_api_plugin/index.md new file mode 100644 index 000000000..1b9a30665 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_api_plugin/index.md @@ -0,0 +1,46 @@ + +## Описание + +Плагин `test_control_api_plugin` отправляет управляющее сообщение в [test_control_plugin](../test_control_plugin/index.md), чтобы завершить экземпляр `nodeos` на заданном блоке. Для тестирования. + +## Использование + +```console +# config.ini +plugin = eosio::test_control_api_plugin +``` +```sh +# command-line +nodeos ... --plugin eosio::test_control_api_plugin +``` + +## Опции + +Нет + +## Пример использования + +```sh +curl %s/v1/test_control/kill_node_on_producer -d '{ \"producer\":\"%s\", \"where_in_sequence\":%d, \"based_on_lib\":\"%s\" }' -X POST -H \"Content-Type: application/json\"" % +``` + +## Зависимости + +* [`test_control_plugin`](../test_control_plugin/index.md) +* [`chain_plugin`](../chain_plugin/index.md) +* [`http_plugin`](../http_plugin/index.md) + +### Примеры загрузки зависимостей + +```console +# config.ini +plugin = eosio::chain_plugin +[options] +plugin = eosio::http_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::chain_plugin [operations] [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_plugin/index.md new file mode 100644 index 000000000..48969a765 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/test_control_plugin/index.md @@ -0,0 +1,37 @@ + +## Описание + +Плагин `test_control_plugin` инициирует корректное завершение при достижении заданного блока в последовательности блоков конкретного продюсера. Можно завершаться по **head block** или по **последнему необратимому блоку**. + +Предназначен для тестов, чтобы точно зафиксировать момент остановки экземпляра `nodeos`. + +## Использование + +```console +# config.ini +plugin = eosio::test_control_plugin +``` +```sh +# command-line +nodeos ... --plugin eosio::test_control_plugin +``` + +## Опции + +Нет + +## Зависимости + +* [`chain_plugin`](../chain_plugin/index.md) + +### Примеры загрузки зависимостей + +```console +# config.ini +plugin = eosio::chain_plugin +[options] +``` +```sh +# command-line +nodeos ... --plugin eosio::chain_plugin [operations] [options] +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/api-reference/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/api-reference/index.md new file mode 100644 index 000000000..58a6d3f3b --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/api-reference/index.md @@ -0,0 +1 @@ +[Справочник Trace API](https://docs.eosnetwork.com/coopos-plugins/latest/trace.api/) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/clog-format.png b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/clog-format.png new file mode 100644 index 000000000..3631774ba Binary files /dev/null and b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/clog-format.png differ diff --git a/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/index.md b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/index.md new file mode 100644 index 000000000..1ac549063 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/03_plugins/trace_api_plugin/index.md @@ -0,0 +1,197 @@ + +## Обзор + +Плагин `trace_api_plugin` даёт долговременное API «для потребителей» данных: завершённые (retired) действия и связанные метаданные по заданному блоку. Сериализованные трассировки блоков пишутся на диск и затем отдаются по HTTP RPC. Формальное описание интерфейса — в [справочнике Trace API](api-reference/index.md). + +## Назначение + +При интеграции обозревателей блоков, бирж и других приложений с блокчейном COOPOS часто нужна полная лента действий, обработанных цепочкой, включая порождённые смарт-контрактами и отложенные транзакции. Эту задачу закрывает `trace_api_plugin`: + +* полная лента завершённых действий и метаданных +* долговременное API для выборки блоков +* управляемые затраты ресурсов на узлах COOPOS + +Важная цель — упростить обслуживание ресурсов узла (ФС, диск, память). Это отличается от `history_plugin` с гибкой фильтрацией и запросами и от `state_history_plugin` с бинарным потоковым доступом к структурным данным цепочки, действиям и дельтам состояния. + +## Использование + +```console +# config.ini +plugin = eosio::trace_api_plugin +[options] +``` +```sh +# командная строка +nodeos ... --plugin eosio::trace_api_plugin [options] +``` + +## Параметры конфигурации + +Задаются в командной строке `nodeos` и в `config.ini`: + +```console +Config Options for eosio::trace_api_plugin: + + --trace-dir arg (="traces") the location of the trace directory + (absolute path or relative to + application data dir) + --trace-slice-stride arg (=10000) the number of blocks each "slice" of + trace data will contain on the + filesystem + --trace-minimum-irreversible-history-blocks arg (=-1) + Number of blocks to ensure are kept + past LIB for retrieval before "slice" + files can be automatically removed. + A value of -1 indicates that automatic + removal of "slice" files will be turned + off. + --trace-minimum-uncompressed-irreversible-history-blocks arg (=-1) + Number of blocks to ensure are + uncompressed past LIB. Compressed + "slice" files are still accessible but + may carry a performance loss on + retrieval + A value of -1 indicates that automatic + compression of "slice" files will be + turned off. + --trace-rpc-abi arg ABIs used when decoding trace RPC + responses. + There must be at least one ABI + specified OR the flag trace-no-abis + must be used. + ABIs are specified as "Key=Value" pairs + in the form = + Where can be: + an absolute path to a file + containing a valid JSON-encoded ABI + a relative path from `data-dir` to a + file containing a valid JSON-encoded + ABI + + --trace-no-abis Use to indicate that the RPC responses + will not use ABIs. + Failure to specify this option when + there are no trace-rpc-abi + configuations will result in an Error. + This option is mutually exclusive with + trace-rpc-api +``` + +## Зависимости + +* [`chain_plugin`](../chain_plugin/index.md) +* [`http_plugin`](../http_plugin/index.md) + +### Примеры загрузки зависимостей + +Если плагины не указаны в CLI или `config.ini`, подключаются со значениями по умолчанию: + +```console +# config.ini +plugin = eosio::chain_plugin +[options] +plugin = eosio::http_plugin +[options] +``` +```sh +# командная строка +nodeos ... --plugin eosio::chain_plugin [options] \ + --plugin eosio::http_plugin [options] +``` + +## Пример конфигурации + +Пример запуска `nodeos` с `trace_api_plugin` для трассировки эталонных контрактов COOPOS: + +```sh +nodeos --data-dir data_dir --config-dir config_dir --trace-dir traces_dir +--plugin eosio::trace_api_plugin +--trace-rpc-abi=eosio=abis/eosio.abi +--trace-rpc-abi=eosio.token=abis/eosio.token.abi +--trace-rpc-abi=eosio.msig=abis/eosio.msig.abi +--trace-rpc-abi=eosio.wrap=abis/eosio.wrap.abi +``` + +## Определения + +Кратко о *слайсах* (slices), содержимом *trace log* и формате *clog*. Это помогает эффективно настраивать опции `trace_api_plugin`. + +### Слайсы + +Для `trace_api_plugin` *slice* — это все релевантные данные трассировки между начальной высотой блока (включительно) и конечной (не включая). Например, слайс 0–10 000 — блоки с номерами ≥ 0 и < 10 000. В каталоге трассировок лежит набор слайсов. Каждый слайс состоит из журнала *trace data* и журнала метаданных *trace index*: + + * `trace_-.log` + * `trace_index_-.log` + +`` и `` — начальный и конечный номер блока слайса, дополненные ведущими нулями до ширины stride. Если старт — 5, конец — 15, stride — 10, то `` = `0000000005`, `` = `0000000015`. + +#### trace_<S>-<E>.log + +Журнал данных трассировки только дописывается; в нём бинарные сериализованные данные блока. Содержимое включает трассировки транзакций и действий для ответов RPC с учётом ABI по действиям. Поддерживаются типы блоков: + + * `block_trace_v0` + * `block_trace_v1` + +В начале — заголовок с версией формата. `block_trace_v0`: ID блока, номер, ID предыдущего, время производства, подписавший продюсер, данные трассировки. `block_trace_v1` добавляет корни Меркла для списков транзакций и действий и счётчик расписания продюсеров с генезиса. + +В журнал могут попадать блоки, вытесненные форком — это нормально. Следующая запись имеет номер на 1 больше предыдущей или тот же/меньше из‑за форка. Каждой записи трассировки соответствует запись в индексном файле слайса. Блоки с форков можно уменьшить, запуская **nodeos** в `read-mode=irreversible`. + +#### trace_index_<S>-<E>.log + +Индексный (метаданные) журнал только дописывается; в нём последовательность бинарно сериализованных типов. Сейчас поддерживаются: + + * `block_entry_v0` + * `lib_entry_v0` + +В начале — заголовок с версией. `block_entry_v0`: ID и номер блока и смещение к записи в журнале данных; по нему находят смещения `block_trace_v0` и `block_trace_v1`. `lib_entry_v0`: последний известный LIB. Модуль чтения использует LIB, чтобы сообщать пользователю статус необратимости. + +### Формат clog + +Сжатые журналы трассировок имеют расширение `.clog` (см. [сжатие журналов](#compression-of-log-files)). Это обобщённый сжатый файл с индексом точек распаковки в конце. Схема: + +![](clog-format.png "clog format") + +Данные сжимаются raw zlib с полными flush *seek points* через равные интервалы. Распаковщик может начать с любой *seek point* без чтения предыдущих данных; проход через seek point внутри потока тоже допустим. + +!!! note "Экономия места под трассировки" + Сжатие может сократить рост каталога трассировок примерно в 20 раз. Например, при 512 seek points на тестовых данных публичной сети EOS рост каталога с полными данными падает с ~50 ГиБ/сут до ~2.5 ГиБ/сут. Из‑за избыточности содержимого сжатие сопоставимо с `gzip -9`. Распакованные данные сразу доступны через [Trace RPC API](api-reference/index.md) без деградации сервиса. + +#### Роль seek points + +При сжатии индекс точек запоминает соответствие смещений в несжатом и сжатом виде, чтобы по несжатому смещению найти ближайшую предшествующую seek point. Это сильно ускоряет позиционирование в конце длинного потока. + +## Автообслуживание + +Цель `trace_api_plugin` — уменьшить ручное обслуживание ФС: автоматически удалять старые журналы трассировок и сжимать их. + +### Удаление журналов + +Для автоматического удаления старых файлов, созданных `trace_api_plugin`: + +```sh + --trace-minimum-irreversible-history-blocks N (=-1) +``` + +Если `N` ≥ 0, на диске остаются только `N` блоков до текущего LIB; файлы соответствующих более старых диапазонов помечаются на удаление. + +### Сжатие журналов {#compression-of-log-files} + +Оптимизация места — отдельная опция: + +```sh + --trace-minimum-uncompressed-irreversible-history-blocks N (=-1) +``` + +При `N` ≥ 0 фоновый поток сжимает необратимые участки журналов; последние `N` необратимых блоков после LIB остаются несжатыми. + +!!! note "Утилита Trace API" + Журналы можно сжимать вручную утилитой [trace_api_util](../../../10_utilities/trace_api_util.md). + +Если опций `trace-minimum-irreversible-history-blocks` и `trace-minimum-uncompressed-irreversible-history-blocks` недостаточно, может понадобиться периодическое ручное обслуживание или внешний планировщик. + +## Ручное обслуживание + +Опция `trace-dir` задаёт каталог файлов трассировки `trace_api_plugin`. После прохождения LIB за пределы слайса файлы стабильны и их можно удалять для освобождения места. Развёрнутая система COOPOS переносит внепроцессное удаление любых файлов в этом каталоге — независимо от того, обращается ли к ним запущенный **nodeos**. Данные, которые формально должны быть доступны, но удалены вручную, дают HTTP 404 на соответствующих endpoint’ах. + +!!! note "Для операторов узлов" + Срок хранения истории на узле можно полностью контролировать через `trace-api-plugin`, опции `trace-minimum-irreversible-history-blocks` и `trace-minimum-uncompressed-irreversible-history-blocks` и внешние менеджеры дискового пространства. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-generate-a-blocks.log.md b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-generate-a-blocks.log.md new file mode 100644 index 000000000..f9b68f3b4 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-generate-a-blocks.log.md @@ -0,0 +1,8 @@ +--- +content_title: Как сформировать файл blocks.log +--- + +В COOPOS **nodeos** пишет необратимые блоки в `blocks.log` под каталогом данных (по умолчанию `data/blocks`) — локальная неизменяемая копия цепочки на этом узле. Другой каталог задаётся `-d` / `--data-dir`. + +!!! note "Другие файлы `blocks.log`" + `blocks.log` можно также получить у сторонних поставщиков. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-generate-a-snapshot.md b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-generate-a-snapshot.md new file mode 100644 index 000000000..da8ca9140 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-generate-a-snapshot.md @@ -0,0 +1,17 @@ +--- +content_title: Как создать снимок +--- + +У запущенного **nodeos** COOPOS снимок создаётся вызовом `create_snapshot` у `producer_api_plugin`. Файл попадает в `data/snapshots` относительно `--data-dir`; имя обычно вида `snapshot-.bin`. + +!!! note "Каталог снимков" + Каталог данных задаёт `-d` / `--data-dir`; внутри него — `data/snapshots`. + +Если `nodeos` слушает локально, запрос на создание снимка: + +```sh +curl -X POST http://127.0.0.1:8888/v1/producer/create_snapshot +``` + +!!! note "Журнал блоков отдельно" + Готовый `blocks.log` иногда берут у сторонних поставщиков — для реплея или догонки без полной синхронизации. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-replay-from-a-blocks.log.md b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-replay-from-a-blocks.log.md new file mode 100644 index 000000000..85657bb93 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-replay-from-a-blocks.log.md @@ -0,0 +1,23 @@ +--- +content_title: Как воспроизвести цепочку из blocks.log +--- + +Скопируйте нужный `blocks.log` в `data/blocks`, при необходимости сохраните старые файлы, удалите `blocks.index`, `forkdb.dat`, `shared_memory.bin` и `shared_memory.meta`. + +Каталог | Файл | Действие +----------------------- | ------------------ | ------ +data/blocks | blocks.index | удалить +data/blocks | blocks.log | заменить нужным `blocks.log` +data/blocks/reversible | forkdb.dat | удалить +data/blocks/reversible | shared_memory.bin | удалить +data/blocks/reversible | shared_memory.meta | удалить + +Каталог блоков задаётся в `config.ini` как `blocks-dir = "blocks"` или опцией `--blocks-dir`. + +```sh +nodeos --replay-blockchain \ + --plugin eosio::producer_plugin \ + --plugin eosio::chain_api_plugin \ + --plugin eosio::http_plugin \ + >> nodeos.log 2>&1 & +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-replay-from-a-snapshot.md b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-replay-from-a-snapshot.md new file mode 100644 index 000000000..02a876856 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/how-to-replay-from-a-snapshot.md @@ -0,0 +1,30 @@ +--- +content_title: Как воспроизвести цепочку из снимка +--- + +Получив валидный файл снимка, скопируйте его в `data/snapshots`, при необходимости сделайте резервную копию и удалите существующее содержимое каталога данных. + +Расположение | Имя | Действие +----------------- | -------------------------- | ------------ +data/snapshots | `.bin` | положить сюда снимок для реплея +data/ | * | удалить + +В `config.ini` можно задать `snapshots-dir = "snapshots"` или использовать `--snapshots-dir` в командной строке; `--snapshot` указывает имя файла снимка для восстановления. + +```sh +nodeos --snapshot yoursnapshot.name \ + --plugin eosio::producer_plugin \ + --plugin eosio::chain_api_plugin \ + --plugin eosio::http_plugin \ + >> nodeos.log 2>&1 & +``` + +При старте со снимка рекомендуется убрать старые данные; если при этом есть `blocks.log`, он *должен* содержать блоки как минимум до блока снимка и *может* содержать последующие блоки — они применятся при запуске. Если `blocks.log` есть, но не покрывает блок снимка или последующие блоки неконсистентны, при реплее со снимка будет исключение. Также применяются доступные обратимые блоки. + +blocks.log | снимок | результат +------------------------ | --------------------------- | ------ +нет | для необратимого блока 2000 | ок +блоки 1–1999 | для необратимого блока 2000 | исключение +блоки 1–2001 | для необратимого блока 2000 | ок — состояние из снимка и применение блока 2001 + +При подъёме узла из снимка нельзя передавать `nodeos` аргументы `--genesis-json` или `--genesis-timestamp` — генезис берётся из снимка. Если `blocks.log` уже есть, его генезис сверяется с данными снимка; при несовпадении реплей завершится ошибкой (проверка, что журнал и снимок относятся к одной цепочке). diff --git a/docs/documentation/blockchain/coopos/01_nodeos/04_replays/index.md b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/index.md new file mode 100644 index 000000000..c9280d763 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/04_replays/index.md @@ -0,0 +1,51 @@ +--- +content_title: Реплеи nodeos +--- + +У `nodeos` есть варианты воспроизведения блоков цепочки. Это полезно, например, если узел скачал `blocks.log` (быстрее, чем полная синхронизация по P2P) и нужно догнать сеть, или если нужно состояние цепочки в конкретные моменты времени. + +Воспроизведение возможно двумя способами: + +- Из файла **`blocks.log`**: +В `blocks.log` хранятся все необратимые транзакции. Каждый `nodeos` дописывает необратимые блоки в `blocks.log` в каталоге `data/blocks` относительно данных `nodeos`. Реплей по `blocks.log` пересоздаёт локально всю историю без лишней нагрузки на сеть. + +- Из **файла снимка (snapshot)**: +Снимок создаётся с работающего `nodeos` и содержит состояние цепочки на блоке, с которого он снят. Рекомендуется использовать снимки с необратимых блоков. Реплей со снимка быстро поднимает `nodeos` с корректным состоянием на заданном номере блока, но без полной истории транзакций до этого блока. Далее узел работает в обычном режиме. + +## Практические инструкции + +* [Как сформировать журнал блоков](how-to-generate-a-blocks.log.md) +* [Как создать снимок](how-to-generate-a-snapshot.md) +* [Как воспроизвести цепочку из журнала блоков](how-to-replay-from-a-blocks.log.md) +* [Как воспроизвести цепочку из снимка](../04_replays/how-to-replay-from-a-snapshot.md) + +## Опции, связанные со снимками и реплеем + +Команда `nodeos --help` выводит все опции. Касающиеся снимков и реплея: + + - **`--force-all-checks`** +Если источник `blocks.log` не доверен, при первом реплее можно запустить `nodeos` с `--replay-blockchain --force-all-checks`, чтобы не пропускать проверки блоков. + + - **`--disable-replay-opts`** +По умолчанию при реплее `nodeos` не строит стек дельт состояния (он нужен для отката состояния по обратимым блокам) — это ускоряет реплей. Данная опция отключает эту оптимизацию. Для `state_history_plugin` она обязательна. + + - **`--replay-blockchain`** +Очистить состояние цепочки и воспроизвести все блоки из `blocks.log` в каталоге `data/blocks`. + + - **`--hard-replay-blockchain`** +Сделать резервную копию текущего `blocks.log`, очистить состояние и воспроизвести блоки из журнала. Предполагается, что в резервной копии `blocks.log` могут быть повреждённые блоки: `nodeos` воспроизводит максимум возможного из резервной копи, а при первом повреждённом блоке досинхронизируется по P2P. + + - **`--delete-all-blocks`** +Очистить локальное состояние цепочки и локальный `blocks.log`. Для последующей синхронизации по P2P нужен корректный `genesis.json`. Опция не рекомендуется. + + - **`--truncate-at-block`** +Аргумент по умолчанию `=0`; если задан ненулевой, при реплее воспроизведение останавливается на указанном номере блока. Работает только вместе с `--hard-replay-blockchain`. Локальный процесс `nodeos` будет иметь состояние на этом блоке. Удобно для проверок в тестах; для узла, синхронизированного с сетью, не предназначено. + + - **`--snapshot`** +Путь к файлу снимка для восстановления состояния без реплея `blocks.log`. Полной истории транзакций до снимка у экземпляра `nodeos` не будет. + + - **`--snapshots-dir`** +Каталог файлов снимков (абсолютный путь или относительно каталога данных приложения). + + - **`--blocks-dir`** +Каталог с `blocks.log` (абсолютный путь или относительно каталога данных приложения). diff --git a/docs/documentation/blockchain/coopos/01_nodeos/05_rpc_apis/index.md b/docs/documentation/blockchain/coopos/01_nodeos/05_rpc_apis/index.md new file mode 100644 index 000000000..b587cca80 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/05_rpc_apis/index.md @@ -0,0 +1,11 @@ +--- +content_title: Удалённые вызовы (RPC API) +link_text: RPC API +--- + +* [Справочник Chain API](../03_plugins/chain_api_plugin/api-reference/index.md) +* [Справочник DB Size API](../03_plugins/db_size_api_plugin/api-reference/index.md) +* [Справочник Net API](../03_plugins/net_api_plugin/api-reference/index.md) +* [Справочник Producer API](../03_plugins/producer_api_plugin/api-reference/index.md) +* [Справочник Test Control API](../03_plugins/test_control_api_plugin/api-reference/index.md) +* [Справочник Trace API](../03_plugins/trace_api_plugin/api-reference/index.md) diff --git a/docs/documentation/blockchain/coopos/01_nodeos/06_logging/00_setup-logging.json.md b/docs/documentation/blockchain/coopos/01_nodeos/06_logging/00_setup-logging.json.md new file mode 100644 index 000000000..32b2cf1ef --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/06_logging/00_setup-logging.json.md @@ -0,0 +1,16 @@ +--- +content_title: Настройка logging.json +--- + +Файл `logging.json` обычно лежит в каталоге `--config-dir` рядом с `config.ini`. Явный путь задаётся опциями `-l` или `--logconf` при запуске `nodeos`. + +```sh +nodeos --help +``` +```console +... +Application Command Line Options: +... +--config-dir arg Directory containing configuration files such as config.ini +-l [ --logconf ] arg (=logging.json) Logging configuration file name/path for library users +``` diff --git a/docs/documentation/blockchain/coopos/01_nodeos/06_logging/01_logging-levels.md b/docs/documentation/blockchain/coopos/01_nodeos/06_logging/01_logging-levels.md new file mode 100644 index 000000000..cd95c7d68 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/06_logging/01_logging-levels.md @@ -0,0 +1,87 @@ +--- +content_title: Уровни логирования +--- + +Доступны шесть уровней: +- all +- debug +- info +- warn +- error +- off + +Пример `logging.json`: + +``` +{ + "includes": [], + "appenders": [{ + "name": "consoleout", + "type": "console", + "args": { + "stream": "std_out", + "level_colors": [{ + "level": "debug", + "color": "green" + },{ + "level": "warn", + "color": "brown" + },{ + "level": "error", + "color": "red" + } + ] + }, + "enabled": true + },{ + "name": "net", + "type": "gelf", + "args": { + "endpoint": "10.10.10.10", + "host": "test" + }, + "enabled": true + } + ], + "loggers": [{ + "name": "default", + "level": "info", + "enabled": true, + "additivity": false, + "appenders": [ + "consoleout", + "net" + ] + },{ + "name": "net_plugin_impl", + "level": "debug", + "enabled": true, + "additivity": false, + "appenders": [ + "net" + ] + } + ] +} +``` + +## Смысл уровней + +* `error` — события, вероятно требующие вмешательства оператора. + - Уровень `error` стоит оставлять для неожиданных ситуаций или тех, где нужен человек. + - Также для явных ошибок ПО: невозможные значения перечислений, выход за границы массива, нулевые указатели и т.п., часто ведущие к исключению. + - *Замечание*: сейчас много сообщений с уровнем `error` логичнее отнести к `warn` — например, в `net_plugin_impl` для плохих сетевых соединений, которые обрабатываются штатно; такие случаи лучше перевести на `warn` или `info`. +* `warn` — неожиданное, но восстановимое. + - Обычно не требует немедленного вмешательства, но частые `warn` могут сигнализировать о действиях оператора. + - `warn` не стоит использовать просто как «информацию» — это сигнал обратить внимание, без обязательной тревоги. +* `info` (по умолчанию) — полезная оператору информация. + - Прогресс и полезные данные; стараются не засыпать логом: например, не логировать каждую транзакцию на `info`. + - Для прогресса логируют через интервалы, например каждые 1000 транзакций. +* `debug` — детали при включённом нетипичном логировании. + - Вопрос: полезно ли это оператору, смотрящему лог. Объём как у `info`: не раздувать. + - Включение `debug` должно прояснять поведение без лавины строк. + - `debug` не заменяет трассировку; для неё — `all` (см. ниже). + - Как и для `info`, не логировать каждую транзакцию на `debug`; для транзакций есть отдельные логгеры: `transaction`, `transaction_trace_failure`, `transaction_trace_success`, `transaction_failure_tracing`, `transaction_success_tracing`, `transient_trx_success_tracing`, `transient_trx_failure_tracing`. +* `all` (trace) — то, что при `debug` засыпало бы лог. + - Трассировочный уровень; поддержан частично. + - *Замечание*: в будущем другая библиотека логирования может дать лучшую трассировку; текущая среда не рассчитана на огромный объём trace-вывода. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/06_logging/index.md b/docs/documentation/blockchain/coopos/01_nodeos/06_logging/index.md new file mode 100644 index 000000000..3ebeb5794 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/06_logging/index.md @@ -0,0 +1,110 @@ +--- +content_title: Логирование nodeos +--- + +Логирование `nodeos` задаётся файлом `logging.json`. Опции CLI при запуске `nodeos` позволяют [настроить `logging.json`](00_setup-logging.json.md). В конфигурации задаются [аппендеры](#appenders), привязка к [логгерам](#loggers) и [уровни логирования](01_logging-levels.md). + +## Аппендеры {#appenders} + +Встроенная библиотека логирования COOPOS поддерживает два типа аппендеров: + +- [Консоль](#console) +- [GELF](#gelf) (Graylog Extended Log Format) + +### Консоль {#console} + +Вывод сообщений на экран. Параметры: + +- `name` — произвольное имя для ссылок из логгеров +- `type` — `"console"` +- `stream` — `"std_out"` или `"std_err"` +- `level_colors` — сопоставление уровня логирования цвету + - level — см. [уровни логирования](01_logging-levels.md) + - color — одно из: `"red"`, `"green"`, `"brown"`, `"blue"`, `"magenta"`, `"cyan"`, `"white"`, `"console_default"` +- `enabled` — включить/выключить аппендер + +Пример: + +```json +{ + "name": "consoleout", + "type": "console", + "args": { + "stream": "std_out", + + "level_colors": [{ + "level": "debug", + "color": "green" + },{ + "level": "warn", + "color": "brown" + },{ + "level": "error", + "color": "red" + } + ] + }, + "enabled": true +} +``` + +### GELF {#gelf} + +Отправка сообщений в Graylog — платформу сбора, индексации и анализа логов. Параметры: + + - `name` — произвольное имя для ссылок из логгеров + - `type` — `"gelf"` + - `endpoint` — IP-адрес и порт + - `host` — имя хоста в Graylog, идентификатор источника + - `enabled` — включить/выключить аппендер + +Пример: + +```json +{ + "name": "net", + "type": "gelf", + "args": { + "endpoint": "104.198.210.18:12202”, + "host": + }, + "enabled": true +} +``` + +## Логгеры {#loggers} + +Поддерживаются такие логгеры: + +- `default` — логгер по умолчанию, всегда включён +- `net_plugin_impl` — подробный лог сетевого плагина +- `http_plugin` — подробный лог HTTP-плагина +- `producer_plugin` — подробный лог плагина продюсера +- `transaction_tracing` — подробный лог вердиктов ретрансляторов в P2P +- `transaction_failure_tracing` — подробный лог неуспешных вердиктов в P2P +- `trace_api` — подробный лог плагина trace_api + +Параметры: + + - `name` — должно совпадать с одним из имён выше + - `level` — см. уровни ниже + - `enabled` — включить/выключить логгер + - `additivity` — `true` или `false` + - `appenders` — список имён аппендеров из конфигурации аппендеров + +Пример: + +```json +{ + "name": "net_plugin_impl", + "level": "debug", + "enabled": true, + "additivity": false, + "appenders": [ + "net" + ] +} +``` + +!!! note + Если `logging.json` нет, у всех логгеров по умолчанию уровень `info`. В `logging.json` каждый логгер настраивается отдельно. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/05_storage-and-read-modes.md b/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/05_storage-and-read-modes.md new file mode 100644 index 000000000..706cd2d4e --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/05_storage-and-read-modes.md @@ -0,0 +1,60 @@ +--- +content_title: Хранилище и режимы чтения +--- + +Платформа COOPOS хранит данные блокчейна в разных структурах на этапах жизненного цикла транзакции. Ниже — часть из них. Производящий узел — это экземпляр `nodeos` у того продюсера, который сейчас создаёт блоки (роль меняется примерно каждые 6 секунд: 12 блоков подряд, затем другой продюсер.) + +## Состояние блокчейна и хранение + +Каждый `nodeos` создаёт внутренние файлы для учёта состояния цепочки. Они лежат в каталоге установки `~/eosio/nodeos/data`; назначение: + +* `blocks.log` — только дописываемый журнал необратимых блоков с финальными подтверждёнными транзакциями. +* `reversible_blocks` — memory-mapped файл с блоками, уже записанными в цепочку, но ещё не необратимыми; в них — валидные транзакции, ожидающие финализации по консенсусу. Head block — последний записанный блок, хранится в `reversible_blocks`. +* `chain state` / `chain database` — в memory-mapped файле кэшируется состояние цепочки по блокам: аккаунты, отложенные транзакции, данные multi_index смарт-контрактов. Кэшируются ID последних 65 536 блоков для TaPOS. ID транзакции и срок действия кэшируются до истечения транзакции. + +* `pending block` — блок в памяти с транзакциями по мере обработки; он станет или может стать head block. Если этот `nodeos` — производящий узел, pending block рассылается другим экземплярам `nodeos`. +* Вне состояния цепочки данные блоков кэшируются в RAM до необратимости; кэшируется в том числе подписанный блок. Когда LIB догоняет блок, блок читается из журнала необратимых блоков. + +## Интерфейсы COOPOS + +COOPOS даёт [сервисы](../../) и [интерфейсы](https://docs.eosnetwork.com/cdt/latest/reference/Files/), чтобы контракты сохраняли состояние между действиями и транзакциями. Например, контракт `eosio.token` хранит балансы в базе состояния цепочки. Каждый `nodeos` держит БД в памяти, поэтому чтение/запись в контрактах просты. + +### HTTP RPC API nodeos + +Через HTTP [RPC API](../05_rpc_apis/index.md) сервис `nodeos` отдаёт запросы к базе состояния цепочки. + +## Режимы чтения nodeos + +`nodeos` можно запускать в разных режимах «чтения». Они влияют на обработку блоков и транзакций: + +- `head`: учитываются только побочные эффекты подтверждённых транзакций; необработанные транзакции обрабатываются, но в состояние не включаются. +- `irreversible`: только подтверждённые транзакции до последнего необратимого блока включительно. +- `speculative`: побочные эффекты подтверждённых и неподтверждённых транзакций. + +Транзакция считается подтверждённой, когда `nodeos` принял её, обработал и записал в блок цепочки — она в head block или раньше. + +### Режим head + +Клиенты (`cleos`, RPC API) видят состояние БД на текущий head block. Head ещё не необратим, возможны короткие форки — при переключении на лучшую ветку прочитанное состояние может устареть. + +В этом режиме `nodeos` может выполнять транзакции с TaPoS, указывающим на любой валидный блок в лучшей по мнению узла ветке. + +### Режим irreversible + +`nodeos` по-прежнему отслеживает актуальные блоки в fork database, но отображаемое состояние отстаёт от «головы» форка (fork DB head) и соответствует последнему необратимому блоку. + +Клиенты (`cleos`, RPC API) видят состояние БД по последнему необратимому блоку и **не** включают изменения от транзакций, известных узлу, но ещё не попавших в цепочку (в т.ч. неподтверждённых). + +### Режим speculative (устарел) + +Клиенты видят состояние head block плюс изменения от всех известных узлу транзакций, которые могут ещё не попасть в цепочку. + +Низкая задержка, но хрупко: нет гарантии, что эти транзакции попадут в цепочку или в том же порядке, что подразумевает видимое состояние. + +Минимальная задержка при максимальной непоследовательности. + +В speculative режиме `nodeos` может выполнять транзакции с TaPoS на любой валидный блок лучшей ветки. + +## Как задать режим чтения + +Режим задаётся опцией `--read-mode` плагина `eosio::chain_plugin`. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/10_context-free-data/index.md b/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/10_context-free-data/index.md new file mode 100644 index 000000000..a922c8d64 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/10_context-free-data/index.md @@ -0,0 +1,16 @@ +--- +content_title: Контекстно-свободные данные (CFD) +link_text: Контекстно-свободные данные +--- + +## Обзор +Неизменяемость блокчейна защищает данные и их целостность, но усложняет удаление несущественной информации. В транзакциях COOPOS есть отдельная секция — *context-free data*. Как следует из названия, эти данные не привязаны к предыдущему контексту и зависимостям, поэтому их теоретически можно удалять безопаснее. Удаление не должно ломать целостность цепочки. + +## Идея +Контекстно-свободные данные позволяют приложениям хранить в транзакции необязательную информацию. Примеры: + +* Вторичные или кратковременные данные цепочки +* Краткосрочная некритичная информация к сообщению транзакции +* Комментарии пользователей к статье в блокчейне + +В общем случае сюда относится всё, что не критично для работы и целостности цепочки. Также CFD можно использовать для соблюдения требований законодательства о персональных данных. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/index.md b/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/index.md new file mode 100644 index 000000000..6b4ce1cee --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/07_concepts/index.md @@ -0,0 +1,8 @@ +--- +content_title: Концепции nodeos +--- + +Раздел с пояснениями по `nodeos`, практиками и деталями реализации. + +* [Хранилище и режимы чтения](05_storage-and-read-modes.md) — состояние блокчейна, хранение, режимы чтения `nodeos`. +* [Context-free data](10_context-free-data/index.md) — цели, плюсы и операции с контекстно-свободными данными. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/08_troubleshooting/index.md b/docs/documentation/blockchain/coopos/01_nodeos/08_troubleshooting/index.md new file mode 100644 index 000000000..68a783099 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/08_troubleshooting/index.md @@ -0,0 +1,47 @@ +--- +content_title: Устранение неполадок nodeos +--- + +### «Database dirty flag set (likely due to unclean shutdown): replay required» + +`nodeos` нужно останавливать корректно: отправьте `SIGTERM`, `SIGQUIT` или `SIGINT` и дождитесь завершения. Иначе возможна эта ошибка. Тогда остаётся реплей: запуск `nodeos` с `--replay-blockchain`. + +### Ошибка «Memory does not match data» при перезапуске + +При сообщении вроде `St9exception: content of memory does not match data expected by executable` попробуйте запустить `nodeos` с одной из опций (полный список — `nodeos --help`): + +``` +Command Line Options for eosio::chain_plugin: + --force-all-checks do not skip any checks that can be + skipped while replaying irreversible + blocks + --replay-blockchain clear chain state database and replay + all blocks + --hard-replay-blockchain clear chain state database, recover as + many blocks as possible from the block + log, and then replay those blocks + --delete-all-blocks clear chain state database and block + log +``` + +### Ошибка «Could not grow database file to requested size.» + +Запустите `nodeos` с `--shared-memory-size-mb 1024`. Файл shared memory ~1 ГБ позволяет порядка полумиллиона транзакций. + +### Какая версия COOPOS запущена / к какой версии подключаюсь? + +При настройках по умолчанию `cleos get info` покажет поле `server_version`. Если `nodeos` не на дефолтном URL, укажите адрес: + +```sh +cleos --url http://localhost:8888 get info +``` + +Только строка версии: + +```sh +cleos --url http://localhost:8888 get info | grep server_version +``` + +### Ошибка 3070000: WASM Exception + +При развёртывании `eosio.bios` или `eosio.system` для загрузки цепочки на базе COOPOS и ошибке вроде `Publishing contract... Error 3070000: WASM Exception Error Details: env.set_proposed_producers_ex unresolveable` нужно сначала активировать протокольную функцию `PREACTIVATE_FEATURE`. diff --git a/docs/documentation/blockchain/coopos/01_nodeos/index.md b/docs/documentation/blockchain/coopos/01_nodeos/index.md new file mode 100644 index 000000000..99d553151 --- /dev/null +++ b/docs/documentation/blockchain/coopos/01_nodeos/index.md @@ -0,0 +1,29 @@ +--- +content_title: nodeos +--- + +!!! note "Сеть COOPOS" + **nodeos** — демон узла COOPOS. Ресурсы сети и системный контракт (в т. ч. для **cleos**): [справка](../system-resources.md). + +## Введение + +`nodeos` — основной сервисный демон на каждом узле COOPOS. Его можно настроить на обработку смарт-контрактов, проверку транзакций, выпуск блоков с валидными транзакциями и финализацию блоков для записи в цепочку. + +## Установка + +`nodeos` входит в [репозиторий COOPOS](https://github.com/coopenomics/coopos). Раздел установки: [Установка ПО COOPOS](../00_install/index.md). + +## Навигация + +Ниже — разделы по настройке и использованию `nodeos`. + +* [Использование](02_usage/index.md) — конфигурация и запуск `nodeos`, типовые схемы узлов и среды разработки. +* [Плагины](03_plugins/index.md) — плагины, опции, обязательные и необязательные. +* [Реплеи](04_replays/index.md) — воспроизведение цепочки из снимка или файла `blocks.log`. +* [RPC API](05_rpc_apis/index.md) — справка по HTTP RPC для плагинов. +* [Логирование](06_logging/index.md) — `logging.json`, логгеры, аппендеры, уровни. +* [Концепции](07_concepts/index.md) — пояснения и детали реализации `nodeos`. +* [Устранение неполадок](08_troubleshooting/index.md) — типичные проблемы `nodeos`. + +!!! note "Узел доступа" + Клиентскому приложению или смарт-контракту нужен локальный или удалённый узел COOPOS с запущенным `nodeos`. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-buy-ram.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-buy-ram.md new file mode 100644 index 000000000..c44eadd76 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-buy-ram.md @@ -0,0 +1,23 @@ +## Обзор + +Здесь показано, как купить RAM на аккаунт через `cleos system buyram` — чтобы хватило квоты на развёртывание контракта, таблицы состояния и рост данных на цепи. + +## Перед началом + +* У вас есть аккаунт. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* На аккаунте достаточно токенов. + +* Установлена поддерживаемая версия `cleos`. + +* Разблокируйте кошелёк. + +## Шаги + +Купить RAM на сумму 0.1 SYS для аккаунта `alice`: + +```sh +cleos system buyram alice alice "0.1 SYS" -p alice@active +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-config-a-multisig-account.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-config-a-multisig-account.md new file mode 100644 index 000000000..578e2c37a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-config-a-multisig-account.md @@ -0,0 +1,20 @@ +## Обзор + +На этой странице показан пример настройки разрешения `active` аккаунта так, чтобы для действий требовались подписи нескольких аккаунтов (порог и веса в `authority`). Это основа для мультиподписи при работе через `cleos`. + +## Перед началом + +* У вас есть аккаунт. + +* Выделено достаточно ресурсов для выполнения транзакции. + +* Установлена поддерживаемая версия `cleos`. + +* Нужны базовые понятия: [аккаунт и разрешения](../../../accounts.md) и [транзакции](../../../transactions.md). + + +## Шаги + +```sh +cleos set account permission multisig active '{\"threshold\" : 1, \"accounts\" :[{\"permission\":{\"actor\":\"eosio\",\"permission\":\"active\"},\"weight\":1},{\"permission\":{\"actor\":\"customera\",\"permission\":\"active\"},\"weight\":1}]}' owner -p multisig@owner" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-connect-a-specific-network.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-connect-a-specific-network.md new file mode 100644 index 000000000..ea47b9ece --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-connect-a-specific-network.md @@ -0,0 +1,23 @@ +## Обзор + +На этой странице показано, как направить `cleos` на конкретный хост `nodeos` или `keosd`, чтобы выполнить нужную команду против удалённого или нестандартного API. Для этого используются необязательные аргументы `--url` и `--wallet-url` с HTTP-адресом и портом сервиса. + +!!! note "Адрес и порт по умолчанию" + Если необязательные аргументы не заданы (т.е. без `--url` или `--wallet-url`), `cleos` пытается подключиться к локальным `nodeos` или `keosd` на `127.0.0.1` и порту по умолчанию `8888`. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +## Шаги +### Подключение к nodeos + +```sh +cleos -url http://nodeos-host:8888 COMMAND +``` + +### Подключение к keosd + +```sh +cleos --wallet-url http://keosd-host:8888 COMMAND +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-a-wallet.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-a-wallet.md new file mode 100644 index 000000000..6fda0d234 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-a-wallet.md @@ -0,0 +1,58 @@ +## Обзор + +Здесь описано, как создать кошелёк `keosd` через `cleos wallet create` и сохранить пароль в файл — чтобы затем импортировать ключи и подписывать транзакции из CLI. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Ознакомьтесь с командой [`cleos wallet create`](../03_command-reference/wallet/create.md) и её параметрами. +* Ознакомьтесь с остальными командами [`cleos wallet`](../03_command-reference/wallet/index.md). +* Установлена поддерживаемая версия `cleos`. + +!!! note "Примечание" + `cleos` входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и `cleos`. + +* Нужны базовые понятия: [аккаунт](../../../accounts.md), [аккаунты и разрешения](../../../accounts.md) и пара открытого/закрытого ключа в этой модели. + +## Шаги + +Выполните шаг ниже. + +Создайте кошелёк по умолчанию или с именем и сохраните пароль кошелька в файл: + +```sh +cleos wallet create [-n named_wallet] -f +``` + +Здесь `file_to_save_pwd` — имя файла, в который записывается пароль кошелька, а `named_wallet` — необязательный параметр для имени кошелька. + +Ниже приведены примеры. + +* Создать кошелёк по умолчанию и сохранить пароль в файл `default_wallet.pwd`: + +**Пример вывода** + +```sh +cleos wallet create -f default_wallet.pwd +``` +```console +Creating wallet: default +Save password to use in the future to unlock this wallet. +Without password imported keys will not be retrievable. +saving password to default_wallet.pwd +``` + +* Создать именованный кошелёк `my_wallet` и сохранить пароль в файл `my_wallet.pwd`: + +**Пример вывода** + +```sh +cleos wallet create -n my_wallet -f my_wallet.pwd +``` +```console +Creating wallet: my_wallet +Save password to use in the future to unlock this wallet. +Without password imported keys will not be retrievable. +saving password to my_wallet.pwd +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-an-account.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-an-account.md new file mode 100644 index 000000000..5a7467d75 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-an-account.md @@ -0,0 +1,53 @@ +## Обзор + +В этом руководстве описано, как создать новый аккаунт блокчейна COOPOS с помощью CLI `cleos`. Аккаунты нужны для развёртывания смарт-контрактов и других операций в блокчейне. Создайте один или несколько аккаунтов при настройке среды разработки. + +В примере создаётся аккаунт **bob**, авторизованный системным аккаунтом по умолчанию **eosio**, через `cleos`. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Установлена поддерживаемая версия `cleos`. +* Изучите раздел [Аккаунты и разрешения](../../../accounts.md). +* Нужны базовые понятия: пара открытого и закрытого ключа в той же модели (см. [аккаунты](../../../accounts.md)). +* Создайте пары открытого/закрытого ключа для разрешений `owner` и `active` аккаунта. + +!!! note "Состав COOPOS" + `cleos` входит в пакет COOPOS; при [установке из исходников](../../00_install/index.md) ставится вместе с `nodeos` и `keosd`. + +## Справка по командам + +См. справку по использованию `cleos` и опциям: + +* команда [`cleos create account`](../03_command-reference/create/account.md) и её параметры + +## Процедура + +Ниже показано, как создать аккаунт **bob**, авторизованный системным аккаунтом **eosio**. + +1. Выполните команду для создания аккаунта **bob**: + +```sh +cleos create account eosio bob EOS87TQktA5RVse2EguhztfQVEh6XXxBmgkU8b4Y5YnGvtYAoLGNN +``` +**Где**: + +* `eosio` — системный аккаунт, авторизующий создание нового аккаунта +* `bob` — имя нового аккаунта в соответствии с [правилами имён и разрешений](../../../accounts.md) +* `EOS87TQ...AoLGNN` — открытый ключ владельца или уровень разрешения для нового аккаунта (**обязательно**) + +!!! note "Кто может создать аккаунт" + Нужен уже существующий аккаунт-создатель с правом вызвать `newaccount`. В чистой тестовой сети для этого обычно используют системный аккаунт **eosio**. В продуктовой сети COOPOS создание новых аккаунтов идёт по правилам регистратора — см. [ресурсы и регистрация](../../../system-resources.md). + +**Пример вывода** + +```console +executed transaction: 4d65a274de9f809f9926b74c3c54aadc0947020bcfb6dd96043d1bcd9c46604c 200 bytes 166 us +# eosio <= eosio::newaccount {"creator":"eosio","name":"bob","owner":{"threshold":1,"keys":[{"key":"EOS87TQktA5RVse2EguhztfQVEh6X... +warning: transaction executed locally, but may not be confirmed by the network yet ] +``` + +### Итог + +Следуя этим шагам, вы создаёте новый аккаунт COOPOS в своей среде. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-key-pairs.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-key-pairs.md new file mode 100644 index 000000000..b92944240 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-create-key-pairs.md @@ -0,0 +1,70 @@ +## Обзор + +В этом руководстве описано, как создать пару ключей (открытый и закрытый) для подписи транзакций в блокчейне COOPOS. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Установлена поддерживаемая версия `cleos`. +* Нужны базовые понятия: асимметричная криптография (пара открытого и закрытого ключа) в модели аккаунтов COOPOS; см. также [аккаунты и разрешения](../../../accounts.md). + +!!! note "Состав COOPOS" + Утилита `cleos` входит в пакет COOPOS: при [установке из исходников](../../00_install/index.md) она собирается вместе с `nodeos` и `keosd`. + +## Справка по командам + +См. справку по использованию `cleos` и опциям: + +* команда [`cleos create key`](../03_command-reference/create/key.md) и её параметры + +## Процедура + +Ниже показано, как создать пару открытого/закрытого ключа, вывести её в консоль и сохранить в файл: + +1. Создайте пару и выведите её в консоль: + +```sh +cleos create key --to-console +``` + +**Где**: + +* `--to-console` — опция для вывода пары ключей в консоль + +**Пример вывода** + +```console +Private key: 5KPzrqNMJdr6AX6abKg*******************************cH +Public key: EOS4wSiQ2jbYGrqiiKCm8oWR88NYoqnmK4nNL1RCtSQeSFkGtqsNc +``` + +2. Создайте пару и сохраните её в файл: + +```sh +cleos create key --file pw.txt +``` +**Где**: + +* `--file` — опция для сохранения пары ключей в файл +* `FILE_TO_SAVEKEY` — имя файла для сохранения пары ключей + +**Пример вывода** + +```console +saving keys to pw.txt +``` + +Чтобы посмотреть сохранённую пару в файле: + +```sh +cat pw.txt +``` +```console +Private key: 5K7************************************************ +Public key: EOS71k3WdpLDeqeyqVRAAxwpz6TqXwDo9Brik5dQhdvvpeTKdNT59 +``` + +## Итог + +Следуя этим шагам, вы создаёте пары открытого/закрытого ключа, выводите их в консоль и сохраняете в файл. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-delegate-CPU-resource.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-delegate-CPU-resource.md new file mode 100644 index 000000000..28bb70429 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-delegate-CPU-resource.md @@ -0,0 +1,45 @@ +## Обзор + +Здесь показано, как делегировать пропускную способность CPU с одного аккаунта на другой через `cleos system delegatebw` — чтобы выделить CPU получателю (при необходимости в той же транзакции можно указать и NET). + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Ознакомьтесь с командой [`cleos system delegatebw`](../03_command-reference/system/system-delegatebw.md) и её параметрами. +* Установлена поддерживаемая версия `cleos`. + +!!! note "Примечание" + `cleos` входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория [`reference-contracts`](https://github.com/Coopenomics/reference-contracts) для управления системными ресурсами. +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md) в COOPOS. + +## Шаги + +Выполните шаг ниже. + +Делегируйте пропускную способность CPU с исходного аккаунта на аккаунт-получатель: + +```sh +cleos system delegatebw +``` + +Здесь `from` — аккаунт, с которого делегируется пропускная способность, `receiver` — аккаунт-получатель, а `stake_net_quantity` и/или `stake_cpu_quantity` — объём токенов в стейке для NET и/или CPU соответственно. + +Ниже приведены примеры. + +* Делегировать 0.01 SYS на пропускную способность CPU от `bob` к `alice`: + +**Пример вывода** + +```sh +cleos system delegatebw bob alice "0 SYS" "0.01 SYS" +``` +```json +executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us +# eosio <= eosio::delegatebw {"from":"bob","receiver":"alice","stake_net_quantity":"0.0000 SYS","stake_cpu_quantity":"0.0100 SYS"... +# eosio.token <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"} +# bob <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"} +# eosio.stake <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-delegate-net-resource.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-delegate-net-resource.md new file mode 100644 index 000000000..7d10a4da3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-delegate-net-resource.md @@ -0,0 +1,45 @@ +## Обзор + +Здесь показано, как делегировать пропускную способность сети (NET) с одного аккаунта на другой через `cleos system delegatebw` — чтобы выделить NET получателю, при необходимости задействовав и CPU в той же команде. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Ознакомьтесь с командой [`cleos system delegatebw`](../03_command-reference/system/system-delegatebw.md) и её параметрами. +* Установлена поддерживаемая версия `cleos`. + +!!! note "Примечание" + `cleos` входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория [`reference-contracts`](https://github.com/Coopenomics/reference-contracts) для управления системными ресурсами. +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md) в COOPOS. + +## Шаги + +Выполните шаг ниже. + +Делегируйте пропускную способность сети (NET) с исходного аккаунта на аккаунт-получатель: + +```sh +cleos system delegatebw +``` + +Здесь `from` — аккаунт, с которого делегируется пропускная способность, `receiver` — аккаунт-получатель, а `stake_net_quantity` и/или `stake_cpu_quantity` — объём токенов в стейке для NET и/или CPU соответственно. + +Ниже приведены примеры. + +* Делегировать 0.01 SYS на пропускную способность сети (NET) от `bob` к `alice`: + +**Пример вывода** + +```sh +cleos system delegatebw bob alice "0.01 SYS" "0 SYS" +``` +```json +executed transaction: 5487afafd67bf459a20fcc2dbc5d0c2f0d1f10e33123eaaa07088046fd18e3ae 192 bytes 503 us +# eosio <= eosio::delegatebw {"from":"bob","receiver":"alice","stake_net_quantity":"0.0100 SYS","stake_cpu_quantity":"0.0000 SYS"... +# eosio.token <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"} +# bob <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"} +# eosio.stake <= eosio.token::transfer {"from":"bob","to":"eosio.stake","quantity":"0.0010 SYS","memo":"stake bandwidth"} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-deploy-a-smart-contract.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-deploy-a-smart-contract.md new file mode 100644 index 000000000..442ba0eea --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-deploy-a-smart-contract.md @@ -0,0 +1,22 @@ +## Обзор + +На этой странице описано, как развернуть WASM и ABI смарт-контракта на аккаунте в сети COOPOS командой `cleos set contract` — обычный шаг после сборки контракта в среде разработки. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Разблокируйте кошелёк, в котором есть закрытый ключ аккаунта контракта. + +## Шаги + +Выполните: + +```sh +cleos set contract contract_account contract_folder [wasm-file] [abi-file] +``` + +Подставьте вместо `contract_folder` путь к каталогу с контрактом. + +!!! note "Имя контракта по умолчанию" + По умолчанию `cleos` считает именем контракта последний сегмент пути в `contract_folder` и ожидает файлы `.wasm` и `.abi` с таким именем. Это можно переопределить необязательными параметрами `wasm-file` и `abi-file`. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-account-information.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-account-information.md new file mode 100644 index 000000000..111cb9275 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-account-information.md @@ -0,0 +1,56 @@ +## Обзор + +В этом руководстве описано, как запросить информацию об аккаунте COOPOS через `cleos get account` — квоты RAM, полосы NET/CPU и дерево разрешений. В примере запрашиваются данные аккаунта `eosio`. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +!!! note "Примечание" + Утилита cleos входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и cleos. + +* Полезно заранее прочитать раздел [Аккаунты и разрешения](../../../accounts.md) в документации по блокчейну. + +## Справка по командам + +См. справку по использованию cleos и опциям: + +* команда [`cleos get account`](../03_command-reference/get/account.md) и её параметры + +## Процедура + +Ниже показано, как запросить информацию об аккаунте `eosio`: + +1. Выполните команду: + +```sh +cleos get account eosio +``` +**Где**: + +* `eosio` — имя системного аккаунта по умолчанию в блокчейне COOPOS. + +**Пример вывода** + +```console +created: 2018-06-01T12:00:00.000 +privileged: true +permissions: + owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV + active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV +memory: + quota: unlimited used: 3.004 KiB + +net bandwidth: + used: unlimited + available: unlimited + limit: unlimited + +cpu bandwidth: + used: unlimited + available: unlimited + limit: unlimited +``` + +!!! note "Поля аккаунта" + В зависимости от сети COOPOS набор полей аккаунта может отличаться — это определяется развёрнутым системным контрактом. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-block-information.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-block-information.md new file mode 100644 index 000000000..a499c9b39 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-block-information.md @@ -0,0 +1,81 @@ +## Обзор + +Здесь показано, как запросить у API `nodeos` полные данные блока по номеру или по идентификатору — чтобы проверить время, подпись производителя, состав транзакций и связь с предыдущим блоком при отладке или мониторинге сети. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Ознакомьтесь с командой [`cleos get block`](../03_command-reference/get/block.md) и её параметрами. +* Установлена поддерживаемая версия `cleos`. + +!!! note "Примечание" + `cleos` входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и `cleos`. + +* Полезно знать, как [блоки формируются и распространяются по сети](../../../nodes.md), и общие идеи [протокола консенсуса](../../../protocols.md) в COOPOS. + +## Шаги + +Выполните шаг ниже. + +Получите полную информацию о блоке: + +```sh +cleos get block +``` + +Здесь `block_number_or_id` — номер блока или идентификатор блока. + +Ниже приведены примеры. + +* Запросить в тестовой сети полную информацию о блоке с номером `48351112` или с ID `02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba`: + +**Пример вывода** + +```sh +cleos -u https://choiceofyourprovider get block 48351112 +``` +См. раздел [среда разработки и тестовые сети](../../01_nodeos/02_usage/03_development-environment/index.md) + +```json +{ + "timestamp": "2021-01-28T17:58:59.500", + "producer": "inith", + "confirmed": 0, + "previous": "02e1c78787ff4d4ce6124831b936bb4ef6015e470868a535f1c6e04f3afed8a1", + "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000", + "action_mroot": "1bf9d17b5a951cbb6d0a8324e4039744db4137df498abd53046ea26fa74d73c9", + "schedule_version": 1, + "new_producers": null, + "producer_signature": "SIG_K1_JxFfxGA1wZx9LCVjbrBb5nxTuJai7RUSiwRXyY866fYvZZyRtdmQFn9KJCqVHFAiYEsJpDb6dhTmHNDwipJm4rDiyhEmGa", + "transactions": [], + "id": "02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba", + "block_num": 48351112, + "ref_block_prefix": 3493375603 +} +``` + +* Запросить в тестовой сети полную информацию о блоке с ID `02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba`: + +**Пример вывода** + +```sh +cleos -u https://choiceofyourprovider get block 02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba +``` +```json +{ + "timestamp": "2021-01-28T17:58:59.500", + "producer": "inith", + "confirmed": 0, + "previous": "02e1c78787ff4d4ce6124831b936bb4ef6015e470868a535f1c6e04f3afed8a1", + "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000", + "action_mroot": "1bf9d17b5a951cbb6d0a8324e4039744db4137df498abd53046ea26fa74d73c9", + "schedule_version": 1, + "new_producers": null, + "producer_signature": "SIG_K1_JxFfxGA1wZx9LCVjbrBb5nxTuJai7RUSiwRXyY866fYvZZyRtdmQFn9KJCqVHFAiYEsJpDb6dhTmHNDwipJm4rDiyhEmGa", + "transactions": [], + "id": "02e1c7888a92206573ae38d00e09366c7ba7bc54cd8b7996506f7d2a619c43ba", + "block_num": 48351112, + "ref_block_prefix": 3493375603 +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-tables-information.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-tables-information.md new file mode 100644 index 000000000..30790fa0a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-tables-information.md @@ -0,0 +1,15 @@ +## Обзор + +Здесь показана команда `cleos get table` для чтения строк таблицы состояния смарт-контракта по аккаунту контракта, scope и имени таблицы — удобно для отладки и инспекции данных на цепи. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Нужны базовые понятия: [аккаунт контракта](../../../accounts.md), а также что такое таблица и scope в модели хранения состояния WASM-контракта (первичный ключ и область видимости строк). + +## Шаги + +```sh +cleos get table ACCOUNT SCOPE TABLE +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-transaction-information.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-transaction-information.md new file mode 100644 index 000000000..34872e580 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-get-transaction-information.md @@ -0,0 +1,199 @@ +## Обзор + +В этом руководстве описано, как получить по ID полные данные транзакции в COOPOS — например, чтобы разобрать действия, подписи и след в блоке после отладки или инцидента. + +В примере запрашиваются данные транзакции, связанной с созданием аккаунта **bob**. + +## Перед началом + +Убедитесь, что выполнены следующие требования: +* Установлена поддерживаемая версия `cleos`. +!!! note "Примечание" + `cleos` входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и `cleos`. +* Полезно заранее знать, [как устроены транзакции](../../../transactions.md) в блокчейне COOPOS. + +## Справка по командам + +См. справку по использованию `cleos` и опциям: + +* команда [`cleos get transaction`](../03_command-reference/get/transaction.md) и её параметры + +## Процедура + +Ниже показано, как получить информацию о транзакции, связанной с созданием аккаунта **bob**. + +1. Запросите транзакцию по ID: +```sh +cleos get transaction 870a6b6e3882061ff0f64016e1eedfdd9439e2499bf978c3fb29fcedadada9b1 +``` +* Здесь `870a6b6e38...dada9b1` — идентификатор транзакции создания аккаунта **bob**. + +**Пример вывода** + +Команда `cleos` возвращает подробные данные транзакции: + +```json +{ + "id": "870a6b6e3882061ff0f64016e1eedfdd9439e2499bf978c3fb29fcedadada9b1", + "trx": { + "receipt": { + "status": "executed", + "cpu_usage_us": 3493, + "net_usage_words": 25, + "trx": [ + 1,{ + "signatures": [ + "SIG_K1_KYEvKx3nC81H6brKXHNjhrw32rNtTC2dP6nYFjZvj1N3k7KSU4CXBTJyiXd38ANu2ZPTUf66qUghUp5Jarkhiqdx3D8pwf" + ], + "compression": "none", + "packed_context_free_data": "", + "packed_trx": "0c252e60fe001fe2acca00000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea30550000000000000e3d01000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000001000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000000" + } + ] + }, + "trx": { + "expiration": "2021-02-18T08:27:56", + "ref_block_num": 254, + "ref_block_prefix": 3400327711, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [{ + "account": "eosio", + "name": "newaccount", + "authorization": [{ + "actor": "eosio", + "permission": "active" + } + ], + "data": { + "creator": "eosio", + "name": "bob", + "owner": { + "threshold": 1, + "keys": [{ + "key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj", + "weight": 1 + } + ], + "accounts": [], + "waits": [] + }, + "active": { + "threshold": 1, + "keys": [{ + "key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj", + "weight": 1 + } + ], + "accounts": [], + "waits": [] + } + }, + "hex_data": "0000000000ea30550000000000000e3d01000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000001000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b64555601000000" + } + ], + "transaction_extensions": [], + "signatures": [ + "SIG_K1_KYEvKx3nC81H6brKXHNjhrw32rNtTC2dP6nYFjZvj1N3k7KSU4CXBTJyiXd38ANu2ZPTUf66qUghUp5Jarkhiqdx3D8pwf" + ], + "context_free_data": [] + } + }, + "block_time": "2021-02-18T08:27:27.000", + "block_num": 256, + "last_irreversible_block": 305, + "traces": [{ + "action_ordinal": 1, + "creator_action_ordinal": 0, + "closest_unnotified_ancestor_action_ordinal": 0, + "receipt": { + "receiver": "eosio", + "act_digest": "2640ce4d4a789393dec3b7938cea2f78c5669498d0d22adeab9204c489c2cfd6", + "global_sequence": 256, + "recv_sequence": 256, + "auth_sequence": [[ + "eosio", + 256 + ] + ], + "code_sequence": 0, + "abi_sequence": 0 + }, + "receiver": "eosio", + "act": { + "account": "eosio", + "name": "newaccount", + "authorization": [{ + "actor": "eosio", + "permission": "active" + } + ], + "data": { + "creator": "eosio", + "name": "bob", + "owner": { + "threshold": 1, + "keys": [{ + "key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj", + "weight": 1 + } + ], + "accounts": [], + "waits": [] + }, + "active": { + "threshold": 1, + "keys": [{ + "key": "EOS6b4ENeXffuKGmsk3xCk3kbFM5M8dcANrUa9Mj9RzKLNhPKhzyj", + "weight": 1 + } + ], + "accounts": [], + "waits": [] + } + }, + "hex_data": "0000000000ea30550000000000000e3d01000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b6455560100000001000000010002dfcee032f2e84bfc8ecc5c10fffb870ec1c690c1f3fdae3d8b7d65690b64555601000000" + }, + "context_free": false, + "elapsed": 1565, + "console": "", + "trx_id": "870a6b6e3882061ff0f64016e1eedfdd9439e2499bf978c3fb29fcedadada9b1", + "block_num": 256, + "block_time": "2021-02-18T08:27:27.000", + "producer_block_id": null, + "account_ram_deltas": [{ + "account": "bob", + "delta": 2724 + } + ], + "except": null, + "error_code": null + } + ] +} +``` + +!!! note + Для запроса информации о транзакции нужен экземпляр `nodeos` с включёнными [плагином history](../../01_nodeos/03_plugins/history_plugin/index.md) и [плагином history API](../../01_nodeos/03_plugins/history_api_plugin/index.md). + +## Итог + +Следуя этим шагам, вы получаете информацию о транзакции по её идентификатору. + +## Устранение неполадок + +Если в `nodeos` в файле **config.ini** не включены [плагин history](../../01_nodeos/03_plugins/history_plugin/index.md) и [плагин history API](../../01_nodeos/03_plugins/history_api_plugin/index.md), команда `cleos get transaction` с ID завершится ошибкой, например: + +```sh +cleos get transaction 509eee3aa8988d533a336fec7a4c8b067ae3205cd97e2d27b3e9a2da61ef460c +``` +```console +Error 3110003: Missing History API Plugin +Ensure that you have eosio::history_api_plugin added to your node's configuration! +Error Details: +History API plugin is not enabled +``` + +Чтобы устранить ошибку, включите [плагин history](../../01_nodeos/03_plugins/history_plugin/index.md) и [плагин history API](../../01_nodeos/03_plugins/history_api_plugin/index.md), затем выполните команду снова. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-import-a-key.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-import-a-key.md new file mode 100644 index 000000000..f0f632ab6 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-import-a-key.md @@ -0,0 +1,50 @@ +## Обзор + +В этом руководстве описано, как импортировать закрытый ключ в кошелёк `keosd` по умолчанию, чтобы `cleos` мог подписывать транзакции от имени соответствующего аккаунта в блокчейне COOPOS. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Создайте кошелёк по умолчанию командой `cleos wallet create`. Инструкции — в разделе [Как создать кошелёк](../02_how-to-guides/how-to-create-a-wallet.md). +* Откройте и разблокируйте созданный кошелёк. +* Ознакомьтесь с командой [`cleos wallet import`](../03_command-reference/wallet/import.md). +* Установлена поддерживаемая версия `cleos`. +* Нужны базовые понятия: пара [открытого и закрытого ключа](../../../accounts.md) в модели аккаунтов COOPOS. + +!!! note "Состав COOPOS" + `cleos` входит в пакет COOPOS; при [установке из исходников](../../00_install/index.md) ставится вместе с `nodeos` и `keosd`. + +## Справка по командам + +См. справку по использованию `cleos` и опциям: + +* [cleos wallet import](../03_command-reference/wallet/import.md) — команда и параметры + +## Процедура + +Ниже показано, как импортировать закрытый ключ в существующий кошелёк `keosd` по умолчанию: + +1. Выполните команду импорта закрытого ключа в кошелёк по умолчанию. Будет запрошен закрытый ключ: +```sh +cleos wallet import +``` +```console +private key: +``` + +2. Введите закрытый ключ и нажмите Enter. +```sh +*** +``` + +**Пример вывода** + +Команда подтверждает успешный импорт, выводя соответствующий открытый ключ: +```console +imported private key for: EOS8FBXJUfbANf3xeDWPoJxnip3Ych9HjzLBr1VaXRQFdkVAxwLE7 +``` + +## Итог + +Следуя этим шагам, вы импортируете закрытый ключ в кошелёк по умолчанию. diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-link-permission.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-link-permission.md new file mode 100644 index 000000000..0cd2cb9aa --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-link-permission.md @@ -0,0 +1,17 @@ +## Обзор + +Здесь показано, как привязать отдельное разрешение к конкретному действию (action) контракта через `cleos set action permission` — чтобы для вызова, например, `transfer` использовался не `active`, а специальное минимально необходимое разрешение. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Нужны базовые понятия: [аккаунт и уровни разрешений](../../../accounts.md), а также действие (action) смарт-контракта в модели COOPOS/EOSIO (см. [транзакции](../../../transactions.md)). + +## Шаги + +Свяжите уровень разрешения `permlvl` с действием `transfer` контракта `hodlcontract`: + +```sh +cleos set action permission alice hodlcontract transfer permlvl +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-list-all-key-pairs.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-list-all-key-pairs.md new file mode 100644 index 000000000..8b4d2521a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-list-all-key-pairs.md @@ -0,0 +1,113 @@ +## Обзор + +В этом руководстве описано, как вывести список всех открытых ключей и пар открытый/закрытый в кошельке `keosd` по умолчанию — чтобы проверить, какие ключи доступны для подписи, и при необходимости скопировать открытый ключ. Эти ключи используются для авторизации транзакций в блокчейне COOPOS. + +В примере показаны все открытые ключи и пары, хранящиеся в существующем кошельке по умолчанию. + +## Перед началом + +Убедитесь, что выполнены следующие требования: + +* Создайте кошелёк по умолчанию командой `cleos wallet create`. Инструкции — в разделе [Как создать кошелёк](../02_how-to-guides/how-to-create-a-wallet.md). +* [Создайте пару ключей](../03_command-reference/wallet/create_key.md) в кошельке по умолчанию. +* Ознакомьтесь с командами [`cleos wallet`](../03_command-reference/wallet/index.md). +* Установлена поддерживаемая версия `cleos`. +!!! note "Примечание" + `cleos` входит в состав ПО COOPOS. При [установке COOPOS](../../00_install/index.md) устанавливается и `cleos`. +* Нужны базовые понятия: пара [открытого и закрытого ключа](../../../accounts.md) в модели аккаунтов COOPOS. + +## Справка по командам + +См. справку по использованию `cleos` и опциям: + +* команда [`cleos wallet keys`](../03_command-reference/wallet/keys.md) и её параметры +* команда [`cleos wallet private_keys`](../03_command-reference/wallet/private_keys.md) и её параметры + +## Процедура + +Ниже показано, как вывести все открытые ключи и пары открытый/закрытый в кошельке `keosd` по умолчанию: + +1. Откройте кошелёк по умолчанию: +```sh +cleos wallet open +``` +```console +Opened: default +``` + +2. Разблокируйте кошелёк по умолчанию. Будет запрошен пароль: +```sh +cleos wallet unlock +``` +```console +password: +``` + +3. Введите пароль, заданный при создании кошелька по умолчанию: +```sh +*** +``` +Если пароль верный, кошелёк разблокируется: +```console +Unlocked: default +``` + +4. Выведите все открытые ключи в кошельке по умолчанию: +```sh +cleos wallet keys +``` +**Пример вывода** +```console +[ + "EOS5VCUBtxS83ZKqVcWtDBF4473P9HyrvnCM9NBc4Upk1C387qmF3" +] +``` + +5. Выведите все пары открытый/закрытый в кошельке по умолчанию. Будет запрошен пароль: +```sh +cleos wallet private_keys +``` +```console +password: +``` + +6. Введите пароль, заданный при создании кошелька по умолчанию: +```sh +*** +``` +**Пример вывода** +Если пароль верный, выводятся пары открытый/закрытый: +```console +password: [[ + "EOS5VCUBt****************************************F3", + "5JnuuGM1S****************************************4D" + ] +] +``` + +!!! warning "Внимание" + Никогда не раскрывайте закрытые ключи в продуктивной среде. + +!!! note "Примечание" + Если команды ничего не выводят, убедитесь, что вы создали пары ключей и импортировали закрытые ключи в кошелёк. + +## Итог + +Следуя этим шагам, вы получаете список всех открытых ключей и пар открытый/закрытый в кошельке `keosd` по умолчанию. + +## Устранение неполадок + +При выполнении `cleos wallet open` / `cleos wallet unlock` может появиться такая ошибка CLI: + +```sh +cleos wallet open +``` +```console +No wallet service listening on ***. Cannot automatically start keosd because keosd was not found. +Failed to connect to keosd at unix:///Users/xxx.xxx/eosio-wallet/keosd.sock; is keosd running? +``` + +Чтобы устранить ошибку, убедитесь, что на машине запущена утилита `keosd`: +```sh +keosd +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-stake-resource.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-stake-resource.md new file mode 100644 index 000000000..0758dcc48 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-stake-resource.md @@ -0,0 +1,25 @@ +## Обзор + +Здесь приведены примеры, как застейкать NET и/или CPU на свой же аккаунт через `cleos system delegatebw` — чтобы увеличить доступные ресурсы для транзакций и хранения состояния контрактов. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md). + +## Шаги + +Застейкать 0.01 SYS пропускной способности CPU для `alice`: + +```sh +cleos system delegatebw alice alice "0 SYS" "0.01 SYS" +``` + +Застейкать 0.01 SYS пропускной способности CPU для `alice`: + +```sh +cleos system delegatebw alice alice "0.01 SYS" "0 SYS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-submit-a-transaction.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-submit-a-transaction.md new file mode 100644 index 000000000..cd34fc5f9 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-submit-a-transaction.md @@ -0,0 +1,88 @@ +## Обзор + +На этой странице описано, как отправить (push) готовую транзакцию в сеть через `cleos push transaction`: вы формируете JSON транзакции и передаёте его файлом или строкой. Это нужно, когда транзакция уже собрана и её остаётся только подписать и доставить в `nodeos`. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. +* Нужны базовые понятия: [что такое транзакция](../../../transactions.md) и как собрать корректный JSON транзакции (поля `expiration`, `ref_block_*`, `actions` и т.д.). + +## Шаги + +* Создайте JSON-фрагмент с валидной транзакцией, например: + +```JSON +{ + "expiration": "2019-08-01T07:15:49", + "ref_block_num": 34881, + "ref_block_prefix": 2972818865, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [{ + "account": "eosio.token", + "name": "transfer", + "authorization": [{ + "actor": "han", + "permission": "active" + } + ], + "data": "000000000000a6690000000000ea305501000000000000000453595300000000016d" + } + ], + "transaction_extensions": [], + "context_free_data": [] +} +``` + +* Можно также использовать для поля `data` читаемый JSON. + +!!! note "Читаемый JSON в `data`" + Если в `data` задан читаемый JSON, `cleos` запрашивает нужные ABI через API `nodeos`; это создаёт дополнительную нагрузку на `nodeos`. + +```JSON +{ + "expiration": "2019-08-01T07:15:49", + "ref_block_num": 34881, + "ref_block_prefix": 2972818865, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [{ + "account": "eosio.token", + "name": "transfer", + "authorization": [{ + "actor": "han", + "permission": "active" + } + ], + "data": { + "from": "han", + "to": "eosio", + "quantity": "0.0001 SYS", + "memo": "m" + } + } + ], + "transaction_extensions": [], + "context_free_data": [] +} +``` + +* Выполните команду: + +```sh +cleos push transaction TRX_FILE.json +``` + +* Отправить транзакцию из JSON: + +```sh +cleos push transaction JSON +``` + + diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-transfer-an-eosio.token-token.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-transfer-an-eosio.token-token.md new file mode 100644 index 000000000..1d004f7f3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-transfer-an-eosio.token-token.md @@ -0,0 +1,19 @@ +## Обзор + +Здесь показано, как выполнить перевод основного токена сети через контракт `eosio.token` командой `cleos transfer` — типовая операция между аккаунтами при подключении к рабочей ноде. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Вы переводите токен, созданный контрактом eosio.token, и контракт eosio.token развёрнут в сети, к которой вы подключены. + +* Нужны базовые понятия: [транзакции](../../../transactions.md). Имейте в виду: переводы токенов на цепи необратимы. + +## Шаги + +Чтобы перевести `0.0001 SYS` на аккаунт `bob` с аккаунта `alice`, выполните: + +```sh +cleos transfer alice bob "0.0001 SYS" "Hodl!" -p alice@active +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-undelegate-CPU.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-undelegate-CPU.md new file mode 100644 index 000000000..6a41becd6 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-undelegate-CPU.md @@ -0,0 +1,27 @@ +## Обзор + +Здесь показано, как снять делегирование CPU с аккаунта получателя обратно на аккаунт-делегатор (`cleos system undelegatebw`). Снять делегирование может только тот аккаунт, который изначально делегировал ресурс. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md). + +## Шаги + +Снять делегирование 0.01 SYS пропускной способности CPU с аккаунта `alice` обратно на аккаунт `bob`: + +```sh +cleos system undelegatebw bob alice "0 SYS" "0.01 SYS" +``` + +Вывод должен быть примерно таким: + +```console +executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us +# eosio <= eosio::undelegatebw {"from":"alice","receiver":"bob","unstake_net_quantity":"0.0000 EOS","unstake_cpu_qu... +warning: transaction executed locally, but may not be confirmed by the network yet ] +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-undelegate-NET.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-undelegate-NET.md new file mode 100644 index 000000000..7ebad3c1d --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-undelegate-NET.md @@ -0,0 +1,27 @@ +## Обзор + +Здесь показано, как снять делегирование NET с аккаунта получателя обратно на аккаунт, который изначально делегировал ресурс (`cleos system undelegatebw`). Снять делегирование может только исходный делегатор. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md). + +## Шаги + +Снять делегирование 0.01 SYS пропускной способности сети с аккаунта `alice` обратно на аккаунт `bob`: + +```sh +cleos system undelegatebw bob alice "0 SYS" "0.01 SYS" +``` + +Вывод должен быть примерно таким: + +```console +executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us +# eosio <= eosio::undelegatebw {"from":"alice","receiver":"bob","unstake_net_quantity":"0.01 EOS","unstake_cpu_qu... +warning: transaction executed locally, but may not be confirmed by the network yet ] +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unlink-permission.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unlink-permission.md new file mode 100644 index 000000000..93d5a89bc --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unlink-permission.md @@ -0,0 +1,17 @@ +## Обзор + +Здесь показано, как убрать привязку разрешения к действию контракта (`cleos set action permission` с `NULL`), вернув для этого действия поведение по умолчанию. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Нужны базовые понятия: [аккаунт и уровни разрешений](../../../accounts.md), а также действие (action) смарт-контракта (см. [транзакции](../../../transactions.md)). + +## Шаги + +Удалите связанный уровень разрешения у действия `transfer` контракта `hodlcontract`: + +```sh +cleos set action permission alice hodlcontract transfer NULL +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unstake-CPU.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unstake-CPU.md new file mode 100644 index 000000000..f85ce6b0e --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unstake-CPU.md @@ -0,0 +1,27 @@ +## Обзор + +Здесь показано, как вывести стейк CPU со своего аккаунта через `cleos system undelegatebw`. Снять делегирование может только тот аккаунт, который изначально делегировал ресурс. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md). + +## Шаги + +Вывести стейк 0.01 SYS пропускной способности CPU с аккаунта `alice`: + +```sh +cleos system undelegatebw alice alice "0.01 SYS" "0 SYS" +``` + +Вывод должен быть примерно таким: + +```console +executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us +# eosio <= eosio::undelegatebw {"from":"alice","receiver":"alice","unstake_net_quantity":"0.0000 EOS","unstake_cpu_qu... +warning: transaction executed locally, but may not be confirmed by the network yet ] +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unstake-NET.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unstake-NET.md new file mode 100644 index 000000000..23a342cdb --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-unstake-NET.md @@ -0,0 +1,27 @@ +## Обзор + +Здесь показано, как вывести стейк NET со своего аккаунта через `cleos system undelegatebw`. Снять делегирование может только тот аккаунт, который изначально делегировал ресурс. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* Нужны базовые понятия: [аккаунт](../../../accounts.md) и [системные ресурсы NET/CPU](../../../system-resources.md). + +## Шаги + +Вывести стейк 0.01 SYS пропускной способности сети с аккаунта `alice`: + +```sh +cleos system undelegatebw alice alice "0 SYS" "0.01 SYS" +``` + +Вывод должен быть примерно таким: + +```console +executed transaction: e7e7edb6c5556de933f9d663fea8b4a9cd56ece6ff2cebf056ddd0835efa6606 184 bytes 452 us +# eosio <= eosio::undelegatebw {"from":"alice","receiver":"alice","unstake_net_quantity":"0.01 EOS","unstake_cpu_qu... +warning: transaction executed locally, but may not be confirmed by the network yet ] +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-vote.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-vote.md new file mode 100644 index 000000000..c27f81aa5 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/how-to-vote.md @@ -0,0 +1,28 @@ +## Обзор + +Здесь показано, как отдать голос за одного или нескольких производителей блоков через `cleos system voteproducer` в сети с классическим контрактом `eosio.system`. + +## Перед началом + +* Установлена поддерживаемая версия `cleos`. + +* Развёрнуты и используются эталонные системные контракты из репозитория `eosio.contracts` для управления системными ресурсами. + +* Полезно знать, кто такие производители блоков и как в вашей сети устроено голосование; общий контекст — в разделах [ноды и делегаты](../../../nodes.md) и [протоколы](../../../protocols.md). + +* Разблокируйте кошелёк. + +## Шаги + +Если вы голосуете за `blockproducer1` и `blockproducer2` с аккаунта `eosiotestts2`, выполните: + +```sh +cleos system voteproducer prods eosiotestts2 blockproducer1 blockproducer2 +``` + +Вывод должен быть примерно таким: + +```console +executed transaction: 2d8b58f7387aef52a1746d7a22d304bbbe0304481d7751fc4a50b619df62676d 128 bytes 374 us +# eosio <= eosio::voteproducer {"voter":"eosiotestts2","proxy":"","producers":["blockproducer1","blockproducer2"]} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/index.md b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/index.md new file mode 100644 index 000000000..206024f55 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/02_how-to-guides/index.md @@ -0,0 +1,29 @@ +# Руководства по cleos (how-to) + +Ниже — пошаговые заметки по **cleos**. + +- [Подключение к сети](how-to-connect-a-specific-network.md) +- [Создание кошелька](how-to-create-a-wallet.md) +- [Создание пары ключей](how-to-create-key-pairs.md) +- [Список пар ключей](how-to-list-all-key-pairs.md) +- [Импорт ключа](how-to-import-a-key.md) +- [Создание аккаунта](how-to-create-an-account.md) +- [Информация об аккаунте](how-to-get-account-information.md) +- [Мультисиг-аккаунт](how-to-config-a-multisig-account.md) +- [Связать разрешение](how-to-link-permission.md) +- [Отвязать разрешение](how-to-unlink-permission.md) +- [Информация о блоке](how-to-get-block-information.md) +- [Информация о транзакции](how-to-get-transaction-information.md) +- [Таблицы контракта](how-to-get-tables-information.md) +- [Отправка транзакции](how-to-submit-a-transaction.md) +- [Перевод токена eosio.token](how-to-transfer-an-eosio.token-token.md) +- [Покупка RAM](how-to-buy-ram.md) +- [Делегирование NET](how-to-delegate-net-resource.md) +- [Делегирование CPU](how-to-delegate-CPU-resource.md) +- [Снятие делегирования NET](how-to-undelegate-NET.md) +- [Снятие делегирования CPU](how-to-undelegate-CPU.md) +- [Вывод стейка NET](how-to-unstake-NET.md) +- [Вывод стейка CPU](how-to-unstake-CPU.md) +- [Стейк ресурса](how-to-stake-resource.md) +- [Развёртывание контракта](how-to-deploy-a-smart-contract.md) +- [Голосование](how-to-vote.md) diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/index.md new file mode 100644 index 000000000..d61d18740 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/index.md @@ -0,0 +1,8 @@ +## Описание +Упаковка и распаковка транзакций + +## Подкоманды +- [pack_transaction](pack_transaction.md) — из обычного подписанного JSON в упакованный вид +- [unpack_transaction](unpack_transaction.md) — из упакованного в обычный подписанный JSON +- [pack_action_data](pack_action_data.md) — из JSON данных действия в упакованный вид +- [unpack_action_data](unpack_action_data.md) — из упакованных данных действия в JSON diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/pack_action_data.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/pack_action_data.md new file mode 100644 index 000000000..c4bd7d936 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/pack_action_data.md @@ -0,0 +1,23 @@ +## Описание +Из JSON данных действия в упакованный вид + +## Позиционные параметры +- `account` _TEXT_ — аккаунт, на котором развёрнут контракт +- `name` _TEXT_ — имя вызываемого действия +- `unpacked_action_data` _TEXT_ — данные действия в JSON + +## Опции + +- `-h,--help` — вывести справку и выйти + +## Использование +```sh + cleos convert pack_action_data eosio unlinkauth '{"account":"test1", "code":"test2", "type":"eosioeosio"}' +``` + +## Вывод + + +```console +000000008090b1ca000000000091b1ca000075982aea3055 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/pack_transaction.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/pack_transaction.md new file mode 100644 index 000000000..55294cbaa --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/pack_transaction.md @@ -0,0 +1,50 @@ +## Описание + +Из обычного подписанного JSON в упакованный вид + +## Позиционные параметры + +- `transaction` _TEXT_ — обычная подписанная транзакция в JSON (строка) + +## Опции + +- `-h,--help` — вывести справку и выйти +- `--pack-action-data` — упаковать все данные действий внутри транзакции (требуется обращение к `nodeos`) + +## Использование + + +```sh +cleos convert pack_transaction '{ + "expiration": "2018-08-02T20:24:36", + "ref_block_num": 14207, + "ref_block_prefix": 1438248607, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [{ + "account": "eosio", + "name": "newaccount", + "authorization": [{ + "actor": "eosio", + "permission": "active" + } + ], + "data": "0000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d801000000" + } + ], + "transaction_extensions": [] +}' +``` + +## Вывод + +```json +{ + "signatures": [], + "compression": "none", + "packed_context_free_data": "", + "packed_trx": "8468635b7f379feeb95500000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d80100000000" +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/unpack_action_data.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/unpack_action_data.md new file mode 100644 index 000000000..d21d6db47 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/unpack_action_data.md @@ -0,0 +1,28 @@ +## Описание +Из упакованных данных действия в JSON + +## Позиционные параметры +- `account` _TEXT_ — аккаунт, на котором развёрнут контракт +- `name` _TEXT_ — имя вызываемого действия +- `packed_action_data` _TEXT_ — данные действия в виде упакованной hex-строки +## Опции + +- `-h,--help` — вывести справку и выйти + +## Использование + + +```sh + cleos convert unpack_action_data eosio unlinkauth 000000008090b1ca000000000091b1ca000075982aea3055 +``` + +## Вывод + + +```json +{ + "account": "test1", + "code": "test2", + "type": "eosioeosio" +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/unpack_transaction.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/unpack_transaction.md new file mode 100644 index 000000000..0d08f2ab8 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/convert/unpack_transaction.md @@ -0,0 +1,57 @@ +## Описание + +Из упакованного вида в обычный подписанный JSON + +## Позиционные параметры + +- `transaction` _TEXT_ — JSON упакованной транзакции (строка с полями `packed_trx` и при необходимости `compression`) + +## Опции + +- `-h,--help` — вывести справку и выйти +- `--unpack-action-data` — распаковать все данные действий внутри транзакции (требуется обращение к `nodeos`) + +## Использование + +```sh +cleos convert unpack_transaction '{ + "signatures": [ + "SIG_K1_KmRbWahefwxs6uyCGNR6wNRjw7cntEeFQhNCbyg8S92Kbp7zdSSVGTD2QS7pNVWgcU126zpxaBp9CwUxFpRwSnfkjd46bS" + ], + "compression": "none", + "packed_context_free_data": "", + "packed_trx": "8468635b7f379feeb95500000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d80100000000" +}' +``` + +## Вывод + + +```json +{ + "expiration": "2018-08-02T20:24:36", + "ref_block_num": 14207, + "ref_block_prefix": 1438248607, + "max_net_usage_words": 0, + "max_cpu_usage_ms": 0, + "delay_sec": 0, + "context_free_actions": [], + "actions": [{ + "account": "eosio", + "name": "newaccount", + "authorization": [{ + "actor": "eosio", + "permission": "active" + } + ], + "data": "0000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d801000000" + } + ], + "transaction_extensions": [], + "signatures": [ + "SIG_K1_KmRbWahefwxs6uyCGNR6wNRjw7cntEeFQhNCbyg8S92Kbp7zdSSVGTD2QS7pNVWgcU126zpxaBp9CwUxFpRwSnfkjd46bS" + ], + "context_free_data": [] +} + +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/account.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/account.md new file mode 100644 index 000000000..8f55bcdf7 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/account.md @@ -0,0 +1,72 @@ +## Описание +Создать новый аккаунт в блокчейне (предполагается, что системный контракт не ограничивает использование RAM) + +## Использование + +```console +Usage: cleos create account [OPTIONS] creator name OwnerKey [ActiveKey] + +Positionals: + creator TEXT The name of the account creating the new account (required) + name TEXT The name of the new account (required) + OwnerKey TEXT The owner public key or permission level for the new account (required) + ActiveKey TEXT The active public key or permission level for the new account + +Options: + -h,--help Print this help message and exit + -x,--expiration set the time in seconds before a transaction expires, defaults to 30s + -f,--force-unique force the transaction to be unique. this will consume extra bandwidth and remove any protections against accidently issuing the same transaction multiple times + -s,--skip-sign Specify if unlocked wallet keys should be used to sign transaction + -j,--json print result as json + --json-file TEXT save result in json format into a file + -d,--dont-broadcast don't broadcast transaction to the network (just print to stdout) + --return-packed used in conjunction with --dont-broadcast to get the packed transaction + -r,--ref-block TEXT set the reference block num or block id used for TAPOS (Transaction as Proof-of-Stake) + --use-old-rpc use old RPC push_transaction, rather than new RPC send_transaction + -p,--permission TEXT ... An account and permission level to authorize, as in 'account@permission' (defaults to 'creator@active') + --max-cpu-usage-ms UINT set an upper limit on the milliseconds of cpu usage budget, for the execution of the transaction (defaults to 0 which means no limit) + --max-net-usage UINT set an upper limit on the net usage budget, in bytes, for the transaction (defaults to 0 which means no limit) + --delay-sec UINT set the delay_sec seconds, defaults to 0s +``` + +## Команда +Для создания аккаунта нужна пара ключей COOPOS. Ключи COOPOS можно сгенерировать командой `cleos create key`. + +```sh +cleos create account inita tester EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA +``` + +## Вывод + +```json +{ + "transaction_id": "6acd2ece68c4b86c1fa209c3989235063384020781f2c67bbb80bc8d540ca120", + "processed": { + "refBlockNum": "25217", + "refBlockPrefix": "2095475630", + "expiration": "2017-07-25T17:54:55", + "scope": [ + "eos", + "inita" + ], + "signatures": [], + "messages": [{ + "code": "eos", + "type": "newaccount", + "authorization": [{ + "account": "inita", + "permission": "active" + } + ], + "data": "c9251a0000000000b44c5a2400000000010000000102bcca6347d828d4e1868b7dfa91692a16d5b20d0ee3d16a7ca2ddcc7f6dd03344010000010000000102bcca6347d828d4e1868b7dfa91692a16d5b20d0ee3d16a7ca2ddcc7f6dd03344010000010000000001c9251a000000000061d0640b000000000100010000000000000008454f5300000000" + } + ], + "output": [{ + "notify": [], + "sync_transactions": [], + "async_transactions": [] + } + ] + } +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/index.md new file mode 100644 index 000000000..6572e2f9f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/index.md @@ -0,0 +1,15 @@ +## Описание +Создать различные сущности вне и в блокчейне + +## Подкоманды +- [key](key.md) — создать новую пару ключей и вывести публичный и приватный ключ +- [account](account.md) — создать новый аккаунт в блокчейне + +```console +Create various items, on and off the blockchain +Usage: cleos create SUBCOMMAND + +Subcommands: + key Create a new keypair and print the public and private keys + account Create a new account on the blockchain +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/key.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/key.md new file mode 100644 index 000000000..873b211ae --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/create/key.md @@ -0,0 +1,28 @@ +## Описание + +Создаёт новую пару ключей и выводит публичный и приватный ключ + +## Использование + +```console +Usage: cleos create key [OPTIONS] + +Options: + -h,--help Print this help message and exit + --r1 Generate a key using the R1 curve (iPhone), instead of the K1 curve (Bitcoin) + -f,--file TEXT Name of file to write private/public key output to. (Must be set, unless "--to-console" is passed + --to-console Print private/public keys to console. +``` + +## Команда + +```sh +cleos create key -f passwd +``` + +## Вывод + +```console +Private key: 5KCkcSxYKZfh5Cr8CCunS2PiUKzNZLhtfBjudaUnad3PDargFQo +Public key: EOS5uHeBsURAT6bBXNtvwKtWaiDSDJSdSmc96rHVws5M1qqVCkAm6 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/abi.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/abi.md new file mode 100644 index 000000000..81802e8d3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/abi.md @@ -0,0 +1,18 @@ +## Описание +Получить ABI аккаунта + +## Позиционные параметры +- `name` _TEXT_ — аккаунт, чей ABI нужно получить + +## Опции +- `-f,--file` _TEXT_ — файл для сохранения `.abi` вместо вывода в консоль + +## Примеры +Получить и сохранить ABI контракта eosio.token + +```sh +cleos get abi eosio.token -f eosio.token.abi +``` +```console +saving abi to eosio.token.abi +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/account.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/account.md new file mode 100644 index 000000000..2b56b1ebd --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/account.md @@ -0,0 +1,109 @@ +## Описание +Получить аккаунт из блокчейна + +## Позиционные параметры +- `name` _TEXT_ — имя запрашиваемого аккаунта +- `core-symbol` _TEXT_ — ожидаемый базовый символ сети + +## Опции +- `-j,--json` — вывод в формате JSON + +## Примеры + +### Форматированные данные для пользователя **eosio** + +```sh +cleos get account eosio +``` +```console +privileged: true +permissions: + owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV + active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV +memory: + quota: -1 bytes used: 1.22 Mb + +net bandwidth: (averaged over 3 days) + used: -1 bytes + available: -1 bytes + limit: -1 bytes + +cpu bandwidth: (averaged over 3 days) + used: -1 us + available: -1 us + limit: -1 us + +producers: +``` +### JSON для пользователя **eosio** + +```sh +cleos get account eosio --json +``` +```json +{ + "account_name": "eosio", + "privileged": true, + "last_code_update": "2018-05-23T18:00:25.500", + "created": "2018-03-02T12:00:00.000", + "ram_quota": -1, + "net_weight": -1, + "cpu_weight": -1, + "net_limit": { + "used": -1, + "available": -1, + "max": -1 + }, + "cpu_limit": { + "used": -1, + "available": -1, + "max": -1 + }, + "ram_usage": 1279625, + "permissions": [{ + "perm_name": "active", + "parent": "owner", + "required_auth": { + "threshold": 1, + "keys": [{ + "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "weight": 1 + } + ], + "accounts": [], + "waits": [] + } + },{ + "perm_name": "owner", + "parent": "", + "required_auth": { + "threshold": 1, + "keys": [{ + "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "weight": 1 + } + ], + "accounts": [], + "waits": [] + } + } + ], + "total_resources": null, + "delegated_bandwidth": null, + "voter_info": { + "owner": "eosio", + "proxy": "", + "producers": [], + "staked": 0, + "last_vote_weight": "0.00000000000000000", + "proxied_vote_weight": "0.00000000000000000", + "is_proxy": 0, + "deferred_trx_id": 0, + "last_unstake_time": "1970-01-01T00:00:00", + "unstaking": "0.0000 SYS" + } +} +``` + +## См. также +- Протокольный документ [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md). diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/accounts.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/accounts.md new file mode 100644 index 000000000..0231027cb --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/accounts.md @@ -0,0 +1,21 @@ +## Описание +Получить все аккаунты, связанные с указанным публичным ключом + +!!! note + Команда не возвращает привилегированные аккаунты. + +## Позиционные параметры +`public_key` _TEXT_ — публичный ключ для поиска аккаунтов +## Опции +- `-j,--json` — вывод в формате JSON +## Пример + + +```sh +cleos get accounts EOS8mUftJXepGzdQ2TaCduNuSPAfXJHf22uex4u41ab1EVv9EAhWt +{ + "account_names": [ + "testaccount" + ] +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/actions.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/actions.md new file mode 100644 index 000000000..0a6c54df0 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/actions.md @@ -0,0 +1,32 @@ +## Описание +Получить действия, где заданный аккаунт указан в авторизации или как получатель + +## Позиционные параметры +- `account_name` _TEXT_ — аккаунт для запроса (обязательно) +- `pos` _INT_ — порядковый номер действия для этого аккаунта, -1 — последнее (необязательно) +- `offset` _INT_ — диапазон действий: при положительном offset — [pos, pos + offset], при отрицательном — [pos - offset, pos] + +## Опции + +- `-j,--json` — полный JSON +- `--full` — не обрезать вывод действия +- `--pretty` — форматировать полный JSON действия +- `--console` — вывести консольный вывод, сгенерированный действием + +## Примеры +Список действий для eosio.token + +```sh +cleos get actions eosio.token +``` +```console +# seq when contract::action => receiver trx id... args +================================================================================================================ +# 976 2018-06-01T19:54:05.000 eosio.token::transfer => eosio.token 1d1fe154... {"from":"userae","to":"useraa","quantity":"0.000... +# 977 2018-06-01T19:54:05.000 eosio.token::transfer => eosio.token a0c9e5bc... {"from":"userab","to":"useraa","quantity":"0.000... +# 978 2018-06-01T19:54:05.000 eosio.token::transfer => eosio.token 3749d0d1... {"from":"userab","to":"userah","quantity":"0.000... +# 979 2018-06-01T19:54:05.000 eosio.token::transfer => eosio.token dda205b0... {"from":"userai","to":"useraj","quantity":"0.000... +# 980 2018-06-01T19:54:05.000 eosio.token::transfer => eosio.token 14089e9b... {"from":"userab","to":"userae","quantity":"0.000... +# 981 2018-06-01T19:54:05.000 eosio.token::transfer => eosio.token 6882cefc... {"from":"useraj","to":"userab","quantity":"0.000... +... +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/block.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/block.md new file mode 100644 index 000000000..e5c2c2dc0 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/block.md @@ -0,0 +1,69 @@ +## Описание +Получить полный блок из блокчейна + +## Позиционные параметры +- `block` _TEXT_ — номер **или** id блока +## Опции +- `--header-state` — состояние заголовка блока из fork database +- `--info` — краткая информация о блоке только по номеру +## Пример + +### Полный блок: + +```sh +cleos get block 1 +``` +или +```sh +cleos get block 0000000130d70e94e0022fd2fa035cabb9e542c34ea27f572ac90b5a7aa3d891 +``` + +Вывод — объект блока, похожий на следующий: + +```json +{ + "timestamp": "2018-03-02T12:00:00.000", + "producer": "", + "confirmed": 1, + "previous": "0000000000000000000000000000000000000000000000000000000000000000", + "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000", + "action_mroot": "0000000000000000000000000000000000000000000000000000000000000000", + "schedule_version": 0, + "new_producers": null, + "header_extensions": [], + "producer_signature": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne", + "transactions": [], + "block_extensions": [], + "id": "0000000130d70e94e0022fd2fa035cabb9e542c34ea27f572ac90b5a7aa3d891", + "block_num": 1, + "ref_block_prefix": 3526296288 +} +``` + +### Информация о блоке: + +```sh +cleos get block --info 1 +``` + +Вывод — объект block info, похожий на следующий: + +```json +{ + "block_num": 1, + "ref_block_num": 1, + "id": "0000000130d70e94e0022fd2fa035cabb9e542c34ea27f572ac90b5a7aa3d891", + "timestamp": "2018-03-02T12:00:00.000", + "producer": "", + "confirmed": 1, + "previous": "0000000000000000000000000000000000000000000000000000000000000000", + "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000", + "action_mroot": "0000000000000000000000000000000000000000000000000000000000000000", + "schedule_version": 0, + "producer_signature": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne", + "ref_block_prefix": 3526296288 +} +``` + +## Примечания +Объект block info фиксированного размера и не содержит полей: new_producers, header_extensions, transactions, block_extensions. diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/code.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/code.md new file mode 100644 index 000000000..e015845ac --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/code.md @@ -0,0 +1,38 @@ +## Описание +Получить код и ABI аккаунта + +## Позиционные параметры +- `name` _TEXT_ — аккаунт, чей код нужно получить +## Опции +- `-c,--code` _TEXT_ — файл для сохранения контракта _.wast_ +- `-a,--abi` _TEXT_ — файл для сохранения контракта _.abi_ +- `--wasm` — сохранить контракт как wasm +## Примеры +Вывести только хэш кода контракта eosio.token + +```sh +cleos get code eosio.token +``` +```console +code hash: f675e7aeffbf562c033acfaf33eadff255dacb90d002db51c7ad7cbf057eb791 +``` + +Получить и сохранить ABI контракта eosio.token + +```sh +cleos get code eosio.token -a eosio.token.abi +``` +```console +code hash: f675e7aeffbf562c033acfaf33eadff255dacb90d002db51c7ad7cbf057eb791 +saving abi to eosio.token.abi +``` + +Получить и сохранить WAST контракта eosio.token + +```sh +cleos get code eosio.token -c eosio.token.wast +``` +```console +code hash: f675e7aeffbf562c033acfaf33eadff255dacb90d002db51c7ad7cbf057eb791 +saving wast to eosio.token.wast +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency-balance.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency-balance.md new file mode 100644 index 000000000..199e519c4 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency-balance.md @@ -0,0 +1,23 @@ +## Описание + +Получить баланс аккаунта для заданной валюты + +## Позиционные параметры +`contract` _TEXT_ — контракт, управляющий валютой + +`account` _TEXT_ — аккаунт, по которому запрашиваются балансы + +`symbol` _TEXT_ — символ валюты, если контракт обслуживает несколько валют + +## Опции +У этой подкоманды нет опций + +## Пример +Баланс eosio у контракта eosio.token для символа SYS. + +```sh +cleos get currency balance eosio.token eosio SYS +``` +```console +999999920.0000 SYS +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency-stats.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency-stats.md new file mode 100644 index 000000000..295573e3c --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency-stats.md @@ -0,0 +1,24 @@ +## Описание +Получить статистику для заданной валюты + +## Позиционные параметры +`contract` _TEXT_ — контракт, управляющий валютой + +`symbol` _TEXT_ — символ валюты, если контракт обслуживает несколько валют +## Опции +У этой подкоманды нет опций +## Пример +Статистика токена SYS контракта eosio.token. + +```sh +cleos get currency stats eosio.token SYS +``` +```json +{ + "SYS": { + "supply": "1000000000.0000 SYS", + "max_supply": "10000000000.0000 SYS", + "issuer": "eosio" + } +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency.md new file mode 100644 index 000000000..2098de84f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/currency.md @@ -0,0 +1,8 @@ +## Описание + +Подкоманды для работы со стандартными валютами + +## Подкоманды +[currency balance](currency-balance.md) — баланс аккаунта для заданной валюты + +[currency stats](currency-stats.md) — статистика для заданной валюты diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/index.md new file mode 100644 index 000000000..daa5cd9af --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/index.md @@ -0,0 +1,19 @@ +## Описание + +Получить различные данные и сведения из блокчейна + +## Подкоманды +- [info](info.md) — текущая информация о блокчейне +- [block](block.md) — полный блок из блокчейна +- [account](account.md) — аккаунт из блокчейна +- [code](code.md) — код и ABI аккаунта +- [abi](abi.md) — ABI аккаунта +- [table](table.md) — содержимое таблицы БД +- [scope](scope.md) — список scope и таблиц контракта +- [currency](currency.md) — сведения о стандартных валютах +- [accounts](accounts.md) — аккаунты, связанные с публичным ключом +- [servants](servants.md) — аккаунты-подчинённые (servants) для заданного аккаунта +- [transaction](transaction.md) — транзакция из блокчейна +- [actions](actions.md) — действия, где в авторизации или у получателя указан заданный аккаунт +- [schedule](schedule.md) — расписание продюсеров +- [transaction_id](transaction_id.md) — id транзакции по объекту транзакции diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/info.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/info.md new file mode 100644 index 000000000..0ba48b668 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/info.md @@ -0,0 +1,29 @@ +## Описание + +Получить текущую информацию о блокчейне + +## Позиционные параметры +Параметры не принимаются. +## Опции +- `-h`, `--help` — вывести справку и выйти +## Пример + + +```sh +cleos get info +``` + +Команда возвращает текущее состояние блокчейна. + +```json +{ + "server_version": "7451e092", + "head_block_num": 6980, + "last_irreversible_block_num": 6963, + "head_block_id": "00001b4490e32b84861230871bb1c25fb8ee777153f4f82c5f3e4ca2b9877712", + "head_block_time": "2017-12-07T09:18:48", + "head_block_producer": "initp", + "recent_slots": "1111111111111111111111111111111111111111111111111111111111111111", + "participation_rate": "1.00000000000000000" +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/schedule.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/schedule.md new file mode 100644 index 000000000..701bf0917 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/schedule.md @@ -0,0 +1,29 @@ +## Описание + +Получить расписание продюсеров + + +## Опции +- `-h`, `--help` — вывести справку и выйти + +- `-j`, `--json` — вывод в формате JSON + + +## Пример + +```sh +cleos get schedule +``` + +Команда возвращает текущее расписание продюсеров. + +```console +active schedule version 0 + Producer Producer key + ============= ================== + eosio EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV + +pending schedule empty + +proposed schedule empty +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/scope.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/scope.md new file mode 100644 index 000000000..99523c042 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/scope.md @@ -0,0 +1,12 @@ +## Описание +Получить список scope и таблиц, принадлежащих контракту + +## Позиционные параметры +- `contract` _TEXT_ — владелец таблицы + +## Опции +- `-t,--table` _TEXT_ — фильтр по имени таблицы +- `-l,--limit` _UINT_ — максимальное число возвращаемых строк +- `-L,--lower` _TEXT_ — нижняя граница scope +- `-U,--upper` _TEXT_ — верхняя граница scope +- `-r,--reverse` — обход в обратном порядке diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/servants.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/servants.md new file mode 100644 index 000000000..df4d25b7c --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/servants.md @@ -0,0 +1,34 @@ +## Описание +Получить аккаунты-подчинённые (controlled) для заданного аккаунта + +## Сведения + +**Команда** + +```sh +cleos get servants +``` +**Вывод** + +```console +Usage: cleos get servants account + +Positionals: + account TEXT The name of the controlling account +``` + +## Команда + +```sh +cleos get servants inita +``` + +## Вывод + +```json +{ + "controlled_accounts": [ + "tester" + ] +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/table.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/table.md new file mode 100644 index 000000000..b3957749f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/table.md @@ -0,0 +1,47 @@ +## Описание + +Получить содержимое таблицы базы данных + +## Позиционные параметры +`account` _TEXT_ — аккаунт, на котором развёрнут смарт-контракт, владеющий таблицей + +`scope` _TEXT_ — scope внутри контракта, в котором находится таблица + +`table` _TEXT_ — имя таблицы по ABI контракта + +## Опции +`-l,--limit` _UINT_ — максимальное число возвращаемых строк + +`-k,--key` _TEXT_ — (устарело) имя ключа для индексации по ABI, по умолчанию первичный ключ + +`-L,--lower` _TEXT_ — JSON нижней границы ключа, по умолчанию первая запись + +`-U,--upper` _TEXT_ — JSON верхней границы ключа, по умолчанию последняя запись + +`--index` _TEXT_ — номер индекса: `1` — primary (первый), `2` — вторичный (в порядке multi_index), `3` — третий и т.д. Можно указать номер или имя индекса, например `secondary` или `2` + +`--key-type` _TEXT_ — тип ключа для `--index`; для primary только `i64`. Остальные поддерживают `i64`, `i128`, `i256`, `float64`, `float128`, `ripemd160`, `sha256`. Специальный тип `name` — имя аккаунта + +`--encode-type` _TEXT_ — кодировка для `--key_type`: `dec` для десятичного представления (`i[64|128|256]`, `float[64|128]`); `hex` для шестнадцатеричного (`i256`, `ripemd160`, `sha256`) + +`-b,--binary` _UINT_ — вернуть значение в BINARY без интерпретации ABI как JSON + +`-r,--reverse` — обход в обратном порядке + +`--show-payer` — показать плательщика RAM + +## Пример +Данные таблицы `accounts` контракта eosio.token для пользователя eosio, + +```sh +cleos get table eosio.token eosio accounts +``` +```json +{ + "rows": [{ + "balance": "999999920.0000 SYS" + } + ], + "more": false +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction-status.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction-status.md new file mode 100644 index 000000000..00d00c62f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction-status.md @@ -0,0 +1,38 @@ +## Описание + +Текущее состояние цепочки и при наличии — информация о статусе транзакции по её id. + +Для работы запроса должна быть включена функция статуса финальности транзакций: в плагине chain у `nodeos` задать опцию `--transaction-finality-status-max-storage-size-gb \`. + +## Позиционные параметры + +- `id` _TEXT_ — id транзакции для запроса статуса (обязательно) + +## Опции +- `-h`, `--help` — вывести справку и выйти +## Пример + + +```sh +cleos get transaction-status 6438df82216dfaf46978f703fb818b49110dbfc5d9b521b5d08c342277438b29 +``` + +Команда возвращает состояние цепочки и при наличии — статус транзакции. + +```json +{ + "state": "IN_BLOCK", + "block_number": 90, + "block_id": "0000005accfd59ba80a05380f60d51687406337b2aedd28b7daa33fdb8c16b5a", + "block_timestamp": "2022-04-27T16:11:26.500", + "expiration": "2022-04-27T16:11:56.000", + "head_number": 186, + "head_id": "000000bab27da51f76f483bb629b532510c22e2eb1acc632f5b37b421adecf63", + "head_timestamp": "2022-04-27T16:12:14.500", + "irreversible_number": 25, + "irreversible_id": "0000001922118216bc16bf2c60d950598d80af3beca820eab751f7beecdb29e4", + "irreversible_timestamp": "2022-04-27T16:10:54.000", + "earliest_tracked_block_id": "000000129cee97f3e27312f0184d52d006a470f0e620553dfb4c5b4f3c856ab2", + "earliest_tracked_block_number": 18 +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction.md new file mode 100644 index 000000000..44e571a65 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction.md @@ -0,0 +1,79 @@ +## Описание +Получить транзакцию из блокчейна + +## Позиционные параметры +`id` _TEXT_ — id запрашиваемой транзакции + +## Опции +`-b,--block-hint` UINT — номер блока, в котором транзакция может находиться + +**Команда** + +```sh +cleos get transaction +``` +**Вывод** + +## Пример + +```sh +cleos get transaction eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703 +``` +```json +{ + "transaction_id": "eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703", + "processed": { + "refBlockNum": 2206, + "refBlockPrefix": 221394282, + "expiration": "2017-09-05T08:03:58", + "scope": [ + "inita", + "tester" + ], + "signatures": [ + "1f22e64240e1e479eee6ccbbd79a29f1a6eb6020384b4cca1a958e7c708d3e562009ae6e60afac96f9a3b89d729a50cd5a7b5a7a647540ba1678831bf970e83312" + ], + "messages": [{ + "code": "eos", + "type": "transfer", + "authorization": [{ + "account": "inita", + "permission": "active" + } + ], + "data": { + "from": "inita", + "to": "tester", + "amount": 1000, + "memo": "" + }, + "hex_data": "000000008040934b00000000c84267a1e80300000000000000" + } + ], + "output": [{ + "notify": [{ + "name": "tester", + "output": { + "notify": [], + "sync_transactions": [], + "async_transactions": [] + } + },{ + "name": "inita", + "output": { + "notify": [], + "sync_transactions": [], + "async_transactions": [] + } + } + ], + "sync_transactions": [], + "async_transactions": [] + } + ] + } +} +``` + +!!! note "Важно" + Указанный id транзакции может отсутствовать в вашей цепочке diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction_id.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction_id.md new file mode 100644 index 000000000..277779a4f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/get/transaction_id.md @@ -0,0 +1,10 @@ +## Описание +Получить id транзакции по объекту транзакции + +## Позиционные параметры + +- `transaction` _TEXT_ — JSON-строка или файл с транзакцией, для которой нужен id (обязательно) + +## Опции + + `-h,--help` — вывести справку и выйти \ No newline at end of file diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/index.md new file mode 100644 index 000000000..142cc8c10 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/index.md @@ -0,0 +1,19 @@ +Документация по основным командам `cleos` + +## Команды +- [version](version) — сведения о версии +- [create](create) — создать различные сущности вне и в блокчейне +- [convert](convert) — упаковка и распаковка транзакций +- [get](get) — получить данные и сведения из блокчейна +- [set](set) — задать или обновить состояние блокчейна +- [transfer](transfer.md) — перевести токены с одного аккаунта на другой +- [net](net) — работа с локальными p2p-подключениями +- [wallet](wallet) — работа с локальным кошельком +- [sign](sign.md) — подписать транзакцию +- [push](push) — отправить произвольные транзакции в блокчейн +- [multisig](multisig) — команды контракта multisig + +[//]: # ( THIS IS A COMMENT FOLLOWING LINE HAD JS COMMENTS JS COMMENTS BREAK MDX ) +[//]: # ( wrap wrap - Wrap contract commands ) + +- [system](system) — отправить действие контракта eosio.system в блокчейн. diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/index.md new file mode 100644 index 000000000..132709f08 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/index.md @@ -0,0 +1,12 @@ +## Описание +Команды контракта multisig + +## Подкоманды +- [multisig propose](multisig-propose.md) — предложить транзакцию +- [multisig review](multisig-review.md) — просмотреть транзакцию +- [multisig approve](multisig-approve.md) — одобрить предложенную транзакцию +- [multisig unapprove](multisig-unapprove.md) — снять одобрение с предложенной транзакции + +- [multisig invalidate](multisig-invalidate.md) — аннулировать все одобрения multisig аккаунта +- [multisig cancel](multisig-cancel.md) — отменить предложенную транзакцию +- [multisig exec](multisig-exec.md) — выполнить предложенную транзакцию diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-approve.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-approve.md new file mode 100644 index 000000000..39ad71c9a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-approve.md @@ -0,0 +1,23 @@ +## Описание +Одобрить предложенную транзакцию + +## Позиционные аргументы +- `proposer` _TEXT_ — имя предлагающего (строка) +- `proposal_name` _TEXT_ — имя предложения (строка) +- `permissions` _TEXT_ — JSON-строка или файл с разрешениями одобрения +- `proposal_hash` _TEXT_ — хэш предложенной транзакции (например id транзакции) как необязательное условие одобрения + +## Опции + +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-j,--json` — вывести результат в JSON +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-cancel.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-cancel.md new file mode 100644 index 000000000..1c034f97a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-cancel.md @@ -0,0 +1,18 @@ +## Описание +Отменить предложенную транзакцию + +## Позиционные аргументы +- `proposer` _TEXT_ — имя предлагающего (строка) +- `proposal_name` _TEXT_ — имя предложения (строка) +- `canceler` _TEXT_ — имя отменяющего (строка) +## Опции +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-exec.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-exec.md new file mode 100644 index 000000000..97a547158 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-exec.md @@ -0,0 +1,19 @@ +## Описание + +Выполнить предложенную транзакцию + +## Позиционные аргументы +- `proposer` _TEXT_ — имя предлагающего (строка) +- `proposal_name` _TEXT_ — имя предложения (строка) +- `executer` _TEXT_ — аккаунт, оплачивающий выполнение (строка) +## Опции +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-invalidate.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-invalidate.md new file mode 100644 index 000000000..973a2d065 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-invalidate.md @@ -0,0 +1,19 @@ +## Описание +Аннулировать все одобрения multisig для аккаунта + +## Позиционные параметры: + invalidator TEXT имя аннулирующего (строка) (обязательно) + +## Опции: + - `-h,--help` — вывести справку и выйти + - `-x,--expiration` — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + - `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + - `-j,--json` — вывести результат в JSON + - `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию + - `-r,--ref-block` TEXT — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + - `-p,--permission` TEXT ... — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `invalidator@active`) + - `--max-cpu-usage-ms` UINT — верхний предел миллисекунд бюджета CPU (0 — без ограничения) + - `--max-net-usage` UINT — верхний предел бюджета net в байтах (0 — без ограничения) + - `--delay-sec` UINT — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-propose.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-propose.md new file mode 100644 index 000000000..55e0b645a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-propose.md @@ -0,0 +1,23 @@ +## Описание +Предложить действие (action) + +## Позиционные аргументы +`proposal_name` _TEXT_ — имя предложения (строка) +`requested_permissions` _TEXT_ — JSON-строка или файл с запрашиваемыми разрешениями +`trx_permissions` _TEXT_ — JSON-строка или файл с разрешениями транзакции +`contract` _TEXT_ — контракт, которому должна быть доставлена отложенная транзакция +`action` _TEXT_ — действие отложенной транзакции +`data` _TEXT_ — JSON-строка или файл с данными предлагаемого действия +`proposer` _TEXT_ — аккаунт, предлагающий транзакцию +`proposal_expiration` _UINT_ — срок действия предложения в часах +## Опции +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-propose_trx.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-propose_trx.md new file mode 100644 index 000000000..801849889 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-propose_trx.md @@ -0,0 +1,26 @@ +## Описание +Предложить транзакцию + +## Позиционные аргументы + +`proposal_name` _TEXT_ — имя предложения (строка) +`requested_permissions` _TEXT_ — JSON-строка или файл с запрашиваемыми разрешениями +`trx_permissions` _TEXT_ — JSON-строка или файл с разрешениями транзакции +`contract` _TEXT_ — контракт, которому должна быть доставлена отложенная транзакция +`action` _TEXT_ — действие отложенной транзакции +`data` _TEXT_ — JSON-строка или файл с данными предлагаемого действия +`proposer` _TEXT_ — аккаунт, предлагающий транзакцию +`proposal_expiration` _UINT_ — срок действия предложения в часах + +## Опции + +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-review.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-review.md new file mode 100644 index 000000000..544fc4fa9 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-review.md @@ -0,0 +1,17 @@ +## Описание +Просмотреть транзакцию + +## Позиционные аргументы +- `proposer` _TEXT_ — имя предлагающего (строка) +- `proposal_name` _TEXT_ — имя предложения (строка) +## Опции +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-unapprove.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-unapprove.md new file mode 100644 index 000000000..438590dfd --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/multisig/multisig-unapprove.md @@ -0,0 +1,20 @@ +## Описание +Снять одобрение с предложенной транзакции + +--- +## Позиционные аргументы +- `proposer` _TEXT_ — имя предлагающего (строка) +- `proposal_name` _TEXT_ — имя предложения (строка) +- `permissions` _TEXT_ — JSON-строка или файл с разрешениями одобрения +## Опции +- `-h,--help` — вывести справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +- `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — аккаунт и уровень разрешения в виде `account@permission` (по умолчанию `account@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/connect.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/connect.md new file mode 100644 index 000000000..1ddc2cb6d --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/connect.md @@ -0,0 +1,58 @@ +## Команда +```sh +cleos net connect [OPTIONS] host +``` + +**Где:** +* [OPTIONS] = см. раздел **Опции** (уточняется) + +[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN ) +[//]: # (in the **Command Usage** command-usage section below.) + +* host — хост:порт для подключения + +**Примечание:** аргументы и опции в квадратных скобках необязательны. + +## Описание +Установить новое подключение к указанному пиру. Оператор узла может выполнить команду без перезапуска `nodeos`. + +## Использование команды +Позиционные параметры и опции `cleos net connect`: + +### Позиционные параметры +* `host` _TEXT_ ОБЯЗАТЕЛЬНО — хост:порт для подключения + +### Опции +* `-h,--help` — вывести справку и выйти + +## Требования + +* Установлена поддерживаемая версия `cleos`. +!!! note "Примечание" + `cleos` входит в состав COOPOS. [Установка COOPOS](../../../00_install/index.md) ставит `cleos` и `keosd`. +* Доступ к узлу с загруженным [`net_api_plugin`](../../../01_nodeos/03_plugins/net_api_plugin/index.md). + +## Примеры + +* Узел по умолчанию (`http://127.0.0.1:8888`) подключается к пиру `localhost:9002`: +```sh +cleos net connect localhost:9002 +``` +**Вывод:** +```console +"added connection" +``` + +* Узел `http://127.0.0.1:8001` подключается к пиру `localhost:9002`: +```sh +cleos -u http://127.0.0.1:8001 net connect localhost:9002 +``` +**Вывод:** +```console +"added connection" +``` + +**Примечание:** при повторном выполнении `cleos` ожидаемо выводит: +```console +"already connected" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/disconnect.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/disconnect.md new file mode 100644 index 000000000..bdc8efe2b --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/disconnect.md @@ -0,0 +1,56 @@ +## Команда +```sh +cleos net disconnect [OPTIONS] host +``` + +**Где:** +* [OPTIONS] = см. раздел **Опции** (уточняется) + +[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN ) +[//]: # (in the **Command Usage** command-usage section below.) + +**Примечание:** аргументы и опции в квадратных скобках необязательны. + +## Описание +Закрыть существующее подключение к указанному пиру. Оператор узла может выполнить команду без перезапуска `nodeos`. + +## Использование команды +Позиционные параметры и опции `cleos net disconnect`: + +### Позиционные параметры +* `host` _TEXT_ ОБЯЗАТЕЛЬНО — хост:порт для отключения + +### Опции +* `-h,--help` — вывести справку и выйти + +## Требования + +* Установлена поддерживаемая версия `cleos`. +!!! note "Примечание" + `cleos` входит в состав COOPOS. [Установка COOPOS](../../../00_install/index.md) ставит `cleos` и `keosd`. +* Доступ к узлу с загруженным [`net_api_plugin`](../../../01_nodeos/03_plugins/net_api_plugin/index.md). + +## Примеры + +* Узел по умолчанию отключается от пира `localhost:9002`: +```sh +cleos net disconnect localhost:9002 +``` +**Вывод:** +```console +"connection removed" +``` + +* Узел `http://127.0.0.1:8001` отключается от пира `localhost:9002`: +```sh +cleos -u http://127.0.0.1:8001 net disconnect localhost:9002 +``` +**Вывод:** +```console +"connection removed" +``` + +**Примечание:** при повторном выполнении `cleos` ожидаемо выводит: +```console +"no known connection for host" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/index.md new file mode 100644 index 000000000..ef4799ab3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/index.md @@ -0,0 +1,18 @@ +## Описание +Работа с локальными p2p-подключениями. + +## Команда + +```console +Usage: cleos net SUBCOMMAND +``` + +## Подкоманды + + - [cleos net connect](connect.md) — установить новое подключение к пиру + + - [cleos net disconnect](disconnect.md) — закрыть существующее подключение + + - [cleos net status](status.md) — статус существующего подключения + + - [cleos net peers](peers.md) — статус всех пиров diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/peers.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/peers.md new file mode 100644 index 000000000..4b538d7cd --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/peers.md @@ -0,0 +1,112 @@ +## Команда +```sh +cleos net peers [OPTIONS] +``` + +**Где:** +* [OPTIONS] = см. раздел **Опции** (уточняется) + +[//]: # (in the **Command Usage** command-usage section below.) + +**Примечание:** аргументы и опции в квадратных скобках необязательны. + +## Описание +Возвращает список со статусом всех peer-подключений. Позволяет оператору узла проверить состояние подключений. + +## Использование команды +Позиционные параметры и опции `cleos net peers`: + +### Позиционные параметры +* `host` _TEXT_ ОБЯЗАТЕЛЬНО — хост:порт для отключения + +### Опции +* `-h,--help` — вывести справку и выйти + +## Требования + +* Установлена поддерживаемая версия `cleos`. +!!! note "Примечание" + `cleos` входит в состав COOPOS. [Установка COOPOS](../../../00_install/index.md) ставит `cleos` и `keosd`. +* Доступ к узлу с загруженным [`net_api_plugin`](../../../01_nodeos/03_plugins/net_api_plugin/index.md). + +## Примеры + +* Статус всех пиров для узла `http://127.0.0.1:8001`: + +```sh +cleos -u http://127.0.0.1:8001 net peers +``` +**Вывод:** +```json +[{ + "peer": "", + "connecting": false, + "syncing": false, + "last_handshake": { + "network_version": 1210, + "chain_id": "60fb0eb4742886af8a0e147f4af6fd363e8e8d8f18bdf73a10ee0134fec1c551", + "node_id": "58ed23173cd4ed89ae90c2e65f5c29bb51e233e78d730d72220b6d84543bfc08", + "key": "EOS1111111111111111111111111111111114T1Anm", + "time": "1621013128445696000", + "token": "0000000000000000000000000000000000000000000000000000000000000000", + "sig": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne", + "p2p_address": "127.0.0.1:9005 - 58ed231", + "last_irreversible_block_num": 127, + "last_irreversible_block_id": "0000007f97323fae098048ae41f22a99238afc5db56cad17f50304919d21e1c2", + "head_num": 128, + "head_id": "0000008072eb0fc043770e44a5db5dedfbd86db9aa5c41b28618f1b9343c2d22", + "os": "osx", + "agent": "EOS Test Agent", + "generation": 4 + } + },{ + "peer": "", + "connecting": false, + "syncing": false, + "last_handshake": { + "network_version": 1210, + "chain_id": "60fb0eb4742886af8a0e147f4af6fd363e8e8d8f18bdf73a10ee0134fec1c551", + "node_id": "2101bd8d770e8eabb3e69cb981db4350b494a04cd5b7a7cea0cd3070aa722306", + "key": "EOS1111111111111111111111111111111114T1Anm", + "time": "1621013129884873000", + "token": "0000000000000000000000000000000000000000000000000000000000000000", + "sig": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne", + "p2p_address": "127.0.0.1:9017 - 2101bd8", + "last_irreversible_block_num": 129, + "last_irreversible_block_id": "0000008117074454dbaa7e8662c6f3d6918e776cc063c45f52b37bdc945ddc5d", + "head_num": 130, + "head_id": "0000008248cc3498b4bbf14a183711d9a73a36517a8069367a343bd4060fed14", + "os": "osx", + "agent": "EOS Test Agent", + "generation": 3 + } + },{ + + ... + + },{ + "peer": "", + "connecting": false, + "syncing": false, + "last_handshake": { + "network_version": 1210, + "chain_id": "60fb0eb4742886af8a0e147f4af6fd363e8e8d8f18bdf73a10ee0134fec1c551", + "node_id": "d9eb85085d09581521d0ec53b87a9657d0176c74fdf8657c56b09a91b3821c6f", + "key": "EOS1111111111111111111111111111111114T1Anm", + "time": "1621013127894327000", + "token": "0000000000000000000000000000000000000000000000000000000000000000", + "sig": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne", + "p2p_address": "127.0.0.1:9002 - d9eb850", + "last_irreversible_block_num": 125, + "last_irreversible_block_id": "0000007d9a3b9cf6a61776ba1bbce226754aefcad664338d2acb5be34cc53a5b", + "head_num": 126, + "head_id": "0000007eccafd4f32a437b5fd8b111b326e2da8d0bcb832036984841b81ab64e", + "os": "osx", + "agent": "EOS Test Agent", + "generation": 4 + } + } +] +``` + +**Примечание:** поле `last_handshake` содержит состояние цепочки пира на момент последнего handshake с узлом. Подробнее — [Handshake Message](/protocol-guides/03_network_peer_protocol.md#421-handshake-message) в документе *Network Peer Protocol*. diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/status.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/status.md new file mode 100644 index 000000000..fb777b9a2 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/net/status.md @@ -0,0 +1,68 @@ +## Команда +```sh +cleos net status [OPTIONS] host +``` + +**Где:** +* [OPTIONS] = см. раздел **Опции** (уточняется) + +[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN ) +[//]: # (in the **Command Usage** command-usage section below.) + +* host — хост:порт подключения для запроса статуса + +**Примечание:** аргументы и опции в квадратных скобках необязательны. + +## Описание +Возвращает статус подключённого пира. Позволяет оператору узла проверить состояние конкретного пира. + +## Использование команды +Позиционные параметры и опции `cleos net status`: + +### Позиционные параметры +* `host` _TEXT_ ОБЯЗАТЕЛЬНО — хост:порт подключения для запроса статуса + +### Опции +* `-h,--help` — вывести справку и выйти + +## Требования + +* Установлена поддерживаемая версия `cleos`. +!!! note "Примечание" + `cleos` входит в состав COOPOS. [Установка COOPOS](../../../00_install/index.md) ставит `cleos` и `keosd`. +* Доступ к узлу с загруженным [`net_api_plugin`](../../../01_nodeos/03_plugins/net_api_plugin/index.md). + +## Примеры + +* Статус пира `localhost:9001` для узла `http://127.0.0.1:8002`: + +```sh +cleos -u http://127.0.0.1:8002 net status localhost:9001 +``` +**Вывод:** +```json +{ + "peer": "localhost:9001", + "connecting": false, + "syncing": false, + "last_handshake": { + "network_version": 1210, + "chain_id": "60fb0eb4742886af8a0e147f4af6fd363e8e8d8f18bdf73a10ee0134fec1c551", + "node_id": "7432b032b50a5a3b04a220c48d75f12e5a089405dfee578c3e5b4cf46865e86e", + "key": "EOS1111111111111111111111111111111114T1Anm", + "time": "1620935866018960000", + "token": "0000000000000000000000000000000000000000000000000000000000000000", + "sig": "SIG_K1_111111111111111111111111111111111111111111111111111111111111111116uk5ne", + "p2p_address": "127.0.0.1:9001 - 7432b03", + "last_irreversible_block_num": 184, + "last_irreversible_block_id": "000000b899bd9462ac4697b5d265e47ef5d88d5a66a24a1c2d37de7974fe32f5", + "head_num": 185, + "head_id": "000000b9f79e2394a48738fb3c8c87dac944094648c23818427e1d44375b6034", + "os": "osx", + "agent": "EOS Test Agent", + "generation": 1 + } +} +``` + +**Примечание:** поле `last_handshake` содержит состояние цепочки указанного пира на момент последнего handshake с узлом. Подробнее — [Handshake Message](/protocol-guides/03_network_peer_protocol.md#421-handshake-message) в документе *Network Peer Protocol*. diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/index.md new file mode 100644 index 000000000..2037e7207 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/index.md @@ -0,0 +1,10 @@ +## Описание +Отправить произвольные транзакции в блокчейн. + +## Команды + +[push action](push-action.md) — транзакция с одним действием + +[push transaction](push-transaction.md) — произвольная JSON-транзакция + +[push transactions](push-transactions.md) — массив произвольных JSON-транзакций diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-action.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-action.md new file mode 100644 index 000000000..5f0c04186 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-action.md @@ -0,0 +1,47 @@ +## Описание +Отправить транзакцию с одним действием + +## Позиционные параметры + `contract` _Type: Text_ — аккаунт с контрактом для выполнения + + `action` _Type: Text_ — действие контракта + + `data` _Type: Text_ — аргументы контракта + +**Вывод** + +## Опции + +` -h,--help` — вывести справку и выйти + +`-x,--expiration` — время в секундах до истечения транзакции, по умолчанию 30 с + +`-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + +` -s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + +`-j,--json` — вывести результат в JSON + +`-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) + +`--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию + +`-r,--ref-block` — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + +`--use-old-rpc` — использовать старый RPC `push_transaction` вместо нового `send_transaction` + +`--use-old-send-rpc` — использовать старый RPC `send_transaction` вместо нового `/v1/chain/send_transaction2` + +`-p,--permission` _Type: Text_ — аккаунт и уровень разрешения в виде `account@permission` + +`--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) + +`--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) + +`--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 + +`-t,--return-failure-trace` — при ошибке транзакции вернуть частичные трассы + +`--retry-irreversible` — просить узел повторять до необратимости или истечения (блокирующий вызов) + +`--retry-num-blocks` — просить узел повторять до попадания в блок заданной высоты (блокирующий вызов) diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-transaction.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-transaction.md new file mode 100644 index 000000000..9b1afd268 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-transaction.md @@ -0,0 +1,52 @@ +## Описание + +Отправить произвольную JSON-транзакцию + +## Позиционные параметры +- `transaction` (text) JSON транзакции для отправки или имя JSON-файла с транзакцией + +## Опции +Отдельных опций у команды нет (см. ниже стандартные флаги cleos). + +` -h,--help` — вывести справку и выйти + +`-x,--expiration` — время в секундах до истечения транзакции, по умолчанию 30 с + +`-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + +` -s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + +`-j,--json` — вывести результат в JSON + +`-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) + +`--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию + +`-r,--ref-block` — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + +`--use-old-rpc` — использовать старый RPC `push_transaction` вместо нового `send_transaction` + +`--use-old-send-rpc` — использовать старый RPC `send_transaction` вместо нового `/v1/chain/send_transaction2` + +`-p,--permission` _Type: Text_ — аккаунт и уровень разрешения в виде `account@permission` + +`--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU (0 — без ограничения) + +`--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) + +`--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 + +`-t,--return-failure-trace` — при ошибке транзакции вернуть частичные трассы + +`--retry-irreversible` — просить узел повторять до необратимости или истечения (блокирующий вызов) + +`--retry-num-blocks` — просить узел повторять до попадания в блок заданной высоты (блокирующий вызов) + +`-o,--read-only` — указать транзакцию как только для чтения + +## Пример + + +```sh +cleos push transaction {} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-transactions.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-transactions.md new file mode 100644 index 000000000..91bc2ed6f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/push/push-transactions.md @@ -0,0 +1,8 @@ +## Описание +Отправить массив произвольных JSON-транзакций + +## Позиционные аргументы +Отправляет массив произвольных JSON-транзакций. +## Опции +Отдельных опций нет +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/index.md new file mode 100644 index 000000000..bb0355d48 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/index.md @@ -0,0 +1,20 @@ +## Описание +Задать или обновить состояние блокчейна. +## Команды + +Задать или обновить состояние блокчейна + +```console +Usage: cleos set [OPTIONS] SUBCOMMAND + +Options: + -h,--help Print this help message and exit +``` + +## Подкоманды + +- [code](set-code.md) — создать или обновить код на аккаунте +- [abi](set-abi.md) — создать или обновить ABI на аккаунте +- [contract](set-contract.md) — создать или обновить контракт на аккаунте +- [account](set-account.md) — задать или обновить состояние аккаунта +- [action](set-action.md) — задать или обновить состояние действия diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-abi.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-abi.md new file mode 100644 index 000000000..1e992e430 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-abi.md @@ -0,0 +1,24 @@ +## Описание +Создать или обновить ABI на аккаунте + +## Позиционные параметры +* `account` _TEXT_ — аккаунт, для которого задаётся код (обязательно) +* `abi-file` _TEXT_ — полный путь к файлу контракта WAST или WASM (обязательно) + +## Опции +* `-h,--help` — вывести справку и выйти +* `-a,--abi' _TEXT_ — ABI контракта +* `-x,--expiration _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с +* `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) +* `-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции +* `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +* `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +* `-p,--permission` _TEXT_ — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `account@active`) +* `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU на выполнение транзакции (0 — без ограничения) +* `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +* `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 с +## Использование + +```sh +cleos set abi someaccount1 ./path/to/abi.abi +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-account.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-account.md new file mode 100644 index 000000000..5de103c0f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-account.md @@ -0,0 +1,91 @@ +## Описание +Задать параметры, связанные с разрешениями аккаунта + +!!! note "Ввод JSON" + Команда требует JSON, зависящий от внутренних определений классов. Такой ввод может меняться в будущих версиях ПО COOPOS. + +## Позиционные параметры +- `account` _TEXT_ — аккаунт, для которого задаётся или удаляется полномочие разрешения +- `permission` _TEXT_ — имя разрешения, для которого задаётся или удаляется полномочие +- `authority` _TEXT_ — [delete] NULL, [create/update] публичный ключ, JSON-строка или файл с описанием полномочия +- `parent` _TEXT_ — [create] имя родительского разрешения (по умолчанию: `active`) +## Опции + +`-h,--help` — вывести справку и выйти + +`--add-code` [code] — добавить разрешение `eosio.code` к указанному полномочию + +`--remove-code` [code] — убрать разрешение `eosio.code` из указанного полномочия + +`-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с + +`-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + +`-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + +`-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) + +`-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + +`-p,--permission` _TEXT_ — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `account@active`) + +`--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU на выполнение транзакции (0 — без ограничения) + +`--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) + +`--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 с + +## Команда +Чтобы менять разрешения аккаунта, нужны полномочия на этот аккаунт и на изменяемое разрешение. + +Первый пример связывает новый ключ с разрешением `active` аккаунта. + +```sh +cleos set account permission test active '{"threshold":1,"keys":[{"key":"EOS8X7Mp7apQWtL6T2sfSZzBcQNUqZB7tARFEm9gA9Tn9nbMdsvBB","weight":1}],"accounts":[{"permission":{"actor":"acc2","permission":"active"},"weight":50}]}' owner +``` +Во втором примере то же разрешение меняется: ключ из предыдущего примера убирается, а разрешение `active` аккаунта `test` делегируется другому аккаунту. + +```sh +cleos set account permission test active '{"threshold":1,"keys":[],"accounts":[{"permission":{"actor":"acc1","permission":"active"},"weight":50},{"permission":{"actor":"sandwich","permission":"active"},"weight":1}]}' owner +``` + +Третий пример показывает настройку разрешений для multisig. + +```sh +cleos set account permission test active '{"threshold" : 100, "keys" : [{"key":"EOS8X7Mp7apQWtL6T2sfSZzBcQNUqZB7tARFEm9gA9Tn9nbMdsvBB","weight":25}], "accounts" : [{"permission":{"actor":"sandwich","permission":"active"},"weight":75}]}' owner +``` +JSON-объект в этой команде состоит из двух типов объектов. + +Объект полномочия (authority) … + +```json +{ + "threshold" : 100, /*целое: суммарный вес подписей, необходимый для авторизации*/ + "keys" : [], /*массив отдельных разрешений, заданных публичным ключом EOS*/ + "accounts" : [] /*массив отдельных разрешений, заданных аккаунтом EOS*/ +} +``` +…в который входят один или несколько объектов разрешения. + +```json +/*Разрешение по ключу*/ +{ + "permission" : { + "key" : "EOS8X7Mp7apQWtL6T2sfSZzBcQNUqZB7tARFEm9gA9Tn9nbMdsvBB", + "permission" : "active" + }, + weight : 25 /*вес подписи с этого разрешения*/ +} + +/*Разрешение по аккаунту*/ +{ + "permission" : { + "account" : "sandwich", + "permission" : "active" + }, + weight : 75 /*вес подписи с этого разрешения*/ +} +``` + +## См. также +- Протокольный документ [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md). diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-action.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-action.md new file mode 100644 index 000000000..591c185f0 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-action.md @@ -0,0 +1,72 @@ +## Описание +Задать или обновить состояние действия в блокчейне. + +**Команда** + +```sh +cleos set action +``` +**Вывод** + +```console +Usage: cleos set action [OPTIONS] SUBCOMMAND + +Options: + -h,--help Print this help message and exit + +Subcommands: + permission set parmaters dealing with account permissions +``` +**Команда** + +```sh +cleos set action permission +``` + +## Позиционные параметры + +`account` TEXT — аккаунт, для которого задаётся или удаляется полномочие разрешения (обязательно) + +`code` _Text_ — аккаунт, которому принадлежит код действия + +`type` _Type_ — тип действия + +`requirement` _Type_ — имя разрешения, требуемого для выполнения данного действия + +## Опции +`-h,--help` — вывести справку и выйти + +`-x,--expiration` _Type:Text_ — время в секундах до истечения транзакции, по умолчанию 30 с + +`-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + +`-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + +`-j,--json` — вывести результат в JSON + +`-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) + +`--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию + +`-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + +`-p,--permission` _Type:Text_ — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `account@active`) + +`--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU на выполнение транзакции (0 — без ограничения) + +`--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) + +`--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 с + +## Использование + +```sh +# Связать действие `voteproducer` с разрешением `voting` +cleos set action permission sandwichfarm eosio.system voteproducer voting -p sandwichfarm@voting + +# Теперь транзакцию можно выполнить с ранее заданными разрешениями. +cleos system voteproducer approve sandwichfarm someproducer -p sandwichfarm@voting +``` + +## См. также +- Протокольный документ [Accounts and Permissions](/protocol-guides/04_accounts_and_permissions.md). diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-code.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-code.md new file mode 100644 index 000000000..61b896df1 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-code.md @@ -0,0 +1,42 @@ +## Описание +Задать или обновить код аккаунта в блокчейне. + +## Позиционные параметры + +* `account` _TEXT_ — аккаунт, для которого задаётся код (обязательно) +* `code-file` _TEXT_ — полный путь к файлу контракта WAST или WASM (обязательно) + +## Опции + +`-h,--help` — вывести справку и выйти +`-a,--abi` _TEXT_ — ABI контракта + +`-c,--clear` — удалить контракт с аккаунта + +`--suppress-duplicate-check` — не проверять дубликаты + +`-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с + +`-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + +`-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + +`-j,--json` — вывести результат в JSON + +`-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) + +`--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию + +`-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + +`-p,--permission` _Type:Text_ — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `account@active`) + +* `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +* `-p,--permission` _TEXT_ — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `account@active`) +* `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU на выполнение транзакции (0 — без ограничения) +* `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +* `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 с + +```sh +cleos set code someaccount1 ./path/to/wasm +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-contract.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-contract.md new file mode 100644 index 000000000..8dd91dc36 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/set/set-contract.md @@ -0,0 +1,81 @@ +## Описание +Создать или обновить контракт на аккаунте. +## Позиционные параметры + `account` _TEXT_ — аккаунт, для которого публикуется контракт + `wast-file` _TEXT_ — файл с контрактом WAST или WASM + `abi-file` _TEXT_ — ABI контракта +## Опции + +`-h,--help` — вывести справку и выйти + +`-a,--abi` _TEXT_ — ABI контракта + +`-c,--clear` — удалить контракт с аккаунта + +`--suppress-duplicate-check` — не проверять дубликаты + +`-x,--expiration` _TEXT_ — время в секундах до истечения транзакции, по умолчанию 30 с + +`-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки) + +`-s,--skip-sign` — использовать ли ключи разблокированного кошелька для подписи транзакции + +`-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) + +`--return-packed` — вместе с `--dont-broadcast` получить упакованную транзакцию + +`-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) + +`-p,--permission` _TEXT_ — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `account@active`) + +`--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU на выполнение транзакции (0 — без ограничения) + +`--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) + +`--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 с + +## Пример +Развёртывание стандартного контракта валюты. + +```sh +cleos set contract currency ../../../contracts/currency/currency.wast ../../../contracts/currency/currency.abi +``` +Вывод может быть примерно таким: + +```console +Reading WAST... +Assembling WASM... +Publishing contract... +``` +```json +{ + "transaction_id": "9990306e13f630a9c5436a5a0b6fb8fe2c7f3da2f342b4898a39c4a2c17dcdb3", + "processed": { + "refBlockNum": 1208, + "refBlockPrefix": 3058534156, + "expiration": "2017-08-24T18:29:52", + "scope": [ + "currency", + "eos" + ], + "signatures": [], + "messages": [{ + "code": "eos", + "type": "setcode", + "authorization": [{ + "account": "currency", + "permission": "active" + } + ], + "data": "00000079b822651d0000e8150061736d0100000001390a60017e0060037e7e7f017f60047e7e7f7f017f60017f0060057e7e7e7f7f017f60027f7f0060027f7f017f60027e7f0060000060027e7e00029d010a03656e7606617373657274000503656e76086c6f61645f693634000403656e76067072696e7469000003656e76067072696e746e000003656e76067072696e7473000303656e760b726561644d657373616765000603656e760a72656d6f76655f693634000103656e760b7265717569726541757468000003656e760d726571756972654e6f74696365000003656e760973746f72655f6936340002030706000007030809040401700000050301000107cc0107066d656d6f72790200205f5a4e33656f733133726571756972654e6f74696365454e535f344e616d6545000a1e5f5a4e33656f7331317265717569726541757468454e535f344e616d6545000b345f5a4e3863757272656e6379313273746f72654163636f756e74454e33656f73344e616d6545524b4e535f374163636f756e7445000c355f5a4e3863757272656e637932336170706c795f63757272656e63795f7472616e7366657245524b4e535f385472616e7366657245000d04696e6974000e056170706c79000f0a9d0d060600200010080b0600200010070b3400024020012903084200510d0020004280808080a8d7bee3082001411010091a0f0b20004280808080a8d7bee308200110061a0b8a0604017e027f047e017f4100410028020441206b2208360204200029030821052000290300210720002903102104411010042004100241c000100442808080c887d7c8b21d100341d00010042007100341e000100420051003200029030021052000290308100820051008200029030010072000290300210142002105423b210441f00021034200210603400240024002400240024020054206560d0020032c00002202419f7f6a41ff017141194b0d01200241a0016a21020c020b420021072005420b580d020c030b200241ea016a41002002414f6a41ff01714105491b21020b2002ad42388642388721070b2007421f83200442ffffffff0f838621070b200341016a2103200542017c2105200720068421062004427b7c2204427a520d000b420021052008420037031820082006370310200142808080c887d7c8b21d4280808080a8d7bee308200841106a411010011a200041086a2903002101423b210441f00021034200210603400240024002400240024020054206560d0020032c00002202419f7f6a41ff017141194b0d01200241a0016a21020c020b420021072005420b580d020c030b200241ea016a41002002414f6a41ff01714105491b21020b2002ad42388642388721070b2007421f83200442ffffffff0f838621070b200341016a2103200542017c2105200720068421062004427b7c2204427a520d000b2008200637030020084200370308200142808080c887d7c8b21d4280808080a8d7bee3082008411010011a200841186a2203290300200041106a22022903005a418001100020032003290300200229030022057d370300200520082903087c20055a41b00110002008200829030820022903007c370308200029030021050240024020032903004200510d0020054280808080a8d7bee308200841106a411010091a0c010b20054280808080a8d7bee308200841106a10061a0b200041086a290300210502400240200841086a2903004200510d0020054280808080a8d7bee3082008411010091a0c010b20054280808080a8d7bee308200810061a0b4100200841206a3602040b980303027f057e017f4100410028020441106b220736020442002103423b210241e00121014200210403400240024002400240024020034207560d0020012c00002200419f7f6a41ff017141194b0d01200041a0016a21000c020b420021052003420b580d020c030b200041ea016a41002000414f6a41ff01714105491b21000b2000ad42388642388721050b2005421f83200242ffffffff0f838621050b200141016a2101200342017c2103200520048421042002427b7c2202427a520d000b42002103423b210241f00021014200210603400240024002400240024020034206560d0020012c00002200419f7f6a41ff017141194b0d01200041a0016a21000c020b420021052003420b580d020c030b200041ea016a41002000414f6a41ff01714105491b21000b2000ad42388642388721050b2005421f83200242ffffffff0f838621050b200141016a2101200342017c2103200520068421062002427b7c2202427a520d000b2007428094ebdc033703082007200637030020044280808080a8d7bee3082007411010091a4100200741106a3602040bb10303027f047e017f4100410028020441206b220836020442002105423b210441e00121034200210603400240024002400240024020054207560d0020032c00002202419f7f6a41ff017141194b0d01200241a0016a21020c020b420021072005420b580d020c030b200241ea016a41002002414f6a41ff01714105491b21020b2002ad42388642388721070b2007421f83200442ffffffff0f838621070b200341016a2103200542017c2105200720068421062004427b7c2204427a520d000b024020062000520d0042002105423b210441f00121034200210603400240024002400240024020054207560d0020032c00002202419f7f6a41ff017141194b0d01200241a0016a21020c020b420021072005420b580d020c030b200241ea016a41002002414f6a41ff01714105491b21020b2002ad42388642388721070b200341016a2103200542017c2105200720068421062004427b7c2204427a520d000b20062001520d00200842003703102008420037030820084200370318200841086a4118100541174b4180021000200841086a100d0b4100200841206a3602040b0bff010b0041040b04200500000041100b2254686973206170706561727320746f2062652061207472616e73666572206f6620000041c0000b0220000041d0000b072066726f6d20000041e0000b0520746f20000041f0000b086163636f756e7400004180010b2c696e746567657220756e646572666c6f77207375627472616374696e6720746f6b656e2062616c616e6365000041b0010b26696e7465676572206f766572666c6f7720616464696e6720746f6b656e2062616c616e6365000041e0010b0963757272656e6379000041f0010b097472616e7366657200004180020b1e6d6573736167652073686f72746572207468616e2065787065637465640000fd02046e616d651006617373657274020000086c6f61645f693634050000000000067072696e74690100067072696e746e0100067072696e747301000b726561644d6573736167650200000a72656d6f76655f693634030000000b726571756972654175746801000d726571756972654e6f7469636501000973746f72655f6936340400000000205f5a4e33656f733133726571756972654e6f74696365454e535f344e616d65450101301e5f5a4e33656f7331317265717569726541757468454e535f344e616d6545010130345f5a4e3863757272656e6379313273746f72654163636f756e74454e33656f73344e616d6545524b4e535f374163636f756e74450201300131355f5a4e3863757272656e637932336170706c795f63757272656e63795f7472616e7366657245524b4e535f385472616e73666572450901300131013201330134013501360137013804696e69740801300131013201330134013501360137056170706c7909013001310132013301340135013601370138010b4163636f756e744e616d65044e616d6502087472616e7366657200030466726f6d0b4163636f756e744e616d6502746f0b4163636f756e744e616d65087175616e746974790655496e743634076163636f756e740002036b65790655496e7436340762616c616e63650655496e74363401000000b298e982a4087472616e736665720100000080bafac608076163636f756e74" + } + ], + "output": [{ + "notify": [], + "sync_transactions": [], + "async_transactions": [] + } + ] + } +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/sign.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/sign.md new file mode 100644 index 000000000..e05482ae1 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/sign.md @@ -0,0 +1,16 @@ +## Описание +Подписать транзакцию + +## Использование +```sh +cleos sign [OPTIONS] transaction +``` + +## Позиционные параметры +- `transaction` _TEXT_ — JSON-строка или имя файла с описанием транзакции для подписи + +## Опции +- `-k,--private-key` _TEXT_ — приватный ключ для подписи транзакции +- `--public-key` _TEXT_ — попросить `keosd` подписать соответствующим приватным ключом для указанного публичного ключа +- `-c,--chain-id` _TEXT_ — идентификатор сети (chain id) для подписи +- `-p,--push-transaction` — после подписи отправить транзакцию в сеть diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/index.md new file mode 100644 index 000000000..ed429d527 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/index.md @@ -0,0 +1,23 @@ +## Описание + +Отправить действие контракта eosio.system в блокчейн. + +## Подкоманды + +- [system newaccount](system-newaccount.md) — создать новую учётную запись в блокчейне с начальными ресурсами +- [system regproducer](system-regproducer.md) — зарегистрировать нового продюсера +- [system unregprod](system-unregprod.md) — снять регистрацию существующего продюсера +- [system voteproducer](system-voteproducer.md) — голосовать за продюсера +- [system listproducers](system-listproducers.md) — список продюсеров +- [system delegatebw](system-delegatebw.md) — делегировать пропускную способность +- [system undelegatebw](system-undelegatebw.md) — отменить делегирование пропускной способности +- [system listbw](system-listbw.md) — список делегированной пропускной способности +- [system bidname](system-bidname.md) — торги за имена +- [system bidnameinfo](system-bidnameinfo.md) — сведения о торгах за имя +- [system buyram](system-buyram.md) — купить RAM +- [system sellram](system-sellram.md) — продать RAM +- [system claimrewards](system-claimrewards.md) — получить награды продюсера +- [system regproxy](system-regproxy.md) — зарегистрировать учётную запись как прокси (для голосования) +- [system unregproxy](system-unregproxy.md) — снять регистрацию учётной записи как прокси (для голосования) +- [system canceldelay](system-canceldelay.md) — отменить отложенную транзакцию +- [system rex](system-rex.md) — действия, связанные с REX (биржа ресурсов) diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-bidname.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-bidname.md new file mode 100644 index 000000000..38f47b672 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-bidname.md @@ -0,0 +1,30 @@ +## Описание + +Сделать ставку на «премиальные» имена пользователей (имена учётных записей короче 12 символов). + +## Позиционные аргументы + +* `bidder` _TEXT_ — учётная запись, делающая ставку (обязательно) +* `newname` _TEXT_ — имя, на которое делается ставка (обязательно) +* `bid` _TEXT_ — сумма в базовом символе сети для ставки (обязательно) + +## Опции + +* `-h,--help` — показать справку и выйти +* `-x,--expiration` — время в секундах до истечения транзакции; по умолчанию 30 с +* `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +* `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +* `-j,--json` — вывести результат в формате JSON +* `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +* `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +* `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» +* `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +* `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с + +## Использование + + +```sh +cleos system bidname accountname1 bob "10 SYS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-bidnameinfo.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-bidnameinfo.md new file mode 100644 index 000000000..924e1f13c --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-bidnameinfo.md @@ -0,0 +1,18 @@ +## Описание + +Возвращает данные об имени и статусе торгов за него. + +## Позиционные аргументы + +* `name` _TEXT_ — имя для запроса + +## Опции + +* `-h,--help` — показать справку и выйти +* `-j,--json` — вывести результат в формате JSON + +## Использование + +```sh +cleos system bidnameinfo bob +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-buyram.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-buyram.md new file mode 100644 index 000000000..87d392ce2 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-buyram.md @@ -0,0 +1,25 @@ +## Описание + +Купить RAM. + +## Позиционные аргументы + +- `payer` _TEXT_ — учётная запись, оплачивающая RAM +- `receiver` _TEXT_ — учётная запись, получающая купленную RAM +- `amount` _TEXT_ — сумма EOS за покупку RAM + +## Опции + +- `-h,--help` — показать справку и выйти +- `-k,--kbytes` — покупка RAM в кибибайтах (KiB) +- `-b,--bytes` — покупка RAM в байтах +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-j,--json` — вывести результат в формате JSON +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-canceldelay.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-canceldelay.md new file mode 100644 index 000000000..38e7769a8 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-canceldelay.md @@ -0,0 +1,23 @@ +## Описание + +Отменить отложенную транзакцию. + +## Позиционные аргументы + +- `canceling_account` _TEXT_ — учётная запись из авторизации исходной отложенной транзакции +- `canceling_permission` _TEXT_ — разрешение из авторизации исходной отложенной транзакции +- `trx_id` _TEXT_ — идентификатор исходной отложенной транзакции + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-claimrewards.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-claimrewards.md new file mode 100644 index 000000000..860d4004f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-claimrewards.md @@ -0,0 +1,23 @@ +## Описание + +Получить награды продюсера. + +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись, для которой забираются награды + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-delegatebw.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-delegatebw.md new file mode 100644 index 000000000..6b0df7e5c --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-delegatebw.md @@ -0,0 +1,26 @@ +--- +title: "system delegatebw" +excerpt: "Делегировать пропускную способность" +--- +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, с которой делегируется пропускная способность +- `receiver` _TEXT_ — учётная запись, которой делегируется пропускная способность +- `stake_net_quantity` _TEXT_ — сумма EOS, делегируемая на сетевую пропускную способность +- `stake_cpu_quantity` _TEXT_ — сумма EOS, делегируемая на CPU + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-listbw.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-listbw.md new file mode 100644 index 000000000..331eeb18b --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-listbw.md @@ -0,0 +1,14 @@ +## Описание + +Список делегированной пропускной способности. + +## Позиционные аргументы + +- `account` _TEXT_ — учётная запись с делегированной пропускной способностью + +## Опции + +`-j,--json` — вывод в формате JSON +`-h,--help` — показать справку и выйти + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-listproducers.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-listproducers.md new file mode 100644 index 000000000..55891bdd2 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-listproducers.md @@ -0,0 +1,12 @@ +## Описание + +Список продюсеров. + +## Позиционные аргументы + +## Опции + +`-h,--help` — показать справку и выйти +`-j,--json` — вывод в формате JSON +`-l,--limit` _UINT_ — максимальное число возвращаемых строк +`-L,--lower` _TEXT_ — нижняя граница ключа; по умолчанию первая diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-newaccount.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-newaccount.md new file mode 100644 index 000000000..b0f4bcd94 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-newaccount.md @@ -0,0 +1,31 @@ +## Описание + +Создать учётную запись, купить RAM и застейкать пропускную способность для неё. + +## Позиционные аргументы + +- `creator` _TEXT_ — имя учётной записи, создающей новую +- `name` _TEXT_ — имя новой учётной записи +- `OwnerKey` _TEXT_ — публичный ключ owner для новой учётной записи +- `ActiveKey` _TEXT_ — публичный ключ active для новой учётной записи + +## Опции + +- `-h,--help` — показать справку и выйти +- `--stake-net` _TEXT_ — сумма EOS, делегируемая на сетевую пропускную способность +- `--stake-cpu` _TEXT_ — сумма EOS, делегируемая на CPU +- `--buy-ram-bytes` _UINT_ — объём RAM в байтах для покупки новой учётной записи в кибибайтах (KiB); по умолчанию 8 KiB +- `--buy-ram-EOS` _TEXT_ — сумма EOS на покупку RAM для новой учётной записи +- `--transfer` — передать получателю право голоса и право анстейкать EOS +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-regproducer.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-regproducer.md new file mode 100644 index 000000000..678c402f5 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-regproducer.md @@ -0,0 +1,25 @@ +--- +title: "system regproducer" +excerpt: "Зарегистрировать нового продюсера" +--- +## Позиционные аргументы + +- `account` _TEXT_ — учётная запись для регистрации в качестве продюсера +- `producer_key` _TEXT_ — публичный ключ продюсера +- `url` _TEXT_ — URL с информацией о продюсере +- `location` _UINT_ — относительное местоположение для планирования ближайших соседей + +## Опции + +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-regproxy.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-regproxy.md new file mode 100644 index 000000000..2f19c795f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-regproxy.md @@ -0,0 +1,23 @@ +--- +title: "system regproxy" +excerpt: "Зарегистрировать учётную запись как прокси (для голосования)" +--- +## Позиционные аргументы + +`proxy` _TEXT_ — учётная запись прокси для регистрации + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-buyrex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-buyrex.md new file mode 100644 index 000000000..52d5e4158 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-buyrex.md @@ -0,0 +1,29 @@ +--- +title: "system rex buyrex" +excerpt: "Купить REX за токены из REX-фонда владельца" +--- +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, покупающая REX (обязательно) +- `amount` _TEXT_ — сумма, списываемая из REX-фонда на покупку REX (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex buyrex accountname1 "1 REX" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-cancelrexorder.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-cancelrexorder.md new file mode 100644 index 000000000..9676cf15b --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-cancelrexorder.md @@ -0,0 +1,28 @@ +--- +title: "system rex cancelrexorder" +excerpt: "Отменить отложенный ордер на продажу REX, если он есть" +--- +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца ордера на продажу (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex cancelrexorder accountname1 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-closerex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-closerex.md new file mode 100644 index 000000000..72edec7cc --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-closerex.md @@ -0,0 +1,28 @@ +--- +title: "system rex closerex" +excerpt: "Удалить неиспользуемые записи пользовательских таблиц, связанных с REX" +--- +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex closerex accountname1 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-consolidate.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-consolidate.md new file mode 100644 index 000000000..b202a6020 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-consolidate.md @@ -0,0 +1,28 @@ +--- +title: "system rex consolidate" +excerpt: "Объединить бакеты погашения REX в один со сроком погашения 4 дня" +--- +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex consolidate accountname1 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-defundcpuloan.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-defundcpuloan.md new file mode 100644 index 000000000..8d45da5d1 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-defundcpuloan.md @@ -0,0 +1,29 @@ +--- +title: "system rex defundcpuloan" +excerpt: "Вывести из фонда CPU-кредита" +--- +## Позиционные аргументы + +- `from` _TEXT_ — владелец кредита (обязательно) +- `loan_num` _TEXT_ — идентификатор кредита (обязательно) +- `payment` _TEXT_ — сумма к выводу (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + +```sh +cleos system rex defundcpuloan accountname1 abc123 "1 EOS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-defundnetloan.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-defundnetloan.md new file mode 100644 index 000000000..e20022f95 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-defundnetloan.md @@ -0,0 +1,31 @@ +## Описание + +Вывести из фонда сетевого кредита. + +## Позиционные аргументы + +- `from` _TEXT_ — владелец кредита (обязательно) +- `loan_num` _TEXT_ — идентификатор кредита (обязательно) +- `payment` _TEXT_ — сумма к выводу (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-j,--json` — вывести результат в формате JSON +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с + +## Примеры + + + +```sh +cleos system rex defundnetloan accountname1 abc123 "1 EOS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-deposit.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-deposit.md new file mode 100644 index 000000000..74bf376cc --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-deposit.md @@ -0,0 +1,28 @@ +--- +title: "system rex deposit" +excerpt: "Внести в REX-фонд владельца переводом с ликвидного баланса токенов" +--- +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) +- `amount` _TEXT_ — сумма пополнения REX-фонда (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-j,--json` — вывести результат в формате JSON +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) + +## Примеры + + +```sh +cleos system rex deposit accountname1 "1 SYS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-fundcpuloan.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-fundcpuloan.md new file mode 100644 index 000000000..e202a58e8 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-fundcpuloan.md @@ -0,0 +1,29 @@ +--- +title: "system rex fundcpuloan" +excerpt: "Пополнить фонд CPU-кредита" +--- +## Позиционные аргументы + +- `from` _TEXT_ — владелец кредита (обязательно) +- `loan_num` _TEXT_ — идентификатор кредита (обязательно) +- `payment` _TEXT_ — сумма пополнения (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-j,--json` — вывести результат в формате JSON +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с + +## Примеры + +```sh +cleos system rex fundcpuloan accountname1 abc123 "1 EOS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-fundnetloan.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-fundnetloan.md new file mode 100644 index 000000000..6f401017c --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-fundnetloan.md @@ -0,0 +1,30 @@ +--- +title: "system rex fundnetloan" +excerpt: "Пополнить фонд сетевого кредита" +--- +## Позиционные аргументы + +- `from` _TEXT_ — владелец кредита (обязательно) +- `loan_num` _TEXT_ — идентификатор кредита (обязательно) +- `payment` _TEXT_ — сумма пополнения (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-j,--json` — вывести результат в формате JSON +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с + +## Примеры + + +```sh +cleos system rex fundnetloan accountname1 abc123 "1 EOS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-lendrex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-lendrex.md new file mode 100644 index 000000000..4d066e14f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-lendrex.md @@ -0,0 +1,29 @@ +--- +title: "system rex lendrex" +excerpt: "Внести токены в REX-фонд и купить на них REX" +--- +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, покупающая REX (обязательно) +- `amount` _TEXT_ — сумма токенов для внесения в REX-фонд и покупки REX (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex lendrex accountname1 "1 REX" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-mvfromsavings.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-mvfromsavings.md new file mode 100644 index 000000000..47da69e70 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-mvfromsavings.md @@ -0,0 +1,29 @@ +--- +title: "system rex mvfromsavings" +excerpt: "Переместить токены REX из сберегательного бакета" +--- +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) +- `rex` _TEXT_ — объём REX для вывода из сберегательного бакета (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex mvfromsavings accountname1 "1 REX" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-mvtosavings.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-mvtosavings.md new file mode 100644 index 000000000..df9868080 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-mvtosavings.md @@ -0,0 +1,30 @@ +--- +title: "system rex mvtosavings" +excerpt: "Переместить токены REX в сберегательный бакет" +--- +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) +- `rex` _TEXT_ — объём REX для перемещения в сберегательный бакет (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + + +## Примеры + + +```sh +cleos system rex mvtosavings accountname1 "1 REX" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rentcpu.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rentcpu.md new file mode 100644 index 000000000..6f60e9a18 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rentcpu.md @@ -0,0 +1,31 @@ +## Описание + +Арендовать CPU на 30 дней. + +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, оплачивающая аренду (обязательно) +- `receiver` _TEXT_ — учётная запись, на которую застейкована арендованная CPU (обязательно) +- `loan_payment` _TEXT_ — комиссия по кредиту; по ней рассчитывается объём арендованной пропускной способности (обязательно) +- `loan_fund` _TEXT_ — фонд кредита для автоматического продления; может быть 0 токенов (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex rentcpu accountname1 accountname2 "1 EOS" 0 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rentnet.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rentnet.md new file mode 100644 index 000000000..15aed05ee --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rentnet.md @@ -0,0 +1,31 @@ +## Описание + +Арендовать сетевую пропускную способность на 30 дней. + +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, оплачивающая аренду (обязательно) +- `receiver` _TEXT_ — учётная запись, на которую застейкована арендованная NET (обязательно) +- `loan_payment` _TEXT_ — комиссия по кредиту; по ней рассчитывается объём арендованной пропускной способности (обязательно) +- `loan_fund` _TEXT_ — фонд кредита для автоматического продления; может быть 0 токенов (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex rentnet accountname1 accountname2 "1 EOS" 0 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rexexec.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rexexec.md new file mode 100644 index 000000000..58ea55f59 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-rexexec.md @@ -0,0 +1,29 @@ +## Описание + +Выполнить обслуживание REX: обработать истёкшие кредиты и неисполненные ордера на продажу. + +## Позиционные аргументы + +- `user` _TEXT_ — учётная запись, выполняющая действие (обязательно) +- `max` _TEXT_ — максимальное число обрабатываемых CPU-кредитов, сетевых кредитов и ордеров на продажу (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex rexexec accountname1 10 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-sellrex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-sellrex.md new file mode 100644 index 000000000..59b3ea7f9 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-sellrex.md @@ -0,0 +1,27 @@ +## Описание + +Продать токены REX. + +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, продающая REX (обязательно) +- `rex` _TEXT_ — объём продаваемых REX (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) + +## Примеры + + +```sh +cleos system rex sellrex accountname1 "1 REX" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-unstaketorex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-unstaketorex.md new file mode 100644 index 000000000..33ead39d6 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-unstaketorex.md @@ -0,0 +1,31 @@ +## Описание + +Купить REX, сняв стейк с CPU и NET. + +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, покупающая REX (обязательно) +- `receiver` _TEXT_ — учётная запись, на которую застейканы токены (обязательно) +- `from_cpu` _TEXT_ — сумма для анстейка с CPU и направления на покупку REX (обязательно) +- `from_net` _TEXT_ — сумма для анстейка с NET и направления на покупку REX (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex unstaketorex accountname1 accountname2 "1 EOS" 0 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-updaterex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-updaterex.md new file mode 100644 index 000000000..2f7ddd6e6 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-updaterex.md @@ -0,0 +1,28 @@ +## Описание + +Обновить стейк голоса владельца REX и вес голоса. + +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex updaterex accountname1 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-withdraw.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-withdraw.md new file mode 100644 index 000000000..273973150 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex-withdraw.md @@ -0,0 +1,29 @@ +## Описание + +Вывести из REX-фонда на ликвидный баланс токенов. + +## Позиционные аргументы + +- `owner` _TEXT_ — учётная запись владельца REX-фонда (обязательно) +- `amount` _TEXT_ — сумма вывода из REX-фонда (обязательно) + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры + + +```sh +cleos system rex withdraw accountname1 "1 SYS" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex.md new file mode 100644 index 000000000..05f13a0f3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-rex.md @@ -0,0 +1,25 @@ +## Описание + +Действия, связанные с REX (биржа ресурсов). + +## Подкоманды + +- [deposit](system-rex-deposit.md) — внести в REX-фонд владельца, переводом с ликвидного баланса токенов +- [withdraw](system-rex-withdraw.md) — вывести из REX-фонда владельца на ликвидный баланс токенов +- [buyrex](system-rex-buyrex.md) — купить REX за токены из REX-фонда владельца +- [lendrex](system-rex-lendrex.md) — внести токены в REX-фонд и купить на них REX +- [unstaketorex](system-rex-unstaketorex.md) — купить REX за застейканные токены +- [sellrex](system-rex-sellrex.md) — продать токены REX +- [cancelrexorder](system-rex-cancelrexorder.md) — отменить отложенный ордер на продажу REX, если он есть +- [mvtosavings](system-rex-mvtosavings.md) — переместить токены REX в сберегательный бакет +- [mvfromsavings](system-rex-mvfromsavings.md) — переместить токены REX из сберегательного бакета +- [rentcpu](system-rex-rentcpu.md) — арендовать CPU на 30 дней +- [rentnet](system-rex-rentnet.md) — арендовать сетевую пропускную способность на 30 дней +- [fundcpuloan](system-rex-fundcpuloan.md) — пополнить фонд CPU-кредита +- [fundnetloan](system-rex-fundnetloan.md) — пополнить фонд сетевого кредита +- [defundcpuloan](system-rex-defundcpuloan.md) — вывести из фонда CPU-кредита +- [defundnetloan](system-rex-defundnetloan.md) — вывести из фонда сетевого кредита +- [consolidate](system-rex-consolidate.md) — объединить бакеты погашения REX в один со сроком погашения 4 дня +- [updaterex](system-rex-updaterex.md) — обновить стейк голоса владельца REX и вес голоса +- [rexexec](system-rex-rexexec.md) — выполнить обслуживание REX: обработать истёкшие кредиты и неисполненные ордера на продажу +- [closerex](system-rex-closerex.md) — удалить неиспользуемые записи пользовательских таблиц, связанных с REX diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-sellram.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-sellram.md new file mode 100644 index 000000000..23c4c8c1b --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-sellram.md @@ -0,0 +1,24 @@ +## Описание + +Продать RAM. + +## Позиционные аргументы + +- `account` _TEXT_ — учётная запись, получающая EOS за проданную RAM +- `bytes` _UINT_ — число байт RAM для продажи + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-undelegatebw.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-undelegatebw.md new file mode 100644 index 000000000..3070d0194 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-undelegatebw.md @@ -0,0 +1,22 @@ +## Позиционные аргументы + +- `from` _TEXT_ — учётная запись, отменяющая делегирование пропускной способности +- `receiver` _TEXT_ — учётная запись, у которой отменяется делегирование +- `unstake_net_quantity` _TEXT_ — сумма EOS для снятия делегирования с сетевой пропускной способности +- `unstake_cpu_quantity` _TEXT_ — сумма EOS для снятия делегирования с CPU + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-unregprod.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-unregprod.md new file mode 100644 index 000000000..333aa7e01 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-unregprod.md @@ -0,0 +1,19 @@ +## Позиционные аргументы + +`account` _TEXT_ — учётная запись для снятия регистрации продюсера + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-unregproxy.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-unregproxy.md new file mode 100644 index 000000000..3b457683a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-unregproxy.md @@ -0,0 +1,19 @@ +## Позиционные аргументы + +- `proxy` _TEXT_ — учётная запись прокси для снятия регистрации + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-approve.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-approve.md new file mode 100644 index 000000000..c52668867 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-approve.md @@ -0,0 +1,20 @@ +## Позиционные аргументы + + - `voter` _TEXT_ — учётная запись голосующего + - `producer` _TEXT_ — учётная запись продюсера, за которого голосуют + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-prods.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-prods.md new file mode 100644 index 000000000..ad0e80409 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-prods.md @@ -0,0 +1,20 @@ +## Позиционные аргументы + +- `voter` _TEXT_ — учётная запись голосующего +- `producers` _TEXT ..._ — учётные записи продюсеров, за которых голосуют. Все аргументы с этой позиции и далее считаются списком продюсеров. + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-proxy.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-proxy.md new file mode 100644 index 000000000..d3de5b925 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-proxy.md @@ -0,0 +1,20 @@ +## Позиционные аргументы + +- `voter` _TEXT_ — учётная запись голосующего +- `proxy` _TEXT_ — учётная запись прокси + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-unapprove.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-unapprove.md new file mode 100644 index 000000000..236ec2a3d --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer-unapprove.md @@ -0,0 +1,20 @@ +## Позиционные аргументы + +- `voter` _TEXT_ — учётная запись голосующего +- `producer` _TEXT_ — учётная запись продюсера, удаляемого из списка голосования + +## Опции + +- `-h,--help` — показать справку и выйти +- `-x,--expiration` _TEXT_ — время в секундах до истечения транзакции; по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной; увеличивает расход пропускной способности и снимает защиту от случайной повторной отправки той же транзакции +- `-s,--skip-sign` — указывает, использовать ли ключи из разблокированного кошелька для подписи транзакции +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `-r,--ref-block` _TEXT_ — номер или идентификатор опорного блока для TAPOS (Transaction as Proof-of-Stake) +- `-p,--permission` _TEXT_ — учётная запись и уровень разрешения для авторизации, в формате «account@permission» (по умолчанию «account@active») +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU при выполнении транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета сети в байтах для транзакции (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка delay_sec в секундах; по умолчанию 0 с +- `-j,--json` — вывести результат в формате JSON + +## Примеры diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer.md new file mode 100644 index 000000000..dae1c3b14 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/system/system-voteproducer.md @@ -0,0 +1,6 @@ +## Подкоманды + +- [voteproducer proxy](system-voteproducer-proxy.md) — голосовать стейком через прокси +- [voteproducer prods](system-voteproducer-prods.md) — голосовать за одного или нескольких продюсеров +- [voteproducer approve](system-voteproducer-approve.md) — добавить одного продюсера в список голосования +- [voteproducer unapprove](system-voteproducer-unapprove.md) — убрать одного продюсера из списка голосования diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/transfer.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/transfer.md new file mode 100644 index 000000000..1049c5ddb --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/transfer.md @@ -0,0 +1,81 @@ +## Описание +Перевести токены с одного аккаунта на другой + +## Позиционные параметры +- `sender` _TEXT_ — аккаунт-отправитель +- `recipient` _TEXT_ — аккаунт-получатель +- `amount` _UINT_ — сумма EOS для перевода +- `memo` _TEXT_ — memo для перевода + +## Опции +- `-c,--contract` _TEXT_ — контракт, управляющий токеном +- `--pay-ram-to-open` — оплатить RAM за открытие строки баланса получателя +- `-x,--expiration` — время в секундах до истечения транзакции, по умолчанию 30 с +- `-f,--force-unique` — принудительно сделать транзакцию уникальной (дополнительный расход bandwidth, снимается защита от случайной повторной отправки той же транзакции) +- `-s,--skip-sign` — не использовать ключи разблокированного кошелька для подписи +- `-j,--json` — вывести результат в JSON +- `--json-file` _TEXT_ — сохранить результат в JSON в файл +- `-d,--dont-broadcast` — не транслировать транзакцию в сеть (только вывести в stdout) +- `--return-packed` — вместе с `--dont-broadcast` вернуть упакованную транзакцию +- `-r,--ref-block` _TEXT_ — номер блока или id блока для TAPOS (Transaction as Proof-of-Stake) +- `--use-old-rpc` — использовать старый RPC `push_transaction` вместо нового `send_transaction` +- `-p,--permission` _TEXT_ ... — аккаунт и уровень разрешения для авторизации в виде `account@permission` (по умолчанию `sender@active`) +- `--max-cpu-usage-ms` _UINT_ — верхний предел миллисекунд бюджета CPU на выполнение транзакции (0 — без ограничения) +- `--max-net-usage` _UINT_ — верхний предел бюджета net в байтах (0 — без ограничения) +- `--delay-sec` _UINT_ — задержка `delay_sec` в секундах, по умолчанию 0 + +## Пример +Перевести 1000 SYS с **inita** на **tester** + +```sh +cleos transfer inita tester 1000 +``` +Ответ может выглядеть примерно так: + +```json +{ + "transaction_id": "eb4b94b72718a369af09eb2e7885b3f494dd1d8a20278a6634611d5edd76b703", + "processed": { + "refBlockNum": 2206, + "refBlockPrefix": 221394282, + "expiration": "2017-09-05T08:03:58", + "scope": [ + "inita", + "tester" + ], + "signatures": [ + "1f22e64240e1e479eee6ccbbd79a29f1a6eb6020384b4cca1a958e7c708d3e562009ae6e60afac96f9a3b89d729a50cd5a7b5a7a647540ba1678831bf970e83312" + ], + "messages": [{ + "code": "eos", + "type": "transfer", + "authorization": [{ + "account": "inita", + "permission": "active" + } + ], + "data": { + "from": "inita", + "to": "tester", + "amount": 1000, + "memo": "" + }, + "hex_data": "000000008040934b00000000c84267a1e80300000000000000" + } + ], + "output": [{ + "notify": [{ + "name": "tester", + "output": { ... } + },{ + "name": "inita", + "output": { ... } + } + ], + "sync_transactions": [], + "async_transactions": [] + } + ] + } +} +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/version/client.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/version/client.md new file mode 100644 index 000000000..27f29f019 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/version/client.md @@ -0,0 +1,11 @@ +## Описание + +Получить сведения о версии клиента + +## Позиционные параметры +нет +## Использование + +```sh +cleos version client +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/version/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/version/index.md new file mode 100644 index 000000000..c0f6f9339 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/version/index.md @@ -0,0 +1,23 @@ +## Описание + +Получить сведения о версии + +## Команда + +```sh +cleos version +``` + +## Подкоманды +[client](client.md) — версия клиента + +```sh +cleos version client +``` + +## Вывод + + +```console +Build version: 7f854a61 +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/create.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/create.md new file mode 100644 index 000000000..03989e5e9 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/create.md @@ -0,0 +1,10 @@ +## Описание + +Создаёт кошелёк с указанным именем. Если имя не задано, используется `default` + +## Позиционные параметры +Нет +## Опции +- `-n, --name` _TEXT_ — имя нового кошелька +- `-f, --file` _TEXT_ — файл для записи пароля кошелька (обязателен, если не передан `--to-console`) +- `--to-console` — вывести пароль в консоль diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/create_key.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/create_key.md new file mode 100644 index 000000000..6f83c6edb --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/create_key.md @@ -0,0 +1,23 @@ +## Описание + +Создаёт пару ключей в кошельке, чтобы не импортировать её вручную, как после `cleos create key`. По умолчанию создаётся ключ типа, «предпочитаемый» кошельком (K1). Можно создать ключ в формате R1. + +## Позиционные параметры + +`key_type` _TEXT_ — тип ключа: `K1` или `R1` + +## Опции + +-n,--name TEXT=default Имя кошелька, в котором создаётся ключ + +## Использование + +```sh +cleos wallet create_key K1 +``` + +## Вывод + +```console +Created new private key with a public key of: "EOS67xHKzQArkWZN6rKLCq7NLvaj8kurwxzRxoTVz6cgDJkiWdGug" +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/import.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/import.md new file mode 100644 index 000000000..87cfb6c96 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/import.md @@ -0,0 +1,9 @@ +## Описание +Импортировать приватный ключ в кошелёк + +## Позиционные параметры +Нет + +## Опции +- `-n, --name` _TEXT_ — кошелёк, в который импортируется ключ +- `--private-key` _TEXT_ — приватный ключ в формате WIF diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/index.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/index.md new file mode 100644 index 000000000..fc3245c15 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/index.md @@ -0,0 +1,15 @@ +## Описание +Подкоманды для работы с локальным кошельком. + +## Подкоманды + +- [create](create.md) — создать новый локальный кошелёк +- [create_key](create_key.md) — создать пару ключей в кошельке +- [open](open.md) — открыть существующий кошелёк +- [lock](lock.md) — заблокировать кошелёк +- [lock_all](lock_all.md) — заблокировать все разблокированные кошельки +- [unlock](unlock.md) — разблокировать кошелёк +- [import](import.md) — импортировать приватный ключ в кошелёк +- [list](list.md) — список открытых кошельков, * = разблокирован +- [keys](keys.md) — список приватных ключей из всех разблокированных кошельков в формате WIF +- [private_keys](private_keys.md) — список публичных ключей из всех разблокированных кошельков diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/keys.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/keys.md new file mode 100644 index 000000000..82f5e8fe1 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/keys.md @@ -0,0 +1,25 @@ +## Описание + +Список публичных ключей из всех разблокированных кошельков; эти ключи могут использоваться для подписи транзакций. + +## Позиционные параметры +Нет. +## Опции +Нет. +## Использование + + +```sh +cleos wallet keys +``` + +## Вывод + + +```console +[[ + "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", + "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3" + ] +] +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/list.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/list.md new file mode 100644 index 000000000..1f0c2ab55 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/list.md @@ -0,0 +1,35 @@ +## Описание + +Список открытых кошельков; * означает разблокирован + +## Позиционные параметры +Нет + +## Опции +Нет + +## Использование + + +```sh +cleos wallet list +``` + +## Вывод + + +```console +Wallets: +[ + "default *", + "second-wallet *" +] +``` + +или если кошельков нет: + +```console +Wallets: +[ +] +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/lock.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/lock.md new file mode 100644 index 000000000..3b5665efb --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/lock.md @@ -0,0 +1,25 @@ +## Описание + +Блокирует кошелёк + +## Позиционные параметры +Нет + +## Опции +- `-n, --name` _TEXT_ — имя кошелька для блокировки +## Использование + + +```sh +cleos wallet lock +``` +или +```sh +cleos wallet lock -n second-wallet +``` + +## Вывод + +```console +Locked: 'default' +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/lock_all.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/lock_all.md new file mode 100644 index 000000000..c02f0725d --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/lock_all.md @@ -0,0 +1,21 @@ +## Описание +Блокирует все разблокированные кошельки + + +## Позиционные параметры +Нет +## Опции +Нет +## Использование + + +```sh +cleos wallet lock_all +``` + +## Вывод + + +```console +Locked All Wallets +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/open.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/open.md new file mode 100644 index 000000000..7c2f69e3a --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/open.md @@ -0,0 +1,25 @@ +## Описание + +Открывает существующий кошелёк + +## Позиционные параметры +Нет +## Опции +- `-n, --name` _TEXT_ — имя кошелька для открытия +## Использование + + +```sh +cleos wallet open +``` +или +```sh +cleos wallet open -n second-wallet +``` + +## Вывод + + +```console +Opened: default +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/private_keys.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/private_keys.md new file mode 100644 index 000000000..adaac80dd --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/private_keys.md @@ -0,0 +1,18 @@ +## Описание + +Можно запросить пары публичный/приватный ключ кошелька. Кошелёк должен быть разблокирован; пароль нужно ввести снова. + +## Позиционные параметры +Нет + +## Опции +`-n,--name` _TEXT_ — имя кошелька для списка ключей, иначе используется default + +`--password` _TEXT_ — пароль, выданный при `wallet create` + +## Использование + + +```javascript +cleos wallet private_keys +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/unlock.md b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/unlock.md new file mode 100644 index 000000000..f3e75660f --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/03_command-reference/wallet/unlock.md @@ -0,0 +1,21 @@ +## Описание +Разблокирует кошелёк + +## Позиционные параметры +Нет +## Опции +- `-n, --name` _TEXT_ — имя кошелька +- `--password` _TEXT_ — пароль, выданный при создании кошелька +## Использование +Укажите пароль, полученный при создании кошелька. + +```sh +cleos wallet unlock -n second-wallet --password PW5Ji6JUrLjhKAVn68nmacLxwhvtqUAV18J7iycZppsPKeoGGgBEw +``` + +## Вывод + + +```console +Unlocked: 'second-wallet' +``` diff --git a/docs/documentation/blockchain/coopos/02_cleos/04_troubleshooting.md b/docs/documentation/blockchain/coopos/02_cleos/04_troubleshooting.md new file mode 100644 index 000000000..879f8d5f2 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/04_troubleshooting.md @@ -0,0 +1,23 @@ +--- +content_title: Cleos Troubleshooting +--- + +## Cannot connect to RPC endpoint + +Check if your local `nodeos` is running by visiting the following URL in your browser: + +```sh +curl http://localhost:8888/v1/chain/get_info +``` + +If you are trying to connect a remote `nodeos` API endpoint, try to visit the API endpoint with the following suffix: + +```sh +http://API_ENDPOINT:PORT/v1/chain/get_info +``` + +Replace API_ENDPOINT and PORT with your remote `nodeos` API endpoint detail + +## "Missing Authorizations" + +That means you are not using the required authorizations. Most likely you are not using correct COOPOS account or permission level to sign the transaction diff --git a/docs/documentation/blockchain/coopos/02_cleos/05_FAQ.md b/docs/documentation/blockchain/coopos/02_cleos/05_FAQ.md new file mode 100644 index 000000000..45369620c --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/05_FAQ.md @@ -0,0 +1,11 @@ +--- +content_title: Частые вопросы по Cleos +--- + +## Domain Socket (IPC) и HTTPS (RPC) + +Есть два способа подключить `cleos` к `keosd`: доменные сокеты или HTTPS. Доменный сокет даёт ряд преимуществ: снижается риск утечки доступа к `keosd` в LAN, WAN или Интернет. В отличие от HTTPS, где возможны многие векторы атак (в том числе CORS), доменный сокет доступен только для межпроцессного взаимодействия (IPC) в рамках задуманного сценария. + +## Что означает «transaction executed locally, but may not be confirmed by the network yet»? + +Это значит, что транзакция успешно принята и выполнена тем экземпляром `nodeos`, которому `cleos` отправил её напрямую. Этот экземпляр `nodeos` должен ретранслировать транзакцию другим узлам по peer-to-peer-протоколу, но нет гарантии, что остальные узлы примут или выполнят её. На этом этапе также нет гарантии, что транзакция принята и выполнена валидным блок-продюсером и включена в валидный блок цепочки. Если нужна более надёжная уверенность во включении транзакции в неизменяемый блокчейн, нужны дополнительные шаги: отслеживать появление транзакции в необратимом (irreversible) блоке. diff --git a/docs/documentation/blockchain/coopos/02_cleos/index.md b/docs/documentation/blockchain/coopos/02_cleos/index.md new file mode 100644 index 000000000..305acd4f8 --- /dev/null +++ b/docs/documentation/blockchain/coopos/02_cleos/index.md @@ -0,0 +1,125 @@ +--- +content_title: Cleos +--- + +!!! note "Сеть COOPOS" + **cleos** — интерфейс командной строки к **nodeos** и **keosd**. Поведение ресурсов и **powerup**: [концепция](../system-resources.md), [примеры cleos](../resources-powerup-ru.md). + +## Введение + +`cleos` — утилита командной строки для работы с REST API, который предоставляет `nodeos`. Через `cleos` можно разворачивать и проверять смарт-контракты COOPOS. + +## Установка + +`cleos` входит в [репозиторий COOPOS](https://github.com/coopenomics/coopos). Порядок установки — в разделе [Установка ПО COOPOS](../00_install/index.md). + +## Использование cleos + +Нужен адрес работающего экземпляра `nodeos` (IP и порт). При запуске `nodeos` должен быть подключён плагин `eosio::chain_api_plugin`, иначе узел не ответит на RPC-запросы `cleos`. + +### Команды cleos + +Полный список команд: + +```sh +cleos --help +``` + +```console +Command Line Interface to COOPOS Client +Usage: cleos [OPTIONS] SUBCOMMAND + +Options: + -h,--help Print this help message and exit + -u,--url TEXT=http://127.0.0.1:8888/ + the http/https URL where nodeos is running + --wallet-url TEXT=unix:///Users/username/eosio-wallet/keosd.sock + the http/https URL where keosd is running + -r,--header pass specific HTTP header; repeat this option to pass multiple headers + -n,--no-verify don't verify peer certificate when using HTTPS + --no-auto-keosd don't automatically launch a keosd if one is not currently running + -v,--verbose output verbose errors and action console output + --print-request print HTTP request to STDERR + --print-response print HTTP response to STDERR + +Subcommands: + version Retrieve version information + create Create various items, on and off the blockchain + convert Pack and unpack transactions + get Retrieve various items and information from the blockchain + set Set or update blockchain state + transfer Transfer tokens from account to account + net Interact with local p2p network connections + wallet Interact with local wallet + sign Sign a transaction + push Push arbitrary transactions to the blockchain + multisig Multisig contract commands + wrap Wrap contract commands + system Send eosio.system contract action to the blockchain. +``` + +### Подкоманды cleos + +Справка по конкретной подкоманде: `cleos SUBCOMMAND --help`. Например: + +```sh +cleos create --help +``` + +```console +Create various items, on and off the blockchain +Usage: cleos create SUBCOMMAND + +Subcommands: + key Create a new keypair and print the public and private keys + account Create a new account on the blockchain + (assumes system contract does not restrict RAM usage) +``` + +Для вложенных подкоманд справка тоже доступна. Например: + +```sh +cleos create account --help +``` + +```console +Create a new account on the blockchain (assumes system contract does not restrict RAM usage) +Usage: cleos create account [OPTIONS] creator name OwnerKey [ActiveKey] + +Positionals: + creator TEXT The name of the account creating the new account (required) + name TEXT The name of the new account (required) + OwnerKey TEXT The owner public key or permission level for the new account (required) + ActiveKey TEXT The active public key or permission level for the new account + +Options: + -h,--help Print this help message and exit + -x,--expiration set the time in seconds before a transaction expires, defaults to 30s + -f,--force-unique force the transaction to be unique. this will consume extra bandwidth and remove any protections against accidently issuing the same transaction multiple times + -s,--skip-sign Specify if unlocked wallet keys should be used to sign transaction + -j,--json print result as json + --json-file TEXT save result in json format into a file + -d,--dont-broadcast don't broadcast transaction to the network (just print to stdout) + --return-packed used in conjunction with --dont-broadcast to get the packed transaction + -r,--ref-block TEXT set the reference block num or block id used for TAPOS (Transaction as Proof-of-Stake) + --use-old-rpc use old RPC push_transaction, rather than new RPC send_transaction + -p,--permission TEXT ... An account and permission level to authorize, as in 'account@permission' (defaults to 'creator@active') + --max-cpu-usage-ms UINT set an upper limit on the milliseconds of cpu usage budget, for the execution of the transaction (defaults to 0 which means no limit) + --max-net-usage UINT set an upper limit on the net usage budget, in bytes, for the transaction (defaults to 0 which means no limit) + --delay-sec UINT set the delay_sec seconds, defaults to 0s +``` + +## Пример + +Команда ниже создаёт локальный кошелёк `mywallet` и выводит пароль: + +```sh +cleos wallet create -n mywallet --to-console +``` + +```console +Creating wallet: mywallet +Save password to use in the future to unlock this wallet. +Without password imported keys will not be retrievable. +"PW5JbF34UdA193Eps1bjrWVJRaNMt1VKddLn4Dx6SPVTfMDRnMBWN" +``` diff --git a/docs/documentation/blockchain/coopos/03_keosd/10_usage.md b/docs/documentation/blockchain/coopos/03_keosd/10_usage.md new file mode 100644 index 000000000..39f1d87c3 --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/10_usage.md @@ -0,0 +1,107 @@ +--- +content_title: Использование keosd +--- + +!!! note "Рекомендуемый способ" + Чаще всего удобнее, чтобы `keosd` запускал автоматически `cleos`. Файлы кошельков создаются в каталоге по умолчанию (`~/eosio-wallet`). + +## Ручной запуск keosd + +`keosd` можно запустить вручную в терминале: + +```sh +keosd +``` + +По умолчанию `keosd` создаёт папку `~/eosio-wallet` и базовый файл `config.ini`. Расположение конфигурации задаётся аргументом `--config-dir`. В конфигурации задаётся HTTP-endpoint для входящих соединений и прочие параметры CORS. + +!!! note "Расположение кошелька" + Каталог данных кошелька задаётся опцией `--data-dir`. + +## Автоблокировка + +По умолчанию `keosd` блокирует кошелёк после 15 минут неактивности. В `config.ini` это настраивается секундами в `unlock-timeout`. В исходной документации указано, что значение `0` приводит к тому, что кошелёк всегда остаётся заблокированным; уточните поведение для вашей версии по выводу `keosd --help`. + +## Остановка keosd + +Надёжный способ — найти процесс `keosd` и отправить ему сигнал SIGTERM. + +## Прочие опции + +Список опций `keosd` — запуск без аргументов: + +```sh +keosd --help +``` + +```console +Application Options: + +Config Options for eosio::http_plugin: + --unix-socket-path arg (=keosd.sock) The filename (relative to data-dir) to + create a unix socket for HTTP RPC; set + blank to disable. + --http-server-address arg The local IP and port to listen for + incoming http connections; leave blank + to disable. + --access-control-allow-origin arg Specify the Access-Control-Allow-Origin + to be returned on each request. + --access-control-allow-headers arg Specify the Access-Control-Allow-Header + s to be returned on each request. + --access-control-max-age arg Specify the Access-Control-Max-Age to + be returned on each request. + --access-control-allow-credentials Specify if Access-Control-Allow-Credent + ials: true should be returned on each + request. + --max-body-size arg (=1048576) The maximum body size in bytes allowed + for incoming RPC requests + --http-max-bytes-in-flight-mb arg (=500) + Maximum size in megabytes http_plugin + should use for processing http + requests. 503 error response when + exceeded. + --verbose-http-errors Append the error log to HTTP responses + --http-validate-host arg (=1) If set to false, then any incoming + "Host" header is considered valid + --http-alias arg Additionaly acceptable values for the + "Host" header of incoming HTTP + requests, can be specified multiple + times. Includes http/s_server_address + by default. + --http-threads arg (=2) Number of worker threads in http thread + pool + +Config Options for eosio::wallet_plugin: + --wallet-dir arg (=".") The path of the wallet files (absolute + path or relative to application data + dir) + --unlock-timeout arg (=900) Timeout for unlocked wallet in seconds + (default 900 (15 minutes)). Wallets + will automatically lock after specified + number of seconds of inactivity. + Activity is defined as any wallet + command e.g. list-wallets. + +Application Config Options: + --plugin arg Plugin(s) to enable, may be specified + multiple times + +Application Command Line Options: + -h [ --help ] Print this help message and exit. + -v [ --version ] Print version information. + --print-default-config Print default configuration template + -d [ --data-dir ] arg Directory containing program runtime + data + --config-dir arg Directory containing configuration + files such as config.ini + -c [ --config ] arg (=config.ini) Configuration file name relative to + config-dir + -l [ --logconf ] arg (=logging.json) Logging configuration file name/path + for library users +``` + + +Исправляю раздел про `unlock-timeout` в `10_usage.md`: в оригинале указано «always lock» — перевожу буквально. + +<|tool▁calls▁begin|><|tool▁call▁begin|> +StrReplace \ No newline at end of file diff --git a/docs/documentation/blockchain/coopos/03_keosd/15_plugins/http_plugin.md b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/http_plugin.md new file mode 100644 index 000000000..fe2f3cc9d --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/http_plugin.md @@ -0,0 +1,3 @@ +--- +link: /01_nodeos/03_plugins/http_plugin/index.md +--- diff --git a/docs/documentation/blockchain/coopos/03_keosd/15_plugins/index.md b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/index.md new file mode 100644 index 000000000..b6444787c --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/index.md @@ -0,0 +1,14 @@ +--- +content_title: Плагины keosd +--- + +## Обзор + +Плагины расширяют базовую функциональность `keosd`. Описание конкретных плагинов — в списке ниже: + +* [`http_plugin`](../../01_nodeos/03_plugins/http_plugin/index.md) +* [`wallet_api_plugin`](wallet_api_plugin/index.md) +* [`wallet_plugin`](wallet_plugin/index.md) + +!!! note "Модульность keosd" + Плагины добавляют возможности по шагам. В отличие от подключаемых на лету модулей, плагины `keosd` собираются на этапе компиляции. diff --git a/docs/documentation/blockchain/coopos/03_keosd/15_plugins/wallet_api_plugin/index.md b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/wallet_api_plugin/index.md new file mode 100644 index 000000000..2304bed75 --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/wallet_api_plugin/index.md @@ -0,0 +1,45 @@ +--- +content_title: Плагин wallet_api_plugin +--- + +## Описание + +Плагин `wallet_api_plugin` выставляет возможности [`wallet_plugin`](../wallet_plugin/index.md) через RPC API, управляемое [`http_plugin`](../../../01_nodeos/03_plugins/http_plugin/index.md). + +!!! warning "Осторожно" + Плагин открывает доступ к кошелькам. Не рекомендуется запускать его на публично доступном узле. Начиная с 1.2.0, `wallet_api_plugin` доступен только через `keosd`; в `nodeos` больше не поддерживается. + +## Использование + +```sh +# config.ini +plugin = eosio::wallet_api_plugin + +# command-line +keosd ... --plugin eosio::wallet_api_plugin +``` + +## Опции + +Нет + +## Зависимости + +* [`wallet_plugin`](../wallet_plugin/index.md) +* [`http_plugin`](../../../01_nodeos/03_plugins/http_plugin/index.md) + +### Примеры загрузки зависимостей + +Следующие плагины подключаются с настройками по умолчанию, если не указаны в командной строке или `config.ini`: + +```sh +# config.ini +plugin = eosio::wallet_plugin +[options] +plugin = eosio::http_plugin +[options] + +# command-line +keosd ... --plugin eosio::wallet_plugin [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/03_keosd/15_plugins/wallet_plugin/index.md b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/wallet_plugin/index.md new file mode 100644 index 000000000..1b838ffdf --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/15_plugins/wallet_plugin/index.md @@ -0,0 +1,45 @@ +--- +content_title: Плагин wallet_plugin (keosd / nodeos) +--- + +## Описание + +Плагин `wallet_plugin` добавляет доступ к функциям кошелька на узле. + +!!! warning "Осторожно" + Плагин не рассчитан на загрузку на публично доступном узле без дополнительных мер безопасности. Особенно это касается `wallet_api_plugin`, который ни при каких обстоятельствах не следует включать на публично доступном узле. + +## Использование + +```sh +# config.ini +plugin = eosio::wallet_plugin + +# command-line +nodeos ... --plugin eosio::wallet_plugin +``` + +## Опции + +Нет + +## Зависимости + +* `http_plugin` + +[//]: # ( THIS IS A COMMENT LINK BELOW IS BROKEN ) +[//]: # ( `http_plugin` ../http_plugin.md ) + +### Примеры загрузки зависимостей + +```sh +# config.ini +plugin = eosio::wallet_plugin +[options] +plugin = eosio::http_plugin +[options] + +# command-line +nodeos ... --plugin eosio::wallet_plugin [options] \ + --plugin eosio::http_plugin [options] +``` diff --git a/docs/documentation/blockchain/coopos/03_keosd/20_security.md b/docs/documentation/blockchain/coopos/03_keosd/20_security.md new file mode 100644 index 000000000..64fe0962d --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/20_security.md @@ -0,0 +1,17 @@ +--- +content_title: Безопасность keosd +--- + +### Как работает блокировка/разблокировка `keosd` и какие есть последствия для безопасности? + +С точки зрения пользователя после создания кошелёк остаётся в состоянии `unlocked`. В зависимости от способа запуска `keosd` он может оставаться `unlocked` до перезапуска процесса. При блокировке (по таймауту или после перезапуска) для разблокировки нужен пароль. + +Важно: у `keosd` нет механизма аутентификации/авторизации кроме блокировки/разблокировки кошелька для хранения/извлечения закрытых ключей и подписи сообщений. + +### Как обращаются к сервису `keosd` и какие риски? + +При доступе через доменный сокет любой пользователь/группа UNIX с правом записи в файл сокета может отправлять транзакции и получать подписанные транзакции от `keosd`, используя любой ключ из любого разблокированного кошелька. + +При TCP-сокете, привязанном к localhost, то же может делать любой локальный процесс (независимо от владельца и прав). В том числе фрагмент JavaScript на веб-странице в локальном браузере (у некоторых браузеров есть частичная защита). + +При TCP-сокете на адресе LAN/WAN любой удалённый участник, способный доставлять пакеты до машины с `keosd`, может делать то же самое. Это серьёзный риск, даже если трафик шифруется или идёт по HTTPS. diff --git a/docs/documentation/blockchain/coopos/03_keosd/35_wallet-specification.md b/docs/documentation/blockchain/coopos/03_keosd/35_wallet-specification.md new file mode 100644 index 000000000..ebd1f1adc --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/35_wallet-specification.md @@ -0,0 +1,144 @@ +--- +content_title: Спецификация кошелька EOS +--- + +## Формат импорта кошелька EOS (WIF) + +Wallet Import Format — кодирование закрытого ключа ECDSA. В EOS используются те же версия, контрольная сумма и схема кодирования, что и у Bitcoin WIF; совместимость с существующими библиотеками [1]. + +Пример закрытого ключа в WIF: + +``` +5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU +``` + +Это кодирование удобно для: + +* копирования и вставки закрытых ключей (снижает риск обрезки) +* включения ключей в текстовые или редактируемые пользователем форматы +* сокращения длины записи ключа + +Менее удобно для: + +* ручной переписи ключа (ошибка в регистре буквы уже критична) +* бинарного хранилища, где ключ уже обрабатывается кодом и проверен + +Замечания: + +* Если ключ может быть записан от руки или набран заново, лучше подойдёт стандарт мнемоник BIP39. +* Имеет смысл помечать WIF-ключ словами «Private» или «Private Key». + +## Закрытый ключ → WIF + +1. Используется «фиктивный» закрытый ключ из нулей. Длина 32 байта (ниже в hex). + +``` +0000000000000000000000000000000000000000000000000000000000000000 +``` + +2. В начало добавляется байт 0x80. Он соответствует mainnet Bitcoin; в EOS используется тот же байт версии. При кодировании байт версии помогает отличить запись как закрытый ключ. В отличие от Bitcoin, в EOS всегда используются сжатые открытые ключи (производные от закрытого), поэтому к закрытому ключу не добавляется суффикс 0x01. + +``` +800000000000000000000000000000000000000000000000000000000000000000 +``` + +3. Выполняется двоичный хеш SHA-256 от ключа с версией. + +``` +ce145d282834c009c24410812a60588c1085b63d65a7effc2e0a5e3a2e21b236 +``` + +4. Выполняется двоичный SHA-256 от результата предыдущего шага. + +``` +0565fba7ebf8143516e0222d7950c28589a34c3ee144c3876ceb01bfb0e9bb70 +``` + +5. Первые 4 байта второго SHA-256 — контрольная сумма. + +``` +0565fba7 +``` + +6. К ключу с версией из шага 2 добавляются 4 байта контрольной суммы. + +``` +8000000000000000000000000000000000000000000000000000000000000000000565fba7 +``` + +7. Двоичные данные из шага 6 кодируются [Base58](http://npmjs.com/package/bs58). + +``` +5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU +``` + +--- + +## WIF → закрытый ключ (проверка контрольной суммы) + +1. Начинаем с закрытого ключа в формате WIF. + +``` +5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU +``` + +2. [Base58](http://npmjs.com/package/bs58)-декодирование строки WIF (ниже показано в HEX). + +``` +8000000000000000000000000000000000000000000000000000000000000000000565fba7 +``` + +3. Декодированные данные делятся на ключ с версией и контрольную сумму (последние 4 байта). + +``` +800000000000000000000000000000000000000000000000000000000000000000 +0565fba7 +``` + +4. Двоичный SHA-256 от ключа с версией. + +``` +ce145d282834c009c24410812a60588c1085b63d65a7effc2e0a5e3a2e21b236 +``` + +5. Двоичный SHA-256 от результата предыдущего шага. + +``` +0565fba7ebf8143516e0222d7950c28589a34c3ee144c3876ceb01bfb0e9bb70 +``` + +6. Первые 4 байта второго SHA-256 — контрольная сумма. + +``` +0565fba7 +``` + +7. Сравните контрольные суммы из шагов 3 и 6. + +8. Ключ с версией из шага 3 делится на байт версии и закрытый ключ. + +``` +80 +0000000000000000000000000000000000000000000000000000000000000000 +``` + +9. Если версия 0x80, ошибки нет. + +--- + +## [Base58check](https://www.npmjs.com/package/base58check) + +Base58Check — JavaScript-реализация этого алгоритма; ею можно кодировать и декодировать закрытые ключи EOS в формате WIF. + +```sh +base58check = require('base58check') +wif = base58check.encode(privateKey = '00'.repeat(32), version = '80', encoding = 'hex') +assert.equal('5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU', wif) +let {prefix, data} = base58check.decode(wif) +assert.equal(prefix.toString('hex'), '80') +assert.equal(data.toString('hex'), '00'.repeat(32)) +``` + +--- + +[1] Формат Bitcoin WIF — https://en.bitcoin.it/wiki/Wallet_import_format diff --git a/docs/documentation/blockchain/coopos/03_keosd/40_troubleshooting.md b/docs/documentation/blockchain/coopos/03_keosd/40_troubleshooting.md new file mode 100644 index 000000000..58168a5db --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/40_troubleshooting.md @@ -0,0 +1,13 @@ +--- +content_title: Устранение неполадок keosd +--- + +## Как устранить ошибку «Failed to lock access to wallet directory; is another `keosd` running»? + +Так как `cleos` может автоматически запускать экземпляр `keosd`, на системе иногда оказывается несколько процессов `keosd`. Это может давать сбои или указанное сообщение. + +Завершите все запущенные экземпляры `keosd` и запустите `keosd` снова. Пример команды для завершения всех процессов `keosd`: + +```sh +pkill keosd +``` diff --git a/docs/documentation/blockchain/coopos/03_keosd/50_FAQ.md b/docs/documentation/blockchain/coopos/03_keosd/50_FAQ.md new file mode 100644 index 000000000..5a5a0cf41 --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/50_FAQ.md @@ -0,0 +1,11 @@ +--- +content_title: Частые вопросы о keosd +--- + +### Как `keosd` хранит пары ключей + +`keosd` шифрует пары ключей перед записью в файл кошелька. В зависимости от реализации (Secure Enclave, YubiHSM и т.д.) используется свой криптоалгоритм. При стандартной файловой системе на UNIX `keosd` шифрует пары ключей AES-256 в режиме CBC. + +### Как включить Secure Enclave в `keosd` + +Нужно подписать бинарник `keosd` сертификатом из Apple Developer Account. У консольных приложений при подписи могут быть ограничения со стороны App Store; подписанные бинарники иногда приходится переподписывать каждые 7 дней. diff --git a/docs/documentation/blockchain/coopos/03_keosd/index.md b/docs/documentation/blockchain/coopos/03_keosd/index.md new file mode 100644 index 000000000..47b9c9cc1 --- /dev/null +++ b/docs/documentation/blockchain/coopos/03_keosd/index.md @@ -0,0 +1,21 @@ +--- +content_title: keosd +--- + +!!! note "На русском" + **keosd** — демон кошелька для **cleos**. Ниже — полный текст раздела. + +## Введение + +`keosd` — фоновый сервис управления ключами: хранение закрытых ключей и подпись сообщений. Обеспечивает защищённое хранилище ключей с шифрованием «на диске» в файле кошелька. `keosd` задаёт защищённую среду для подписи транзакций, созданных `cleos` или сторонней библиотекой. + +## Установка + +`keosd` входит в [репозиторий COOPOS](https://github.com/coopenomics/coopos). Установка — в разделе [Установка ПО COOPOS](../00_install/index.md). + +## Работа + +Когда кошелёк разблокирован паролем, `cleos` может запросить у `keosd` подпись транзакции соответствующими закрытыми ключами. `keosd` также поддерживает аппаратные кошельки (например, Secure Enclave и YubiHSM). + +!!! note "Аудитория" + `keosd` предназначен в основном для разработчиков COOPOS. diff --git a/docs/documentation/blockchain/coopos/10_utilities/index.md b/docs/documentation/blockchain/coopos/10_utilities/index.md new file mode 100644 index 000000000..228a84426 --- /dev/null +++ b/docs/documentation/blockchain/coopos/10_utilities/index.md @@ -0,0 +1,11 @@ +--- +content_title: Утилиты COOPOS +link_text: Утилиты COOPOS +--- + +!!! note "На русском" + Утилиты COOPOS для **nodeos**; ниже — полный текст раздела. + +В этом разделе — документация по дополнительным утилитам, которые дополняют или расширяют `nodeos` и при необходимости другое ПО COOPOS: + +* [trace_api_util](trace_api_util.md) — низкоуровневая утилита для задач, связанных с [Trace API](../01_nodeos/03_plugins/trace_api_plugin/index.md). diff --git a/docs/documentation/blockchain/coopos/10_utilities/trace_api_util.md b/docs/documentation/blockchain/coopos/10_utilities/trace_api_util.md new file mode 100644 index 000000000..7534726ec --- /dev/null +++ b/docs/documentation/blockchain/coopos/10_utilities/trace_api_util.md @@ -0,0 +1,48 @@ +--- +content_title: Утилита trace_api_util +link_text: trace_api_util +--- + +`trace_api_util` — утилита командной строки (CLI), с помощью которой операторы узла выполняют низкоуровневые операции, связанные с [плагином Trace API](../01_nodeos/03_plugins/trace_api_plugin/index.md). `trace_api_util` поддерживает одну из следующих операций: + +* Сжатие файла трассировки `log` в сжатый формат `clog`. + +## Использование +```sh +trace_api_util command ... +``` + +## Опции +Опция (=по умолчанию) | Описание +-|- +`-h [ --help` ] | показать справку + +## Команды +Команда | Описание +-|- +`compress` | сжать файл трассировки в формат `clog` + +### compress +Сжимает файл трассировки `log` в формат `clog`. По умолчанию имя сжатого файла совпадает с `input-path`, но расширение меняется на `clog`. + +#### Использование +```sh +trace_api_util compress input-path [output-path] +``` + +#### Позиционные аргументы +Опция (=по умолчанию) | Описание +-|- +`input-path` | путь к сжимаемому файлу +`output-path` | [Необязательно] путь к выходному файлу или каталогу + +#### Опции +Опция (=по умолчанию) | Описание +-|- +`-h [ --help ]` | показать справку +`-s [ --seek-point-stride ] arg (=512)` | число байт между точками поиска в сжатой трассировке; меньший шаг может ухудшить сжатие, но ускорить чтение + +## Замечания +При запуске `trace_api_util` утилита пытается выполнить указанную операцию, возможны исходы: +* при успехе операция выполняется и процесс завершается с кодом 0; +* при ошибке сообщение выводится в `stderr`, код завершения ненулевой. diff --git a/docs/documentation/blockchain/coopos/doxygen.css b/docs/documentation/blockchain/coopos/doxygen.css new file mode 100644 index 000000000..266c8b3a6 --- /dev/null +++ b/docs/documentation/blockchain/coopos/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/docs/documentation/blockchain/coopos/index.md b/docs/documentation/blockchain/coopos/index.md new file mode 100644 index 000000000..3bca7d642 --- /dev/null +++ b/docs/documentation/blockchain/coopos/index.md @@ -0,0 +1,19 @@ +--- +content_title: Программы узла и справка по командам +--- + +# Программы узла и справка по командам + +Здесь — справка по **COOPOS**: установка, **nodeos**, **cleos**, **keosd**, плагины, HTTP API и утилиты. Страницы переводятся на русский; фрагменты вывода консоли и имена подкоманд **cleos** сохраняются как в CLI. + +## Компоненты + +- **[Установка](00_install/index.md)** — сборка из исходников, поддерживаемые ОС, вспомогательные средства. +- **[nodeos](01_nodeos/index.md)** — узел сети: запуск, плагины, реплеи, RPC, логирование, концепции, устранение неполадок. +- **[cleos](02_cleos/index.md)** — работа с HTTP API узла и с **keosd**. +- **[keosd](03_keosd/index.md)** — хранение ключей и подпись транзакций. +- **[Утилиты](10_utilities/index.md)** — дополнительные инструменты. + +В оглавлении эти материалы собраны под **cleos**: [Ресурсы сети, регистрация и контракты](../system-resources.md), [Ресурсы и powerup — примеры cleos](resources-powerup-ru.md). + +Остальные страницы дерева доступны по внутренним ссылкам и собираются сайтом документации. diff --git a/docs/documentation/blockchain/coopos/leap_components.png b/docs/documentation/blockchain/coopos/leap_components.png new file mode 100644 index 000000000..59660cb77 Binary files /dev/null and b/docs/documentation/blockchain/coopos/leap_components.png differ diff --git a/docs/documentation/blockchain/coopos/resources-powerup-ru.md b/docs/documentation/blockchain/coopos/resources-powerup-ru.md new file mode 100644 index 000000000..ecffc4ea7 --- /dev/null +++ b/docs/documentation/blockchain/coopos/resources-powerup-ru.md @@ -0,0 +1,33 @@ +# Ресурсы COOPOS: действие `powerup` и CLI + +В сети COOPOS ресурсы NET, CPU и RAM выдаются действием контракта **`eosio.system`** — **`powerup`**. Отдельной подкоманды `cleos system powerup` в справке может не быть; действие отправляют через **`cleos push action`**. + +## Сигнатура действия + +| Поле | Тип | Смысл | +|------|-----|--------| +| `payer` | имя | Кто платит токенами | +| `receiver` | имя | Кому начисляются ресурсы | +| `days` | `uint32` | Срок аренды в днях — совпадает с `powerup_days` в состоянии рынка | +| `payment` | актив | Сумма в основном токене сети | +| `transfer` | `bool` | Режим передачи ресурсов (для `registrator` / `eosio.system` при регистрации и др.) | + +Подробнее: [Ресурсы сети, регистрация и контракты](../system-resources.md). + +## Примеры `cleos push action` + +```bash +cleos -u https://ВАША_НОДА push action eosio.system powerup \ + '["ПЛАТЕЛЬЩИК", "ПОЛУЧАТЕЛЬ", ДНИ, "1.0000 SYS", false]' -p ПЛАТЕЛЬЩИК@active +``` + +Обработка очереди истёкших аренд: + +```bash +cleos -u https://ВАША_НОДА push action eosio.system powerupexec \ + '["ВЫЗЫВАЮЩИЙ", 100]' -p ВЫЗЫВАЮЩИЙ@active +``` + +## См. также + +- Справка по подкомандам `cleos system`: [system](02_cleos/03_command-reference/system/index.md) (в т.ч. `buyram`, `delegatebw`, `rex` — описание интерфейса; фактическое поведение сети задаёт контракт `eosio.system`). diff --git a/docs/documentation/blockchain/intro.md b/docs/documentation/blockchain/intro.md index 32be0ac5f..85c5b8209 100644 --- a/docs/documentation/blockchain/intro.md +++ b/docs/documentation/blockchain/intro.md @@ -78,4 +78,6 @@ flowchart TB Например, никак невозможно забрать имущество из пункта выдачи заказа до момента поступления оплаты, или, нельзя принять пайщика в кооператив до решения совета, и так далее и тому подобное. И блокчейну в данном случае абсолютно не важно как зовут пайщика или в каком кооперативе это происходит - все должны соблюдать программные правила всех смарт-контрактов. Что и формирует необходимые условия для создания системы стандартов кооперации. - \ No newline at end of file + + +Программное обеспечение узла и инструментов сети — **COOPOS**. Ресурсы (**powerup**), регистрация аккаунтов и контракты описаны в разделе **cleos**: [Ресурсы сети, регистрация и контракты](system-resources.md). Установка, **nodeos**, **cleos**, **keosd** и полная справка по командам: [Программы узла и справка](coopos/index.md). \ No newline at end of file diff --git a/docs/documentation/blockchain/nodes.md b/docs/documentation/blockchain/nodes.md index 0a968368e..664288542 100644 --- a/docs/documentation/blockchain/nodes.md +++ b/docs/documentation/blockchain/nodes.md @@ -1,11 +1,11 @@ -Все транзакции, которые отправляются в блокчейн - принимаются нодами. Полная копия всей цепочки содержится на каждой ноде и передаётся другим нодам по внутренним протоколам связи с регулярностью дважды в секунду (2 блока в секунду). +Все транзакции, которые отправляются в блокчейн — принимаются нодами. На **полных** PEER-нодах хранится **полная** копия цепочки блоков; она передаётся другим нодам по внутренним протоколам с регулярностью дважды в секунду (2 блока в секунду). **Light-ноды** намеренно **не** держат архив всей цепи: они стартуют **со снимка** и синхронизируют только **новые** блоки (см. раздел [LIGHT-нода](#light-нода) ниже). !!!note "Нода - экземпляр серверного программного обеспечения блокчейна" На нодах исполняется программное обеспечение блокчейна. Ноду блокчейна может запустить и синхронизировать из открытых источников любой желающий на своём сервере. -История транзакций образует публичную последовательность вызова действий всех смарт-контрактов от момента запуска платформы. И эта содержится одновременно на всех нодах сети и она абсолютно идентичная. +История транзакций образует публичную последовательность вызова действий всех смарт-контрактов от момента запуска платформы. На **полных** нодах она **идентична**; у **light-нод** локально доступны только **фрагмент** цепи после снимка и **текущее согласованное состояние** для работы приложений. -Однако, то, как ноды работают с этой историей, зависит от их назначения. Всего в сети можно выделить 4 основных функциональных назначения нод: HISTORY-ноды, DELEGATE-ноды, SEED-ноды и API-ноды. +Однако, то, как ноды работают с этой историей, зависит от их назначения. На прикладном уровне обычно выделяют **HISTORY-ноды** (в конфигурации COOPOS это часто отдельный профиль **state-ноды** с `state_history_plugin`), **DELEGATE-ноды**, **SEED-ноды** и **API-ноды**. Отдельно в эксплуатации кооперативов повсеместно используются **light-ноды**: они поднимаются **со снимка состояния**, **не хранят полную историю** с генезиса, но **мгновенно готовы к работе** и обычно включают **локальный API** и **P2P** для синхронизации новых блоков **между контурами кооперативов**. Примеры `config.ini` для state- и light-профилей см. в разделе [Конфигурация](configuration/index.md). Все эти ноды по своей сути являются PEER-нодами, т.е. нодами, которые равны друг другу. @@ -54,7 +54,7 @@ flowchart TD ## HISTORY-нода Несмотря на то, что все PEER-ноды обычно содержат полную цепочку истории событий, это не предоставляет им прямой возможности обращения к ней. История содержится на всех PEER-нодах, воспроизводится при запуске, и синхронизируется, но в этом процессе используются только данные из текущего блока. После проверки блока - данные уходят в историю, сохраняются на жестком диске в цепочке истории, и активно в PEER-ноде не используются. -Чтобы их использовать активно, каждый желающий может запустить HISTORY-ноду, включив дополнительный плагин, который сделает все исторические данные доступными по протоколу Websocket. В сети существуют программные решения (в том числе в наших репозиториях), которые используют HISTORY-ноды для извлечения данных из цепочки истории ноды - в обычную базу данных MONGO или POSTGRES. +Чтобы их использовать активно, каждый желающий может запустить HISTORY-ноду, включив дополнительный плагин, который сделает исторические данные доступными по протоколу **State History (SHiP)** поверх WebSocket (см. [State History (SHiP)](state-history-ship.md)). Для подписки на этот поток и десериализации в прикладные потоки в экосистеме COOPOS поставляется **[Реактивный чтец SHiP](../reactive-ship-reader.md)**; классические пайплайны также выгружают данные в **MongoDB** или **PostgreSQL**. **State-ноду** при желании **совмещают с API-нодой** на одном хосте или выносят отдельно — см. [state-нода](configuration/state-node.md). ```mermaid flowchart TD @@ -151,6 +151,17 @@ API-ноды при получении новой транзакции неме Но API-нода не беспокоится об этом. Её задачи - первичная валидация, вещание транзакции в сеть, а также, извлечение информации из собственной базы данных по запросам. База данных API-ноды формируется в процессе синхронизации и обновляется дважды в секунду автоматизированным и заверенным решением делегатов. +На **light-нодах** тот же **Chain API** используется для **локальной** работы приложений кооператива: состояние соответствует цепи **с момента снимка** и далее по новым блокам, без полного архива прошлого. Профиль см. [light-нода](configuration/light-node.md). + + +## LIGHT-нода + +**Light-нода** — экземпляр `nodeos`, запущенный **со снимком (snapshot)**: не воспроизводится вся цепь с первого блока, узел получает **готовое состояние** и дальше **догоняет сеть по P2P**. Такой режим даёт **быстрый старт** и меньшие требования к диску под полный журнал блоков. + +В системе **кооперативов** типовая схема — **light-ноды на каждом контуре**: внутри контура работает **API** для сервисов, а **P2P** связывает узлы **между кооперативами** (и при необходимости с публичными seed-нодами сети). Глубокая **история** и индексация при этом опираются на выделенные **state-ноды** и клиентов вроде [Реактивного чтеца SHiP](../reactive-ship-reader.md), а не на полный локальный лог на каждой light-ноде. + +Подробнее: [Конфигурация: light-нода](configuration/light-node.md). + ## SEED-нода Для того, чтобы все ноды сети могли получить информацию о её состоянии - необходимы специальные ноды, которые будут предоставлять эту информацию большими пачками блоков транзакций. Такие ноды называются SEED, или, семя. @@ -188,7 +199,7 @@ flowchart TD Синхронизация - процесс скачивания и криптографической проверки истории транзакций блокчейна. -При подключении новой PEER-ноды к платформе, она скачивает всю историю, криптографически проверяет взаимосвязь между блоками, и полностью воссоздаёт состояние своей базы данных таким, какое оно у всех других нод в сети. +При подключении новой **полной** PEER-ноды к платформе она скачивает **всю** историю, криптографически проверяет взаимосвязь между блоками и полностью воссоздаёт состояние своей базы данных таким, какое оно у остальных нод сети. **Light-нода** вместо этого загружает **снимок состояния** и затем синхронизирует **только новые** блоки по P2P — прошлое не восстанавливается локально, зато узел **готов к работе сразу** после применения снимка и подключения к пирам. Синхронизация выполняется между всеми PEER-нодами дважды в секунду. Именно такая скорость производства новых блоков истории транзакций на платформе. Блоки могут быть и пустыми, но процесс производства и синхронизации не останавливается ни на секунду. diff --git a/docs/documentation/blockchain/sostav.md b/docs/documentation/blockchain/sostav.md index 884017c03..d89f635fd 100644 --- a/docs/documentation/blockchain/sostav.md +++ b/docs/documentation/blockchain/sostav.md @@ -1,6 +1,6 @@ # Состав -Операционная система кооперативной экономики основана на открытом коде блокчейнов EOSIO и Antelope. Она предоставляет ряд компонентов и библиотек, которые используются для управления узлами распределенного реестра, сбора данных, взаимодействия с этими узлами и разработки смарт-контрактов. +Операционная система кооперативной экономики опирается на стек **COOPOS**: компоненты и библиотеки для управления узлами распределённого реестра, сбора данных, взаимодействия с сетью и разработки смарт-контрактов. [:octicons-arrow-right-24: Репозиторий nodeos, cleos и keosd](https://github.com/coopenomics/blockchain) diff --git a/docs/documentation/blockchain/state-history-ship.md b/docs/documentation/blockchain/state-history-ship.md new file mode 100644 index 000000000..ad1f96868 --- /dev/null +++ b/docs/documentation/blockchain/state-history-ship.md @@ -0,0 +1,77 @@ +# State History (SHiP) + +**State History (SHiP)** — плагин `state_history` в узле COOPOS. Он нужен, чтобы **индексаторы и сервисы** получали **историю цепи потоком**: блоки, при необходимости **трассировки транзакций** и **изменения таблиц состояния** (дельты), а не только точечные ответы по HTTP. + +**Зачем отдельный механизм.** Обычный **Chain API** удобен для текущего состояния и разовых запросов. **Trace API** отдаёт данные из **файлов** трасс на диске. **SHiP** даёт **подписку и догон синхронизации** по одному каналу с контролем нагрузки на узел — это типичный способ строить проводники, аналитику и кошельки, которым нужна полная история. + +**Важно:** это **не REST и не OpenAPI**. Транспорт — **WebSocket** (или Unix-socket с тем же протоколом), сообщения после рукопожатия — **бинарные**. Для интеграции используйте **готовые реализации протокола SHiP** под COOPOS: укажите адрес вашего `state-history-endpoint` и при необходимости сверьте `chain_id` из статуса узла. + +В комплекте экосистемы COOPOS для подписки на поток SHiP в Node.js-приложениях используется **[Реактивный чтец SHiP](../reactive-ship-reader.md)** ([coopos-ship-reader](https://github.com/coopenomics/coopos-ship-reader) на GitHub). + +--- + +## Устройство на узле + +Узел при применении блока пишет в **журналы** state history (трассы и/или дельты состояния — в зависимости от настроек) и может **уведомлять** уже подключённых клиентов о новой голове цепи. Клиент по WebSocket запрашивает диапазон блоков и получает поток результатов. + +```mermaid +sequenceDiagram + participant Chain as Цепь (контроллер) + participant SHiP as state_history_plugin + participant Logs as Журналы SHiP + participant Client as Клиент (готовая SHiP-библиотека) + + Chain->>SHiP: блок принят + SHiP->>Logs: запись трасс / дельт + SHiP->>Client: при необходимости — обновление (новый head) + Client->>SHiP: запрос блоков / статуса + SHiP->>Client: поток данных по протоколу SHiP +``` + +Детали сериализации и очередей сообщений реализованы в узле; **писать свой парсер с нуля не обязательно** — опирайтесь на существующие SHiP-клиенты, в т.ч. на [Реактивный чтец SHiP](../reactive-ship-reader.md). + +--- + +## Что включить на узле + +Основные опции (в `config.ini` или аргументах командной строки): + +| Опция | Зачем | +|--------|--------| +| `trace-history = true` | Писать журнал **трассировок** транзакций. | +| `chain-state-history = true` | Писать журнал **дельт состояния** таблиц. С этим режимом на узле действуют ограничения на replay (целостность журнала). | +| `state-history-endpoint` | Адрес и порт для **входящих** WebSocket-подключений (по умолчанию в коде часто `127.0.0.1:8080`). **Не открывайте в интернет без защиты** — это полный поток истории. | +| `state-history-unix-socket-path` | Вместо TCP — **Unix socket** (удобно локально). | +| `state-history-dir` | Каталог данных SHiP (часто `state-history` рядом с data-dir). | + +Дополнительно узел может **урезать или нарезать** журналы по блокам (`state-history-log-retain-blocks`, stride/archive и т.д.) — если узел не «архивный», это помогает не забить диск. В логах при старте обычно видно **с какого блока** доступна история — индексатор начинает синхронизацию оттуда. + +--- + +## Краткий поток + +- После подключения по WebSocket сервер первым делом шлёт **текстовый ABI** — по нему клиенты понимают бинарные типы. +- Дальше обмен **бинарными** сообщениями: запрос статуса узла, запрос диапазона блоков с флагами «что отдавать» (блок / трассы / дельты), при необходимости **подтверждения приёма**, чтобы узел не перегрузил клиента. +- Поведение при **смене ветки** (fork) учитывается протоколом — готовые клиенты это обрабатывают. + +Низкоуровневые таблицы полей и порядок фреймов описаны в коде COOPOS (`libraries/state_history/.../types.hpp`, плагин `state_history_plugin`); для повседневной работы достаточно **готового SHiP-клиента**. + +--- + +## Эксплуатация + +- Журналы могут занимать **много места** — продумайте retain/partition или отдельный архивный узел. +- Первый прогон с `chain-state-history` может долго **инициализировать** состояние в журнале — это ожидаемо. +- Доступ к endpoint — только **доверенной** сети (VPN, firewall, Unix socket). + +--- + +## Где это в документации API + +| Механизм | Как ходить | Роль | +|----------|------------|------| +| Chain API | HTTP, JSON | Состояние, таблицы, push транзакций. | +| Trace API | HTTP, JSON | Чтение файлов трасс на диске. | +| **State History (SHiP)** | **WebSocket, бинарный протокол** | **Потоковая** история блоков, трасс и дельт для индексаторов. | + +Исходники плагина и тесты сценария подключения: `coopos/plugins/state_history_plugin/` (в т.ч. `state_history_plugin.cpp`, каталог `tests/`). diff --git a/docs/documentation/blockchain/system-resources.md b/docs/documentation/blockchain/system-resources.md new file mode 100644 index 000000000..789b494cd --- /dev/null +++ b/docs/documentation/blockchain/system-resources.md @@ -0,0 +1,26 @@ +# Ресурсы сети, регистрация аккаунтов и контракты + +Здесь описано поведение сети на уровне системного контракта **`eosio.system`**: как выдаются **NET**, **CPU** и **RAM**, как создаются аккаунты и кто может обновлять код контрактов. Это справочный текст для операторов и разработчиков, без привязки к исходному коду репозитория контрактов. + +## Ресурсы: `powerup` + +Полоса сети (NET), процессорное время (CPU) и квота **RAM** выдаются через действие **`powerup`**: это **временная аренда** на фиксированное число дней, которое задаётся параметром сети (`powerup_days`). + +- Указываются плательщик и получатель ресурсов; оплата — в основном токене сети. +- Сумма распределяется между рынками NET, CPU и RAM (условно четверть, четверть и половина платежа). +- При обычной аренде фиксируется срок; по его окончании ресурсы возвращаются в общий пул. Очередь истекших аренд обрабатывается в том числе действием **`powerupexec`** (его может вызвать любой аккаунт в пределах лимита за одну транзакцию). +- Если квота RAM оказывается ниже уже используемого объёма, контракт ведёт учёт «долга» по RAM; чтобы его погасить, нужна достаточная сумма в рамках очередного **`powerup`**, иначе транзакция будет отклонена. + +Практические примеры вызова через **`cleos push action`**: [Ресурсы и powerup — примеры cleos](coopos/resources-powerup-ru.md). + +## Создание аккаунтов + +Новые аккаунты в продуктовом контуре создаются через сценарий с участием аккаунта **регистратора** и действия **`createaccnt`**: с кооператива списывается регистрационный взнос, затем от имени системного аккаунта выполняется **`newaccount`**. При включённом рынке **`powerup`** новому аккаунту выдаются стартовые ресурсы через **`powerup`** в режиме передачи (`transfer`), чтобы обеспечить работоспособность аккаунта. + +Протокольное действие **`newaccount`** в сети принимается при авторизации **регистратора** или самого **`eosio.system`**, а не от произвольного «создателя» с кошелька разработчика. + +## Обновление кода контрактов (WASM) + +Обновление программного кода на аккаунте проходит с учётом правил системного контракта: менять WASM могут **только аккаунты, включённые в белый список** контрактов. Остальные попытки **`set contract`** / смены кода на цепи будут отклонены. + +Инструмент **`cleos`** по-прежнему используется для сборки и отправки транзакций; ограничения задаёт сеть, а не только интерфейс CLI. diff --git a/docs/documentation/blockchain/transactions.md b/docs/documentation/blockchain/transactions.md index 9fd21b342..b720fb7a5 100644 --- a/docs/documentation/blockchain/transactions.md +++ b/docs/documentation/blockchain/transactions.md @@ -1,6 +1,6 @@ ## Действия -Для изменения состояния блокчейна в EOSIO используются действия. Действие — это атомарная операция, выполняемая в контексте определённого аккаунта и смарт-контракта. Она представляет минимальную единицу изменения состояния блокчейна. Все действия передаются и исполняются строго в порядке их указания в транзакции. +Для изменения состояния блокчейна COOPOS используются действия. Действие — это атомарная операция, выполняемая в контексте определённого аккаунта и смарт-контракта. Она представляет минимальную единицу изменения состояния блокчейна. Все действия передаются и исполняются строго в порядке их указания в транзакции. !!!note "Действие - это атомарная операция по изменению состояния блокчейна" diff --git a/docs/documentation/index.md b/docs/documentation/index.md index 52361829a..9d12e8035 100644 --- a/docs/documentation/index.md +++ b/docs/documentation/index.md @@ -1,6 +1,6 @@ # Введение -Операционная система кооперативной экономики основана на открытом коде блокчейнов EOSIO и Antelope. Она предоставляет ряд компонентов и библиотек, которые используются для управления узлами распределенного реестра, сбора данных, взаимодействия с этими узлами и разработки смарт-контрактов. +Операционная система кооперативной экономики опирается на стек **COOPOS** — узлы, инструменты и библиотеки для распределённого реестра, сбора данных, взаимодействия с сетью и разработки смарт-контрактов.