As of 0.0.6
, you can now sync the Steem Engine sidechain. So not only can you subscribe to the Steem Engine custom_json
ids on the mainnet, you can also get the responses from contracts once they've been processed on the Steem Engine sidechain.
One thing this might be handy for is when you write an app that needs to confirm. Just broadcasting to the mainnet isn't enough. But if you're running meeseeker, you can subscribe to the steem_engine:transaction
redis channel and once the transaction confirms, your app will be notified.
Or, if you're only interested in certain contracts and/or actions (e.g. all market
actions or only specific actions like market:sell
, you can subscribe to those specific channels as well.
Related commit: https://github.com/inertia186/meeseeker/commit/a509d528fb983caa973f83952a20c73128966bc8
What Changed
Since accessing the sidechain is achieved by making requests to api.steem-engine.com
, I added a simple Agent class to meeseeker called Meeseeker::SteemEngine::Agent
. This manages the specific RPC requests needed to stream the sidechain.
This agent is used by Meeseeker::SteemEngine::FollowerJob
to poll the sidechain for new blocks as they happen.
I've updated the README.md
file to include the following:
Steem Engine Support
As of v0.0.6
, meeseeker can also follow the Steem Engine side-chain. This is optional and requires a separate process.
To sync Steem Engine to your local redis source (also defaults to redis://127.0.0.1:6379/0
):
meeseeker sync steem_engine
When running meeseeker sync steem_engine
, the following channels are available:
steem_engine:block
steem_engine:transaction
steem_engine:market:buy
steem_engine:market:cancel
steem_engine:market:sell
steem_engine:sscstore:buy
steem_engine:steempegged:buy
steem_engine:steempegged:removeWithdrawal
steem_engine:steempegged:withdraw
steem_engine:tokens:create
steem_engine:tokens:issue
steem_engine:tokens:transfer
steem_engine:tokens:updateMetadata
steem_engine:tokens:updateUrl
The above "channel/action" patterns are the ones that are known that the time of writing. In addition, if a new contract is added or updated, meeseeker will automatically publish to these corresponding channels as they appear, without needing to update or even restart meeseeker.
See main section on Using SUBSCRIBE
.
Once your SteemEngine sync has started, you can begin doing queries against redis, for example, in the redis-cli
:
redis-cli --scan --pattern 'steem_engine:*:tokens:transfer'
This returns the keys, for example:
steem_engine:18000:d414373db84e6a642f289641ea1433fda22b8a4d:0:tokens:transfer
steem_engine:18004:c9e06c8449d2d04b4a0a31ec7b80d2f62009a5f0:0:tokens:transfer
steem_engine:17994:faf097391760ad896b19d5854e2822f62dee284b:0:tokens:transfer
See main section on Using SCAN
.
Other than a new namespace, the process for pub/sub and scan is the same as the mainnet.
To update your gem:
gem update meeseeker
Previous posts: