Skip to content

Commit e29afeb

Browse files
committed
Add solana config and refactor global config
1 parent f22cd39 commit e29afeb

2 files changed

Lines changed: 120 additions & 2 deletions

File tree

config/config.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package config
22

33
import (
4+
"log"
45
"os"
56

67
_ "github.com/joho/godotenv/autoload"
@@ -15,6 +16,8 @@ type Config struct {
1516
PythonUpstreams []string
1617
NetworkTakeRate float64
1718
StakingBridgeUsdcPayoutWallet string
19+
SolanaConfig SolanaConfig
20+
AntiAbuseOracles []string
1821
}
1922

2023
var Cfg = Config{
@@ -25,21 +28,35 @@ var Cfg = Config{
2528
AxiomDataset: os.Getenv("axiomDataset"),
2629
NetworkTakeRate: 10,
2730
StakingBridgeUsdcPayoutWallet: "7vGA3fcjvxa3A11MAxmyhFtYowPLLCNyvoxxgN3NN2Vf",
31+
SolanaConfig: SolCfg,
2832
}
2933

3034
func init() {
31-
if os.Getenv("ENV") == "stage" {
35+
switch env := os.Getenv("ENV"); env {
36+
case "dev":
37+
fallthrough
38+
case "development":
39+
Cfg.AntiAbuseOracles = []string{"http://audius-protocol-discovery-provider-1"}
40+
case "stage":
41+
fallthrough
42+
case "staging":
43+
Cfg.AntiAbuseOracles = []string{"https://discoveryprovider.staging.audius.co"}
3244
Cfg.PythonUpstreams = []string{
3345
"https://discoveryprovider.staging.audius.co",
3446
"https://discoveryprovider2.staging.audius.co",
3547
"https://discoveryprovider3.staging.audius.co",
3648
"https://discoveryprovider5.staging.audius.co",
3749
}
38-
} else {
50+
case "prod":
51+
fallthrough
52+
case "production":
53+
Cfg.AntiAbuseOracles = []string{"https://discoveryprovider.audius.co"}
3954
Cfg.PythonUpstreams = []string{
4055
"https://discoveryprovider.audius.co",
4156
"https://discoveryprovider2.audius.co",
4257
"https://discoveryprovider3.audius.co",
4358
}
59+
default:
60+
log.Fatalf("Unknown environment: %s", env)
4461
}
4562
}

config/solana_config.go

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package config
2+
3+
import (
4+
"log"
5+
"os"
6+
"strings"
7+
8+
"bridgerton.audius.co/api/spl/programs/claimable_tokens"
9+
"bridgerton.audius.co/api/spl/programs/reward_manager"
10+
"github.com/gagliardetto/solana-go"
11+
)
12+
13+
type SolanaConfig struct {
14+
RpcProviders []string
15+
FeePayers []solana.Wallet
16+
SolanaRelay string
17+
18+
MintAudio solana.PublicKey
19+
20+
RewardManagerProgramID solana.PublicKey
21+
RewardManagerState solana.PublicKey
22+
RewardManagerLookupTable solana.PublicKey
23+
24+
ClaimableTokensProgramID solana.PublicKey
25+
}
26+
27+
var SolCfg = SolanaConfig{
28+
RpcProviders: strings.Split(os.Getenv("solanaRpcProviders"), ","),
29+
}
30+
31+
const (
32+
// Dev
33+
DevSolanaRelay = "http://audius-protocol-discovery-provider-1/solana/relay"
34+
DevMintAudio = "37RCjhgV1qGV2Q54EHFScdxZ22ydRMdKMtVgod47fDP3"
35+
DevRewardManagerProgramID = "testLsJKtyABc9UXJF8JWFKf1YH4LmqCWBC42c6akPb"
36+
DevRewardManagerState = "DJPzVothq58SmkpRb1ATn5ddN2Rpv1j2TcGvM3XsHf1c"
37+
DevRewardManagerLookupTable = "GNHKVSmHvoRBt1JJCxz7RSMfzDQGDGhGEjmhHyxb3K5J"
38+
DevClaimableTokensProgramID = "testHKV1B56fbvop4w6f2cTGEub9dRQ2Euta5VmqdX9"
39+
40+
// Stage
41+
StageSolanaRelay = "https://discoveryprovider.staging.audius.co/solana/relay"
42+
StageMintAudio = "BELGiMZQ34SDE6x2FUaML2UHDAgBLS64xvhXjX5tBBZo"
43+
StageRewardManagerProgramID = "CDpzvz7DfgbF95jSSCHLX3ERkugyfgn9Fw8ypNZ1hfXp"
44+
StageRewardManagerState = "GaiG9LDYHfZGqeNaoGRzFEnLiwUT7WiC6sA6FDJX9ZPq"
45+
StageRewardManagerLookupTable = "ChFCWjeFxM6SRySTfT46zXn2K7m89TJsft4HWzEtkB4J"
46+
StageClaimableTokensProgramID = "2sjQNmUfkV6yKKi4dPR8gWRgtyma5aiymE3aXL2RAZww"
47+
48+
// Prod
49+
ProdSolanaRelay = "https://discoveryprovider.audius.co/solana/relay"
50+
ProdMintAudio = "9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM"
51+
ProdRewardManagerProgramID = "DDZDcYdQFEMwcu2Mwo75yGFjJ1mUQyyXLWzhZLEVFcei"
52+
ProdRewardManagerState = "71hWFVYokLaN1PNYzTAWi13EfJ7Xt9VbSWUKsXUT8mxE"
53+
ProdRewardManagerLookupTable = "4UQwpGupH66RgQrWRqmPM9Two6VJEE68VZ7GeqZ3mvVv"
54+
ProdClaimableTokensProgramID = "Ewkv3JahEFRKkcJmpoKB7pXbnUHwjAyXiwEo4ZY2rezQ"
55+
)
56+
57+
func init() {
58+
walletKeys := strings.Split(os.Getenv("solanaFeePayerKeys"), ",")
59+
SolCfg.FeePayers = make([]solana.Wallet, len(walletKeys))
60+
for i, privkeyString := range walletKeys {
61+
privkey := solana.MustPrivateKeyFromBase58(privkeyString)
62+
SolCfg.FeePayers[i] = solana.Wallet{
63+
PrivateKey: privkey,
64+
}
65+
}
66+
67+
switch env := os.Getenv("ENV"); env {
68+
case "dev":
69+
fallthrough
70+
case "development":
71+
SolCfg.SolanaRelay = DevSolanaRelay
72+
SolCfg.MintAudio = solana.MustPublicKeyFromBase58(DevMintAudio)
73+
SolCfg.RewardManagerProgramID = solana.MustPublicKeyFromBase58(DevRewardManagerProgramID)
74+
SolCfg.RewardManagerState = solana.MustPublicKeyFromBase58(DevRewardManagerState)
75+
SolCfg.RewardManagerLookupTable = solana.MustPublicKeyFromBase58(DevRewardManagerLookupTable)
76+
SolCfg.ClaimableTokensProgramID = solana.MustPublicKeyFromBase58(DevClaimableTokensProgramID)
77+
case "stage":
78+
fallthrough
79+
case "staging":
80+
SolCfg.SolanaRelay = StageSolanaRelay
81+
SolCfg.MintAudio = solana.MustPublicKeyFromBase58(StageMintAudio)
82+
SolCfg.RewardManagerProgramID = solana.MustPublicKeyFromBase58(StageRewardManagerProgramID)
83+
SolCfg.RewardManagerState = solana.MustPublicKeyFromBase58(StageRewardManagerState)
84+
SolCfg.RewardManagerLookupTable = solana.MustPublicKeyFromBase58(StageRewardManagerLookupTable)
85+
SolCfg.ClaimableTokensProgramID = solana.MustPublicKeyFromBase58(StageClaimableTokensProgramID)
86+
case "prod":
87+
fallthrough
88+
case "production":
89+
SolCfg.SolanaRelay = ProdSolanaRelay
90+
SolCfg.MintAudio = solana.MustPublicKeyFromBase58(ProdMintAudio)
91+
SolCfg.RewardManagerProgramID = solana.MustPublicKeyFromBase58(ProdRewardManagerProgramID)
92+
SolCfg.RewardManagerState = solana.MustPublicKeyFromBase58(ProdRewardManagerState)
93+
SolCfg.RewardManagerLookupTable = solana.MustPublicKeyFromBase58(ProdRewardManagerLookupTable)
94+
SolCfg.ClaimableTokensProgramID = solana.MustPublicKeyFromBase58(ProdClaimableTokensProgramID)
95+
default:
96+
log.Fatalf("Unknown environment: %s", env)
97+
}
98+
99+
reward_manager.SetProgramID(SolCfg.RewardManagerProgramID)
100+
claimable_tokens.SetProgramID(SolCfg.ClaimableTokensProgramID)
101+
}

0 commit comments

Comments
 (0)