BlockchainCommons / BlockchainCommons/Research

crypto-address improvements.

Open
#123 2 comments 0 reactions 1 assignee Claimed by @wolfmcnally View on GitHub
Dominant language
Wolfram Language
Stars
141
Forks
40
PR merge metrics
No merged PRs in 30d

Description

Currently the [BCR-2020-006](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-009-address.md) standard defines the crypto-address UR type but the definition is a little bit ambiguous.

On [Example/Test Vector 1](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-009-address.md#exampletest-vector-1) the specified P2PKH address `1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2` does not include the type of the address in the encoded CBOR, making it ambiguous to differentiate between it P2SH and P2PKH as these are both 20-byte hashes.

On the CDDL comment it should also:

```diff
- ; For addresses of type `p2wphk`, the sha256 of the script bytes (32 bytes).
+ ; For addresses of type `p2wpkh`, the witness program (20 bytes).
```

It is not a script hash but the witness program and for P2WPKH it is 20 bytes, for P2WSH it is 32 bytes.

P2WSH could be also added and P2TR addresses too.

So:

- P2PKH, P2SH and P2WPKH types of addresses use 20-bytes of data.
- P2WSH and P2TR use 32-bytes of data.

I think to differentiate these the `type` field should be always included when `info` specifies a Bitcoin address. Also maybe the `info` field should have a `.default` specifier but I don't know if CDDL allows that for maps or if the behavior is to skip a field in a map completely when all the fields of the inner map can be ommited because of the default values.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.