Published: 04 Aug 2018 › Updated: 04 Aug 2018
bitshares研究系列【custom operation】
在Bitshares中看到有个叫“custom_operation”的,来看一下这个是干什么的?
custom_operation定义
custom.hpp
struct custom_operation : public base_operation
{
struct fee_parameters_type {
uint64_t fee = GRAPHENE_BLOCKCHAIN_PRECISION;
uint32_t price_per_kbyte = 20000;
};
asset fee;
account_id_type payer;
flat_set<account_id_type> required_auths;
uint16_t id = 0;
vector<char> data;
account_id_type fee_payer()const { return payer; }
void validate()const;
share_type calculate_fee(const fee_parameters_type& k)const;
};
custom_operation交易
再来通过cli_wallet的建立operation,先取得operation的数据格式,如下:
get_prototype_operation custom_operation
[
35,{
"fee": {
"amount": 0,
"asset_id": "1.3.0"
},
"payer": "1.2.0",
"required_auths": [],
"id": 0,
"data": ""
}
]
手动建立交易4步曲:
1、
unlocked >>> begin_builder_transaction
begin_builder_transaction
0
2、
unlocked >>> add_operation_to_builder_transaction 0 [35,{"fee": {"amount": 0,"asset_id":"1.3.0"},"payer": "1.2.31","required_auths": [],"id": 9999,"data": ""}]
add_operation_to_builder_transaction 0 [35,{"fee": {"amount": 0,"asset_id":"1.3.0"},"payer": "1.2.31","required_auths": [],"id": 9999,"data": ""}]
null
3、
unlocked >>> set_fees_on_builder_transaction 0 BTS
set_fees_on_builder_transaction 0 BTS
{
"amount": 100273,
"asset_id": "1.3.0"
}
4、
unlocked >>> sign_builder_transaction 0 true
sign_builder_transaction 0 true
{
"ref_block_num": 58488,
"ref_block_prefix": 422249092,
"expiration": "2018-08-02T08:43:12",
"operations": [[
35,{
"fee": {
"amount": 100273,
"asset_id": "1.3.0"
},
"payer": "1.2.31",
"required_auths": [],
"id": 9999,
"data": ""
}
]
],
"extensions": [],
"signatures": [
"2024c3b603d1fec11d2d206f5c75873560ae832a33e5436055abdb29a5786399386dc2e5f488f24e34c76fc6a8f083d1641e41d3f59eb9a21abfd4991a61eb609d"
]
}
custom_operation做什么用?
想到几个地方可以用上:
- 用data来构造一些数据结构,链可以解析数据结构做处理,相当于有了一个子集
- data用来存储数据,例如想存储一些数据,可以把数据加密后放在data字段中,通过发送这个交易能记录到块上,以后也可以取这个块并解密,而不必记到其它地方了;
- 用这个交易做签名验证,例如用户是否拥有对应私钥,如果签名过了则私钥正确。
Leave bitshares研究系列【custom operation】 to:
Read more #bitshares posts
Best Posts From 老鱼
We have not curated any of chaimyu's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.