/
gov_proposals.go
92 lines (76 loc) · 2.88 KB
/
gov_proposals.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package types
import (
"math/big"
"github.com/VolumeFi/whoops"
govv1beta1types "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
"github.com/ethereum/go-ethereum/common"
)
const (
ProposalTypeAddChain = "EVMAddChainProposal"
ProposalTypeRemoveChain = "EVMRemoveChainProposal"
ProposalDeployNewSmartContract = "EVMDeployNewSmartContract"
ProposalTypeChangeMinOnChainBalance = "EVMProposalChangeMinOnChainBalance"
ProposalTypeRelayWeights = "EVMProposalRelayWeights"
)
var (
_ govv1beta1types.Content = &AddChainProposal{}
_ govv1beta1types.Content = &RemoveChainProposal{}
_ govv1beta1types.Content = &DeployNewSmartContractProposal{}
_ govv1beta1types.Content = &RelayWeightsProposal{}
)
func init() {
govv1beta1types.RegisterProposalType(ProposalTypeAddChain)
govv1beta1types.RegisterProposalType(ProposalTypeRemoveChain)
govv1beta1types.RegisterProposalType(ProposalDeployNewSmartContract)
govv1beta1types.RegisterProposalType(ProposalTypeChangeMinOnChainBalance)
govv1beta1types.RegisterProposalType(ProposalTypeRelayWeights)
}
func (a *AddChainProposal) ProposalRoute() string { return RouterKey }
func (a *AddChainProposal) ProposalType() string { return ProposalTypeAddChain }
func (a *AddChainProposal) ValidateBasic() error {
if err := govv1beta1types.ValidateAbstract(a); err != nil {
return err
}
return nil
}
func (a *RemoveChainProposal) ProposalRoute() string { return RouterKey }
func (a *RemoveChainProposal) ProposalType() string { return ProposalTypeRemoveChain }
func (a *RemoveChainProposal) ValidateBasic() error {
if err := govv1beta1types.ValidateAbstract(a); err != nil {
return err
}
return nil
}
func (a *DeployNewSmartContractProposal) Bytecode() []byte {
return common.FromHex(a.GetBytecodeHex())
}
func (a *DeployNewSmartContractProposal) ProposalRoute() string { return RouterKey }
func (a *DeployNewSmartContractProposal) ProposalType() string { return ProposalDeployNewSmartContract }
func (a *DeployNewSmartContractProposal) ValidateBasic() error {
if err := govv1beta1types.ValidateAbstract(a); err != nil {
return err
}
return nil
}
func (a *ChangeMinOnChainBalanceProposal) ProposalRoute() string { return RouterKey }
func (a *ChangeMinOnChainBalanceProposal) ProposalType() string {
return ProposalTypeChangeMinOnChainBalance
}
func (a *ChangeMinOnChainBalanceProposal) ValidateBasic() error {
if err := govv1beta1types.ValidateAbstract(a); err != nil {
return err
}
_, ok := new(big.Int).SetString(a.GetMinOnChainBalance(), 10)
if !ok {
return whoops.String("invalid balance")
}
return nil
}
func (a *RelayWeightsProposal) ProposalRoute() string { return RouterKey }
func (a *RelayWeightsProposal) ProposalType() string { return ProposalTypeRelayWeights }
func (a *RelayWeightsProposal) ValidateBasic() error {
if err := govv1beta1types.ValidateAbstract(a); err != nil {
return err
}
return nil
}