goethereum-地址检查

检查地址是否有效

package addrcheck

import (
	"context"
	"fmt"
	"log"
	"regexp"

	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/ethclient"
)

func CheckAddress(address string) {
	re := regexp.MustCompile("^0x[0-9a-fA-F]{40}$")
	fmt.Printf("is valid:%v\n", re.MatchString(address))
}

检查地址是合约地址还是账户地址(EOA)

package addrcheck

import (
	"context"
	"fmt"
	"log"
	"regexp"

	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/ethclient"
)
func IsContractAddr(address string) {
	client, err := ethclient.Dial("https://mainnet.infura.io/v3/0b5c18e5bcd0407787cc7d319dbb056b")
	if err != nil {
		log.Fatal(err)
	}
	addr := common.HexToAddress(address)
	bytecode, err := client.CodeAt(context.Background(), addr, nil)
	if err != nil {
		log.Fatal("get contract code error")
	}

	isContract := len(bytecode) > 0
	fmt.Printf("%s is contract:%v\n", address, isContract)
}

posted @ 2025-07-29 23:11  Charlie-Pang  阅读(9)  评论(0)    收藏  举报