Repository
beem is a python library and command line tool for HIVE. The current version is 0.24.18.
There is also a discord channel for beem: https://discord.gg/4HM592V
The newest beem version can be installed by:
pip install -U beem
Check that you are using hive nodes. The following command
beempy updatenodes --hive
updates the nodelist and uses only hive nodes. After setting hive as default_chain, beempy updatenodes
can be used.
The list of nodes can be checked with
beempy config
and
beempy currentnode
shows the currently connected node.
Changelog for 0.24.18
- Adapt account history on api changes and fixes issue #267
- Speed up history call, when limit is below 1000
- Improve unit tests for account history
- Fix estimate_virtual_op_num, when get_account_history returns an empty entry for an index
- Implement _get_operation_filter and use filter operations in history and history_reverse on the https://api.hive.blog api node
Changelog for 0.24.17
- Fixed a bug when using skip_account_check=True
- Refactor code in Account
- Add more unit tests
Changelog for 0.24.16
- Fix bug in bytes representation of an Amount which prevents sending certain amounts (e.g. 8.19 HIVE)
- Added unit tests to check if 8.190 is correctly working
Fixing rounding errors in transfers
In version 0.24.16, a rounding bug was fixed which prevents sending 8.19 HIVE. This bug leads to a wrong signature, which then prevents broadcasting the transfer op. This is now fixed.
Improved error handling in account history
The account history and history_reverse functions have now a better error handling.
The returned index is now checked, which prevents that account history elements were added twice to the output.
New filtered account history
Currently the new filter parameter are only implemented at "https://api.hive.blog" API node.
On this node, the get_account_history call has two more parameters: operation_filter_low and operation_filter_high.
These parameters are a bitmask of all possible operation names.
They can be obtained with the _get_operation_filter
function:
operation_filter_low, operation_filter_high = account._get_operation_filter(only_ops=["transfer", "vote"])
which results in operation_filter_low=5 and operation_filter_high=0.
The history
and history_reverse
function from beem will now use the operation_filter when
"https://api.hive.blog" is set as node. This speeds up receiving account history data up to 100 %.
History reverse with operation_filter
from beem.account import Account
from beem import Hive
import time
hive = Hive("https://api.hive.blog")
acc = Account("holger80", blockchain_instance=hive)
start_time = time.time()
n_op = acc.virtual_op_count()
transfer_ops = list(acc.history_reverse(only_ops=["transfer"]))
print("Time needed to search all transfers in %d history elements: %.2f s" % (n_op, (time.time() - start_time)))
print("%d transfer op have been found" % (len(transfer_ops)))
returns
Time needed to search all transfers in 283514 history elements: 145.66 s
4666 transfer op have been found
History with operation_filter
from beem.account import Account
from beem import Hive
import time
hive = Hive("https://api.hive.blog")
acc = Account("holger80", blockchain_instance=hive)
start_time = time.time()
n_op = acc.virtual_op_count()
transfer_ops = list(acc.history(only_ops=["transfer"]))
print("Time needed to search all transfers in %d history elements: %.2f s" % (n_op, (time.time() - start_time)))
print("%d transfer op have been found" % (len(transfer_ops)))
returns
Time needed to search all transfers in 283517 history elements: 144.55 s
4666 transfer op have been found
History without operation filter
Now we do the same without filtering:
from beem.account import Account
from beem import Hive
import time
hive = Hive("https://api.hive.blog")
acc = Account("holger80", blockchain_instance=hive)
start_time = time.time()
n_op = acc.virtual_op_count()
transfer_ops = []
for op in acc.history():
if op["type"] == "transfer":
transfer_ops.append(op)
print("Time needed to search all transfers in %d history elements: %.2f s" % (n_op, (time.time() - start_time)))
print("%d transfer op have been found" % (len(transfer_ops)))
returns
Time needed to search all transfers in 283518 history elements: 261.63 s
4666 transfer op have been found
If you like what I do, consider casting a vote for me as witness on Hivesigner or on PeakD
Thanks!
CO2Fund by, e.g., supporting posts, banner presentation, SP/HP delegation, dustsweeper gifts, helpful tools, etc.Upvoted to thank you @holger80 for supporting the
Your current Rank (124) in the battle Arena of Holybread has granted you an Upvote of 30%
Very useful, thank you for your effort!
$tangent@holger80,
Cheers~
Congratulations, @theguruasia You Successfully Trended The Post Shared By @holger80.
You Utilized 3/3 Daily Summon Bot Calls.
TAN Current Market Price : 0.203 HIVE
2.051 TAN & Curators Made 2.051 TAN.Congratulations @holger80, You Earned
Join CORE / VAULT Token Discord Channel or Trade TANGENT Token
TAN Current Market Price : 0.250 HIVE
Congratulations @holger80! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s) :
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP