Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Avoid using immature coinbase inputs - #614

Merged
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs
Jul 5, 2022
Merged

Avoid using immature coinbase inputs#614
afilini merged 2 commits into
bitcoindevkit:masterfrom
danielabrozzoni:20220317_ignore_immature_coins_in_cs

Conversation

@danielabrozzoni

@danielabrozzonidanielabrozzoni commented May 25, 2022

Copy link
Copy Markdown
Contributor

Description

With this PR we start considering how many confirmations a coinbase has. If it's not mature yet, we don't use it for building transactions.
Fixes#413

Notes to the reviewers

This PR is based on #611, review that one before reviewing this 😄

007c5a7 adds a coinbase parameter to populate_test_db, to specify if you want the db to be populated with immature coins. This is useful for test_spend_coinbase, but that's probably going to be the only use case.
I don't think it's a big deal to have a test function take an almost_always_useless parameter - it's not an exposed API, anyways. But, if you can come up with a different way of implementing test_spend_coinbase that doesn't require 007c5a7, even better! I looked for it for a while, but other than duplicating the whole populate_test_db code, which made the test way harder to comprehend, I didn't find any other way.

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

Bugfixes:

  • This pull request breaks the existing API
  • I've added tests to reproduce the issue which are now passing
  • I'm linking the issue being fixed by this PR

@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 8520e53 to 36922b2CompareMay 26, 2022 17:20
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 36922b2 to 68f7c81CompareMay 26, 2022 21:32
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 68f7c81 to 59b0c52CompareJune 3, 2022 15:18

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Concept ACK..

I have a comment on the selection logic..

Comment threadsrc/wallet/mod.rs
Comment threadsrc/database/memory.rs

@vladimirfomenevladimirfomene left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pulled changes, tested and reviewed code. I found it hard to review the macro part because I'm not very comfortable with macros. Tested ACK

Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 59b0c52 to 93ca3b9CompareJune 13, 2022 09:23
@danielabrozzoni

Copy link
Copy Markdown
ContributorAuthor

Rebased, and also updated set_current_height documentation

@wszdexdrfwszdexdrf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested ACK 93ca3b9

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK 93ca3b9

@wszdexdrfwszdexdrf mentioned this pull request Jun 23, 2022
6 tasks
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs
Comment threadsrc/wallet/mod.rs Outdated
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch 2 times, most recently from 1cc696e to ab2397aCompareJune 28, 2022 09:07
Allows user to ask for a test db populated with clean coins
from coinbases. This is useful for testing the wallet behaviour
when some inputs are coinbases.
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from ab2397a to 3406908CompareJune 30, 2022 09:50
Comment threadsrc/wallet/mod.rs Outdated
Comment threadsrc/wallet/mod.rs

@rajarshimaitrarajarshimaitra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReACK 3406908

One non blocking note..

Comment threadsrc/database/memory.rs
@danielabrozzoni
danielabrozzoniforce-pushed the 20220317_ignore_immature_coins_in_cs branch from 3406908 to e85aa24CompareJuly 5, 2022 10:12

@afiliniafilini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afilini
afilini merged commit ec22fa2 into bitcoindevkit:masterJul 5, 2022
afilini added a commit that referenced this pull request Aug 4, 2022
0f03831 Change get_balance to return in categories. (wszdexdrf)
Pull request description:
### Description
This changes `get_balance()` function so that it returns balance separated in 4 categories:
- available
- trusted-pending
- untrusted-pending
- immature
Fixes#238
### Notes to the reviewers
Based on #614
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
#### New Features:
* [x] I've updated tests for the new feature
* [x] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
ACKs for top commit:
afilini:
ACK 0f03831
Tree-SHA512: 39f02c22c61b6c73dd8e6d27b1775a72e64ab773ee67c0ad00e817e555c52cdf648f482ca8be5fcc2f3d62134c35b720b1e61b311cb6debb3ad651e79c829b93
@danielabrozzoni
danielabrozzoni deleted the 20220317_ignore_immature_coins_in_cs branch August 16, 2022 17:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BDK will select coinbase inputs that are not matured yet

7 participants

@danielabrozzoni@afilini@vladimirfomene@evanlinjin@rajarshimaitra@wszdexdrf@notmandatory