STEEM 签名学习笔记 (一)/ 读操作与写操作 by oflyhigh

View this thread on steempeak.com
· @oflyhigh ·
$76.52
STEEM 签名学习笔记 (一)/ 读操作与写操作
好吧,这几天有点不务正业了,一会上这个车一会上那个车的,没有踏下心来好好学习。

距离上一个总结贴已经过去9天了:
[温故而知新 /比特币(Bitcoin)有关的 Base58 & Base58Check、私钥(Private KEY)、公钥(Public KEY)、地址(Address)](https://steemit.com/cn/@oflyhigh/bitcoin-base58-and-base58check-private-key-public-key-address)

然而在签名学习的路上,我却没有一点进展,惭愧之极。今天开始,好好学习!

----

# STEEM区块链的两种操作

谈签名之前,先说一下我对操作STEEM区块链的理解,不考虑什么P2P节点,Witness咋出块之类的,从客户端的角度,我理解大致可以分为两种操作。

* ***读操作:从区块链获取信息***
* ***写操作:对区块链进行操作,将信息写入到区块链***

举例来讲,我们读取用户信息,我们读帖子,查看帖子金额,查看Flowwer,查询谁给我转账等等,都是读操作。

而我们发帖,投票,转账,追随别人,拉黑别人等,这些都是写操作。

以我的公众号为例:
>`@steemid 查询账户信息`
`@steemid?vv 查询投票价值`
`@steemid?as 查询账户资产`
`@steemid?mt 查询谁拉黑你`
`@steemid?po 查询最近文章`
`@steemid?dg 查询SP委派`
`@steemid?fd 查询用户feed`
`?tk / ?ticker 查询市场报价`

这些统统都是读操作。


# STEEM区块链的两种操作示例

我们分别通过JSON RPC请求,来演示一下两种操作。

#### 读操作:读取帖子信息

最较为常用的读操作就是读贴了,我们每天都耗费大量的时间在做这个事情。

在database_api.h 中,读贴操作定义如下:
`discussion           get_content( string author, string permlink )const;`

假设我们要读这篇帖子:https://steemit.com/cn/@oflyhigh.test/test

我们通过JSON RPC调用如下:
`curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["database_api", "get_content", ["oflyhigh.test", "test"]], "id": 1}' https://steemd.steemit.com`

如果成功,就会返回帖子的信息,碍于返回内容太长,我只截取部分内容
![](https://steemitimages.com/DQmQX8sihYbp6JX6HQotq3K7jXPaETgfy6Mzdg6J1JCHeH5/image.png)
(已经进行了格式化处理)

其它诸如读取用户信息,读取追随者等等,大同小异。

####  写操作:投票(点赞)

对于写操作,我们每天做的最多的莫过于点赞和发帖了。

发帖相对复杂一些,我们以投票为例。

投票在STEEM区块链中表示为:vote_operation 
![](https://steemitimages.com/DQmbaqzuGW2CdvT58ht1UZMvQsCSdqR37YqMREFn5did4A9/image.png)

然后我们需要将其打包进transaction并对其进行签名。

假设我要对这个帖子进行投票: https://steemit.com/test/@oflyhigh.test/6r3tt4-test
那么一个***打包并签名好的transaction***是这个样子
![](https://steemitimages.com/DQmawUBGAnYtFx86pT4Ji4WNiaET3AdhoHsLdXeiai2SYmf/image.png)

接下来我们使用`broadcast_transaction` API对其进行广播。`broadcast_transaction` 定义如下:
`void broadcast_transaction(const signed_transaction& trx);`

使用curl进行广播操作
`curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["network_broadcast_api", "broadcast_transaction", [{"expiration": "2017-11-16T13:13:17", "extensions": [], "operations": [["vote", {"author": "oflyhigh.test", "permlink": "6r3tt4-test", "voter": "oflyhigh", "weight": 2000}]], "ref_block_num": 37027, "ref_block_prefix": 1069122390, "signatures": ["20195c18fadaa84cff3e6387253289c5a6640adff6770a5600da8efd8f288016fc76e9300aacd20864e655ef098b668a2a7f7ec47f560fffc00cea13b896d8db7e"]}]], "id": 1}' https://steemd.steemit.com`

广播成功后去steemd.com 检查,可见我们的操作已经生效。
![](https://steemitimages.com/DQmUjudkq4shPcgek8MkJvLuupXaLioYbcnL1jf4yn388bY/image.png)

成功给自己小马甲加了1SBD,可以买一桶红烧牛肉面啦。
![](https://steemitimages.com/DQmc2FQGhKkw7J7KMDc9bqK4ZwFfu8Ftz98JLMAo69STLWo/image.png)

# 总结

* STEEM区块链存在读&写两种操作
* 读即从区块链上获取信息
* 写即在区块链上添加信息
* 两种操作都可以用JSON PRC API完成
* 写操作需要对数据进行签名

你可能会问,你也没说签名啥事啊?咳咳,是没说,我还没搞懂呢不是嘛,慢慢来,急不得,至少通过这节,我们知道了***签名是很重要的事情***。

谁丢的西红柿,谁丢的鸡蛋?
不说了,我回家去做西红柿鸡蛋汤了。

(本文为个人理解&笔记,如果谬误,烦请不吝赐教)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 177 others
properties (23)
post_id17,858,520
authoroflyhigh
permlink3ppeth-steem
categorysteemdev
json_metadata"{"app": "steemit/0.1", "format": "markdown", "links": ["https://steemit.com/cn/@oflyhigh/bitcoin-base58-and-base58check-private-key-public-key-address", "https://steemit.com/cn/@oflyhigh.test/test", "https://steemit.com/test/@oflyhigh.test/6r3tt4-test"], "image": ["https://steemitimages.com/DQmQX8sihYbp6JX6HQotq3K7jXPaETgfy6Mzdg6J1JCHeH5/image.png"], "tags": ["steemdev", "steem", "signature", "cn", "cn-programming"]}"
created2017-11-16 13:25:21
last_update2017-11-16 13:25:21
depth0
children10
net_rshares36,380,328,259,900
last_payout2017-11-23 13:25:21
cashout_time1969-12-31 23:59:59
total_payout_value63.548 SBD
curator_payout_value12.968 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length2,869
author_reputation1,148,153,621,496,884
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (241)
@nazarwills ·
Very good i upvote
properties (22)
post_id17,859,738
authornazarwills
permlinkre-oflyhigh-3ppeth-steem-20171116t134058909z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-16 13:41:00
last_update2017-11-16 13:41:00
depth1
children0
net_rshares0
last_payout2017-11-23 13:41:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length18
author_reputation2,233,000,852,579
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@deanliu ·
請教一下0.001SBD在代碼層面,能算得上是gift嗎?我很好奇~~~~
properties (22)
post_id17,861,751
authordeanliu
permlinkre-oflyhigh-3ppeth-steem-20171116t140340347z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-16 14:03:42
last_update2017-11-16 14:03:42
depth1
children1
net_rshares0
last_payout2017-11-23 14:03:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length37
author_reputation726,291,750,173,620
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@oflyhigh ·
![](https://steemitimages.com/DQmNnHheXWnmCzSpxqkmX1fQ85z3oHgJ3pUuHWjG6BYJrjq/image.png)
properties (22)
post_id17,861,963
authoroflyhigh
permlinkre-deanliu-re-oflyhigh-3ppeth-steem-20171116t140604838z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "image": ["https://steemitimages.com/DQmNnHheXWnmCzSpxqkmX1fQ85z3oHgJ3pUuHWjG6BYJrjq/image.png"], "tags": ["steemdev"]}"
created2017-11-16 14:06:06
last_update2017-11-16 14:06:06
depth2
children0
net_rshares0
last_payout2017-11-23 14:06:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length88
author_reputation1,148,153,621,496,884
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@shanishah ·
![I-Love-This-Post-Funny-Horse-Meme-Picture.jpg](https://steemitimages.com/DQmUZqXtAbmRYpEA3eWB1M2RYD67CfBkim8bypD7u9XcCTs/I-Love-This-Post-Funny-Horse-Meme-Picture.jpg)
👍  
properties (23)
post_id17,863,517
authorshanishah
permlinkre-oflyhigh-3ppeth-steem-20171116t142441101z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "image": ["https://steemitimages.com/DQmUZqXtAbmRYpEA3eWB1M2RYD67CfBkim8bypD7u9XcCTs/I-Love-This-Post-Funny-Horse-Meme-Picture.jpg"], "tags": ["steemdev"]}"
created2017-11-16 14:24:39
last_update2017-11-16 14:24:39
depth1
children0
net_rshares140,500,746
last_payout2017-11-23 14:24:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length169
author_reputation13,945,832,491,957
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@pp1166 ·
不明觉厉!再丢两个鸡蛋明早煮着吃吧
properties (22)
post_id17,865,775
authorpp1166
permlinkre-oflyhigh-3ppeth-steem-20171116t145323398z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-16 14:53:30
last_update2017-11-16 14:53:30
depth1
children1
net_rshares0
last_payout2017-11-23 14:53:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length17
author_reputation39,104,093,461
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@oflyhigh ·
谢谢
properties (22)
post_id17,953,286
authoroflyhigh
permlinkre-pp1166-re-oflyhigh-3ppeth-steem-20171117t133440142z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-17 13:34:42
last_update2017-11-17 13:34:42
depth2
children0
net_rshares0
last_payout2017-11-24 13:34:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length2
author_reputation1,148,153,621,496,884
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@chann ·
我假装我看懂了
👍  
properties (23)
post_id17,866,766
authorchann
permlinkre-oflyhigh-3ppeth-steem-20171116t150709171z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-16 15:07:09
last_update2017-11-16 15:07:09
depth1
children0
net_rshares9,253,925,701
last_payout2017-11-23 15:07:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length7
author_reputation11,809,247,432,396
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@ramzukhan ·
thank you for sharing
properties (22)
post_id17,867,244
authorramzukhan
permlinkre-oflyhigh-3ppeth-steem-20171116t151345886z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-16 15:13:48
last_update2017-11-16 15:13:48
depth1
children0
net_rshares0
last_payout2017-11-23 15:13:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length21
author_reputation-16,468,978,654
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@speeding ·
不用curl,直接写程序调用rpc更方便
👍  
properties (23)
post_id17,940,064
authorspeeding
permlinkre-oflyhigh-3ppeth-steem-20171117t101736880z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-17 10:17:36
last_update2017-11-17 10:17:36
depth1
children1
net_rshares617,240,000
last_payout2017-11-24 10:17:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length20
author_reputation1,271,875,039,650
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@oflyhigh ·
curl便于演示
properties (22)
post_id17,953,248
authoroflyhigh
permlinkre-speeding-re-oflyhigh-3ppeth-steem-20171117t133410323z
categorysteemdev
json_metadata"{"app": "steemit/0.1", "tags": ["steemdev"]}"
created2017-11-17 13:34:12
last_update2017-11-17 13:34:12
depth2
children0
net_rshares0
last_payout2017-11-24 13:34:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length8
author_reputation1,148,153,621,496,884
root_title"STEEM 签名学习笔记 (一)/ 读操作与写操作"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000