Pages:
Author

Topic: 0.96 preliminary testing (Read 6222 times)

staff
Activity: 3374
Merit: 6530
Just writing some code
March 31, 2017, 05:31:13 PM
No exe's in the test branch?
Binaries are not committed to the source code, they are not source code. You can can get the 0.96 testing binaries from https://github.com/goatpig/BitcoinArmory/releases/tag/v0.95.99.1-testing
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 31, 2017, 05:09:19 PM
No exe's in the test branch?

I don't understand the question
member
Activity: 77
Merit: 10
March 31, 2017, 04:49:45 PM
No exe's in the test branch?
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 31, 2017, 04:00:58 PM
Testing builds are out, moved the code to the testing branch. Dev will be unstable again soon. Unsticking this thread.

Tested the compressed key script on the mainnet. RBF too. So far so good.

Quote
Would making it easier in one way, yet making it harder feature to discover and understand in others, achieve less abuse of the RBF feature in practice?

Usually, honest users don't try as hard to get things to work as malevolent ones. You are better off making the thing easy to use in the end. But UX is a pain to work on, so in due time.
staff
Activity: 3374
Merit: 6530
Just writing some code
March 30, 2017, 08:57:12 AM
Hi goatpig. I know 0.96 will be released when it is ready  Cheesy
Do yo have an estimated date? I know you wouldn't like to commit to a shipping date or so. I just ask this to know how the roadmap is going through.

Thanks for your support and efforts for the community! :-)
The first testing build should be out today. Goatpig just bumped the version numbers and yesterday he told me he was going to release the first testing binaries today.
sr. member
Activity: 471
Merit: 252
March 30, 2017, 08:55:01 AM
Hi goatpig. I know 0.96 will be released when it is ready  Cheesy
Do yo have an estimated date? I know you wouldn't like to commit to a shipping date or so. I just ask this to know how the roadmap is going through.

Thanks for your support and efforts for the community! :-)
staff
Activity: 3374
Merit: 6530
Just writing some code
March 29, 2017, 09:02:42 AM
Every couple of hours, ArmoryDB disconnects and reconnects to my Bitcoin Core node for some reason. It hits a StopBlockingLoop exception in processDataStackThread but I am not sure why.

I am running a build of Bitcoin Core's development branch, so it may be possible that something was changed for the next version of Core that is causing this error to occur. If that is the case, then this needs to be fixed so that we don't get a repeat of the "transaction timed out" errors.

I put it in gdb and let it run until that exception was thrown. Here is the backtrace of when gdb stopped at the exception being thrown (I think this is the right place for it to stop):
Code:
#0  0x00007ffff78c58bd in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x00000000005db046 in BlockingStack > >::terminate (
    this=0x7fff9c000930, exceptptr=...) at ThreadSafeClasses.h:894
#2  0x00000000005d0891 in BitcoinP2P:: >, std::__exception_ptr::exception_ptr)>::operator()(std::vector >, std::__exception_ptr::exception_ptr) const (__closure=0x7fff980008c0, socketdata=std::vector of length 0, capacity 0, ePtr=...)
    at BitcoinP2P.cpp:995
#3  0x00000000005d3a4a in std::_Function_handler >, std::__exception_ptr::exception_ptr), BitcoinP2P::pollSocketThread():: >, std::__exception_ptr::exception_ptr)> >::_M_invoke(const std::_Any_data &, , ) (__functor=...,
    __args#0=,
    __args#1=)
    at /usr/include/c++/5/functional:1857
#4  0x0000000000626085 in std::function >, std::__exception_ptr::exception_ptr)>::operator()(std::vector >, std::__exception_ptr::exception_ptr) const (this=0x7fffa3ffee30, __args#0=std::vector of length 0, capacity 0, __args#1=...)
    at /usr/include/c++/5/functional:2267
#5  0x000000000061fd72 in BinarySocket::readFromSocketThread(int, std::function >, std::__exception_ptr::exception_ptr)>) (this=0xbb77d0, sockfd=2147483647,
    callback=...) at SocketObject.cpp:378
#6  0x000000000061f301 in BinarySocket::::operator()(void) const (__closure=0x7fff9c000b58)
    at SocketObject.cpp:216
