async Task OnBalance(ClientBalanceMessage message, ClientConnection connection) { var coreAccount = _chainManager.CoreChain.GetCoreAccount(connection.ClientInfo.AccountId, false); if (coreAccount != null) { var token = message.SignedToken.GetSignedData(coreAccount.AccountKey); if (token != null && token.SequenceEqual(connection.Token)) { if (message.RequestCode != 0) { await connection.Send(new ClientBalanceResponseMessage(message.RequestCode, coreAccount.HeleusCoins) { SignKey = _configuration.LocaleNodePrivateKey }); } return; } } await connection.Close(DisconnectReasons.ProtocolError); }
public async Task <long> CheckBalance() { if (CurrentCoreAccount == null) { Log.Trace($"Transfer coins failed, no core account set.", this); return(-1); } await Connect(CurrentCoreAccount.AccountId); var token = ConnectionToken; if (token != null) { var m = new ClientBalanceMessage(new SignedData(token, CurrentCoreAccount.DecryptedKey)); var sent = await SendMessage(CurrentCoreAccount.AccountId, m); if (sent && await WaitResponse(m) is ClientBalanceResponseMessage balanceReponse) { return(balanceReponse.Balance); } } return(-1); }