Skip to content

Commit b7acbd3

Browse files
authored
shelley genesis: support fractional slot length (#361)
* shelley genesis: support fractional slot length * use Fraction for slot_length field
1 parent 6bad0cf commit b7acbd3

File tree

4 files changed

+105
-3
lines changed

4 files changed

+105
-3
lines changed

chain/rust/src/genesis/shelley/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub struct ShelleyGenesisData {
1818
pub network_magic: u64,
1919
pub protocol_params: ShelleyGenesisProtocolParameters,
2020
pub security_param: u64,
21-
pub slot_length: u64,
21+
pub slot_length: Fraction,
2222
pub slots_per_kes_period: u64,
2323
pub staking: Option<ShelleyGenesisStaking>,
2424
pub system_start: chrono::DateTime<chrono::Utc>,

chain/rust/src/genesis/shelley/parse.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ pub fn parse_genesis_data<R: Read>(
172172
tau: fraction::Fraction::from_str(&data.protocolParams.tau).unwrap(),
173173
},
174174
security_param: data.securityParam,
175-
slot_length: data.slotLength,
175+
slot_length: fraction::Fraction::from_str(&data.slotLength).unwrap(),
176176
slots_per_kes_period: data.slotsPerKESPeriod,
177177
staking,
178178
system_start: data.systemStart.parse().expect("Failed to parse date"),
@@ -193,6 +193,10 @@ mod test {
193193
include_str!("./test_data/test.json")
194194
}
195195

196+
fn get_test_genesis_data_yaci() -> &'static str {
197+
include_str!("./test_data/test-yaci.json")
198+
}
199+
196200
#[test]
197201
fn calc_address_txid() {
198202
let hash = redeem_address_to_txid(
@@ -223,4 +227,9 @@ mod test {
223227
3000000000000000u64
224228
);
225229
}
230+
231+
#[test]
232+
fn parse_test_genesis_yaci_files() {
233+
super::parse_genesis_data(get_test_genesis_data_yaci().as_bytes()).unwrap();
234+
}
226235
}

chain/rust/src/genesis/shelley/raw.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ pub struct ShelleyGenesisData {
2222
pub networkMagic: u64,
2323
pub protocolParams: ShelleyGenesisProtocolParameters,
2424
pub securityParam: u64,
25-
pub slotLength: u64,
25+
#[serde(deserialize_with = "deserialize_string_from_number")]
26+
pub slotLength: String,
2627
pub slotsPerKESPeriod: u64,
2728
pub staking: Option<ShelleyGenesisStaking>,
2829
pub systemStart: String,
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
{
2+
"activeSlotsCoeff" : 1.0,
3+
"epochLength" : 600,
4+
"genDelegs" : {
5+
"337bc5ef0f1abf205624555c13a37258c42b46b1259a6b1a6d82574e" : {
6+
"delegate" : "41fd6bb31f34469320aa47cf6ccc3918e58a06d60ea1f2361efe2458",
7+
"vrf" : "7053e3ecd2b19db13e5338aa75fb518fc08b6c218f56ad65760d3eb074be95d4"
8+
}
9+
},
10+
"initialFunds" : {
11+
"00c8c47610a36034aac6fc58848bdae5c278d994ff502c05455e3b3ee8f8ed3a0eea0ef835ffa7bbfcde55f7fe9d2cc5d55ea62cecb42bab3c" : 10000000000,
12+
"004048ff89ca4f88e66598e620aa0c7128c2145d9a181ae9a4a81ca8e3e849af38840c5562dd382be37c9e76545c8191f9d8f6df1d20cfcee0" : 10000000000,
13+
"00ca6e1b1f320d543a24adeabc0aa4627635c7349b639f86f74bdfdd78d31b28c9619a58b3792a7394ab85deb36889c4d7b0632c8167b855d2" : 10000000000,
14+
"0007d781fe8e33883e371f9550c2f1087321fc32e06e80b65e349ccb027702d6880e86e77a0520efa37ede45002a1de43b68692e175b742e67" : 10000000000,
15+
"00627b2598dd71129167825160c564067d1d245e79cc237094815c5cb2b125e30ec2f4ce4059a069e08c3cd82cdfc9451bfb22487f8a25ceef" : 10000000000,
16+
"00c6cf7bd50f37f7e4cc161fc00f07e9b2226ba5552ccaf30d315fa0135bbc8cbd9ab5379f368fc8d3500c37a9d14074cc6ddad89e3686f0e0" : 10000000000,
17+
"005164ab186715c86378020956d892cf72f67636b78967d67cfe7360479130dc89cf7a9bc89109f939956b66f93293ade4c3920b72fd40beea" : 10000000000,
18+
"003dd38742e9848c6f12c13ddb1f9464fc0ce0bb92102768087975317e5a9f869fcd913562c9b0e0f01f77e5359ea780d37f9355f9702eff8b" : 10000000000,
19+
"0088e7e670b45cab2322b518ef7b6f66d30aec0d923dc463e467091a790f67796b9fa71224f2846cebbcf4950c11e040ee124d30f6e164bcd5" : 10000000000,
20+
"00c70b8421617802d3f23956cab1957e1d306cd4808589b41760e97927ebfd6053ba12b38288b2b6d5d4c4618d6a8ce59d50580e9c6f704af5" : 10000000000,
21+
"00c0933b8238f6f3332e48c34cf1a8e0555943b33cd4abc53aefb7d6124b7ce40dd496bdc02b34602f3a773ff7cccee873991e4c8866f3a70b" : 10000000000,
22+
"0069f7d7289de2f01cd1e0265ac5be943b41775abae0ce6b3eac0edee0ce9cadb7cdec2bded3ef8a7bbe3352869bfc1387754c9ee6b1782d9c" : 10000000000,
23+
"00709a7070005c652c27df73dbbde3319a90b127bea96aded1c5fb87a59c51dbcf90fa890174497f3f66a0dad06eb7f131e06567995e9c50a5" : 10000000000,
24+
"00fc576df3a279885a7a4d0fc500372daa1d96f26c6763542ecd2ad8551753024adea37c134edebb68dc0cfaed5a7009e8305fe1fed8d0ccd1" : 10000000000,
25+
"003346a630e6972bf38cce87219db1d63061e7cd324cad88c18e504f2990cac68e973f51256ca938683fa4ea12173d7d047d940fbb883bd0e8" : 10000000000,
26+
"0028b862d001e6a64a02b3560cbc532eab4557593477c39cc523e0b9fc527100898c11e731194171b908aad463770d6cbf7ec8871c4cb1e518" : 10000000000,
27+
"005e0e57040b06e9d71e0f28f126262838a68db0b52b4fd1b3877dda2203d5d7d4f19c5ee3a1ed51bb670779de19d40aaff2e5e9468cc05c5e" : 10000000000,
28+
"00367f65ab69b1e6715c8d5a14964214c9505ed17032266b3209a2c40dcbae9a2a881e603ff39d36e987bacfb87ee98051f222c5fe3efd350c" : 10000000000,
29+
"00c5c4ca287f3b53948b5468e5e23b1c87fe61ce52c0d9afd65d070795038751a619d463e91eaed0a774ebdb2f8e12a01a378a153bc3627323" : 10000000000,
30+
"00ef198fb7c35e1968308a0b75cfee54a46e13e86dd3354283300831d624165c357b5a0413906a0bfea8ba57587331f0836a186d632ed041b8" : 10000000000,
31+
"60a0f1aa7dca95017c11e7e373aebcf0c4568cf47ec12b94f8eb5bba8b" : 3000000000000000,
32+
"60ba957a0fff6816021b2afa7900beea68fd10f2d78fb5b64de0d2379c" : 3000000000000000,
33+
"007290ea8fa9433c1045a4c8473959ad608e6c03a58c7de33bdbd3ce6f295b987135610616f3c74e11c94d77b6ced5ccc93a7d719cfb135062" : 300000000000,
34+
"605276322ac7882434173dcc6441905f6737689bd309b68ad8b3614fd8" : 3000000000000000
35+
},
36+
"maxKESEvolutions" : 60,
37+
"maxLovelaceSupply" : 45000000000000000,
38+
"networkId" : "Testnet",
39+
"networkMagic" : 42,
40+
"protocolParams" : {
41+
"a0" : 0.0,
42+
"decentralisationParam" : 0,
43+
"eMax" : 18,
44+
"extraEntropy" : {
45+
"tag" : "NeutralNonce"
46+
},
47+
"keyDeposit" : 2000000,
48+
"maxBlockBodySize" : 90112,
49+
"maxBlockHeaderSize" : 1100,
50+
"maxTxSize" : 16384,
51+
"minFeeA" : 44,
52+
"minFeeB" : 155381,
53+
"minPoolCost" : 170000000,
54+
"minUTxOValue" : 1000000,
55+
"nOpt" : 100,
56+
"poolDeposit" : 500000000,
57+
"protocolVersion" : {
58+
"major" : 9,
59+
"minor" : 0
60+
},
61+
"rho" : 0.003,
62+
"tau" : 0.2
63+
},
64+
"securityParam" : 300,
65+
"slotLength" : 1.0,
66+
"slotsPerKESPeriod" : 129600,
67+
"staking" : {
68+
"pools" : {
69+
"7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57" : {
70+
"cost" : 340000000,
71+
"margin" : 0,
72+
"metadata" : null,
73+
"owners" : [ ],
74+
"pledge" : 0,
75+
"publicKey" : "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57",
76+
"relays" : [ ],
77+
"rewardAccount" : {
78+
"credential" : {
79+
"keyHash" : "11a14edf73b08a0a27cb98b2c57eb37c780df18fcfcf6785ed5df84a"
80+
},
81+
"network" : "Testnet"
82+
},
83+
"vrf" : "c2b62ffa92ad18ffc117ea3abeb161a68885000a466f9c71db5e4731d6630061"
84+
}
85+
},
86+
"stake" : {
87+
"295b987135610616f3c74e11c94d77b6ced5ccc93a7d719cfb135062" : "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57"
88+
}
89+
},
90+
"systemStart" : "2024-09-18T18:44:16.450192Z",
91+
"updateQuorum" : 1
92+
}

0 commit comments

Comments
 (0)