Files
atomic-swap/protocol/utils.go

48 lines
1.1 KiB
Go

// Copyright 2023 The AthanorLabs/atomic-swap Authors
// SPDX-License-Identifier: LGPL-3.0-only
package protocol
import (
"fmt"
"strconv"
"github.com/athanorlabs/atomic-swap/common/types"
"github.com/athanorlabs/atomic-swap/protocol/backend"
ethtypes "github.com/ethereum/go-ethereum/core/types"
)
const etherSymbol = "ETH"
// AssetSymbol returns the symbol for the given asset.
func AssetSymbol(b backend.Backend, asset types.EthAsset) (string, error) {
if asset != types.EthAssetETH {
tokenInfo, err := b.ETHClient().ERC20Info(b.Ctx(), asset.Address())
if err != nil {
return "", fmt.Errorf("failed to get ERC20 info: %w", err)
}
return strconv.QuoteToASCII(tokenInfo.Symbol), nil
}
return etherSymbol, nil
}
// CheckSwapID checks if the given log is for the given swap ID.
func CheckSwapID(log *ethtypes.Log, eventNameTopic [32]byte, contractSwapID types.Hash) error {
if len(log.Topics) < 2 {
return errLogMissingParams
}
if log.Topics[0] != eventNameTopic {
return errInvalidEventTopic
}
if log.Topics[1] != contractSwapID {
return ErrLogNotForUs
}
return nil
}