Beispiel #1
0
        public IEnumerator WorkGenerate(string address, string previous, Action <string> callback)
        {
            var hashForWork = previous == null?NanoUtils.AddressToPublicKeyHexString(address) : previous;

            yield return(rpc.WorkGenerate(hashForWork, (response) =>
            {
                callback(JsonUtility.FromJson <WorkGenerateResponse>(response).work);
            }));
        }
        public async void UnregisterAccount(string address)
        {
            int count;
            var publicKey = NanoUtils.AddressToPublicKeyHexString(address);

            if (registeredAccounts.TryGetValue(publicKey, out count))
            {
                registeredAccounts[publicKey]--;
            }
            else
            {
                registeredAccounts.Remove(publicKey);
                if (websocket == null || websocket.State != WebSocketState.Open)
                {
                    return;
                }

                AccountRegisterRequest request = new AccountRegisterRequest();
                request.account = address;
                request.action  = "unregister_account";

                await websocket.SendText(JsonUtility.ToJson(request));
            }
        }
        public async void RegisterAccount(String address)
        {
            int count;
            var publicKey = NanoUtils.AddressToPublicKeyHexString(address);

            if (registeredAccounts.TryGetValue(publicKey, out count))
            {
                registeredAccounts[publicKey]++;
            }
            else
            {
                registeredAccounts[publicKey] = 1;
                if (websocket == null || websocket.State != WebSocketState.Open)
                {
                    // Don't send if we're not connected.
                    return;
                }

                AccountRegisterRequest request = new AccountRegisterRequest();
                request.account = address;
                request.action  = "register_account";
                await websocket.SendText(JsonUtility.ToJson(request));
            }
        }
Beispiel #4
0
        public IEnumerator Send(string toAddress, NanoAmount amount, string privateKey, string work, Action <bool, string> callback)
        {
            // First we get the frontier
            NanoAmount currentBalance = null;
            string     previous       = null;
            string     rep            = defaultRep;
            string     fromAddress    = NanoUtils.PrivateKeyToAddress(privateKey);

            yield return(AccountInfo(fromAddress, (accountInfo) =>
            {
                currentBalance = new NanoAmount(accountInfo.balance);
                previous = accountInfo.frontier;
                rep = accountInfo.representative;
            }));

            if (previous != null)
            {
                if (String.IsNullOrEmpty(work))
                {
                    // Generate the work
                    yield return(WorkGenerate(fromAddress, previous, (workResponse) =>
                    {
                        work = workResponse;
                    }));
                }

                if (!String.IsNullOrEmpty(work))
                {
                    // Create the block to send
                    var newBalance = currentBalance - amount;
                    var block      = CreateBlock(fromAddress, NanoUtils.HexStringToByteArray(privateKey), newBalance, NanoUtils.AddressToPublicKeyHexString(toAddress), previous, rep, work);
                    yield return(Process(block, BlockType.send, (hash) =>
                    {
                        if (hash != null)
                        {
                            callback(false, hash);
                        }
                        else
                        {
                            callback(true, "");
                        }
                        Debug.Log(hash);
                    }));
                }
                else
                {
                    callback(true, "");
                    Debug.Log("Invalid work");
                }
            }
            else
            {
                callback(true, "");
                Debug.Log("No account exists to send from");
            }
        }