private BitcoinSecret GetFirstSecret(RPCClient rpc) { if (this.MinerSecret != null) { return(this.MinerSecret); } var dest = rpc.ListSecrets().FirstOrDefault(); if (dest == null) { var address = rpc.GetNewAddress(); dest = rpc.DumpPrivKey(address); } return(dest); }
public void CanGetPrivateKeysFromAccount() { string accountName = "account"; using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode node = builder.CreateBitcoinCoreNode(version: BitcoinCoreVersion15).Start(); RPCClient rpcClient = node.CreateRPCClient(); var key = new Key(); rpcClient.ImportAddress(key.PubKey.GetAddress(this.regTest), accountName, false); BitcoinAddress address = rpcClient.GetAccountAddress(accountName); BitcoinSecret secret = rpcClient.DumpPrivKey(address); BitcoinSecret secret2 = rpcClient.GetAccountSecret(accountName); Assert.Equal(secret.ToString(), secret2.ToString()); Assert.Equal(address.ToString(), secret.GetAddress().ToString()); } }
public Transaction PerformBreezeRegistration(BreezeConfiguration config, string regStorePath, string configurationHash, string onionAddress, RsaKey tumblerKey) { Network network = Network.ImpleumMain; if (config.TumblerNetwork == Network.TestNet || config.TumblerNetwork == Network.RegTest) { network = Network.ImpleumTest; } RPCHelper stratisHelper = null; RPCClient stratisRpc = null; BitcoinSecret privateKeyEcdsa = null; try { stratisHelper = new RPCHelper(network); stratisRpc = stratisHelper.GetClient(config.RpcUser, config.RpcPassword, config.RpcUrl); privateKeyEcdsa = stratisRpc.DumpPrivKey(BitcoinAddress.Create(config.TumblerEcdsaKeyAddress)); } catch (Exception e) { Console.WriteLine("ERROR: Unable to retrieve private key to fund registration transaction"); Console.WriteLine("Is the Stratis wallet unlocked & RPC enabled?"); Console.WriteLine(e); Environment.Exit(0); } RegistrationToken registrationToken = new RegistrationToken(PROTOCOL_VERSION_TO_USE, config.TumblerEcdsaKeyAddress, config.Ipv4Address, config.Ipv6Address, onionAddress, configurationHash, config.Port, privateKeyEcdsa.PubKey); byte[] msgBytes = registrationToken.GetRegistrationTokenBytes(tumblerKey, privateKeyEcdsa); // Create the registration transaction using the bytes generated above Transaction rawTx = CreateBreezeRegistrationTx(network, msgBytes, config.TxOutputValueSetting); TransactionUtils txUtils = new TransactionUtils(); RegistrationStore regStore = new RegistrationStore(regStorePath); try { // Replace fundrawtransaction with C# implementation. The legacy wallet // software does not support the RPC call. Transaction fundedTx = txUtils.FundRawTx(stratisRpc, rawTx, config.TxFeeValueSetting, BitcoinAddress.Create(config.TumblerEcdsaKeyAddress)); RPCResponse signedTx = stratisRpc.SendCommand("signrawtransaction", fundedTx.ToHex()); Transaction txToSend = new Transaction(((JObject)signedTx.Result)["hex"].Value <string>()); RegistrationRecord regRecord = new RegistrationRecord(DateTime.Now, Guid.NewGuid(), txToSend.GetHash().ToString(), txToSend.ToHex(), registrationToken, null); regStore.Add(regRecord); stratisRpc.SendRawTransaction(txToSend); return(txToSend); } catch (Exception e) { Console.WriteLine("ERROR: Unable to broadcast registration transaction"); Console.WriteLine(e); } return(null); }