当前位置:   article > 正文

BSC测试链部署智能合约_bsc测试网

bsc测试网

1、metamask小狐狸钱包

  • 在火狐浏览器下载一个小狐狸钱包插件
  • 添加BSC测试网络
  • 创建个账号即有了自己的钱包地址

2、领取测试代币

3、部署智能合约

       

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 来做以太坊开发 - 开发文档 - 文江博客
    1. package main
    2. import (
    3. "context"
    4. "github.com/ethereum/go-ethereum"
    5. "github.com/ethereum/go-ethereum/common"
    6. "github.com/ethereum/go-ethereum/crypto"
    7. "github.com/ethereum/go-ethereum/ethclient"
    8. "github.com/wonderivan/logger"
    9. "math/big"
    10. "XXXX/abi" //自己使用abigen生成的那个go文件夹地址,我的pkg设置了为abi,所以这里就叫abi
    11. )
    12. // abigen --abi erc20.json -pkg abi -type erc20 --out erc20.go
    13. func main() {
    14. //部署后在remix上面可以看到刚刚部署的合约地址
    15. contractAddress := common.HexToAddress("0x12345...")
    16. //rpcURL可以参考 https://docs.bnbchain.org/docs/rpc
    17. client, err := ethclient.Dial("https://data-seed-prebsc-1-s2.binance.org:8545/") //如果实在拿不到可注册https://getblock.io/nodes/bsc,有免费调用次数
    18. if err != nil {
    19. panic(err)
    20. }
    21. query := ethereum.FilterQuery{
    22. FromBlock: big.NewInt(36660000), //生产环境中,查找当前区块高度,查询后修改区块记录,下一次就从后一个有记录的区块数开始
    23. ToBlock: big.NewInt(36660020),
    24. Addresses: []common.Address{
    25. contractAddress,
    26. },
    27. }
    28. logs, err := client.FilterLogs(context.Background(), query)
    29. if err != nil {
    30. panic(err)
    31. }
    32. erc20, _ := abi.NewAbi(contractAddress, client)
    33. for _, log := range logs {
    34. if len(log.Topics) == 0 {
    35. continue
    36. }
    37. switch log.Topics[0].Hex() {
    38. case TransferEvent():
    39. logger.Info("TransferEvent:%v\n", log.Data)
    40. data, err := erc20.ParseTransfer(log)
    41. logger.Debug(data.From.Hex(), data.To.Hex(), data.Value.String(), err)
    42. case MintEvent():
    43. logger.Info("MintEvent:%v\n", log)
    44. data, err := erc20.ParseMint(log)
    45. logger.Debug(data.To.Hex(), data.Value.String(), err)
    46. default:
    47. logger.Info("default:%v\n", log)
    48. }
    49. }
    50. }
    51. func TransferEvent() string {
    52. event := crypto.Keccak256Hash([]byte("Transfer(address,address,uint256)")).Hex()
    53. return event
    54. }
    55. func MintEvent() string {
    56. event := crypto.Keccak256Hash([]byte("Mint(address,uint256)")).Hex()
    57. return event
    58. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/473884
推荐阅读
相关标签
  

闽ICP备14008679号