#Operation Formatters

#Formatting RC delegation operations

import { createHiveChain, ResourceCreditsOperation } from '@hiveio/wax'; const chain = await createHiveChain(); const tx = await chain.createTransaction(); tx.pushOperation(new ResourceCreditsOperation() .delegate("initminer", 4127361273, "gtg", "null") .removeDelegation("initminer", "null") .authorize("initminer")); const output = chain.formatter.format(tx.transaction.operations); console.log(output);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Output
[{ custom_json: { delegatees: [ "gtg", "null" ], from: "initminer", rc: { amount: "4127361273", nai: "@@000000037", precision: 6, } } }, { custom_json: { delegatees: [ "null" ], from: "initminer", rc: { amount: "0", nai: "@@000000037", precision: 6, } } }]

#Formatting community operations

import { createHiveChain, CommunityOperation } from '@hiveio/wax'; const chain = await createHiveChain(); const tx = await chain.createTransaction(); tx.pushOperation(new CommunityOperation() .flagPost("mycomm", "gtg", "first-post", "note") .mutePost("mycomm", "gtg", "first-post", "note") .pinPost("mycomm", "gtg", "first-post") .subscribe("mycomm") .unmutePost("mycomm", "gtg", "first-post", "note") .unpinPost("mycomm", "gtg", "first-post") .unsubscribe("mycomm") .setUserTitle("mycomm", "gtg", "first-post") .updateProps("mycomm", { title: "Custom title" }) .authorize("gtg")); const output = chain.formatter.format(tx.transaction.operations); console.log(output);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Output
[{ custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.FLAG_POST, account: "gtg", permlink: "first-post", notes: "note", props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.MUTE_POST, account: "gtg", permlink: "first-post", notes: "note", props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.PIN_POST, account: "gtg", permlink: "first-post", notes: undefined, props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.SUBSCRIBE, account: undefined, permlink: undefined, notes: undefined, props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.UNMUTE_POST, account: "gtg", permlink: "first-post", notes: "note", props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.UNPIN_POST, account: "gtg", permlink: "first-post", notes: undefined, props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.UNSUBSCRIBE, account: undefined, permlink: undefined, notes: undefined, props: undefined, title: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.SET_USER_TITLE, account: "gtg", title: "first-post", permlink: undefined, notes: undefined, props: undefined } } }, { custom_json: { accounts: [ "gtg" ], community: "mycomm", data: { action: ECommunityOperationActions.UPDATE_PROPS, props: { about: "", description: "", title: "Custom title", flag_text: "", is_nsfw: false, lang: "en", }, account: undefined, permlink: undefined, notes: undefined, title: undefined } } }]

#Formatting follow operations

import { createHiveChain, FollowOperation } from '@hiveio/wax'; const chain = await createHiveChain(); const tx = await chain.createTransaction(); tx.pushOperation(new FollowOperation() .followBlacklistBlog("initminer", "gtg", "null") .followMutedBlog("initminer", "gtg") .resetAllBlog("initminer", "gtg", "null") .resetBlacklistBlog("initminer", "gtg") .resetFollowBlacklistBlog("initminer", "gtg", "null") .resetFollowMutedBlog("initminer", "gtg") .unblacklistBlog("initminer", "gtg", "null") .unfollowBlacklistBlog("initminer", "gtg") .unfollowBlog("initminer", "gtg", "null") .unfollowMutedBlog("initminer", "gtg") .reblog("initminer", "gtg", "first-post") .authorize("initminer")); const output = chain.formatter.format(tx.transaction.operations); console.log(output);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Output
[{ custom_json: { action: EFollowActions.FOLLOW_BLACKLIST, follower: "initminer", following: [ "gtg", "null" ] } }, { custom_json: { action: EFollowActions.FOLLOW_MUTED, follower: "initminer", following: [ "gtg" ] } }, { custom_json: { action: EFollowActions.RESET_ALL_LISTS, follower: "initminer", following: [ "gtg", "null" ] } }, { custom_json: { action: EFollowActions.RESET_BLACKLIST, follower: "initminer", following: [ "gtg" ] } }, { custom_json: { action: EFollowActions.RESET_FOLLOW_BLACKLIST, follower: "initminer", following: [ "gtg", "null" ] } }, { custom_json: { action: EFollowActions.RESET_FOLLOW_MUTED_LIST, follower: "initminer", following: [ "gtg" ] } }, { custom_json: { action: EFollowActions.UNBLACKLIST, follower: "initminer", following: [ "gtg", "null" ] } }, { custom_json: { action: EFollowActions.UNFOLLOW_BLACKLIST, follower: "initminer", following: [ "gtg" ] } }, { custom_json: { action: EFollowActions.UNFOLLOW, follower: "initminer", following: [ "gtg", "null" ] } }, { custom_json: { action: EFollowActions.UNFOLLOW_MUTED, follower: "initminer", following: [ "gtg" ] } }, { custom_json: { account: "initminer", author: "gtg", permlink: "first-post" } }]

#Formatting witness properties object

You can also parse the serialized witness_set_properties operation - props property from the chain:

import { createHiveChain } from '@hiveio/wax'; const chain = await createHiveChain(); // Data from blockchain const witness_props = { type: "witness_set_properties_operation", value: { owner: "null", props: [ ["new_signing_key","3553544d365471534a61533161526a367036795a456f35786963583762764c6872666456716935546f4e724b78485533465242456457"], ["key", "029072da2e84ebd6eb520f944db3d1af718500b0f1ddf60e11e986f990acddd524"] ], extensions: [] } }; const output = chain.formatter.format(witness_props); console.log(output.value.props);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Output
{ key: 'STM5z76mjZJnTZHHZjgnFxFadTb1ztc6R7EuDgCzd6dNiv6ETB2tj', new_signing_key: 'STM2nf9tLEWSdisd5pjocs2odhD3PvsnJTfMmK7Gm2Z2x8CvpXs1WC', account_creation_fee: undefined, url: undefined, hbd_exchange_rate: undefined, maximum_block_size: undefined, hbd_interest_rate: undefined, account_subsidy_budget: undefined, account_subsidy_decay: undefined }