New BSIP: Allow arbitrary data in blocks and transactions
- 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.