Starknet 开发实战:从环境配置到账户转账全流程指南

Starknet开发实战:从环境配置到账户转账全流程指南想要进入Starknet生态进行底层开发,搭建一套稳定、高效的工具链是第一步。本文将基于最新的StarknetFoundry工具集,带你从零开始完成开发环境的配置,并实操演示如何在Sepolia测试网上创建、部署账户以及执行代

Starknet 开发实战:从环境配置到账户转账全流程指南

想要进入 Starknet 生态进行底层开发,搭建一套稳定、高效的工具链是第一步。本文将基于最新的 Starknet Foundry 工具集,带你从零开始完成开发环境的配置,并实操演示如何在 Sepolia 测试网上创建、部署账户以及执行代币转账。无论你是 Web3 开发者还是技术爱好者,这份“手把手”的实战记录都将帮你快速跑通 Starknet 的开发闭环。

文章主要内容框架

  1. 环境搭建: 使用 asdf 管理工具版本,安装 Scarb(编译器)、Starknet Foundry(测试与工具集)和 Devnet(本地环境)。
  2. 账户实操: 使用 sncast 命令行在 Sepolia 测试网创建 OpenZeppelin 和 Braavos 账户。
    • 通过测试网水龙头获取 STRK 测试币。
    • 完成账户部署并验证状态。
  3. 链上交互: 演示如何查询原生 STRK 余额,以及通过 invoke 调用合约函数执行转账。
  4. 核心知识点复习: Starknet 属于 Validity-Rollup(ZK-Rollup)。
    • Cairo 编译流程:Cairo → Sierra → CASM。
    • 账户抽象:Starknet 上的每个账户本质上都是智能合约。

实操

安装环境

Installing Scarb, Starknet Foundry, and Starknet Devnet

asdf plugin add scarb
asdf install scarb latest
asdf set -u scarb latest
Plugin named scarb already added
version 2.15.0 of scarb is already installed

asdf plugin add starknet-foundry
asdf install starknet-foundry latest
asdf set -u starknet-foundry latest
Plugin named starknet-foundry already added
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3112  100  3112    0     0   5550      0 --:--:-- --:--:-- --:--:--  5547
Downloading and extracting universal-sierra-compiler-v2.6.0-aarch64-apple-darwin...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 3158k  100 3158k    0     0  2251k      0  0:00:01  0:00:01 --:--:-- 2251k
universal-sierra-compiler (v2.6.0) has been installed successfully.
* Downloading starknet-foundry release 0.54.1...
starknet-foundry 0.54.1 installation was successful!

asdf plugin add starknet-devnet
asdf install starknet-devnet latest
asdf set -u starknet-devnet latest
Plugin named starknet-devnet already added
* Downloading starknet-devnet release 0.7.1...
starknet-devnet 0.7.1 installation was successful!

which asdf

/opt/homebrew/bin/asdf

