账号
初始化第一个账户
在开发环境中运行 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

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

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

查询余额
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

账户充值
转账
现在我们使用第一个初始账户 0x3 将一些余额转移到这个新部署的账户中
sncast -u http://127.0.0.1:9944 --account 0x3 \
invoke --contract-address 0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 \
--function "transfer" \
--calldata "<YourAddress> 1 100000"

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