コード例 #1
0
        protected override void InitializeInner()
        {
            IEnumerable <BlockLattice.Core.DataModel.Nodes.Node> registryNodes = _nodesDataService.GetAll().Where(n => n.NodeRole == BlockLattice.Core.DataModel.Nodes.NodeRole.TransactionsRegistrationLayer);

            foreach (var node in registryNodes)
            {
                _registryGroupState.AddNeighbor(node.Key);
            }

            IEnumerable <BlockLattice.Core.DataModel.Nodes.Node> syncNodes = _nodesDataService.GetAll().Where(n => n.NodeRole == BlockLattice.Core.DataModel.Nodes.NodeRole.SynchronizationLayer);

            _registryGroupState.SyncLayerNode = syncNodes.FirstOrDefault()?.Key;
        }
コード例 #2
0
        protected override void InitializeInner()
        {
            IEnumerable <Blockchain.Core.DataModel.Nodes.Node> syncNodes = _nodesDataService.GetAll().Where(n => n.NodeRole == Blockchain.Core.DataModel.Nodes.NodeRole.SynchronizationLayer);

            foreach (var node in syncNodes)
            {
                _synchronizationGroupState.AddNeighbor(node.Key);
            }

            IEnumerable <Blockchain.Core.DataModel.Nodes.Node> registryNodes = _nodesDataService.GetAll().Where(n => n.NodeRole == Blockchain.Core.DataModel.Nodes.NodeRole.TransactionsRegistrationLayer);

            foreach (var node in registryNodes)
            {
                _syncRegistryNeighborhoodState.AddNeighbor(node.Key);
            }
        }
コード例 #3
0
        protected override void InitializeInner()
        {
            BlockLattice.Core.DataModel.Nodes.Node node = _nodesDataService.GetAll().FirstOrDefault();

            if (node != null)
            {
                _keyTarget = node.Key;
            }
            else
            {
                byte[] seedTarget     = GetRandomSeed();
                byte[] targetKeyBytes = Ed25519.PublicKeyFromSeed(seedTarget);
                _keyTarget = _identityKeyProvider.GetKey(targetKeyBytes);

                node = new BlockLattice.Core.DataModel.Nodes.Node {
                    Key = _keyTarget, IPAddress = System.Net.IPAddress.Parse("127.0.0.1")
                };

                _nodesDataService.Add(node);
            }

            ClientTcpCommunicationConfiguration clientTcpCommunicationConfiguration = _configurationService.Get <ClientTcpCommunicationConfiguration>();

            _communicationService.Init(new SocketSettings(clientTcpCommunicationConfiguration.MaxConnections, clientTcpCommunicationConfiguration.ReceiveBufferSize, clientTcpCommunicationConfiguration.ListeningPort, System.Net.Sockets.AddressFamily.InterNetwork));
            _communicationService.Start();

            _key = _cryptoService.PublicKey;
        }
コード例 #4
0
        protected override void InitializeInner()
        {
            IEnumerable <BlockLattice.Core.DataModel.Nodes.Node> nodes = _nodesDataService.GetAll();

            foreach (var node in nodes)
            {
                _neighborhoodState.AddNeighbor(node.Key);
            }
        }
コード例 #5
0
        public void Initialize()
        {
            _topNodeKeys.AddRange(_nodesDataService.GetAll().Where(n => n.NodeRole == NodeRole.SynchronizationLayer).Take(21).Select(n => n.Key));
            ////TODO: need to take all last blocks where DPOS delegation is specified
            //IEnumerable<TransactionalGenesisBlock> genesisBlocks = _chainDataService.GetAllLastBlocksByType<TransactionalGenesisBlock>();
            ////IEnumerable<TransactionalBlockBaseV1> transactionalBlocks = _chainDataService.GetAllLastBlocksByType<TransactionalBlockBaseV1>();

            //_dposDescriptors = genesisBlocks.ToDictionary(g => g.Signer, g => new DposDescriptor { SourceIdentity = g.Signer, TargetIdentity = g.NodeDpos, Votes = 1 });
            //_votesForCandidates = _dposDescriptors.GroupBy(d => d.Value.TargetIdentity).ToDictionary(g => g.Key, g => g.Select(v => v.Value).ToList());
            ////genesisBlocks.GroupBy(b => b.NodeDpos).ToDictionary(g => g.Key, g => new DposDescriptor {SourceIdentity = g.Key, TargetIdentity =  g.Sum(b => transactionalBlocks.FirstOrDefault(t => t.Key == b.Key)?.UptodateFunds??0)
        }
コード例 #6
0
        public void Initialize()
        {
            IEnumerable <Node> nodes = _nodesDataService.GetAll();

            foreach (var node in nodes)
            {
                _nodeAddresses.AddOrUpdate(node.Key, new NodeAddress(node.Key, node.IPAddress), (k, v) => v);
                if (node.NodeRole == NodeRole.StorageLayer)
                {
                    _storageLayerNodeAddresses.AddOrUpdate(node.Key, new NodeAddress(node.Key, node.IPAddress), (k, v) => v);
                }
            }
        }
コード例 #7
0
        public void UpdateTransactionalShards()
        {
            lock (_sync)
            {
                IEnumerable <Node> nodes = _nodesDataService.GetAll().Where(n => n.NodeRole == NodeRole.TransactionsRegistrationLayer);

                List <ShardDescriptor> shardDescriptors = new List <ShardDescriptor>();
                ShardDescriptor        shardDescriptor  = new ShardDescriptor();
                shardDescriptors.Add(shardDescriptor);

                foreach (var node in nodes)
                {
                    //TODO: apply usage of _synchronizationContext.LastBlockDescriptor for building shards
                    shardDescriptor.Nodes.Add(node.Key);
                }

                _shardDescriptors = new ReadOnlyCollection <ShardDescriptor>(shardDescriptors);
            }
        }