Skip to content

Compatibility page tweaks #189

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

Merged
merged 12 commits into from
Aug 12, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions _includes/functions/compat-gallery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
*Click on a thumbnail for a larger image or to play its video.*

{% for example in include.examples %}
{% capture /dev/null %}
{% if example.link %}
{% assign link = example.link %}
{% else %}
{% assign link = example.image %}
{% endif %}
{% endcapture %}
<div markdown="1" class="compat-usability">
[![{{example.caption|escape_once}}]({{example.image}})]({{link}})
<br /><span class="compat-caption">{{example.caption}}</span>
</div>
{% assign break = forloop.index | modulo:2 %}
{% if break == 0 %}<br clear="both" />{% endif %}
{% endfor %}
124 changes: 55 additions & 69 deletions _includes/templates/compatibility-page.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
![{{tool.name|escape_once}}]({{tool.logo}}){:.third-party-logo}{:title="{{tool.name}}"}

## Replace-by-Fee (RBF)
{:.center}
[Replace-by-Fee](#rbf) \| [Segwit](#segwit)

## Replace-by-Fee (RBF) {#rbf}

{% assign tested = tool.rbf.tested. %}
**Tested**: {% if tested.version != "n/a" %} *version {{tested.version}}* {% endif %} on *{{tested.platforms}}*
Expand All @@ -15,6 +18,8 @@ block chain space used, this is the most efficient form of fee bumping.

### Receiving support

<div markdown="1" class="compat-list">

{:id="receive-notification"}
{% assign rbf = tool.rbf.features. %}
{% case rbf.receive.notification %}
Expand All @@ -28,7 +33,7 @@ block chain space used, this is the most efficient form of fee bumping.
- **No notification**<br>
There are no incoming transaction notifications for this service.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
- **Not tested: Does transaction notification show whether transaction signals RBF?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}
Expand All @@ -45,7 +50,7 @@ block chain space used, this is the most efficient form of fee bumping.
- **This services does not handle incoming transactions**<br>
Does not support incoming transactions.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
- **Not tested: Does transaction list show whether received transactions signal RBF?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}
Expand All @@ -62,7 +67,7 @@ block chain space used, this is the most efficient form of fee bumping.
- **Does not show transaction details**<br>
Does not show transaction details natively. Usually this means the service links to a block explorer for transaction details.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
- **Not tested: Does transaction details page show whether received transaction signals RBF?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}
Expand All @@ -81,7 +86,7 @@ block chain space used, this is the most efficient form of fee bumping.
{% elsif rbf.receive.shows_replaced_version == "untested" or
rbf.receive.shows_original_version == "untested" %}
{:.feature-neutral}
- **Not tested**<br>
- **Not tested: Are replacement and original received transactions displayed?**<br>
We either didn’t test this or could not appropriately determine the results.
{% elsif rbf.receive.shows_replaced_version == "true" %}
{:.feature-yes}
Expand All @@ -97,12 +102,16 @@ block chain space used, this is the most efficient form of fee bumping.
{:.feature-no}
- **No unconfirmed transactions**<br>
Neither the original nor replacement transactions are shown in the
transaction list. Most likely unconfirmed transactions are not supported.
transaction list. Unconfirmed transactions are probably not supported.
{% else %} {% include ERROR_42_UNEXPECTED_VALUE %}
{% endif %}

</div>{% comment %}<!-- end: compat-list -->{% endcomment %}

### Sending support

<div markdown="1" class="compat-list">

{:id="send-signals_bip125"}
{% case rbf.send.signals_bip125 %}
{% when "true" %}{:.feature-yes}
Expand All @@ -115,7 +124,7 @@ block chain space used, this is the most efficient form of fee bumping.
- **Does not send transactions**<br>
Does not support sending of any transactions.
{% when "untested" %}{:.feature-neutral}
- **Not Tested**<br>
- **Not tested: Can sent transactions signal RBF?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}
Expand All @@ -132,8 +141,9 @@ block chain space used, this is the most efficient form of fee bumping.
- **No transaction list**<br>
Does not show a transaction list natively.
{% when "untested" %}{:.feature-neutral}
- **Not Tested**<br>
We either didn’t test this or could not appropriately determine the results.
- **Not tested: Does transaction list show whether sent transactions signal RBF?**<br>
We were not able to test this because sending a BIP125 signaling transaction
is not supported.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

Expand All @@ -149,8 +159,9 @@ block chain space used, this is the most efficient form of fee bumping.
- **Does not show transaction details**<br>
Does not show transaction details natively. Usually this means the service links to a block explorer for transaction details.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results.
- **Not tested: Does transaction details page show whether received transaction signals RBF?**<br>
We were not able to test this because sending a BIP125 signaling transaction
is not supported.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

Expand All @@ -169,8 +180,9 @@ block chain space used, this is the most efficient form of fee bumping.
{% elsif rbf.send.shows_replaced_version == "untested" or
rbf.send.shows_original_version == "untested" %}
{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results.
- **Not tested: Are replacement and original sent transactions displayed?**<br>
We were not able to test this because sending a BIP125 signaling transaction
is not supported.
{% elsif rbf.send.shows_replaced_version == "true" %}
{:.feature-yes}
- **Shows replacement transaction only**<br>
Expand All @@ -185,32 +197,17 @@ block chain space used, this is the most efficient form of fee bumping.
{:.feature-no}
- **No unconfirmed transactions**<br>
Neither the original nor replacement transactions are shown in the
transaction list. Most likely unconfirmed transactions are not supported.
transaction list. Unconfirmed transactions are probably not supported.
{% else %} {% include ERROR_42_UNEXPECTED_VALUE %}
{% endif %}

### Usability

*Click on a thumbnail for a larger image or to play its video.*
</div>{% comment %}<!-- end: compat-list -->{% endcomment %}

{% for example in tool.rbf.examples %}
{% capture /dev/null %}
{% if example.link %}
{% assign link = example.link %}
{% else %}
{% assign link = example.image %}
{% endif %}
{% endcapture %}
<div markdown="1" class="compat-usability">
[![{{example.caption|escape_once}}]({{example.image}})]({{link}})
<br /><span class="compat-caption">{{example.caption}}</span>
</div>
{% assign break = forloop.index | modulo:2 %}
{% if break == 0 %}<br clear="both" />{% endif %}
{% endfor %}
### Usability

{% include functions/compat-gallery.md examples=tool.rbf.examples %}

## Segwit Addresses
## Segwit Addresses {#segwit}

Transactions that spend bitcoins secured by segregated witness (segwit) use less
block weight than equivalent non-segwit (legacy) transactions, allowing
Expand All @@ -225,6 +222,8 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy

### Receive support

<div markdown="1" class="compat-list">

{% assign segwit = tool.segwit.features. %}
{:id="segwit-receive-p2sh_wrapped"}
{% case segwit.receive.p2sh_wrapped %}
Expand All @@ -238,8 +237,8 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy
- **No receiving capabilities**<br>
There are no receiving capabilities for this service.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results
- **Not tested: Can P2SH-wrapped segwit transaction outputs be received?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

Expand All @@ -255,8 +254,8 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy
- **No receiving capabilities**<br>
There are no receiving capabilities for this service.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results
- **Not tested: Can bech32 segwit transaction outputs be received?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

Expand Down Expand Up @@ -286,13 +285,17 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy
- **No receiving capabilities**<br>
There are no receiving capabilities for this service.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results
- **Not tested: What is the default receiving address type?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

</div>{% comment %}<!-- end: compat-list -->{% endcomment %}

### Send support

<div markdown="1" class="compat-list">

{:id="segwit-send-bech32"}
{% case segwit.send.bech32 %}
{% when "true" %}{:.feature-yes}
Expand All @@ -302,11 +305,11 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy
- **Does not allow sending to bech32 P2WPKH addresses**<br>
Does not allow sending to bech32 P2WPKH native segwit addresses.
{% when "na" %}{:.feature-neutral}
- **No receiving capabilities**<br>
- **No sending capabilities**<br>
There are no sending capabilities for this service.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results
- **Not tested: Can transaction outputs be sent to bech32 P2WPKH addresses?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

Expand All @@ -319,11 +322,11 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy
- **Does not allow sending to bech32 P2WSH addresses**<br>
Does not allow sending to bech32 P2WSH native segwit addresses.
{% when "na" %}{:.feature-neutral}
- **No receiving capabilities**<br>
- **No sending capabilities**<br>
There are no sending capabilities for this service.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results
- **Not tested: Can transaction outputs be sent to bech32 P2WSH addresses?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

Expand All @@ -336,37 +339,20 @@ segwit transactions to pay less total fee to achieve the same feerate as legacy
- **Does not create bech32 change addresses**<br>
When sending, does not generate bech32 (either P2WPKH or P2WSH) segwit change addresses.
{% when "na" %}{:.feature-neutral}
- **No receiving capabilities**<br>
There are no sending capabilities for this service.
- **No sending capabilities**<br>
There are no sending capabilities for this service or sending does not
generate change.
{% when "untested" %}{:.feature-neutral}
- **Not tested**<br>
We either didn’t test this or could not appropriately determine the results
- **Not tested: Can bech32 addresses be used for change?**<br>
We either didn’t test this or could not appropriately determine the results.
{% else %}{% include ERROR_42_UNEXPECTED_VALUE %}
{% endcase %}

{:id="segwit-send-segwit_v1"}
{:.feature-neutral}
- **How is sending to segwit v1 addresses handled?**<br>
{{ segwit.send.segwit_v1 }}
</div>{% comment %}<!-- end: compat-list -->{% endcomment %}

### Usability

*Click on a thumbnail for a larger image or to play its video.*

{% for example in tool.segwit.examples %}{% capture /dev/null %}
{% if example.link %}
{% assign link = example.link %}
{% else %}
{% assign link = example.image %}
{% endif %}
{% endcapture %}
<div markdown="1" class="compat-usability">
[![{{example.caption|escape_once}}]({{example.image}}){:width="250px"}]({{link}})
<br /><span class="compat-caption">{{example.caption}}</span>
</div>
{% assign break = forloop.index | modulo:2 %}
{% if break == 0 %}<br clear="both" />{% endif %}
{% endfor %}
{% include functions/compat-gallery.md examples=tool.segwit.examples %}

{% else %}
*We have not yet tested {{tool.name}} for segwit capabilities.*
Expand Down
26 changes: 18 additions & 8 deletions assets/css/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -149,16 +149,25 @@ div.xoverflow {
overflow-wrap: break-word;
}

ol li ol { list-style-type: lower-latin; }
.feature-yes strong {
border-bottom: 2px solid $compatibility-feature-yes;
.compat-list ul { list-style: none; }
.compat-list li::before {
display: inline-block;
width: 1.25em;
margin-left: -1.25em;
font-size: 125%;
}

.feature-yes li::before {
content: "✓";
color: darken($compatibility-feature-yes, 50%);
}
.feature-no strong {
border-bottom: 2px solid $compatibility-feature-no;
.feature-no li::before {
content: "✕";
color: darken($compatibility-feature-no, 50%);
}
.feature-neutral strong {
border-bottom: 2px solid lightgray;
color: gray;
.feature-neutral li::before {
content: "≈";
color: grey;
}

.third-party-logo
Expand Down Expand Up @@ -210,6 +219,7 @@ div.compat-usability
div.compat-usability img
{
width:100%;
border: thin solid silver;
}

.site-nav .page-link:not(:last-child)
Expand Down
14 changes: 6 additions & 8 deletions en/compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ h1, h2, h3, h4, h5, h6 { text-align: center; }
{% for wrapped_tool in tools %}
{% assign tool = wrapped_tool[1] %}
<tr>
<td><a href="{{tool.internal_url}}">{{tool.name}}</a></td>
<td><a href="{{tool.internal_url}}#rbf">{{tool.name}}</a></td>
{% include functions/compat-cell.md state=tool.rbf.features.receive.notification anchor="#receive-notification" %}
{% include functions/compat-cell.md state=tool.rbf.features.receive.list anchor="#receive-list" %}
{% include functions/compat-cell.md state=tool.rbf.features.receive.details anchor="#receive-details" %}
Expand All @@ -59,24 +59,23 @@ h1, h2, h3, h4, h5, h6 { text-align: center; }
<tr>
<th></th>
<th colspan="3">Receiving support</th>
<th colspan="4">Sending support</th>
<th colspan="3">Sending support</th>
</tr>
<tr>
<th></th>
<th>P2SH-wrapped</th>
<th>bech32</th>
<th>default address</th>
<th>Bech32</th>
<th>Default address</th>
<th>P2WPKH</th>
<th>P2WSH</th>
<th>bech32 change</th>
<th>segwit v1</th>
<th>Bech32 change</th>
</tr>

{% assign tools = site.data.compatibility | sort %}
{% for wrapped_tool in tools %}
{% assign tool = wrapped_tool[1] %}
<tr>
<td><a href="{{tool.internal_url}}#segwit-addresses">{{tool.name}}</a></td>
<td><a href="{{tool.internal_url}}#segwit">{{tool.name}}</a></td>
{% if tool.segwit %}

{% assign segwit_receive_default = "" %}
Expand Down Expand Up @@ -105,7 +104,6 @@ h1, h2, h3, h4, h5, h6 { text-align: center; }
{% include functions/compat-cell.md state=tool.segwit.features.send.bech32 anchor="#segwit-send-bech32" %}
{% include functions/compat-cell.md state=tool.segwit.features.send.bech32_p2wsh anchor="#segwit-send-bech32_p2wsh" %}
{% include functions/compat-cell.md state=tool.segwit.features.send.change_bech32 anchor="#segwit-send-change_bech32" %}
<td class="compat default"><a href="{{tool.internal_url}}#segwit-send-segwit_v1">...</a></td>
{% else %}
<td colspan="7" class="default"></td>
{% endif %}
Expand Down