SNS.yaml: month and year conversion to seconds

Hi @peterparker

I added one line println!("proposal = {:#?}", proposal); to the load_configuration_and_validate function of the propose subcommand of SNS CLI tool (bazel run //rs/sns/cli:sns -- propose --test-neuron-proposer) to see what proposal payload would be generated for your YAML file, and it seems that all time-related fields match those that you posted above (there were 18 such fields, right?)

Here’s the full payload I’ve got:

proposal = Proposal {
    title: Some(
        "NNS Proposal to create an SNS named 'Juno Build'",
    ),
    summary: "",
    url: "https://forum.dfinity.org/thread-where-this-sns-is-discussed",
    action: Some(
        CreateServiceNervousSystem(
            CreateServiceNervousSystem {
                name: Some(
                    "Juno Build",
                ),
                description: Some(
                    "Juno is a blockchain-as-a-service platform that empowers developers to build decentralized apps efficiently. It offers a comprehensive toolkit to scaffold secure and efficient projects.",
                ),
                url: Some(
                    "https://juno.build",
                ),
                logo: Some(
                    Image {
                        base64_encoding: Some(
                            "data:image/png;base64,",
                        ),
                    },
                ),
                fallback_controller_principal_ids: [
                    tpv2w-kr3vj-a3mac-wivgj-5mwwr-egoxz-vxdpg-oqul5-3oygd-derik-jqe,
                    miso6-cu5ju-xcxwf-v2upq-mn32j-sn7lf-7mgiq-rh5ec-olmvw-a6z54-pqe,
                ],
                dapp_canisters: [
                    Canister {
                        id: Some(
                            cokmz-oiaaa-aaaal-aby6q-cai,
                        ),
                    },
                    Canister {
                        id: Some(
                            klbfr-lqaaa-aaaak-qbwsa-cai,
                        ),
                    },
                    Canister {
                        id: Some(
                            fmkjf-bqaaa-aaaal-acpza-cai,
                        ),
                    },
                ],
                initial_token_distribution: Some(
                    InitialTokenDistribution {
                        developer_distribution: Some(
                            DeveloperDistribution {
                                developer_neurons: [
                                    NeuronDistribution {
                                        controller: Some(
                                            k5nen-up7es-gfojt-3cbvu-ejeec-kjull-457tg-en2xi-ixjgm-vnxmv-tqe,
                                        ),
                                        dissolve_delay: Some(
                                            Duration {
                                                seconds: Some(
                                                    63115200,
                                                ),
                                            },
                                        ),
                                        memo: Some(
                                            0,
                                        ),
                                        stake: Some(
                                            Tokens {
                                                e8s: Some(
                                                    400000000000000,
                                                ),
                                            },
                                        ),
                                        vesting_period: Some(
                                            Duration {
                                                seconds: Some(
                                                    157788000,
                                                ),
                                            },
                                        ),
                                    },
                                    NeuronDistribution {
                                        controller: Some(
                                            k5nen-up7es-gfojt-3cbvu-ejeec-kjull-457tg-en2xi-ixjgm-vnxmv-tqe,
                                        ),
                                        dissolve_delay: Some(
                                            Duration {
                                                seconds: Some(
                                                    47340288,
                                                ),
                                            },
                                        ),
                                        memo: Some(
                                            1,
                                        ),
                                        stake: Some(
                                            Tokens {
                                                e8s: Some(
                                                    400000000000000,
                                                ),
                                            },
                                        ),
                                        vesting_period: Some(
                                            Duration {
                                                seconds: Some(
                                                    94672800,
                                                ),
                                            },
                                        ),
                                    },
                                    NeuronDistribution {
                                        controller: Some(
                                            k5nen-up7es-gfojt-3cbvu-ejeec-kjull-457tg-en2xi-ixjgm-vnxmv-tqe,
                                        ),
                                        dissolve_delay: Some(
                                            Duration {
                                                seconds: Some(
                                                    31557600,
                                                ),
                                            },
                                        ),
                                        memo: Some(
                                            2,
                                        ),
                                        stake: Some(
                                            Tokens {
                                                e8s: Some(
                                                    400000000000000,
                                                ),
                                            },
                                        ),
                                        vesting_period: Some(
                                            Duration {
                                                seconds: Some(
                                                    63115200,
                                                ),
                                            },
                                        ),
                                    },
                                    NeuronDistribution {
                                        controller: Some(
                                            k5nen-up7es-gfojt-3cbvu-ejeec-kjull-457tg-en2xi-ixjgm-vnxmv-tqe,
                                        ),
                                        dissolve_delay: Some(
                                            Duration {
                                                seconds: Some(
                                                    23670144,
                                                ),
                                            },
                                        ),
                                        memo: Some(
                                            3,
                                        ),
                                        stake: Some(
                                            Tokens {
                                                e8s: Some(
                                                    400000000000000,
                                                ),
                                            },
                                        ),
                                        vesting_period: Some(
                                            Duration {
                                                seconds: Some(
                                                    47340288,
                                                ),
                                            },
                                        ),
                                    },
                                    NeuronDistribution {
                                        controller: Some(
                                            k5nen-up7es-gfojt-3cbvu-ejeec-kjull-457tg-en2xi-ixjgm-vnxmv-tqe,
                                        ),
                                        dissolve_delay: Some(
                                            Duration {
                                                seconds: Some(
                                                    15780096,
                                                ),
                                            },
                                        ),
                                        memo: Some(
                                            4,
                                        ),
                                        stake: Some(
                                            Tokens {
                                                e8s: Some(
                                                    400000000000000,
                                                ),
                                            },
                                        ),
                                        vesting_period: Some(
                                            Duration {
                                                seconds: Some(
                                                    31557600,
                                                ),
                                            },
                                        ),
                                    },
                                ],
                            },
                        ),
                        treasury_distribution: Some(
                            TreasuryDistribution {
                                total: Some(
                                    Tokens {
                                        e8s: Some(
                                            5000000000000000,
                                        ),
                                    },
                                ),
                            },
                        ),
                        swap_distribution: Some(
                            SwapDistribution {
                                total: Some(
                                    Tokens {
                                        e8s: Some(
                                            3000000000000000,
                                        ),
                                    },
                                ),
                            },
                        ),
                    },
                ),
                swap_parameters: Some(
                    SwapParameters {
                        minimum_participants: Some(
                            100,
                        ),
                        minimum_icp: None,
                        maximum_icp: None,
                        minimum_direct_participation_icp: Some(
                            Tokens {
                                e8s: Some(
                                    20000000000000,
                                ),
                            },
                        ),
                        maximum_direct_participation_icp: Some(
                            Tokens {
                                e8s: Some(
                                    35000000000000,
                                ),
                            },
                        ),
                        minimum_participant_icp: Some(
                            Tokens {
                                e8s: Some(
                                    100000000,
                                ),
                            },
                        ),
                        maximum_participant_icp: Some(
                            Tokens {
                                e8s: Some(
                                    20000000000000,
                                ),
                            },
                        ),
                        neuron_basket_construction_parameters: Some(
                            NeuronBasketConstructionParameters {
                                count: Some(
                                    5,
                                ),
                                dissolve_delay_interval: Some(
                                    Duration {
                                        seconds: Some(
                                            15780096,
                                        ),
                                    },
                                ),
                            },
                        ),
                        confirmation_text: Some(
                            "I confirm my understanding of the responsibilities and risks associated with participating in this token swap and that I am not a resident of any of the excluded countries.\n",
                        ),
                        restricted_countries: Some(
                            Countries {
                                iso_codes: [
                                    "AF",
                                    "BY",
                                    "BA",
                                    "BI",
                                    "CF",
                                    "KP",
                                    "CD",
                                    "IR",
                                    "IQ",
                                    "LB",
                                    "LY",
                                    "ML",
                                    "ME",
                                    "MM",
                                    "NI",
                                    "RU",
                                    "RS",
                                    "SO",
                                    "SD",
                                    "SY",
                                    "UA",
                                    "VE",
                                    "YE",
                                    "ZW",
                                ],
                            },
                        ),
                        start_time: None,
                        duration: Some(
                            Duration {
                                seconds: Some(
                                    1209600,
                                ),
                            },
                        ),
                        neurons_fund_investment_icp: None,
                        neurons_fund_participation: Some(
                            true,
                        ),
                    },
                ),
                ledger_parameters: Some(
                    LedgerParameters {
                        transaction_fee: Some(
                            Tokens {
                                e8s: Some(
                                    1000000,
                                ),
                            },
                        ),
                        token_name: Some(
                            "Juno Build",
                        ),
                        token_symbol: Some(
                            "JUNOBUILD",
                        ),
                        token_logo: Some(
                            Image {
                                base64_encoding: Some(
                                    "data:image/png;base64,",
                                ),
                            },
                        ),
                    },
                ),
                governance_parameters: Some(
                    GovernanceParameters {
                        proposal_rejection_fee: Some(
                            Tokens {
                                e8s: Some(
                                    10000000000,
                                ),
                            },
                        ),
                        proposal_initial_voting_period: Some(
                            Duration {
                                seconds: Some(
                                    259200,
                                ),
                            },
                        ),
                        proposal_wait_for_quiet_deadline_increase: Some(
                            Duration {
                                seconds: Some(
                                    86400,
                                ),
                            },
                        ),
                        neuron_minimum_stake: Some(
                            Tokens {
                                e8s: Some(
                                    1000000000,
                                ),
                            },
                        ),
                        neuron_minimum_dissolve_delay_to_vote: Some(
                            Duration {
                                seconds: Some(
                                    15780096,
                                ),
                            },
                        ),
                        neuron_maximum_dissolve_delay: Some(
                            Duration {
                                seconds: Some(
                                    94672800,
                                ),
                            },
                        ),
                        neuron_maximum_dissolve_delay_bonus: Some(
                            Percentage {
                                basis_points: Some(
                                    7500,
                                ),
                            },
                        ),
                        neuron_maximum_age_for_age_bonus: Some(
                            Duration {
                                seconds: Some(
                                    94672800,
                                ),
                            },
                        ),
                        neuron_maximum_age_bonus: Some(
                            Percentage {
                                basis_points: Some(
                                    2500,
                                ),
                            },
                        ),
                        voting_reward_parameters: Some(
                            VotingRewardParameters {
                                initial_reward_rate: Some(
                                    Percentage {
                                        basis_points: Some(
                                            150,
                                        ),
                                    },
                                ),
                                final_reward_rate: Some(
                                    Percentage {
                                        basis_points: Some(
                                            150,
                                        ),
                                    },
                                ),
                                reward_rate_transition_duration: Some(
                                    Duration {
                                        seconds: Some(
                                            31557600,
                                        ),
                                    },
                                ),
                            },
                        ),
                    },
                ),
            },
        ),
    ),
}

Hope this helps.

1 Like