StackAsk is a community where developers ask questions, share answers and learn from each others real-world experience, so every solved problem helps the next person who runs into it.
ev, ok := ev.(*types.DuplicateVoteEvidence)
type Evidence interface { ABCI() []abci.Evidence // forms individual evidence to be sent to the application Bytes() []byte // bytes which comprise the evidence Hash() []byte // hash of the evidence Height() int64 // height of the infraction String() string // string format of the evidence Time() time.Time // time of the infraction ValidateBasic() error // basic consistency check } type DuplicateVoteEvidence struct { VoteA *Vote `json:"vote_a"` VoteB *Vote `json:"vote_b"` // abci specific information TotalVotingPower int64 ValidatorPower int64 Timestamp time.Time } evidenceFromEachValidator := make([]types.Evidence, nValidators) // set giá trị cho evidenceFromEachValidator for idx, ev := range evidenceFromEachValidator { ev, ok := ev.(*types.DuplicateVoteEvidence) }
ev
*types.DuplicateVoteEvidence
ok
package main import ( "fmt" "time" ) type Vote struct { } type Evidence interface { ABCI() []Evidence // forms individual evidence to be sent to the application Bytes() []byte // bytes which comprise the evidence Hash() []byte // hash of the evidence Height() int64 // height of the infraction String() string // string format of the evidence Time() time.Time // time of the infraction ValidateBasic() error // basic consistency check } type DuplicateVoteEvidence struct { VoteA *Vote `json:"vote_a"` VoteB *Vote `json:"vote_b"` // abci specific information TotalVotingPower int64 ValidatorPower int64 Timestamp time.Time } func NewEvidence() Evidence { return &DuplicateVoteEvidence{} } func (this *DuplicateVoteEvidence) ABCI() []Evidence { return nil} func (this *DuplicateVoteEvidence)Bytes() []byte{return nil} // bytes which comprise the evidence func (this *DuplicateVoteEvidence)Hash() []byte {return nil} // hash of the evidence func (this *DuplicateVoteEvidence)Height() int64 {return 0} // height of the infraction func (this *DuplicateVoteEvidence)String() string {return ""} // string format of the evidence func (this *DuplicateVoteEvidence)Time() time.Time {return time.Time{}} // time of the infraction func (this *DuplicateVoteEvidence)ValidateBasic() error{return nil} // basic consistency check func main() { evidenceFromEachValidator := make([]Evidence, 0) evidenceFromEachValidator = append(evidenceFromEachValidator, NewEvidence()) // set giá trị cho evidenceFromEachValidator for _, ev := range evidenceFromEachValidator { _, ok := ev.(*DuplicateVoteEvidence) if ok { fmt.Println("Cast success") } else { fmt.Println("Cast fail") } } }
2.2K Point(s)
1.2K Point(s)
313 Point(s)
178 Point(s)
138 Point(s)
Your account is signed in on the device(s) below. Sign out of at least one of them to continue signing in on this device.
Your account is signed in on the device(s) below. Sign out directly on one of those devices, or wait until the sign-in again time shown below.
If you cant access those devices, please contact the administrator to sign them out for you.
Input your email to receive reset password link, or if you remember your password, you can click