public async Task <Transaction> GenerateTransferTransactionAsync() { var chain = await BlockchainService.GetChainAsync(); var tokenContractAddress = await _smartContractAddressService.GetAddressByContractNameAsync(new ChainContext { BlockHash = chain.BestChainHash, BlockHeight = chain.BestChainHeight }, TokenSmartContractAddressNameProvider.StringName); var getBalanceInput = new GetBalanceInput { Owner = Address.FromPublicKey(CryptoHelper.GenerateKeyPair().PublicKey), Symbol = _nativeSymbol }; var transaction = new Transaction { From = await _accountService.GetAccountAsync(), To = tokenContractAddress, MethodName = nameof(TokenContractContainer.TokenContractStub.GetBalance), Params = getBalanceInput.ToByteString(), RefBlockNumber = chain.BestChainHeight, RefBlockPrefix = BlockHelper.GetRefBlockPrefix(chain.BestChainHash) }; var sig = await _accountService.SignAsync(transaction.GetHash().ToByteArray()); transaction.Signature = ByteString.CopyFrom(sig); return(transaction); }