Golang
如何驗證乙太坊地址(go)?
我正在遍歷各種地址,我需要知道哪些是 BTC 地址,哪些是 ETH 地址。到目前為止,我只是檢查地址是否是十六進制編碼的。這個功能使用安全嗎?
package main import ( "encoding/hex" "strings" "fmt" ) func main() { key := "1DfjCuWDKRWpv1vGP9UNsb4ooArWnXfqnr" fmt.Println(isEther(key)) } func isEther(s string) bool { s = strings.TrimPrefix(s, "0x") _, err := hex.DecodeString(s) if err == nil { return true } return false }
來自
types.go
:// IsHexAddress verifies whether a string can represent a valid hex-encoded // Ethereum address or not. func IsHexAddress(s string) bool { if hasHexPrefix(s) { s = s[2:] } return len(s) == 2*AddressLength && isHex(s) }
您需要引入其他呼叫的函式和變數,或者在您自己的文件中重新定義它們。
該文件中還有其他與地址相關的實用程序函式也可能有用。
您還可以使用正則表達式來檢查乙太坊地址是否有效:
package main import ( "fmt" "regexp" ) func IsValidAddress(v string) bool { re := regexp.MustCompile("^0x[0-9a-fA-F]{40}$") return re.MatchString(v) } func main() { fmt.Println(IsValidAddress("0x323b5d4c32345ced77393b3530b1eed0f346429d")) // true fmt.Println(IsValidAddress("0xXYZb5d4c32345ced77393b3530b1eed0f346429d")) // false }