账户分类
在IC中有如下三个账户:
identity:identity账户是主体标识,其可以与ICP账户(account id)相互映射,并且identity是控制canister的钥匙。
ledger:ledger账户是ICP账户(account id),所有和ICP相关的操作都在ledger中进行。
wallet:wallet账户是部署了cycle wallet程序的canister,identity必须设置了wallet才能部署canister。
principal
principal 首次使用 DFINITY Canister SDK 时,dfx 命令行工具会使用 PEM 文件中的公钥/私钥对为您创建默认的开发人员身份。开发人员身份是由派生的principal数据类型和代表principal的文本进行表示,也就是principal identifier(主体身份)。
account id
开发人员身份还可用于派生出account id(帐户标识符,类似于比特币或以太坊地址),用于在ledger canister中持有 ICP 代币。
wallet
wallet 在 Internet Computer上,钱包是一种专门用于cycle的应用程序。钱包应用程序被实现为一个canister,并在互联网计算机上运行。
钱包使您能够管理cycle余额,将ICP代币转换为cycle,将cycle分发到您自己或其他用户的canister中作为访问或提供互联网服务的一种方式。
当需要创建canister或者操作canister时,必须要绑定一个wallet canister到当前主体标识才可以进行操作。
操作
在整个IC中账户操作有如下一些:
- DFX canister SDK第一次使用时就会关联一个主体标识(principal identity)。使用命令:
dfx identity get-principal
可以获取当前主体标识。 - 每个主体标识都会派生出一个在leger canister中唯一标识的account id,类似address。使用命令:
dfx ledger account-id
可以获取当前的ICP地址。 - 第一个canister需要使用leger canister创建,并指定canister的controller,并会向其中存入指定数量cycle。使用命令:
dfx ledger --network ic create-canister tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snAV6-uqe --amount .25
可以创建一个canister,并指定了controller主体以及初始化的cycle。 - 第一个创建的canister是空的,需要对其部署wallet程序来创建一个wallet canister。使用命令:
dfx identity --network ic deploy-wallet gastn-uqaaa-aaaae-aaafq-cai
可以在创建的一个canister中部署wallet程序。该canister称为wallet canister。 - 默认情况下部署wallet后,该wallet canister会作为当前主体的cycle wallet,也可以使用如下命令设置当前主体的cycle wallet:
dfx identity --network ic set-wallet --force gastn-uqaaa-aaaae-aaafq-cai
成功设置后,当前identity使用该cycle wallet进行canister操作。 - 当前主体存在cycle wallet后,就可以使用canister相关操作。例如命令:
dfx deploy --network ic
部署当前project中的所有canister,部署完成后,这些canister的controller为当前主体。
controller
controller是具有特殊权限的身份,该权限用于管理其控制的canister。只有controller身份可用于安装、升级或删除其控制的canister。
可以使用与user或canister关联的principal identifier来指定controller身份。
ledger canister
ledger Internet Computer将所有涉及ICP代币的交易在一个被称为ledger canister的管理canister中进行记录。ledger canister中是一个简化的并行区块链,它与其他网络管理canister一起在互联网计算机的子网中运行。
ledger canister实现了一个智能合约,该合约持有账户和余额,并保留影响账户和余额的交易历史。记录交易用以跟踪以下特定事件:
- 铸造 ICP 代币。
- 转移 ICP 代币。
- 燃烧 ICP 代币。