先来简单介绍一下操作、事务以及区块
亦即:
区块链由区块组成、区块中包含事务,事务中包含操作,操作是我们在STEEM上活动的基本单位。
以发帖为例,我们发表帖子,可以选择发帖的同时投票,也可以选择不投票。
如果勾选了箭头所示的单选框,就会在发帖的同时给帖子投票。
发帖、投票是两个独立的操作,
发帖的同时给帖子投票就是把两个操作放到一个事务中
以我的帖子为例,发帖和投票在一个事务中有相同的transaction_id
如果我们在steemd上打开这个transaction就会看到里边有两项操作,发帖和投票。
Steemit Python 库也支持发帖的同时投票。
如果设置了对应参数,则在发帖操作以外
post_op = operations.Comment(
**{"parent_author": parent_author,
"parent_permlink": parent_permlink,
"author": author,
"permlink": permlink,
"title": title,
"body": body,
"json_metadata": json_metadata}
)
ops = [post_op]
额外增加了投票操作
if self_vote:
vote_op = operations.Vote(
**{'voter': author,
'author': author,
'permlink': permlink,
'weight': 10000,
}
)
ops.append(vote_op)
通过这个例子可知,Python库是支持把多个操作放到一个事务中的
Steem 官方Python 库同时提供了一个将多个操作放到一个事务中的例子
详情可以参考这里:
https://github.com/steemit/steem-python/blob/master/docs/examples.rst
Batching Operations
Most of the time each transaction contains only one operation (for example, an upvote, a transfer or a new post). We can however cram multiple operations in a single transaction, to achieve better efficiency and size reduction.
This script will also teach us how to create and sign transactions ourselves.
代码太长,感兴趣的朋友自己去看吧。
我修改了这个例子,并针对我的一个回复进行测试:
(两个操作在一个事务中,相同的transaction_id)
(两个操作在一个事务中,详情)
使用使用官方Python库,将多个操作(operation)放入一个事务中(transaction)是切实可行的。