/
ensresolverclear.go
66 lines (54 loc) · 2.66 KB
/
ensresolverclear.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Copyright © 2017-2019 Weald Technology Trading
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package cmd
import (
"bytes"
"fmt"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/engram-network/gramreal/v2/cli"
ens "github.com/wealdtech/go-ens/v3"
)
// ensResolverClearCmd represents the ens resolver clear command.
var ensResolverClearCmd = &cobra.Command{
Use: "clear",
Short: "Clear the resolver of an ENS domain",
Long: `Clear the resolver of a name registered with the Ethereum Name Service (ENS). For example:
gramreal ens resolver clear --domain=enstest.eth --passphrase="my secret passphrase"
The keystore for the account that owns the name must be local (i.e. listed with 'get accounts list') and unlockable with the supplied passphrase.
This will return an exit status of 0 if the transaction is successfully submitted (and mined if --wait is supplied), 1 if the transaction is not successfully submitted, and 2 if the transaction is successfully submitted but not mined within the supplied time limit.`,
Run: func(cmd *cobra.Command, args []string) {
cli.Assert(!offline, quiet, "Offline mode not supported at current with this command")
cli.Assert(ensDomain != "", quiet, "--domain is required")
registry, err := ens.NewRegistry(c.Client())
cli.ErrCheck(err, quiet, "cannot obtain ENS registry contract")
// Fetch the owner of the name.
owner, err := registry.Owner(ensDomain)
cli.ErrCheck(err, quiet, "cannot obtain owner")
cli.Assert(!bytes.Equal(owner.Bytes(), ens.UnknownAddress.Bytes()), quiet, fmt.Sprintf("owner of %s is not set", ensDomain))
opts, err := generateTxOpts(owner)
cli.ErrCheck(err, quiet, "failed to generate transaction options")
signedTx, err := registry.SetResolver(opts, ensDomain, ens.UnknownAddress)
cli.ErrCheck(err, quiet, "failed to send transaction")
handleSubmittedTransaction(signedTx, log.Fields{
"group": "ens/resolver",
"command": "clear",
"ensdomain": ensDomain,
}, true)
},
}
func init() {
ensResolverCmd.AddCommand(ensResolverClearCmd)
ensResolverFlags(ensResolverClearCmd)
addTransactionFlags(ensResolverClearCmd, "passphrase for the account that owns the domain")
}