private void SetUp(int n, int f) { _deliveryService = new DeliveryService(); _broadcasts = new IConsensusProtocol[n]; _broadcasters = new IConsensusBroadcaster[n]; _resultInterceptors = new ProtocolInvoker <ReliableBroadcastId, EncryptedShare> [n]; _wallets = new IPrivateConsensusKeySet[n]; _publicKeys = new PublicConsensusKeySet( n, f, null !, null !, Enumerable.Range(0, n) .Select(i => new ECDSAPublicKey { Buffer = ByteString.CopyFrom(i.ToBytes().ToArray()) }) ); for (var i = 0; i < n; ++i) { _wallets[i] = TestUtils.EmptyWallet(n, f); _broadcasters[i] = new BroadcastSimulator(i, _publicKeys, _wallets[i], _deliveryService, false); _resultInterceptors[i] = new ProtocolInvoker <ReliableBroadcastId, EncryptedShare>(); } var bytes = Enumerable.Range(0, 32) .Select(x => (byte)(x * x * 0)) .ToArray(); _testShare = new EncryptedShare(G1.Generator, bytes, G2.Generator, Sender); }
private void SetUpAllHonest(int n, int f) { _deliveryService = new DeliveryService(); _broadcasts = new IConsensusProtocol[n]; _broadcasters = new IConsensusBroadcaster[n]; _resultInterceptors = new ProtocolInvoker <BinaryAgreementId, bool> [n]; _privateKeys = new IPrivateConsensusKeySet[n]; var keygen = new TrustedKeyGen(n, f); var shares = keygen.GetPrivateShares().ToArray(); var pubKeys = new PublicKeySet(shares.Select(share => share.GetPublicKeyShare()), f); _publicKeys = new PublicConsensusKeySet(n, f, null !, pubKeys, Enumerable.Empty <ECDSAPublicKey>()); for (var i = 0; i < n; ++i) { _resultInterceptors[i] = new ProtocolInvoker <BinaryAgreementId, bool>(); _privateKeys[i] = new PrivateConsensusKeySet(null !, null !, shares[i]); _broadcasters[i] = new BroadcastSimulator(i, _publicKeys, _privateKeys[i], _deliveryService, true); } for (uint i = 0; i < n; ++i) { _broadcasts[i] = new BinaryAgreement(new BinaryAgreementId(0, 0), _publicKeys, _broadcasters[i]); _broadcasters[i].RegisterProtocols(new[] { _broadcasts[i], _resultInterceptors[i] }); } }
private void SetUpAllHonest(int n, int f) { _deliveryService = new DeliveryService(); _acs = new IConsensusProtocol[n]; _broadcasters = new BroadcastSimulator[n]; _resultInterceptors = new ProtocolInvoker <CommonSubsetId, ISet <EncryptedShare> > [n]; _privateKeys = new IPrivateConsensusKeySet[n]; var keygen = new TrustedKeyGen(n, f); var shares = keygen.GetPrivateShares().ToArray(); var pubKeys = new PublicKeySet(shares.Select(share => share.GetPublicKeyShare()), f); _publicKeys = new PublicConsensusKeySet( n, f, null !, pubKeys, Enumerable.Range(0, n) .Select(i => new ECDSAPublicKey { Buffer = ByteString.CopyFrom(i.ToBytes().ToArray()) }) ); for (var i = 0; i < n; ++i) { _resultInterceptors[i] = new ProtocolInvoker <CommonSubsetId, ISet <EncryptedShare> >(); _privateKeys[i] = new PrivateConsensusKeySet(null !, null !, shares[i]); _broadcasters[i] = new BroadcastSimulator(i, _publicKeys, _privateKeys[i], _deliveryService, false); } for (uint i = 0; i < n; ++i) { _acs[i] = new CommonSubset(new CommonSubsetId(0), _publicKeys, _broadcasters[i]); _broadcasters[i].RegisterProtocols(new[] { _acs[i], _resultInterceptors[i] }); } }
public void SetUp(int n, int f) { _deliveryService = new DeliveryService(); _broadcasts = new IConsensusProtocol[n]; _broadcasters = new IConsensusBroadcaster[n]; _resultInterceptors = new ProtocolInvoker <HoneyBadgerId, ISet <IRawShare> > [n]; var keygen = new TrustedKeyGen(n, f); var shares = keygen.GetPrivateShares().ToArray(); var pubKeys = new PublicKeySet(shares.Select(share => share.GetPublicKeyShare()), f); var tpkeKeygen = new Crypto.TPKE.TrustedKeyGen(n, f); var ecdsaKeys = Enumerable.Range(0, n) .Select(i => Crypto.GenerateRandomBytes(32)) .Select(x => x.ToPrivateKey()) .Select(k => new EcdsaKeyPair(k)) .ToArray(); _publicKeys = new PublicConsensusKeySet(n, f, tpkeKeygen.GetPubKey(), pubKeys, ecdsaKeys.Select(k => k.PublicKey)); _privateKeys = new IPrivateConsensusKeySet[n]; for (var i = 0; i < n; ++i) { _resultInterceptors[i] = new ProtocolInvoker <HoneyBadgerId, ISet <IRawShare> >(); _privateKeys[i] = new PrivateConsensusKeySet(ecdsaKeys[i], tpkeKeygen.GetPrivKey(i), shares[i]); _broadcasters[i] = new BroadcastSimulator(i, _publicKeys, _privateKeys[i], _deliveryService, true); } }
public BinaryAgreement( BinaryAgreementId agreementId, IPublicConsensusKeySet wallet, IConsensusBroadcaster broadcaster) : base(wallet, agreementId, broadcaster) { _agreementId = agreementId; _requested = ResultStatus.NotRequested; _currentEpoch = 0; _resultEpoch = 0; _wasRepeat = false; }
public RootProtocol(RootProtocolId id, IPublicConsensusKeySet wallet, ECDSAPrivateKey privateKey, IConsensusBroadcaster broadcaster, IValidatorAttendanceRepository validatorAttendanceRepository, ulong cycleDuration, bool useNewChainId) : base(wallet, id, broadcaster) { _keyPair = new EcdsaKeyPair(privateKey); _rootId = id; _validatorAttendanceRepository = validatorAttendanceRepository; _cycleDuration = cycleDuration; _useNewChainId = useNewChainId; }
public CommonSubset( CommonSubsetId commonSubsetId, IPublicConsensusKeySet wallet, IConsensusBroadcaster broadcaster ) : base(wallet, commonSubsetId, broadcaster) { _commonSubsetId = commonSubsetId; _binaryAgreementInput = new bool?[N]; _binaryAgreementResult = new bool?[N]; _reliableBroadcastResult = new EncryptedShare[N]; _result = null; }
public CommonCoin( CoinId coinId, IPublicConsensusKeySet wallet, PrivateKeyShare privateKeyShare, IConsensusBroadcaster broadcaster ) : base(wallet, coinId, broadcaster) { _coinId = coinId ?? throw new ArgumentNullException(nameof(coinId)); _thresholdSigner = new ThresholdSigner( _coinId.ToBytes(), privateKeyShare, wallet.ThresholdSignaturePublicKeySet ); _result = null; }
public BroadcastSimulator( int sender, IPublicConsensusKeySet wallet, IPrivateConsensusKeySet privateKeys, DeliveryService deliveryService, bool mixMessages ) { _sender = sender; _deliveryService = deliveryService; _deliveryService.AddPlayer(GetMyId(), this); _wallet = wallet; _privateKeys = privateKeys; _silenced = new HashSet <int>(); }
protected AbstractProtocol( IPublicConsensusKeySet wallet, IProtocolIdentifier id, IConsensusBroadcaster broadcaster ) { _thread = new Thread(Start) { IsBackground = true }; _thread.Start(); Broadcaster = broadcaster; Id = id; Wallet = wallet; }
public ReliableBroadcast( ReliableBroadcastId broadcastId, IPublicConsensusKeySet wallet, IConsensusBroadcaster broadcaster) : base(wallet, broadcastId, broadcaster) { _broadcastId = broadcastId; _echoMessages = new ECHOMessage?[N]; _readyMessages = new ReadyMessage?[N]; _sentValMessage = new bool[N]; _requested = ResultStatus.NotRequested; _merkleTreeSize = N; while ((_merkleTreeSize & (_merkleTreeSize - 1)) != 0) { _merkleTreeSize++; // increment while not power of two } }
private void SetUp(int n, int f) { _deliveryService = new DeliveryService(); _broadcasts = new IConsensusProtocol[n]; _broadcasters = new IConsensusBroadcaster[n]; _resultInterceptors = new ProtocolInvoker <BinaryBroadcastId, BoolSet> [n]; _privateKeys = new IPrivateConsensusKeySet[n]; _publicKeys = new PublicConsensusKeySet(n, f, null !, null !, Enumerable.Empty <ECDSAPublicKey>()); for (var i = 0; i < n; ++i) { _resultInterceptors[i] = new ProtocolInvoker <BinaryBroadcastId, BoolSet>(); _privateKeys[i] = TestUtils.EmptyWallet(n, f); _broadcasters[i] = new BroadcastSimulator(i, _publicKeys, _privateKeys[i], _deliveryService, false); } }
public HoneyBadger(HoneyBadgerId honeyBadgerId, IPublicConsensusKeySet wallet, PrivateKey privateKey, IConsensusBroadcaster broadcaster) : base(wallet, honeyBadgerId, broadcaster) { _honeyBadgerId = honeyBadgerId; _privateKey = privateKey; _receivedShares = new EncryptedShare[N]; _decryptedShares = new ISet <PartiallyDecryptedShare> [N]; for (var i = 0; i < N; ++i) { _decryptedShares[i] = new HashSet <PartiallyDecryptedShare>(); } _taken = new bool[N]; _shares = new IRawShare[N]; _requested = ResultStatus.NotRequested; }
public BinaryBroadcast( BinaryBroadcastId broadcastId, IPublicConsensusKeySet wallet, IConsensusBroadcaster broadcaster) : base(wallet, broadcastId, broadcaster) { _broadcastId = broadcastId; _requested = ResultStatus.NotRequested; _binValues = new BoolSet(); _receivedValues = new BoolSet[N]; _playerSentAux = new bool[N]; _validatorSentConf = new bool[N]; for (var i = 0; i < N; ++i) { _receivedValues[i] = new BoolSet(); } _receivedCount = new int[2]; _receivedAux = new int[2]; _wasBvalBroadcasted = new bool[2]; _confReceived = new List <BoolSet>(); _result = null; _confSent = false; }
public void SetUp(int n, int f) { var keygen = new TrustedKeyGen(n, f); var shares = keygen.GetPrivateShares().ToArray(); var pubKeys = new PublicKeySet(shares.Select(share => share.GetPublicKeyShare()), f); _deliveryService = new DeliveryService(); _coins = new IConsensusProtocol[n]; _broadcasters = new IConsensusBroadcaster[n]; _resultInterceptors = new ProtocolInvoker <CoinId, CoinResult> [n]; _wallets = new IPrivateConsensusKeySet[n]; _publicKeys = new PublicConsensusKeySet(n, f, null !, pubKeys, Enumerable.Empty <ECDSAPublicKey>()); for (var i = 0; i < n; ++i) { _resultInterceptors[i] = new ProtocolInvoker <CoinId, CoinResult>(); _wallets[i] = new PrivateConsensusKeySet(null !, null !, shares[i]); _broadcasters[i] = new BroadcastSimulator(i, _publicKeys, _wallets[i], _deliveryService, false); _coins[i] = new CommonCoin( new CoinId(0, 0, 0), _publicKeys, shares[i], _broadcasters[i] ); _broadcasters[i].RegisterProtocols(new[] { _coins[i], _resultInterceptors[i] }); } }
public void SetValidatorKeySet(IPublicConsensusKeySet keySet) { _validators = keySet; _myIdx = _validators.GetValidatorIndex(_wallet.EcdsaKeyPair.PublicKey); }