#7  0x0000000000625958 in std::_Bind_simple()>::_M_invoke<>(std::_Index_tuple<>) (this=0x7fff9c000b58) at /usr/include/c++/5/functional:1531
#8  0x00000000006255f6 in std::_Bind_simple()>::operator()(void) (this=0x7fff9c000b58) at /usr/include/c++/5/functional:1520
#9  0x000000000062547a in std::thread::_Impl()> >::_M_run(void) (this=0x7fff9c000b40) at /usr/include/c++/5/thread:115
#10 0x00007ffff78f0c80 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#11 0x00007ffff7bc16ba in start_thread (arg=0x7fffa3fff700) at pthread_create.c:333
#12 0x00007ffff705682d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
legendary
Activity: 3430
Merit: 3071
March 27, 2017, 01:45:47 PM
The way I imagined it was:

Maintain the opt-in checkbox on the Send form, and create an overridden/inherited version of the right-click contextual menu that only presents "RBF" option for those transactions for which the opt-in had been stipulated in the Send form.

I think I see what you're getting at with chains of zero-confs though, but is it not the case that doing it as I describe would force the user in such circumstances to figure out for themselves which dependent tx is holding the others up? i.e. it would force the user to take responsibility for setting their own fees, and discourage bad practices, like creating chains of dependent tx's with insufficient fees?

Would making it easier in one way, yet making it harder feature to discover and understand in others, achieve less abuse of the RBF feature in practice?
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 27, 2017, 12:42:05 PM
Why not make it more direct? i.e. Right click eligible zero confs in the main tx window, a new (and probably simpler) dialog handles the fee bumping.

There will be an option to do that eventually but for now RBF is an expert feature.

A bit of reasoning:

1) A sole bump fee feature hinges on a few assumptions that won't be met half the time. If the user expects to be able to bump fees off of the ledger, it supposes all transactions are RBF by default. I do not intent to do this. RBF will remain an opt-in feature in Armory, and off by default. I will most likely allow people to change the default in the settings, and consider adding a warning message on low fee transactions to turn on RBF. But I won't just force the thing on.

2) As a result, the whole bump off of the ledger part will be confusing. Either users will never use it (they would work with the outputs directly instead), or they turn to rely on the feature but end up confused when they fail to RBF.

3) RBF is not the only way to "pull in" a transaction. CPFP can be used to that effect as well, albeit for a higher fee at the cost of more block space. I want to let people have the choice, which would mean implementing a "pull transaction" option to the fee bump feature. Not that I think it's a bad idea, but now there is a lot of extra GUI to implement, and I don't want to pigeon people into a single feature as a way out.

4) How do I signal a transaction is eligible for replacement in the tx ledger? There is only so much room in the comment column (and text only gets you so far), nor is it very feasible to flash colors per line in these ledgers, and even that doesn't evidence what to do to bump the tx. Ideally a button just showing up on the particular line named "bump me!" would do the job. But I'm not sure the ledger model allows anything but text to be returned as entries to an index, so I can't go into this with a guarantee I can implement the model.

5) Most importantly, I cant skip the coin control like RBF GUI, because it is the only way to cleanly evidence RBF entries in a zero conf chain, and which child zc gets knocked off by a replacement. And also because at its core RBF is a double spend feature, so it should be usable in that way. It's not my place to figure out how that will be useful, but Armory is a wallet for advanced users, so it shouldn't curtail people to a narrow UX. Given that this UI has to go in either way, I have to do it first.

And before you argue this stuff won't happen, RBF is a fringe feature to begin with. You do not need this during regular operations, only when crazy stuff like a wild spam spike appears or the chain is being attacked, or you are trying to taint coins after a chain split. Who knows how convoluted things can get then. This is why RBF should be snafu proof from the get go.
legendary
Activity: 3430
Merit: 3071
March 27, 2017, 11:10:36 AM
Why not make it more direct? i.e. Right click eligible zero confs in the main tx window, a new (and probably simpler) dialog handles the fee bumping.

Presumably bumping the fee on some inputs and not others is meaningless, as all inputs are children of the overall parent transaction, for which there is a single fee applied for every byte? Makes sense to me, especially now that age-related priority is deprecated and on it's way to retirement.
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 27, 2017, 11:01:41 AM
It works like the coin control dialog, but only lists RBF outputs. For an output to be listed there you need to

