예제 #1
0
파일: TestEth.cs 프로젝트: merlox/roshambo
    IEnumerator ConnectToEth()
    {
        var blockNumberRequest = new EthBlockNumberUnityRequest("https://rinkeby.infura.io");

        yield return(blockNumberRequest.SendRequest());

        if (blockNumberRequest.Exception == null)
        {
            var blockNumber = blockNumberRequest.Result.Value;
            Debug.Log("Block: " + blockNumber.ToString());
        }
        else
        {
            Debug.Log(blockNumberRequest.Exception.Message);
            yield break;
        }
        PersonalNewAccountUnityRequest req = new PersonalNewAccountUnityRequest("https://rinkeby.infura.io");

        yield return(req.SendRequest("testpass"));

        var acc = req.Result;

        //var contract = new Contract(null, ABI, contractAddress);
        Debug.Log("New account: " + acc);
    }
예제 #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);
            }
        }
    public IEnumerator BlockNumber()
    {
        EthBlockNumberUnityRequest req = new EthBlockNumberUnityRequest(m_endpoint);

        yield return(req.SendRequest());

        Debug.Log("block number " + req.Result);
    }
예제 #4
0
    private IEnumerator GetBlockNumber()
    {
        string url = "https://mainnet.infura.io/v3/9fe4e5215d2d43e8b756c0ab71ceb7fe";
        var    blockNumberRequest = new EthBlockNumberUnityRequest(url);

        yield return(blockNumberRequest.SendRequest());

        print(blockNumberRequest.Result.Value);
    }
예제 #5
0
    public IEnumerator GetBlockNumber()
    {
        Url = InputUrl.text;

        var blockNumberRequest = new EthBlockNumberUnityRequest(Url);

        yield return(blockNumberRequest.SendRequest());

        ResultBlockNumber.text = blockNumberRequest.Result.Value.ToString();
    }
예제 #6
0
    public IEnumerator getBlockNumber()
    {
        var blockNumberRequest = new EthBlockNumberUnityRequest(url);

        yield return(blockNumberRequest.SendRequest());

        if (blockNumberRequest.Exception == null)
        {
            var blockNumber = blockNumberRequest.Result.Value;
            Debug.Log("Block: " + blockNumber.ToString());
        }
    }
예제 #7
0
    IEnumerator Init()
    {
        var blockNbRequest = new EthBlockNumberUnityRequest(nodeAddress);

        yield return(blockNbRequest.SendRequest());

        currentHeight = blockNbRequest.Result.Value - initalNbNodes;

        listening          = true;
        listeningCoroutine = ListenForNewBlock();

        StartCoroutine(listeningCoroutine);
    }
예제 #8
0
파일: GetBlock.cs 프로젝트: ana0/clickmine
    public IEnumerator CheckBlockNumber()
    {
        while (true)
        {
            yield return(new WaitForSeconds(2));

            var blockNumberRequest = new EthBlockNumberUnityRequest("https://mainnet.infura.io");
            yield return(blockNumberRequest.SendRequest());

            if (blockNumberRequest.Exception == null)
            {
                Debug.Log(blockNumberRequest.Result.Value.ToString());
            }
        }
    }
예제 #9
0
    IEnumerator ListenForNewBlock()
    {
        while (listening)
        {
            var blockNbRequest = new EthBlockNumberUnityRequest(nodeAddress);
            yield return(blockNbRequest.SendRequest());

            while (blockNbRequest.Result.Value > currentHeight)
            {
                yield return(StartCoroutine(ProcessNewBlock(currentHeight)));
            }

            yield return(new WaitForSeconds(20));
        }
    }
예제 #10
0
        private static IEnumerator GetBlockNumberCoroutine(UnityAction <int> callback)
        {
            var blockNumberRequest = new EthBlockNumberUnityRequest(WalletSettings.current.networkUrl);

            yield return(blockNumberRequest.SendRequest());

            if (blockNumberRequest.Exception == null)
            {
                callback((int)blockNumberRequest.Result.Value);
            }
            else
            {
                throw new System.InvalidOperationException("Block number request failed, exception=" + blockNumberRequest.Exception);
            }
        }
예제 #11
0
    public IEnumerator CheckBlockNumber()
    {
        var wait = 1;

        while (true)
        {
            yield return(new WaitForSeconds(wait));

            var blockNumberRequest = new EthBlockNumberUnityRequest("https://testnet.tomochain.com");
            yield return(blockNumberRequest.SendRequest());

            if (blockNumberRequest.Exception == null)
            {
                var blockNumber = blockNumberRequest.Result.Value;
                blockNumberText.text = "Block: " + blockNumber.ToString();
            }
        }
    }
예제 #12
0
    public IEnumerator CheckBlockNumber()
    {
        var wait = 1;

        while (true)
        {
            yield return(new WaitForSeconds(wait));

            wait = 10;
            var blockNumberRequest = new EthBlockNumberUnityRequest("https://rinkeby.infura.io/v3/7238211010344719ad14a89db874158c");
            yield return(blockNumberRequest.SendRequest());

            if (blockNumberRequest.Exception == null)
            {
                var blockNumber = blockNumberRequest.Result.Value;
                blockNumberText.text = "Block: " + blockNumber.ToString();
            }
        }
    }
예제 #13
0
        public IEnumerator CheckBlockNumber()
        {
            var wait = 1;

            while (true)
            {
                yield return(new WaitForSeconds(wait));

                wait = 5;
                var blockNumberRequest = new EthBlockNumberUnityRequest(endpoint);
                yield return(blockNumberRequest.SendRequest());

                if (blockNumberRequest.Exception == null)
                {
                    var blockNumber = blockNumberRequest.Result.Value;
                    blockNumberText = "Block: " + blockNumber.ToString();
                }
            }
        }
예제 #14
0
        private static IEnumerator WatchNewBlockCoroutine()
        {
            // Get block number every 5 seconds
            var wait = new WaitForSeconds(5);

            while (true)
            {
                var blockNumberRequest = new EthBlockNumberUnityRequest(WalletSettings.current.networkUrl);
                yield return(blockNumberRequest.SendRequest());

                if (blockNumberRequest.Exception == null)
                {
                    int blockNumber = (int)blockNumberRequest.Result.Value;

                    if (blockNumber > _lastCheckedBlockNumber)
                    {
                        if (WalletSettings.current.debugLog)
                        {
                            Debug.LogFormat("WalletManager:WatchNewBlock - block number updated = {1}", blockNumber);
                        }

                        if (blockNumber - _lastCheckedBlockNumber < 50)                         // If more than 50 blocks behind, just jump to the latest block
                        {
                            for (int i = _lastCheckedBlockNumber + 1; i <= blockNumber; i++)
                            {
                                BlockNumberUpdatedEvent?.Invoke(blockNumber);
                                CoroutineManager.Start(GetLatestBlockCoroutine(i));
                                yield return(new WaitForSeconds(1));
                            }
                        }
                        _lastCheckedBlockNumber = blockNumber;
                    }
                }
                else
                {
                    throw new System.InvalidOperationException("Block number request failed, exception=" + blockNumberRequest.Exception);
                }

                yield return(wait);
            }
        }
예제 #15
0
    private static IEnumerator getTransactions(Action <bool> callBack)
    {
        var blockNumberRequest = new EthBlockNumberUnityRequest(Wallet._url);

        yield return(blockNumberRequest.SendRequest());

        blockNumber = blockNumberRequest.Result.Value;

        startBlockNumber = blockNumber - blockCount;
        Action _callBack = new Action(() => {
            //callBack(true);
            if (blockIndex > batchCount)
            {
                callBack(true);
            }
        });

        for (var _i = 0; _i <= batchCount; _i++)
        {
            CoroutineManager.StartCoroutineTask(GetBlockWithTransactionsByNumberUnityRequest(blockNumber - _i, _callBack));
        }
    }