跳到主要内容

账号

初始化第一个账户

信息

在开发环境中运行 madara 时,按照以下步骤启动第一个账户

(0x3 是madara开发环境默认自带的第一个账户)

sncast --url http://127.0.0.1:9944 \
account add \
--name 0x3 \
--address 0x3 \
--private-key 0x00c1cf1490de1352865301bb8705143f3ef938f97fdf892f1090dcb5ac7bcd1d

部署账号的方式

  • 通过公钥直接部署
  • 通过sncast创建账号部署

默认情况下,部署账户的class-hash 已集成在madara节点中。 该class hash 为 0x6280083f8c2a2db9f737320d5e3029b380e0e820fe24b8d312a6a34fdba0cd

什么是Class Hash

信息

在 StarkNet 中,Class Hash 是一个重要的概念。Class Hash 是一种哈希值,用于唯一标识 StarkNet 合约的代码。StarkNet 将合约的代码哈希为一个固定长度的值,并使用这个值来表示合约。这样做有助于确保合约的唯一性和安全性,并允许在链上进行有效的状态更新和验证。

更多关于合约class_hash的说明可以查看 starknet文档

使用公钥部署账户

sncast \
--account 0x3 \
--url http://127.0.0.1:9944 \
deploy \
--class-hash "0x6280083f8c2a2db9f737320d5e3029b380e0e820fe24b8d312a6a34fdba0cd" \
--constructor-calldata "<PublicKey>"

例子

PublicKey 0x254020ae8af1612e53737a32275ad03b91e55467924a9c7de7915cba856d61

您可以使用自己的公钥替换此公钥

部署账户

命令行返回的,合约地址 contract_address 就是您的账户地址

使用sncast创建账号部署

流程步骤

  • 使用 sncast 创建账号
  • 使用第一个初始账号给新创建的账号充值
  • 部署新创建的账号

创建账号

sncast \
--url http://127.0.0.1:9944 \
account create \
--name <account_name> \
--class-hash 0x6280083f8c2a2db9f737320d5e3029b380e0e820fe24b8d312a6a34fdba0cd

AccountCreate

充值

sncast -u http://127.0.0.1:9944 \
--account 0x3 \
invoke --contract-address 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 \
--function "transfer" \
--calldata "<YourAccountAddress> 10000 10000"

UpdateCreateAccountBalance

部署

sncast --url http://127.0.0.1:9944 \
account deploy \
--name <account_name> --max-fee 86460

DeployCreateAccount

查询余额

Token合约默认madara已经集成。 合约地址 contract-address 为 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7

信息

此Token合约的地址 --contract-address 为 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 默认集成到 Madara 中

sncast -u http://127.0.0.1:9944 \
call --contract-address 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 \
--function "balanceOf" --calldata <YourAddress>

如你所见,这个新部署的账户余额为 0

GetAccountBalance

账户充值

转账

现在我们使用第一个初始账户 0x3 将一些余额转移到这个新部署的账户中

sncast -u http://127.0.0.1:9944 --account 0x3 \
invoke --contract-address 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 \
--function "transfer" \
--calldata "<YourAddress> 1 100000"

AccountTransfer

再次检查余额,可以看到账户现在有余额了

AccountTransfer