Base classes for signers
Go to file
2021-10-10 09:41:56 +02:00
config Remove eth_keys, web3 dependencies 2021-03-17 15:34:51 +01:00
funga WIP refactor eth to separate module, rename to funga 2021-10-10 09:41:56 +02:00
scripts Remove leading 0x00 from signature elements, add tx generation script 2021-02-07 11:55:40 +01:00
tests WIP refactor eth to separate module, rename to funga 2021-10-10 09:41:56 +02:00
.gitignore Upgrade confini 2020-10-18 10:32:23 +02:00
.gitlab-ci.yml Update .gitlab-ci.yml 2021-09-15 15:50:16 +00:00
CHANGELOG Fix fail in tx serialization on none to-address (contract creation) 2021-07-13 10:40:44 +02:00
LICENSE.txt Add metadata license, url 2020-08-08 12:07:39 +02:00
MANIFEST.in Add http server 2021-09-06 15:48:06 +02:00
README.md Upgrade confini 2020-10-18 10:32:23 +02:00
requirements.txt Revert "Add http server to signer daemon" 2021-09-06 16:29:45 +02:00
run_tests.sh Update run_tests.sh 2021-09-15 15:52:33 +00:00
setup.cfg Upgrade confini 2020-10-18 10:32:23 +02:00
setup.py WIP refactor eth to separate module, rename to funga 2021-10-10 09:41:56 +02:00
sql_requirements.txt Reinstate sql requirements file 2021-04-13 08:26:39 +02:00
test_requirements.txt Upgrade rlp, load setup requirements from file 2020-12-15 08:22:06 +01:00
TODO Add socket test missing warning 2021-09-07 08:56:28 +02:00

CRYPTO DEV SIGNER

This package is written because at the time no good solution seemed to exist for solving the following combined requirements and issues:

  • A service has custody of its users' private keys.
  • The are a large number of private keys involved (hundreds of thousands and up).
  • Need to sign transactions conforming to EIP-155, with the ability to arbitrarily specify the "chain id".
  • Do not want to store the keys inside an ethereum node, especially not the one connected to the network.
  • Want to use the "standard" web3 JSON-RPC interface, so that the component can be easily replaced later.
  • Multiple providers don't work on either web3.js and/or web3.py.
  • As a bonus, provide a practical keystore solution for testing in general for web3 projects.

TECHNICAL OVERVIEW

Scripts

When installed with pip/setuptools, this package provides a Unix socket IPC server as crypto-dev-daemon implementing the following web3 json-rpc methods:

  • web3.eth.personal.newAccount
  • web3.eth.personal.signTransaction
  • web3.eth.signTransaction

Classes

The classes and packages provided are:

keystore

  • Keystore: Interface definition
  • ReferenceKeystore: Implements the Keystore interface, with a postgresql backend expecting sql schema as defined in ReferenceKeystore.schema

transaction

  • Transaction: Interface definition.
  • EIP155Transaction: Creates transaction serializations appropriate for EIP155 replay protected signatures. Accepts a web3 format transaction dict as constructor argument together with nonce and optional chainId.

signer

  • Signer: Interface definition. Its signTransaction method expects an object implementing the Transaction interface.
  • ReferenceSigner Implements Signer, accepting a single argument of type Keystore interface.

VERSION

This software is in alpha state.

Current version is 0.2.5

LICENSE

GPLv3

No responsibility assumed for any use of this software. You're on your own, as usual.