I want to deploy contracts by using my go
backend code with go-ethereum
package. Since this part of the system will run as a central element (since it does a lot of other stuffs), I won't (and don't want to) access user's private keys. So, I want to deploy contracts that will be signed by users via metamask (my frontend + metamask browser extension).
According to this tutorial I could deploy my contracts, but it uses private key to sign it. Such as:
auth := bind.NewKeyedTransactor(privateKey) // Is NewClefTransactor that I should use?
auth.Nonce = big.NewInt(int64(nonce))
auth.Value = big.NewInt(0) // in wei
auth.GasLimit = uint64(300000) // in units
auth.GasPrice = gasPrice
input := "1.0"
address, tx, instance, err := store.DeployStore(auth, client, input)
if err != nil {
log.Fatal(err)
}
Is it possible to deploy contract by using go, but signing them via MetaMask (browser)? (As I see external signers are not supported except clef)
Clarification: Users doesn't run local nodes, the only have access to a client-side frontend that served by the go backend, but I don't want the backend to access any private keys.