Merge pull request #59 from liugangdao/main

fix: hyperliquid余额不准确
This commit is contained in:
tinkle-community
2025-10-30 17:05:54 +08:00
committed by GitHub
6 changed files with 52 additions and 47 deletions

View File

@@ -22,6 +22,7 @@ type TraderConfig struct {
// Hyperliquid配置 // Hyperliquid配置
HyperliquidPrivateKey string `json:"hyperliquid_private_key,omitempty"` HyperliquidPrivateKey string `json:"hyperliquid_private_key,omitempty"`
HyperliquidWalletAddr string `json:"hyperliquid_wallet_addr,omitempty"`
HyperliquidTestnet bool `json:"hyperliquid_testnet,omitempty"` HyperliquidTestnet bool `json:"hyperliquid_testnet,omitempty"`
// Aster配置 // Aster配置

2
go.sum
View File

@@ -74,6 +74,8 @@ github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=

View File

@@ -40,6 +40,7 @@ func (tm *TraderManager) AddTrader(cfg config.TraderConfig, coinPoolURL string,
BinanceAPIKey: cfg.BinanceAPIKey, BinanceAPIKey: cfg.BinanceAPIKey,
BinanceSecretKey: cfg.BinanceSecretKey, BinanceSecretKey: cfg.BinanceSecretKey,
HyperliquidPrivateKey: cfg.HyperliquidPrivateKey, HyperliquidPrivateKey: cfg.HyperliquidPrivateKey,
HyperliquidWalletAddr: cfg.HyperliquidWalletAddr,
HyperliquidTestnet: cfg.HyperliquidTestnet, HyperliquidTestnet: cfg.HyperliquidTestnet,
AsterUser: cfg.AsterUser, AsterUser: cfg.AsterUser,
AsterSigner: cfg.AsterSigner, AsterSigner: cfg.AsterSigner,

View File

@@ -29,6 +29,7 @@ type AutoTraderConfig struct {
// Hyperliquid配置 // Hyperliquid配置
HyperliquidPrivateKey string HyperliquidPrivateKey string
HyperliquidWalletAddr string
HyperliquidTestnet bool HyperliquidTestnet bool
// Aster配置 // Aster配置
@@ -138,7 +139,7 @@ func NewAutoTrader(config AutoTraderConfig) (*AutoTrader, error) {
trader = NewFuturesTrader(config.BinanceAPIKey, config.BinanceSecretKey) trader = NewFuturesTrader(config.BinanceAPIKey, config.BinanceSecretKey)
case "hyperliquid": case "hyperliquid":
log.Printf("🏦 [%s] 使用Hyperliquid交易", config.Name) log.Printf("🏦 [%s] 使用Hyperliquid交易", config.Name)
trader, err = NewHyperliquidTrader(config.HyperliquidPrivateKey, config.HyperliquidTestnet) trader, err = NewHyperliquidTrader(config.HyperliquidPrivateKey, config.HyperliquidWalletAddr, config.HyperliquidTestnet)
if err != nil { if err != nil {
return nil, fmt.Errorf("初始化Hyperliquid交易器失败: %w", err) return nil, fmt.Errorf("初始化Hyperliquid交易器失败: %w", err)
} }

View File

@@ -2,7 +2,6 @@ package trader
import ( import (
"context" "context"
"crypto/ecdsa"
"fmt" "fmt"
"log" "log"
"strconv" "strconv"
@@ -20,7 +19,7 @@ type HyperliquidTrader struct {
} }
// NewHyperliquidTrader 创建Hyperliquid交易器 // NewHyperliquidTrader 创建Hyperliquid交易器
func NewHyperliquidTrader(privateKeyHex string, testnet bool) (*HyperliquidTrader, error) { func NewHyperliquidTrader(privateKeyHex string, walletAddr string, testnet bool) (*HyperliquidTrader, error) {
// 解析私钥 // 解析私钥
privateKey, err := crypto.HexToECDSA(privateKeyHex) privateKey, err := crypto.HexToECDSA(privateKeyHex)
if err != nil { if err != nil {
@@ -33,13 +32,13 @@ func NewHyperliquidTrader(privateKeyHex string, testnet bool) (*HyperliquidTrade
apiURL = hyperliquid.TestnetAPIURL apiURL = hyperliquid.TestnetAPIURL
} }
// 从私钥生成钱包地址 // // 从私钥生成钱包地址
pubKey := privateKey.Public() // pubKey := privateKey.Public()
publicKeyECDSA, ok := pubKey.(*ecdsa.PublicKey) // publicKeyECDSA, ok := pubKey.(*ecdsa.PublicKey)
if !ok { // if !ok {
return nil, fmt.Errorf("无法转换公钥") // return nil, fmt.Errorf("无法转换公钥")
} // }
walletAddr := crypto.PubkeyToAddress(*publicKeyECDSA).Hex() // walletAddr := crypto.PubkeyToAddress(*publicKeyECDSA).Hex()
ctx := context.Background() ctx := context.Background()

View File

@@ -4,6 +4,7 @@ import react from '@vitejs/plugin-react'
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
server: { server: {
host: '0.0.0.0',
port: 3000, port: 3000,
proxy: { proxy: {
'/api': { '/api': {