Set withdrawer keys (#8499)

This commit is contained in:
Greg Fitzgerald 2020-02-27 07:32:35 -07:00 committed by GitHub
parent 29f81577e9
commit 61a20febb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 12 deletions

View File

@ -10,7 +10,7 @@ const UNLOCKS_ALL_AT_9_MONTHS: UnlockInfo = UnlockInfo {
cliff_years: 0.75, cliff_years: 0.75,
unlocks: 0, unlocks: 0,
unlock_years: 0.0, unlock_years: 0.0,
custodian: "6LnFgiECFQKUcxNYDvUBMxgjeGQzzy4kgxGhantoxfUe", custodian: "Mc5XB47H3DKJHym5RLa9mPzWv5snERsF3KNv5AauXK8",
}; };
// no lockups // no lockups
@ -19,7 +19,7 @@ const UNLOCKS_ALL_DAY_ZERO: UnlockInfo = UnlockInfo {
cliff_years: 0.0, cliff_years: 0.0,
unlocks: 0, unlocks: 0,
unlock_years: 0.0, unlock_years: 0.0,
custodian: "6LnFgiECFQKUcxNYDvUBMxgjeGQzzy4kgxGhantoxfUe", custodian: "Mc5XB47H3DKJHym5RLa9mPzWv5snERsF3KNv5AauXK8",
}; };
pub const BATCH_FOUR_STAKER_INFOS: &[StakerInfo] = &[ pub const BATCH_FOUR_STAKER_INFOS: &[StakerInfo] = &[
@ -27,106 +27,127 @@ pub const BATCH_FOUR_STAKER_INFOS: &[StakerInfo] = &[
name: "impossible pizza", name: "impossible pizza",
staker: "CDtJpwRSiPRDGeKrvymWQKM7JY9M3hU7iimEKBDxZyoP", staker: "CDtJpwRSiPRDGeKrvymWQKM7JY9M3hU7iimEKBDxZyoP",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "wretched texture", name: "wretched texture",
staker: "HbENu65qjWLEB5TrMouSSWLq9mbtGx2bvfhPjk2FpYek", staker: "HbENu65qjWLEB5TrMouSSWLq9mbtGx2bvfhPjk2FpYek",
lamports: 225_000 * LAMPORTS_PER_SOL, lamports: 225_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "nutritious examination", name: "nutritious examination",
staker: "C9CfFpmLDsQsz6wt7MrrZquNB5oS4QkpJkmDAiboVEZZ", staker: "C9CfFpmLDsQsz6wt7MrrZquNB5oS4QkpJkmDAiboVEZZ",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "tidy impression", name: "tidy impression",
staker: "6ne6Rbag4FAnop1KNgVdM1SEHnJEysHSWyqvRpFrzaig", staker: "6ne6Rbag4FAnop1KNgVdM1SEHnJEysHSWyqvRpFrzaig",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "unbecoming silver", name: "unbecoming silver",
staker: "4AcoZa1P8fF5XK21RJsiuMRZPEScbbWNc75oakRFHiBz", staker: "4AcoZa1P8fF5XK21RJsiuMRZPEScbbWNc75oakRFHiBz",
lamports: 28_800 * LAMPORTS_PER_SOL, lamports: 28_800 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "dramatic treatment", name: "dramatic treatment",
staker: "GTyawCMwt3kMb51AgDtfdp97mDot7jNwc8ifuS9qqANg", staker: "GTyawCMwt3kMb51AgDtfdp97mDot7jNwc8ifuS9qqANg",
lamports: 1_205_602 * LAMPORTS_PER_SOL, lamports: 1_205_602 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "angry noise", name: "angry noise",
staker: "Fqxs9MhqjKuMq6YwjBG4ktEapuZQ3kj19mpuHLZKtkg9", staker: "Fqxs9MhqjKuMq6YwjBG4ktEapuZQ3kj19mpuHLZKtkg9",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "hard cousin", name: "hard cousin",
staker: "9MYDzj7QuAX9QAK7da1GhzPB4gA3qbPNWsW3MMSZobru", staker: "9MYDzj7QuAX9QAK7da1GhzPB4gA3qbPNWsW3MMSZobru",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "inexpensive uncle", name: "inexpensive uncle",
staker: "E4DLNkmdL34ejA48ApfPDoFVuD9XWAFqi8bXzBGRhKst", staker: "E4DLNkmdL34ejA48ApfPDoFVuD9XWAFqi8bXzBGRhKst",
lamports: 300_000 * LAMPORTS_PER_SOL, lamports: 300_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "lopsided skill", name: "lopsided skill",
staker: "8cV7zCTF5UMrZakZXiL2Jw5uY3ms2Wz4twzFXEY9Kge2", staker: "8cV7zCTF5UMrZakZXiL2Jw5uY3ms2Wz4twzFXEY9Kge2",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "red snake", name: "red snake",
staker: "JBGnGdLyo7V2z9hz51mnnbyDp9sBACtw5WYH9YRG8n7e", staker: "JBGnGdLyo7V2z9hz51mnnbyDp9sBACtw5WYH9YRG8n7e",
lamports: 3_655_292 * LAMPORTS_PER_SOL, lamports: 3_655_292 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "hellish money", name: "hellish money",
staker: "CqKdQ57mBj2mKcAbpjWc28Ls7yXzBXboxSTCRWocmUVj", staker: "CqKdQ57mBj2mKcAbpjWc28Ls7yXzBXboxSTCRWocmUVj",
lamports: 200_000 * LAMPORTS_PER_SOL, lamports: 200_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "full grape", name: "full grape",
staker: "2SCJKvh7wWo32PtfUZdVZQ84WnMWoUpF4WTm6ZxcCJ15", staker: "2SCJKvh7wWo32PtfUZdVZQ84WnMWoUpF4WTm6ZxcCJ15",
lamports: 450_000 * LAMPORTS_PER_SOL, lamports: 450_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "nice ghost", name: "nice ghost",
staker: "FeumxB3gfzrVQzABBiha8AacKPY3Rf4BTFSh2aZWHqR8", staker: "FeumxB3gfzrVQzABBiha8AacKPY3Rf4BTFSh2aZWHqR8",
lamports: 650_000 * LAMPORTS_PER_SOL, lamports: 650_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "jolly year", name: "jolly year",
staker: "HBwFWNGPVZgkf3yqUKxuAds5aANGWX62LzUFvZVCWLdJ", staker: "HBwFWNGPVZgkf3yqUKxuAds5aANGWX62LzUFvZVCWLdJ",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "typical initiative", name: "typical initiative",
staker: "3JMz3kaDUZEVK2JVjRqwERGMp7LbWbgUjAFBb42qxoHb", staker: "3JMz3kaDUZEVK2JVjRqwERGMp7LbWbgUjAFBb42qxoHb",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "deserted window", name: "deserted window",
staker: "XTeBBZextvHkoRqDF8yb4hihjcraKQDwTEXhzjd8fip", staker: "XTeBBZextvHkoRqDF8yb4hihjcraKQDwTEXhzjd8fip",
lamports: 3_655_292 * LAMPORTS_PER_SOL, lamports: 3_655_292 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "eight nation", name: "eight nation",
staker: "E5bSU5ywqPiz3ije89ef5gaEC7jy81BAc72Zeb9MqeHY", staker: "E5bSU5ywqPiz3ije89ef5gaEC7jy81BAc72Zeb9MqeHY",
lamports: 103_519 * LAMPORTS_PER_SOL, lamports: 103_519 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "earsplitting meaning", name: "earsplitting meaning",
staker: "4ZemkSoE75RFE1SVLnnmHcaNWT4qN8KFrKP2wAYfv8CB", staker: "4ZemkSoE75RFE1SVLnnmHcaNWT4qN8KFrKP2wAYfv8CB",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "alike cheese", name: "alike cheese",
staker: "72BGEwYee5txFonmpEarTEKCZVN2UxcSUgdphdhcx3V", staker: "72BGEwYee5txFonmpEarTEKCZVN2UxcSUgdphdhcx3V",
lamports: 3_880_295 * LAMPORTS_PER_SOL, lamports: 3_880_295 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "noisy honey", name: "noisy honey",
staker: "DRp1Scyn4yJZQfMAdQew2x8RtvRmsNELN37JTK5Xvzgn", staker: "DRp1Scyn4yJZQfMAdQew2x8RtvRmsNELN37JTK5Xvzgn",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
]; ];
@ -135,11 +156,13 @@ pub const FOUNDATION_STAKER_INFOS: &[StakerInfo] = &[
name: "lyrical supermarket", name: "lyrical supermarket",
staker: "GRZwoJGisLTszcxtWpeREJ98EGg8pZewhbtcrikoU7b3", staker: "GRZwoJGisLTszcxtWpeREJ98EGg8pZewhbtcrikoU7b3",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "frequent description", name: "frequent description",
staker: "J51tinoLdmEdUR27LUVymrb2LB3xQo1aSHSgmbSGdj58", staker: "J51tinoLdmEdUR27LUVymrb2LB3xQo1aSHSgmbSGdj58",
lamports: 57_500_000 * LAMPORTS_PER_SOL, lamports: 57_500_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
]; ];
@ -148,29 +171,34 @@ pub const GRANTS_STAKER_INFOS: &[StakerInfo] = &[
name: "rightful agreement", name: "rightful agreement",
staker: "DNaKiBwwbbqk1wVoC5AQxWQbuDhvaDVbAtXzsVos9mrc", staker: "DNaKiBwwbbqk1wVoC5AQxWQbuDhvaDVbAtXzsVos9mrc",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
StakerInfo { StakerInfo {
name: "tasty location", name: "tasty location",
staker: "HvXQPXAijjG1vnQs6HXVtUUtFVzi5HNgXV9LGnHvYF85", staker: "HvXQPXAijjG1vnQs6HXVtUUtFVzi5HNgXV9LGnHvYF85",
lamports: 15_000_000 * LAMPORTS_PER_SOL, lamports: 15_000_000 * LAMPORTS_PER_SOL,
withdrawer: None,
}, },
]; ];
pub const COMMUNITY_STAKER_INFOS: &[StakerInfo] = &[ pub const COMMUNITY_STAKER_INFOS: &[StakerInfo] = &[
StakerInfo { StakerInfo {
name: "shrill charity", name: "shrill charity",
staker: "BzuqQFnu7oNUeok9ZoJezpqu2vZJU7XR1PxVLkk6wwUD", staker: "Eo1iDtrZZiAkQFA8u431hedChaSUnPbU8MWg849MFvEZ",
lamports: 5_000_000 * LAMPORTS_PER_SOL, lamports: 5_000_000 * LAMPORTS_PER_SOL,
withdrawer: Some("8CUUMKYNGxdgYio5CLHRHyzMEhhVRMcqefgE6dLqnVRK"),
}, },
StakerInfo { StakerInfo {
name: "legal gate", name: "legal gate",
staker: "FwMbkDZUb78aiMWhZY4BEroAcqmnrXZV77nwrg71C57d", staker: "7KCzZCbZz6V1U1YXUpBNaqQzQCg2DKo8JsNhKASKtYxe",
lamports: 16_086_641 * LAMPORTS_PER_SOL, lamports: 16_086_641 * LAMPORTS_PER_SOL,
withdrawer: Some("92viKFftk1dJjqJwreFqT2qHXxjSUuEE9VyHvTdY1mpY"),
}, },
StakerInfo { StakerInfo {
name: "cluttered complaint", name: "cluttered complaint",
staker: "4h1rt2ic4AXwG7p3Qqhw57EMDD4c3tLYb5J3QstGA2p5", staker: "2J8mJU6tWg78DdQVEqMfpN3rMeNbcRT9qGL3yLbmSXYL",
lamports: 153_333_633 * LAMPORTS_PER_SOL + 41 * LAMPORTS_PER_SOL / 100, lamports: 153_333_633 * LAMPORTS_PER_SOL + 41 * LAMPORTS_PER_SOL / 100,
withdrawer: Some("7kgfDmgbEfypBujqn4tyApjf8H7ZWuaL3F6Ah9vQHzgR"),
}, },
]; ];
@ -219,8 +247,9 @@ pub fn add_genesis_accounts(genesis_config: &mut GenesisConfig, mut issued_lampo
genesis_config, genesis_config,
&StakerInfo { &StakerInfo {
name: "one thanks", name: "one thanks",
staker: "3b7akieYUyCgz3Cwt5sTSErMWjg8NEygD6mbGjhGkduB", staker: "7vEAL3nS9CWmy1q6njUUyHE7Cf5RmyQpND6CsoHjzPiR",
lamports: 500_000_000 * LAMPORTS_PER_SOL - issued_lamports, lamports: 500_000_000 * LAMPORTS_PER_SOL - issued_lamports,
withdrawer: Some("3FFaheyqtyAXZSYxDzsr5CVKvJuvZD1WE1VEsBtDbRqB"),
}, },
&UNLOCKS_ALL_DAY_ZERO, &UNLOCKS_ALL_DAY_ZERO,
1_000_000 * LAMPORTS_PER_SOL, 1_000_000 * LAMPORTS_PER_SOL,

View File

@ -16,6 +16,7 @@ use solana_stake_program::{
pub struct StakerInfo { pub struct StakerInfo {
pub name: &'static str, pub name: &'static str,
pub staker: &'static str, pub staker: &'static str,
pub withdrawer: Option<&'static str>,
pub lamports: u64, pub lamports: u64,
} }
@ -43,12 +44,19 @@ pub fn create_and_add_stakes(
// the largest each stake account should be, in lamports // the largest each stake account should be, in lamports
granularity: u64, granularity: u64,
) -> u64 { ) -> u64 {
let authorized = Authorized::auto( let staker = &staker_info
&staker_info .staker
.staker .parse::<Pubkey>()
.parse::<Pubkey>() .expect("invalid staker");
.expect("invalid staker"), let withdrawer = &staker_info
); .withdrawer
.unwrap_or(staker_info.staker)
.parse::<Pubkey>()
.expect("invalid staker");
let authorized = Authorized {
staker: *staker,
withdrawer: *withdrawer,
};
let custodian = unlock_info let custodian = unlock_info
.custodian .custodian
.parse::<Pubkey>() .parse::<Pubkey>()
@ -239,6 +247,7 @@ mod tests {
name: "fun", name: "fun",
staker: "P1aceHo1derPubkey11111111111111111111111111", staker: "P1aceHo1derPubkey11111111111111111111111111",
lamports: total_lamports, lamports: total_lamports,
withdrawer: None,
}, },
&UnlockInfo { &UnlockInfo {
cliff_fraction: 0.5, cliff_fraction: 0.5,
@ -264,6 +273,7 @@ mod tests {
name: "fun", name: "fun",
staker: "P1aceHo1derPubkey11111111111111111111111111", staker: "P1aceHo1derPubkey11111111111111111111111111",
lamports: total_lamports, lamports: total_lamports,
withdrawer: None,
}, },
&UnlockInfo { &UnlockInfo {
cliff_fraction: 0.5, cliff_fraction: 0.5,
@ -289,6 +299,7 @@ mod tests {
name: "fun", name: "fun",
staker: "P1aceHo1derPubkey11111111111111111111111111", staker: "P1aceHo1derPubkey11111111111111111111111111",
lamports: total_lamports, lamports: total_lamports,
withdrawer: None,
}, },
&UnlockInfo { &UnlockInfo {
cliff_fraction: 0.5, cliff_fraction: 0.5,
@ -313,6 +324,7 @@ mod tests {
name: "fun", name: "fun",
staker: "P1aceHo1derPubkey11111111111111111111111111", staker: "P1aceHo1derPubkey11111111111111111111111111",
lamports: total_lamports, lamports: total_lamports,
withdrawer: None,
}, },
&UnlockInfo { &UnlockInfo {
cliff_fraction: 0.5, cliff_fraction: 0.5,