genesis: rename mint account to faucet account and make it optional (#6990)
This commit is contained in:
@ -28,7 +28,6 @@ maybeDisableAirdrops=
|
|||||||
maybeInternalNodesStakeLamports=
|
maybeInternalNodesStakeLamports=
|
||||||
maybeInternalNodesLamports=
|
maybeInternalNodesLamports=
|
||||||
maybeExternalPrimordialAccountsFile=
|
maybeExternalPrimordialAccountsFile=
|
||||||
maybeLamports=
|
|
||||||
maybeSlotsPerEpoch=
|
maybeSlotsPerEpoch=
|
||||||
maybeTargetLamportsPerSignature=
|
maybeTargetLamportsPerSignature=
|
||||||
maybeSlotsPerEpoch=
|
maybeSlotsPerEpoch=
|
||||||
@ -114,9 +113,6 @@ while [[ -n $1 ]]; do
|
|||||||
elif [[ $1 = --slots-per-epoch ]]; then
|
elif [[ $1 = --slots-per-epoch ]]; then
|
||||||
maybeSlotsPerEpoch="$1 $2"
|
maybeSlotsPerEpoch="$1 $2"
|
||||||
shift 2
|
shift 2
|
||||||
elif [[ $1 = --lamports ]]; then
|
|
||||||
maybeLamports="$1 $2"
|
|
||||||
shift 2
|
|
||||||
elif [[ $1 = --target-lamports-per-signature ]]; then
|
elif [[ $1 = --target-lamports-per-signature ]]; then
|
||||||
maybeTargetLamportsPerSignature="$1 $2"
|
maybeTargetLamportsPerSignature="$1 $2"
|
||||||
shift 2
|
shift 2
|
||||||
@ -412,7 +408,6 @@ if ! $skipStart; then
|
|||||||
$maybeInternalNodesStakeLamports
|
$maybeInternalNodesStakeLamports
|
||||||
$maybeInternalNodesLamports
|
$maybeInternalNodesLamports
|
||||||
$maybeExternalPrimordialAccountsFile
|
$maybeExternalPrimordialAccountsFile
|
||||||
$maybeLamports
|
|
||||||
$maybeSlotsPerEpoch
|
$maybeSlotsPerEpoch
|
||||||
$maybeTargetLamportsPerSignature
|
$maybeTargetLamportsPerSignature
|
||||||
$maybeNoSnapshot
|
$maybeNoSnapshot
|
||||||
|
@ -506,14 +506,6 @@ deploy() {
|
|||||||
maybeExternalAccountsFile="--external-accounts-file ${EXTERNAL_ACCOUNTS_FILE}"
|
maybeExternalAccountsFile="--external-accounts-file ${EXTERNAL_ACCOUNTS_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $LAMPORTS ]]; then
|
|
||||||
maybeLamports="--lamports 500000000000000000"
|
|
||||||
elif [[ $LAMPORTS == skip ]]; then
|
|
||||||
maybeLamports=""
|
|
||||||
else
|
|
||||||
maybeLamports="--lamports ${LAMPORTS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z $ADDITIONAL_DISK_SIZE_GB ]]; then
|
if [[ -z $ADDITIONAL_DISK_SIZE_GB ]]; then
|
||||||
maybeAdditionalDisk="--validator-additional-disk-size-gb 32000"
|
maybeAdditionalDisk="--validator-additional-disk-size-gb 32000"
|
||||||
elif [[ $ADDITIONAL_DISK_SIZE_GB == skip ]]; then
|
elif [[ $ADDITIONAL_DISK_SIZE_GB == skip ]]; then
|
||||||
@ -522,7 +514,6 @@ deploy() {
|
|||||||
maybeAdditionalDisk="--validator-additional-disk-size-gb ${ADDITIONAL_DISK_SIZE_GB}"
|
maybeAdditionalDisk="--validator-additional-disk-size-gb ${ADDITIONAL_DISK_SIZE_GB}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Multiple V100 GPUs are available in us-west1, us-central1 and europe-west4
|
# Multiple V100 GPUs are available in us-west1, us-central1 and europe-west4
|
||||||
# shellcheck disable=SC2068
|
# shellcheck disable=SC2068
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
@ -545,7 +536,6 @@ deploy() {
|
|||||||
${maybeInternalNodesStakeLamports} \
|
${maybeInternalNodesStakeLamports} \
|
||||||
${maybeInternalNodesLamports} \
|
${maybeInternalNodesLamports} \
|
||||||
${maybeExternalAccountsFile} \
|
${maybeExternalAccountsFile} \
|
||||||
${maybeLamports} \
|
|
||||||
--target-lamports-per-signature 1 \
|
--target-lamports-per-signature 1 \
|
||||||
--slots-per-epoch 4096 \
|
--slots-per-epoch 4096 \
|
||||||
${maybeAdditionalDisk}
|
${maybeAdditionalDisk}
|
||||||
|
@ -1,16 +1,7 @@
|
|||||||
use solana_sdk::{account::Account, pubkey::Pubkey, system_program};
|
use solana_sdk::{account::Account, pubkey::Pubkey};
|
||||||
|
|
||||||
pub(crate) fn create_genesis_accounts(
|
pub(crate) fn create_genesis_accounts() -> Vec<(Pubkey, Account)> {
|
||||||
mint_pubkey: &Pubkey,
|
vec![]
|
||||||
mint_lamports: u64,
|
|
||||||
) -> Vec<(Pubkey, Account)> {
|
|
||||||
vec![
|
|
||||||
// the mint
|
|
||||||
(
|
|
||||||
*mint_pubkey,
|
|
||||||
Account::new(mint_lamports, 0, &system_program::id()),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -19,9 +10,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_create_genesis_accounts() {
|
fn test_create_genesis_accounts() {
|
||||||
let mint_lamports = 42;
|
assert_eq!(create_genesis_accounts(), vec![]);
|
||||||
let accounts = create_genesis_accounts(&Pubkey::default(), mint_lamports);
|
|
||||||
let genesis_lamports: u64 = accounts.iter().map(|(_, account)| account.lamports).sum();
|
|
||||||
assert_eq!(genesis_lamports, mint_lamports);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
mod genesis_accounts;
|
mod genesis_accounts;
|
||||||
|
|
||||||
use crate::genesis_accounts::create_genesis_accounts;
|
use crate::genesis_accounts::create_genesis_accounts;
|
||||||
use clap::{crate_description, crate_name, value_t_or_exit, App, Arg};
|
use clap::{crate_description, crate_name, value_t, value_t_or_exit, App, Arg};
|
||||||
use solana_genesis::Base64Account;
|
use solana_genesis::Base64Account;
|
||||||
use solana_ledger::blocktree::create_new_ledger;
|
use solana_ledger::blocktree::create_new_ledger;
|
||||||
use solana_ledger::poh::compute_hashes_per_tick;
|
use solana_ledger::poh::compute_hashes_per_tick;
|
||||||
@ -88,7 +88,6 @@ pub fn add_genesis_accounts(file: &str, genesis_config: &mut GenesisConfig) -> i
|
|||||||
fn main() -> Result<(), Box<dyn error::Error>> {
|
fn main() -> Result<(), Box<dyn error::Error>> {
|
||||||
let default_bootstrap_leader_lamports = &sol_to_lamports(500.0).to_string();
|
let default_bootstrap_leader_lamports = &sol_to_lamports(500.0).to_string();
|
||||||
let default_bootstrap_leader_stake_lamports = &sol_to_lamports(0.5).to_string();
|
let default_bootstrap_leader_stake_lamports = &sol_to_lamports(0.5).to_string();
|
||||||
let default_lamports = &sol_to_lamports(500_000_000.0).to_string();
|
|
||||||
let default_target_lamports_per_signature = &FeeCalculator::default()
|
let default_target_lamports_per_signature = &FeeCalculator::default()
|
||||||
.target_lamports_per_signature
|
.target_lamports_per_signature
|
||||||
.to_string();
|
.to_string();
|
||||||
@ -135,23 +134,22 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||||||
.help("Use directory as persistent ledger location"),
|
.help("Use directory as persistent ledger location"),
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("lamports")
|
Arg::with_name("faucet_lamports")
|
||||||
.short("t")
|
.short("t")
|
||||||
.long("lamports")
|
.long("faucet-lamports")
|
||||||
.value_name("LAMPORTS")
|
.value_name("LAMPORTS")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.default_value(default_lamports)
|
.requires("faucet_pubkey_file")
|
||||||
.required(true)
|
.help("Number of lamports to assign to the faucet"),
|
||||||
.help("Number of lamports to create in the mint"),
|
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("mint_pubkey_file")
|
Arg::with_name("faucet_pubkey_file")
|
||||||
.short("m")
|
.short("m")
|
||||||
.long("mint")
|
.long("faucet-pubkey")
|
||||||
.value_name("MINT")
|
.value_name("PUBKEY")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.requires("faucet_lamports")
|
||||||
.help("Path to file containing keys of the mint"),
|
.help("Path to file containing the faucet's pubkey"),
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("bootstrap_vote_pubkey_file")
|
Arg::with_name("bootstrap_vote_pubkey_file")
|
||||||
@ -314,9 +312,9 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||||||
let bootstrap_vote_pubkey_file = matches.value_of("bootstrap_vote_pubkey_file").unwrap();
|
let bootstrap_vote_pubkey_file = matches.value_of("bootstrap_vote_pubkey_file").unwrap();
|
||||||
let bootstrap_stake_pubkey_file = matches.value_of("bootstrap_stake_pubkey_file").unwrap();
|
let bootstrap_stake_pubkey_file = matches.value_of("bootstrap_stake_pubkey_file").unwrap();
|
||||||
let bootstrap_storage_pubkey_file = matches.value_of("bootstrap_storage_pubkey_file").unwrap();
|
let bootstrap_storage_pubkey_file = matches.value_of("bootstrap_storage_pubkey_file").unwrap();
|
||||||
let mint_pubkey_file = matches.value_of("mint_pubkey_file").unwrap();
|
let faucet_pubkey_file = matches.value_of("faucet_pubkey_file");
|
||||||
|
let faucet_lamports = value_t!(matches, "faucet_lamports", u64);
|
||||||
let ledger_path = PathBuf::from(matches.value_of("ledger_path").unwrap());
|
let ledger_path = PathBuf::from(matches.value_of("ledger_path").unwrap());
|
||||||
let lamports = value_t_or_exit!(matches, "lamports", u64);
|
|
||||||
let bootstrap_leader_lamports = value_t_or_exit!(matches, "bootstrap_leader_lamports", u64);
|
let bootstrap_leader_lamports = value_t_or_exit!(matches, "bootstrap_leader_lamports", u64);
|
||||||
let bootstrap_leader_stake_lamports =
|
let bootstrap_leader_stake_lamports =
|
||||||
value_t_or_exit!(matches, "bootstrap_leader_stake_lamports", u64);
|
value_t_or_exit!(matches, "bootstrap_leader_stake_lamports", u64);
|
||||||
@ -325,7 +323,6 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||||||
let bootstrap_vote_pubkey = pubkey_from_file(bootstrap_vote_pubkey_file)?;
|
let bootstrap_vote_pubkey = pubkey_from_file(bootstrap_vote_pubkey_file)?;
|
||||||
let bootstrap_stake_pubkey = pubkey_from_file(bootstrap_stake_pubkey_file)?;
|
let bootstrap_stake_pubkey = pubkey_from_file(bootstrap_stake_pubkey_file)?;
|
||||||
let bootstrap_storage_pubkey = pubkey_from_file(bootstrap_storage_pubkey_file)?;
|
let bootstrap_storage_pubkey = pubkey_from_file(bootstrap_storage_pubkey_file)?;
|
||||||
let mint_pubkey = pubkey_from_file(mint_pubkey_file)?;
|
|
||||||
|
|
||||||
let bootstrap_leader_vote_account =
|
let bootstrap_leader_vote_account =
|
||||||
vote_state::create_account(&bootstrap_vote_pubkey, &bootstrap_leader_pubkey, 0, 1);
|
vote_state::create_account(&bootstrap_vote_pubkey, &bootstrap_leader_pubkey, 0, 1);
|
||||||
@ -359,7 +356,14 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||||||
storage_contract::create_validator_storage_account(bootstrap_leader_pubkey, 1),
|
storage_contract::create_validator_storage_account(bootstrap_leader_pubkey, 1),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
accounts.append(&mut create_genesis_accounts(&mint_pubkey, lamports));
|
|
||||||
|
if let Some(faucet_pubkey_file) = faucet_pubkey_file {
|
||||||
|
accounts.append(&mut vec![(
|
||||||
|
pubkey_from_file(faucet_pubkey_file)?,
|
||||||
|
Account::new(faucet_lamports.unwrap(), 0, &system_program::id()),
|
||||||
|
)]);
|
||||||
|
}
|
||||||
|
accounts.append(&mut create_genesis_accounts());
|
||||||
|
|
||||||
let ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64);
|
let ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64);
|
||||||
let slots_per_epoch = value_t_or_exit!(matches, "slots_per_epoch", u64);
|
let slots_per_epoch = value_t_or_exit!(matches, "slots_per_epoch", u64);
|
||||||
|
@ -7,8 +7,8 @@ here=$(dirname "$0")
|
|||||||
# shellcheck source=multinode-demo/common.sh
|
# shellcheck source=multinode-demo/common.sh
|
||||||
source "$here"/common.sh
|
source "$here"/common.sh
|
||||||
|
|
||||||
[[ -f "$SOLANA_CONFIG_DIR"/mint-keypair.json ]] || {
|
[[ -f "$SOLANA_CONFIG_DIR"/faucet-keypair.json ]] || {
|
||||||
echo "$SOLANA_CONFIG_DIR/mint-keypair.json not found, create it by running:"
|
echo "$SOLANA_CONFIG_DIR/faucet-keypair.json not found, create it by running:"
|
||||||
echo
|
echo
|
||||||
echo " ${here}/setup.sh"
|
echo " ${here}/setup.sh"
|
||||||
exit 1
|
exit 1
|
||||||
@ -16,4 +16,4 @@ source "$here"/common.sh
|
|||||||
|
|
||||||
set -x
|
set -x
|
||||||
# shellcheck disable=SC2086 # Don't want to double quote $solana_drone
|
# shellcheck disable=SC2086 # Don't want to double quote $solana_drone
|
||||||
exec $solana_drone --keypair "$SOLANA_CONFIG_DIR"/mint-keypair.json "$@"
|
exec $solana_drone --keypair "$SOLANA_CONFIG_DIR"/faucet-keypair.json "$@"
|
||||||
|
@ -10,10 +10,10 @@ rm -rf "$SOLANA_CONFIG_DIR"/bootstrap-leader
|
|||||||
mkdir -p "$SOLANA_CONFIG_DIR"/bootstrap-leader
|
mkdir -p "$SOLANA_CONFIG_DIR"/bootstrap-leader
|
||||||
|
|
||||||
# Create genesis ledger
|
# Create genesis ledger
|
||||||
if [[ -r $MINT_KEYPAIR ]]; then
|
if [[ -r $FAUCET_KEYPAIR ]]; then
|
||||||
cp -f "$MINT_KEYPAIR" "$SOLANA_CONFIG_DIR"/mint-keypair.json
|
cp -f "$FAUCET_KEYPAIR" "$SOLANA_CONFIG_DIR"/faucet-keypair.json
|
||||||
else
|
else
|
||||||
$solana_keygen new -f -o "$SOLANA_CONFIG_DIR"/mint-keypair.json
|
$solana_keygen new -f -o "$SOLANA_CONFIG_DIR"/faucet-keypair.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f $BOOTSTRAP_LEADER_IDENTITY_KEYPAIR ]]; then
|
if [[ -f $BOOTSTRAP_LEADER_IDENTITY_KEYPAIR ]]; then
|
||||||
@ -32,7 +32,8 @@ default_arg --bootstrap-vote-pubkey "$SOLANA_CONFIG_DIR"/bootstrap-leader/vote-k
|
|||||||
default_arg --bootstrap-stake-pubkey "$SOLANA_CONFIG_DIR"/bootstrap-leader/stake-keypair.json
|
default_arg --bootstrap-stake-pubkey "$SOLANA_CONFIG_DIR"/bootstrap-leader/stake-keypair.json
|
||||||
default_arg --bootstrap-storage-pubkey "$SOLANA_CONFIG_DIR"/bootstrap-leader/storage-keypair.json
|
default_arg --bootstrap-storage-pubkey "$SOLANA_CONFIG_DIR"/bootstrap-leader/storage-keypair.json
|
||||||
default_arg --ledger "$SOLANA_CONFIG_DIR"/bootstrap-leader
|
default_arg --ledger "$SOLANA_CONFIG_DIR"/bootstrap-leader
|
||||||
default_arg --mint "$SOLANA_CONFIG_DIR"/mint-keypair.json
|
default_arg --faucet-pubkey "$SOLANA_CONFIG_DIR"/faucet-keypair.json
|
||||||
|
default_arg --faucet-lamports 500000000000000000
|
||||||
default_arg --hashes-per-tick auto
|
default_arg --hashes-per-tick auto
|
||||||
default_arg --operating-mode development
|
default_arg --operating-mode development
|
||||||
$solana_genesis "${args[@]}"
|
$solana_genesis "${args[@]}"
|
||||||
|
@ -61,7 +61,7 @@ Operate a configured testnet
|
|||||||
- Override the default --hashes-per-tick for the cluster
|
- Override the default --hashes-per-tick for the cluster
|
||||||
--no-airdrop
|
--no-airdrop
|
||||||
- If set, disables airdrops. Nodes must be funded in genesis config when airdrops are disabled.
|
- If set, disables airdrops. Nodes must be funded in genesis config when airdrops are disabled.
|
||||||
--lamports NUM_LAMPORTS_TO_MINT
|
--faucet-lamports NUM_LAMPORTS_TO_MINT
|
||||||
- Override the default 500000000000000000 lamports minted in genesis
|
- Override the default 500000000000000000 lamports minted in genesis
|
||||||
--internal-nodes-stake-lamports NUM_LAMPORTS_PER_NODE
|
--internal-nodes-stake-lamports NUM_LAMPORTS_PER_NODE
|
||||||
- Amount to stake internal nodes.
|
- Amount to stake internal nodes.
|
||||||
@ -172,7 +172,7 @@ while [[ -n $1 ]]; do
|
|||||||
elif [[ $1 = --target-lamports-per-signature ]]; then
|
elif [[ $1 = --target-lamports-per-signature ]]; then
|
||||||
genesisOptions="$genesisOptions $1 $2"
|
genesisOptions="$genesisOptions $1 $2"
|
||||||
shift 2
|
shift 2
|
||||||
elif [[ $1 = --lamports ]]; then
|
elif [[ $1 = --faucet-lamports ]]; then
|
||||||
genesisOptions="$genesisOptions $1 $2"
|
genesisOptions="$genesisOptions $1 $2"
|
||||||
shift 2
|
shift 2
|
||||||
elif [[ $1 = --operating-mode ]]; then
|
elif [[ $1 = --operating-mode ]]; then
|
||||||
|
@ -77,7 +77,7 @@ solana-bench-exchange)
|
|||||||
idle)
|
idle)
|
||||||
# Add the mint keypair to idle clients for convenience
|
# Add the mint keypair to idle clients for convenience
|
||||||
net/scripts/rsync-retry.sh -vPrc \
|
net/scripts/rsync-retry.sh -vPrc \
|
||||||
"$entrypointIp":~/solana/config/mint-keypair.json ~/solana/
|
"$entrypointIp":~/solana/config/faucet-keypair.json ~/solana/
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -36,5 +36,5 @@ PATH="$HOME"/.cargo/bin:"$PATH"
|
|||||||
|
|
||||||
set -x
|
set -x
|
||||||
scripts/solana-install-deploy.sh \
|
scripts/solana-install-deploy.sh \
|
||||||
--keypair config/mint-keypair.json \
|
--keypair config/faucet-keypair.json \
|
||||||
localhost "$releaseChannel" "$updatePlatform"
|
localhost "$releaseChannel" "$updatePlatform"
|
||||||
|
@ -230,7 +230,7 @@ EOF
|
|||||||
args+=($genesisOptions)
|
args+=($genesisOptions)
|
||||||
|
|
||||||
if [[ -f net/keypairs/mint.json ]]; then
|
if [[ -f net/keypairs/mint.json ]]; then
|
||||||
export MINT_KEYPAIR=net/keypairs/mint.json
|
export FAUCET_KEYPAIR=net/keypairs/mint.json
|
||||||
fi
|
fi
|
||||||
if [[ -f net/keypairs/bootstrap-leader-identity.json ]]; then
|
if [[ -f net/keypairs/bootstrap-leader-identity.json ]]; then
|
||||||
export BOOTSTRAP_LEADER_IDENTITY_KEYPAIR=net/keypairs/bootstrap-leader-identity.json
|
export BOOTSTRAP_LEADER_IDENTITY_KEYPAIR=net/keypairs/bootstrap-leader-identity.json
|
||||||
@ -312,13 +312,13 @@ EOF
|
|||||||
set -x
|
set -x
|
||||||
# Add the mint keypair to validators for convenient access from tools
|
# Add the mint keypair to validators for convenient access from tools
|
||||||
# like bench-tps and add to blocktreamers to run a drone
|
# like bench-tps and add to blocktreamers to run a drone
|
||||||
scp "$entrypointIp":~/solana/config/mint-keypair.json config/
|
scp "$entrypointIp":~/solana/config/faucet-keypair.json config/
|
||||||
if [[ $nodeType = blockstreamer ]]; then
|
if [[ $nodeType = blockstreamer ]]; then
|
||||||
# Run another drone with the mint keypair on the blockstreamer node.
|
# Run another drone with the mint keypair on the blockstreamer node.
|
||||||
# Typically the blockstreamer node has a static IP/DNS name for hosting
|
# Typically the blockstreamer node has a static IP/DNS name for hosting
|
||||||
# the blockexplorer web app, and is a location that somebody would expect
|
# the blockexplorer web app, and is a location that somebody would expect
|
||||||
# to be able to airdrop from
|
# to be able to airdrop from
|
||||||
scp "$entrypointIp":~/solana/config/mint-keypair.json config/
|
scp "$entrypointIp":~/solana/config/faucet-keypair.json config/
|
||||||
if [[ $airdropsEnabled = true ]]; then
|
if [[ $airdropsEnabled = true ]]; then
|
||||||
cat >> ~/solana/on-reboot <<EOF
|
cat >> ~/solana/on-reboot <<EOF
|
||||||
multinode-demo/drone.sh > drone.log 2>&1 &
|
multinode-demo/drone.sh > drone.log 2>&1 &
|
||||||
|
6
run.sh
6
run.sh
@ -59,12 +59,12 @@ if [[ -e $leader_stake_account_keypair ]]; then
|
|||||||
else
|
else
|
||||||
solana-keygen new -o "$leader_stake_account_keypair"
|
solana-keygen new -o "$leader_stake_account_keypair"
|
||||||
fi
|
fi
|
||||||
solana-keygen new -f -o "$dataDir"/drone-keypair.json
|
solana-keygen new -f -o "$dataDir"/faucet-keypair.json
|
||||||
solana-keygen new -f -o "$dataDir"/leader-storage-account-keypair.json
|
solana-keygen new -f -o "$dataDir"/leader-storage-account-keypair.json
|
||||||
|
|
||||||
solana-genesis \
|
solana-genesis \
|
||||||
--hashes-per-tick sleep \
|
--hashes-per-tick sleep \
|
||||||
--mint "$dataDir"/drone-keypair.json \
|
--faucet-keypair "$dataDir"/faucet-keypair.json \
|
||||||
--bootstrap-leader-pubkey "$dataDir"/leader-keypair.json \
|
--bootstrap-leader-pubkey "$dataDir"/leader-keypair.json \
|
||||||
--bootstrap-vote-pubkey "$dataDir"/leader-vote-account-keypair.json \
|
--bootstrap-vote-pubkey "$dataDir"/leader-vote-account-keypair.json \
|
||||||
--bootstrap-stake-pubkey "$dataDir"/leader-stake-account-keypair.json \
|
--bootstrap-stake-pubkey "$dataDir"/leader-stake-account-keypair.json \
|
||||||
@ -78,7 +78,7 @@ abort() {
|
|||||||
}
|
}
|
||||||
trap abort INT TERM EXIT
|
trap abort INT TERM EXIT
|
||||||
|
|
||||||
solana-drone --keypair "$dataDir"/drone-keypair.json &
|
solana-drone --keypair "$dataDir"/faucet-keypair.json &
|
||||||
drone=$!
|
drone=$!
|
||||||
|
|
||||||
args=(
|
args=(
|
||||||
|
@ -44,16 +44,16 @@ pub struct GenesisConfig {
|
|||||||
|
|
||||||
// useful for basic tests
|
// useful for basic tests
|
||||||
pub fn create_genesis_config(lamports: u64) -> (GenesisConfig, Keypair) {
|
pub fn create_genesis_config(lamports: u64) -> (GenesisConfig, Keypair) {
|
||||||
let mint_keypair = Keypair::new();
|
let faucet_keypair = Keypair::new();
|
||||||
(
|
(
|
||||||
GenesisConfig::new(
|
GenesisConfig::new(
|
||||||
&[(
|
&[(
|
||||||
mint_keypair.pubkey(),
|
faucet_keypair.pubkey(),
|
||||||
Account::new(lamports, 0, &system_program::id()),
|
Account::new(lamports, 0, &system_program::id()),
|
||||||
)],
|
)],
|
||||||
&[solana_system_program()],
|
&[solana_system_program()],
|
||||||
),
|
),
|
||||||
mint_keypair,
|
faucet_keypair,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,19 +180,21 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_genesis_config() {
|
fn test_genesis_config() {
|
||||||
let mint_keypair = Keypair::new();
|
let faucet_keypair = Keypair::new();
|
||||||
let mut config = GenesisConfig::default();
|
let mut config = GenesisConfig::default();
|
||||||
config.add_account(
|
config.add_account(
|
||||||
mint_keypair.pubkey(),
|
faucet_keypair.pubkey(),
|
||||||
Account::new(10_000, 0, &Pubkey::default()),
|
Account::new(10_000, 0, &Pubkey::default()),
|
||||||
);
|
);
|
||||||
config.add_account(Pubkey::new_rand(), Account::new(1, 0, &Pubkey::default()));
|
config.add_account(Pubkey::new_rand(), Account::new(1, 0, &Pubkey::default()));
|
||||||
config.add_native_instruction_processor("hi".to_string(), Pubkey::new_rand());
|
config.add_native_instruction_processor("hi".to_string(), Pubkey::new_rand());
|
||||||
|
|
||||||
assert_eq!(config.accounts.len(), 2);
|
assert_eq!(config.accounts.len(), 2);
|
||||||
assert!(config.accounts.iter().any(
|
assert!(config
|
||||||
|(pubkey, account)| *pubkey == mint_keypair.pubkey() && account.lamports == 10_000
|
.accounts
|
||||||
));
|
.iter()
|
||||||
|
.any(|(pubkey, account)| *pubkey == faucet_keypair.pubkey()
|
||||||
|
&& account.lamports == 10_000));
|
||||||
|
|
||||||
let path = &make_tmp_path("genesis_config");
|
let path = &make_tmp_path("genesis_config");
|
||||||
config.write(&path).expect("write");
|
config.write(&path).expect("write");
|
||||||
|
Reference in New Issue
Block a user