Skip to content

Commit f22cd39

Browse files
committed
Add support for deriving user banks, fix default reward_manager program ID
1 parent 06bf76d commit f22cd39

4 files changed

Lines changed: 62 additions & 1 deletion

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package claimable_tokens
2+
3+
import (
4+
"encoding/hex"
5+
"strings"
6+
7+
"github.com/gagliardetto/solana-go"
8+
"github.com/mr-tron/base58"
9+
)
10+
11+
func deriveAuthority(mint solana.PublicKey) (solana.PublicKey, uint8, error) {
12+
return solana.FindProgramAddress([][]byte{mint.Bytes()[:32]}, ProgramID)
13+
}
14+
15+
func DeriveUserBankAccount(mint solana.PublicKey, ethAddress string) (solana.PublicKey, error) {
16+
ethAddressBytes, err := hex.DecodeString(strings.TrimPrefix(ethAddress, "0x"))
17+
if err != nil {
18+
return solana.PublicKey{}, err
19+
}
20+
21+
seed := base58.Encode(ethAddressBytes)
22+
authority, _, err := deriveAuthority(mint)
23+
if err != nil {
24+
return solana.PublicKey{}, err
25+
}
26+
27+
pubkey, err := solana.CreateWithSeed(authority, seed, solana.TokenProgramID)
28+
if err != nil {
29+
return solana.PublicKey{}, err
30+
}
31+
32+
return pubkey, nil
33+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package claimable_tokens_test
2+
3+
import (
4+
"testing"
5+
6+
"bridgerton.audius.co/api/spl/programs/claimable_tokens"
7+
"github.com/gagliardetto/solana-go"
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func TestDeriveUserBankAccount(t *testing.T) {
12+
mint := solana.MustPublicKeyFromBase58("9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM")
13+
ethAddress := "0xa507da823bf0c5dc44a759d0d398b7f52097da19"
14+
expectedUserBankAccount := solana.MustPublicKeyFromBase58("9oJLynXRLkWZkTXXExPXVbza5n8CzTZLvtJ1Y3pEJ2Pk")
15+
16+
userBankAccount, err := claimable_tokens.DeriveUserBankAccount(mint, ethAddress)
17+
require.NoError(t, err)
18+
require.Equal(t, expectedUserBankAccount.String(), userBankAccount.String())
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package claimable_tokens
2+
3+
import "github.com/gagliardetto/solana-go"
4+
5+
var ProgramID = solana.MustPublicKeyFromBase58("Ewkv3JahEFRKkcJmpoKB7pXbnUHwjAyXiwEo4ZY2rezQ")
6+
7+
func SetProgramID(pubkey solana.PublicKey) {
8+
ProgramID = pubkey
9+
}

api/spl/programs/reward_manager/instruction.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const (
1616
DisbursementSeedPrefix = "T_"
1717
)
1818

19-
var ProgramID = solana.MustPublicKeyFromBase58("CDpzvz7DfgbF95jSSCHLX3ERkugyfgn9Fw8ypNZ1hfXp")
19+
var ProgramID = solana.MustPublicKeyFromBase58("DDZDcYdQFEMwcu2Mwo75yGFjJ1mUQyyXLWzhZLEVFcei")
2020

2121
func SetProgramID(pubkey solana.PublicKey) {
2222
ProgramID = pubkey

0 commit comments

Comments
 (0)