Skip to content

單節點

在此頁面之後,您可以手動或使用已經準備好的自動化腳本運行單節點本地網絡。運行單節點設置對於想要測試其應用程序和協議功能的開發人員非常有用,因為它的簡單性和速度。

先決條件

自動化腳本

啟動本地 Daodst 節點的最簡單方法是使用提供的幫助腳本,它將為測試目的創建一個合理的默認配置:

$ local_node.sh
...

📣 提示 : $install_path 用來表示您安裝 stcd 二進製程序的路徑

📣 提示: 為了避免覆蓋生產中使用的真實節點的任何數據,決定將自動生成的測試配置存儲在 ~/.tmp-stcd 而不是默認的 $install_path/.stcd

使用local_node.sh腳本時,有必要使用--home ~/.tmp-stcd標誌擴展所有以本地測試節點為目標的stcd命令。這是強制性的,因為 home 目錄不能存儲在 stcd 配置中,這可以在下面的輸出中看到。為了便於使用,將此目錄路徑導出為環境變量可能是明智的:

$ export TMP=$HOME/.tmp-stcd`
$ stcd config --home $TMP
{
"chain-id": "daodst_7000-1",
"keyring-backend": "test",
"output": "text",
"node": "tcp://localhost:26657",
"broadcast-mode": "sync"
}

您可以通過更改配置變量來自定義本地節點腳本。 有關可調整內容的想法,請參閱以下腳本摘錄:

# Customize the name of your keys, the chain-id, moniker of the node, keyring backend, and more
KEYS[0]="dev0"
KEYS[1]="dev1"
KEYS[2]="dev2"
CHAINID="daodst_7000-1"
MONIKER="localtestnet"
# Remember to change to other types of keyring like 'file' in-case exposing to outside world,
# otherwise your balance will be wiped quickly
# The keyring test does not require private key to steal tokens from you
KEYRING="test"
KEYALGO="eth_secp256k1"
LOGLEVEL="info"
# Set dedicated home directory for the daodst instance
HOMEDIR="$HOME/.tmp-stcd"
# to trace evm
#TRACE="--trace"
TRACE=""

[...]

  # Adjust this set a different maximum gas limit
  jq '.consensus_params["block"]["max_gas"]="10000000"' "$GENESIS" >"$TMP_GENESIS" && mv "$TMP_GENESIS" "$GENESIS"

[...]

手動部署

本指南幫助您創建單個驗證器節點,該節點在本地運行網絡以用於測試和其他開發相關用途。

初始化鏈

在實際運行節點之前,我們需要初始化鏈,最重要的是它的創世文件。這是通過 init 子命令完成的:

$MONIKER=testing
$KEY=dev0
$CHAINID="daodst_7000-1"

# The argument $MONIKER is the custom username of your node, it should be human-readable.
stcd init $MONIKER --chain-id=$CHAINID

📣 提示: 您可以稍後通過更新 config.toml 文件來 修改 這個 moniker 。

上面的命令創建了您的節點和驗證器運行所需的所有配置文件,以及一個默認的創世文件,它定義了網絡的初始狀態。默認情況下,所有這些配置文件 都在~/.stcd 中,但您可以通過傳遞--home 標誌來覆蓋此文件夾的位置。

創世程序

添加創世賬戶

在啟動鏈之前,您需要使用 keyring 用至少一個帳戶填充狀態:

stcd keys add my_validator

創建本地帳戶後,繼續在鏈的創世文件中為其授予一些dst令牌。這樣做還將確保您的鏈知道此帳戶的存在:

stcd add-genesis-account my_validator 10000000000dst

現在您的帳戶已經有了一些代幣,您需要向您的鏈添加一個驗證器。

對於本指南,您將添加本地節點(通過上面的init命令創建)作為鏈的驗證器。 驗證器可以在鏈首次啟動之前通過創世文件中包含的稱為gentx的特殊交易來聲明:

# Create a gentx
# NOTE: this command lets you set the number of coins.
# Make sure this account has some coins with the genesis.app_state.staking.params.bond_denom denom
stcd add-genesis-account my_validator 1000000000dst,10000000000fm

gentx 做三件事:

  1. 將您創建的validator賬戶註冊為驗證者操作者賬戶(即控制驗證者的賬戶)。
  2. 自行委託所提供的amount的質押代幣。
  3. 將操作員帳戶與將用於簽署區塊的 Tendermint 節點公鑰關聯起來。如果未提供 --pubkey 標誌,則默認為通過上面的 stcd init 命令創建的本地節點 pubkey。

有關 gentx 的更多信息,請使用以下命令:

stcd gentx --help

收集gentx

默認情況下,創世文件不包含任何 gentxsgentx 是一種交易,它將存在於 accounts 下的創世文件中的質押令牌綁定到驗證器,本質上是在創世時創建一個驗證器。 一旦作為有效 gentx 接收者的 2/3 以上的驗證器(按投票權加權)在 genesis_time 之後上線,該鏈就會啟動。

可以手動將 gentx 添加到創世文件,或通過以下命令:

# Add the gentx to the genesis file
stcd collect-gentxs

此命令會將存儲在 ~/.stcd/config/gentx 中的所有 gentxs 添加到創世文件中。

daemon 運行單節點

最後,檢查 genesis.json 文件的正確性:

stcd validate-genesis

現在一切都已設置好,您終於可以啟動您的節點了:

stcd daemon

📣 提示: 要在運行節點時檢查所有可用的可自定義選項,請使用 --help 標誌。

你應該看到塊進來了。

前面的命令允許您運行單個節點。這對於下一節關於與該節點交互的部分來說已經足夠了, 但您可能希望同時運行多個節點,並查看它們之間如何達成共識。

然後,您可以使用 Ctrl+C 停止節點。

進一步配置

密鑰管理

每次運行具有相同密鑰的節點:將 ./local_node.sh 中的 stcd keys add $KEY 替換為:

echo "your mnemonic here" | stcd keys add $KEY --recover

📣 提示: Daodst 目前支持12個單詞的助記詞。 :::

您可以使用以下方法生成新的密鑰/助記符:

stcd keys add $KEY

將您的 Daodst 密鑰導出為以太坊私鑰(用於 Metamask 例如):

stcd keys unsafe-export-eth-key $KEY

有關可用鍵命令的更多信息,請使用 --help 標誌

stcd keys -h

Keyring 後端選項

上面的說明包括使用 test 作為 keyring-backend 的命令。 這是一個不安全的密鑰環,不需要輸入密碼,不應在生產中使用。 否則,Daodst 支持使用文件或操作系統密鑰環後端進行密鑰存儲。 要創建和使用文件存儲密鑰而不是默認為操作系統密鑰環,請將標誌 --keyring-backend file 添加到任何相關命令,密碼提示將通過命令行出現。 這也可以保存為 CLI 配置選項:

stcd config keyring-backend file

📣 提示: 有關 Keyring 及其後端選項的更多信息,請單擊 此處

啟用跟踪

要在運行節點時啟用跟踪,請將 local_node.sh 腳本的最後一行修改為以下命令, 在哪裡:

  • $TRACER 是 EVM 跟踪器類型,用於從 EVM 事務​​執行中收集執行跟踪(例如 json|struct|access_list|markdown
  • $TRACESTORE 是包含 KVStore 跟踪的輸出文件(例如 store.txt
stcd start --evm.tracer $TRACER --tracestore $TRACESTORE --pruning=nothing $TRACE --log_level $LOGLEVEL --minimum-gas-prices=0.0001dst --json-rpc.api eth,txpool,personal,net,debug,web3

從鏈中清除數據

重置數據

或者,您可以重置區塊鏈數據庫,刪除節點的地址簿文件,並將 priv_validator.json 重置為創世狀態。

📣 提示: 如果您運行的是驗證器節點,請在執行 stcd unsafe-reset-all 時始終小心。 如果您不切換 chain-id,則永遠不要使用此命令。

🚨 危險:確保每個節點都有一個唯一的 priv_validator.json不要priv_validator.json 從舊節點複製到多個新節點。使用相同的 priv_validator.json 運行兩個節點將導致您產生 雙重簽名 並且將被 永久監禁 !

📣 提示 : $install_path 用來表示您安裝 stcd 二進製程序的路徑

首先,刪除過時的文件並重置數據。

rm $install_path/.stcd/config/addrbook.json $install_path/.stcd/config/genesis.json
stcd tendermint unsafe-reset-all --home .stcd

您的節點現在處於原始狀態,同時保留原始的 priv_validator.jsonconfig.toml。 如果您之前設置了任何哨兵節點或完整節點,您的節點仍將嘗試連接到它們,但如果它們還沒有升級,則可能會失敗。

刪除數據

二進制數據會默認存儲在 $install_path/.stcd,要刪除現有的二進製文件和配置,請運行:

rm -rf $install_path/.stcd

要清除密鑰存儲以外的所有數據(如果選擇了keyring後端),然後您可以從上面重新運行完整節點安裝命令以再次啟動節點。

每秒記錄交易 (TPS)

為了獲得每秒事務的累進值,我們使用 Prometheus 返回值。 Prometheus 導出器在地址 http://localhost:8877 運行,因此請將此部分添加到您的 Prometheus 安裝 config.yaml 文件中,如下所示

global:
scrape_interval: 10s

external_labels:
  monitor: 'daodst'

scrape_configs:
- job_name: 'daodst'

  scrape_interval: 10s

  static_configs:
    - targets: ['localhost:8877']

然後像這樣運行 Prometheus

prometheus --config.file=prom_config.yaml

然後訪問位於 http://localhost:9090/ 的 Prometheus 儀表板,然後導航到表達式區域並輸入以下表達式

rate(daodst_transactions_processed[1m])

這將顯示處理的交易速度。

📣 提示: Daodst 目前支持 12個單詞的助記詞。