bitshares / bitshares/bsips

New BSIP: Allow arbitrary data in blocks and transactions

Open
#220 2 comments 0 reactions 0 assignees View on GitHub
chain utility
Dominant language
No language data
Stars
59
Forks
86
PR merge metrics
No merged PRs in 30d

Description

### Motivation and Rationale
Arbitrary data in blocks can be used to analyze which blocks are signed by which node software and what versions. For example, a bitcoin miner can put a short string in the [coinbase transaction](https://en.bitcoin.it/wiki/Coinbase) of a new block, which may contain useful data for analysis.

Similarly, arbitrary data in signed transactions can be used to track which transactions are signed by which client software and what versions. This topic was brought up recently in discussions about workers when debating how to evaluate a GUI worker's performance e.g. how many users are using the worker's product(s) and how much fee the users contributed to the network.

Although tracking (of client apps) can be done by client apps adding a custom operation in each transaction, it has the disadvantage that it would pollute the account history.

Another option for tracking (of client apps) is to make use of data fields which would be added by #185, however it is on the layer of operations thus is not as good. For example, Steem has a `json_metadata` field in `comment_operation` so it can be used to track data about posting (see https://steemd.com/tx/fc71ea90002a68083d78faec78380a581ad4694d), but other operations e.g. `vote` or `transfer` doesn't have such a field so less data can be used for analysis.

### Implementation

We can add an optional field to `extensions` of `block_header` class as well as `transaction` class.

### Discussion

Pros and cons about exposing version data was discussed in https://github.com/bitshares/bsips/pull/120. This document mainly focuses on adding arbitrary data which is not necessarily soft versions, but not for forcing the node operators to publish special data, nor for applying special chain logic (aka hard fork) around the data.

### See Also
* https://github.com/bitshares/bsips/issues/185
* https://github.com/bitshares/bsips/pull/120
* https://github.com/bitshares/bitshares-core/pull/1422

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.