private static MultipartyTransactionParameters CreateMultipartyTransactionParameters()
    {
        var reasonableRange = new MoneyRange(Money.Coins(0.0001m), Money.Coins(430));
        var txParams        = new MultipartyTransactionParameters(
            new FeeRate(5m),
            CoordinationFeeRate.Zero,
            reasonableRange,
            reasonableRange,
            Network.Main);

        return(txParams);
    }
Exemple #2
0
        public Round(RoundParameters roundParameters)
        {
            RoundParameters = roundParameters;

            var allowedAmounts = new MoneyRange(roundParameters.MinRegistrableAmount, RoundParameters.MaxRegistrableAmount);
            var txParams       = new MultipartyTransactionParameters(roundParameters.FeeRate, allowedAmounts, allowedAmounts, roundParameters.Network);

            CoinjoinState = new ConstructionState(txParams);

            InitialInputVsizeAllocation = CoinjoinState.Parameters.MaxTransactionSize - MultipartyTransactionParameters.SharedOverhead;
            MaxRegistrableVsize         = Math.Min(InitialInputVsizeAllocation / RoundParameters.MaxInputCountByRound, (int)ProtocolConstants.MaxVsizeCredentialValue);
            MaxVsizeAllocationPerAlice  = MaxRegistrableVsize;

            AmountCredentialIssuer           = new(new(RoundParameters.Random), RoundParameters.Random, MaxRegistrableAmount);
            VsizeCredentialIssuer            = new(new(RoundParameters.Random), RoundParameters.Random, MaxRegistrableVsize);
            AmountCredentialIssuerParameters = AmountCredentialIssuer.CredentialIssuerSecretKey.ComputeCredentialIssuerParameters();
            VsizeCredentialIssuerParameters  = VsizeCredentialIssuer.CredentialIssuerSecretKey.ComputeCredentialIssuerParameters();

            Id = CalculateHash();
        }
Exemple #3
0
    public Round(RoundParameters roundParameters)
    {
        RoundParameters = roundParameters;

        var allowedAmounts = new MoneyRange(roundParameters.MinRegistrableAmount, RoundParameters.MaxRegistrableAmount);
        var txParams       = new MultipartyTransactionParameters(roundParameters.FeeRate, roundParameters.CoordinationFeeRate, allowedAmounts, allowedAmounts, roundParameters.Network);

        CoinjoinState = new ConstructionState(txParams);

        InitialInputVsizeAllocation = CoinjoinState.Parameters.MaxTransactionSize - MultipartyTransactionParameters.SharedOverhead;
        MaxVsizeCredentialValue     = Math.Min(InitialInputVsizeAllocation / RoundParameters.MaxInputCountByRound, (int)ProtocolConstants.MaxVsizeCredentialValue);
        MaxVsizeAllocationPerAlice  = MaxVsizeCredentialValue;

        AmountCredentialIssuer           = new(new(RoundParameters.Random), RoundParameters.Random, MaxAmountCredentialValue);
        VsizeCredentialIssuer            = new(new(RoundParameters.Random), RoundParameters.Random, MaxVsizeCredentialValue);
        AmountCredentialIssuerParameters = AmountCredentialIssuer.CredentialIssuerSecretKey.ComputeCredentialIssuerParameters();
        VsizeCredentialIssuerParameters  = VsizeCredentialIssuer.CredentialIssuerSecretKey.ComputeCredentialIssuerParameters();

        InputRegistrationTimeFrame      = TimeFrame.Create(RoundParameters.StandardInputRegistrationTimeout).StartNow();
        ConnectionConfirmationTimeFrame = TimeFrame.Create(RoundParameters.ConnectionConfirmationTimeout);
        OutputRegistrationTimeFrame     = TimeFrame.Create(RoundParameters.OutputRegistrationTimeout);
        TransactionSigningTimeFrame     = TimeFrame.Create(RoundParameters.TransactionSigningTimeout);
    }