Multiple times the forum has discussed whether it would be possible to issue blockcerts on Ethereum. Blockcerts have always said that this would be possible, and that they are pretty blockchain agnostic. However, it hasn’t been a priority.
I just want to give a little heads-up that time is changing as I’m currently in the development of adding onto the cert-issue repo to make it usable in issuing towards Ethereum.
On a file level I’m looking into the following updates:
config.py: Add ethereum arguments, update the get_config with enum to accomodate for ethereum_chain params
- cert_schema.py: chain: Add ethereum networks
- Issue_certificates.py: update Main with correct args.
Connectors.py: Abstract serviceproviderConnector to let it choose a blockchain first, and then do all the blockchain specific parts within new BitcoinserviceProvciderConnector and ethereumserviceprovider.
Connectors.py: Add connectors for ethereum services like etherscan-api / infura / myetherwallet
- tx_utils.py: abstract the TransactionCostConstants class, rename current to BitcoinTransactionconstConstants, and create new EthereumTransactionConstConstants with gasprice calc’s, nonce, and new createtxs.
Signer.py: new class EthereumSigner, update initialize_signer with ethereum option, update verify_message with ethereum option
- transaction_handler.py: Create new class EthereumTransactionHandler, and update the TransactionV2Creator to accomodate for ethereum transactions
- merkle_tree_generator.py: update the get_proof_generator with new anchors
- requirements.txt: Add ether requirements
Furthermore I propose for the first iteration a simplistic transaction format in the following form:
issuer controlled address -> issuer controlled address with merkle root in Ethereum transaction data field.
For later Ethereum related iterations options are open, for example issue by a transaction to an Issuer contract that updates a mapping or issue individual certificates to individual receiver’s contracts.
Discussions are open for other issuing forms that make use of the added features of the Ethereum blockchain.
This is my first (big) python project, so don’t expect a rocket science pull-request yet, just a simple ethereum port.
Big thanks to Kim for her help