コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }