Coming soon - Get a detailed view of why an account is flagged as spam!
view details

This post has been de-listed

It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.

49
Introducing Unforgeable Groups for Bitcoin Cash - Using Groups as Owners
Post Flair (click to view more posts with a particular flair)
Post Body

The latest "Group" proposal (v4.2) is more than just "tokenization". It got simpler and more powerful at the same time. It now enables generic BCH output groups that can be used to create persistent Script covenant contracts that can prove their genuineness. This is something that current contracts cannot do, even with the new Introspection opcodes. Group would make it possible because the groupID is a commitment to the whole genesis transaction, but this is not a post about that.

Introspection made it possible to have outputs be dependent, owned by other outputs. The "sticker" contract is a simple example of that. Here I want to show what is possible if we define the owner as any output member of some group.

In other words, with Group it would be possible to write a contract that requires a specific token to be spent. In effect, the token's group becomes the owner of the so dependent output. The redeem script is very simple:

OP_UTXOGROUPID
<0x8837f7609b501cb22db52f91a5a5ef114546ddc75c076172e70f4582903680cb>
OP_EQUAL

That's it? That's it. What this Script means in human language is this: "Tell me the index of the input where a member of my owner group is being spent. I will then verify that it indeed matches my owner group, and if yes I will allow you to spend from me".

The <0x8837...> is the groupID and here it works like an address. Difference is, the "address" can change owners independent of this output. The public keys of group members are attached to other outputs, and any one of them can be spent alongside this one to take the funds.

The signature is then just this (if owner output is being spent as index 0 input):

<0>

The input 0 could be some P2PKH group token, where the spender could spend both outputs, and send the token and contract change back to some new addresses. Even if he changes the address, it would be the same token, and the token could be used to spend from the above contract here.

This makes it possible to have a single payment address: the contract. Spending any number of UTXOs is done by spending a single P2PKH output, and updating it with the new address at the same time.

This makes it possible to reuse a P2SH address without ever having to reuse the key! This is because token is the key, and token's owner can change on each spend.

Author
Account Strength
100%
Account Age
3 years
Verified Email
Yes
Verified Flair
No
Total Karma
10,751
Link Karma
3,555
Comment Karma
6,289
Profile updated: 6 days ago
Posts updated: 8 months ago

Subreddit

Post Details

We try to extract some basic information from the post title. This is not always successful or accurate, please use your best judgement and compare these values to the post title and body for confirmation.
Posted
2 years ago