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++;
    }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
    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;
    }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
    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();
    }