Skip to content

Commit 437f013

Browse files
authored
Merge pull request #10 from ProvableHQ/feat/display-seeded-accounts
Display seeded accounts
2 parents b543ee4 + 017b822 commit 437f013

5 files changed

Lines changed: 156 additions & 4 deletions

File tree

.github/dependabot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ updates:
55
schedule:
66
interval: weekly
77
time: "10:00"
8-
open-pull-requests-limit: 10
8+
open-pull-requests-limit: 0

README.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# aleo-devnode
22

3-
A standalone Aleo development node for local testing and development.
3+
The devnode is a standalone Aleo development node for local testing and development. Unlike a production node, it **does not verify proofs**. This means transactions can be built with placeholder proofs (for executions) and placeholder verifying keys (for deployments and upgrades), making quick local iteration and fast end-to-end testing by bypassing proof generation when creating a transaction.
44

55
## Build
66

@@ -32,6 +32,32 @@ The node starts a REST API on `http://127.0.0.1:3030` by default and automatical
3232
| `-s, --storage [DIR]` | in-memory | Persist the ledger to disk at `DIR` (default: `devnode/`) |
3333
| `-c, --clear-storage` | off | Clear the storage directory before starting (requires `-s`) |
3434

35+
### Pre-funded accounts
36+
37+
The built-in genesis block seeds 50 accounts with funds for testing. The first five are:
38+
39+
| # | Address | Private Key |
40+
|---|---------|-------------|
41+
| 0 | `aleo1rhgdu77hgyqd3xjj8ucu3jj9r2krwz6mnzyd80gncr5fxcwlh5rsvzp9px` | `APrivateKey1zkp8CZNn3yeCseEtxuVPbDCwSyhGW6yZKUYKfgXmcpoGPWH` |
42+
| 1 | `aleo1s3ws5tra87fjycnjrwsjcrnw2qxr8jfqqdugnf0xzqqw29q9m5pqem2u4t` | `APrivateKey1zkp2RWGDcde3efb89rjhME1VYA8QMxcxep5DShNBR6n8Yjh` |
43+
| 2 | `aleo1ashyu96tjwe63u0gtnnv8z5lhapdu4l5pjsl2kha7fv7hvz2eqxs5dz0rg` | `APrivateKey1zkp2GUmKbVsuc1NSj28pa1WTQuZaK5f1DQJAT6vPcHyWokG` |
44+
| 3 | `aleo12ux3gdauck0v60westgcpqj7v8rrcr3v346e4jtq04q7kkt22czsh808v2` | `APrivateKey1zkpBjpEgLo4arVUkQmcLdKQMiAKGaHAQVVwmF8HQby8vdYs` |
45+
| 4 | `aleo1p9sg8gapg22p3j42tang7c8kqzp4lhe6mg77gx32yys2a5y7pq9sxh6wrd` | `APrivateKey1zkp3J6rRrDEDKAMMzSQmkBqd3vPbjp4XTyH7oMKFn7eVFwf` |
46+
47+
> ⚠️ These are development keys. Never use them in production.
48+
49+
To list all 50 accounts:
50+
51+
```sh
52+
aleo-devnode accounts
53+
```
54+
55+
If you are using a custom genesis block, query block 0 to inspect funded accounts:
56+
57+
```sh
58+
curl http://127.0.0.1:3030/testnet/block/0
59+
```
60+
3561
### Advance the ledger manually
3662

