Quickstart ========== Hive/Steem blockchain --------------------- Nodes for using beem with the Hive blockchain can be set by the command line tool with: .. code-block:: bash beempy updatenodes --hive Nodes for the Hive blockchain are set with .. code-block:: bash beempy updatenodes Hive nodes can be set in a python script with .. code-block:: python from beem import Hive from beem.nodelist import NodeList nodelist = NodeList() nodelist.update_nodes() nodes = nodelist.get_hive_nodes() hive = Hive(node=nodes) print(hive.is_hive) Steem nodes can be set in a python script with .. code-block:: python from beem import Steem from beem.nodelist import NodeList nodelist = NodeList() nodelist.update_nodes() nodes = nodelist.get_steem_nodes() hive = Steem(node=nodes) print(hive.is_hive) Hive ---- The hive object is the connection to the Hive blockchain. By creating this object different options can be set. .. note:: All init methods of beem classes can be given the ``blockchain_instance=`` parameter to assure that all objects use the same steem object. When the ``blockchain_instance=`` parameter is not used, the steem object is taken from get_shared_blockchain_instance(). :func:`beem.instance.shared_blockchain_instance` returns a global instance of steem. It can be set by :func:`beem.instance.set_shared_blockchain_instance` otherwise it is created on the first call. .. code-block:: python from beem import Hive from beem.account import Account hive = Hive() account = Account("test", blockchain_instance=hive) .. code-block:: python from beem import Hive from beem.account import Account from beem.instance import set_shared_blockchain_instance hive = Hive() set_shared_blockchain_instance(hive) account = Account("test") Wallet and Keys --------------- Each account has the following keys: * Posting key (allows accounts to post, vote, edit, resteem and follow/mute) * Active key (allows accounts to transfer, power up/down, voting for witness, ...) * Memo key (Can be used to encrypt/decrypt memos) * Owner key (The most important key, should not be used with beem) Outgoing operation, which will be stored in the steem blockchain, have to be signed by a private key. E.g. Comment or Vote operation need to be signed by the posting key of the author or upvoter. Private keys can be provided to beem temporary or can be stored encrypted in a sql-database (wallet). .. note:: Before using the wallet the first time, it has to be created and a password has to set. The wallet content is available to beempy and all python scripts, which have access to the sql database file. Creating a wallet ~~~~~~~~~~~~~~~~~ ``hive.wallet.wipe(True)`` is only necessary when there was already an wallet created. .. code-block:: python from beem import Hive hive = Hive() hive.wallet.wipe(True) hive.wallet.unlock("wallet-passphrase") Adding keys to the wallet ~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: python from beem import Steem hive = Hive() hive.wallet.unlock("wallet-passphrase") hive.wallet.addPrivateKey("xxxxxxx") hive.wallet.addPrivateKey("xxxxxxx") Using the keys in the wallet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: python from beem import Hive hive = Hive() hive.wallet.unlock("wallet-passphrase") account = Account("test", blockchain_instance=hive) account.transfer("<to>", "<amount>", "<asset>", "<memo>") Private keys can also set temporary ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: python from beem import Hive hive = Hive(keys=["xxxxxxxxx"]) account = Account("test", blockchain_instance=hive) account.transfer("<to>", "<amount>", "<asset>", "<memo>") Receiving information about blocks, accounts, votes, comments, market and witness --------------------------------------------------------------------------------- Receive all Blocks from the Blockchain .. code-block:: python from beem.blockchain import Blockchain blockchain = Blockchain() for op in blockchain.stream(): print(op) Access one Block .. code-block:: python from beem.block import Block print(Block(1)) Access an account .. code-block:: python from beem.account import Account account = Account("test") print(account.balances) for h in account.history(): print(h) A single vote .. code-block:: python from beem.vote import Vote vote = Vote(u"@gtg/ffdhu-gtg-witness-log|gandalf") print(vote.json()) All votes from an account .. code-block:: python from beem.vote import AccountVotes allVotes = AccountVotes("gtg") Access a post .. code-block:: python from beem.comment import Comment comment = Comment("@gtg/ffdhu-gtg-witness-log") print(comment["active_votes"]) Access the market .. code-block:: python from beem.market import Market market = Market("HBD:HIVE") print(market.ticker()) Access a witness .. code-block:: python from beem.witness import Witness witness = Witness("gtg") print(witness.is_active) Sending transaction to the blockchain ------------------------------------- Sending a Transfer .. code-block:: python from beem import Hive hive = Hive() hive.wallet.unlock("wallet-passphrase") account = Account("test", blockchain_instance=hive) account.transfer("null", 1, "SBD", "test") Upvote a post .. code-block:: python from beem.comment import Comment from beem import Hive hive = Hive() hive.wallet.unlock("wallet-passphrase") comment = Comment("@gtg/ffdhu-gtg-witness-log", blockchain_instance=hive) comment.upvote(weight=10, voter="test") Publish a post to the blockchain .. code-block:: python from beem import Hive hive = Hive() hive.wallet.unlock("wallet-passphrase") hive.post("title", "body", author="test", tags=["a", "b", "c", "d", "e"], self_vote=True) Sell HIVE on the market .. code-block:: python from beem.market import Market from beem import Hive hive.wallet.unlock("wallet-passphrase") market = Market("HBD:HIVE", blockchain_instance=hive) print(market.ticker()) market.hive.wallet.unlock("wallet-passphrase") print(market.sell(300, 100)) # sell 100 HIVE for 300 HIVE/HBD