scarb --version
snforge --version && sncast --version
starknet-devnet --version
scarb 2.15.0 (56d7d30fb 2025-12-19)
cairo: 2.15.0 (https://crates.io/crates/cairo-lang-compiler/2.15.0)
sierra: 1.7.0
arch: aarch64-apple-darwin
snforge 0.54.1
sncast 0.54.1
starknet-devnet 0.7.1

列出可用账户

sncast account list
Error: Accounts file = /Users/qiaopengjun/.starknet_accounts/starknet_open_zeppelin_accounts.json does not exist! If you do not have an account create one with `account create` command or if you're using a custom accounts file, make sure to supply correct path to it with `--accounts-file` argument.

创建账户

sncast account create
Error: Either `--network` or `--url` must be provided.

sncast account create --network sepolia
Success: Account created

Address: 0x0672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671

Account successfully created but it needs to be deployed. The estimated deployment fee is 0.007707393134881664 STRK. Prefund the account to cover deployment transaction fee

After prefunding the account, run:
sncast account deploy --network sepolia --name account-1

To see account creation details, visit:
account: https://sepolia.starkscan.co/contract/0x0672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671

sncast account list
Available accounts (at /Users/qiaopengjun/.starknet_accounts/starknet_open_zeppelin_accounts.json):
- account-1:
  network: alpha-sepolia
  public key: 0x731eb71b2281c74ed8d74f753cc54daf54a3e38f06dee8c68b840aea50f8529
  address: 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
  salt: 0xe1f78056ff65cbc0
  class hash: 0x5b4b537eaa2399e3aa99c4e2e0208ebd6c71bc1467938cd52c798c601e43564
  deployed: false
  legacy: false
  type: OpenZeppelin

To show private keys too, run with --display-private-keys or -p

获取测试代币

测试网水龙头:https://starknet-faucet.vercel.app/

交易详情:https://sepolia.voyager.online/tx/0x45d6074e90ef3bab5adafd32d50a80f8b1c7b05f5603c19edef0f02135ffdad

部署账户

sncast account deploy --network sepolia --name account-1
✔ Do you want to make this account default? · Yes, global default (~/.config/starknet-foundry/snfoundry.toml)
Success: Account deployed

Transaction Hash: 0x4330412fce1ac5e74b7a44a84e5b9b70161a52746d3066d1122c1c4da07cddd

To see account deployment details, visit:
transaction: https://sepolia.starkscan.co/tx/0x04330412fce1ac5e74b7a44a84e5b9b70161a52746d3066d1122c1c4da07cddd

查看确认部署账户成功

sncast account list
Available accounts (at /Users/qiaopengjun/.starknet_accounts/starknet_open_zeppelin_accounts.json):
- account-1:
  network: alpha-sepolia
  public key: 0x731eb71b2281c74ed8d74f753cc54daf54a3e38f06dee8c68b840aea50f8529
  address: 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
  salt: 0xe1f78056ff65cbc0
  class hash: 0x5b4b537eaa2399e3aa99c4e2e0208ebd6c71bc1467938cd52c798c601e43564
  deployed: true
  legacy: false
  type: OpenZeppelin

To show private keys too, run with --display-private-keys or -p

查询账户余额

# sncast balance(协议层)
sncast balance --network sepolia
Balance: 725347419503972550115456 strk

# ERC20 STRK(合约层)
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
Success: Call completed

Response:     99992993278751630080_u256
Response Raw: [0x56bae7999f8036300, 0x0]

Starknet 的原生 STRK 余额 ≠ STRK ERC20 合约余额

创建并部署 Braavos 账户

# 1. 创建账户
sncast account create --network sepolia --type braavos --name account-braavos
Success: Account created

Address: 0x0585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7

Account successfully created but it needs to be deployed. The estimated deployment fee is 0.008771665806546944 STRK. Prefund the account to cover deployment transaction fee

After prefunding the account, run:
sncast account deploy --network sepolia --name account-braavos

To see account creation details, visit:
account: https://sepolia.starkscan.co/contract/0x0585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7

# 2. 查看账户列表验证是否创建成功 
sncast account list
Available accounts (at /Users/qiaopengjun/.starknet_accounts/starknet_open_zeppelin_accounts.json):
- account-1:
  network: alpha-sepolia
  public key: 0x731eb71b2281c74ed8d74f753cc54daf54a3e38f06dee8c68b840aea50f8529
  address: 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
  salt: 0xe1f78056ff65cbc0
  class hash: 0x5b4b537eaa2399e3aa99c4e2e0208ebd6c71bc1467938cd52c798c601e43564
  deployed: true
  legacy: false
  type: OpenZeppelin

- account-braavos:
  network: alpha-sepolia
  public key: 0x7a86dc34fac8418b250734c74d7874c01f9c0f014affeac25d6d04ed4cbf710
  address: 0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7
  salt: 0xe3d346e664b47c94
  class hash: 0x3957f9f5a1cbfe918cedc2015c85200ca51a5f7506ecb6de98a5207b759bf8a
  deployed: false
  legacy: false
  type: Braavos

To show private keys too, run with --display-private-keys or -p

# 3. 获取测试代币后查看余额
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7
Success: Call completed

Response:     100000000000000000000_u256
Response Raw: [0x56bc75e2d63100000, 0x0]

# 4. 部署账户
sncast account deploy --network sepolia --name account-braavos
✔ Do you want to make this account default? · Yes, global default (~/.config/starknet-foundry/snfoundry.toml)
Success: Account deployed

Transaction Hash: 0x7edbcaff1ef1deaa44b50b984d4c8c44938bcf2e234939a9b0111bcf161769b

To see account deployment details, visit:
transaction: https://sepolia.starkscan.co/tx/0x07edbcaff1ef1deaa44b50b984d4c8c44938bcf2e234939a9b0111bcf161769b

# 5. 再次查看余额
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7
Success: Call completed

Response:     99992025758063752448_u256
Response Raw: [0x56bab09a581197500, 0x0]

# 6. 查看账户列表验证账户是否部署成功
sncast account list
Available accounts (at /Users/qiaopengjun/.starknet_accounts/starknet_open_zeppelin_accounts.json):
- account-1:
  network: alpha-sepolia
  public key: 0x731eb71b2281c74ed8d74f753cc54daf54a3e38f06dee8c68b840aea50f8529
  address: 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
  salt: 0xe1f78056ff65cbc0
  class hash: 0x5b4b537eaa2399e3aa99c4e2e0208ebd6c71bc1467938cd52c798c601e43564
  deployed: true
  legacy: false
  type: OpenZeppelin

- account-braavos:
  network: alpha-sepolia
  public key: 0x7a86dc34fac8418b250734c74d7874c01f9c0f014affeac25d6d04ed4cbf710
  address: 0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7
  salt: 0xe3d346e664b47c94
  class hash: 0x3957f9f5a1cbfe918cedc2015c85200ca51a5f7506ecb6de98a5207b759bf8a
  deployed: true # 成功部署
  legacy: false
  type: Braavos

To show private keys too, run with --display-private-keys or -p

转账实操

# 1. 转账之前查看 account-1: 余额
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
Success: Call completed

Response:     99992993278751630080_u256
Response Raw: [0x56bae7999f8036300, 0x0]

# 2. 转账之前查看 account-braavos: 余额
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7
Success: Call completed

Response:     99992025758063752448_u256
Response Raw: [0x56bab09a581197500, 0x0]

# 3. 执行转账操作
sncast --account account-1 invoke --network sepolia --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function transfer --arguments '0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7,1000000000000000000'
Success: Invoke completed

Transaction Hash: 0x04039b1f84437fc795a0a70189a755dfc7591c9d8d8512b61e685f0b0cb625e0

To see invocation details, visit:
transaction: https://sepolia.starkscan.co/tx/0x04039b1f84437fc795a0a70189a755dfc7591c9d8d8512b61e685f0b0cb625e0

# 4. 转账之后查看 account-braavos: 余额
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x585267ed974b41abfd57642a69327e5ffec1acd5fde1c7225f5129f831815b7
Success: Call completed

Response:     100992025758063752448_u256
Response Raw: [0x5798bc059287d7500, 0x0]

# 5. 转账之后查看 account-1: 余额
sncast call --contract-address 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d --function balance_of --network sepolia --arguments 0x672b0b89056dd8bc2d1f1d59c5b90670535dcc9c5931fcba9fbaea420990671
Success: Call completed

Response:     98984058876750531968_u256
Response Raw: [0x55dae051bbf110d80, 0x0]

练习一

1. Starknet 在 Rollup 分类中属于哪一种类型?

Starknet is a Validity-Rollup(aka ZK-Rollup) Layer 2 network that operates on top of Ethereum.

2. Starknet 中负责交易排序、执行并生成区块的组件是?Sequencer

3. Cairo 程序运行在 CairoVM 上,并可生成有效性证明

4. Starknet 与 StarkEx 的主要区别是什么? StarkEx 面向特定应用并需要 StarkWare 授权,Starknet 是开放网络。

5. 关于 Starknet 上的账户抽象(Account Abstraction),Starknet 上的每个账户本质上都是一个智能合约

练习二

1. Cairo 的编译流程:Cairo → Sierra → CASM → CairoVM 执行

2. 为什么在合约中表示金额时更推荐使用 u256 而不是 felt252?u256 在算术溢出时会触发 panic

3. Cairo 中的变量默认是?不可变的

4. 关于快照(@)和引用(ref), 快照不转移所有权且只读,引用不转移所有权且可写

5. Span 和 Array 的主要区别是?Span 是只读的数组视图

总结

工欲善其事,必先利其器。通过本文的实操,我们不仅打通了 Starknet 开发的基础路径,也深刻理解了 Starknet 账户抽象和原生 STRK 代币的交互逻辑。掌握 Scarb 和 Starknet Foundry 的使用,是深入研究 Cairo 智能合约开发的前提。下一步,建议读者尝试编写简单的 Cairo 合约并使用 Foundry 进行单元测试,进一步探索 Starknet 的高性能生态。

参考

更多详情请关注微信公众号《寻月隐君》获取...

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论