3763
When running with `--manual-block-creation`, use `advance` to create blocks explicitly:
@@ -60,6 +86,28 @@ This persists the ledger to a `devnode/` directory. To start fresh:
6086
aleo-devnode start --private-key APrivateKey1zkp8CZNn3yeCseEtxuVPbDCwSyhGW6yZKUYKfgXmcpoGPWH --storage --clear-storage
6187
```
6288

89+
## Building transactions for devnode
90+
91+
### Leo CLI
92+
93+
Add the appropriate flag when building transactions against a devnode:
94+
95+
| Command | Flag | Description |
96+
|---------|------|-------------|
97+
| `leo execute` | `--skip-execute-proof` | Skips execution proof generation |
98+
| `leo deploy` | `--skip-deploy-certificate` | Skips verifying key certificate for deployment |
99+
| `leo upgrade` | `--skip-deploy-certificate` | Skips verifying key certificate for upgrade |
100+
101+
### JavaScript/TypeScript SDK
102+
103+
Use the dedicated devnode transaction builder methods in [`ProgramManager`](https://github.com/ProvableHQ/sdk/blob/5a50b6f5a7f23ff48933557dfdc51315912e79ba/sdk/src/program-manager.ts):
104+
105+
| Method | Description |
106+
|--------|-------------|
107+
| [`buildDevnodeExecutionTransaction`](https://github.com/ProvableHQ/sdk/blob/5a50b6f5a7f23ff48933557dfdc51315912e79ba/sdk/src/program-manager.ts#L3425) | Builds an execution transaction with a placeholder proof |
108+
| [`buildDevnodeDeploymentTransaction`](https://github.com/ProvableHQ/sdk/blob/5a50b6f5a7f23ff48933557dfdc51315912e79ba/sdk/src/program-manager.ts#L3598) | Builds a deployment transaction with a placeholder verifying key |
109+
| [`buildDevnodeUpgradeTransaction`](https://github.com/ProvableHQ/sdk/blob/5a50b6f5a7f23ff48933557dfdc51315912e79ba/sdk/src/program-manager.ts#L3735) | Builds an upgrade transaction with a placeholder verifying key |
110+
63111
## Snapshots
64112

65113
Snapshots capture the ledger state at a specific block height and can be restored later. They require persistent storage (`--storage`).
@@ -141,6 +189,7 @@ Key endpoints:
141189
| `POST` | `/testnet/block/create` | Create blocks (body: `{"num_blocks": N}`, optional) |
142190
| `GET` | `/testnet/program/{id}` | Get a deployed program |
143191
| `GET` | `/testnet/program/{id}/mapping/{name}/{key}` | Get a mapping value |
192+
| `GET` | `/testnet/program/{id}/mapping/{name}?all=true` | Get all key-value pairs in a mapping |
144193
| `POST` | `/testnet/snapshot` | Take a snapshot (body: `{"name": "optional"}`) |
145194
| `GET` | `/testnet/snapshots` | List available snapshots |
146195
| `POST` | `/testnet/shutdown` | Gracefully shut down the node |

src/accounts.rs

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// Copyright (C) 2019-2026 Provable Inc.
2+
// This file is part of the Leo library.
3+
4+
// The Leo library is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
9+
// The Leo library is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU General Public License for more details.
13+
14+
// You should have received a copy of the GNU General Public License
15+
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
16+
17+
use anyhow::Result;
18+
use clap::Parser;
19+
20+
/// All 50 pre-funded development accounts for the built-in genesis block (address, private_key).
21+
pub const FUNDED_ACCOUNTS: &[(&str, &str)] = &[
22+
("aleo1rhgdu77hgyqd3xjj8ucu3jj9r2krwz6mnzyd80gncr5fxcwlh5rsvzp9px", "APrivateKey1zkp8CZNn3yeCseEtxuVPbDCwSyhGW6yZKUYKfgXmcpoGPWH"),
23+
("aleo1s3ws5tra87fjycnjrwsjcrnw2qxr8jfqqdugnf0xzqqw29q9m5pqem2u4t", "APrivateKey1zkp2RWGDcde3efb89rjhME1VYA8QMxcxep5DShNBR6n8Yjh"),
24+
("aleo1ashyu96tjwe63u0gtnnv8z5lhapdu4l5pjsl2kha7fv7hvz2eqxs5dz0rg", "APrivateKey1zkp2GUmKbVsuc1NSj28pa1WTQuZaK5f1DQJAT6vPcHyWokG"),
25+
("aleo12ux3gdauck0v60westgcpqj7v8rrcr3v346e4jtq04q7kkt22czsh808v2", "APrivateKey1zkpBjpEgLo4arVUkQmcLdKQMiAKGaHAQVVwmF8HQby8vdYs"),
26+
("aleo1p9sg8gapg22p3j42tang7c8kqzp4lhe6mg77gx32yys2a5y7pq9sxh6wrd", "APrivateKey1zkp3J6rRrDEDKAMMzSQmkBqd3vPbjp4XTyH7oMKFn7eVFwf"),
27+
("aleo1l4z0j5cn5s6u6tpuqcj6anh30uaxkdfzatt9seap0atjcqk6nq9qnm9eqf", "APrivateKey1zkp6w2DLUBBAGTHUK4JWqFjEHvqhTAWDB5Ex3XNGByFsWUh"),
28+
("aleo1aukf3jeec42ssttmq964udw0efyzt77hc4ne93upsu2plgz0muqsg62t68", "APrivateKey1zkpEBzoLNhxVp6nMPoCHGRPudASsbCScHCGDe6waPRm87V1"),
29+
("aleo1y4s2sjw03lkg3htlcpg683ec2j9waprljc657tfu4wl6sd67juqqvrg04a", "APrivateKey1zkpBZ9vQGe1VtpSXnhyrzp9XxMfKtY3cPopFC9ZB6EYFays"),
30+
("aleo1xh2lnryvtzxcvlz8zzgranu6yldaq5257cac44de4v0aasgu45yq3yk3yv", "APrivateKey1zkpHqcqMzArwGX3to2x1bDVFDxo7uEWL4FGVKnstphnybZq"),
31+
("aleo19ljgqpwy98l9sz4f6ly028rl8j8r4grlnetp9e2nwt2xwyfawuxq5yd0tj", "APrivateKey1zkp6QYrYZGxnDmwvQSg7Nw6Ye6WUeXHvs3wtj5Xa9LArc7p"),
32+
("aleo1s2tyzgqr9p95sxtj9t0s38cmz9pa26edxp4nv0s8mk3tmdzmqgzsctqhxg", "APrivateKey1zkp9AZwPkk4gYUCRtkaX5ZSfBymToB7azBJHmJkSvfyfcn4"),
33+
("aleo1sufp275hshd7srrkxwdf7yczmc89em6e5ly933ftnaz64jlq8qysnuz88d", "APrivateKey1zkp2jCDeE8bPnKXKDrXcKaGQRVfoZ1WFUiVorbTwDrEv6Cg"),
34+
("aleo1mwcjkpm5hpqapnsyddnwtmd873lz2kpp6uqayyuvstr4ky2ycv9sglne5m", "APrivateKey1zkp7St3ztS3cag91PpyQbBffTc8YLmigCGB97Sf6bkQwvpg"),
35+
("aleo1khukq9nkx5mq3eqfm5p68g4855ewqwg7mk0rn6ysfru73krvfg8qfvc4dt", "APrivateKey1zkpGcGacddZtDLRc8RM4cZb6cm3GoUwpJjSCQcf2mfeY6Do"),
36+
("aleo1masuagxaduf9ne0xqvct06gpf2tmmxzcgq5w2el3allhu9dsv5pskk7wvm", "APrivateKey1zkp4ZXEtPR4VY7vjkCihYcSZxAn68qhr6gTdw8br95vvPFe"),
37+
("aleo10w89dpq8tqzeghq35nxtk2k66pskxm8vhrdl3vx6r4j9hkgf2qqs3936q6", "APrivateKey1zkpH7XEPZDUrEBnMtq1JyCR6ipwjFQ5jiHnTCe7Z7heyxff"),
38+
("aleo1sfu3p7g8rppusft8re7v88ujjhz5sx6pwc5609vdgnr0pdmhkyyqrrsjkm", "APrivateKey1zkpA9S3Epe8mzDnMuAXBmdxyRXgB8yp7PuMrs2teh8xNcVe"),
39+
("aleo1ry0wc384qthrdna5xtzsjqvxg42zwfezpna6keeqa6netv3qmyxszhh8z8", "APrivateKey1zkp5neB5iVnXMTrR6y8P6wndGE9xWhQzBf3Qoht9yQ17a5o"),
40+
("aleo1ps4dhhfn5vgfj9lyjra2xnv9a8cc2a2l9jnr585h6tvj4gnlqgfqyszcv3", "APrivateKey1zkp4u1cUbvkC2r3n3Gz3eNzth1TvffGbFeLgaYyk8efsT4e"),
41+
("aleo15a34a3dtpj879frvndndp0605vqnxsfdedwyrtu5u6xfd7fv5ufqryavc4", "APrivateKey1zkpBs9zc9FChKZAkoHsf1TERcd9EQhe43NS1xuNSnyJSH1K"),
42+
("aleo1mpn4enrfm2dqjg8lqh09t2zcatkujq3qr3kq8kcnrd7uaqrc3c9qngcp5l", "APrivateKey1zkp3sh4dSfCXd9g86DGHx6PAQG7WrMxE8bMbJxCrpPKSUw3"),
43+
("aleo1axy39ux5lhaypf039zp7fuhg57qkfqtafu2fa3e2vwgqugeq05qsm2kfl4", "APrivateKey1zkpApK3vKdDDwbf62K5Mh7JsPNksud3ypZEXvuoYPcazStS"),
44+
("aleo1zzpl369camggvj5qm2nhnpfhe3epcera3xvdra4ze7scg35zmuzsl7kwyh", "APrivateKey1zkp2uS6cU4M4J8z2fE3uMuQHkg87AgrMnDQ8NZzGAnpiEXm"),
45+
("aleo1j2fhcu3qkvn4k0vrf53jmuv8d0fz5guz9tzdy0egjjjttdhsxszqfdfwfk", "APrivateKey1zkp8za2Nc39VHQFzBQFH6rhKuB9LqPaoVw1SgUPG8pSGAAn"),
46+
("aleo1jqfyapkxkx3hk05mjzky9cqxjr5yz33fwfqujpd0uy5zxxwfkvqskcffhq", "APrivateKey1zkp4JjfHAVD9d6S9n8FYpVnapkJ3yfiyPaQNnAqsuexUQcU"),
47+
("aleo1sap6x2ndmmwm8t6z568hc33u8ayynw2ha9u9pck7wvrrd0e7k58sty954x", "APrivateKey1zkpFT2mMYvZ7TPzjkCGH5F64itzRBwjscqqqezx6AaPnqxF"),
48+
("aleo19afl0wwru8ws7g7c727j27x0e8r7sa5gkjz6jv37sr4ujlm5sqzs2qt8wz", "APrivateKey1zkpJcSh3d66dxtTvaA1b9P9xAdUXMKnWsQSkhmZRDpEUJYr"),
49+
("aleo1ypkmme72un8k4dzaj0z6ha2skz9adskscwf75eul27j5e7lu6s9q0pu9qx", "APrivateKey1zkpAy7c3uea5yuvjkuN9eqGSoBJDHpE33yCe5qu7u2JbVmZ"),
50+
("aleo1av8367kf2dre7mwpuyhcg7wrhtvs27usa53fn8uwmd5x7r2gsyrs9084ge", "APrivateKey1zkp3GUSi7FQW7FgLyPp77A45CvDjZFwdqgWzLzkxbB3GXKD"),
51+
("aleo1y7swdgs3zav50a0r0sx8us4tqycp67kc9ypnml5eqjfpypk7cgqszf6dvn", "APrivateKey1zkp5rtsaS8tZwZVrf5PwQwnfvcm7Q4UntrcXXiwYTMRuz9T"),
52+
("aleo16dyj3gxptzm5vgfyxlv2s6869ftfdxwpl2hm9r09uqk69kcjwvfqqpu2pm", "APrivateKey1zkpDPHco2BZh95YCD2eZc44LZ8YfuZq85qfULBVgUB6SouE"),
53+
("aleo1ftv0e670e2nezrdajxg947vn3el4cgjt47nghleuw5a7dja9dyrszr5jhp", "APrivateKey1zkp2jaPbqqFLXiTr92CSDEqevwzaVsj4MbC43apRKFXnWSd"),
54+
("aleo1d7wfgrgtk75g8m08d7f8jmyk6f8kg9w8jpm7l97hyx0kf6l8asrsdnhzzz", "APrivateKey1zkpEycEZpddReHV4UExGpWSQZUCau2g6K2HP1jQnCSPUAL9"),
55+
("aleo1hcaq72hw8tf7ms4qfppefklwdr32ud3nngu88wnx6dq67dzgl58scpsg8v", "APrivateKey1zkp9gJgMLBiVKVRSSqbRDQFcKm84sQbJF9wqWzcSnXVw1we"),
56+
("aleo1szkl7zn07mgd44qpg43wk3sd5emggc3w5frd3wwms9c4rwklygzs7mn4x9", "APrivateKey1zkp7jX54qsuFZ5Ks2DJhPzx6io2EM2CZhTYA3XU2XfXt2rr"),
57+
("aleo1sekqksjqnmhpyca5juxxghrujck8dm9lrhp70nrsp9a7hd4sxczswyrnjj", "APrivateKey1zkpDyVQ7mGpb48oS44Zee1gPvA19ng98S2MRCCCcsh7Av8r"),
58+
("aleo18y86x2qvjsg0tay6fj9cjqejhvv45wnd53a66tax6j3zrxu9gupsh7e86v", "APrivateKey1zkp5grVqsMuASdVowmgsK5CCBjz9dAqAw2K1szc4jPC15EN"),
59+
("aleo1rnhvu0f4m6ymwegyemqyt7hfsqqaqxpn29l7jafvyuw60nz9ygysu0jn23", "APrivateKey1zkp5s39kX98KZmm4vdfhHuWhMbP5mVCREFRZuT9GGduzb6x"),
60+
("aleo192e2mn3lmav8csm0krjn0va5v9nur6pr03y8vepe09xc5qummvxq338czu", "APrivateKey1zkp642Mn8JgLFC4C5JGdy73VMg5skFoAj5dmaxKs2zTnDbN"),
61+
("aleo1mjwjwe67rzs7w08psynya7pc3q4shpyggz92xksy4rumfzfmdc9qnrk4pl", "APrivateKey1zkpFisano5hmJvALiVkgVcxVRL61aS8jz2CwFeAQQS9j6Qu"),
62+
("aleo1ffdnchytga8nuzg557h8cx0h89xlddxhucxdphtg8k8v8tn7zuysxa893d", "APrivateKey1zkp6gB8LRzRs1chkWMnk7ffAytADkdZEDxggqEEAdV1qQBC"),
63+
("aleo16w6zw8glrj08psy5nwumsed7kmxwxk8paq2d92m7dk2uerwzuqqsvkamnk", "APrivateKey1zkp7mXyitjWX5hXUznSKpfEMUqdMVzCwG728Nzf1R1axRzL"),
64+
("aleo1dfystswcj4j0k8nckast6ylexrwuhv42ysldx7x03q0uch259ypsfml8h7", "APrivateKey1zkp6WadY8WbPq2or8YMJDFyS9c6HHyoJEif567i4SqVv2h8"),
65+
("aleo1j97mw86ytd6v6zl76qju6dm9ee3t0zjdsaydph7dtweusm6vavqsmswgzg", "APrivateKey1zkpJMcEf79UR7n2W5rzLrkeg1hTrWHQyNJcvKmhsJWkzTsN"),
66+
("aleo17g5m4scr8x8yndx6spsmnu5wk45sgwe4w2la8gnxu0zjn7cfssxq2sxsef", "APrivateKey1zkpEe33jVdjakXiQcKfJUf9fyVaTMxHJcuipXmAWgy55TFQ"),
67+
("aleo1hkuf3ypfym59m23c8jmw97yxpldsk2ycc9rc2x0eaaxd9x6fmvqqpfg08d", "APrivateKey1zkpGTtLxB3mUbew6mkP3D7tqVveVEZYYKmgVun1CyXJcXmF"),
68+
("aleo1e9xrl7ummq63d6zay60w5klqkfhya5kwcwa757hqzgujkk9ddcgqnufluq", "APrivateKey1zkp7aPCqYDux1n8DdLGPFNqkoHjSjpkoSaiVpKcf4Xpgz3B"),
69+
("aleo1u44retdlrhptya55qgxly0um6ydajrz2mhthxtyukzekctxtag9sdcy0cm", "APrivateKey1zkpDbTD13qeLjMA6ympzFFo1Z2mnUHg8DRAaSKE7qCWW79f"),
70+
("aleo1wqcgpvt58d03nl34vhx3kc0v4jh04f6alvt5s38q3jhdq3shqcxq6g5v70", "APrivateKey1zkpBfe9853NcMnagBeYpimPrT5ZN8fYi8aMv45rxkxbm7Gn"),
71+
("aleo1s77df89g2km8urqvanvthhuxyw9d32plmjvewthm7cjhnezxtygq78mrdn", "APrivateKey1zkpG22T5KZGDE54HmVCp91vhzNrzb7HihynmUyZ4DX9Ngj2"),
72+
];
73+
74+
/// List all pre-funded accounts for the built-in genesis block.
75+
#[derive(Parser, Debug)]
76+
#[group(id = "accounts_args")]
77+
pub struct Accounts;
78+
79+
impl Accounts {
80+
pub fn execute(self) -> Result<()> {
81+
let sep = "═".repeat(70);
82+
println!("{sep}");
83+
println!(" Pre-funded Accounts ({} total — built-in genesis only)", FUNDED_ACCOUNTS.len());
84+
println!("{sep}");
85+
for (i, (address, private_key)) in FUNDED_ACCOUNTS.iter().enumerate() {
86+
println!(" ({i}) {address}");
87+
println!(" {private_key}");
88+
println!();
89+
}
90+
println!("⚠ These are development keys. Never use them in production.");
91+
println!(" Using a custom genesis? Query block 0: GET http://localhost:3030/testnet/block/0");
92+
println!("{sep}");
93+
Ok(())
94+
}
95+
}

src/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//
44
// Licensed under the GNU General Public License v3.0.
55

6+
mod accounts;
67
mod advance;
78
mod logger;
89
mod rest;
@@ -29,6 +30,11 @@ enum DevnodeCommands {
2930
#[clap(flatten)]
3031
command: restore::Restore,
3132
},
33+
#[clap(name = "accounts", about = "List all pre-funded development accounts for the built-in genesis block")]
34+
Accounts {
35+
#[clap(flatten)]
36+
command: accounts::Accounts,
37+
},
3238
}
3339

3440
/// A standalone Aleo development node.
@@ -58,5 +64,6 @@ fn run(cli: Cli) -> Result<()> {
5864
}
5965
DevnodeCommands::Advance { command } => command.execute(),
6066
DevnodeCommands::Restore { command } => command.execute(),
67+
DevnodeCommands::Accounts { command } => command.execute(),
6168
}
6269
}

src/start.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ async fn start_devnode(command: Start, private_key: Option<String>) -> Result<()
9292
"/resources/genesis_8d710d7e2_40val_snarkos_dev_network.bin"
9393
)))?
9494
};
95+
let manual_block_creation = command.manual_block_creation;
9596
match command.storage {
9697
Some(path) => {
9798
if command.clear_storage && path.exists() {
@@ -116,15 +117,15 @@ async fn start_devnode(command: Start, private_key: Option<String>) -> Result<()
116117
tokio::task::spawn_blocking(move || Ledger::load(genesis_block, storage_mode))
117118
.await
118119
.map_err(|e| anyhow::anyhow!("Failed to load ledger: {e}"))??;
119-
run_devnode(socket_addr, ledger, command.manual_block_creation, private_key, Some(path)).await?
120+
run_devnode(socket_addr, ledger, manual_block_creation, private_key, Some(path)).await?
120121
}
121122
None => {
122123
let storage_mode = StorageMode::new_test(None);
123124
let ledger: Ledger<TestnetV0, ConsensusMemory<TestnetV0>> =
124125
tokio::task::spawn_blocking(move || Ledger::load(genesis_block, storage_mode))
125126
.await
126127
.map_err(|e| anyhow::anyhow!("Failed to load ledger: {e}"))??;
127-
run_devnode(socket_addr, ledger, command.manual_block_creation, private_key, None).await?
128+
run_devnode(socket_addr, ledger, manual_block_creation, private_key, None).await?
128129
}
129130
}
130131

0 commit comments

Comments
 (0)