Open youkaicountry opened 6 years ago
We use the curve secp256k1, which is present in the library.
The problems I see are as follows:
steem-python
, I will inevitably get complaints that I'm violating the new requirement that simple_steem_client
be a drop-in replacement for steem-python
.steem-python
does careless and inconsistent handling of prefixes. This is one of the reasons it needs replaced, since testnet will have a different prefix and it's not really careful about handling that.steem-python
has PasswordKey()
and BrainKey()
. I'm not sure of the compatibility matrix of these features with steemd cli_wallet
, tinman get_key_from_seed
, and condenser
account passwords.steem-python
, I don't want to drop features that people might be using. But that goes against simple_steem_client
being a simplification of steem-python
._derive_y_from_x()
. We have at least one signing issue in steemd
due to copy-paste "cargo culting" of signing code by someone who doesn't understand it, let's not duplicate that in our Python library.base58
need to know about prefixes? I'm not sure.So what I'm going to do is just copy-paste the bare minimum necessary to get tinman
up and running. Basically, PublicKey
and PrivateKey
. I'm going to get rid of all unnecessary code (including PasswordKey
, BrainKey
, Address
, and uncompressed
key handling). I'm going to simplify the interface to be as simple as possible. If we later want to copy-paste larger portions of steem-python
for backwards compatibility's sake, let's do it in a different project that uses simple_steem_client
as a dependency. For now I'll copy only what we absolutely need.
Replace calls to sign_transaction with a pure python transaction signing solution.
In #4, a python ECDSA library was identified: https://github.com/warner/python-ecdsa
And a pure python serialization library was created in #3.