自托管快速入门

在互联网计算机生态系统中,互联网计算机协议代币(ICP 代币)是一种原生实用代币。 ICP 代币在 Internet Computer 的治理和经济方面都发挥着关键作用。

这个 自托管快速入门 场景假设:

  • 您是新的 ICP 代币持有者。

  • 您想了解您可以使用 ICP 代币做什么。

  • 您想知道如何使用 {sdk-short-name} 命令行界面 DFX 转换、转移或锁定您的 ICP 代币。

如果您还不是代币持有者,您需要从交易所购买 ICP 代币或获得代币授权,然后才能进行托管。有关如何获取 ICP 代币和托管选项的概述,请参见 link:../developers-guide/concepts/tokens-cycles.html#get-cycles[如何获取 ICP 代币] 和link:托管选项- intro.html【选择数字资产自托管】。

如果您正在使用其他应用程序(例如link:https://nns.ic0.app[Network Nervous System (NNS) application] 或硬件钱包提供的用户界面)与您的 ICP 代币进行交互,您应该参考到该应用程序的文档。

这个 自托管快速入门 只专注于使用 {sdk-short-name} 命令行界面 DFX 与 ICP 代币进行交互。

如何使用 ICP 代币

下图简要概述了三种最常见的代币使用方式。

icp tokens how to use

正如该图所示,您如何使用 ICP 代币主要取决于您获取它们的目标。

如果您是开发人员企业家,ICP代币可以转换为燃料费。 然后可以使用燃料费来构建和部署应用程序,以向市场提供产品和服务。

如果您是对参与治理和影响 Internet Computer 方向感兴趣的社区成员,您可以将 ICP 代币锁定在一个称为神经元的权益中,以便您可以提交提案并对其进行投票 .

开始之前

要开始,请验证以下内容:

  • 您有互联网连接并可以访问本地基于英特尔的 macOSLinux 计算机上的 shell 终端。

  • 您知道如何在本地计算机上打开一个新的终端外壳,以及如何在终端中运行基本的命令行程序。

  • 您在自托管钱包中持有 ICP 代币。

  • 您已通过在本地计算机的终端中运行以下命令下载并安装了 DFINITY Canister Software Development Kit (SDK):

    sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)"
  • 您已经为您用于自我保管的身份创建了公钥/私钥的备份副本。

    例如,如果您使用使用 DFINITY Canister Software Development Kit (SDK) dfx 命令行界面创建的默认开发人员身份, 您应该将`~/.config/dfx/identity/default/identity.pem` 文件的备份存储在安全位置。

  • 您有一个安全的环境来执行涉及 ICP 代币的操作。

    作为安全最佳实践,任何涉及 ICP 代币传输的操作都需要一台具有最少硬件和软件的物理隔离计算机以及一台连接到网络的计算机。 实际上,这需要在两台计算机之间移动文件并采取其他预防措施以最大程度地降低风险。

    为简单起见,本_自托管快速入门_描述了如何使用连接到网络的单台计算机完成关键任务。

连接到帐本并获取您的帐户标识符

所有 ICP 代币交易都记录在互联网计算机上运行的分类帐容器中。 这些说明假设您使用的是 dfx 为您创建的 default 开发者身份。

此身份由 principal 数据类型和通常称为 principal identifier 的主体的文本表示形式表示。 您身份的这种表示类似于比特币或以太坊地址。

但是,与您的开发者身份相关联的主体通常与您在帐本中的*帐户标识符*不同。 委托人标识符和帐户标识符是相关的——两者都提供了您身份的文本表示——但它们使用不同的格式。

