BSC测试链部署智能合约
2024-01-10 12:17:04
1、metamask小狐狸钱包
- 在火狐浏览器下载一个小狐狸钱包插件
- 添加BSC测试网络
- 创建个账号即有了自己的钱包地址
2、领取测试代币
- 链上部署合约或交易等都需要燃料,需要gas费,即需要有测试代币
- 复制刚才的钱包地址去领取地址领取测试代币?BNB Smart Chain (BSC) Testnet Faucet - BNB Chain
3、部署智能合约
- 打开网页写一个自己的智能合约?Remix - Ethereum IDE
- 连接钱包
? ? ? ?
- 部署:设置一些构造函数中的参数或者转钱进合约后,点击部署按钮
- 部署后可以在浏览器查看TESTNET BNB Smart Chain (BNB) Blockchain Explorer
4、go语言获取事件日志
- 在remix文件中查找abi,把[]及中括号中的内容,复制在一个json格式的文件中
- go安装abigen,使用abigen将abi生成go文件 例如abigen --abi erc20.json -pkg json -type erc20 --out erc20.go
- 使用github.com/ethereum/go-ethereum库进行日志事件的获取,具体使用可以参考文档读取事件日志 - 用 Go 来做以太坊开发 - 开发文档 - 文江博客
package main import ( "context" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient" "github.com/wonderivan/logger" "math/big" "XXXX/abi" //自己使用abigen生成的那个go文件夹地址,我的pkg设置了为abi,所以这里就叫abi ) // abigen --abi erc20.json -pkg abi -type erc20 --out erc20.go func main() { //部署后在remix上面可以看到刚刚部署的合约地址 contractAddress := common.HexToAddress("0x12345...") //rpcURL可以参考 https://docs.bnbchain.org/docs/rpc client, err := ethclient.Dial("https://data-seed-prebsc-1-s2.binance.org:8545/") //如果实在拿不到可注册https://getblock.io/nodes/bsc,有免费调用次数 if err != nil { panic(err) } query := ethereum.FilterQuery{ FromBlock: big.NewInt(36660000), //生产环境中,查找当前区块高度,查询后修改区块记录,下一次就从后一个有记录的区块数开始 ToBlock: big.NewInt(36660020), Addresses: []common.Address{ contractAddress, }, } logs, err := client.FilterLogs(context.Background(), query) if err != nil { panic(err) } erc20, _ := abi.NewAbi(contractAddress, client) for _, log := range logs { if len(log.Topics) == 0 { continue } switch log.Topics[0].Hex() { case TransferEvent(): logger.Info("TransferEvent:%v\n", log.Data) data, err := erc20.ParseTransfer(log) logger.Debug(data.From.Hex(), data.To.Hex(), data.Value.String(), err) case MintEvent(): logger.Info("MintEvent:%v\n", log) data, err := erc20.ParseMint(log) logger.Debug(data.To.Hex(), data.Value.String(), err) default: logger.Info("default:%v\n", log) } } } func TransferEvent() string { event := crypto.Keccak256Hash([]byte("Transfer(address,address,uint256)")).Hex() return event } func MintEvent() string { event := crypto.Keccak256Hash([]byte("Mint(address,uint256)")).Hex() return event }
文章来源:https://blog.csdn.net/qq_37575994/article/details/135496292
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!