public void Initialize() { //byte[] hash = ServiceLocator.Current.GetInstance<IHashCalculationsRepository>().Create(Globals.DEFAULT_HASH).CalculateHash("ffff440000000000000000000000ff56614220131d2a562741432675d1cc32c9aad819f1eca40100ffff4500000000000000085c384c05bbf1b93754c5903014f9b9519f753f773b156ed7611dc5067bb82f00000000000000000100002c1130afeeab4855bc0224e5a7a4fd719d74407443b578789cc87f93a2ac350d093a5618c9e82dec81e38bb019e720295490b1d92f0870edc3b6516fe0bd99015f109903b082d45d58e4af08e637d17cac12b7f592367f4f2dc1378173f4d6f7".HexStringToByteArray()); //byte[] pow = ServiceLocator.Current.GetInstance<IHashCalculationsRepository>().Create(Globals.POW_TYPE).CalculateHash(hash); //BigInteger big = new BigInteger("05BED0C6BFC7ACAD4202A26EDFC83843B7745AE5CB8FA038B6815C7D5EFFBBFF".HexStringToByteArray()); //big = 0 - big; //uint nonce = 0; //big += nonce; //byte[] bigBytes = big.ToByteArray(); Channel syncChannel = new Channel("127.0.0.1", 5050, ChannelCredentials.Insecure); Channel transactionalChannel = new Channel("127.0.0.1", 5050, ChannelCredentials.Insecure); _syncManagerClient = new SyncManager.SyncManagerClient(syncChannel); _transactionalChainManager = new TransactionalChainManager.TransactionalChainManagerClient(transactionalChannel); }
public void Initialize(CancellationToken cancellationToken) { if (_isInitialized) { return; } lock (_sync) { if (_isInitialized) { return; } _logger.Info("Initialization Started"); try { _communicationService.Init(new Network.Communication.SocketSettings(_communicationConfiguration.MaxConnections, _communicationConfiguration.ReceiveBufferSize, _communicationConfiguration.ListeningPort, System.Net.Sockets.AddressFamily.InterNetwork)); if (_dataAccessService.GetLastSyncBlock(out ulong syncBlockHeight, out byte[] syncBlockHash)) { _lastSyncDescriptor = new Entities.SyncBlockDescriptor(syncBlockHeight, syncBlockHash); } else { _lastSyncDescriptor = new Entities.SyncBlockDescriptor(0, new byte[32]); } if (_dataAccessService.GetLastRegistryCombinedBlock(out ulong combinedBlockHeight, out byte[] combinedBlockContent)) { _lastCombinedBlockDescriptor = new RegistryCombinedBlockDescriptor(combinedBlockHeight, combinedBlockContent, _defaultHashCalculation.CalculateHash(combinedBlockContent)); } else { _lastCombinedBlockDescriptor = new RegistryCombinedBlockDescriptor(0, null, new byte[32]); } foreach (string nodeDescriptor in _synchronizerConfiguration.Nodes) { string[] pair = nodeDescriptor.Split(':'); byte[] keyBytes = pair[0].HexStringToByteArray(); IKey nodeKey = _identityKeyProvider.GetKey(keyBytes); IPAddress ipAddress = IPAddress.Parse(pair[1]); NodeAddress nodeAddress = new NodeAddress(nodeKey, ipAddress); _nodesResolutionService.UpdateSingleNode(nodeAddress); } IKey syncNodeKey = _identityKeyProvider.GetKey(_synchronizerConfiguration.SyncNodeKey.HexStringToByteArray()); _registryNodeKey = _identityKeyProvider.GetKey(_synchronizerConfiguration.RegistryNodeKey.HexStringToByteArray()); _storageNodeKey = _identityKeyProvider.GetKey(_synchronizerConfiguration.StorageNodeKey.HexStringToByteArray()); IPAddress syncNodeAddress = _nodesResolutionService.ResolveNodeAddress(syncNodeKey); IPAddress storageNodeAddress = _nodesResolutionService.ResolveNodeAddress(_storageNodeKey); Channel syncLayerChannel = new Channel(syncNodeAddress.ToString(), 5050, ChannelCredentials.Insecure); Channel storageLayerChannel = new Channel(storageNodeAddress.ToString(), 5050, ChannelCredentials.Insecure); _syncLayerSyncManagerClient = new SyncManager.SyncManagerClient(syncLayerChannel); _storageLayerSyncManagerClient = new TransactionalChainManager.TransactionalChainManagerClient(storageLayerChannel); _cancellationToken = cancellationToken; _isInitialized = true; _logger.Info($"Last Sync Block Height = {_lastSyncDescriptor.Height}; Last Registry Combined Block Height = {_lastCombinedBlockDescriptor.Height}"); } catch (Exception ex) { _logger.Error("Failure during initializtion", ex); } finally { _logger.Info("Initialization completed"); } } }
public override void Start() { string cmd = null; Channel channel = new Channel("127.0.0.1", 5050, ChannelCredentials.Insecure); SyncManager.SyncManagerClient syncManagerClient = new SyncManager.SyncManagerClient(channel); TransactionalChainManager.TransactionalChainManagerClient transactionalChainManagerClient = new TransactionalChainManager.TransactionalChainManagerClient(channel); TransactionalBlockEssense transactionalBlockEssense = transactionalChainManagerClient.GetLastTransactionalBlock( new TransactionalBlockRequest { PublicKey = ByteString.CopyFrom(_key.Value.ToArray()) }); byte[] hashPrev = transactionalBlockEssense.Hash.ToByteArray(); ulong blockHeight = transactionalBlockEssense.Height + 1; ulong uptodateFunds = transactionalBlockEssense.UpToDateFunds > 0 ? transactionalBlockEssense.UpToDateFunds : 100000; ulong tagId = 5005; byte[][] idCards = new byte[][] { GetComplementedAssetId(327483038), GetComplementedAssetId(327152054), GetComplementedAssetId(328051065), }; string[] assetInfos = new string[] { "Kirill Gandyl", "Elena Zaychikov", "Etel Gandyl" }; do { SyncBlockDescriptor lastSyncBlock = syncManagerClient.GetLastSyncBlock(new Empty()); byte[] syncHash = lastSyncBlock.Hash.ToByteArray(); uint nonce = 1111; byte[] powHash = GetPowHash(syncHash, nonce); byte[] targetAddress = new byte[32]; IssueAssetsBlock issueAssetsBlock = new IssueAssetsBlock { SyncBlockHeight = lastSyncBlock.Height, BlockHeight = blockHeight, Nonce = nonce, PowHash = powHash, HashPrev = hashPrev, TagId = tagId, IssuanceInfo = "Issue ID cards", IssuedAssetIds = idCards, IssuedAssetInfo = assetInfos }; ISerializer issueAssetsBlockSerializer = _signatureSupportSerializersFactory.Create(issueAssetsBlock); issueAssetsBlockSerializer.FillBodyAndRowBytes(); RegistryRegisterBlock transactionRegisterBlock = new RegistryRegisterBlock { SyncBlockHeight = lastSyncBlock.Height, BlockHeight = blockHeight, Nonce = nonce, PowHash = powHash, ReferencedPacketType = PacketType.Transactional, ReferencedBlockType = BlockTypes.Transaction_TransferFunds, ReferencedBodyHash = _hashCalculation.CalculateHash(issueAssetsBlock.RawData), ReferencedTarget = targetAddress }; ISerializer transactionRegisterBlockSerializer = _signatureSupportSerializersFactory.Create(transactionRegisterBlock); _log.Info($"Sending message: {transactionRegisterBlockSerializer.GetBytes().ToHexString()}"); _communicationService.PostMessage(_keyTarget, transactionRegisterBlockSerializer); _communicationService.PostMessage(_keyTarget, issueAssetsBlockSerializer); Console.WriteLine("Block sent. Press <Enter> for next or type 'exit' and press <Enter> for exit..."); cmd = Console.ReadLine(); blockHeight++; hashPrev = transactionRegisterBlock.ReferencedBodyHash; } while (!_cancellationToken.IsCancellationRequested && cmd != "exit"); }
public override void Start() { string cmd = null; Channel channel = new Channel("127.0.0.1", 5050, ChannelCredentials.Insecure); SyncManager.SyncManagerClient syncManagerClient = new SyncManager.SyncManagerClient(channel); TransactionalChainManager.TransactionalChainManagerClient transactionalChainManagerClient = new TransactionalChainManager.TransactionalChainManagerClient(channel); TransactionalBlockEssense transactionalBlockEssense = transactionalChainManagerClient.GetLastTransactionalBlock( new TransactionalBlockRequest { PublicKey = ByteString.CopyFrom(_key.Value.ToArray()) }); byte[] hashPrev = transactionalBlockEssense.Hash.ToByteArray(); ulong blockHeight = transactionalBlockEssense.Height + 1; ulong uptodateFunds = transactionalBlockEssense.UpToDateFunds > 0 ? transactionalBlockEssense.UpToDateFunds : 100000; do { SyncBlockDescriptor lastSyncBlock = syncManagerClient.GetLastSyncBlock(new Empty()); uptodateFunds -= 10; byte[] syncHash = lastSyncBlock.Hash.ToByteArray(); uint nonce = 1111; byte[] powHash = GetPowHash(syncHash, nonce); byte[] targetAddress = GetRandomTargetAddress(); TransferFundsBlock transferFundsBlock = new TransferFundsBlock { SyncBlockHeight = lastSyncBlock.Height, BlockHeight = blockHeight, Nonce = nonce, PowHash = powHash, HashPrev = hashPrev, TargetOriginalHash = targetAddress, UptodateFunds = uptodateFunds }; ISerializer transferFundsSerializer = _signatureSupportSerializersFactory.Create(transferFundsBlock); transferFundsSerializer.FillBodyAndRowBytes(); RegistryRegisterBlock transactionRegisterBlock = new RegistryRegisterBlock { SyncBlockHeight = lastSyncBlock.Height, BlockHeight = blockHeight, Nonce = nonce, PowHash = powHash, ReferencedPacketType = PacketType.Transactional, ReferencedBlockType = BlockTypes.Transaction_TransferFunds, ReferencedBodyHash = _hashCalculation.CalculateHash(transferFundsBlock.RawData), ReferencedTarget = targetAddress }; ISerializer transactionRegisterBlockSerializer = _signatureSupportSerializersFactory.Create(transactionRegisterBlock); _log.Info($"Sending message: {transactionRegisterBlockSerializer.GetBytes().ToHexString()}"); _communicationService.PostMessage(_keyTarget, transactionRegisterBlockSerializer); _communicationService.PostMessage(_keyTarget, transferFundsSerializer); Console.WriteLine("Block sent. Press <Enter> for next or type 'exit' and press <Enter> for exit..."); cmd = Console.ReadLine(); blockHeight++; hashPrev = transactionRegisterBlock.ReferencedBodyHash; } while (!_cancellationToken.IsCancellationRequested && cmd != "exit"); }