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)); } }
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"); } }