immutability-io / vault-ethereum

A plugin that turns Vault into an Ethereum wallet.
244 stars 66 forks source link

Feature questions: importing ABI, filtering, and logging #64

Open 0x234 opened 5 years ago

0x234 commented 5 years ago

Firstly, I think this is a fantastic project. Thanks :). I have a couple of questions around functionality that I'm not able to determine from the documentation. Apologies if this is in the docs I have missed it.

1) Signing a transaction that calls a function in a smart contract with data

I have a use case for Vault where I'd like to sign a transaction that calls a function in a smart contract, and passes this function a data object. It looks like the paths are defined here: https://github.com/immutability-io/vault-ethereum/blob/master/path_accounts.go#L57 which would enable me to create a :mount-path/accounts/:name/sign-tx-data API. If I proceed with implementing this where would be the best place to store the ABI for the contract I wish to interact with? Presumably I'd need to pass the ABI reference and method in the API call too?

2) Is there a way to filter RPC calls that don't match a pattern/regex? This would be great to add another layer that prevents malicious/incorrect use.

3) Are there per-RPC call logs?

0x234 commented 5 years ago

The more I think about this I'm not sure it's possible without forking. I'd need to use abigen to create the golang bindings from the ABI, and this would need to be compiled into vault-ethereum for use at runtime. If you guys can think of any other way let me know :)

cypherhat commented 5 years ago

I have some ideas about Vault plugins and smart contracts. Ping me at jeff@immutability.io please - I'd like to bounce them against you.