horcrux
horcrux copied to clipboard
is Oasis Network (ROSE) supported?
is Oasis Network (ROSE) supported? or could be supported ? tnks
Oasis core uses tendermint, but it is a tendermint fork that uses a different ed25519 implementation: https://github.com/oasisprotocol/curve25519-voi. After first glance it is not clear to me whether this would be a breaking change or not. It appears that it may be mainly performance optimizations. I would suggest testing horcrux on an oasis testnet first.
Finally i have an oasis testnet validator and I'd like to give horcrux a try but I don't know how to setup the node to use the horcrux signer and how to configure the horcrux with my oasis node
This is the oasis node setup:
https://docs.oasis.io/node/run-your-node/advanced/using-ledger-backed-consensus-key-with-a-remote-signer#configure-oasis-node
Any ideas about how/where we could start ?
Oasis core uses tendermint, but it is a tendermint fork that uses a different ed25519 implementation: https://github.com/oasisprotocol/curve25519-voi. After first glance it is not clear to me whether this would be a breaking change or not. It appears that it may be mainly performance optimizations. I would suggest testing horcrux on an oasis testnet first.
I have a working example of an Oasis keypair generation (python):
from bip_utils import Bip39SeedGenerator, Bip32Slip10Ed25519
mnemonic = "bla bla bla"
derivation_path = "m/44'/474'/0'"
# Generate seed
seed_bytes = Bip39SeedGenerator(mnemonic).Generate()
# Generate BIP32 object
bip32_ctx = Bip32Slip10Ed25519.FromSeedAndPath(seed_bytes, derivation_path)
# Keys in extended format
#print(bip32_ctx.PrivateKey().ToExtended())
#print(bip32_ctx.PublicKey().ToExtended())
# Keys bytes
private_key_bytes = bip32_ctx.PrivateKey().Raw().ToBytes()
public_key_bytes = bip32_ctx.PublicKey().RawCompressed().ToBytes()
# Keys in hex format
private_key_hex = bip32_ctx.PrivateKey().Raw().ToHex()
public_key_hex = bip32_ctx.PublicKey().RawCompressed().ToHex()
# Keys in base64 format
private_key_b64 = base64.b64encode(private_key_bytes).decode()
public_key_b64 = base64.b64encode(public_key_bytes).decode()
Could it be useful to understand?
Easiest way to know if it works or not is to see/try the underlying threshold signature scheme that Horcrux uses. Its here: https://gitlab.com/unit410/threshold-ed25519 What you need to to is replace the ed25519 library they are using to create the keys and use your own (oasis) implementation to see if it works. Or you can be really brave and read the threshold paper :)
All else equal, the rest of Horcrux is multiple "middle-layers" to make the signature scheme talk to each-other and decide upon a leader (so you don't double sign)