要连接到帐本并获取帐户信息:

  1. 通过运行以下命令在当前目录中创建一个空的 dfx.json 文件:

    echo '{}' > dfx.json
  2. 通过运行以下命令检查 Internet Computer 网络的当前状态以及您连接到它的能力

    dfx ping ic

    您应该会看到类似于以下内容的输出:

    {
      "ic_api_version": "0.18.0"  "impl_hash": "d639545e0f38e075ad240fd4ec45d4eeeb11e1f67a52cdd449cd664d825e7fec"  "impl_version": "8dc1a28b4fb9605558c03121811c9af9701a6142"  "replica_health_status": "healthy"  "root_key": [48, 129, 130, 48, 29, 6, 13, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 1, 2, 1, 6, 12, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 2, 1, 3, 97, 0, 129, 76, 14, 110, 199, 31, 171, 88, 59, 8, 189, 129, 55, 60, 37, 92, 60, 55, 27, 46, 132, 134, 60, 152, 164, 241, 224, 139, 116, 35, 93, 20, 251, 93, 156, 12, 213, 70, 217, 104, 95, 145, 58, 12, 11, 44, 197, 52, 21, 131, 191, 75, 67, 146, 228, 103, 219, 150, 214, 91, 155, 180, 203, 113, 113, 18, 248, 71, 46, 13, 90, 77, 20, 80, 95, 253, 116, 132, 176, 18, 145, 9, 28, 95, 135, 185, 136, 131, 70, 63, 152, 9, 26, 11, 170, 174]
    }
  3. (可选)通过运行以下命令确认您当前使用的开发者身份:

    dfx identity whoami

    在大多数情况下,您应该看到您当前正在使用您的 default 开发人员身份。 例如:

    default
  4. (可选)通过运行以下命令查看当前身份的主体的文本表示:

    dfx identity get-principal

    此命令显示类似于以下内容的输出:

    tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe
  5. 通过运行以下命令获取您的开发者身份的帐户标识符:

    dfx ledger account-id

    此命令显示与您的开发人员身份关联的帐本帐户标识符。 例如,您应该看到类似于以下的输出:

    03e3d86f29a069c6f2c5c48e01bc084e4ea18ad02b0eec8fccadf4487183c223
  6. 通过运行以下命令检查您的帐户余额:

    dfx ledger --network ic balance

    此命令显示帐本帐户中的 ICP 代币余额。 例如,您应该看到类似于以下的输出:

    10.00000000 ICP

将 ICP 代币转换为燃料费

如果您想在您的帐本帐户中使用您的 ICP 代币来为应用程序开发提供动力,您首先必须将它们转换为燃料费并将循环转移到一个容器中,该容器将成为您的燃料费钱包。

要将 ICP 代币转换为循环:

  1. 通过运行类似于以下的命令从您的帐本帐户转移 ICP 代币,创建一个具有燃料费的新容器:

    dfx ledger --network ic create-canister <controller-principal-identifier> --amount <icp-tokens>

    此命令将您为 --amount 参数指定的 ICP 代币数量转换为循环,并将燃料费与您指定的主体控制的新容器标识符相关联。

    例如,以下命令将 1.25 个 ICP 代币转换为燃料费,并将默认身份的主体标识符指定为新容器的控制器:

    dfx ledger --network ic create-canister tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe --amount 1.25

    如果交易成功,账本会记录该事件,您应该会看到类似于以下内容的输出:

    Transfer sent at BlockHeight: 20
    Canister created with id: "53zcu-tiaaa-aaaaa-qaaba-cai"
  2. 通过运行类似于以下的命令,在新创建的容器占位符中安装周期钱包代码:

    dfx identity --network ic deploy-wallet <canister-identifer>

    For example:

    dfx identity --network ic deploy-wallet 53zcu-tiaaa-aaaaa-qaaba-cai

    此命令显示类似于以下内容的输出:

    …… 在 ic 网络上创建钱包容器。 用户“default”在“ic”网络上的钱包容器是“53zcu-tiaaa-aaaaa-qaaba-cai”

== 将 ICP 代币转移到另一个账户

如果您想将 ICP 代币转移到账本中的另一个账户,您需要知道目标账户的账户标识符。

将 ICP 代币转移到另一个账户:

. 通过运行以下命令,检查您是否使用了可以控制分类帐帐户的身份:
+
[source,bash]
----
dfx identity whoami
----
. 通过运行以下命令检查与您的身份关联的帐本帐户中的当前余额:
+
[source,bash]
----
dfx ledger --network ic balance
----