1) Create a transaction with the RBF option checked.
2) Have the transaction broadcast successful. All redeemed outputs should show in the RBF dialog.

I guess I should rename the button to have it convey that meaning. The idea is that RBF and coin control are mutually exclusive (since coin control also lists CPFP outputs, and these will more often than not conflict with RBF outputs).

If there is a demand for RBF to work with coin control, I'll look into that improvement in a later release.
legendary
Activity: 3430
Merit: 3071
March 27, 2017, 10:38:53 AM
All is well.

What's the purpose of the RBF button on the Send form? I'm getting no addresses in the fields, whether I tick the RBF checkbox or not. Needs wallet 1.35c, or compressed keys? Or a different setting? (in Core maybe?)
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 27, 2017, 07:44:54 AM
I'm an idiot, forgot to push a file. Should work now.
legendary
Activity: 3430
Merit: 3071
March 26, 2017, 04:39:01 PM
Builds, but dies before ArmoryDB launches with this:

Code:
  def PyCreateAndSignTx_old(srcTxOuts, dstAddrsVals):
(ERROR) Traceback (most recent call last):
  File "ArmoryQt.py", line 5848, in
    checkForAlreadyOpen()
  File "ArmoryQt.py", line 5829, in checkForAlreadyOpen
    from armoryengine.ProcessMutex import PySide_ProcessMutex
ImportError: No module named ProcessMutex

Traceback (most recent call last):
  File "ArmoryQt.py", line 5848, in
    checkForAlreadyOpen()
  File "ArmoryQt.py", line 5829, in checkForAlreadyOpen
    from armoryengine.ProcessMutex import PySide_ProcessMutex
ImportError: No module named ProcessMutex
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 26, 2017, 11:35:51 AM
Pushed RBF.

Everything under the hood works. The GUI is rudimentary however. Basically it does not yet sort out corner cases like RBF -> CPFP -> RBF.

By design, conflicts between RBF and CPFP outputs are side stepped: CPFP and RBF are mutually exclusive. However, this isn't represented the GUI yet, which is the other part that needs polished before the UX is acceptable.

As it stands, you can:

- CPFP any eligible output correctly.
- Create RBF transactions
- CPFP an replacable output (say the change to your RBF spend)
- RBF any eligible RBF output. However conflicts are not handled: you can for example pick a replaceable output from one tx and a replaceable output from a child tx to the first one. This is a conflicting set of outputs. The GUI does not implement conflict detection and handling yet, but the Tx will obviously be invalid.

Once conflicts are handled the GUI, the code will be ready for testing releases. ETA Monday or Tuesday.

I have no yet tested spending from nested scripts on the mainnet, so please stay away from these until I risk my own money with them first.
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 25, 2017, 03:28:40 PM
Goatpig is it possible to upload the Armory_0.96_win64.exe (beta) on the website? I can't transfer my coins because of the "the broadcast process failed unexpectedly" bug. Thanks! Smiley

I understand your predicament but I can't yet push code that I don't believe is production ready. While you can build the code from source by pulling the dev branch, I am sorry but you will have to wait for signed binaries from me.

Hopefully I'll have a test build out tomorrow. Otherwise, sometimes next week.
member
Activity: 77
Merit: 10
March 25, 2017, 03:07:13 PM
Goatpig is it possible to upload the Armory_0.96_win64.exe (beta) on the website? I can't transfer my coins because of the "the broadcast process failed unexpectedly" bug. Thanks! Smiley
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 17, 2017, 06:55:19 PM
It does, whether the RPC works or not. The particular issue with the messed up cookie file is due to how the config file works with the testnet. When running against the testnet, Core still uses the .conf in the mainnet datadir to init, but will create the cookie file in the testnet datadir.
legendary
Activity: 3430
Merit: 3071
March 17, 2017, 06:44:50 PM
Do you mean that 0.96 connects the DB to the wallet without server=1 ? What sorcery is this? Cheesy
legendary
Activity: 3640
Merit: 1345
Armory Developer
March 17, 2017, 05:59:54 PM
I can't reproduce the server=1 issue, can someone lay out the exact steps?
Pages:
Jump to: