-
Notifications
You must be signed in to change notification settings - Fork 232
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release process and plan for 0.0.10 #93
Comments
Nice, this is great! I wanted to talk with you about this actually - @CraigSellars and I had a chat at the last meeting where I raised my concerns that MetaDEx has so much complex math in it and hasn't really been tested much should we be making it live straight on mainnet? We both agreed that one of my old suggestions from back in the day could potentially be revisited. This in a nutshell would be a message from Exodus "making live" a new feature, instead of having a hardcoded blockheight in the source. The main focus of it is we would be able to release 0.0.10 at our convenience, and set the live MetaDEx (and Class C) height via an alert style message rather than having to decide the live blockheight before 0.0.10 is released. Thus we can release, have people play with trading test eco properties, and then broadcast the live blockheight for main eco when we're happy. I fully agree with @msgilligan that this is not a substitute for testing, but given that folks would like to see 0.0.10 released soon, and I'd like to see a solid month + of testing by other people on MetaDEx via test properties, it seems like a potential compromise. What do you think bud? Does what I've described make sense? |
Hehe, remember when I proposed: "let's do frequent releases, and one before the Meta DEx"? .. ;) I don't feel strongly about the Meta DEx actually. In my opinion it's a valid point to consider that excluding it from the release doesn't provide any additional exposure though. The test plan is unchanged since roughly December, and I haven't really seen any proposals until now to test it; the additional testing done during the overhaul excluded. So this raises two important questions:
OP_RETURN is enabled in regtest mode and testnet, so it's basically already heavily tested passively for quite some time, and with #74 all statements in So to add:
I'll add a bit more later regarding the rest. |
I'm open to different options here :) What I do want to avoid is frequent consensus breaking releases. Releases that don't break consensus we can do more frequently perhaps?
This is where I need testers to advise really. But my current "gut feeling" is certainly it's not ready when the only people to have played with it are basically me and you.
None, Class C is solid in my book. The notion of living features via a message instead of via a hardcoded blockheight is basically me trying to remove the requirement for us to feel MetaDEx is 100% ready for mainnet release in order to release 0.0.10. |
Ah, okay.
So what could be done to get testers on board? |
A useable wallet :) That's kind of where I was thinking if we released 0.0.10 without a hardcoded live height, people could trade test eco properties around and maybe we'd get some more exposure? |
Aahhh, the details.. hehe..
I read the following at first:
And given all this, the discussion is pretty much about:
... and not really about whether some feature should be enabled or not. It that correct? :) If so: it's a great idea, and I like it! We should nevertheless roughly define and communicate how the enabling is done, and when, at least an estimation. "We'll enable it, when we feel it's ready" ... probably wouldn't look good in any release notes. :) |
I don't think we should exclude it, I would like to see people trading test eco properties as I think more eyes will help us pick up more bugs (and avoid potential loss of funds or an emergency release, my main goal in all this).
Pretty much - the context is coming from MetaDEx but it would apply to all features from now on.
Sweet!!! I'll look at coding it up :)
Fully agree - we should be saying "in the absence of any critical bugs we plan to make feature X live in {month}". |
We should probably create another issue to track/discuss ideas re: notification based enabling. This, and probably the MetaDEx work should be added to the "tasks for the release", I think? |
Sure, it would be good to get consensus that this is the direction we're going in - I started working on some code for notification based feature enabling just as a PoC but it would be good to agree ideas and the process etc :) |
Alright. We're pretty close. Please don't worry, even though the list above gets longer, there are no new items, but rather refinements. Currently still missing:
I'm not 100 % sure, if the Gitian environment changed significantly since 0.9, and at home I have a VM, which I setup earlier. So first, just to clarify: we are going the deterministic build route, right? Notably, downloading "inputs" for Gitian is no longer necessary, due to the superb dependency managment system, which was introduced with 0.10. The documentation to setup a Gitian building box is pretty good. The following parts between Preparing the Gitian builder host and Setting up gitian images are useful for us. @zathras-crypto: have you ever used GPG in Ubuntu? If not, do you have access to your GPG private key? I'm going to write a short list of steps to do, after the environment is configured, to cover the rest. I think it would also be nice, if we'd have a "checklist" for releases, i.e. define a release process. Hopefully, I find some time later to take a first shot at it, too. Are there others who would like to participate in the building process, and build the binaries locally, so we can tripple check results? @msgilligan maybe? |
I'm game for giving it a try. |
No and yes :) |
I was attempting to build a fresh VM for building with the changes introduced in 0.10, though I seem to fail out with error:
When trying to build the base VM - I had a quick poke around and can see it seems that
for user debian when following that guide - you'll note that it's lacking /sbin (which is where mkfs-tools are located) - I'll try adding sbin into the path (just with |
That seems to have sorted it - onwards! |
So we don't need to register for an Apple developer account and "Using a Mac, create a tarball for the 10.7 SDK and copy it to the inputs directory"? |
Lots of errors hehe - culminating in:
|
Hmhm.. what does I have no experience with setups outside of the scope of this tutorial.
Actually, this is this only exception, but no, we don't have to register an Apple account here. We can reuse the file, as Travis does: |
Tail end is:
I get a large number of these two repeated:
and
I'll probably take another run at it again from scratch, the only difference from the tut is I'm doing this in VMWare Player instead of VirtualBox (because VirtualBox kernel modules won't compile under 14.04 with a 3.19 kernel) but that shouldn't make any difference. |
Hm... Could you try the following (from `~/gitian-builder/):
|
|
Ahh - I just noticed your path there - I cloned the Omni Core repo into bitcoin:
But perhaps I shouldn't have specified the 'bitcoin' |
Ah! :) All |
D'oh! I think I remember doing it that way last time so probably just ran with it hehe - I'll take another run - thanks :) |
This is probably due to the old tutorial. :) Which version/commit did you specify, when running |
|
Same error as before ( |
Okay.. I'm going to give it a try, hopefully soon. Setting up the VM should be possible in a reasonable amount of time. I'll update, once I know more. |
Couple of notes:
Edit: appearingly this is due to the Debian version, and a one-line change fixes it. Edit: same issue for me ( |
see above mate :) #93 (comment)
|
So what would you change? |
I don't know at this stage, I just think we need an (easier) way for end users to use an appropriate fee, the Bitcoin Core estimation (0.00004424 BTC/kB) being well on the way to "fast" is obviously very inadequate when our transactions carry such a small amount of BTC (and thus the inputs are likely to be very small, and thus the priority is likely to be very low). |
Right now there are around 20.000 transactions in the mempool with a fee of at least 0.0001 BTC (per tx, not per kB), and more than 5.000 with at least 0.0002 BTC, and the top 2000 have a fee of 0.0009 BTC or more. I have no idea how large those transactions are, but let's assume around 300-350 kB, then that's close to 0.003 BTC/kB for the top 2000. Given that there are around 1000-2000 transactions per block, well.. The assumptions are not really solid, but it provides some context for the non-confirming 0.00004424 BTC/kB transaction. Edit: $ bitcoin-cli estimatefee 1
0.00106377
$ bitcoin-cli estimatefee 6
0.00044247
$ bitcoin-cli estimatefee 10
0.00037593
$ bitcoin-cli estimatefee 20
0.00019230 This is significantly higher than the number shown in the UI picture.. hmm. |
Thanks for the stats - where are you getting that data from? Programmatically inside Core? I know the data is there I've just never looked into getting at it... I understand what's going on, I just think in an ideal world there would be a radio button a user could click for quick confirmation that'll advise & pay whatever fee is necessary, even if that's 0.003 BTC/kB (it's up to the user). |
I used
Hehe, but isn't this pretty similar to "move the UI silder to 1"? Let's quickly clarify, because this is the part currently not really clear to me: do you want to improve the UI or the fee estimation? Edit: mis-clicked. |
Heh, kind of :P The slider at 1 block is 0.00118869 BTC/kb - I guess the point I'm trying to make is that fee estimation makes the assumption that you'll actually be sending some BTC somewhere - since we're only sending slightly over dust for the most part our inputs will be tiny and our priority extremely low. Thus the "Estimated to begin confirmation within X block(s)" isn't really very accurate for Omni transactions.
I want to improve the user experience, whatever form that takes. Note it's confusing for users that the transaction fee selection sits under the Send > Bitcoin tab as it's not immediately obvious that this affects all outgoing Omni transactions also. Muddling with internal fee estimation calculation only seems like it'll cause more trouble and deviation from Bitcoin source moving forward so I'm not keen on that, I'm still thinking about what (if anything) to do, it could be as little as a warning dialog when a user sends anything that with their current settings it will take a long time to confirm, or as much as analysing what's in the mempool ourselves with some kind of heuristics to do our own fee estimation. I don't have an "answer" hehe at this stage, simply that I want to make it as simple as possible for end users :) |
As long as we pass the I may be very wrong, but if I recall correctly, then there are only two classes where priority plays a role:
And "anything else" is then prioritized solely based on fee/kB. This is of course depending on the mining policy, but as far as I know this is the default behavior of Core. Either way, to my understanding the whole point of the fee estimation is to estimate the fee for a transaction, whether this is based solely on the fee, or a combination of fee and priority, but I don't really see how a non-Omni-transaction and some-other-transaction would be rated differently. |
Now that the issues are hopefully resolved, let's give it another try. Update your local copy of export SIGNER=dexX7
export COMMIT=374779dbb677da3f3e62e59143f828364115f16b
export RELEASE=0.0.9.99-374779dbb6 ./bin/gbuild --commit omnicore=${COMMIT} ../omnicore/contrib/gitian-descriptors/gitian-win.yml
./bin/gsign --signer $SIGNER --release ${RELEASE}-win --destination ../gitian.sigs/ ../omnicore/contrib/gitian-descriptors/gitian-win.yml
mv build/out/omnicore-*.zip build/out/omnicore-*.exe ../ ./bin/gbuild --commit omnicore=${COMMIT} ../omnicore/contrib/gitian-descriptors/gitian-linux.yml
./bin/gsign --signer $SIGNER --release ${RELEASE}-linux --destination ../gitian.sigs/ ../omnicore/contrib/gitian-descriptors/gitian-linux.yml
mv build/out/omnicore-*.tar.gz build/out/src/omnicore-*.tar.gz ../ ./bin/gbuild --commit omnicore=${COMMIT} ../omnicore/contrib/gitian-descriptors/gitian-osx.yml
./bin/gsign --signer $SIGNER --release ${RELEASE}-osx-unsigned --destination ../gitian.sigs/ ../omnicore/contrib/gitian-descriptors/gitian-osx.yml
mv build/out/omnicore-*.tar.gz build/out/omnicore-*.dmg ../ I further thought about how to handle gitian.sigs. Please create the pull request, but merge into master, and not into a feature branch. Ultimately, it is going to hold all signatures of previous releases, so it probably makes not so much sense to have a branch for each one. |
I'm in the process of doing these builds btw :) |
Awesome. I'm really curious, if the Windows installer is deterministic now. |
All done. OmniLayer/gitian.sigs#6 |
Matches! :) |
Outstanding!!!! :) |
I'm not sure, how this could be made more handy, but assuming you're still in your build box, then
It then shows something like:
|
What happens now? Do you want to push the binaries to the dev list? |
Yep (x64 only to be on the safe side I think?) - probably do that tomorrow unless you have any other catches (which you're killing it with btw much to my thorough happiness!!! so many, many thanks) |
Yup, agreed. Sounds fine! :) |
Woot my transactions finally confirmed after a week hehe... This is the essence of my concern though (most users will leave "settings" at their defaults, and those defaults can mean confirmation times that would sour the experience). I'm still toying with some local ideas for this, and will suggest a PR when I have something more tangible :) |
Just a thought - zathras-crypto@8c58429 |
I love it! Let's move the discussion to a new thread: #137 |
Just to keep gain an overview: we made some significant progress, and especially the checkpoints/block skipping was a valuable addition. The items left of the original plan:
|
Soo.. it looks like only the documentation and change log is missing for the release? I'm sure you'll object, and there are other items. It would be great to list them here. It was mentioned that the raw transaction creation should be part of 0.0.10, and the "send all" transaction also. Does this still apply? |
I believe this is desired, I need to loop around and see where we're at with this and review notes from Josh (escrowmybits)
Also desired, given that the implementation is pretty close if we can finalize the spec issues I think we could fit this in...
I'm sure I probably have a couple of other points but it's a bit late and I'm a bit fuzzy so I'll leave it there hehe :) |
Alright. I think we should add:
Any comment on the last point? |
From the log of the meeting:
@CraigSellars: can you quickly address the last four comments? |
Let's discuss a timeline, and steps to take.
The process for preview builds, and releases should be done as before:
What is the timeline for the release, or preview?
What should be added for the preview?
What should be added for the release?
I started a list, and created a few more issues, for points I can currently think of:
Guidelines:
The text was updated successfully, but these errors were encountered: