public JsonResult Transfer([FromBody] JObject jsonData) { return(DoWithRetry(GetRetryValueFromJson(jsonData), (retryCount) => { /** Get transfer data */ var toAddress = jsonData.GetValue("recipientAddress").Value <string>(); /** Get the type of currency */ var amount = jsonData.GetValue("amount").Value <decimal>(); var asset = jsonData.GetValue("asset").Value <string>(); /* Get owner data from private key */ var fromPrivateKey = jsonData.GetValue("ownerPrivateKeyHash").Value <string>(); var fromKeyPair = new KeyPair(LuxUtils.HexToBytes(fromPrivateKey)); try { var transactionResult = LuxApiFactory.GetLuxApi().SendAsset(fromKeyPair, toAddress, asset, amount); if (transactionResult != null) { dynamic result = new JObject(); result.result = transactionResult.ToString(); result.retries = retryCount; return Json(result); } } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); } return null; })); }
public JsonResult GenerateTo([FromBody] JObject jsonData) { return(DoWithRetry(GetRetryValueFromJson(jsonData), retryCount => { /** Get transfer data */ var contractScripHash = jsonData.GetValue("contractScriptHash").Value <string>(); var toAddress = jsonData.GetValue("recipientAddress").Value <string>(); var amount = jsonData.GetValue("amount").Value <double>(); Log.Debug($"GenerateTo called with recipient {toAddress} and value {amount}"); /* Get owner data from private key */ var fromPrivateKey = jsonData.GetValue("ownerPrivateKeyHash").Value <string>(); var fromKeyPair = new KeyPair(LuxUtils.HexToBytes(fromPrivateKey)); var token = new NeoFluxNEP5(LuxApiFactory.GetLuxApi(), contractScripHash, null, GetDecimalsValueFromJson(jsonData)); try { Log.Debug($"Running transaction for recipient {toAddress}"); var transactionResult = token.GenerateTo(fromKeyPair, toAddress, new BigInteger(amount)); if (transactionResult != null) { dynamic result = new JObject(); result.result = transactionResult.ToString(); result.retries = retryCount; Log.Debug($"Sent {amount} to {toAddress}"); return Json(result); } } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); } return null; })); }
public JsonResult GetBestBlock([FromBody] JObject jsonData) { try { var bestBlockIndex = LuxApiFactory.GetLuxApi().GetBlockHeight() - 1; var blockResult = LuxApiFactory.GetLuxApi().GetBlock(bestBlockIndex); if (blockResult != null) { dynamic result = new JObject(); result.version = blockResult.Version; result.height = blockResult.Height; result.merkleRoot = blockResult.MerkleRoot; result.timestamp = blockResult.Timestamp; result.timestamp = blockResult.Timestamp; result.previousHash = blockResult.PreviousHash.ToString(); dynamic transactionIds = new JArray(); foreach (var transaction in blockResult.transactions) { string key = transaction.Hash.ToString(); transactionIds.Add(key); } result.transactions = transactionIds; return(Json(result)); } return(null); } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return(JsonError($"Unable to get block information, {e.Message}")); } }
public JsonResult GetTransferTransactionInfo([FromBody] JObject jsonData) { return(DoWithRetry(GetRetryValueFromJson(jsonData), retryCount => { try { var txId = jsonData.GetValue("txId").Value <string>(); bool findBlock = jsonData.ContainsKey("findBlock") && jsonData.GetValue("findBlock").Value <bool>(); LuxApiExtensions api = new LuxApiExtensions((NeoRPC)LuxApiFactory.GetLuxApi()); RawTransaction transaction = api.GetTransferTransaction(txId, findBlock); if (transaction != null) { dynamic result = new JObject(); result.txId = transaction.TxID; result.block = transaction.Block; result.asset = transaction.Contract; result.addrFrom = transaction.From; result.addrTo = transaction.To; result.amount = transaction.Amount; return JsonResultObject(result); } } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return JsonError($"Unable to get transaction information, {e.Message}"); } return null; })); }
public JsonResult TotalSupply([FromBody] JObject jsonData) { var contractScripHash = jsonData.GetValue("contractScriptHash").Value <string>(); var token = new NeoFluxNEP5(LuxApiFactory.GetLuxApi(), contractScripHash, null, GetDecimalsValueFromJson(jsonData)); return(JsonResultObject((long)token.TotalSupply)); }
public JsonResult GetBlockCount([FromBody] JObject jsonData) { try { var bestBlockIndex = LuxApiFactory.GetLuxApi().GetBlockHeight(); return(JsonResultObject(bestBlockIndex)); } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return(JsonError($"Unable to get block information, {e.Message}")); } }
public JsonResult GetTransaction([FromBody] JObject jsonData) { try { var txId = jsonData.GetValue("txId").Value <string>(); var transactionResult = LuxApiFactory.GetLuxApi().GetTransaction(txId); if (transactionResult != null) { dynamic result = new JObject(); result.hash = transactionResult.Hash.ToString(); result.type = transactionResult.type; result.version = transactionResult.version; result.block = transactionResult.block; dynamic inputs = new JArray(); foreach (var input in transactionResult.inputs) { dynamic inputJson = new JObject(); inputJson.prevHash = input.prevHash.ToString(); inputJson.prevIndex = input.prevIndex; inputs.Add(inputJson); } result.inputs = inputs; dynamic outputs = new JArray(); foreach (var output in transactionResult.outputs) { dynamic outputJson = new JObject(); outputJson.asset = output.assetID; outputJson.address = output.scriptHash.ToAddress(); outputJson.value = output.value; outputs.Add(outputJson); } result.outputs = outputs; return(Json(result)); } return(null); } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return(JsonError($"Unable to get transaction information, {e.Message}")); } }
public JsonResult State([FromBody] JObject jsonData) { try { var address = jsonData.GetValue("walletAddress").Value <string>(); var assetBalances = LuxApiFactory.GetLuxApi().GetAssetBalancesOf(address); dynamic result = new JObject(); foreach (var asset in assetBalances.Keys) { result.Add(asset, assetBalances[asset]); } return(Json(result)); } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return(JsonError($"Unable to get wallet state information, {e.Message}")); } }
public JsonResult BalanceOf([FromBody] JObject jsonData) { return(DoWithRetry(GetRetryValueFromJson(jsonData), retryCount => { try { var contractScripHash = jsonData.GetValue("contractScriptHash").Value <string>(); var targetAddress = jsonData.GetValue("targetAddress").Value <string>(); var token = new NeoFluxNEP5(LuxApiFactory.GetLuxApi(), contractScripHash, null, GetDecimalsValueFromJson(jsonData)); return JsonResultObject(token.BalanceForAddress(targetAddress)); } catch (Exception e) { Console.WriteLine(e); } return null; })); }
public JsonResult Info([FromBody] JObject jsonData) { var contractScripHash = jsonData.GetValue("contractScriptHash").Value <string>(); try { var token = new NeoFluxNEP5(LuxApiFactory.GetLuxApi(), contractScripHash, null, GetDecimalsValueFromJson(jsonData)); dynamic result = new JObject(); result.symbol = token.Symbol; result.name = token.Name; result.decimals = token.Decimals; result.totalSupply = token.TotalSupply; return(Json(result)); } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return(JsonError($"Unable to make transaction, {e.Message}")); } }
public JsonResult GetBlock([FromBody] JObject jsonData) { try { var blockIndex = jsonData.GetValue("blockIndex").Value <uint>(); var blockResult = LuxApiFactory.GetLuxApi().GetBlock(blockIndex); var transferOnly = jsonData.ContainsKey("transferOnly") && jsonData.GetValue("transferOnly").Value <bool>(); if (blockResult != null) { dynamic result = new JObject(); result.version = blockResult.Version; result.height = blockResult.Height; result.merkleRoot = blockResult.MerkleRoot; result.timestamp = blockResult.Timestamp; result.timestamp = blockResult.Timestamp; result.previousHash = blockResult.PreviousHash.ToString(); dynamic transactionIds = new JArray(); foreach (var transaction in blockResult.transactions) { if (transferOnly && !TransferTransactionTypes.Contains(transaction.type)) { continue; } string key = transaction.Hash.ToString(); transactionIds.Add(key); } result.transactions = transactionIds; return(Json(result)); } return(null); } catch (Exception e) { Log.Error(e.Message + "\n" + e.StackTrace); return(JsonError($"Unable to get block information, {e.Message}")); } }