. 通过运行类似于以下的命令将 ICP 代币转移到另一个帐户:
+
[source,bash]
----
dfx ledger --network ic transfer <destination-ledger-account-id> --icp <ICP-amount> --memo <numeric-memo>
----
+
For example:
+

dfx ledger --network ic transfer ae6e1a76da5725bbbf0c5c035aaf0525b791e0f0f7cce27d8e27826389871406 --icp 5 --memo 12345

+
此示例说明如何使用带有 `+--icp+` 命令行选项的整数将 ICP 代币转移到指定帐户。
+
--

* 您还可以使用 `+--e8s+` 选项单独或与 `+--icp+` 选项一起指定 ICP 代币的小数单位 - 称为 *e8s*。

* 或者,您可以使用 `+--amount+` 指定要传输的 ICP 代币数量,小数点后最多 8 位,例如,`+5.00000025+`。
--

+
目标地址可以是在 {IC} 网络上运行的分类帐容器中的地址,您使用link:https://nns.ic0.app[Network Nervous System application], 或您在交易所拥有的钱包地址。
+
如果您将 ICP 代币转移到 link:https://nns.ic0.app[Network Nervous System application], 您可能需要刷新浏览器才能看到反映的交易。
+
有关使用 `+dfx ledger+` 命令行选项的更多信息,请参阅 link:../developers-guide/cli-reference/dfx-ledger{outfilesuffix}[dfx ledger].

== 通过将 ICP 代币放入神经元来锁定它们

如果想锁住ICP代币参与治理并获得奖励,必须使用link:https://nns.ic0.app[Network Nervous System (NNS) application]或`+dfx canister call+`命令。

因为使用 {sdk-short-name} 命令行界面比使用link:https://nns.ic0.app[Network Nervous System (NNS) application],这些步骤不包含在本指南中。
////

然而,第一步是将一些 ICP 代币从您的帐本帐户转移到`+governance+` 容器以创建一个神经元。
以下步骤说明了如何做到这一点。

要从 ICP 代币创建神经元:

. 通过运行类似于以下的命令确定目标帐户:
+
[source,bash]
----
dfx canister --network ic call governance build_stake_transfer_targets "(<unique-memo> : Nat64)"
----
+
For example:
+

dfx canister --network ic call governance build_stake_transfer_targets "(0001 : Nat64)"

+
此命令使用与您当前身份关联的主体和您为 _<unique_memo>_ 字段指定的值来返回帐户标识符和用于转移的子帐户。
+
在命令输出中,您应该会看到类似于以下内容的帐户标识符:
+

ae6e1a76da5725bbbf0c5c035aaf0525b791e0f0f7cce27d8e27826389871406

您还应该看到类似于以下内容的子帐户:
+

\c1_\8d\22/_\08\db\89\0c0\c6\a7C}\b5\9d=3\b92]1\1fHT\c9t\af\99\ad\fb

. 通过运行类似于以下的命令,将 ICP 代币从分类帐帐户转移到上一步中返回的目标帐户标识符:
+
[source,bash]
----
dfx ledger --network ic transfer <destination-account-id> --amount <ICP-amount> --memo <unique-memo>
----
+
For example:
+

dfx ledger --network ic transfer ae6e1a76da5725bbbf0c5c035aaf0525b791e0f0f7cce27d8e27826389871406 --amount 20 --memo 0001

+
如果转账成功,该命令返回交易的区块高度。
例如:
+
……
在 BlockHeight 发送的转账:20

配置神经元属性

创建神经元后,需要配置几个属性来锁定质押、设置溶解延迟并开始提交提案并获得奖励。 您可以通过调用`governance容器和manage_neuron`方法或使用网络神经系统应用程序(nns.ic0.app)从命令行为神经元设置这些属性。

例如,如果您继续使用 dfx 命令行界面,则可以通过运行类似于以下的命令来配置神经元以具有热键:

dfx canister --network ic governance manage_neuron \
"( record {id = opt record { id = <neuron_id>; \
command = opt variant { Configure = record { operation \
= opt variant {AddHotKey = record { new_hot_key = \
principal <new_hot_key_principal_id> }}}}}}"

了解有关网络神经系统的更多信息