2017年11月16日,我发布了一篇文章STEEM 签名学习笔记 (一)/ 读操作与写操作,在这篇文章中,我把STEEM区块链的操作分为两大类:读和写。
(图源 :pixabay)
并根据我的理解,给出如下定义:
- 读操作:从区块链获取信息
- 写操作:对区块链进行操作,将信息写入到区块链
同时在文章中,我给出读写的示例,然而读操作还好,其实就是调用API获取信息即可,写操作这块我是取巧的操作,使用steem-python来生成对应的transaction并签名,然后使用broadcast API广播。
但是其实对于transaction是如何签名的,我一定也不了解,反正steem-python满足大部分需求,我也懒得去学了,当然怕自己学不明白也是一方面。
Hive分叉后,steem-python等库都有一些故障,尽管各路大牛很快修复了故障,让其好用,但是让我意识到,如果不了解底层的工作原理,那么出问题的时候就会抓狂,要么做一些是是而非的修改,要么就只能被动等待了。
于是这阶段每天都耗费一些时间去学习签名相关的内容,总算有了一些眉目。对于区块链的写操作,了解的更为具体了。
那么到底如何对STEEM/HIVE区块链进行写操作呢?我对其总结如下:
- 设置我们要进行的操作(operations)
- 将操作放到事务中(transaction)
- 设置事务的TaPos信息(ref_block_)*
- 设置事务的超时时间(expiration)
- 序列化事务(serialize)
- 用chain_id和序列化后的事务来生成摘要(digest)
- 对摘要进行签名(sign)并附加到事务中
- 广播事务(broadcast)
弄清了写操作,并弄清其中每个细节之后,我们就可以做任意操作了,比如说投票操作。
依据之前学习的成功,我没用steem-python、beem等库,也成功地生成了签名后的transaction:
Reveal spoiler
并将上述transaction成功地广播到Hive区块链上:
Reveal spoiler
两年半过去了,总算填上了写操作这个大坑。