IEnumerator ProcessNewBlock(BigInteger height) { var getBlockRequest = new EthGetBlockWithTransactionsByNumberUnityRequest(nodeAddress); yield return(getBlockRequest.SendRequest(new Nethereum.Hex.HexTypes.HexBigInteger(height))); if (getBlockRequest.Result == null || getBlockRequest.Exception != null) { yield break; } foreach (var tx in getBlockRequest.Result.Transactions) { if (tx.To == null || tx.From == null) { continue; } OnNewTx.Invoke(tx.From, tx.To); yield return(null); } currentHeight++; }
private static IEnumerator GetLatestBlockCoroutine(UnityAction <BlockWithTransactions> callback) { var blockNumberRequest = new EthBlockNumberUnityRequest(WalletSettings.current.networkUrl); yield return(blockNumberRequest.SendRequest()); if (blockNumberRequest.Exception == null) { var getBlockByNumberRequest = new EthGetBlockWithTransactionsByNumberUnityRequest(WalletSettings.current.networkUrl); yield return(getBlockByNumberRequest.SendRequest(new Nethereum.Hex.HexTypes.HexBigInteger(blockNumberRequest.Result.Value))); if (getBlockByNumberRequest.Exception == null) { callback(getBlockByNumberRequest.Result); } else { throw new System.InvalidOperationException("Get block request failed, exception=" + getBlockByNumberRequest.Exception); } } else { throw new System.InvalidOperationException("Block number request failed, exception=" + blockNumberRequest.Exception); } }
private IEnumerator GetBlockWithTransactionsByNumberUnityRequest(BigInteger number) { var request = new EthGetBlockWithTransactionsByNumberUnityRequest(Wallet._url); var _number = new Nethereum.Hex.HexTypes.HexBigInteger(number); yield return(request.SendRequest(_number)); var transactions = request.Result.Transactions; }
private static IEnumerator GetLatestBlockCoroutine(int blockNumber) { var getBlockByNumberRequest = new EthGetBlockWithTransactionsByNumberUnityRequest(WalletSettings.current.networkUrl); yield return(getBlockByNumberRequest.SendRequest(new HexBigInteger(blockNumber))); if (getBlockByNumberRequest.Exception == null) { if (WalletSettings.current.debugLog) { Debug.LogFormat("WalletManager:GetLatestBlock - Latest block #{0}, miner={1}, hash={2}", blockNumber, getBlockByNumberRequest.Result.Miner, getBlockByNumberRequest.Result.BlockHash); } LatestBlockUpdatedEvent?.Invoke(getBlockByNumberRequest.Result); } else { throw new System.InvalidOperationException("Block number request failed, exception=" + getBlockByNumberRequest.Exception); } }
private static IEnumerator GetBlockWithTransactionsByNumberUnityRequest(BigInteger number, Action callBack) { var request = new EthGetBlockWithTransactionsByNumberUnityRequest(Wallet._url); var _number = new Nethereum.Hex.HexTypes.HexBigInteger(number); yield return(request.SendRequest(_number)); if (request.Result != null) { Nethereum.RPC.Eth.DTOs.Transaction[] transactions = request.Result.Transactions; lock (TransactionsList){ TransactionsList.Add(transactions); } } blockIndex += 1; //startBlockNumber += 1; callBack(); }