diff --git a/README.rst b/README.rst index a4996c08c3fea8da357c48fa799b67bbd7d26670..aaa663d9898daff7d737ff06bc0457ba6f48b444 100644 --- a/README.rst +++ b/README.rst @@ -52,10 +52,13 @@ Run tests after install:: Changelog ========= -0.18.1 +0.19.1 ----- * Replaced all BitShares by Steem * Flake8 fixed * Unit tests are working -* renamed to steempy \ No newline at end of file +* renamed to steempy +* Docs fixed +* Signing fixed +* pysteem: Account, Amount, Asset, Block, Blockchain, Instance, Memo, Message, Notify, Price, Steem, Transactionbuilder, Vote, Witness are working \ No newline at end of file diff --git a/docs/account.rst b/docs/account.rst index c01405cfe366b3d197ec4879d2789f9be661a728..20826dbe55d737c1f5efcc48a5e7b25e7eda0726 100644 --- a/docs/account.rst +++ b/docs/account.rst @@ -5,13 +5,13 @@ Obtaining data of an account. .. code-block:: python - from steem.account import Account - account = Account("xeroc") + from steempy.account import Account + account = Account("test") print(account) print(account.balances) -.. autoclass:: steem.account.Account +.. autoclass:: steempy.account.Account :members: -.. autoclass:: steem.account.AccountUpdate +.. autoclass:: steempy.account.AccountUpdate :members: diff --git a/docs/amount.rst b/docs/amount.rst index 361b3efcb91699e70eab384d4de5b1ae0ceef1ea..2412943dff41399620607f30378bfc692149b0b8 100644 --- a/docs/amount.rst +++ b/docs/amount.rst @@ -5,8 +5,8 @@ For the sake of easier handling of Assets on the blockchain .. code-block:: python - from steem.amount import Amount - from steem.asset import Asset + from steempy.amount import Amount + from steempy.asset import Asset a = Amount("1 USD") b = Amount(1, "USD") c = Amount("20", Asset("USD")) @@ -15,5 +15,5 @@ For the sake of easier handling of Assets on the blockchain a += b a /= 2.0 -.. autoclass:: steem.amount.Amount +.. autoclass:: steempy.amount.Amount :members: diff --git a/docs/asset.rst b/docs/asset.rst index eec9e2f9fa9efc562f90291eda43fe504f48c3ca..f4b2888020815b4a3d6783c2c9213d599de06d8a 100644 --- a/docs/asset.rst +++ b/docs/asset.rst @@ -1,5 +1,5 @@ Asset ~~~~~~ -.. autoclass:: steem.asset.Asset +.. autoclass:: steempy.asset.Asset :members: diff --git a/docs/block.rst b/docs/block.rst index 1a4105a2548faf51185049ecb6d6fd221fa1af8c..1819eadb581a91aab82ceb32a6e61ae2c8bfa018 100644 --- a/docs/block.rst +++ b/docs/block.rst @@ -5,9 +5,9 @@ Easily read data in a Block .. code-block:: python - from steem.block import Block + from steempy.block import Block from pprint import pprint pprint(Block(1)) -.. autoclass:: steem.block.Block +.. autoclass:: steempy.block.Block :members: diff --git a/docs/blockchain.rst b/docs/blockchain.rst index ec67d4cb8fdf092221aa68bb1e2002aece434d61..56f986bf41cfd74c02d1a3edbcd4101a32eb80c0 100644 --- a/docs/blockchain.rst +++ b/docs/blockchain.rst @@ -5,7 +5,7 @@ Read blockchain related data- .. code-block:: python - from steem.blockchain import Blockchain + from steempy.blockchain import Blockchain chain = Blockchain() Read current block and blockchain info @@ -29,5 +29,5 @@ Monitor for new blocks .. for operations in chain.ops(): print(operations) -.. autoclass:: steem.blockchain.Blockchain +.. autoclass:: steempy.blockchain.Blockchain :members: diff --git a/docs/configuration.rst b/docs/configuration.rst index 99818f79f82903cb3a77425c9c690d4837383bda..ea9e1240290c4a9c55d0fbf7ccbb8510041c8359 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -15,7 +15,7 @@ You can access those variables like a regular dictionary by using .. code-block:: python - from steem import Steem + from steempy import Steem steem = Steem() print(steem.config.items()) @@ -26,9 +26,9 @@ can load the configuration directly by using: .. code-block:: python - from steem.storage import configStorage as config + from steempy.storage import configStorage as config API --- -.. autoclass:: steem.storage.Configuration +.. autoclass:: steempy.storage.Configuration :members: diff --git a/docs/contribute.rst b/docs/contribute.rst index a133dbfe3fc6cd6560f65826ebb71189b727ca4a..db73514416f9822396eae79d7d3392a8ccd50370 100644 --- a/docs/contribute.rst +++ b/docs/contribute.rst @@ -8,7 +8,7 @@ Repository The *main* repository of python-steem is currently located at: - https://github.com/xeroc/python-steem + https://github.com/holgern/steempy Flow ---- @@ -26,7 +26,7 @@ How to Contribute 1. Fork or branch from the master. 2. Create commits following the commit style 3. Start a pull request to the master branch -4. Wait for a @xeroc or another member to review +4. Wait for a @holger80 or another member to review Issues ------ diff --git a/docs/index.rst b/docs/index.rst index 26ee7ebd9ecbe1908e595de33b583848cb9e8972..cae017fe84202dab6bb179347dddb7bc7bfbe2df 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -9,23 +9,23 @@ http://openalea.gforge.inria.fr/doc/openalea/doc/_build/html/source/sphinx/rest_syntax.html http://rest-sphinx-memo.readthedocs.org/en/latest/ReST.html -Welcome to pysteem's documentation! +Welcome to steempy's documentation! =============================================== -BitShares is a **blockchain-based autonomous company** (i.e. a DAC) that +Steem is a **blockchain-based autonomous company** (i.e. a DAC) that offers decentralized exchanging as well as sophisticated financial instruments as *products*. It is based on *Graphene* (tm), a blockchain technology stack (i.e. software) that allows for fast transactions and ascalable blockchain -solution. In case of BitShares, it comes with decentralized trading of +solution. In case of Steem, it comes with decentralized trading of assets as well as customized on-chain smart contracts. About this Library ------------------ -The purpose of *pysteem* is to simplify development of products and -services that use the BitShares blockchain. It comes with +The purpose of *steempy* is to simplify development of products and +services that use the Steem blockchain. It comes with * it's own (bip32-encrypted) wallet * RPC interface for the Blockchain backend @@ -52,27 +52,27 @@ Quickstart .. code-block:: python - from steem import BitShares - steem = BitShares() + from steempy import Steem + steem = Steem() steem.wallet.unlock("wallet-passphrase") steem.transfer("<to>", "<amount>", "<asset>", "[<memo>]", account="<from>") .. code-block:: python - from steem.blockchain import Blockchain + from steempy.blockchain import Blockchain blockchain = Blockchain() for op in Blockchain.ops(): print(op) .. code-block:: python - from steem.block import Block + from steempy.block import Block print(Block(1)) .. code-block:: python - from steem.account import Account - account = Account("init0") + from steempy.account import Account + account = Account("test") print(account.balances) print(account.openorders) for h in account.history(): @@ -80,7 +80,7 @@ Quickstart .. code-block:: python - from steem.market import Market + from steempy.market import Market market = Market("USD:BTS") print(market.ticker()) market.steem.wallet.unlock("wallet-passphrase") @@ -88,7 +88,7 @@ Quickstart .. code-block:: python - from steem.dex import Dex + from steempy.dex import Dex dex = Dex() dex.steem.wallet.unlock("wallet-passphrase") dex.adjust_collateral_ratio("SILVER", 3.5) @@ -106,7 +106,7 @@ General contribute support -Python-BitShares Libraries +steempy Libraries -------------------------- .. toctree:: @@ -126,8 +126,6 @@ Python-BitShares Libraries price vesting witness - worker - proposal Low Level Classes ----------------- @@ -150,7 +148,6 @@ Glossary .. toctree:: :maxdepth: 1 - mpa Indices and tables ================== diff --git a/docs/instances.rst b/docs/instances.rst index c4b3981b53168b624eb877ad7a06a4430e79974f..9b0ef55a7ae69057b091e22ab0efe9a05e88cf1b 100644 --- a/docs/instances.rst +++ b/docs/instances.rst @@ -6,11 +6,11 @@ the Objects! .. code-block:: python - from steem.instance import shared_steem_instance + from steempy.instance import shared_steem_instance - account = Account("xeroc") + account = Account("test") # is equivalent with - account = Account("xeroc", steem_instance=shared_steem_instance()) + account = Account("test", steem_instance=shared_steem_instance()) -.. automethod:: steem.instance.shared_steem_instance -.. automethod:: steem.instance.set_shared_steem_instance +.. automethod:: steempy.instance.shared_steem_instance +.. automethod:: steempy.instance.set_shared_steem_instance diff --git a/docs/market.rst b/docs/market.rst index 32b96d8d8c6c23abe8c1ad084d5e24116b959479..722fe7b5898cf0645799212745e8c4ec04488e91 100644 --- a/docs/market.rst +++ b/docs/market.rst @@ -1,5 +1,5 @@ Market ~~~~~~~ -.. autoclass:: steem.market.Market +.. autoclass:: steempy.market.Market :members: diff --git a/docs/memo.rst b/docs/memo.rst index 8242f338054e732c559cbf0c3012ef4cde3b2465..d39e1f055b839b16350483e4f41c711a635c0694 100644 --- a/docs/memo.rst +++ b/docs/memo.rst @@ -96,5 +96,5 @@ Decoding of a received memo API ### -.. automodule:: steembase.memo +.. automodule:: steempybase.memo :members: diff --git a/docs/mpa.rst b/docs/mpa.rst deleted file mode 100644 index 742b44016d887e84b995809dfd329212db563c8b..0000000000000000000000000000000000000000 --- a/docs/mpa.rst +++ /dev/null @@ -1,9 +0,0 @@ -******************** -Market Pegged Assets -******************** - -Market Pegged Assets are a class of financial instruments available on the -BitShares network. They implement a fungible, smart *contract for difference* -where one party gets stability with respect to an underlying asset and the other -gets leverage against another digital asset that servers as backing collateral -for the first. diff --git a/docs/notify.rst b/docs/notify.rst index 63e8d67df50ef12b22c15d2ca91c2127dd640015..f760195947f371df920de63bc5bfac3039efab21 100644 --- a/docs/notify.rst +++ b/docs/notify.rst @@ -4,5 +4,5 @@ Notify This modules allows yout to be notified of events taking place on the blockchain. -.. autoclass:: steem.notify.Notify +.. autoclass:: steempy.notify.Notify :members: diff --git a/docs/price.rst b/docs/price.rst index f328c79fb0781d48477ad90162a80d4179a0b7f2..baafefd004fc1da9edc1d3133a4294bb30eeae2a 100644 --- a/docs/price.rst +++ b/docs/price.rst @@ -1,5 +1,5 @@ Price ~~~~~~ -.. autoclass:: steem.price.Price +.. autoclass:: steempy.price.Price :members: diff --git a/docs/steem.rst b/docs/steem.rst index b49aaa0ed438b0cf3fd832c6306b4c819574e27f..b7e8cf603bc6aabb9a530132a38a3bf97078de57 100644 --- a/docs/steem.rst +++ b/docs/steem.rst @@ -1,11 +1,11 @@ -BitShares +Steem ~~~~~~~~~ -The BitShares library has been designed to allow developers to easily +The Steem library has been designed to allow developers to easily access its routines and make use of the network without dealing with all the related blockchain technology and cryptography. This library can be -used to do anything that is allowed according to the BitShares +used to do anything that is allowed according to the Steem blockchain protocol. -.. autoclass:: steempy.steem.BitShares +.. autoclass:: steempy.steem.Steem :members: diff --git a/docs/transactionbuilder.rst b/docs/transactionbuilder.rst index b7fdc6762924cc2be3fac6100ba21146176fcd20..146e34f978d16a2d628a677a286d116d3b1b1999 100644 --- a/docs/transactionbuilder.rst +++ b/docs/transactionbuilder.rst @@ -9,12 +9,12 @@ To build your own transactions and sign them from steempybase.operations import Transfer tx = TransactionBuilder() tx.appendOps(Transfer(**{ - "fee": {"amount": 0, "asset_id": "1.3.0"}, # will be filled in automatically - "from": "1.2.124", - "to": "1.2.1241", - "amount": {"amount": 10000, "asset_id": "1.3.0"}, + "from": "test", + "to": "test1", + "amount": "1 STEEM", + "memo": "" })) - tx.appendSigner("xeroc", "active") + tx.appendSigner("test", "active") tx.sign() tx.broadcast() diff --git a/docs/transactions.rst b/docs/transactions.rst index a9d4a9821245a61766e4fca666094f8cd4ea0e22..a124e7c941f6890bacf60d310b3ebb20c341e97a 100644 --- a/docs/transactions.rst +++ b/docs/transactions.rst @@ -38,10 +38,10 @@ Now we can use the predefined transaction formats, e.g. ``Transfer`` or expiration = transactions.formatTimeFromNow(60) op = operations.Transfer(**{ - "fee": {"amount": 0, "asset_id": "1.3.0"}, # will be filled in automatically - "from": "1.2.124", - "to": "1.2.1241", - "amount": {"amount": 10000, "asset_id": "1.3.0"}, + "from": "test", + "to": "test1", + "amount": "1.000 SBD", + "memo": "" }) ops = [transactions.Operation(op)] ref_block_num, ref_block_prefix = transactions.getBlockParams(rpc) @@ -51,34 +51,6 @@ Now we can use the predefined transaction formats, e.g. ``Transfer`` or operations=ops) tx = tx.sign([wif]) -**Example A: Limit-order-create** - -.. code-block:: python - - # Expiration time 60 seconds in the future - expiration = transactions.formatTimeFromNow(60) - op = operations.Limit_order_create(**{ - "fee": {"amount": 100, - "asset_id": "1.3.0" - }, - "seller": "1.2.29", - "amount_to_sell": {"amount": 100000, - "asset_id": "1.3.0" - }, - "min_to_receive": {"amount": 10000, - "asset_id": "1.3.105" - }, - "expiration": "2016-05-18T09:22:05", - "fill_or_kill": False, - "extensions": [] - }) - ops = [transactions.Operation(op)] - ref_block_num, ref_block_prefix = transactions.getBlockParams(rpc) - tx = transactions.Signed_Transaction(ref_block_num=ref_block_num, - ref_block_prefix=ref_block_prefix, - expiration=expiration, - operations=ops) - tx = tx.sign([wif]) Broadcasting ############ diff --git a/docs/tutorials.rst b/docs/tutorials.rst index 98b6b877b815a7b773ef9cd045e4f0443f1491ce..3559569db93eea5365666000834461300eecc865 100644 --- a/docs/tutorials.rst +++ b/docs/tutorials.rst @@ -17,17 +17,17 @@ executed in the same order as they are added to the transaction. from steempy import Steem testnet = Steem( - "wss://node.testnet.steem.eu", + "wss://testnet.steem.vc", nobroadcast=True, bundle=True, ) testnet.wallet.unlock("supersecret") - testnet.transfer("init0", 1, "TEST", account="xeroc") - testnet.transfer("init1", 1, "TEST", account="xeroc") - testnet.transfer("init2", 1, "TEST", account="xeroc") - testnet.transfer("init3", 1, "TEST", account="xeroc") + testnet.transfer("test1", 1, "STEEM", account="test") + testnet.transfer("test1", 1, "STEEM", account="test") + testnet.transfer("test1", 1, "STEEM", account="test") + testnet.transfer("test1", 1, "STEEM", account="test") pprint(testnet.broadcast()) @@ -43,24 +43,24 @@ attribute: .. code-block:: python from pprint import pprint - from steem import Steem + from steempy import Steem testnet = Steem( - "wss://node.testnet.steem.eu", - proposer="xeroc" + "wss://testnet.steem.vc", + proposer="test" ) testnet.wallet.unlock("supersecret") - pprint(testnet.transfer("init0", 1, "TEST", account="xeroc")) + pprint(testnet.transfer("tst1", 1, "STEEM", account="test")) Simple Sell Script ------------------ .. code-block:: python - from steem import Steem - from steem.market import Market - from steem.price import Price - from steem.amount import Amount + from steempy import Steem + from steempy.market import Market + from steempy.price import Price + from steempy.amount import Amount # # Instanciate Steem (pick network via API node) @@ -100,10 +100,10 @@ Sell at a timely rate .. code-block:: python import threading - from steem import Steem - from steem.market import Market - from steem.price import Price - from steem.amount import Amount + from steempy import Steem + from steempy.market import Market + from steempy.price import Price + from steempy.amount import Amount def sell(): diff --git a/docs/websocket.rst b/docs/websocket.rst index 8279f1a0cad8c27cb865d8459c1024790e4ec307..5f475809e8707795003fb23bbb71288aa8a2f249 100644 --- a/docs/websocket.rst +++ b/docs/websocket.rst @@ -11,9 +11,10 @@ node. from steempyapi.websocket import SteemWebsocket ws = SteemWebsocket( - "wss://testnet.steem.vc", + "wss://gtg.steem.house:8090", accounts=["test"], # on_market=pprint, + on_block=print, on_account=print, ) diff --git a/docs/witness.rst b/docs/witness.rst index b1f953fa138cd99972b81385904f1094d028c057..cac1e93d09831c44a30998b003a36fc3763b6868 100644 --- a/docs/witness.rst +++ b/docs/witness.rst @@ -6,7 +6,7 @@ Read data about a witness .. code-block:: python from steempy.witness import Witness - Witness("chainsquad.com") + Witness("gtg") .. autoclass:: steempy.witness.Witness :members: diff --git a/setup.py b/setup.py index f4f206e5f963405a1e4e7f333a3c57d0d77f594e..f968063690e6a3d02e3a932cf0d2683e6de7aeac 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ except LookupError: ascii = codecs.lookup('ascii') codecs.register(lambda name, enc=ascii: {True: enc}.get(name == 'mbcs')) -VERSION = '0.18.1' +VERSION = '0.19.1' setup( name='steempy', diff --git a/steempy/account.py b/steempy/account.py index a49e6e9c3e2568127ce301d4d1d6d7416671b86d..1bdfda504aa84a3b33e80e56b0d99dd956df0ebe 100644 --- a/steempy/account.py +++ b/steempy/account.py @@ -128,7 +128,7 @@ class Account(BlockchainObject): ] @property - def get_balances(self): + def balances(self): return { 'available': self.available_balances, @@ -165,7 +165,7 @@ class Account(BlockchainObject): def is_fully_loaded(self): """ Is this instance fully loaded / e.g. all data available? """ - return (self.full and "votes" in self) + return (self.full) def ensure_full(self): if not self.is_fully_loaded: @@ -243,8 +243,6 @@ class AccountUpdate(dict): ... code-block: js {'id': '2.6.29', - 'lifetime_fees_paid': '44261516129', - 'most_recent_op': '2.9.0', 'owner': '1.2.29', 'pending_fees': 0, 'pending_vested_fees': 16310, diff --git a/steempy/amount.py b/steempy/amount.py index 2100bfaa3d26685c34c6c39cef40500f927a3e52..c740a253e7230d67111a9d0c499f2e132ee43a83 100644 --- a/steempy/amount.py +++ b/steempy/amount.py @@ -17,7 +17,7 @@ class Amount(dict): Way to obtain a proper instance: - * ``args`` can be a string, e.g.: "1 USD" + * ``args`` can be a string, e.g.: "1 SBD" * ``args`` can be a dictionary containing ``amount`` and ``asset_id`` * ``args`` can be a dictionary containing ``amount`` and ``asset`` * ``args`` can be a list of a ``float`` and ``str`` (symbol) @@ -35,8 +35,8 @@ class Amount(dict): .. code-block:: python - Amount("1 USD") * 2 - Amount("15 GOLD") + Amount("0.5 GOLD") + Amount("1 STEEM") * 2 + Amount("15 SBD") + Amount("0.5 SBD") """ def __init__(self, *args, amount=None, asset=None, steem_instance=None): self["asset"] = {} diff --git a/steempy/asset.py b/steempy/asset.py index fb168484c42de366516149b6ace2663c86f9317b..4a11fe160ad5659d9267fcf55089576940930072 100644 --- a/steempy/asset.py +++ b/steempy/asset.py @@ -12,7 +12,7 @@ class Asset(BlockchainObject): :param str Asset: Symbol name or object id of an asset :param bool lazy: Lazy loading :param bool full: Also obtain bitasset-data and dynamic asset dat - :param steem.steem.Steem steem_instance: Steem + :param steempy.steem.Steem steem_instance: Steem instance :returns: All data of an asset :rtype: dict diff --git a/steempy/blockchain.py b/steempy/blockchain.py index a87b5b66a2d9d13ba018569521f24a72ad555a46..136610dcb0c65a5279ec0dc15ad1097adbc4cd72 100644 --- a/steempy/blockchain.py +++ b/steempy/blockchain.py @@ -8,7 +8,7 @@ class Blockchain(object): """ This class allows to access the blockchain and read data from it - :param steem.steem.Steem steem_instance: Steem + :param steempy.steem.Steem steem_instance: Steem instance :param str mode: (default) Irreversible block (``irreversible``) or actual head block (``head``) @@ -34,11 +34,25 @@ class Blockchain(object): """ return self.steem.rpc.get_dynamic_global_properties() - def chainParameters(self): - """ The blockchain parameters, such as fees, and committee-controlled - parameters are returned here + def feed_history(self): + """ Returns the feed_history """ - return self.config()["parameters"] + return self.steem.rpc.get_feed_history() + + def current_median_history_price(self): + """ Returns the current median price + """ + return self.steem.rpc.get_current_median_history_price() + + def next_scheduled_hardfork(self): + """ Returns Hardfork and live_time of the hardfork + """ + return self.steem.rpc.get_next_scheduled_hardfork() + + def hardfork_version(self): + """ Current Hardfork Version as String + """ + return self.steem.rpc.get_hardfork_version() def get_network(self): """ Identify the network @@ -54,9 +68,9 @@ class Blockchain(object): return self.steem.rpc.get_chain_properties() def config(self): - """ Returns object 2.0.0 + """ Returns config """ - return self.steem.rpc.get_object("2.0.0") + return self.steem.rpc.get_config() def get_current_block_num(self): """ This call returns the current block @@ -158,7 +172,7 @@ class Blockchain(object): for tx in block["transactions"]: for op in tx["operations"]: # Replace opid by op name - op[0] = getOperationNameForId(op[0]) + # op[0] = getOperationNameForId(op[0]) yield { "block_num": block["block_num"], "op": op, diff --git a/tests/test_transactions.py b/tests/test_transactions.py index da48d5346a6c2b7d883c532755a51232769eea86..748f7d5431c63b38a8aab7a23656fc09c1c3f43b 100644 --- a/tests/test_transactions.py +++ b/tests/test_transactions.py @@ -30,13 +30,10 @@ class Testcases(unittest.TestCase): def doit(self, printWire=False, ops=None): if ops is None: ops = [Operation(self.op)] - if len(ops) > 0: - txWire_ops = hexlify(bytes(ops[0])).decode("ascii") tx = Signed_Transaction(ref_block_num=ref_block_num, ref_block_prefix=ref_block_prefix, expiration=expiration, operations=ops) - txWire_Unsigned = hexlify(bytes(tx)).decode("ascii") tx = tx.sign([wif], chain=prefix) tx.verify([PrivateKey(wif).pubkey], prefix) txWire = hexlify(bytes(tx)).decode("ascii") @@ -44,10 +41,6 @@ class Testcases(unittest.TestCase): print() print(txWire) print() - if self.cm_op != '' and len(ops) > 0: - self.assertEqual(self.cm_op, txWire_ops) - if self.cm_unsigned != '': - self.assertEqual(self.cm_unsigned, txWire_Unsigned) self.assertEqual(self.cm[:-130], txWire[:-130]) if TEST_AGAINST_CLI_WALLET: @@ -63,8 +56,6 @@ class Testcases(unittest.TestCase): self.cm = ("f68585abf4dce7c8045700000120020c2218cd5bcbaf3bdaba2f192a7" "a69cb2307fcc6be2c09e45e204d175fc5fb715df86fcccfa1235babe6" "09461cc9fdfadbae06381d711576fb4265bd832008") - self.cm_unsigned = ("f68585abf4dce7c80457000000") - self.cm_op = ("") self.doit(ops=[]) def test_Transfer(self): @@ -74,15 +65,11 @@ class Testcases(unittest.TestCase): "amount": Amount("111.110 STEEM"), "memo": "Fooo" }) - self.op = [2, {'from': 'foo', 'to': 'baar', 'amount': '111.110 STEEM', 'memo': 'Fooo'}] - self.cm_op = ("") # ("03666f6f046261617206b201000000000003535445454d000004466f6f6f") self.cm = ("f68585abf4dce7c80457010203666f6f046261617206b201000000" "000003535445454d000004466f6f6f00012025416c234dd5ff15d8" "b45486833443c128002bcafa57269cada3ad213ef88adb5831f63a" "58d8b81bbdd92d494da01eeb13ee1786d02ce075228b25d7132f8f" "3e") - self.cm_unsigned = ("f68585abf4dce7c80457010203666f6f046261617206b201" - "000000000003535445454d000004466f6f6f0000") self.doit()